分类: Linux

Linux手动创建Swap交换分区及Swap说明

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

RHEL 6.8 的建议如下,当然还是需要根据实际情况进行适当调整:

6.8swap.png

RHEL 7.0 的建议如下:
7.0swap.png

推荐在安装系统的时候直接划分swap分区,系统并不是在消耗了全部的物理内存后才使用 Swap 分区,我们可以通过设置 swappiness 参数进行控制。

该值默认为 60:

cat /proc/sys/vm/swappiness
swappiness 的取值在 0-100 之间。0 时表示最大限度使用物理内存之后才使用 Swap 分区;100 时表示及时搬运内存里的数据到 Swap 分区。

这个值并不是越高越好, 因为 Linux 会最大程度地使用内存,将一些数据保存在内存中,系统下一次调用数据就不需要从文件读取而是直接从内存中获得,从而提高系统的性能,但是如果每次都把内存中的数据保存到 Swap 分区,读取就相当于从文件中读取一样,反而会有性能损失。所以这个值反而小一些比较好。

如何调整 swappiness?
调整 swappiness 有两种方法,一种是临时的,重启后失效,一种是永久的。

这里将swappiness的值设置为10

sysctl vm.swappiness=10

临时把swappiness设置为10,重启后失效

echo 'vm.swappiness=10' >> /etc/sysctl.conf

把swappiness=10写入sysctl.conf配置文件,重启后依旧有效

添加一个512M的新Swap 分区:

第一步:创建文件
dd if=/dev/zero of=/Swapfile bs=1024 count=512k

if=input file,这里表示往文件中写0

of=output file,这是在根目录下创建Swapfile文件

bs=bytes,设置每个块大小

count表示有多少个这种块

新建的Swap文件大小为bs*count的大小

第二步:格式化并启用 Swap 文件
mkswap /Swapfile

格式化根目录下的Swapfile文件

swapon /Swapfile

启用根目录下的Swapfile文件

执行上面的 shell 后,可以再使用下面的命令查看 Swap 分区是否已被激活

swapon -s

当返回的信息有Swapfile表示成功

当Swap不为0时表示成功

free -m
查看内存及swap

第三步:开机自动挂载 Swap 文件

执行完上诉步骤后 Swap 文件并不会开机自动挂载,接下来要编辑文件 /etc/fstab

使用 vim /etc/fstab 在最下面一行添加 /Swapfile swap swap defaults 0 0,与上面的对齐,最后:wq保存并退出。

echo '/Swapfile swap swap defaults 0 0' >> /etc/fstab

参考:
https://access.redhat.com/documentation/zh-TW/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-diskpartrecommend-x86.html
https://access.redhat.com/documentation/zh-TW/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-disk-partitioning-setup-x86.html#sect-recommended-partitioning-scheme-x86

相关文章

发表新评论