2017年2月23日星期四

CentOS如何手动添加/删除虚拟内存SWAP交换文件&分区?

原文链接:http://www.chenweiliang.com/cwl-158.html

CentOS如何手动添加/删除虚拟内存SWAP交换文件&分区?


Swap分区是什么?SWAP即交换区,SWAP空间的作用是,当Linux系统的物理内存不足时,便将物理内存部分空间释放,用于补充物理内存不足的情况,以让当前在运行的软件程序使用。


使用Swap交换分区的好处


SWAP的优化设置调整,对于Web服务器的性能应用非常重要,若物理内存不足,可以通过虚拟内存SWAP分区的的设置,有效节约LINUX系统升级的开支。


Swap分区大小应该设置多少才对?


根据实际系统内存的大小、所用的软件,来决定设置SWAP交换分区的大小。


CentOS、RHEL6的建议如下,请根据具体情形做合适的优化调整:


  • 4GB of RAM requires a minimum of 2GB of swap space 4GB以下内存建议2GB以上Swap空间

  • 4GB to 16GB RAM requires a minimum of 4GB of swap space 4GB-16GB内存建议4GB以上Swap空间

  • 16GB to 64GB of RAM requires a minimum of 8GB of swap space 16GB-64GB内存建议8GB以上Swap空间

  • 64GB to 256GB of RAM requires a minimum of 16GB of swap space 64GB-256GB内存建议16GB以上Swap空间

查看当前的内存和swap 空间大小(默认单位为k, -m 单位为M):
free -m


显示结果如下(示例):

total used free shared buffers cached

Mem: 498 347 151 0 101 137

-/+ buffers/cache: 108 390

Swap: 0 0 0


Swap为0表示没有,就要手动添加SWAP交换分区。


(注意事项:OPENVZ架构的VPS,不支持手动添加SWAP交换分区)


添加SWAP交换空间有2种:


  • 1、添加1个SWAP交换分区。

  • 2、添加1个SWAP交换文件。

推荐添加SWAP交换分区;要是所剩空闲空间不多,就添加交换文件。


查看SWAP信息(包括SWAP交换文件和分区的详细信息):


swapon -s

或者

cat /proc/swaps


(若无显示SWAP数值,表示尚未添加SWAP空间)


下面是如何创建SWAP文件的示例:


1、创建1GB的swap


dd if=/dev/zero of=/home/swap bs=1k count=1024k
mkswap /swapfile
swapon /swapfile
echo "/home/swap swap swap default 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf


2、创建2GB的swap


dd if=/dev/zero of=/home/swap bs=1k count=2048k
mkswap /home/swap
swapon /home/swap
echo "/home/swap swap swap default 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf


(完)


下面是另外详细参考说明:


1、使用dd命令创建一个swap交换文件


1G内存
dd if=/dev/zero of=/home/swap bs=1024 count=1024000


2G内存:
dd if=/dev/zero of=/home/swap bs=1k count=2048k


这样就建立一个/home/swap的文件,1024000大小为1G,2048k为2G。


2、制作为swap格式文件:
mkswap /home/swap


3、再用swapon命令把这个文件分区挂载swap分区
/sbin/swapon /home/swap


我们用free -m命令看一下,发现已经有交换文件了。
free -m


但是重启系统后,swap交换文件又变成0了。


4、为防止重启后swap交换文件变成0,要修改/etc/fstab文件


在 /etc/fstab 文件末尾(最后一行)加上:
/home/swap swap swap default 0 0


(这样就算重启系统,swap交换文件还是有值)


或直接使用以下命令,添加重启自动挂载配置命令:
echo "/home/swap swap swap default 0 0
" | sudo tee -a /etc/fstab


VPS在什么情况下才用到SWAP交换的空间?


也不是等所有的物理内存都消耗完毕之后,才去使用SWAP交换的空间,而是由swappiness 的参数值来决定。


[root@ ~]# cat /proc/sys/vm/swappiness

60

(该值默认值是60)
  • swappiness=0表示最大限度使用物理内存,然后才是SWAP交换的空间,

  • swappiness=100表示积极的使用SWAP交换的空间,并且把内存上的数据及时的搬运到swap空间里面。

怎样设置swappiness参数?


临时修改:


[root@ ~]# sysctl vm.swappiness=10

vm.swappiness = 10

[root@ ~]# cat /proc/sys/vm/swappiness

10

(此临时修改已生效,但若重启系统,会变回默认值60)

永久修改:


在/etc/sysctl.conf文件里添加如下参数:
vm.swappiness=10


或输入命令:
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf


保存,重启,就生效了。


删除SWAP交换文件


1、先停止swap分区


/sbin/swapoff /home/swap


2、删除swap分区文件


rm -rf /home/swap


3、删除自动挂载配置命令


vi /etc/fstab


这行删除:


/home/swap swap swap default 0 0


(这样就能把手动增加的交换文件删除了)


注意事项:


  • 1、只能使用root用户进行增加或删除swap的操作。

  • 2、安装VPS系统时所分配的swap分区好像无法删除。

  • 3、swap分区一般为内存的2倍。



欢迎转载《CentOS如何手动添加/删除虚拟内存SWAP交换文件&分区?
陈沩亮版权所有,转载请注明出处链接:http://www.chenweiliang.com/cwl-158.html


网站地址:http://www.chenweiliang.com/


您还在探索飞碟ufo之谜吗?不如现在就去下载《来自外星人的讯息》电子书了解et外星人人类的起源真相吧!

陈沩亮博客

没有评论:

发表评论