tune2fs -i 设置的是下一次基于时间触发强制fsck的最晚截止时间点,而非两次检查的间隔;它与-c独立并行,任一满足即在下次启动时触发fsck,且每次成功检查后“last checked”重置为当前时间。

Linux 中没有“强制全面物理自检”这个概念,tune2fs -i 设置的也不是“两次 fsck 之间的最大时间间隔”,而是**下一次基于时间触发强制检查的最晚截止时间点**。它和 -c(挂载次数)共同构成两个独立触发条件:任一满足,系统在下次启动且该分区被检测为需检查时,就会执行 fsck。
理解 -i 的真实含义
-i 并不控制“两次自检之间”的跨度,因为 fsck 不会周期性自动运行;它只决定:从“上次成功检查时间(Last checked)”起,超过设定时长后,若系统重启且该文件系统尚未跳过检查,就触发一次 fsck。
- 该时间阈值是单向推进的,不是循环计时器
- 每次成功 fsck 后,“Last checked”会被更新为当前时间
- 即使不重启,只要用 tune2fs -i 修改了间隔,下次检查时间也会按新间隔 + 原 Last checked 重新计算
-i 支持的时间单位与换算规则
单位仅限三种,且全部按固定秒数计算,不考虑日历差异:
- d:天 → 按 24 × 3600 = 86400 秒计算
- w:周 → 按 7 × 86400 = 604800 秒计算
- m:月 → 固定按 30 天 = 2592000 秒计算(非自然月,不区分大小月或闰年)
例如:tune2fs -i 6m /dev/sdb1 实际对应 180 天(30×6),不是日历上的“半年”。
查看和设置操作示例
先确认当前设置:
tune2fs -l /dev/sdb1 | grep -E "Check interval|Last checked|Maximum mount count"
输出类似:
Last checked: Tue Mar 12 09:23:41 2024
Maximum mount count: 30
设置新时间间隔(以 1 年为例):
- 按天:
tune2fs -i 365d /dev/sdb1 - 按周:
tune2fs -i 52w /dev/sdb1 - 按月(近似):
tune2fs -i 12m /dev/sdb1(即 360 天)
禁用时间检查(仅保留挂载次数策略):
tune2fs -i 0 /dev/sdb1
此时 Check interval 显示为 0 (<none>)</none>。
配合 -c 使用更稳妥
单独依赖时间可能遗漏频繁重启但不达周期的场景,建议与挂载次数策略协同:
- 延长检查周期(如一年+100次):
tune2fs -i 365d -c 100 /dev/sdb1 - 完全关闭自动检查(慎用):
tune2fs -i 0 -c 0 /dev/sdb1 - 彻底禁用(含挂载计数):
tune2fs -c -1 -i 0 /dev/sdb1(-c -1 表示忽略挂载次数)
注意:修改前请确保目标设备已卸载(umount),否则会报错。











