SWAP分区简介

Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

SWAP分区

Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

SWAP的功能与相应内核参数

Linux 将物理内存分为内存段的部分被称作"页面"。交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放用于页面的内存。物理内存和交换空间的总大小是可用的虚拟内存的总量。交换空间通常是一个磁盘分区(此分区在安装操作系统时,系统通常会默认划分出一段空间用于交换分区,默认将交换空间的大小设定为内存的1倍到2倍),也可以是一个文件。

内核参数中有一个vm.swappiness参数,此参数代表了内核对于交换空间的喜好(或厌恶)程度。Swappiness 可以有 0 到 100 的值,默认的大小通常是60,但也有的是30。设置这个参数为较低的值会减少内存的交换,从而提升一些系统上的响应度。如果内存较为充裕,则可以将vm.swappiness大小设定为30,如果内存较少,可以设定为60。如果将此数值调整的过大,可能损失内存本来能提供的性能,并增加磁盘IO消耗和CPU的消耗。

关于阿里云云主机SWAP功能

默认情况下,阿里云云主机的swap功能是没有启用的,原因当然是通过取消swap功能可以降低磁盘IO的占用率来让用户购买更多的内存、提高磁盘寿命和性能。

如何启动SWAP分区?

步骤如下:

1)查看当前系统是否启动swap分区,以下命令都可以查看

[root@Aliyun_server_v3 ~]# free -h

[root@Aliyun_server_v3 ~]# swapon -s

[root@Aliyun_server_v3 ~]# cat /proc/swaps

Linux服务器添加SWAP分区_云主机

2)如果没有启用SWAP分区功能,则新建一个专门的文件用于SWAP分区

[root@Aliyun_server_v3 ~]# dd if=/dev/zero of=/var/swap bs=1024 count=1000000

Linux服务器添加SWAP分区_云主机_02

创建一个名为/var/swap的1000MB大的SWAP(此步骤可能有点慢,需要等一下)。

PS:

of=/var/swap是swap文件的名称,可以自行修改,但是下文执行的命令中也要相对应的修改该名称。

bs=1024的1024是指每个扇区占用1024Byte,也就是1KB。一般不用修改。

count=1000000(四舍五入)指的是SWAP文件大小。计算方法如下:有1024个1024KB,1024*1024=1048576,如果要设置为512MB的话,那就是有512个1024KByte,512*1024=524288,那就把1000000改成524288!以此类推!

3)创建SWAP文件

[root@Aliyun_server_v3 ~]# mkswap /var/swap

Linux服务器添加SWAP分区_物理内存_03

4)激活SWAP文件

[root@Aliyun_server_v3 ~]# swapon /var/swapLinux服务器添加SWAP分区_物理内存_045)检查SWAP是否正确

[root@Aliyun_server_v3 ~]# swapon -s

Linux服务器添加SWAP分区_服务器_05

6)虽然SWAP区已成功启用,但是重启后又会消失,因此需要设置开机自动启用SWAP,执行以下命令

[root@Aliyun_server_v3 ~]# echo "/var/swap swap swap defaults 0 0" >> /etc/fstab

Linux服务器添加SWAP分区_服务器_06

Linux服务器添加SWAP分区_服务器_07

#SWAP分区增加成功~~~

如何关闭SWAP分区?

[root@Aliyun_server_v3 ~]# swapoff /var/swap

如果想删除swap分区,执行以下命令

[root@Aliyun_server_v3 ~]# rm -rf /var/swap

移除/etc/fstab的/var/swap,执行以下命令

[root@Aliyun_server_v3 ~]# sed -i '/\/var\/swap/d' /etc/fstab