Linux 调整 Swap

Swap 分区是什么

Swap(交换分区),类似于 Windows 中的虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,以解决内存容量不足的问题。

因此,Swap 分区的作用就是牺牲硬盘,增加内存,解决 VPS 内存不够用或者爆满的问题。

Swap 分区大小选择

Swap 合理的大小是与 VPS 的物理内存有关的,建议配置(Red Hat Enterprise Linux)如下:

  • 内存 <= 4g:Swap 至少 4G

  • 内存 4~16G:Swap 至少 8G

  • 内存 16G~64G:Swap 至少 16G

  • 内存 64G~256G:Swap 至少 32G

实际上,系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置 Swap 的值

Swap 分区设置

  1. 查看当前分区情况

free -m

如果是增加 swap 分区,则先把当前所有分区都关闭了

swapoff -a
  1. 创建要作为 Swap 分区文件(其中 /data/swapfile 是文件位置,bs*count 是文件大下,例如以下命令就会创建一个 4G 的文件)

dd if=/dev/zero of=/data/swapfile bs=1M count=4096
  1. 设置权限

默认交换空间文件的权限只有 root 用户才能写入和读取交换文件的数据。因此我们需要修改交换空间文件的权限为 600。

chmod 600 /data/swapfile
  1. 格式化为 Swap 分区文件

需要格式化交换空间的文件。交换空间文件所使用的文件系统与普通文件系统不一样。

mkswap /data/swapfile
  1. 启用 Swap 分区

swapon /data/swapfile

查看 Linux 当前分区,如果有 Swap 就说明创建成功了

  1. 设置开启启动

/etc/fstab 文件中加入一行代码

/data/swapfile swap swap defaults 0 0

系统在什么情况下才会使用 Swap

系统不是等所有的物理内存都消耗完毕之后,才去使用 swap 的空间,什么时候使用是由 swappiness 参数值控制

swappiness 是一个 Linux 内核属性,用于定义系统使用交换空间的频率。

swappiness 可以是 0 到 100 之间的值。swappiness=0 的时候表示最大限度使用物理内存,然后才是交换空间,swappiness=100 的时候表示积极的使用交换空间。

可以运行命令 cat /proc/sys/vm/swappiness 命令查看当前 swappiness 值的大小。

运行下面的命令对 swappiness 进行临时修改

sysctl -w vm.swappiness=10

sysctl 命令用于在运行时配置 Linux 内核的参数,更改仅在当前会话中可用,即重启会恢复为默认值。

为让 swappiness 的值持久化,则需要将值写入到 /etc/sysctl.conf 文件中。sysctl.conf 是 Linux 内核的配置文件。在 Linux 内核启动时将会次配置文件的参数。

运行以下命令持久化 Linux 内核参数 swappiness 的值。

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/sysctl.conf

删除 swap 分区

运行命令 swapoff 关闭交换空间。

swapoff -v /swapfile

如果交换空间文件还启用 fstab 方式的自动挂载,你还需要删除 /etc/fstab 文件中定义的自动挂载配置。

打开文件 /etc/fstab,并移除行定义交换空间自动挂载的行。

最后运行 rm 命令删除交换空间文件。


Linux 调整 Swap
https://clear-wind.cn/archives/2U3noJVq
作者
晴天
发布于
2025年12月29日
许可协议