在Linux系统运维与服务器管理中,精准掌握磁盘分区的大小、使用情况及剩余空间是保障业务连续性的基础技能。最快速、最直观且专业的查看分区大小方案是组合使用 df、lsblk 和 du 命令,分别针对文件系统挂载情况、物理分区块设备结构以及目录级空间占用进行分层级诊断,掌握这三把“利剑”,并结合 fdisk 等底层工具,能够解决从宏观监控到微观排查的所有磁盘空间问题。

使用 df 命令查看文件系统挂载与剩余空间
df(Disk Free)命令是Linux下查看磁盘分区使用率的首选工具,它主要关注文件系统层面的挂载点与剩余空间,对于系统管理员而言,最常用的参数组合是 df -hT。
-h(Human-readable):将容量以易读的格式(如GB、MB、KB)输出,直接显示为“1.5G”而非“1572864”字节,极大提升了阅读效率。-T(Print type):显示文件系统的类型(如ext4、xfs、overlay),这对于判断是否需要扩容或调整文件系统参数至关重要。
执行该命令后,输出信息包含核心列:Filesystem(文件系统设备名)、Type(类型)、Size(总大小)、Used(已用空间)、Avail(可用空间)、Use%(使用百分比)以及 Mounted on(挂载点)。重点关注 Use% 列,如果某个分区(如 或 /var)的使用率超过90%,系统可能会因为无法写入日志或临时文件而导致服务崩溃。注意 tmpfs 这一行,它代表内存文件系统,占用的是内存和交换分区空间,并非物理磁盘,在计算物理磁盘消耗时应将其排除。
使用 lsblk 命令查看物理分区树状结构
如果说 df 查看的是逻辑层面的文件系统,lsblk(List Block Devices)则展示了物理层面的分区拓扑结构。该命令能够清晰地列出磁盘及其下属分区的层级关系,是查看分区大小的最佳可视化工具。
直接输入 lsblk 即可得到一个树状结构图,核心列包括 NAME(设备名)、MAJ:MIN(主次设备号)、RM(可移动设备)、SIZE(分区总大小)、RO(只读)、TYPE(类型,disk为磁盘,part为分区)以及 MOUNTPOINT(挂载点)。
lsblk 的优势在于它能直观地显示分区所属的物理磁盘,你可以一眼看出 /dev/sda1 和 /dev/sda2 都属于磁盘 /dev/sda,在规划扩容时,这一点尤为重要,因为你需要知道是哪块物理硬盘还有剩余空间,配合 -f 参数,lsblk 还能显示文件系统类型和UUID,结合 -m 参数则能显示权限信息,这对于排查因权限导致的挂载问题非常有帮助。
使用 du 命令排查目录级别的空间占用
当发现某个分区空间不足(df 显示 Use% 过高)时,单纯查看分区大小无法定位问题根源,此时需要使用 du(Disk Usage)命令进行逐层排查。du 是定位“空间吞噬者”的核心工具。

最常用的排查策略是使用 du -sh /* 或 du -sh /path/to/directory/*。
-s(summarize):仅显示总计,不列出每个子文件的详情,快速锁定占用最大的目录。-h:以人类可读格式显示。--max-depth=1:这是一个非常实用的参数,限制目录的显示深度,防止输出过多信息刷屏。
*专业的排查路径通常是:先看 df -h 确定哪个分区满了,cd 到该分区的挂载点(/var),接着执行 `du -sh | sort -hrsort -hr` 会将结果按大小从高到低排序,让你一眼看到最大的目录,层层深入,最终找到占用空间异常的大文件或日志目录进行清理。
使用 fdisk 与 parted 查看底层分区详情
在某些复杂的存储环境(如包含未挂载分区、LVM逻辑卷或GPT分区表)中,上述命令可能无法完整显示所有信息,此时需要调用更底层的工具。
fdisk -l 是经典的分区表查看工具,它能列出系统中所有磁盘的分区详情,包括分区的起始扇区、结束扇区、ID(分区类型)以及启动标志。注意,fdisk 主要用于MBR分区表,对于大容量硬盘(大于2TB)使用GPT分区表的情况,建议使用 parted。
parted -l 能够更智能地处理GPT磁盘,并正确显示所有分区的大小信息,在进行磁盘扩容前,务必使用这两个命令确认磁盘的分区表类型(GPT或DOS)以及当前分区的起始和结束位置,这是防止数据丢失的关键步骤。
进阶排查:Inode 耗尽导致的“假性”磁盘满
在Linux运维中,存在一种特殊现象:df -h 显示磁盘还有大量剩余空间,但系统提示“No space left on device”,这通常不是因为Block(数据块)耗尽,而是因为 Inode(索引节点)耗尽。

Inode 用于存储文件的元数据(如权限、所有者、位置信息),每个文件都必须占用一个 Inode,如果系统中存在大量小文件(如数百万个1KB的缓存文件),即使数据总量不大,Inode 也会被占满。
解决方案是使用 df -i 命令查看 Inode 的使用情况。IUse% 达到100%,必须通过 find 命令查找并删除包含大量小文件的目录,使用 find /path -type f | wc -l 统计文件数量,或使用 find /path -name "*.xxx" -delete 批量清理。这是区分初级运维与高级专家的关键知识点。
相关问答
Q1:为什么在 Linux 中删除了文件后,使用 df 查看磁盘空间没有减少?
A: 这种情况通常是因为被删除的文件仍被某个进程占用(句柄未释放),在 Linux 中,当文件被打开后,即使被删除,只要进程还在使用该文件句柄,磁盘空间就不会真正释放。解决方案是使用 lsof +L1 命令查找标记为 deleted 的进程,重启该服务或直接 kill 掉占用文件的进程,空间即可立即回收。
Q2:如何在不重启服务器的情况下扩展 Linux 磁盘分区大小?
A: 对于云服务器或支持热插拔的存储,可以先在底层(如云控制台或虚拟化平台)扩容磁盘容量,然后在系统内,如果是 LVM 管理的分区,可以直接使用 lvextend 扩展逻辑卷,再用 xfs_growfs 或 resize2fs 刷新文件系统大小,如果是标准分区(如 /dev/sda2),且分区尾部有空闲空间,可以使用 growpart 工具扩展分区表,最后调整文件系统大小,整个过程无需重启,但操作前务必备份数据。
















