最近几天醒醒在折腾的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命令结合的问题吧。