在CentOS7上添加SWAP内存

一些内存较小的机器在运行很多事务时都无法分配到足够的内存,添加SWAP内存来解决RAM不足的问题。

检查系统SWAP信息

每个人情况不同,加SWAP之前看看之前是否已经配置过了SWAP

1
swapon -s

如果你发现这行命令运行之后没有任何反应,毫无疑问,没有设置过SWAP

我们也可以用free命令查看

1
free -m

运行结果(在阿里云上运行的,2G内存,因为前言里的垃圾VPS已经配置过了)

1
2
3
              total        used        free      shared  buff/cache   available
Mem: 1837 221 156 32 1459 1400
Swap: 0 0 0

可看出还未配置SWAP

检查可用空间

检查磁盘空间命令的短参数-h很有意思,意思是让显示的信息更”Human”,更容易被人类阅读

1
df -h
1
2
3
4
5
6
7
8
9
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 33M 887M 4% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 3.9G 34G 11% /
overlay 40G 3.9G 34G 11% /var/lib/docker/overlay2/0e94a5db9b8910e6fc5be3b75f422ebae69115a30e8092757196fbb4eaa03546/merged
shm 64M 0 64M 0% /var/lib/docker/containers/68c4e8384804957a03b6ee2f66fa575dbfba1592419bd0528892400310e86a6a/shm
tmpfs 184M 0 184M 0% /run/user/0

可用看到存储分区/dev/vda1上还有很多富余空间(每个人情况可能不同)

创建SWAP文件

在根目录(可选你喜欢的目录)创建一个4GB的SWAP文件(报复式心理2333)

1
fallocate -l 4G /swapfile

注意,使用 fallocate 在某些文件系统下后续操作会报错,那样的话请使用以下命令生产SWAP文件

1
dd if=/dev/zero of=/myswap count=4096 bs=1MiB

可用ls检查文件大小

1
ls -lh /swapfile

SWAP文件创建完毕

启用SWAP文件

首先我们确保SWAP文件只有root用户可读

1
chmod 600 /swapfile

再用ls检查

1
ls -lh /swapfile

显示如下即可

1
-rw------- 1 root root 4.0G APR 05 11:00 /swapfile

然后告知系统使用我们创建的SWAP文件进行SWAP

1
mkswap /swapfile

现在,这个SWAP文件就可以进行SWAP了,输入一下命令开启SWAP

1
swapon /swapfile

检查SWAP是否已经生效

1
swapon -s

使SWAP永久生效

虽然现在已经启用,重启之后系统不会自动SWAP

编辑fstab文件

1
nano /etc/fstab

在文件末尾加上

1
/swapfile   swap    swap    sw  0   0

保存退出即可

到此,SWAP配置成功

Swappiness

该参数决定了系统将数据从内存交换到swap空间的频率,数值设置在0到100之间,代表系统将数据从内存交换到swap空间的力度

查看当前Swappiness

1
cat /proc/sys/vm/swappiness

CentOS7默认值为

1
30

要永久修改该数值,编辑系统设置文件

1
nano /etc/sysctl.conf

在文末添加

1
vm.swappiness = 数值

到此,SWAP设置全部完成