Linux下swapfile的配置
介绍
在windows、macos、Linux系统下,swap都可以有swap分区、swap文件(swapfile)两种形式的swap。目前,windows下默认使用swapfile技术,而Linux下则一般会在安装Linux时配置swap分区。
注意: Linux下称为swap,而windows下常称为虚拟内存,这两个本质上是同一个东西。
Swap space交换空间,是虚拟内存的表现形式。系统为了应付一些需要大量内存的应用,而将磁盘上的空间做内存使用,当物理内存不够用时,将其中一些暂时不需要的数据交换到交换空间,也叫交换文件或页面文件中。
swap作用
- 当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
- Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
- 如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入“休眠”模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为“唤醒”主机状态的依据;
- 在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size;
- 但是部分应用不兼容swap,或者是说不需要swap,安装时请阅读官方文档。
swap文件创建规则
参照oracle官方文档设定的标准应这样配置:
- 4G以内的物理内存,SWAP 设置为内存的2倍。
- 4-8G的物理内存,SWAP 等于内存大小。
- 8-64G 的物理内存,SWAP 设置为8G。
- 64-256G物理内存,SWAP 设置为16G。
但是具体分配多少并没有一个严格的标准,而且很多人选择不分出swap。
注意(没有测试,但是网上可以查到相关介绍):根据swap的功能介绍,Linux下不分swap分区/文件则无法进行休眠。
swapfile的好处
这是与swap分区相比的。swapfile比swap分区更方便管理,可方便的进行删除、调整大小等操作。
Linux下配置swapfile
- 查看是否开启了swap分区
lsblk
可以看到这里有一个2G大小的swap分区。所以在启用swapfile前要进行关闭。
如果没有则跳到第三步
- 关闭swap分区
sudo swapoff /dev/分区名称如这里我们可以这样关闭swap分区
sudo swapoff /dev/nvme0n1p4- 检查是否已经关闭所有swap
sudo swapon -s没有输出则代表没有swap开启,就可以进行下一步了。
- 创建swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress- of:指定输出位置
- bs:指定单位
- count:指定大小,单位为 mb
- status=progress:显示创建进程
这里我创建了一个16G的swapfile。
- 修改swapfile
sudo chmod 600 /swapfileswapfile默认777权限,这是一个漏洞,所以要修改权限。
- 对swapfile进行格式化
sudo mkswap /swapfile- 开启swapfile
sudo swapon /swapfile- 检查swapfile是否开启
sudo swapon -s如果上面步骤没问题,那么就可以看到我们的swapfile了

- 修改fstab
sudo nvim /etc/fstab如果之前开启了swap分区,需要将其注释。然后添加上我们创建的swapfile,这样每次开机就会启用swapfile了。

# swapfile
/swapfile none swap defaults 0 0配置 swap 使用倾向
在Linux系统中,可以通过设置swappiness参数来确定系统对swap分区的使用原则,swappiness参数取值范围为0到100。
swappiness值越低,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用swap分区。swappiness值越高,表示积极地使用swap分区,并且把内存中的数据及时地置换到swap分区。
可以通过下面命令查看:
cat /proc/sys/vm/swappiness在阿里的轻量云服务器中,上面这个输出为 0,导致服务器不使用/极少使用 swap,即便物理内存快崩溃了。
编辑/etc/sysctl.conf文件,写入如下
vm.swappiness=30轻量云服务器建议设置为 30
然后执行这个命令
sudo sysctl -p最后就可以用 cat /proc/sys/vm/swappiness查看到修改后的值了。
关闭swapfile
如果按照上面步骤开启了swapfile,然后现在不想使用swapfile,该如何关闭呢?
- 关闭swap
sudo swapoff /swapfile修改fstab
将swapfile的部分注释掉即可删除swapfile
这一步是可选的,如果你下次还想用这个swapfile,那么可以选择保留。不想用的话就直接删除即可
sudo rm /swapfile