最近,我对ESXi主机上的硬盘驱动器造成了非常小但非常重要的损坏,影响了几个VM。有一个我非常想恢复的文件,当然我的常规备份不知何故。最近的副本为6个月大。原来我需要那个...哎呀。
细节:
1)我已经在Parted Magic可启动ISO中使用ddrescue(AWESOME工具)来恢复有问题的VM驱动器的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驱动程序,那么也许我可以修改驱动程序以避免崩溃。这些需要电源周期的停工让整个ddrescue事情变得更加痛苦。
编辑2:
在“ ls”包含所涉及文件的目录后,立即使用“ end_request:I / O错误,dev sda,扇区7238859”日志消息,已将ddrescue操作定位到该扇区。我目前计划借此机会,如果成功的话,将该扇区写回到活动磁盘。也许我可以用这种方式慢慢地将我的方式重建到有问题的文件中。不过,大多数可恢复的坏道是在20次以下重试中恢复的。到目前为止,这一次已超过150次。
编辑3:
我需要的文件中'ls'出现的扇区错误是完全不合作的(一千次尝试了一整夜,没有运气)。我希望当您执行“ ls”时仅仅是元数据?:)
我确实拥有大多数ddrescue副本,但是不会挂载(或不带文件挂载)。损坏的驱动器在大多数情况下都可以正确安装……也许损坏的驱动器“安装”上的IO错误又落回到了可以工作的镜像上?
**编辑4:**
我已经放弃了,等待进一步的建议。我已经卸下驱动器并重建了盒子。我会一直开车,以防万一。
ddrescue
或其他类似工具复制尽可能多的扇区。不要从损坏的磁盘执行任何文件系统级的恢复,而要从副本进行恢复。