【Linux】文件系统与 fsck.ext4 修复 - 我踩过的坑与总结

承接上一回,这期依然是 Linux 的总结。但这次我想聊聊文件系统和 fsck,这个我踩过千百遍的坑。

一、首先什么是 fsck?

在我早期使用 Linux 的时候,对磁盘问题的理解非常肤浅:

"系统起不来了?那就 fsck 一下试试。"

直到我遇到 ext4 分区无法挂载、系统进入 emergency mode、fsck 直接报错 ,我才意识到:
fsck 不是"万能修复键",而是"最后的外科手术刀"。

理解下面三件事,对我来说是分水岭:

  1. 什么时候能用 fsck,什么时候绝对不能用
  2. fsck 到底在"修什么"
  3. 哪些参数会救命,哪些参数会毁数据

二、fsck 在 Linux 中的定位

从本质上讲:

fsck(File System Consistency Check)是用来"校验并修复文件系统结构一致性"的工具,而不是数据恢复工具。

它主要检查和修复的是:

  • superblock(超级块)
  • inode 表
  • block bitmap
  • inode bitmap
  • 目录结构与引用关系

值得注意的是 fsck 关心的是"结构是否一致",它是不保证你的文件内容"正确或完整"的。

三、在 fsck 之前必做的三件事(重点)

1.确认分区没有被挂载

fsck 对"已挂载分区"执行是极其危险的行为。

我通常用:

bash 复制代码
mount | grep sda
lsblk

如果是根分区:

  • 必须进入单用户模式
  • 或使用 Live CD / 救援系统

2.能备份就先备份(哪怕是 dd)

如果磁盘还能读,我至少会做一份原始镜像:

bash 复制代码
dd if=/dev/sda of=/backup/sda.img bs=4M status=progress

我宁愿慢,总比事后后悔强。

3.搞清楚文件系统类型

bash 复制代码
blkid
lsblk -f

确认是 ext4,而不是 xfs / btrfs

四、fsck.ext4 的核心用法

1.基础检查(只读,不修改)

bash 复制代码
fsck.ext4 -n /dev/sda1

一般我会采用 -n(不做任何修改)参数先做一次评估,先看损坏程度。

2.自动修复(踩坑最多)

bash 复制代码
fsck.ext4 -y /dev/sda1

这可以算是我踩坑最多的参数,-y(对所有修复询问自动回答 yes)。以前常用,现在的话只在我已经有备份,或别无选择时使用。

3.指定备用 superblock 修复

这是我最常"救活"分区的一招。先查看备用 superblock:

bash 复制代码
dumpe2fs /dev/sda1 | grep -i superblock

然后指定一个:

bash 复制代码
fsck.ext4 -b 32768 /dev/sda1

五、lost+found?

fsck 修复后,经常会看到:

bash 复制代码
/lost+found

里面是:

  • 找不到原目录结构的 inode
  • 文件名通常是数字

我的过往经验是若是小文件,那一般内容还算是完整的,如果是大文件(譬如,数据库、镜像等)那么可用性就不高了,那如果是目录结构的话,那基本就不可能完全恢复的。那么我的做法是:

  • 逐个 file + less 判断
  • 能确认用途的,手动归位
  • 其余长期留档,不轻易删除

六、我踩过的坑(血的教训)

1.在已挂载的根分区上跑 fsck

结果可想而知,文件系统状态直接混乱,最后只能进救援系统重修。这也让我意识到 "fsck ≠ 在线修复工具" 这个道理。

2.对 XFS 分区使用 fsck.ext4

fsck 根本就"看不懂",并且造成二次损坏。后面我知道了 XFS 用 xfs_repair,只有 ext4 才用 fsck.ext4。

七、我现在的做法

说实话,我并不想经常用 fsck。现在我更倾向于:

  • RAID + 定期 SMART 检测
  • UPS 防断电
  • 日志与业务数据分盘
  • 关键数据 快照 + 备份
  • 新系统优先考虑 btrfs / zfs

fsck 对我来说,已经变成了"最后的止血手段",而不是常规维护方式。

相关推荐
REDcker6 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
大耳朵-小飞象8 小时前
电力安全运维的智能密码:BACS如何破解设备全生命周期管理难题,让电网安全“看得见、管得住”?
运维·安全·智慧城市·能耗系统·楼宇智控·未来生活
ANSIOT8 小时前
安朔科技蓝牙无感开锁方案,靠近自动解锁
网络·科技·物联网
极客侃科技8 小时前
制造企业 MES/APS 选型:SAP PP/DS 集成、ERP-MES 边界划分与一体化架构要点
运维·架构·制造
晏宁科技YaningAI8 小时前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
HLC++9 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室10 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
神奇霸王龙11 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
生活爱好者!11 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
groundhappy12 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python