您好,欢迎访问本站!登录后台查看权限

给VPS增加交换内存(SWAP)

教程 俎天润 2017-11-22 11550 次浏览 0个评论

我们使用VPS时常常苦恼于有限的内存。尤其是一些小内存的VPS,不得不执行各种优化以节省内存占用。因此,我们可能会需要为自己的VPS增加一块交换内存,即SWAP。SWAP其实是一块硬盘上的区域,系统会将内存中暂时不用的信息转移到SWAP区中,需要用到时再从SWAP中调入内存,这样就实现了内存的扩大。其原理和Windows系统中的页面文件(pagefile)类似。下面我们介绍怎样为系统添加SWAP内存。需要注意的是,OpenVZ虚拟的VPS不支持SWAP空间,网上有人声称可以用脚本的方式在OpenVZ虚拟的VPS中设置SWAP区,我将在文末说明这种方法的错误之处。Xen和KVM虚拟以及vmware虚拟的一般都是支持的。

22131232134.jpg

首先,我们需要新建SWAP文件,这里我们建一个512MB的文件,记住SWAP不是越大越好,足够用就行了。用root账户登录VPS,执行:

1
2
3
dd if=/dev/zero of=/vpsswap bs=1024 count=524288
mkswap /vpsswap
swapon /vpsswap

这样我们就建好了SWAP内存,此时我们执行

1
free -m

,应该可以看到一块511MB的SWAP内存了。

这样建好SWAP后有一个缺点,就是每次开机都需要执行一次swapon /vpsswap命令才能让SWAP工作。为了避免这个缺点,我们将这个命令加入系统开机加载项中即可(网上有一种说法是在文件/etc/fstab中添加一行,实测不知什么原因,未成功)。打开文件:

1
/etc/rc.local

在该文件最后一行添加:

1
swapon /vpsswap

这样,我们完成了全部的设置,每次系统开机将会自动启用这块SWAP空间。

 

最后来说一下网上传的比较广的OpenVZ虚拟VPS下增加SWAP区的方式的错误之处,网上所说的方法如下:(来源:http://blog.csdn.net/sdomain/article/details/8170247)

新建一文本文件,如swap.sh,内容如下:

1
2
3
4
5
#!/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

然后执行这个脚本即可增加SWAP区,并且使用free -m的确可以查看到新增的SWAP内存。那么,这个方法有什么不靠谱的地方呢?我们可以仔细看一下这个shell脚本,就可以发现,脚本的操作实际上是伪造了一个内存的显示数据,从而欺骗了free这个工具。虽然执行free能看到swap区,但是实际上并没有增加。这一点我们可以从两方面得到证明:1,新增SWAP之后硬盘的剩余容量没有丝毫减少,这与SWAP的工作原理不符。2,给VPS进行增压测试,发现无论压力如何,SWAP区的内存占用都是零。因此,我们可以总结,这种增加OpenVZ VPS的SWAP区的方式是错误的。

文章转自 https://qing.su/article/81.html 



已有 11550 位网友参与,快来吐槽:

发表评论