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 命令,即直接将文件置空,并不影响服务的使用,文件大小也被控制下来,磁盘空间也释放了

总结

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

相关文章

  • Linux安装杀毒工具ClamAV,并配置邮件告警

    Linux安装杀毒工具ClamAV,并配置邮件告警

    ClamAV是一款免费的开源杀毒工具,它可以自动升级病毒库,支持多种文件格式扫描,ClamAV有两个命令:clamscan和clamdscan,分别适用于不同的场景,安装和使用ClamAV需要更新病毒库,并进行扫描和删除病毒的操作,配置定时扫描和邮件告警可以帮助实现自动化监控和处理
    2025-04-04
  • Red Hat Linux 安全设置方法

    Red Hat Linux 安全设置方法

    本文从各方面阐述了Red Hat Linux的安全配置方法,如果您使用的是Windows Server 2003服务器的话,请看Windows Server 2003 系统配置方案。
    2009-10-10
  • Linux vi\vim编译器详解

    Linux vi\vim编译器详解

    文章介绍了Vim作为vi的增强版,具备语法高亮、shell编辑等功能,详解其三种模式(命令、输入、底线命令)及常用操作,如保存、退出、撤销等,并简述Linux中root用户及su/sudo命令的使用方法
    2025-07-07
  • htaccess 将所有请求重定向到某个URL地址的规则

    htaccess 将所有请求重定向到某个URL地址的规则

    htaccess 将所有请求重定向到某个URL地址的规则,需要的朋友可以参考下。
    2011-04-04
  • linux下安装openssl、swoole等扩展的详细步骤

    linux下安装openssl、swoole等扩展的详细步骤

    本文给大家详细介绍了linux下安装openssl、swoole等扩展的,本文涉及到编译安装和yum安装的知识点,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2016-10-10
  • Linux操作系统安装图文配置教程详细版

    Linux操作系统安装图文配置教程详细版

    这篇文章主要为大家详细介绍了Linux操作系统安装图文配置教程,帮助大家顺利的安装Linux操作系统,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • ubuntu如何添加环境变量

    ubuntu如何添加环境变量

    本文介绍了在Ubuntu系统中添加环境变量的方法和位置,主要位置有:/etc/profile、/etc/environment、/etc/bashrc、~/.profile、~/.bashrc,修改方法有直接修改文件和使环境变量生效两种,总结了不同位置的作用域和永久性
    2026-03-03
  • Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题解决办法

    Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题解决办法

    在Ubuntu系统上使用sudo apt update命令更新时可能遇到“无法解析域名cn.archive.ubuntu.com”的问题,这通常是因为cn.archive.ubuntu.com的镜像资源不稳定,为解决此问题,可以更换为稳定性好、速度快的镜像源,需要的朋友可以参考下
    2024-11-11
  • Ubuntu 16.04/18.04 安装Pycharm及Ipython的教程

    Ubuntu 16.04/18.04 安装Pycharm及Ipython的教程

    这篇文章主要介绍了Ubuntu 16.04/18.04 安装Pycharm及Ipython的教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 教你一步一步在linux中正确的安装Xcache加速php

    教你一步一步在linux中正确的安装Xcache加速php

    这篇文章主要介绍了教你一步一步在linux中正确的安装Xcache加速php,需要的朋友可以参考下
    2017-04-04

最新评论