我在一些没有单独 swap 分区的机器上,通常直接补一个 swap 文件。下面这套流程用的是 /var/swap,大小为 2G。
检查当前内存和 Swap
free -h
如果输出里 Swap 全是 0B,说明当前没有可用 swap。
创建 Swap 文件
dd if=/dev/zero of=/var/swap bs=1024 count=2048000
参数说明:
if:输入文件,通常用/dev/zeroof:输出文件,也就是目标 swap 文件bs:块大小count:块数量
格式化 Swap 文件
mkswap -f /var/swap
启用 Swap
swapon /var/swap
如果出现权限提示,例如 0644, 0600 suggested,说明文件权限过宽,建议先修正:
chmod 600 /var/swap
然后重新启用。
验证是否生效
free -h
或:
swapon -s
cat /proc/swaps
设置开机自动挂载
编辑 /etc/fstab:
vim /etc/fstab
在文件末尾加入:
/var/swap swap swap defaults 0 0
关闭并移除 Swap
不再需要时,可以先关闭:
swapoff /var/swap
随后删除 /etc/fstab 中对应行,再删除文件本身。
调整 swappiness
swappiness 决定系统使用 swap 的积极程度。
0:尽量优先使用物理内存100:更积极地把内存页换出到 swap
先查看当前值:
cat /proc/sys/vm/swappiness
临时修改为 10:
sysctl vm.swappiness=10
要想重启后仍然生效,编辑 /etc/sysctl.conf:
vi /etc/sysctl.conf
追加:
vm.swappiness = 10
备注
我这里顺手再记一下:
- CentOS 默认更保守
- Ubuntu 默认常见是
60 - 日常服务器更常见的调优值是
10