testdisk是mbr损坏时安全恢复分区表的首选工具,它通过扫描磁盘底层签名反推原始分区边界,支持quick search快速识别丢失分区,预览文件确认后再write写入,最后需partprobe或重启刷新分区表。

MBR 损坏时,testdisk 是唯一能安全恢复分区表的工具——它不靠猜测起始扇区,而是扫描磁盘底层签名反推原始分区边界。
确认确实是MBR损坏,不是文件系统问题
先跑两行命令快速定性:
-
lsblk:如果只显示sda,但没有sda1、sda2等子项,说明内核根本没读到有效分区条目 -
sudo fdisk -l /dev/sda:若报Unable to open /dev/sda或输出为空/只有警告(如Invalid flag 0x0000),基本可锁定 MBR 损坏 - 别急着运行
e2fsck:如果/dev/sda1这个设备节点都不存在,e2fsck根本无从下手
安装并启动testdisk,必须用sudo且目标盘未挂载
多数发行版默认不带 testdisk,装错方式会导致权限失败:
- Debian/Ubuntu:
sudo apt install testdisk(禁用snap或flatpak版本) - RHEL/CentOS/Fedora:
sudo dnf install testdisk(旧版用yum) - 运行前确认目标盘未挂载:
mount | grep sda和lsblk都不应显示sda1被挂载 - 启动命令:
sudo testdisk /dev/sda(直接指定设备,避免选错)
选Intel类型→Analyse→Quick Search→预览再Write
MBR 场景下不用纠结 GPT,直接走标准路径:
- 选
[Intel](即 MBR 分区表,即使你后来转过 GPT,只要当前是 MBR 损坏就选这个) - 进
[Analyse]→ 按回车 → 自动触发[Quick Search] - 90% 的断电、误删场景,
Quick Search几秒内就能列出原分区(带*表示活动,D表示已删除) - 高亮目标分区后,按
P键预览文件列表——这是最关键的验证步骤,看到熟悉的目录结构才说明识别正确 - 确认无误后按
Enter选中,再选[Write],输入Y写入 MBR 扇区
写完必须强制重读分区表或重启,否则系统仍看不到分区
testdisk 写的是物理扇区,内核不会自动刷新缓存:
- 立即执行:
sudo partprobe /dev/sda(成功则静默返回;若报device is busy,说明有进程正访问该盘,需先fuser -v /dev/sda查杀) - 若
partprobe失败或无效,直接重启——这是最稳妥的方式 - 重启后检查:
lsblk应显示sda1等子项;sudo file -s /dev/sda1应返回类似Linux rev 1.0 ext4 filesystem data - 如果
FSTYPE仍为空,说明文件系统超级块也坏了,这时才轮到e2fsck -f /dev/sda1
真正容易被忽略的是:MBR 损坏常伴随引导代码丢失,testdisk 只修分区表,不修 GRUB。分区恢复后若系统盘仍无法启动,得进 Live 环境重装引导。











