ext4默认为root预留5%磁盘空间以保障系统关键操作,该空间不显示在df -h的available列中;可用tune2fs -m调整比例,根分区严禁设为0%,修改后需验证reserved block count并理解df输出变化。

Linux Ext4 文件系统默认为 root 用户预留 5% 的磁盘空间,目的是保障系统在磁盘趋近写满时,仍能写入日志、响应 SSH 登录、运行关键服务。这部分空间不显示在 df -h 的 “Available” 列中,但真实存在——它不是丢失或损坏,而是被内核级策略隔离。调整它用 tune2fs -m 即可,无需卸载、不中断服务,但需 root 权限。
确认当前预留比例和分区用途
先查清目标设备的当前设置,避免误调:
- 运行
sudo tune2fs -l /dev/sdXN | grep -i "reserved\|block count",提取 Reserved block count 和 Block count,相除即得实际百分比(例如 1048576 ÷ 20971520 = 0.05 → 5%) - 结合挂载点判断用途:
– 根分区(/)、/var、/usr等系统盘:建议保持 5%~8%,小容量盘(<50GB)或频繁触发满盘告警时可适度提高
– MySQL、Elasticsearch 等独立数据盘:若服务自身无水位控制,设为 3%~4% 更稳妥;纯归档/冷备盘可降至 1%~2%
用 tune2fs 修改预留百分比
使用 -m 参数直接设定新比例,支持整数和一位小数(需 tune2fs ≥ 1.43):
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
sudo tune2fs -m 3 /dev/sdc1→ 设为总容量的 3% -
sudo tune2fs -m 0.5 /dev/sdc1→ 设为 0.5%(适合 TB 级数据盘) -
sudo tune2fs -m 0 /dev/sdc1→ 完全取消预留(仅限纯数据盘,且已配置磁盘使用率监控告警)
⚠️ 根分区严禁设为 0%:否则磁盘写满后可能无法登录、无法写日志、服务僵死,恢复极困难。
验证修改结果并理解 df 输出变化
修改后必须验证是否生效,并正确认读空间变化:
- 再次执行
sudo tune2fs -l /dev/sdc1 | grep "Reserved block count",对比数值是否更新 - 运行
df -h /mount/point:修改后 “Available” 列会增大(如从 7.9G 升至 8.3G),但 “Use%” 是按Used / (Size − Reserved)计算的,已自动适配新比例 - 注意:该操作不立即释放已占空间;只有后续删除文件时,原属预留区的块才会回归用户可用池
补充提醒与常见误区
几个关键细节容易被忽略:
- 预留空间是块级分配策略,与
chown、chmod无关,无法通过权限绕过 - 不建议依赖
Size − Used − Avail差值反推预留量——因块大小、元数据开销等影响,该差值仅近似等于预留空间,非精确值 - 若文件系统已接近满载(如 Use% >95%),调低预留比例不会立刻提升 Available;必须有文件被删除,空闲块才真正释放
- 生产环境建议先在测试分区验证,再操作关键盘










