欢迎光临
我们一直在努力

Linux Swap交换分区:创建分区、开机启动、扩容分区、关闭分区等

最近发现2H4G的小鸡内存不够用了,内存和Swap分区双双爆满,奈何囊中羞涩无法从升级硬件入手,只能通过扩充Swap虚拟内存解决了。

什么是Swap分区呢?

Swap分区,即交换区,系统在物理内存(这里指运行内存)不够时,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中,从而解决内存容量不足的情况。

查看 Swap分区

首先查看一下系统分区情况

free -m #查看Swap分区使用情况

如下图所示,Mem表示物理内存大小(RAM),Swap则表示交换分区的大小:

图片位置

如果我们VPS本身的物理内存不够用,并且Swap分区设置的又太小,那么就会出现Linux Swap占用很高,甚至Swap分区全部占满的情况。
根据Linux内存的大小不同,需要按照对应关系设置Swap分区的大小,参考如下:

  • 内存 <= 4GB:Swap 建议 4GB
  • 内存 4~16GB:Swap 建议 8GB
  • 内存 16G~64GGB:Swap 建议 16GB
  • 内存 64G~256GB:Swap 建议 32GB

上述仅作为物理内存不够用参考建议,大家可以根据自己的情况按需调整。

关闭/删除 Swap分区

如上图所示,物理内存(Mem)和交换分区(Swap)都已经不够用了,咱们就需要对交换分区(Swap)进行扩容。第一步,需要关闭/删除当前交换分区(Swap)

swapon -s #查看Swap分区路径
swapoff -a #关闭Swap分区
rm -rf /var/swap #删除Swap分区

创建新的Swap分区

依次执行下列代码:

dd if=/dev/zero of=/var/swapfile bs=1M count=4096
#其中/var/swapfile是文件位置,bs=1M 代表增加的模块大小是1M,count=4096 代表模块个数,bs*count就是文件大小,执行时间较长,且根据文件大小而定,耐心等待 ...
mkswap /var/swapfile #格式化为Swap分区文件
swapon /var/swapfile #启用Swap分区

新的Swap分区创建好了,接下来检查一下新的Swap分区是否启用
free -m #查看Swap分区使用情况

图片位置

如上图所示,4GB的Swap分区就创建成功了。

但是到这一步,只是临时swap,需要再配置开机启动(fstab)使swap文件永久有效

vi /etc/fstab #编辑fstab文件
# /swap none swap sw 0 0 #注释掉之前的Swap开机启动项
/var/swapfile swap swap defaults 0 0 #在新行插入

或者直接执行

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

更改Swap依赖度(swappiness)

查看依赖度

cat /proc/sys/vm/swappiness #查看依赖度

swappiness值的范围为0-100,值越高代表对swap依赖程度越高,但是swap是基于文件储存的缓存交换机制,所以效率明显低于物理内存,swappiness值过高的情况下容易导致物理内存远远没有耗尽便开始使用swap;一般来说swappiness值可以设置为10-60之间,SSD硬盘可以设置的高一点

修改依赖度

sysctl vm.swappiness=30 #临时修改为30,重启后会失效
echo "vm.swappiness = 30" >> /etc/sysctl.conf #修改为30,永久有效

如此,Swap就优化完成了。

赞(0) 赏口饭吃
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Linux Swap交换分区:创建分区、开机启动、扩容分区、关闭分区等》
文章链接:https://vckers.com/notes/165.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微客网络

真的勇士永不止步

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏