首页/系统/Linux 运维命令速查/fsck 统一文件系统检查入口
磁盘与文件系统51 条

fsck 统一文件系统检查入口

fsck 是各文件系统检查器的统一包装(按 fstab 或 -t 指定类型分发到 e2fsck/xfs_repair 等),开机自检与批量维护都用它。

Linux 运维命令速查系统更新于 2026-10-13

fsck 是什么

fsck 不是一个具体的检查程序,而是各文件系统检查器的统一前端:它按 fstab 里的类型或 -t 指定的类型,分发到对应的实现,例如 ext 系走 e2fsck、XFS 走 xfs_repair。开机自检、批量维护、条款式的「卸载后检查」都会经由它。要注意 XFS 是个例外:fsck.xfs 实际上不做检查,真正的工具是 xfs_repair。

基本信息

适用平台Linux/Unix(util-linux 提供前端,各文件系统提供 fsck.<类型> 实现)
命令语法fsck [选项] [-t 类型] 设备...
常用选项-A 按 fstab 检查全部 -t 指定类型 -N 只显示将执行什么 -y 全部回答是 -n 全部回答否 -f 强制检查
退出码按位组合:0 无错误、1 已修复、2 需重启、4 未修复、8 操作错误等
关键前提目标文件系统必须处于卸载状态

典型使用场景

  • 确认会调用哪个检查器:用 -N 先看命令再决定是否执行
  • 维护窗口批量检查:按 fstab 对数据盘逐个检查
  • ext 系强制检查:怀疑元数据异常时用 -f 触发完整检查
  • 排查开机自检:确认 fstab 第 6 列的 pass 值设置
  • 判断检查结果:按位读取退出码,区分「已修复」与「未能修复」

常用示例

常用示例
fsck -N /dev/sdb1                  # 只看会调用哪个检查器,不实际执行
fsck -t ext4 /dev/sdb1             # 指定类型检查
fsck -f -y /dev/sdb1               # 强制检查并对提问全部回答是(谨慎)
fsck -A -y                         # 按 fstab 检查全部(确保都未挂载)
fsck -A -t ext4                    # 只处理 ext4 类型的条目
echo $?                            # 结合 -N 之前的结果判断,注意按位含义

选项与退出码读法

项含义注意
-A按 fstab 遍历检查会连带处理各种类型,混入网络文件系统可能卡住
-t 类型限定文件系统类型维护时用来收窄范围
-N只显示将执行的命令不确定后果时先用它
-y 与 -n对全部提问自动回答是或否-y 有风险,-n 用于只读评估
-f强制完整检查ext 系默认按挂载次数与时间决定是否检查
退出码 1 与 2已修复错误 / 建议重启属正常完成,不等于失败
退出码 4 与 8未能修复 / 操作错误需要人工介入
退出码 16 与 32用法或调用错误 / 被取消检查参数与运行方式
fsck 的退出码是按位组合的:1 表示错误已修复、2 表示需要重启、4 表示有错误未能修复、8 表示操作出错、16 表示用法错误、32 表示被用户取消。启动脚本正是按这些位来判断要不要继续启动,维护脚本里不要把「非 0」一律当成失败。
对被挂载的文件系统运行 fsck 是危险操作:主流实现会直接拒绝,个别情况下可能造成损坏。检查根分区要进救援模式或在启动早期完成;检查数据盘要先 umount,并用 findmnt 确认没有残留挂载。XFS 请改用 xfs_repair,它同样要求离线。

易错点

  • fsck -A 会按 fstab 顺序处理所有可检查项,混入网络文件系统可能长时间卡住,维护时用 -t 收窄
  • fstab 第 6 列的 pass 决定开机检查顺序:设 0 表示跳过,排查「开机为何总在自检」要看这一列
  • 对已挂载的文件系统执行 fsck 有损坏数据的风险,必须先卸载
  • XFS 上 fsck.xfs 是空操作,真正的修复工具是 xfs_repair,用它之前也要卸载
  • -y 让工具对所有提问自动回答是,遇到需要人工判断的场景可能做出错误修复

数据来源与参考

  • man 8 fsck(util-linux)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌