免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
本文介绍在Linux实例中,如何配置SWAP分区和常见问题处理。
在Linux系统中的SWAP(交换分区),类似于Windows系统的虚拟内存。系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存。
注:如果您使用普通云盘,不建议使用SWAP分区。如果是高效云盘或SSD云盘,可以根据实际情况使用SWAP分区。详情请参考参文档ECS实例使用须知。
dd if=/dev/zero of=/mnt/swap bs=block_size count=number_of_block
注:block_size
、number_of_block
大小可以自定义,比如bs=1M count=1024
代表设置1G大小SWAP分区。
mkswap /mnt/swap
swapon /mnt/swap
注:如果在/etc/rc.local
中有swapoff -a
需要修改为swapon -a
。
/etc/fstab
中的SWAP行,添加以下代码。 /mnt/swap swap swap defaults 0 0
注:
/mnt/swap
路径可以修改,可以根据创建的SWAP分区文件具体路径来配置。
swappiness
参数值,此处以空闲内存少于10%时才使用SWAP分区为例。
提示:在Linux系统中,可以通过查看/proc/sys/vm/swappiness
内容的值来确定系统对SWAP分区的使用原则。当swappiness
内容的值为0
时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness
内容的值为100
时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。查看修改前为0
,需要在物理内存使用完毕后才会使用SWAP分区。
echo 10 >/proc/sys/vm/swappiness
/etc/sysctl.conf
文件,并增加以下内容。 vm.swappiness = 10
sysctl -p
当系统出现内存不足时,开启SWAP可能会因频繁换页操作,导致IO性能下降,可以采用以下方法,关闭SWAP分区。
free -m系统显示类似如下。
swapoff [$SWAP_File]
注:[$SWAP_File]SWAP分区标识。系统显示类似如下。
vim
命令,修改/etc/fstab
文件,删除或注释相关配置,取消SWAP的自动挂载,系统显示类似如下。free -m系统显示类似如下。
echo 0 >/proc/sys/vm/swappiness
/etc/sysctl.conf
文件,并增加以下内容。 vm.swappiness = 0
sysctl -p
使用mkswap创建SWAP时出现类似如下报错信息:
mkswap: error: swap area needs to be at least 40 KiB
指定的SWAP分区文件太小,SWAP分区文件至少应该大于40KB。
重新生成更大的文件格式化为SWAP即可。