当前位置:首页>Linux>Linux 磁盘占满排查教程

Linux 磁盘占满排查教程

  • 2026-09-09 09:55:00
Linux 磁盘占满排查教程

Linux 磁盘占满排查教程

一、快速诊断流程

1. 查看整体磁盘使用情况

# 查看所有磁盘使用情况
df -h

# 查看inode使用情况(有时文件数占满但空间未满)
df -i

# 查看特定目录所在磁盘
df -h /path/to/directory

2. 定位占用大的目录

# 从根目录开始逐层查找(最常用)
du -sh /* 2>/dev/null

# 查看当前目录下各子目录大小
du -sh ./* 2>/dev/null | sort-rh

# 找出前10个最大的目录/文件
du -a / 2>/dev/null | sort-n-r | head -n10

3. 使用ncdu工具(推荐)

# 安装ncdu
sudo apt install ncdu    # Debian/Ubuntu
sudo yum install ncdu    # CentOS/RHEL

# 使用ncdu扫描
ncdu /                   # 扫描根目录
ncdu /var/log            # 扫描特定目录

二、详细排查步骤

步骤1:检查常用易满目录

# 1. 日志目录
du -sh /var/log/*
ls-lh /var/log/*.log    # 查看日志文件

# 2. 临时文件
du -sh /tmp/*
du -sh /var/tmp/*

# 3. 缓存目录
du -sh /var/cache/*
du -sh ~/.cache/*

# 4. Docker相关(如果使用)
docker system df          # Docker磁盘使用
du -sh /var/lib/docker/*

步骤2:查找大文件

# 查找大于100MB的文件
find / -type f -size+100M 2>/dev/null | xargs ls-lh

# 查找最近修改的大文件(最近1天)
find / -type f -size+50M -mtime-12>/dev/null

# 查找并排序显示最大的20个文件
find / -type f -exec du -h {} +2>/dev/null | sort-rh | head -n20

步骤3:检查特定服务日志

# 查看系统日志
journalctl --disk-usage
sudo journalctl --vacuum-size=200M  # 清理日志

# 检查Apache/Nginx日志
du -sh /var/log/apache2/*
du -sh /var/log/nginx/*

# 检查MySQL日志(如果使用)
du -sh /var/lib/mysql/*

步骤4:检查已删除但未释放的文件

# 查找被进程占用的已删除文件
lsof | grep deleted

# 查看这些文件的大小和进程
lsof -n | grep deleted | awk'{print $2, $4, $9}' | sort-n

# 重启相关进程或系统来释放空间

三、常见问题及解决方案

场景1:/var/log 日志文件过大

# 清理旧日志
sudofind /var/log -type f -name"*.log"-mtime+30-delete

# 清空大日志文件(不删除文件)
sudo truncate -s0 /var/log/big-log.log

# 配置日志轮转
sudo logrotate -f /etc/logrotate.conf

场景2:/tmp 目录占满

# 清理/tmp目录(注意:可能影响运行中的程序)
sudorm-rf /tmp/*

# 更安全的方式:重启后自动清理
# 检查 /etc/default/rcS 中的 TMPTIME 设置

场景3:Docker占用过大

# 清理Docker资源
docker system prune -a# 清理所有未使用的资源
docker volume prune        # 清理未使用的卷

# 查看Docker磁盘使用详情
docker system df -v

场景4:邮件队列过大(/var/spool/postfix)

# 查看邮件队列
mailq
postqueue -p

# 清空邮件队列
postsuper -d ALL

四、实用技巧

1.快速查看总使用量:

du -sh /* 2>/dev/null | grep G  # 只显示GB级目录

2.交互式浏览目录大小:

# 使用tree查看(如果已安装)
tree -L2-d-h /var

3.检查软链接指向:

ls-la /path/to/link

4.特殊文件系统检查:

# 检查/proc和/sys(通常无需清理)
mount | grep-E'(proc|sys|tmpfs)'

故障排除要点:

  1. df和du结果不一致:通常是因为有文件被删除但仍有进程占用

  2. inode用尽:使用 df -i 检查,可能有大量小文件

  3. 只读文件系统:可能是磁盘错误导致,需要 fsck 检查

最新文章

随机文章