在CentOS系统中,有效地管理和监控硬盘空间是系统维护的核心任务之一,无论是为了规划存储资源、排查性能问题,还是仅仅为了了解当前系统的使用状况,掌握查看硬盘大小的方法都至关重要,本文将详细介绍几种在CentOS中查看硬盘大小和空间使用情况的常用命令,从宏观的文件系统概览到具体的分区详情,帮助您全面了解系统存储状态。

使用 df 命令查看文件系统空间
df(Disk Free)命令是最常用、最直接的查看文件系统磁盘空间使用情况的工具,它能显示每个已挂载文件系统的总容量、已用空间、可用空间以及使用百分比。
默认情况下,df 命令会以1KB为单位显示信息,对于现代人来说可读性较差,我们通常会结合 -h(human-readable)参数使用,它会以K(KB)、M(MB)、G(GB)等更易读的单位来展示数据。
df -h
执行上述命令后,您会看到类似以下的输出:
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        50G   15G   33G  32% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  8.6M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1      1014M  150M  865M  15% /boot
tmpfs           799M     0  799M   0% /run/user/0
输出字段解释:
- Filesystem: 文件系统的设备名称,如 
/dev/sda3。 - Size: 该文件系统的总大小。
 - Used: 已使用的空间大小。
 - Avail: 可用的空间大小。
 - Use%: 磁盘使用率百分比。
 - Mounted on: 挂载点,即该文件系统在目录树中的位置。
 
如果您还想查看文件系统的类型(如xfs, ext4),可以使用 -T 参数:
df -hT
使用 lsblk 命令查看块设备结构
lsblk(List Block Devices)命令以树状结构清晰地展示系统中的块设备(硬盘、分区、光驱等),非常适合用来了解物理磁盘和逻辑分区之间的层次关系。
直接输入 lsblk 即可:
lsblk
输出示例如下:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk
├─sda1   8:1    0    1G  0 part /boot
└─sda2   8:2    0   49G  0 part
  └─centos-root
         253:0    0   49G  0 lvm  /
sdb      8:16   0  100G  0 disk
└─sdb1   8:17   0  100G  0 part /data
输出字段解释:
- NAME: 设备名称。
 - MAJ:MIN: 主设备号和次设备号。
 - RM: 是否为可移动设备(1表示是,0表示否)。
 - SIZE: 设备大小。
 - RO: 是否为只读(1表示是,0表示否)。
 - TYPE: 设备类型(disk表示磁盘,part表示分区,lvm表示逻辑卷)。
 - MOUNTPOINT: 挂载点。
 
lsblk 的优点在于其直观的树状结构,能让人一眼看出哪个分区属于哪块硬盘,使用 -f 参数还可以额外显示文件系统类型、UUID和挂载点,信息更为全面。
使用 fdisk 或 parted 查看磁盘分区详情
当需要查看更底层的分区表信息时,fdisk 和 parted 是强大的工具。
fdisk 命令
fdisk 是一个经典的磁盘分区工具,使用 -l 参数可以列出所有磁盘的分区表,由于需要读取原始设备信息,通常需要 sudo 权限。
sudo fdisk -l
输出会包含磁盘的几何信息、分区起始和结束扇区、分区ID等非常详细的技术数据。
parted 命令
parted 是一个更现代的分区工具,支持GPT分区表,能更好地处理大容量硬盘,同样使用 -l 参数列出信息。
sudo parted -l
parted 的输出相对 fdisk 更简洁一些,同样能提供磁盘模型、大小、分区表类型以及每个分区的详细信息。
命令小编总结与对比
为了方便您快速选择合适的工具,下表小编总结了上述命令的主要用途和特点。

| 命令 | 主要用途 | 特点 | 
|---|---|---|
df -h | 
查看已挂载文件系统的空间使用情况 | 最常用,关注文件系统层面的空间,直观易读 | 
lsblk | 
查看块设备(磁盘、分区)的层次结构 | 树状图,清晰展示物理与逻辑关系,适合了解整体布局 | 
sudo fdisk -l | 
查看磁盘的详细分区表信息 | 经典工具,信息非常底层和技术化,适合高级用户 | 
sudo parted -l | 
查看磁盘分区详情(支持GPT) | 现代工具,输出清晰,适合大容量磁盘和新式分区表 | 
相关问答FAQs
问题1:为什么有时 df 命令显示的已用空间和 du 命令统计某个目录下所有文件大小总和不一致?
解答: 这是一个常见现象,主要原因有以下几点:
- 已删除但被进程占用的文件:如果一个文件被删除了,但仍有正在运行的进程打开了这个文件句柄,
df会认为该文件仍在占用空间,而du则不会统计这个已经不存在的文件,重启相关服务或系统后,空间会被释放。 - 文件系统保留空间:Linux文件系统(如ext4)会为 
root用户保留一部分空间(默认5%),以防系统满盘时无法登录进行维护。df的总空间包含了这部分保留空间,而du统计的是普通用户可用的空间。 - 文件系统元数据:
df统计的空间包含了inode等文件系统元数据占用的空间,而du主要统计文件数据块的大小。 
问题2:如何快速找出系统中占用空间最大的目录?
解答: 可以结合 du 和 sort 命令来实现,使用 du 命令获取当前目录下所有子目录的大小,然后通过管道传递给 sort 命令进行排序。
要查看根目录  下哪个一级子目录占用空间最大,可以执行:
du -sh /* | sort -rh
命令解释:
du -sh /*:-s表示汇总每个目录的总大小而不显示子目录,-h表示以人类可读格式显示, 表示统计根目录下的所有一级子目录。sort -rh:-r表示反向排序(从大到小),-h表示按人类可读的数字大小进行排序(如G > M > K)。 这样,输出列表的第一行就是占用空间最大的目录,您可以进入该目录,再次执行类似的命令,层层深入,最终定位到占用空间的大文件或目录。