在CentOS系统中,有效地管理和监控存储使用情况是系统管理员的一项核心职责,无论是排查磁盘空间不足的问题,还是规划未来的存储扩容,掌握查看存储使用的命令和技巧都至关重要,本文将系统性地介绍几种在CentOS中查看存储使用情况的方法,从宏观的文件系统概览到微观的文件与目录分析,帮助您全面掌握系统的存储状态。

使用 df 命令查看文件系统使用情况
df(disk free)命令是查看磁盘分区使用情况最基础也是最常用的工具,它能快速列出每个已挂载文件系统的总容量、已用空间、可用空间以及使用百分比。
为了获得更直观和易读的输出,我们通常结合 -h(human-readable)和 -T(print file system type)参数使用。
df -hT
执行上述命令后,您会看到类似以下的输出:
| 文件系统 | 类型 | 容量 | 已用 | 可用 | 已用% | 挂载点 |
|---|---|---|---|---|---|---|
| /dev/mapper/cl-root | xfs | 50G | 15G | 36G | 30% | |
| /dev/sda1 | xfs | 1014M | 179M | 836M | 18% | /boot |
| tmpfs | tmpfs | 9G | 0 | 9G | 0% | /dev/shm |
这个表格清晰地展示了:
- 文件系统: 磁盘分区的逻辑名称或设备路径。
- 类型: 文件系统类型,如XFS、EXT4或TMPFS等。
- 容量: 分区的总大小。
- 已用: 已被占用的空间。
- 可用: 剩余可用的空间。
- 已用%: 空间使用百分比,这是判断分区是否即将满的关键指标。
- 挂载点: 该分区挂载到系统目录树中的位置。
通过 df -hT,您可以迅速定位到哪个分区( 根分区或 /home)的使用率过高,从而进行下一步的深入分析。
使用 du 命令分析目录和文件占用
当您通过 df 发现某个分区空间紧张时,下一步就是找出是哪些目录或文件占用了大量空间,这时,du(disk usage)命令就派上了用场。
du 命令可以递归地计算指定目录下所有文件和子目录的磁盘使用量,为了快速定位大体积目录,常用的参数组合是 -h(易读格式)、-s(汇总显示)和 --max-depth(指定递归深度)。

-
查看根目录下一级子目录的大小:
du -sh --max-depth=1 /
这条命令会显示 根目录下每个一级子目录(如
/usr,/var,/home等)的总大小,而不会深入到更深层次,让您对空间分布有一个宏观的了解。 -
查找特定目录下最大的子目录: 假设我们发现
/var目录占用空间较大,可以进一步分析:du -sh /var/* | sort -rh | head -n 10
du -sh /var/*:计算/var目录下所有直接子项的大小并汇总。sort -rh:将结果按数值大小(-n)进行逆序(-r)排序。head -n 10:只显示排序后的前10项,即占用空间最大的10个目录或文件。
这个命令组合是定位空间占用“元凶”的利器,能够帮助您快速锁定问题目录,例如通常是 /var/log 或 /var/cache。
结合 lsblk 与 ncdu 进行高级查看
除了 df 和 du,还有一些工具能提供更丰富的视图或更友好的交互体验。
-
lsblk(List Block Devices):此命令以树状结构展示块设备(磁盘、分区等)、它们的挂载点以及之间的关系,非常直观。lsblk
输出会清晰地显示磁盘、LVM卷组、逻辑卷以及它们各自的挂载点,有助于理解物理存储与逻辑存储之间的映射关系。

-
ncdu(NCurses Disk Usage):这是一个功能强大的交互式磁盘使用分析工具,它需要单独安装(sudo yum install ncdu或sudo dnf install ncdu),安装后,只需运行ncdu [目录路径],它会快速扫描并进入一个基于文本的图形界面,您可以使用方向键浏览,按 Enter 进入子目录,按n按文件名排序,按s按大小排序,极大地提升了大目录分析的效率。
相关问答 (FAQs)
问题1:为什么 df 命令显示的已用空间,与我用 du 命令统计出来的空间不一致,且 df 显示的更多?
解答: 这是一个常见现象,主要由以下几个原因造成:
- 已删除但仍在被进程使用的文件:当一个文件被删除,但仍有活跃的进程持有其文件句柄时,
du命令不会统计这个文件(因为它在目录树中已不可见),但内核并未释放其占用的磁盘空间,df仍会将其计算在内,您可以使用lsof | grep deleted命令来查找这类文件,重启对应服务或进程后空间即可释放。 - 文件系统保留空间:Linux文件系统(如ext4, XFS)默认会为root用户保留一部分空间(通常是5%),以防止系统因普通用户占满所有空间而无法登录和管理,这部分空间
df会视为已用,但du不会统计。 - 非文件数据的块:例如inode表、文件系统的日志等元数据也会占用空间,
du通常不直接计算这些。
问题2:如何在整个系统中快速找到超过某个大小的文件(例如大于500MB)?
解答: 您可以结合使用 find 和 ls 命令来完成这个任务,以下命令可以查找根目录下所有大于500MB的普通文件,并按大小排序显示前10个:
find / -type f -size +500M -exec ls -lhS {} + 2>/dev/null | head -n 10
命令解析:
find / -type f -size +500M:从根目录开始查找类型为普通文件(f)且大小超过500MB的文件。-exec ls -lhS {} +:对找到的文件列表执行ls命令,-l显示详细信息,-h以易读格式显示大小,-S按文件大小降序排序。2>/dev/null:将查找过程中因权限不足产生的错误信息重定向到/dev/null,保持输出干净。head -n 10:只显示排序结果的前10行。