准备工作

首先,检查你的系统是否已经有 swap 分区

swapon -s

# 或

free -m

如果没有返回结果或者 free -mswap 一行数值是 0,则表示系统没有 swap 分区。

创建 swap 分区

使用 fallocate 命令创建一个 2 GB 大小的 swap 分区

fallocate -l 2G /swapfile

如果 fallocate 命令无效,请安装 util-linux

apt update && apt install util-linux

设置 swapfile 文件的权限

chmod 600 /swapfile

激活 swap 分区

# 将文件格式化为 swap 格式
mkswap /swapfile

# 激活 swap 分区
swapon /swapfile

此时,你可以使用 swapon -sfree -m 命令查看 swap 分区是否已经激活。

设置开机自启

我们需要编辑 /etc/fstab 这个文件,加入下面的内容即可

echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

可以使用 free -m 命令查看 swap 分区是否正确

调整系统内核 swappiness 值

swappiness 是 Linux 内核的一个属性。使用它可以调整:通过把运行时内存交换到交换空间,或通过删除系统缓存中的内存页来获得更多内存之间的平衡。swappiness 可以被设置为 0 到 100 之间的一个值(包括 0 和 100)。一个小的值意味着内核会尽量避免使用交换空间,而一个大的值意味着内存会尽量主动使用交换空间。

这个值默认是 60(发现自己的几台服务器默认都是 0),即系统在总内存的 80% 已被分配前,不会通过交换进程的内存来获取可用内存。可以使用 cat /proc/sys/vm/swappiness 命令查看当前值。

我一般将其保持默认值 60,你也可以根据需求手动更改为其他值

vim /etc/sysctl.conf
# 找到如下参数,没有则自己手动添加,将后面的数字改为你想要设置的值
vm.swappiness = 60

然后使用 sysctl -p 命令使其生效。

关闭 swap 分区

有时候我们需要关闭 swap 分区,可以使用以下命令

# 停用 swap 分区
swapoff -v /swapfile

检查 /etc/fstab,删除 /swapfile swap swap defaults 0 0 这一行

最后删除 /swapfile 这个文件

rm /swapfile

感谢 烧饼博客 的文章,博客根据自己遇到的情况做了适当修改。