GPL的分区表修复工具 TestDisk
我就用过一次 TestDisk,当时是恢复了 FreeBSD 上的分区,感觉很牛,不过由于 Win32 下类似的软件相当多,所以这次我的分区出问题,一开始并没有考虑用它来做恢复。
事情的起因是这样的:
Thinkpad 上随机会附带一个隐藏分区,用来做系统恢复用。前不久我在安装 ubuntu 的时候,用自带的 gparted 分区工具把它喀嚓掉了,分成两个 primary 分区,一个 ext3,一个 swap,来安装我的 ubuntu。顺便把原来那个 30 多G 的 C 盘划了一个 extended 分区出来,然后在上面创建了 1个 FAT32 和 2 个 NTFS 分区。
上周一我决定重新安装 XP,但 grub 似乎无法认出新安装 XP 的引导记录,一怒之下用 FreeDOS 启动,"fdisk /mbr" 重写了主引导记录。麻烦来了,安装完 XP 后,我发现3个逻辑分区里丢了两个。
于是开始找分区表修复工具,"Partition Table Doctor"到是很容易的发现了我丢失的两个分区,于是执行 recover —— 那两个分区没有被恢复,反而硬盘最后的两个 linux 分区也没有了!!!
我几乎都要崩溃了,开始去搜索 Linux 分区的恢复工具,就这样又找到了 TestDisk。它不像 Win32 下常见恢复工具那样带有漂亮的图形界面以及向导模式,只是提供一个 DOS-提示符窗口,显示对磁道扫描的情况,以及所有可能的分区布局。扫描完成后选择那些正确的布局方案就好了。最终我找回了所有的分区。
鉴于 TestDisk 已经成功两次挽救回我的分区,所以我这里强烈推荐这个软件,作为分区表恢复的第一选择。
使用提示:缺省扫描中,TestDisk 可能并不是扫描所有的扇区,未必能找全潜在的正确分区布局,在完成普通扫描结果后,屏幕底部会有一个"[Search! ]"的选项,执行它就是扫描所有扇区。我的分区表就是这么恢复的。
事后我试图找出灾难的原因,以及为什么普通的恢复工具反而导致更大的灾难。感觉可能是 Windows 和 Ubuntu(或许包括 FreeDOS) 对硬盘磁道参数识别不一致导致的。Windows 认为硬盘是 240 Heads,但 Ubuntu 说只有 16 Heads。最后我是在 Ubuntu 下执行的 TestDisk 搞定的。