准备工作
首先,检查你的系统是否已经有 swap 分区
swapon -s
# 或
free -m
如果没有返回结果或者 free -m
中 swap
一行数值是 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 -s
或 free -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
感谢 烧饼博客 的文章,博客根据自己遇到的情况做了适当修改。