Linux ext2/ext3/ext4文件系统默认为root预留5%磁盘空间以保障关键服务应急写入,该空间不显示在df -h的Available列中;可通过tune2fs -m调整,根分区建议保持5%~8%,数据盘可设为0.5%~4%,严禁根分区设为0。

Linux 的 ext2/ext3/ext4 文件系统默认为 root 用户预留 5% 磁盘空间,目的是保障关键服务(如 syslog、SSH、数据库写入)在磁盘趋满时仍有应急写入能力。这个预留空间不显示在普通用户的 df -h “Available” 列中,但真实存在——它既不是“消失”,也不是“损坏”,而是被有意隔离。调整它需明确目标:是为系统稳定性增强预留,还是为大容量数据盘释放空间?方法统一用 tune2fs,无需卸载、不中断服务。
确认当前预留比例与分区用途
先查清设备名和实际占比,避免误操作:
- 运行
sudo tune2fs -l /dev/sdXN | grep -i "reserved\|block count",获取 Reserved block count 和 Block count;两者相除即得当前百分比(例如 1048576 ÷ 20971520 = 0.05 → 5%) - 结合用途判断合理性:
– 根分区(/)、/var、/usr等系统目录所在分区:建议维持 5%,或小幅度提升至 6%~8%(尤其磁盘 <50GB 且频繁触发告警时)
– MySQL、Prometheus、Elasticsearch 等服务的独立数据盘:若服务自身无磁盘水位控制机制,设为 3%~4% 更稳妥;纯归档/冷备盘可降至 1%
用 tune2fs 修改预留百分比
使用 -m 参数直接设置新比例(单位为整数或一位小数),立即生效:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
sudo tune2fs -m 3 /dev/sdc1→ 设为总容量的 3% -
sudo tune2fs -m 0.5 /dev/sdc1→ 支持小数(需 tune2fs 版本 ≥ 1.43) -
sudo tune2fs -m 0 /dev/sdc1→ 完全取消预留(仅限纯数据盘,且已配置磁盘使用率告警)
⚠️ 注意:该操作不释放已占空间;只有后续删除文件时,原属预留区的块才会回归用户可用池。
验证修改结果并观察 df 变化
执行后必须验证是否生效,并理解 df 输出逻辑:
- 再次运行
sudo tune2fs -l /dev/sdc1 | grep "Reserved block count",对比数值是否变化 - 运行
df -h /mount/point:修改后 “Available” 列会增大(例如从 7.9G 升至 8.3G),但 “Use%” 是基于Used / (Size − Reserved)计算的,已自动适配新比例 - 不建议依赖
df的 “Size − Used − Avail” 差值反推预留量——因块大小、元数据开销等影响,该差值≈预留空间,但非精确等于
补充建议与避坑提醒
几个易忽略但关键的操作细节:
- 根分区严禁设为
-m 0:一旦磁盘写满,可能无法登录、无法写日志、服务僵死,恢复难度陡增 - 生产环境首次调整前,务必在同型号测试盘上验证:确认监控告警阈值、服务行为、日志轮转是否仍正常
- 若需按块数精确控制(如只留 1000 个块),可用
tune2fs -r 1000 /dev/sdc1,但日常运维推荐用-m更直观 - 格式化新分区时就设好比例更稳妥:例如
mkfs.ext4 -m 1 /dev/sdd1

















