修改SWAP分区大小

参考链接:https://cyhour.com/687/

参考链接: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

重启一下系统即可。

文章目录