手上有台小内存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大小和内存大小一致是比较合适的。