我认为我的硬盘包含坏扇区,并且这些坏扇区位于 VM 实例所在的位置,是否有一个工具可以让我修复这些错误,或者至少将所有坏扇区从关键点转移到不太关键的地方,以便我仍然可以启动我的 VM 机器?
编辑:我担心的一件事是,由于虚拟机文件通常很大(几 GB),如果虚拟机文件上有坏扇区(无论坏扇区有多小),那么虚拟机文件就等于死了?有没有什么办法可以挽救这个可怜的虚拟机实例?
答案1
SpinRite也许能够帮助你。
答案2
如果坏扇区对应于虚拟机虚拟磁盘中未分配的扇区,则可以使用磁盘映像程序(例如 Ghost 等)将虚拟磁盘克隆到第二个虚拟磁盘。将第二个虚拟磁盘放在单独的硬盘上,以便可以替换原始驱动器。
稍微冒险一点的方法:“缩小”虚拟磁盘,然后在 VM 软件内部进行“完整克隆”可能有同样的效果。
答案3
首先,为什么要将虚拟机委托给出现坏扇区的磁盘?即使您可以恢复坏扇区(我听说过一些程序可以做到这一点),您真的有信心它们不会很快再次出现问题吗?新硬盘非常便宜。1TB 只需 80 美元。也许更少。去买一个新硬盘,使用一些没有被证明有问题的东西。话虽如此,如果这很关键,你为什么不使用 RAID?RAID 1 镜像将有助于确保您不会丢失任何东西 - 而且它需要额外花费 80 美元(对于 1TB 驱动器,如果您的主板不支持,可能还需要额外花费 50 美元购买控制器)。
答案4
您可能应该假设虚拟硬盘已损坏,并且不应该隐式信任其中的任何数据,即使您可以使其可启动或恢复文件。
假设您是一名优秀的系统管理员,最好的办法是创建一个新的虚拟机并从备份中恢复数据。:)
如果您没有已知的良好备份,我建议您使用 dd_rescue 将整个硬盘映像到至少一个硬盘驱动器,然后尝试其他一些恢复方法(例如在主机上运行 chkdsk /r)。一旦虚拟磁盘文件可以复制,您就可以尝试启动副本并恢复文件。如果无法启动,您可以尝试将虚拟磁盘文件附加到其他 VM 以恢复文件。同样,您应该将任何恢复的文件视为可能已损坏,并应在将其重新投入生产之前验证任何恢复的数据。
这里有两个教训:首先,您应该始终尝试至少将虚拟机存储在 RAID1 上,或者如果您想防止静默数据损坏,则应存储在 ZFS 上。当然,还要经常进行备份。