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

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

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

使用Swap交换分区的好处

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

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

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

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

查看当前的内存和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种:

推荐添加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 的参数值来决定。

[[email protected] ~]#
cat /proc/sys/vm/swappiness

60

(该值默认值是60)

怎样设置swappiness参数?

临时修改:

[[email protected] ~]#
sysctl vm.swappiness=10

vm.swappiness = 10

[[email protected] ~]#
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

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

注意事项:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注