Linux 下增加、删除 Swap 文件
在使用 VPS 时,如果出现内存不够用的情况,可能会产生各种奇怪的问题。这个时候,增加 Swap 空间,就可以起到救急的作用。下面就来看看具体步骤。
创建 Swap 文件
检查 Swap 空间
先检查一下系统里有没有既存的 Swap 文件:1
swapon -s
如果返回的信息概要是空的,则表示 Swap 文件不存在。
创建 Swap
使用 fallocate
为 Swap 文件预分配空间:1
fallocate -l 1G /swapfile
如果 fallocate
分配空间不成功的话,可以用 dd
命令代替:1
dd if=/dev/zero of=/swapfile bs=1024 count=1048576 #分配1G的Swap空间
参数说明:
if=input file
:输入文件名,缺省为标准输入。即指定源文件。of=output file
:输出文件名,缺省为标准输出。即指定目的文件。bs=bytes
:同时设置读入 / 输出的块大小为 bytes 个字节,取为 1024。count=blocks
:拷贝的块数,块大小等于 bs 指定的字节数。将前面算出的数字填入即可。
我们需要根据需求(即要分配的 Swap 文件的大小)来计算出参数。上面示范的做法是,每次读写 1KiB,重复 N 次,这样可以兼顾内存消耗和读写次数。因此,如果以 MiB 为单位计算你要分配的 Swap 文件的大小,那么读写次数(拷贝的块数)就是将该值乘以 1024 得到结果。例如,块大小为 1KiB 时,64MiB 的 Swap 文件拷贝的块数是 65536,而 1GiB 的 Swap 文件则是 1048576。
这里的 if=/dev/zero
意味着向 /swapfile
填满空字符。经笔者测试,将它换成 /dev/urandom
,也可以正常初始化。
权限设置
分配空间后,需要赋予 Swap 文件适当的权限:1
2chown root:root /swapfile
chmod 0600 /swapfile
启用 Swap
创建好 Swap 文件,还需要格式化后才能使用。1
2
3#初始化并激活Swap
mkswap /swapfile
swapon /swapfile
如果要机器重启的时候自动挂载 Swap,那么还需要修改 fstab
配置。
用 vim
打开 /etc/fstab
文件,在其最后添加如下一行:1
/swapfile none swap sw 0 0
当下一次系统启动时,新的 Swap 文件就打开了。
添加新的 Swap 文件并开启后,检查 cat /proc/swaps
或者 free 命令的输出来查看 swap 是否已打开。
删除 Swap 分区
如果不再需要使用 Swap 分区,那么可以将其卸载并删除。具体的方法是:1
2swapoff /swapfile #卸载swap文件
rm -rf /swapfile #删除文件
此外,如果之前修改过 /etc/fstab
,也需要将该文件中的 Swap 配置删除。