swap 分区是硬盘上的一块空间,当物理内存使用完之后,系统把 swap 分区来当作内存使用。当 Linux 系统的内存用完时,非活动页面将从内存转移到 swap 分区。
swap 分区可以采用专门交换分区或交换文件的形式。 在大多数情况下,在 VPS 上运行 CentOS 时,不存在交换分区,因此唯一的选择是创建交换文件。
本教程以 CentOS 7 系统为例,介绍添加 swap 分区的操作,以 root 用户操作。
创建 swap 分区具体过程
在添加 swap 分区之前,运行以下命令查看是不是已经存在 swap 分区,如果没有任何的输出,说明该系统没有 swap 分区。
# swapon --show
1、创建一个 swap 文件
本教程创建 1G 的 swap 分区,可以根据自身的需要进行修改。
# fallocate -l 1G /swapfile
2、设置权限,只允许 root 用户进行读写操作
# chmod 600 /swapfile
3、创建 swap 分区
# mkswap /swapfile
4、激活 swap 分区
# swapon /swapfile
编辑 /etc/fstab
文件,添加一行:
# /swapfile swap swap defaults 0 0
5、验证 swap 分区
# swapon --show
# free -h
修改 swappiness 值
swappiness 是 Linux 内核的属性,范围从 0 到 100,当 swappiness 越小时,系统会尽量不使用 swap 分区,反之,系统会更多地使用 swap 分区。
由于 swap 分区使用的是硬盘的空间,虽然现在的 SSD 速度比以前的 HDD 快多了,但是和内存比起来还是很慢。所以在设置 swappiness 值的时候,要根据自身内存的大小和应用的需要,设置一个最佳值。
1、查看 swappiness 值
# cat /proc/sys/vm/swappiness
2、修改 swappiness 值
# sysctl vm.swappiness=10
如果想要系统重启之后 swappiness 值仍然有效,需要修改 /etc/sysctl.conf 文件,修改 swappiness 参数(如果没有就增加一行):
vm.swappiness=10
删除 swap 分区
1、停用 swap 分区
# swapoff -v /swapfile
2、删除 /etc/fstab
文件中增加的一行
/swapfile swap swap defaults 0 0
3、删除 swapfile 文件
# rm /swapfile