首页 > 操作系统 >Linux如何使用df查看磁盘使用_Linux df查看磁盘使用指南

Linux如何使用df查看磁盘使用_Linux df查看磁盘使用指南

来源:互联网 2026-04-07 21:04:02

Linux磁盘空间排查:从df -h开始,但别在它这里结束 开门见山地说,df -h 是绝大多数磁盘空间检查的起点和终点。但如果你的系统弹出“已用空间102%”这种反直觉的数字,或者某个目录明明没存多少东西却报“设备上没有剩余空间”,那故事才刚刚开始——你得接着往下查inode或者挂载点偏差。 为什

Linux磁盘空间排查:从df -h开始,但别在它这里结束

Linux如何使用df查看磁盘使用_Linux df查看磁盘使用指南

开门见山地说,df -h 是绝大多数磁盘空间检查的起点和终点。但如果你的系统弹出“已用空间102%”这种反直觉的数字,或者某个目录明明没存多少东西却报“设备上没有剩余空间”,那故事才刚刚开始——你得接着往下查inode或者挂载点偏差。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

为什么大家都从 df -h 开始?

原因很简单:它把最友好的界面给了你。原始的 df 命令输出单位是1K-blocks,面对一长串像123456789这样的数字,你得在脑子里做除法,除以1024再除以1024,才能反应过来这大概是115G。而 df -h 直接帮你完成了这个换算,用MB、GB、TB这些符合人类直觉的单位呈现结果。

更重要的是,它默认就帮你过滤了干扰项。像 tmpfsdevtmpfs 这类基于内存的虚拟文件系统,虽然也占着“挂载点”的名头,但和你的物理磁盘空间无关,df -h 默认不会显示它们,让你一眼看到真正的硬盘分区情况。

这里有个细节值得注意:-h-H 参数都号称“人性化显示”,但进制不同。-h 按1024进制(1K=1024字节),这是操作系统内部计算的标准;而 -H 按1000进制(1K=1000字节),通常是硬盘制造商喜欢用的单位。混用可能导致困惑——为什么买来的1TB硬盘,系统里只显示931GB?现在你知道了。

至于 df -kdf -m 这类固定单位的用法,其实不太推荐。它们强制所有数据都用KB或MB显示,反而掩盖了真实的量级差异。试想,一个512MB的分区显示为“512”,另一个4.2TB的分区显示为“4200000”,你还能一眼看出哪个更大吗?

df 告诉你“已用率 > 100%”时

别慌,这通常不是系统出了bug,而是Linux一个“留后手”的设计。像ext4、xfs这类主流文件系统,默认会预留大约5%的空间(有些发行版会设为10%)专门给root用户。目的是为了防止普通用户把磁盘写满后,导致系统连日志都无法记录,甚至ssh都登录不上去的尴尬局面。

这时候,你可以用 sudo tune2fs -l /dev/sda1 | grep “Reserved block count” 来查看具体的预留比例。如果想调整,比如把数据盘的预留空间降到1%,可以执行 sudo tune2fs -m 1 /dev/sda1。但切记,对系统盘做这个操作要格外谨慎。

还有一种情况更隐蔽:df 显示空间快满了,但你用 du 统计文件却差很多。这往往意味着有文件被“删除”了,但没“释放”。有些进程打开一个大文件(比如日志)后,即使你从外部把它删了,只要进程还没退出,它占用的磁盘空间就不会被释放。这时候,lsof +L1 命令就能帮你把这些“幽灵”文件找出来。

精准定位:你的目录到底挂在哪个盘上?

df 默认会列出所有挂载点,但当你想知道像 /var/log 这样的具体目录究竟落在哪个物理分区时,靠猜路径层级是没用的。你需要让 df 主动去解析挂载关系。

最直接的方法就是运行 df /var/log。命令会聪明地向上追溯,找到该路径所属的最接近的挂载点。比如,如果输出显示 /dev/sda2 挂载在 / 下,那就说明 /var/log 位于根分区。

如果这个路径本身就是一个独立的挂载点,比如 /home 单独挂载了 /dev/sdb1,那么 df /home 会明确地显示这个设备信息,而不会和根分区混在一起。

一个小建议:尽量避免使用 df . 来查看当前目录。因为当前工作目录可能被bind mount或overlayfs等高级挂载方式覆盖,导致结果与预期不符。使用绝对路径总是更可靠的选择。如果想获得一个更干净的视图,排除临时文件系统的干扰,可以加上 -x 参数,例如:df -h -x tmpfs -x devtmpfs

dfdu:当总账对不上实际库存时

这是磁盘空间分析中最经典的一课:df 看的是文件系统级别的“总账”,它汇报的是整个块设备被占用了多少;而 du 算的是目录树里所有文件加起来的“实际库存”。两者数字对不上,往往就是问题所在。

一个典型的场景:df -h 显示某个分区已用95%,但用 du -sh /* 2>/dev/null | sort -hr | head -5 挨个统计根目录下主要文件夹,加起来可能才70G。这二三十G的差额,大概率就是前面提到的“被删除但未释放”的文件。

链接文件也会让这两个命令“打架”。du 默认不会重复统计硬链接,而 df 则完全不关心链接关系,只认数据块被谁占着。所以,如果你创建了大量指向同一个文件的硬链接,du 统计的结果可能会偏小(因为它只算一次),而 df 看到的占用则是真实且唯一的。

对于稀疏文件(比如某些虚拟机的磁盘镜像),du --apparent-size 参数更有用,它按文件的逻辑大小统计,而不是按实际在磁盘上占了多少个块。而 df 永远只报告后者。

Linux磁盘空间排查的完整思路

说到底,真正的挑战从来不是记住这些命令参数。而是在你看到 Use% 那栏逼近100%时,能克制住立刻 rm -rf 的冲动。先想想,是不是inode用完了?执行一下 df -i 看看吧。再想想,是不是有进程还占着已删除的文件没放手?比如那个 /var/log/journal 目录,可能正被systemd-journald进程紧紧抓着。不把这些细节排查清楚,你删再多文件,错误提示依然会固执地弹出来。

掌握从 df -h 开始,结合 dulsofdf -i 的综合排查方法,才能高效解决Linux磁盘空间不足的问题。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。