在我们使用云服务器时时常会遇到服务器因内存占满时导致的卡死问题,这时我们可以使用Swap来缓解这种情况。本文主要是为了记录Linux下如何创建和使用Swap

交换(Swap)分区可以是一块独立的分区,也可以是一个交换分区文件。

第一步:创建交换文件

dd if=/dev/zero of=/swapfile1 bs=1MB count=8192
或
fallocate -l 8G /swapfile1
#注:
第一行的count就是交换文件大小了,单位为M

第二步:格式化交换文件并调整权限

mkswap -L swap /swapfile1

chmod 0600 /swapfile1

第三步:挂载Swap分区

swapon /swapfile1

第四步:设置开机启用Swap

需要修改/etc/fstab文件,在末尾添加以下代码

/swapfile1 swap swap defaults 0 0

至此,Swap设置完毕,可以使用free -m命令来查看交换内存是否生效

1670038414706.webp

卸载、检查Swap

检查Swap是否挂载成功

swapon -s 命令可以检查当前挂载的所有swap文件

[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/swap                                  	file	266236	266236	-2
/swap2                             	file	2047996	260500	-3

卸载Swap文件

swapoff + [swap file name]可以卸载指定的Swap文件,如:

swapoff /usr/swap/swapfile1

修改/etc/fstab文件,删除相关文件的自动挂载命令

例如

/usr/swap/swapfile1 swap swap defaults 0 0

修改swappiness设置swap的使用时机

查看Swap使用比例

root@ubuntu:/# cat /proc/sys/vm/swappiness
60

0意味着“在任何情况下都不要发生交换”。
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面

临时修改使用比例

sysctl vm.swappiness=100

永久修改使用比例

vim  /etc/sysctl.conf
# 在最后面加入
vm.swappiness=60

Q.E.D.