|
前天自己的硬盘数据丢失了,在阅读了论坛相关文章后,努力之下已全数找回,作为回馈,现将此经历与大家分享!
请注意:如果你也遇到了同样的问题,并且希望通过这篇文章来解决它,请你在阅读完全文后再决定是否开始修复,勿要在未通读全文的情况下实际进行任何文中提到的步骤。
几天前一次开机后KV2009自动杀毒,3分钟后导致机子死机,热启无效。冷启后检测DMI POOL,原本中文的操作系统选单变成了纯英文的,而且系统无法启动了。之后使用光盘加载老毛桃PE,发现原先的盘符仅剩下E,F,G(硬盘250G,共5个分区),C盘与D盘消失了。初认为分区表损坏,使用DISKGEN修复后,重启,居然PE也无法进入了,一直黑屏,然后键盘失灵,只能冷启。(这里我很想不通,难道是主板硬件问题,硬盘的问题也是由此导致?高手赐教!)无奈,转移硬盘到一朋友机器上,启动系统,C,D两盘是出现了,但无法打开,提示“文件或目录损坏且无法打开”这样的错误信息。CHKDSK这样的命令也无法使用,在一句简短的错误提示后便终止了运行。错误提示大概是“无法确定卷状态”之类的。(有人说CHKDSK是个对数据修复来说极度危险的工具,不知是否正确?高手赐教!)
偶然机遇让我知道NTFS还有个MFT这样的东西存在(至于详细资料还请GOOGLE),或许是它损坏的缘故,也就摸索着去修复MFT。
此处以修复我的硬盘上第二个分区为例,即D盘的修复。
修复工具:winhex15.3 SR-1
首先通过winhex打开我的硬盘(这里是HD0),然后打开第二个分区,即分区2,打开的时候会提示一个\$MFT无法在offset某某某处无法找到的错误。确定后分区2便打开了。现在通过分区2的引导扇区(模板)找到MFT的开始位置,单位为簇(详细资料请GOOGLE),通过WINHEX的跳转功能跳至该簇对应的偏移处(如果细心的话,会发现此处的偏移正是打开分区2时提示的offset,当然提示中还提到另外一个offset,它是MFTmirr对应的偏移,MFTMirr是MFT的一个备份,它们2个的数据应该相同,注意MFTMirr的大小是4KB,由于MFT中单个记录的大小是1KB,所以MFTMirr只记录了开始的4个记录)。正常情况下开始4个字节应该是NTFS,如果是MFT损坏的话,你可能发现NTFS这几个字符与该扇区的初始位置有些偏移,例如我这里的情况,前2个记录偏移了24个字节,在后面的2个记录又再偏移了几个字节。校正这些偏移后就能是MFT恢复正常了。由于4个错误记录后面的记录都是好的,修复的时候可以参考后面的一些记录。每个记录的格式也可以通过WINHEX菜单[查看]-[模板管理器]中的NTFS FILE RECORD查看(我发现这个模板真是很不错!)。
修复完成后保存修改,然后重新打开分区2,如果没出意外的话,WINHEX就能正确的读取到目录和文件的信息了。这个时候便可以通过在上面的文件夹上右键,选择[恢复/复制…]菜单恢复你的目录到一个新的地方。(在我恢复第一个分区的时候,尽管MFT已经手动恢复好,但是分区还是无法打开,XP还需要运行CHKDSK进行一遍修复后才可以打开,修复是否对数据有无损害我且不说,就是修复完成后也会在盘里出现一大堆的用于存放还原后文件的目录,在这里目录里完全找不到原先目录层次的样子。如果能第一时间把数据先备份出来,那就应该第一时间备份出来,所以在恢复第二个分区时我便使用WINHEX直接备份数据,依照恢复的数据来看,我还是很满意的)。
很抱歉这里没有使用到一张图片,让你一目了然。这是因为此文章是写于分区恢复之后,过程中的一些截图已无法找到了,不过我会在附件中贴上修改前MFT的前4个字节与修改完成后MFT中的前4个字节(当时也是为了安全起见,在修改前备份了一下)。
多谢 #4 xulemeng 指出的一处笔误。 |
|