Linux 文件系统检查与修复工具 fsck 详解

fsck是 Linux 中用于检查和修复文件系统的工具。它虽支持多种文件系统,但不同文件系统需调用对应的工具(如 e2fsck 用于 ext4,xfs_repair 用于 XFS)。以下为详细指南及实例。

原创殊为不易!诚邀诸位进行批评、评议、转发!

1、适用的故障场景

Linux系统启动时自动检查文件系统时,如果文件系统异常,譬如断电、强制重启后无法挂载,检测到文件系统元数据(如 superblock、inode)不一致,这时常常产生启动故障,fsck就排上用途了。

2、fsck 常用选项

-A 检查 /etc/fstab 中所有文件系统

-C 显示进度条(仅部分文件系统支持)

-N 空运行(仅显示操作,不实际执行)

-y 自动修复所有问题(无需交互确认)

-n 仅检查,不修复

-f 强制检查(即使文件系统标记为 clean)

-V 详细输出

3、使用时注意事项

(1)必须先卸载目标分区(umount /dev/sdX)。根文件系统(/)需在单用户模式或 Live CD/USB 下操作。

(2)修复可能导致数据丢失,操作前建议备份。

(3)文件系统类型:确认文件系统类型(lsblk -f),选择正确的工具。


4. 实例操作

(1)检查并修复 ext4 文件系统

卸载分区(假设为 /dev/sda1)

sudo umount /dev/sda1

检查并自动修复

sudo fsck.ext4 -f -y /dev/sda1

或使用通用命令

sudo fsck -t ext4 -y /dev/sda1

交互式修复

sudo fsck.ext4 -r /dev/sda1

-r:交互模式,针对每个错误提示用户确认是否修复。

(2)检查修复 XFS 文件系统

sudo umount /dev/sdb1

sudo xfs_repair /dev/sdb1

XFS 专用:使用 xfs_repair 工具,而非 fsck.xfs。

严重损坏时:可能需要 -L 选项强制重置日志(谨慎使用,可能导致数据丢失)。

(3)检查所有文件系统

sudo fsck -A -y

通常在恢复模式或 Live 环境中使用。

(4)强制检查根文件系统

进入单用户模式(重启后添加内核参数 init=/bin/bash)

mount -o remount,ro / # 只读挂载根分区

fsck -f /dev/sda1

mount -o remount,rw / # 恢复读写


5. 高级修复:恢复 ext4 的超级块(Superblock)

超级块(Superblock) 是文件系统的核心数据,记录了整个文件系统的关键信息,相当于文件系统的“头文件”或“身份证”。它是文件系统在磁盘上的第一个重要结构,没有超级块,系统将无法识别和挂载文件系统。一个不恰当的比喻:超级块相当于一本书的目录首页。

没有目录:你无法快速找到章节内容;同理,没有超级块,系统无法定位文件和数据块。

若主超级块损坏,可使用备份恢复:

(1)查找备份超级块位置(输出中的 "Backup superblocks")

sudo dumpe2fs /dev/sda1 | grep -i superblock

输出:

Primary superblock at 0, Group descriptors at 1-2

Backup superblock at 32768, Group descriptors at 32769-32770

Backup superblock at 98304, Group descriptors at 98305-98306


(2)使用备份超级块修复(如 32768)

sudo fsck.ext4 -b 32768 /dev/sda1


写在最后

fsck在修复前一定去看看磁盘硬件是否有故障(比如raid错误,磁盘错误),否则可能引起修复故障,引起数据丢失。

原文链接:,转发请注明来源!