Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到 Swap 分区中,等到那些程序要运行时,再从 Swap 分区中恢复保存的数据到内存中;一种是将文件作为 Swap 分区,一种是将分区作为 Swap 分区,将分区作为 Swap 分区相比于文件更优。
RHEL 6.8 的建议如下,当然还是需要根据实际情况进行适当调整:
RHEL 7.0 的建议如下:
推荐在安装系统的时候直接划分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配置文件,重启后依旧有效
添加一个2048M的新Swap 分区:
第一步:创建文件
dd if=/dev/zero of=/Swapfile bs=2048 count=1024k
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
Tag标签:「swap 交换分区」更新时间:「2023-10-27 14:18:16」阅读次数:「836」