Linux磁盘空间排查:从df到du
Linux磁盘空间排查:从df到du
2026-08-29 16:26
Linux 查看磁盘空间常用命令与排查方法
linux 查看磁盘空间
在 Linux 系统中,磁盘空间是服务器、开发环境、容器主机以及日常桌面使用中非常关键的资源。磁盘空间不足时,可能导致服务无法写入日志、数据库无法扩容、程序运行异常,甚至系统无法正常启动。因此,掌握 Linux 查看磁盘空间的方法非常重要。下面介绍常用命令和排查思路,帮助你快速了解磁盘使用情况。
1. 使用
df查看磁盘空间
df是 Linux 中查看磁盘空间最常用的命令,可以显示文件系统的容量、已用空间、可用空间以及挂载点。df -h其中
-h表示以人类可读格式显示,例如 GB、MB。示例输出含义:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 30G 18G 63% / /dev/sdb1 100G 60G 35G 64% /data主要字段说明:
Filesystem:文件系统或磁盘设备。Size:总容量。Used:已使用容量。Avail:可用容量。Use%:使用率。Mounted on:挂载目录。
如果只想查看某个目录所在分区,可以使用:
df -h /var/log
也可以查看 inode 使用情况:
df -i
有时候磁盘空间没有满,但 inode 用尽,也会导致无法创建新文件。
2. 使用 du 查看目录占用空间
df 主要用于查看分区整体情况,而 du 更适合查看具体目录占用了多少空间。
查看当前目录下各子目录大小:
du -sh *
其中:
-s:只显示汇总结果。-h:以 GB、MB 等单位显示。
查看当前目录总大小:
du -sh .
查看指定目录大小:
du -sh /var/log
如果想按大小排序,可以结合 sort 使用:
du -h --max-depth=1 / | sort -hr
该命令可以查看根目录下各一级目录的大小,并按容量从大到小排序,非常适合快速定位大目录。
3. 查看磁盘分区和挂载情况
使用 lsblk 可以查看块设备、分区和挂载点:
lsblk
如果想显示更多信息,可以使用:
lsblk -f
该命令可以查看文件系统类型、UUID、LABEL 以及挂载点,适合排查磁盘是否正确挂载。
查看挂载点信息:
findmnt
查看某个目录对应的挂载设备:
findmnt /data
4. 查找大文件
当磁盘空间不足时,除了查看目录大小,还需要定位具体的大文件。
查找 /var/log 下大于 500MB 的文件:
find /var/log -type f -size +500M
查找整个系统中大于 1GB 的文件:
find / -type f -size +1G 2>/dev/null
按大小排序查看较大的文件:
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -hr | head
常见占用空间较大的目录包括:
/var/log
/var/lib
/tmp
/home
/usr/local
/data
5. 排查日志文件占用
日志文件是 Linux 服务器中常见的空间占用来源。可以查看 /var/log 目录:
du -sh /var/log/*
如果某个日志文件非常大,例如:
/var/log/syslog
/var/log/messages
/var/log/nginx/access.log
不要直接使用 rm 删除正在被程序写入的日志文件,因为文件句柄可能仍然被占用,空间不会立即释放。
更推荐的方式是清空文件内容:
echo > /var/log/nginx/access.log
或者:
truncate -s 0 /var/log/nginx/access.log
6. 查看已删除但仍被占用的空间
有时执行删除命令后,磁盘空间仍然没有释放,可能是因为文件已经被删除,但仍有进程正在使用。
可以使用以下命令查看:
lsof | grep deleted
也可以查看某个挂载点:
lsof +L1 /
如果发现被删除但仍被占用的文件,可以重启对应服务,或者结束相关进程来释放空间。
7. 使用 ncdu 交互式查看磁盘空间
ncdu 是一个非常好用的磁盘空间分析工具,支持交互式浏览目录大小。
安装方式示例:
apt install ncdu
或:
yum install ncdu
使用:
ncdu /
进入后可以按目录层级浏览,使用方向键切换,按 d 删除文件或目录,按 q 退出。
8. 查看 Docker 占用空间
如果服务器运行 Docker,容器、镜像和卷也可能占用大量磁盘空间。
查看 Docker 总体磁盘使用:
docker system df
查看容器详细信息:
docker system df -v
清理未使用的资源:
docker system prune
如果需要清理更多资源,可以使用:
docker system prune -a
执行清理命令前需要谨慎,避免误删重要镜像或容器数据。
9. 查看 inode 使用情况
有些场景下,磁盘空间充足,但无法创建文件,可能是 inode 耗尽。常见于大量小文件场景,例如缓存目录、邮件队列、临时文件目录等。
查看 inode:
df -i
查找某个目录下文件数量较多的位置:
find /data -xdev -type f | wc -l
如果需要查看各目录文件数量,可以结合脚本或 find 命令进一步分析。
10. 常用命令组合
快速查看磁盘整体情况:
df -hT
查看根目录下各目录大小:
du -h --max-depth=1 / | sort -hr
查找大于 1GB 的文件:
find / -type f -size +1G 2>/dev/null
查看被删除但仍被占用的文件:
lsof | grep deleted
查看 Docker 空间占用:
docker system df
总结
Linux 查看磁盘空间的核心思路是:先用 df -h 查看分区整体使用情况,再用 du 定位具体占用较大的目录,最后通过 find、lsof、ncdu 等工具进一步查找大文件或异常占用。如果服务器使用 Docker,还需要关注镜像、容器和卷的占用。掌握这些命令后,可以快速判断磁盘空间不足的原因,并采取合理方式释放空间。