Total Pageviews

Tuesday, 29 March 2016

给VPS添加SWAP(Xen/kvm)

(openvz vps需要母鸡权限,vzctl set 33 --swappages 0:1024M --save。openvz小鸡没法自行添加内存.)
XEN/KVM VPS可以通过添加SWAP来给VPS提高一下性能。通过网络寻找这方面的资料,下面说一下VPS添加SWAP的方法。
Xen/KVM VPS添加SWAP的方法:
1、进入一个目录
cd /var/
2、获取256M的文件块:
dd if=/dev/zero of=swapfile bs=1024 count=262144
3、创建swap文件
/sbin/mkswap swapfile
4、激活swap文件
/sbin/swapon swapfile
5、查看一下swap是否正确:
/sbin/swapon -s
6、加到fstab文件中让系统引导时自动启动
vi /etc/fstab
在末尾增加以下内容:
/var/swapfile swap swap defaults 0 0
也可以执行如下命令,感觉这样更方便
echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab
顺便附上DD命令的参数介绍:
功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。
语法:dd [选项] if = 输入文件(或设备名称)。 of = 输出文件(或设备名称)。 ibs = bytes
一次读取bytes字节,即读入缓冲区的字节数。 skip = blocks 跳过读入缓冲区开头的ibs*blocks块。 obs =
bytes 一次写入bytes字节,即写入缓冲区的字节数。 bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。 count=blocks 只拷贝输入的blocks块.
 -------------------


Linux中的swap交换分区就相当于我们使用windows的时候说到的虚拟内存,如果你的vps内存较小可以适当添加swap。注意:openvz无法自己添加。
1、检查 Swap 空间
在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。
运行以下命令:
swapon -s
如果返回的信息概要是空的,则表示 Swap 文件不存在。
2、检查文件系统
在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:
df -hal
检查返回的信息,还剩余足够的硬盘空间即可。
3、创建并允许 Swap 文件
下面使用 dd 命令来创建 Swap 文件。
dd if=/dev/zero of=/home/swapfile bs=1024 count=1024k
参数解读:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节
count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
4、格式化并激活 Swap 文件
上面已经创建好 Swap 文件,还需要格式化后才能使用。运行命令:
mkswap /home/swapfile
激活 Swap ,运行命令:
swapon /home/swapfile
以上步骤做完,再次运行命令:
swapon -s
你会发现返回的信息概要:
Filename                    Type        Size    Used    Priority
/home/swapfile               file        524284    0     -1
如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。
用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:
/home/swapfile           swap                    swap    defaults        0 0
最后,赋予 Swap 文件适当的权限:
chown root:root /home/swapfile 
chmod 600 /home/swapfile
同时,我们还可以修改 Linux Swap 空间的 swappiness ,降低对硬盘的缓存。
Linux 会使用硬盘的一部分做为 Swap 分区,用来进行进程调度–进程是正在运行的程序–把当前不用的进程调成‘等待(standby)’,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动 (active)’,睡眠的进程就会在 Swap 分区,把内存空出来让给‘活动’的进程。
如果内存够大,应当告诉 Linux 不必太多的使用 Swap 分区,可以通过修改 swappiness 的参数来设置。swappiness=0 的时候表示最大限度使用物理内存,然后才是 Swap 空间,swappiness=100 的时候表示积极的使用 Swap 分区,并且把内存上的数据及时的搬运到 Swap 空间里面。
在 CentOS 中,swappiness 的默认值是60。
通过以下命令可以看到:
cat /proc/sys/vm/swappiness
返回值60
我们可以调整 swappiness 的值到一个合适的参数,从而达到最优化使用 Swap 的目的。这里我们将其设为10。
使用 sysctl 命令:
sysctl vm.swappiness=10
但是这只是临时性的修改,在你重启系统后会恢复默认的60,要永久设置,还需要在 vim 中修改sysctl.conf:
vi /etc/sysctl.conf
在这个文档的最后加上这样一行:
# Search for the vm.swappiness setting.  Uncomment and change it as necessary.
vm.swappiness=10
输入:x,保存退出 vim 。
这样一来,Swap 分区重启后都会生效了。
参考链接:https://teddysun.com/321.html
-------------

Linux增加虚拟内存


Linux和Windows都有虚拟内存,其通常是作为内存不足情况下的替代品,避免内存不足情况下的服务异常。内存的读写速度远高于硬盘读写速度,所以当实际内存充足的情况下使用虚拟内存反而会降低系统的运行速度,频繁读写也会降低硬盘的使用寿命,所以不建议在大内存系统中设置虚拟内存
Linux的内存回收机制和Windows有些差异,Linux会尽可能的利用实际内存,只有在内存不足的情况下才会使用虚拟内存。而Windows的内存回收机制,则是“当应用程序不需要时释放其实际内存而转入虚拟内存”。因为二者系统整体相差很大,所以难以直接比较谁优谁劣,性能方面对于一般用户的日常使用而言,差别不大。

增加虚拟内存

在一些小内存VPS中增加虚拟内存往往是必要的,可以很大程度上避免因内存不足而杀死服务进程的情况。增加虚拟内存只能在KVM或者Xen架构的VPS中进行,通常设置的虚拟内存大小和实际内存大小一致或是其的两倍,常见的OpenVZ架构VPS因权限不足无法修改虚拟内存。
1.新建文件夹以存放swap文件
mkdir /swap
2.生成文件:将在/swap目录生成swapfile文件,大小为512MB。实际上为500MB,因为这里的512000单位为KB,换算单位为1024KB=1MB
dd if=/dev/zero of=/swap/swapfile bs=1024 count=512000
3.生成swap
mkswap /swap/swapfile
4.激活swap
swapon /swap/swapfile
5.开机自动挂载
echo "/swap/swapfile swap swap default 0 0" > /etc/fstab
对于懒人或者新手来说,可以直接使用下列这条合成的命令,一条命令就能够增加512MB的虚拟内存并添加开机启动。
mkdir /swap;dd if=/dev/zero of=/swap/swapfile bs=1024 count=512000;mkswap /swap/swapfile;swapon /swap/swapfile;echo "/swap/swapfile swap swap default 0 0" > /etc/fstab
-----------
相关帖子:http://briteming.blogspot.com/2012/01/xen-vpsswap.html
http://briteming.blogspot.com/2015/11/swap.html