Linux磁盘空间异常爆满的排查和处理方式

 更新时间:2024年12月18日 14:34:10   作者:忍冬行者  
在服务器运维过程中,磁盘空间不足会导致业务异常,定位问题时,可以使用df-Hl、du-hs、du-d参数或find命令查看空间,删除备份文件和日志信息后,空间未释放的原因是文件被打开,进程仍在使用

问题现象

在服务器运维过程中,我们时常会遇到这样的情况,服务器磁盘空间使用率达到100%,业务出现异常。

问题定位

1.登录服务器,通过df -Hl查看

[root@k8s-master1 ~]# df -Hl
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 8.4G     0  8.4G    0% /dev
tmpfs                    8.5G     0  8.5G    0% /dev/shm
tmpfs                    8.5G  774M  7.7G   10% /run
tmpfs                    8.5G     0  8.5G    0% /sys/fs/cgroup
/dev/mapper/centos-root  136G   68G   68G   51% /
/dev/sda1                1.1G  238M  827M   23% /boot

2.查找占用空间大的目录或文件

笨方法:在根目录下,通过du -hs命令,列出各目录所占空间大小

[root@k8s-master1 /]# du -hs *
0	bin
194M	boot
1012K	core.580
0	dev
37M	etc
21M	home
7.7G	kuboard-data
0	lib
0	lib64
0	media
0	mnt
135M	opt
du: 无法访问"proc/21212/task/21212/fd/3": 没有那个文件或目录
du: 无法访问"proc/21212/task/21212/fdinfo/3": 没有那个文件或目录
du: 无法访问"proc/21212/fd/3": 没有那个文件或目录
du: 无法访问"proc/21212/fdinfo/3": 没有那个文件或目录
0	proc
1.6G	root
738M	run
0	sbin
0	src
0	srv
0	sys
6.2M	tmp
3.2G	usr
51G	var

相对高效一点的方法是通过du的-d参数,或--max-depth,设置查询的目录深度

du -h -d 2|grep [GT] |sort -nr  
du -h --max-depth=2|grep [GT] |sort -nr  
#通过这样的方式,可以搜出以G或者T为单位的占用磁盘空间的大目录,并排序

[root@k8s-master1 /]# du -h -d 1 /
194M	/boot
0	/dev
du: 无法访问"/proc/24731/task/24731/fd/3": 没有那个文件或目录
du: 无法访问"/proc/24731/task/24731/fdinfo/3": 没有那个文件或目录
du: 无法访问"/proc/24731/fd/4": 没有那个文件或目录
du: 无法访问"/proc/24731/fdinfo/4": 没有那个文件或目录
0	/proc
738M	/run
0	/sys
37M	/etc
1.6G	/root
51G	/var
6.2M	/tmp
3.2G	/usr
21M	/home
0	/media
0	/mnt
135M	/opt
0	/srv
0	/src
7.7G	/kuboard-data
64G	/

效率高的方法,使用find进行查找,比使用du效率要高

find / -type f -size +1G -exec du -h {} \;  #查找文件大于10G的文件

遇到问题

操作删除了一些备份文件和日志信息后,查看空间仍然不足,发现删除的日志,空间并没有释放。

未释放磁盘空间的原因:

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink),然而假设文件是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。而我删除的是nginx的访问日志文件,在删除的时候该文件正在被使用。

处理办法

[root@local ~]# lsof |grep deleted
nginx      4399      root   38w      REG              253,0   19304448   10835682 /var/nginx/logs/t-access.log (deleted)
nginx      4399      root   39w      REG              253,0    3502080   10835684 /var/nginx/logs/t-error.log (deleted)
nginx      4401    nobody   38w      REG              253,0   19304448   10835682 /var/nginx/logs/t-access.log (deleted)
nginx      4401    nobody   39w      REG              253,0    3502080   10835684 /var/nginx/logs/t-error.log (deleted)

从输出的结果可以看到 /var/nginx/logs/t-access.log 和 t-error.log 还在被使用中,所以导致未释放空间。

那么如何让进程释放呢?

  • 方法1:直接 kill 掉相应的进程,或者停掉使用这个文件的应用,让操作系统自己主动回收磁盘空间。
  • 方法2:以后清理正在被读写的大日志文件时,直接使用 echo "" > xxx.log 命令,即直接将文件置空,并不影响服务的使用,文件大小也被控制下来,磁盘空间也释放了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • cloudstack下libvirtd服务无响应问题

    cloudstack下libvirtd服务无响应问题

    这篇文章主要介绍了cloudstack下libvirtd服务无响应问题的相关资料,需要的朋友可以参考下
    2016-10-10
  • ubuntu20.04 LTS系统默认源sources.list文件的修改

    ubuntu20.04 LTS系统默认源sources.list文件的修改

    这篇文章主要介绍了ubuntu20.04 LTS系统默认源sources.list文件的修改,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Linux下监视NVIDIA的GPU使用情况详解

    Linux下监视NVIDIA的GPU使用情况详解

    这篇文章主要介绍了Linux下监视NVIDIA的GPU使用情况详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 解决CentOS 7升级Python到3.6.6后yum出错问题总结

    解决CentOS 7升级Python到3.6.6后yum出错问题总结

    这篇文章主要介绍了CentOS 7升级Python到3.6.6后yum出错问题解决总结,本文给大家介绍的非常详细具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 详解CentOS设置程序开机自启动的方法

    详解CentOS设置程序开机自启动的方法

    本篇文章主要介绍CentOS设置程序开机自启动的方法 ,在CentOS系统下,主要有两种方法设置自己安装的程序开机启动。有兴趣的可以了解一下,
    2016-12-12
  • Ubuntu14.04安装、配置与卸载QT5的步骤详解

    Ubuntu14.04安装、配置与卸载QT5的步骤详解

    这篇文章主要介绍了Ubuntu14.04安装、配置与卸载QT5详细步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法

    linux输入yum后提示: -bash: /usr/bin/yum: No such file or director

    在本篇文章里小编给大家整理的是关于linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法,有需要的朋友们参考下。
    2019-11-11
  • 关于linux权限s权限和t权限详解

    关于linux权限s权限和t权限详解

    本文介绍了linux系统内的2个特殊权限s权限和t权限,简单易懂,大家可以详细看看
    2018-03-03
  • Linux中的缓冲区和文件系统详解

    Linux中的缓冲区和文件系统详解

    这篇文章主要介绍了Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Apache POI简介及应用场景

    Apache POI简介及应用场景

    Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作,本文给大家介绍Apache POI简介,感兴趣的朋友一起看看吧
    2023-11-11

最新评论