歲月留聲

Debian / Ubuntu 手工添加修改 Swap 分区

如何在 Debian 11 系统下手工添加 Swap 分区?本文简单记录一下操作方法,理论上适用于 Debian / Ubuntu(Ubuntu 22.04 等)系统,Linux 系统操作方法大同小异。

「Debian / Ubuntu 手工添加修改 Swap 分区:https://0xo.net/646」

Debian / Ubuntu 手工添加修改 Swap 分区 - 第1张图片

Swap 分区大小如何设定?

Redhat 官方文档中有关于 swap 分区大小设置建议:Recommended System Swap Space(中文:推荐的系统 swap 空间

系统 RAM 容量 建议 swap 空间大小 允许休眠的建议 swap 空间大小
⩽ 2GB RAM 容量的两倍 RAM 容量的三倍
> 2GB – 8GB 与 RAM 容量相等 RAM 容量的两倍
> 8GB – 64GB 至少 4GB RAM 容量的 1.5 倍
> 64GB 至少 4GB 不建议使用休眠功能

在以上列出的每个范围临界点(例如:使用 2GB、8GB 或者 64GB 系统 RAM 的系统),可根据所选 swap 空间以及休眠支持选择设置。如果系统资源允许此操作,增加 swap 空间可能会提高性能。

「Debian / Ubuntu 手工添加修改 Swap 分区:https://0xo.net/646」

注:可以在多个存储设备中分配 swap 空间 -- 特别是对于那些使用高速驱动器、控制程序和接口的系统 -- 同时还可提高 swap 空间性能。

Debian 11 手工添加 Swap 分区实操

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

swapon -s
free -m

如果没有返回结果或者 free -m 中 Swap 一列数值是 0,表示系统没有 Swap 分区。

「Debian / Ubuntu 手工添加修改 Swap 分区:https://0xo.net/646」

创建 SWAP 分区,使用 fallocate 命令创建一个 6GB 大小的 Swap 分区:

fallocate -l 6G /swapfile

如果 fallocate 命令无法使用,请安装 util-linux 包:

apt install util-linux

然后设置 swap 文件权限并激活 SWAP 分区:

「Debian / Ubuntu 手工添加修改 Swap 分区:https://0xo.net/646」
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

到这里,使用 swapon -s 或 free -m 命令可查看 Swap 分区是否已经激活。

接着设置开机自动分配挂载 swapon,执行如下代码向 /etc/fstab 文件加入 /swapfile swap swap defaults 0 0 内容即可:

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

重启系统,使用 free -m 命令查看 Swap 分区是否正确。

调整系统内核 Swappiness 值

Swapiness 是 Linux 内核一个属性,定义了系统使用 swap 交换空间频率,Swapiness 值在 0 到 100 之间(默认是 60)。系统在什么情况下才会使用 SWAP(硬盘中虚拟内存)?

实际上,并不是物理内存完全耗尽,才去使用 swap 空间,什么时候开始使用 Swap 是由 swappiness 参数值控制。执行如下命令可以查看 swappiness 当前值:

cat /proc/sys/vm/swappiness

在 Centos 7 系统默认值是 30,在 Centos 6 是 60,Debian 11 也是 60。

swappiness=0 表示最大限度使用物理内存,然后才开始使用 swap 空间,一般我们可以给他改成 5、10:

echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

参考资料:swappiness 的作用是什么?它如何影响 swap_tendency?

总体来讲,增加 swappiness 这个值会使系统更多地使用交换空间而不是缓存来获得可用内存,从而使缓存可以有更多的可用空间。反之,减小这个值会使系统更少地依赖交换空间,从而可以提高应用程序的性能。

如何关闭 Swap?

如果需要关闭 Swap 分区,首先,停用 Swap 分区:

swapoff -v /swapfile

然后编辑 /etc/fstab 配置文件,删除 /swapfile swap swap defaults 0 0 这一行。

最后把 /swapfile 这个文件删除掉即可:

rm /swapfile

参考资料:

Debian / Ubuntu 手工添加 Swap 分区

How To Add Swap Space on Debian 11?

退出移动版