修改SWAP分区大小
参考链接:https://blog.csdn.net/littleRpl/article/details/92626436
查看当前系统的swap大小
free -h
m 是以兆为单位, g是以GB为单位, 默认是kb
root@localhost:/var# free -h
total used free shared buff/cache available
Mem: 493Mi 362Mi 8.0Mi 2.0Mi 122Mi 107Mi
Swap: 2.0Gi 210Mi 1.8Gi
修改 SWAP 分区大小
系统默认的swap文件位置在/swap
即根目录下
但是swap分区一般都是有内容的,你不能直接删除
root@localhost:/var# rm /swap
rm: cannot remove '/swap': Operation not permitted
直接使用dd命令给swap文件加大小也是不可以的
root@localhost:/var# dd if=/dev/zero of=/swap bs=1M count=1024
dd: failed to open '/swap': Text file busy
直接关闭这个唯一的swap分区也是不可以的。
思路:
**首先要创建一个临时的swap分区,让系统先用这个临时的swap分区,关闭老的swap分区,删除老的swap分区文件,创建一个更大的swap分区,然后打开这个swap分区,关闭并删除临时swap分区。 **
创建 SWAP 分区文件
dd if=/dev/zero of=/tempswapfile bs=1M count=2048
也可以写成:
dd if=/dev/zero of=/tempswapfile bs=1024 count=2048k
dd if=/dev/zero of=/tempswapfile bs=1G count=2
解释:bs 是每块的大小,count 是块的数量,bs * count,就是 SWAP 文件大小。
这里bs如果不加单位那么默认的单位是b,也就是说bs=1024,就指的是1024b,即1kb。
注意在你的空余内存较小的时候不要将bs设置的太大,如最后一种的bs=1G,可能会出现下面的错误提示:
dd: memory exhausted by input buffer of size 1073741824 bytes (1.0 GiB)
格式化 SWAP 分区文件
mkswap /tempswapfile
激活临时 SWAP 分区
swapon /tempswapfile
此时你再用free -h查看swap大小,可以发现swap大小已经变大了。
关闭原理的 swap 分区
swapoff /swap
删除旧的 swap 分区,并创建更大的
rm /swap
dd if=/dev/zero of=/swap bs=1M count=2048
修改 swap 分区权限
刚才激活临时swap分区的时候你也许已经发现了,swap分区建议的权限是600.
chmod 600 /swap
激活增大后的 swap 分区
swapon /swap
关闭临时swap分区,并删除临时swap分区文件
swapoff /tempswapfile
rm /tempswapfile
到这里就完成了。
增加swap分区,使用多个swap分区文件
当然也可以有多个swap分区文件。
如果希望使用多个swap分区文件,那么创建的步骤和上面的临时swap文件的创建方式一样,位置随便选。不过需要增加系统文件的描述,让系统知道下次开机时自动加载这个swap文件。
开机/重启自动挂载 SWAP
需要修改 fstab 配置,用 vi 打开 /etc/fstab 文件,在其最后添加如下一行:
/tempswapfile none swap defaults 0 0
swappiness参数的含义
swappiness是Linux的一个内核参数,控制系统在进行swap时,内存使用的相对权重。
swappiness参数值可设置范围在0到100之间。
此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间。
Ubuntu系统swappiness默认值为60,表示的含义可以这样来理解,当剩余物理内存低于40%(40=100-60)时,开始使用swap分区。CentOS系统此参数的默认值是30。
设置为100可能会影响整体性能,如果内存充足,就可以将这个值设置很低,甚至为0,以避免系统进行swap而影响性能。
查询系统当前 swappiness 值
cat /proc/sys/vm/swappiness
合理设置 swappiness
打开 sysctl.conf 文件(vi /etc/sysctl.conf)
文档最后加上一行:
vm.swappiness=18
重启一下系统即可。