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倍。
希望陈沩亮博客( https://www.chenweiliang.com/ ) 分享的《CentOS如何手动添加/删除虚拟内存SWAP交换文件&分区?》,对您有帮助。
欢迎分享本文链接:https://www.chenweiliang.com/cwl-158.html
喜欢就分享和按赞!您的分享和按赞,是我们持续的动力!