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

  • A+

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倍。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: