Skip to content

Instantly share code, notes, and snippets.

@iblueer
Last active November 1, 2025 16:59
Show Gist options
  • Select an option

  • Save iblueer/33ff5fd19c7fa711ed218be11ef72d95 to your computer and use it in GitHub Desktop.

Select an option

Save iblueer/33ff5fd19c7fa711ed218be11ef72d95 to your computer and use it in GitHub Desktop.
检查文件系统完整性策略调整 #Ubuntu #RaspberryPi

设置自动 fsck

bash 复制代码 sudo tune2fs -c 1 /dev/mmcblk0p2

这个代码会设置策略,使每经过1次启动,就触发检查文件系统完整性。


另外,整个SD卡是:/dev/mmcblk0 为什么我们检查文件系统完整性,只检查:/dev/mmcblk0p2?

因为:

文件系统是建立在分区(partition)上的,不是在整个物理设备(disk)上的。

换句话说: 👉 /dev/mmcblk0整张 SD 卡(物理设备) 👉 /dev/mmcblk0p1/dev/mmcblk0p2 才是 其中的分区(逻辑卷) 👉 而文件系统(ext4、vfat等)只存在于分区内部。

所以:

  • 检查文件系统完整性(fsck)时,我们检查分区;
  • 而不是整张卡(整张卡还包括分区表本身)。

🧭 一句话解释

这条命令:

sudo tune2fs -c 1 /dev/mmcblk0p2

只是告诉系统:

“这块 ext4 文件系统 每挂载一次,就强制跑一次 fsck 检查。”

也就是把:

  • 最大挂载次数(max mount count) 从默认的几十次,改成了 1

📘 更详细地说

每个 ext 文件系统都有两个触发检查的“计数器”:

名称 含义 默认值 修改命令
Mount Count 当前已经挂载了多少次 不固定 sudo tune2fs -l /dev/mmcblk0p2 查看
Max Mount Count 超过多少次强制检查 通常是 20~30 sudo tune2fs -c N /dev/mmcblk0p2
Check Interval 距离上次检查超过多久自动检查 通常 6 个月 sudo tune2fs -i 6m /dev/mmcblk0p2

例子说明:

如果你执行:

sudo tune2fs -c 1 /dev/mmcblk0p2

就相当于:

“每次挂载 /dev/mmcblk0p2 后下次启动时都强制跑一次 fsck。”

而不是“现在马上检查”。 它修改的其实是文件系统的元数据标志


✅ 如果你想立即检查文件系统完整性

应该用:

sudo fsck -f /dev/mmcblk0p2

说明:

  • -f 表示“强制”检查;
  • fsck 才是真正执行扫描、修复的命令;
  • tune2fs 只是设置策略或阈值。

💡 结合使用的正确姿势

  1. 查看当前策略:

    sudo tune2fs -l /dev/mmcblk0p2 | grep -E "Mount count|Check interval"
  2. 设置:

    • 每 10 次挂载检查一次:

      sudo tune2fs -c 10 /dev/mmcblk0p2
    • 或者每 3 个月检查一次:

      sudo tune2fs -i 3m /dev/mmcblk0p2
  3. 立刻手动检查一次(可在下次重启前):

    sudo fsck -f /dev/mmcblk0p2

✅ 推荐做法

改回合理值即可,让它定期检查,而不是每次都跑:

sudo tune2fs -c 20 -i 3m /dev/mmcblk0p2

解释:

  • -c 20 → 每挂载 20 次触发一次;
  • -i 3m → 或者每 3 个月触发一次;
  • 两者满足任一条件都会执行。

这是树莓派等嵌入式设备的常见平衡配置:

✅ 启动快 ✅ 定期自检 ✅ 不会频繁卡启动


🧠 小总结

命令 用途
tune2fs -c N 设置多少次挂载后强制 fsck
tune2fs -i 6m 设置多长时间后强制 fsck
fsck -f 立即检查修复文件系统
tune2fs -l 查看当前文件系统参数
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment