CentOS 添加 Swap 分区

当系统的内存空间满了之后,Linux 系统就会使用硬盘的空间来“扩展”内存。如果没有设置 Swap 分区,当内存耗尽之后,系统可能就会假死。

创建和激活 Swap 文件

首先创建 Swap 文件:

sudo fallocate -l 4G /swapfile

如果 fallocate 不可用,则可以换用另一种方法:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=4194304

设置权限,确保只有 root 用户可以读写 Swap 文件:

sudo chmod 600 /swapfile

接下来,在 Swap 文件上设置 Swap 分区:

sudo mkswap /swapfile

然后就是激活 Swap 分区:

sudo swapon /swapfile

激活之后可以使用 free -h 命令查看 Swap 分区的使用情况,以验证是否成功激活 Swap 分区。

最后,需要在 /etc/fstab 文件的最后添加条目,确保设置永久生效:

/swapfile swap swap defaults 0 0

调整 Swappiness 值

Swappiness 值是 Linux 内核中定义的使用 Swap 分区的优先级,值可以为 0 至 100 之间的任何整数。值越小系统就尽量少去使用 Swap 分区,值越大系统就尽可能多的去使用 Swap 分区。

在 CentOS 上,Swappiness 值默认是 30。可以通过以下命令检查当前系统的 Swappiness 值:

cat /proc/sys/vm/swappiness

30 的 Swappiness 值对于桌面系统来说是合适的,但对于服务器来说,小一点可能会合适。例如,设置 Swappiness 值为 10:

sudo sysctl vm.swappiness=10

如果想永久设置 Swappiness 值,需要编辑 /etc/sysctl.conf 文件,在末尾添加以下内容:

vm.swappiness=10

移除 Swap 分区和文件

首先,取消激活 Swap 分区:

sudo swapoff -v /swapfile

然后,将 /etc/fstab 文件中的条目 /swapfile swap swap defaults 0 0 删除。

最后,删除 Swap 文件:

sudo rm /swapfile