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 定位具体占用较大的目录,最后通过 findlsofncdu 等工具进一步查找大文件或异常占用。如果服务器使用 Docker,还需要关注镜像、容器和卷的占用。掌握这些命令后,可以快速判断磁盘空间不足的原因,并采取合理方式释放空间。


标签: df du 磁盘空间