swap 分区

作者:张首富
时间:2020-06-18
w x:y18163201

什么是 swap 分区

Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率 。

交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

以上解释来自于百度百科

什么时候才会使用 swap 分区

其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。

这个参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法。

修改这个权重

echo 10 > /proc/sys/vm/swappiness
sysctl vm.swappiness=10 #临时修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效

swap分区设置多大合适

关于这个问题,应该说只能有一个统一的参考标准,具体还应该根据系统实际情况和内存的负荷综合考虑,像ORACLE的官方文档就推荐如下设置,这个是根据物理内存来做参考的。

RAM Swap Space
Up to 512 MB 2 times the size of RAM
Between 1024 MB and 2048 MB 1.5 times the size of RAM
Between 2049 MB and 8192 MB Equal to the size of RAM
More than 8192 MB 0.75 times the size of RAM

如何创建 swap 分区

利用剩余磁盘创建 分区来生成swap 分区

1,首先利用 fdisk 方式创建一个分区出来

2,然后使用 mkswap 方式来格式化分区

mkswap /dev/sdb2

3,启动交换分区

swapon /dev/sdb2

4,设置成开机自动启动

echo "/dev/sdb2 swap swap defaults 0 0" >> /etc/fstab

利用剩余空间创建 swap 分区

1,创建一个目录,(可省略,但是不建议)

mkdir /swapdir && cd /swapdir

2,使用 dd 命令创建大小合适的的交换文件:

dd if=/dev/zero of=/swapfile bs=1M kcount=1000
创建一个名为swapfile 的 1G 的交换文件

3,格式化此文件

mkswap /swapdir/swapfile

4,启用交换分区

swapon /swapdir/swapfile

5,设置开机自启动

echo "/swapdir/swapfile swap swap defaults 0 0" >> /etc/fstab

如何扩容 swap分区

只需要按照上面步骤创建 swap 分区,挂载上去之后就自动扩容上去了

如何缩减 swap 分区

1,用下面命令查看下当前 swap 分区上面挂载了那些磁盘

swapon -s / cat /proc/swaps

2,关闭对应的 swap 分区

swapoff /dev/sdb2