一、创建 swap 分区
1.创建 swap 文件
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
- dd:用于读取、转换并输出数据。
- if=/dev/zero:参数
if
用于指定源文件。/dev/zero
是一个特殊的字符设备文件,当使用或读取它的时候,它会提供无限连续不断的空的数据流。 - of=/var/swapfile:参数
of
用于指定目的文件。 - bs=1024:参数
bs
用于设置单位数据块同时读入/输出的块字节大小。设定为 1024 字节,即 1KB 。 - count=4194304:参数
count
用于设置块的个数。设定的个数是 4194304 = 1024x1024x4 ,每个块的大小是 1KB ,因此 swap 文件总大小为 1024x1024x4x1 KB = 4 GB 。
2.建立 swap 分区
mkswap /var/swapfile
- mkswap 用于在一个文件或者设备上建立交换分区。此处指定文件为刚创建的
/var/swapfile
3.激活 swap 分区
- 修改不安全的权限
chmod -R 0600 /var/swapfile
- 激活 swap 分区
swapon /var/swapfile
二、修改 swap 配置
1.开机自动挂载 swap 分区
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
2.调整系统使用 swap 分区的策略
系统使用虚拟内存是有一定策略的,通过参数 swappiness 来平衡。
swappiness 的值越大表示越积极使用 swap 分区,越小表示越积极使用物理内存。以值取 10 为例,代表了当剩余物理内存小于 10% 时,系统开始使用 swap 分区。
如果内存充足,就将 swappiness 值设置很低,甚至为0,以避免系统进行 swap 而影响性能。
如果内存不足,就将 swappiness 值设大,让系统更多地使用 swap 分区,一般设置在 10 ~ 50 之间即可。
- 查看当前的 swappiness 值
cat /proc/sys/vm/swappiness
- 临时修改
sysctl vm.swappiness=10
- 永久修改
echo "vm.swappiness = 10" >> /etc/sysctl.conf
三、删除 swap 分区
- 停止正在使用的 swap 分区
swapoff /var/swapfile
- 删除 swap 分区文件
rm -rf /var/swapfile
- 删除或注释掉之前在
/etc/fstab
文件里追加的开机自动挂载配置内容,以及在/etc/sysctl.conf
文件里追加的 swappiness 值
vim /etc/fstab # 注释或删除:/var/swapfile swap swap defaults 0 0
vim /etc/sysctl.conf # 注释或删除:vm.swappiness = 10