磁盘问题的表现通常很绕:接口变慢、load 升高、日志刷不出来、数据库抖动、容器启动卡住。这类现象经常不是“磁盘坏了”,而是某个环节的 IO 压力、等待时间或空间占用已经异常。
df、du、iostat 这些工具的价值,不在于命令本身,而在于它们分别从容量、目录占用和设备 IO 视角,把模糊的磁盘问题拆成更清楚的几类问题。
IO 排障的关键,是先分清你面对的是空间问题、热点目录问题,还是设备性能问题。
为什么这一篇重要
如果不区分不同层面的磁盘指标,磁盘类故障很容易被误判,排查也容易兜圈子。
先把核心问题想清楚
df更适合看文件系统维度的空间状态。du更适合找出具体目录和文件到底占了多少。iostat更适合观察设备层吞吐、利用率和等待时间。
实战里更该关注什么
- 先明确自己在查空间、热点目录,还是在查性能瓶颈。
- 排障时把目录视角和块设备视角分开看。
- 多关注延迟和等待,而不是只看吞吐大小。
常见误区
- 只会用
df,不会继续追到具体目录。 - 看到磁盘利用率高就断言一定是硬盘坏了。
- 用空间命令去解释性能问题,或者反过来。
一个值得自己做的小练习
找一台测试机,分别观察大量写日志和大文件复制这两种场景下 df、du、iostat 的侧重点差异。
小结
IO 排障的效率,往往取决于你能否一开始就选对观察层级,而不是盲目地把所有命令都跑一遍。