空间与索引节点两个维度
磁盘水位巡检必须同时看两个维度:数据块使用率与索引节点使用率。索引节点被占满时,即使还有大量空闲空间,新建文件也会直接失败,典型场景是缓存目录与日志目录产生海量小文件。因此二者要分别设线,并额外检查挂载是否已变为只读。
基本信息
| 两个维度 | 块使用率与索引节点使用率 |
|---|---|
| 常用命令 | df -h 看空间,df -i 看索引节点 |
| 水位分档 | 预警线与告警线分开,关键分区单独设置 |
| 写入前置检查 | 同时确认可分配空间与可用索引节点 |
| 常见占用来源 | 日志、缓存、临时文件、容器镜像层 |
典型使用场景
- 日常巡检:对全部挂载点检查双水位,避免只看到空间充足就判定正常
- 日志密集系统:小文件持续产生时重点关注索引节点的消耗速度
- 容器与镜像目录:分层存储放大文件数量,索引节点消耗快于数据量
- 只读挂载排查:磁盘故障后常以只读方式重挂载,写入失败而空间看似充足
- 写入失败复盘:区分空间不足、索引节点耗尽与配额限制三种原因
判断项与读法
| 判断项 | 命令与字段 | 异常含义 |
|---|---|---|
| 块使用率 | df -h 的使用率列 | 接近告警线,写入可能失败 |
| 索引节点 | df -i 的已用比例 | 小文件占满,无法新建文件 |
| 挂载可写性 | mount 输出中的只读标记 | 故障后只读重挂载 |
| 已删未释放 | lsof 查已删除但仍被占用的文件 | 空间未真正回收 |
双水位巡检写法
双水位巡检写法
# 空间与索引节点分开检查,二者耗尽表现不同
df -hP | awk 'NR>1 && $5+0 >= 85 {print space_warn, $6, $5}'
df -iP | awk 'NR>1 && $5+0 >= 85 {print inode_warn, $6, $5}'
# 只读挂载检查:写入失败但空间充足时的第一嫌疑点
mount | grep -c ' ro,'
# 已删除但被进程打开的文件不会释放空间
lsof +L1 2>/dev/null | head空间充足却无法写文件时,排查顺序建议为:索引节点、只读挂载、配额与预留空间。按此顺序可以避免在错误维度上反复查找,尤其能减少只读重挂载被忽略的情况。
用删除文件的方式回收空间前,先确认文件已无进程持有。被打开的文件删除后空间不会立即释放,容易出现删了却看不到变化的假象,进而引发重复删除或误删其他文件。