各种文件系统损坏修复

一、文件系统损坏修复方案

本文参考:gpt plus

修复文件系统不止 xfs_repair,不同文件系统有各自的工具。下面我帮你按常见类型梳理一遍,并重点标出哪些参数可能导致数据丢失(⚠️危险),你可以直接当运维手册用。


🧰 一、ext 系列(ext2/3/4)

工具:fsck / e2fsck

基本用法

1
fsck -t ext4 /dev/sdX1

1
e2fsck /dev/sdX1

常用参数

1
2
3
4
5
e2fsck -f /dev/sdX1        # 强制检查
e2fsck -y /dev/sdX1 # 自动修复(全部 yes)
e2fsck -n /dev/sdX1 # 只读检查(不修改)
e2fsck -c /dev/sdX1 # 检查坏块
e2fsck -p /dev/sdX1 # 自动修复(安全模式)

⚠️可能导致数据丢失的参数

-y # 自动确认所有修复(可能删除损坏文件)
-f # 强制检查(一般安全,但可能触发修复逻辑)
-c # 标记坏块(可能丢数据)

👉 风险点:

损坏 inode 会被删除

orphan 文件进入 lost+found


🧰 二、XFS 文件系统

工具:xfs_repair

基本用法

1
xfs_repair /dev/sdX1

常用参数

1
2
xfs_repair -n /dev/sdX1      # 只检查,不修复
xfs_repair -L /dev/sdX1 # 清空日志(强制修复)

⚠️危险参数

-L # ⚠️清空日志(严重风险)

👉 风险说明:

会丢失未写入磁盘的数据(journal)

数据库类业务(MySQL等)风险极高


🧰 三、Btrfs 文件系统

工具:btrfs check

基本用法

1
btrfs check /dev/sdX1

修复模式(慎用)

1
btrfs check --repair /dev/sdX1

⚠️危险参数

–repair # ⚠️官方明确:可能破坏数据

👉 官方建议: 👉 不要轻易用 –repair,优先用:

1
btrfs scrub start /mountpoint

🧰 四、FAT / exFAT

工具:fsck.vfat

用法

1
fsck.vfat /dev/sdX1

参数

1
2
fsck.vfat -a /dev/sdX1   # 自动修复
fsck.vfat -r /dev/sdX1 # 交互修复

⚠️风险

-a # 自动删除损坏文件

👉 特点:

没有日志

修复通常意味着删除坏文件


🧰 五、NTFS

工具:ntfsfix

用法

1
ntfsfix /dev/sdX1

作用

修复基本错误

标记为需 Windows chkdsk

⚠️说明

👉 不是真正完整修复工具
👉 真正修复要在 Windows:

chkdsk /f /r


🧰 六、通用 fsck(自动识别)

1
fsck /dev/sdX1

👉 自动调用对应工具(ext/xfs/btrfs等)


🚨 高危操作总结(一定要记住)

这些参数是“事故高发点”:

工具 参数 风险等级 说明

1
2
3
4
5
xfs_repair	-L	🔥🔥🔥	清日志,丢数据
e2fsck -y 🔥🔥 自动删损坏文件
btrfs check --repair 🔥🔥🔥🔥 官方都不推荐
fsck.vfat -a 🔥🔥 删除损坏文件
chkdsk /f /r 🔥🔥 修复时可能丢数据

🧠 实战建议(非常重要)

✅ 安全操作流程(推荐)

1
2
umount /dev/sdX1          # 一定要先卸载
fsck -n /dev/sdX1 # 先只读检查

👉 没问题再:

1
fsck -y /dev/sdX1

✅ 生产环境建议

先做镜像:

1
dd if=/dev/sdX of=/backup.img

或使用:

1
ddrescue

❗千万别做

在线修复(挂载状态直接修)

1
直接 -y / --repair / -L

不做备份就操作


🧩 一句话总结

👉 修复工具本质不是“恢复数据”,而是“让文件系统重新一致”
👉 一致性的代价,往往就是“删除损坏数据”


如果你愿意,可以把你现在的:

文件系统类型

报错日志(dmesg / mount error)

发我,我可以帮你判断该不该修 + 用哪种方式最安全。

二、扩展

备份方案:

参考:gpt plus

好,这个就是运维里非常“值钱”的一套东西了——很多事故能不能保住数据,差别就在有没有按这个思路来。

我给你整理一版生产级「文件系统损坏 → 分级处理 SOP」,偏实战、能直接照着走的那种。


🧠 一、核心原则(先刻在脑子里)

不要急着修!
先判断,再保护数据,最后才修

👉 优先级永远是:

数据保全 > 文件系统修复 > 恢复业务


🚦 二、分级判断(现场第一步)

根据现象,把问题分 4 个等级:


🟢 Level 1:轻微异常(基本无损)

📌 表现

正常挂载

偶尔报错:

EXT4-fs warning

系统建议 fsck


✅ 处理 SOP

1
2
3
umount /dev/sdX1
e2fsck -n /dev/sdX1
e2fsck -p /dev/sdX1

👉 特点:

基本无数据丢失

可直接修



🟡 Level 2:中等损坏(可恢复)

📌 表现

挂载失败:

wrong fs type
bad superblock

dmesg 有错误

文件偶尔丢失


🚨 SOP(重点阶段)

第一步:禁止写入!!

1
mount -o ro /dev/sdX1 /mnt

👉 如果能只读挂载 → 立刻备份


第二步:做镜像(强烈建议)

1
ddrescue /dev/sdX backup.img log.txt

👉 为什么:

后面修坏了还能回滚


第三步:检查

1
e2fsck -n /dev/sdX1

第四步:修复(保守)

1
e2fsck -p /dev/sdX1

👉 不要直接 -y


⚠️风险

少量文件丢失

lost+found 出现文件



🟠 Level 3:严重损坏(高风险)

📌 表现

大量 I/O error

superblock 损坏

inode 错乱

系统提示:

UNEXPECTED INCONSISTENCY


🚨 SOP(必须严格执行)

❗第一步:立即停止操作

1
umount /dev/sdX1

❗第二步:强制镜像(必须)

1
ddrescue -f -n /dev/sdX backup.img log.txt

👉 再补:

1
ddrescue -d -r3 /dev/sdX backup.img log.txt

❗第三步:在镜像上操作!

1
2
losetup -fP backup.img
e2fsck -n /dev/loop0p1

❗第四步:修复(谨慎)

1
e2fsck /dev/loop0p1

👉 或:

e2fsck -y (仅在备份后)


⚠️高危行为(此阶段禁止)

❌ 直接 -y

❌ 直接 xfs_repair -L

❌ 在线修复


💥结果预期

部分数据丢失

文件结构损坏

需要人工整理



🔴 Level 4:灾难级(数据优先)

📌 表现

磁盘持续掉盘

SMART 报错

无法读取

挂载直接卡死


🚨 SOP(救数据模式)

❗第一步:停止一切修复尝试

👉 这一步很多人会做错!!!


❗第二步:只做数据抢救

1
ddrescue /dev/sdX backup.img log.txt

👉 参数解释:

-n:先快速拷贝好数据

-r:重试坏块


❗第三步:文件级恢复

工具:

photorec(按文件类型恢复)

testdisk(恢复分区)

extundelete


❗第四步:必要时找专业恢复

👉 特征:

RAID 崩

磁头损坏

企业级数据


💀此阶段禁忌

❌ fsck

❌ xfs_repair

❌ 写入磁盘


🧭 三、不同文件系统策略差异

FS 修复策略

ext4 可以尝试修复
XFS 谨慎,日志很关键
Btrfs 优先 scrub,少 repair
FAT 修复≈删数据
NTFS 建议 Windows 修


🧨 四、真实事故中的致命操作

这些是“翻车排行榜”:


💀 TOP1

1
e2fsck -y /dev/sdX1

👉 没备份直接干 → 文件全没


💀 TOP2

xfs_repair -L

👉 数据库直接废


💀 TOP3

btrfs check –repair

👉 官方都劝你别用


💀 TOP4

在线修复:

fsck /dev/sdX1 (挂载状态)

👉 直接破坏一致性


🧠 五、一个“老司机判断口诀”

能读 → 先拷
能挂 → 只读
要修 → 先备份
盘坏 → 别乱动


🧩 六、终极总结

👉 文件系统损坏时,你只有三种选择:

1️⃣ 保数据(最优)
2️⃣ 保结构(fsck)
3️⃣ 全部丢(误操作)


如果你愿意,我可以再帮你补一版更狠的:

👉 “不同报错日志 → 精确判断损坏级别(实战案例版)”

比如:

bad magic number

journal checksum error

I/O error

这些一眼就能判断该不该救。