Linux ext4默认为root预留5%磁盘空间以保障系统关键操作,该空间不显示在df -h的Avail列中;可用tune2fs -m在线调整,需按分区用途合理设置比例(根分区建议5%,数据盘3%~4%,冷备盘1%~2%),严禁根分区设为0。

Linux 中 ext4 文件系统默认为 root 用户预留 5% 的磁盘空间,目的是保障日志写入、SSH 登录、服务重启等关键操作在磁盘趋满时仍有余量。这个空间不显示在普通用户的 df -h 可用列(Avail)中,但真实存在。调整它需结合分区用途,用 tune2fs -m 命令在线完成,无需卸载或重启。
确认当前预留比例与分区用途
先查清设备名和实际占比,避免误操作: 运行 ```bash sudo tune2fs -l /dev/sdXN | grep -i "reserved\|block count" ``` 重点关注 `Reserved block count` 和 `Block count`,相除即得当前百分比(如 1048576 ÷ 20971520 = 0.05 → 5%)。再按用途判断是否合理:
- 根分区(
/)、/var、/usr等系统目录所在分区:建议保持 5%,小容量盘(<50GB)且频繁告警时可提至 6%~8% - MySQL、Prometheus、Elasticsearch 等服务的独立数据盘:若服务无自身水位控制,设为 3%~4% 更稳妥
- 纯归档/冷备盘:可降至 1%~2%
- 严禁对根分区设为
-m 0
用 tune2fs 修改预留比例
使用 `-m` 参数直接设置新比例(支持整数或一位小数,需 `tune2fs` ≥ 1.43): ```bash sudo tune2fs -m 3 /dev/sdc1 # 设为总容量的 3% sudo tune2fs -m 0.5 /dev/sdc1 # 设为 0.5%,适用于大容量数据盘 ``` ⚠️ 注意: - 操作立即生效,不中断服务 - 不会释放已占用空间;只有后续删除文件时,原属预留区的块才回归用户可用池 - `-m 0` 仅限纯数据盘,且必须配套磁盘使用率监控告警验证修改结果并理解 df 输出
执行后必须验证: - 再次运行 `sudo tune2fs -l /dev/sdc1 | grep "Reserved block count"`,确认数值变化 - 运行 `df -h /mount/point`:`Available` 列会增大(如从 7.9G 升至 8.3G),`Use%` 已自动按新公式 `Used / (Size − Reserved)` 计算注意:不要用 Size − Used − Avail 差值反推预留量——因块大小、元数据开销等影响,该差值≈预留空间,但非精确等于。


















