IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux系统中swap分区的介绍以及处理swap分区被占满的情况 -> 正文阅读

[系统运维]linux系统中swap分区的介绍以及处理swap分区被占满的情况

在这里插入图片描述

linux分区一般来说是较为灵活的,一般还会单独分出一个交换分区(也就是swap分区),这个分区是用于在物理内存不够用的情况下来帮助承担存储程序所需内存的任务,现在很多的电脑或者服务器的内存都是较大的,所以一般swap分区都不会派上用场,但是做好交换分区的后备肯定也是必需的。

在前不久,我就碰上了服务器的swap分区被占满的情况,但是这时候检查物理内存的使用情况,却发现物理内存还有绝大部分未被使用,因此就引起了我的兴趣,本文将简要介绍swap分区,以及介绍如何处理物理内存还存在大量剩余但是swap分区却几乎被占满的情况。


swap分区是什么?

在Linux分区中,至少需要分的两个区就是根目录和swap分区,也就是在分区时需要在硬盘上分出一小部分的空间作为swap分区,这个分区之后将不再用于储存文件,而只是做为交换分区使用了。从这里我们知道swap分区若是分配太多空间则会使硬盘的储存空间变少,同时swap分区若太小又不能达到后备的效果。但是现在的电脑的内存都是较大的,一般情况下swap分区是不会被使用到的,因此现在电脑上的swap分区所占的大小也都普遍不大。这里有兴趣的可以查看red hat官方给出swap分区大小设置的建议:link

上面已经提到了swap分区是为了应付物理内存不足的情况,也就是其也是用于储存程序运行时所需数据的,但是其和内存不一样的地方在于内存中的数据直接被程序调用,是和CPU直接交流的数据,而swap分区中要储存的数据是程序调用时会使用到的,但是却暂不使用的数据。这时候内存就能够用于储存正在运行的程序或数据了。等到程序需要使用swap分区中保存的一些数据时,再将这些数据从swap分区中转移到内存中来。这样就完成了swap分区的工作。

要查看swap分区的大小或者swap分区的使用情况,使用top、htop、free命令都可以。

要查看swap分区被什么程序占用,网络上可以查到有很多现成的脚本可以使用,可以多查一下,但是都是需要root权限的,如:

for i in $(cd /proc;ls | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr

可以看到实际上在这个命令中实际上就是在读取/proc文件夹中的进程相关的文本文件所储存的内容,因此我们也可以自己写一个脚本来读取这些文件。

swap分区被占满后的处理方式

现阶段大家使用的电脑的内存一般都较大,因此一般是不会出现物理内存被占满的情况,所以应该也是不应该出现swap分区被占满的情况的,因此按道理来说swap分区被占满应该是不应该出现的,若是出现的话表明可能设置应该修改一下了。

上面提到swap分区在一般情况下不应该被调用,但实际上swap分区是否被使用和linux中的一个设置有关,即vm.swappiness参数,这个参数的大小(范围为0-100)对应着使用swap分区的倾向,值越大表示越倾向于使用swap分区,而值越小则表示越倾向于不使用swap分区。ubuntu中默认设置的这个值为60,大致表示使用物理内存大于1-60%=40%后就开始使用swap分区,在这种情况下swap分区就倾向于被使用,因此也很可能会出现快被占满的情况(我碰到的情况就是这样)。

上面解释了是因为vm.swappiness这个参数,因此只需要修改这个参数就能够改善情况了,一般来说改为10就可以了,临时修改可以使用:

sysctl vm.swappiness=10

临时修改的话,电脑重启后又会恢复原来的默认参数值。因此可以到文件中修改此值,可以使用下面的命令进行修改:

echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
# 上一句为修改
# 第二句为启用修改后的设置

但是即使修改了,未重启的话电脑已被占据的swap分区也并未被释放,这时候可以先将交换分区关闭再打开,这样就能够释放交换分区的内存了,之后也应该不会出现swap分区几乎被占满的情况了。但是关闭交换分区时需要注意是否有一些程序正在使用交换分区,以防数据或任务被破坏。

这里将几个命令列在这:

swapon -s
cat /proc/swaps

上面两个命令用于查看swap分区的使用情况和挂载点。结果:
在这里插入图片描述
从结果中获取到挂载点/dev/dm-1,下一步就可以通过命令关闭这个挂载点上的swap分区

swapoff /dev/dm-1
# 关闭是需要消耗一定时间的

完全关闭后再打开即可:

swapon /dev/dm-1
# 关闭是需要消耗一定时间的

这样就解决了swap分区被占满的问题了。

参考:https://juejin.cn/post/6844904081677352968
参考:https://www.cnblogs.com/fjping0606/p/10598654.html

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 23:07:26  更:2021-07-22 23:07:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:48:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码