Linux 系统在初始化分区时,通常会划分一个 swap 分区来充当虚拟内存,为物理内存提供辅助支持。但在实际运维场景中,虚拟内存也可能被耗尽——此时无需重新对磁盘进行分区,更灵活的做法是创建一个 swap 文件来扩展虚拟内存容量。下面直接给出详细操作步骤。
1. 检查现有交换空间的大小
首先使用 free -m 命令查看当前交换空间的使用情况,以便确定需要扩展的大小。
[root@chenfancentos ~]# free -m
total used free shared buffers cached
Mem: 988 164 823 0 26 48
-/+ buffers/cache: 90 898
Swap: 1999 0 1999
从输出可见,当前 swap 大小为 1999 MB,几乎未被占用。假设你需要额外增加 300 MB 交换空间,请继续执行以下步骤。
2. 创建合适的 swapfile
使用 dd 命令创建 swap 文件。if 参数指定输入源,通常使用 /dev/zero(这是 Unix 系统特有的零设备);of 参数指定目标文件路径;bs 定义块大小,count 定义块数量,两者相乘即为文件大小。
[root@chenfancentos ~]# dd if=/dev/zero of=/tmp/swapfile bs=300M count=1
记录了1+0 的读入
记录了1+0 的写出
314572800字节(315 MB)已复制,13.9027 秒,22.6 MB/秒
[root@chenfancentos ~]# du -h /tmp/swapfile
300M /tmp/swapfile
这样便成功创建了一个 300 MB 的 swap 文件。
3. 格式化刚才创建的 swapfile
使用 mkswap 命令将刚才创建的文件格式化为 swap 格式:
[root@chenfancentos ~]# mkswap -f /tmp/swapfile
Setting up swapspace version 1, size = 307196 KiB
no label, UUID=c4e2a8b1-fa09-41ab-bcbf-63c273ed9598
若看到 UUID 信息,则表示格式化已完成。
4. 实现开机自动挂载交换文件
在 /etc/fstab 文件中追加以下配置,确保系统重启后自动挂载该 swap 文件:
/tmp/swapfile swap swap defaults 0 0
完整 fstab 内容参考如下(新添加的行在末尾):
[root@chenfancentos ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Apr 2 19:37:01 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=301b2f9f-91d3-47dd-8a43-d377cba1cd5c / ext4 defaults 1 1
UUID=812455f9-a63f-4b09-9336-05e3ada6f9a7 /boot ext4 defaults 1 2
UUID=416480d0-662c-406c-a328-b4c2f370577b swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/tmp/swapfile swap swap defaults 0 0
如此配置后,系统重启时 swap 文件也将自动挂载生效。
5. 启用 swapfile,查看虚拟内存大小
最后,使用 swapon 命令激活该 swap 文件,再运行 free -m 验证扩展结果:
[root@chenfancentos ~]# swapon /tmp/swapfile
[root@chenfancentos ~]# free -m
total used free shared buffers cached
Mem: 988 136 852 0 10 50
-/+ buffers/cache: 74 913
Swap: 2299 0 2299
相比之前的 1999 MB,现在 swap 总容量变为 2299 MB,正好增加了 300 MB。整个过程无需重启系统,也无需修改磁盘分区,极为便捷。


