用 tune2fs -m 修改预留比例,无需卸载、不中断服务,但根分区严禁设为 0;查当前比例需运行 sudo tune2fs -l /dev/sdxn | grep -i "reserved|block count",用 reserved block count 除以 block count 得实际百分比。

直接结论:用 tune2fs -m 修改,无需卸载、不中断服务,但根分区严禁设为 0。
怎么查当前预留比例?
别猜,先确认设备名和真实占比,避免误调:
- 运行
sudo tune2fs -l /dev/sdXN | grep -i "reserved\|block count",提取Reserved block count和Block count,相除即得百分比(如 1048576 ÷ 20971520 = 0.05 → 5%) - 更省事:用
dumpe2fs -h /dev/sdXN | grep -i reserved,输出里直接带百分比(部分旧版tune2fs不显示) - 注意:
df -h的Avail列已扣除预留空间,但它不告诉你预留了多少——差值 ≈ 预留量,但不是精确值(受块大小、元数据影响)
怎么安全地改?关键看分区用途
同一命令,不同场景下参数取值逻辑完全不同:
- 根分区(
/)、/var、/usr所在盘:建议保持5,小磁盘(6~8;-m 0绝对禁止 - MySQL / Prometheus / Elasticsearch 独立数据盘:若服务自身无磁盘水位控制(如没配
innodb_log_file_size或 retention),设3~4更稳妥 - 纯归档/冷备盘(如
/backup):可设1或0.5(需tune2fs≥ 1.43) - 命令示例:
sudo tune2fs -m 3 /dev/sdc1(设为 3%),sudo tune2fs -m 0.5 /dev/sdd1(小数支持需版本达标)
修改后 df 显示变化为什么“不线性”?
这是最常被误解的一点:调低预留比例不会立刻让 Avail 增加对应百分比的量。
- 它只改变“未来空闲块的归属权”:已有文件占用的空间不变,只有后续删除文件时,原属预留区的块才回归用户可用池
- 所以你看到
df -h的Avail增大,是因系统重新计算了“用户可用上限”,但实际释放出的空闲块取决于你删了哪些文件、它们原本是否落在预留区 -
Use%列始终基于Used / (Size − Reserved)计算,自动适配新比例,不用手动重算 - 若磁盘已
Use% ≥ 95%,调低-m后可能仍显示Avail=0——说明空闲块本身就不够,预留调整只是松动上限,不是魔法清空间
真正容易被忽略的是:这个操作不释放已有数据占的空间,也不影响性能或数据安全;但它会悄悄改变 df 的语义——Avail 变大了,但“能写多少”还取决于你有没有删东西。别指望一调就多出几十G可用,那是错觉。











