创建Swap提示swapon: /home/swap: swapon failed: 不允许的操作

OpenVZ架构的虚拟服务器不支持添加Swap虚拟内存,创建Swap提示:

swapon: /home/swap: swapon failed: 不允许的操作

遇到这种情况,只能联系主机商解决,需要在母机上操作:

vzctl set 33 --swappages 0:1024M --save

所以,如果购买OpenVZ架构的虚拟服务器,最好先问清楚是否支持Swap,当然,Swap并不是必须的。

另外,作为用户,没有母机的管理权限,可以通过以下方法添加好看却没啥用的Swap。

创建swap.sh脚本:

vi /home/swap.sh

写入内容:

#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
umount /proc/meminfo 2> /dev/null
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo

给脚本添加可执行权限:

chmod +x /home/swap.sh

运行脚本:

/home/swap.sh

此时,通过以下命令可以看到Swap了:

free -m

重启主机后会消失,可以添加开机启动项,编辑以下脚本:

vi /etc/rc.d/rc.local

在这个文件的最后添加脚本路径:

/home/swap.sh

Centos7中/etc/rc.d/rc.local的权限被降低了,所以还需要添加执行权限:

chmod +x /etc/rc.d/rc.local
阿里云