Linux系统增加或调整swap

手上有台小内存VPS,利用控制面板重装系统之后,系统模板默认只给了64MB的swap空间,对于需要跑PHP及MySQL这样的组合再加上WordPress这种内存大户来说根本不够用,稍微有几个访问量swap就爆了,于是想了想办法调整了下swap的大小。

我是在Debian9系统上进行测试的,但是理论上来说,Debian、Ubuntu、CentOS等Linux系统发行版都是通用的。

开始之前

在开始增加或修改swap之前,我们先查看系统现有的swap:

root@cloudbool:~# swapon --show
NAME  TYPE SIZE  USED PRIO
/swap file 64M 11.7M   -1

可以看出,当前是以文件形式启用swap的,且swap空间大小是64M,确实有点小,如果是以分区形式启用swap的,输出如下:

[root@CentOS7 ~]# swapon -show
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       3932156 0       -2

查看现有swap使用情况:

free -m

其中Swap所在行就是swap的信息,可以看到具体的swap空间大小及已使用情况。
因为如果是分区形式的swap,调整大小需要分区,本文以swap文件形式进行调整操作。
既然是调整,哪操作思路肯定是先删除现有的,再按照需求增加swap交换空间了。

Linux系统关闭swap

因为系统模板自带了64MB的swap内存,在调整大小前需要先将现有的swap关闭,命令如下:

swapoff /swap

执行之后,原swap上的内容应该是转移到内存上了,可以看到swap空间为零,且内存使用有所增加。

Linux启用swap

如果系统原有swap文件,最好是先删除原有的,比如说上面关闭的哪个:

rm /swap

接着创建一个空文件用于创建swap空间,相关命令:

root@cloudbool:~# dd if=/dev/zero of=/swap bs=512k count=512
512+0 records in
512+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 0.929591 s, 289 MB/s

上面命令是在/目录下创建一个名为swap的以空白填充的文件,块大小是512K,数量为512,所以总大小为256MB,如果需求跟我不一样的,可以更改相应的参数。
将文件创建成swap文件:

root@cloudbool:~# mkswap /swap  //创建swap
root@cloudbool:~# chmod 0600 /swap  //更改权限
root@cloudbool:~# swapon /swap //启用swap

如果上面几个命令执行完没问题的话,可以通过如下命令进行查看swap的情况:

root@cloudbool:~# free -m
              total        used        free      shared  buff/cache   available
Mem:            256         144          10          36         101          66
Swap:           255          22         233

可以看出swap已经创建成功且在使用了。

更改/etc/fstab文件

如果是新创建的swap空间,上面只是临时启用,要永久启用swap还需要修改/etc/fstab文件以实现开机加载swap,编辑/etc/fstab,并增加一行:

vi /etc/fstab
/swap none swap sw 0 0

swap空间大小多少合适

关于swap是不是有必要以及到底多大合适,一直以来网上众说纷纭,也没见有个统一的说法,就我个人实际使用情况而言,我觉得还是有必要的,有的时候内存不够用或者太多内容需要缓存可能就要用的上swap了。
至于swap大小多少,我一直是设置成跟内存大小一样,swap也就是内存的交换,设置太大也没多大意义,真的内存不足还是升级物理内存更合适,如果磁盘性能不好而设置swap太大更是影响程序性能,所以我个人觉得swap大小和内存大小一致是比较合适的。