我在一些没有单独 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/zero
  • of:输出文件,也就是目标 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