Linux磁盘自检由/etc/fstab的pass值、ext文件系统挂载计数/时间间隔共同控制:pass为0跳过,1为根分区优先检查,≥2为其他本地分区;ext可用tune2fs -c/-i调整频率,XFS则无启动自检,依赖挂载时日志修复。

Linux系统没有“一键开关”式的自动磁盘检查配置,它的启动时自检行为由 fsck 调用逻辑、/etc/fstab 中的 pass 字段、以及 ext 文件系统的挂载计数/时间间隔共同决定。XFS 等文件系统则默认不参与该机制。
怎么看当前分区是否参与启动自检
关键看 /etc/fstab 第六列(pass)值:
- 值为
0:跳过fsck检查(例如 swap、network filesystems) - 值为
1:根文件系统(/),优先检查(仅允许一个分区设为 1) - 值为
2或更大:其他本地文件系统,按数值升序检查;多个同值会并行检查
执行 cat /etc/fstab 查看,例如这一行:/dev/sdb1 /data ext4 defaults 0 2 表示该分区会在启动时被 fsck 扫描。
怎么禁用某分区的自动检查
不是删掉或注释整行,而是把第六列改成 0:
sudo sed -i '/\/data/s/ [0-9]$/ 0/' /etc/fstab
注意:
• 修改后无需重启,下次开机生效
• 已挂载的分区不会立即受影响,但异常断电后也不会触发修复
• 禁用前确认该分区非关键系统分区(如 /、/boot)
怎么调整 ext4 分区的强制检查频率
ext 文件系统支持两种触发条件:挂载次数上限(Maximum mount count)和日历时间间隔(Check interval)。用 tune2fs 查看和修改:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 查看当前设置:
tune2fs -l /dev/sdb1 | grep -E "Maximum mount count|Check interval" - 禁用挂载次数检查(设为 -1):
tune2fs -c -1 /dev/sdb1 - 设为每 30 天检查一次:
tune2fs -i 30d /dev/sdb1 - 设为每 180 天检查一次:
tune2fs -i 180d /dev/sdb1
⚠️ 注意:
• -i 参数只对 ext2/ext3/ext4 有效,XFS 不识别该设置
• 修改后立即生效,不影响当前挂载状态
• 若同时设置了挂载次数和时间间隔,任一条件满足即触发检查
XFS 分区根本没有启动自检这回事
XFS 在设计上不依赖 fsck 启动流程,它使用日志(journal)保证一致性,崩溃后由 xfs_repair 在挂载前自动完成元数据修复——但这发生在 mount 过程中,不是 init 阶段的独立 fsck 步骤。
所以:
• /etc/fstab 中 XFS 分区第六列写 0 或 2 都没区别,fsck 根本不会调用它
• 真正的“自动修复”体现在 mount -o recovery(默认启用)行为里,无需额外配置
• 不能用 tune2fs 管理 XFS,要用 xfs_info 和 xfs_admin
真正容易被忽略的是:即使你把所有 ext 分区的 pass 设为 0、挂载计数设为 -1,只要系统检测到上次未正常关机(/etc/init.d/rc 读取 /etc/.unwritten 或内核标记),仍可能强制运行 fsck -p。这不是配置能完全绕过的底层安全机制。










