Linux SWAP交换分区应该设置多大?

Linux SWAP交换分区,就是我们课本说讲过的虚拟内存的概念。

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

以前几乎所有Linux 系统管理的书上都推荐设置交换分区大小为内存的2倍。现在的服务器动不动就是 16GB/32GB甚至256GB 内存,难道相应的交换分区也要扩大到 32GB/64GB/512GB?

Redhat官方的文档中关于swap分区大小设置的建议

物理内存 建议的交换空间大小 如果开启休眠功能建议的交换空间大小
⩽ 2GB 内存的2倍 内存的3倍
> 2GB – 8GB 等于内存大小 内存的2倍
> 8GB – 64GB 至少4G 内存的1.5倍
> 64GB 至少4G 不建议使用休眠

因此,一般来说可以按照如下规则设置swap大小:

4G以内的物理内存,SWAP 设置为内存的2倍,不超过4G。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。

系统在什么情况下才会使用SWAP?
实际上,并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,什么时候使用是由swappiness 参数值控制。

cat /proc/sys/vm/swappiness

该值在centos 7上默认值是30,在Centos 6上是60,可以看出新版本的linux已经在根据内存大小趋势做出一定的调整。

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。特别是对于性能要求较高的数据库服务器,要求全部使用内存。

如何修改swappiness参数?
临时性修改:

sysctl vm.swappiness=10
cat /proc/sys/vm/swappiness

这里我们的修改已经生效,但是如果我们重启了系统,又会变成系统默认值.

永久修改:
在/etc/sysctl.conf 文件里添加如下参数:

vm.swappiness=10

激活设置:

sysctl -p

————————————————
版权声明:本文为CSDN博主「乾乾君子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sirchenhua/article/details/87861709

添加swap空间

df –h  查看那个磁盘空间比较大

在比较大的磁盘下建立swapfile

cd /opt/ 

mkdir swap

cd swap

dd if=/dev/zero of=swapfile bs=1024 count=2048000

if:输入的文件或设备名称

of:输出的文件名称或设备名称

bs:设置每块大小为1024字节

count:设置一共有2048000块

结果:创建2G名为swapfile的文件

Mkswap swapfile 创建swapfile文件

Swapon  启用swapfile

如何关闭swap分区?

第一步 关闭swap分区

swapoff -a

第二步修改配置文件 vi /etc/fstab

注释掉这一行 /mnt/swap swap swap defaults 0 0 

第三步确认swap已经关闭
free -m

 若swap行都显示 0 则表示关闭成功

第四步调整 swappiness 参数

sysctl vm.swappiness=0

vim /etc/sysctl.conf # 永久生效
#修改 vm.swappiness 的修改为 0
vm.swappiness=0
sysctl -p # 使配置生效

猜你喜欢

转载自blog.csdn.net/u014644574/article/details/118671809