飘云飘云

漂泊的云,停留的心!人的头脑太复杂,时间过得久,有时候连自己也被自己骗了,记下来才是最真实的……

Xen/KVM架构的Linux VPS添加SWAP交换分区的方法

最近几天醒醒在折腾的12刀VPS的时候,感觉内存有点小,只有256M,SWAP也小只有64M,内存大小没办法增加了,就添加点SWAP交换分区吧,Linux VPS添加SWAP交换分区值能在XEN和KVM和的VMWare架构的VPS中添加,OpenVZ的不行。

一、查看当前系统中SWAP的情况

free -m
swapon -s

如果该命令没有返回出结果,则代表该系统尚未配置过swap。

二、进入目录获取要增加的SWAP文件块(这里以512MB为例,其他容量SWAP可以通过调整COUNT参数实现)

cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=524288

这里我是准备就给512MB作为SWAP,毕竟磁盘不足,如果我们磁盘足够的话,那就做个2G-4GB都没事,调整上面COUNT参数就可以了。

【参数说明】
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

三、创建SWAP文件

/sbin/mkswap swapfile

四、激活SWAP文件

/sbin/swapon swapfile

五、查看SWAP信息是否正确

/sbin/swapon -s

六、添加到fstab文件中让系统引导时自动启动

echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab
vi /etc/fstab

打开文件,然后在最后面一行加上:

/var/swapfile swap swap defaults 0 0

上面这步也可以通过修改/etc/fstab,末尾加入

/var/swapfile swap swap defaults 0 0

七、最后,赋予 Swap 文件适当的权限:

chown root:root /swapfile 
chmod 0600 /swapfile

最后可以通过free -m 命令查看SWAP是否已经添加上,正常情况下应该已经有了新添加的SWAP,如果想要删除原来的SWAP重新添加SWAP交换分区的话,先swapoff -a 关闭掉分区,然后删除配置文件且删除分区文件后再来划分新分区,SWAP交换分区一般设置为物理内存的1-2倍就行,太大也没有用处,醒醒这里的changeip.com的12刀VPS的物理内存256M,所以就添加了一个512M的SWAP交换分区。

八、删除SWAP分区

$ swapoff  /swapfile  #卸载swap文件
$ 并修改/etc/fstab文件 #从配置总删除
$ rm -rf /swapfile  #删除文件

更改Swap配置(可选)

有几个涉及swap的选项可能会影响到系统的性能表现。大部分情况下这些选项是可选的,具体要修改成什么样则取决于你的应用需求以及个人偏好。

Swappiness

swappiness参数决定了系统将数据从内存交换到swap空间的频率,数值设置在0到100之间,代表系统将数据从内存交换到swap空间的力度。
该数值越接近于0,系统越倾向于不进行swap,仅在必要的时候进行swap操作。由于swap要比内存慢很多,因此减少对swap的依赖意味着更高的系统性能。
该数值越接近于100,系统越倾向于多进行swap。有些应用的内存使用习惯更适合于这种情况,这也于服务器的用途有关。

输入如下命令查看当前的swappiness数值:

cat /proc/sys/vm/swappiness

CentOS 7默认设置了30的swappiness,这对于大部分桌面系统和本地服务器是比较中庸的数值。对于VPS系统而言,可能接近于0的值是更加合适的。

使用sysctl命令可以修改swappiness。比如将swappiness设为10:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

本次修改将一直生效到下次重启前。如果希望永久修改该数值,则需要编辑sysctl配置文件:

sudo nano /etc/sysctl.conf

将以下内容粘贴到文件末尾:

vm.swappiness = 10

编辑完成后,保存退出,之后服务器每次重启的时候会将swappiness设置为该值。

缓存压力(Cache Pressure )

另一个可以考虑更改的配置项是vfs_cache_pressure,该配置项涉及特殊文件系统元文件条目的存储。对此类信息的频繁读取是非常消耗性能的,所以延长其在缓存的保存时间可以提升系统的性能。

通过proc文件系统查看缓存压力的当前设定值:

cat /proc/sys/vm/vfs_cache_pressure

这个数值是比较高的,意味着系统从缓存中移除inode信息的速度比较快。一个保守一些的数值是50,使用sysctl命令进行设置:

sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

这条命令仅在重启前有效。要让该设置永久有效,需要编辑sysctl配置文件:

sudo nano /etc/sysctl.conf

在文件末尾添加如下内容:

vm.vfs_cache_pressure = 50

保存退出,服务器就会在每次重启后都自动将缓存压力设置为50了。

使用fallocate创建/swapfile没法挂载提示:swapon failed: Invalid argument,试了很多遍,依旧不行。后来删掉重新dd了一个swapfile,然后就好了。一开始百思不得其解,后来想想原因,只能推测挂载不上,报错是GCE的SSD虚拟磁盘跟fallocate命令结合的问题吧。

当前页面:飘云 » Xen/KVM架构的Linux VPS添加SWAP交换分区的方法

评论