服务器测评网
我们一直在努力

Linux df -h命令怎么用,如何查看磁盘空间?

在 Linux 系统运维与服务器管理中,磁盘空间监控是保障服务稳定性的核心环节。df -h 命令作为查看磁盘使用情况的基础工具,其重要性不言而喻,它能够以人类可读的格式快速展示文件系统的挂载点、总容量、剩余空间及使用率。 掌握该命令不仅在于查看基础数据,更在于通过其输出快速定位磁盘故障(如 Inode 耗尽)或解决空间未释放的异常情况,是每一位系统管理员必须精通的“第一道防线”。

Linux df -h命令怎么用,如何查看磁盘空间?

基础核心:命令输出深度解读

df(Disk Free)命令用于显示文件系统上的可用磁盘空间,而 -h 参数(Human-readable)则是最常用的选项,它将容量以 KB、MB、GB 等易读单位输出,而非默认的块,执行该命令后,输出通常包含以下六个关键字段,理解每一列的含义是分析问题的前提:

  • Filesystem(文件系统): 代表该分区的底层来源,如 /dev/vda1 或 UUID,在云服务器环境中,这通常对应云盘的设备名。
  • Size(总容量): 该分区的总大小,这是判断磁盘资源的物理上限。
  • Used(已用空间): 当前已被占用的空间大小。
  • Avail(可用空间): 剩余可供普通用户使用的空间。需要注意的是,Linux 默认为 root 用户预留 5% 的空间用于紧急管理和系统碎片整理,因此当 Avail 归零时,系统未必完全崩溃,但普通用户将无法写入数据。
  • Use%(使用率): 磁盘使用的百分比。这是运维监控中最关键的指标,通常设定告警阈值为 80% 或 90%。
  • Mounted on(挂载点): 磁盘分区在系统目录树中的位置,如 (根目录)或 /data

进阶实战:关键参数与场景应用

在实际生产环境中,仅使用 df -h 往往不足以应对复杂问题,结合其他参数和场景进行深度分析,才能体现专业运维能力。

解决“空间未满但报错 No space left on device”

这是 Linux 中极具迷惑性的经典问题,当 df -h 显示 Use% 未达到 100%,但系统无法创建新文件时,通常是因为 Inode 耗尽,Inode 用于存储文件元信息,每个文件和目录都必须占用一个 Inode,如果系统中存在大量极小文件(如未清理的 session 文件、邮件队列碎片),即便磁盘容量充足,Inode 也会先被耗尽。
解决方案: 使用 df -i 命令查看 Inode 使用情况,IUse% 接近 100%,需通过 find / -xdev -printf '%i\n' | sort -u | wc -l 等命令定位包含大量小文件的目录并进行清理。

识别文件系统类型与排除伪文件系统

为了更精准地分析物理存储,应排除内存模拟的伪文件系统(如 tmpfsoverlay),它们会占用内存而非磁盘空间,容易造成误判。
解决方案: 使用 df -hT 命令,-T 参数会额外显示 Type(文件系统类型,如 ext4、xfs),结合 -x 参数排除特定类型,df -hT -x tmpfs -x overlay,这样可以只关注真实的物理磁盘使用情况,避免被 devtmpfs 等干扰项误导。

定位“僵尸文件”与空间释放延迟

有时删除了大文件后,df -h 显示的空间并未立即减少,这是因为该文件仍被某个进程占用(句柄未释放),文件标记为 deleted 但实际数据块未被回收。
解决方案: 使用 lsof | grep deleted 命令查找状态为 deleted 但仍被进程打开的文件,找到对应的 PID 后,通过重启服务或使用 kill -9 PID 释放句柄,磁盘空间即可自动回收。

Linux df -h命令怎么用,如何查看磁盘空间?

专业建议:磁盘维护的最佳实践

为了确保系统的长期稳定运行,除了被动查看 df -h,还应建立主动的维护策略。

建立分层监控体系。 不要只关注根目录 的使用率,对于业务数据目录(如 /var/www/var/log)应单独挂载分区,这样当日志文件暴涨导致磁盘写满时,不会影响系统核心指令的运行,便于故障隔离。

定期进行容量规划。 利用 df -h 的输出数据建立趋势图表,如果发现磁盘使用率每周线性增长 5%,应在达到阈值前提前扩容或清理,而不是等到 100% 报警时才处理,对于日志文件,建议配置 logrotate 自动轮转和压缩历史日志。

善用磁盘配额(Quota)。 在多用户共享的服务器上,通过 quota 工具限制特定用户的磁盘使用量,防止单个用户恶意占用全部空间导致其他服务瘫痪。

相关问答

Q1:为什么 df -h 显示的 Used 和 Avail 加起来不等于 Size?
A: 这种差异主要由两个原因造成,第一,Linux 系统默认为 root 用户预留了 5% 的空间,这部分空间包含在 Size 中,但既不计入 Used 也不计入 Avail(普通用户不可用);第二,文件系统本身在格式化时会保留一部分元数据空间,以及文件存在一定的“块碎片”占用,导致数学上的简单加总与总容量存在偏差。

Linux df -h命令怎么用,如何查看磁盘空间?

Q2:如何快速找出当前目录下占用磁盘空间最大的子目录?
A: df 只能查看文件系统级别的宏观使用情况,要查找具体大目录,应配合 du 命令使用,最常用的组合命令是 du -h --max-depth=1 | sort -hr,该命令会列出当前目录下一级子目录的大小,并按从大到小排序,帮助管理员迅速定位占用空间的“罪魁祸首”。


希望以上关于 df -h 的深度解析能帮助您更好地管理 Linux 服务器,如果您在日常运维中遇到过奇怪的磁盘占用问题,或者有独特的排查技巧,欢迎在评论区分享您的经验!

赞(0)
未经允许不得转载:好主机测评网 » Linux df -h命令怎么用,如何查看磁盘空间?