当系统的内存空间满了之后,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