针对损坏驱动器(IO 错误)的高级 NTFS 分区文件恢复技术?

针对损坏驱动器(IO 错误)的高级 NTFS 分区文件恢复技术?

最近,我的 ESXi 主机上的硬盘驱动器遭受了极其微小但相当严重的损坏,影响了几个虚拟机。有一个我非常想恢复的文件,当然它不知何故从我的常规备份中删除了。最近的副本是 6 个月前的。原来我需要那个......哎呀。

细节:

1) 我在 Parted Magic 可启动 ISO 中使用了 ddrescue (很棒的工具)来恢复 99.98% 的相关虚拟机驱动器。不幸的是,这些错误似乎几乎完全是最近的文件写入造成的……所以当然它们正是我最需要恢复的扇区。

2) 驱动器在读取坏扇区时出现 IO 错误,但偶尔会成功读取以前的坏扇区!所以,恢复还是有可能的。比这稍多一点的情况是,会出现某种重大故障,导致驱动器转速下降和恢复。哦,大约 1/4 的转速下降不会恢复。 (需要硬重启,关机不起作用)最后,几乎每个坏扇区读取都会发出悦耳的咔嗒声。

3)重要的VM磁盘是NTFS格式的。

4) 我(通常)可以以只读方式挂载损坏的 NTFS 卷,并且可以(稍微少一些)导航到包含我需要的文件的文件夹。但是,当我对文件夹执行“ls”操作时,相关文件似乎总是给出 IO 错误。文件夹中的其他文件不会出现IO错误。

5)我尝试过使用ntfsinfo/etc...这听起来正是我需要的...但它根本不会打开分区。 (令人沮丧,因为“安装”通常会)

6) 该文件是 Excel 2003 时代的 XLS 文件,因此我不确定是否可以提供任何字符串来搜索原始磁盘映像。 (可能是 6 个月前版本的一部分?)

我真的很想使用 debugfs 之类的工具。然而,从手册页来看,只要 ntfs 工具能够打开分区,它们就可以完成这项工作。特别是,我想知道 IO 错误是否可能纯粹在文件的元数据中,以及目录记录是否可以很好地恢复以复制文件内容。作为最后的手段,我能检索到的任何部分文件内容都会很棒。

我之前编写过(相对简单的)内核模块,因此我可以编译一个特殊的 NTFS 模块,并启用(或添加)更多调试信息。 (该文件至少值得花几天的时间来尝试恢复......而且我在这个过程中学到了很酷的东西)

有什么指点吗?

编辑:

更多驱动器错误信息:

/var/log/messages 当然显示了很多 NTFS-fs 错误...但我终于费心翻译了我通常收到的未处理的感知代码消息:感知密钥 0x3、ASC=0x11、ASCQ=0x4。 (这似乎翻译为“未恢复的读取错误 - 自动重新分配失败”)。

当驱动器旋转时,我看到“scsi0:*BusLogic BT-958 已初始化”消息。我不确定是否是 Linux SCSI 驱动程序、ESXi 驱动程序或驱动器本身决定使驱动器停止旋转。如果是 Linux 驱动程序,那么也许我可以修改该驱动程序为了避免转速下降,整个解救过程因需要电源周期的转速下降而变得更加痛苦。

编辑2:

在“ls”包含相关文件的目录后,立即使用“end_request:I/O 错误,dev sda,扇区 7238859”日志消息,将 ddrescue 操作定位到该扇区。我目前计划抓住机会,如果成功的话,将该扇区写回活动磁盘。也许我可以通过这种方式慢慢重建有问题的文件。尽管如此,大多数可恢复的坏扇区在重试次数不到 20 次的情况下就能恢复...到目前为止,重试次数已超过 150 次...*叹息*

编辑3:

我需要的文件中来自“ls”的扇区错误完全不合作(一夜之间尝试了 1000 多次,但没有成功)。我希望这只是您执行“ls”时的元数据? :)

我确实有大部分 ddrescue 副本,但无法安装(或在没有文件的情况下安装)。损坏的驱动器在大多数情况下都能正确安装...也许损坏的驱动器上的 IO 错误会强制“安装”回退到正常工作的镜像?

** 编辑4:**

我暂时放弃了,等待进一步的建议。我已经卸下了驱动器并重建了盒子。我会保留驱动器以防万一出现问题。

答案1

根据我的经验,有几点注意事项:

  1. (原因)如果您在尝试高清访问期间听到不寻常的声音,并且(或多或少)随机磁盘位置没有出现问题,那么根本原因很可能是在磁盘表面(而不是电子设备)上 - 不幸的是,这就是可悲的设想。如果“只是”电子设备,您可能有机会恢复大部分甚至全部数据。
  2. (坏扇区)如果您还没有,请在网络上搜索磁盘制造商的可启动诊断/恢复工具,下载它,启动,运行深度测试并让它尝试重新映射坏扇区 - 这是免费方法中最好的。 请注意,坏扇区有增长的趋势 - 因此,即使您在第 2314 次读取尝试后设法捕获文件的一大块,这些尝试也很可能只会使附近的坏扇区增长,从而有效地降低恢复其他部分的机会文件的。
  3. (恢复NTFS)没有什么可以像 MS Windows 本机工具那样修复 NTFS 文件系统。如果 NTFS 映像不可安装(还要确保您尝试安装分区,而不是整个磁盘!),您可以尝试testdisk在 Linux 下进行类似操作,但如果失败,Windowschkdisk可以提供帮助。如果您在虚拟机下安装了 Windows,则可以将获取的原始映像转换ddrescue为该虚拟机支持的格式(例如VDIVMDK),将其添加到 VM 并以命令行模式启动 Windows 以修复文件系统。VBoxManage convertfromraw <filename> <outputfile>如果您使用 VirtualBox,则可以选择转换此类图像的命令以--format VDI|VMDK|VHD获得指定的输出格式。

答案2

这可能适用于您的情况,也可能不适用于您的情况,但最后的手段之一是“冷冻技巧”。看从损坏的硬盘恢复数据:“冷冻技巧”来讨论该方法。

相关内容