近期,我恰巧在工作中遇到一台已经崩溃并且无法启动的VirtualBox VM。当类似的事情发生时,有一些VirtualBox灾难恢复办法供您选择。
Oracle VM VirtualBox 作为宿主机平台可支持服务器虚拟化或桌面虚拟化。我过去曾使用VirtualBox作为虚拟桌面平台,不幸的是数据存放在系统的虚拟机内而不是外部。如果您用VirtualBox进行桌面虚拟化,需要了解这些挽救数据的VM恢复的方法。
VM恢复方法
当把关键数据放到虚拟机的VHD(virtual hard disk)上时,简直无法想象宕机后需要重复多少工作才能重建数据。最佳的办法是恢复VHD,取出数据及时制止损失。
这种情况下有两种基本的VirtualBox VM恢复方法:
1.借助某些恢复介质启动VM,访问VHD并把所需数据拷贝到其它VHD或通过网络传输到共享端。
2.把VHD作为第二硬盘挂载到其它VM,启动并从中恢复数据。
第一种方式更安全,因为VHD和VM的改变都是最少的。第二种也可行,但我更喜欢第一种,原因是它能降低错误率。
问题总发生在细节上。当我启动VirtualBox VM恢复工作时,意识到很多细节跟最初设想不同。下面是一些您在使用这些灾难恢复方法时可能遇到的挑战。
VHD的位置
首先,您要掌握待处理磁盘镜像的类型和在哪台VM上。Oracle VM VirtualBox可以创建多种VHD镜像,它们之间的差别会对VM恢复造成影响。
多数情况VHD是“Normal”状态,即每次只有一台虚拟机可以访问目标磁盘,而镜像原地址通常在某台虚拟机上。如果磁盘状态为“shareable”,可以多台机器同时使用,那么损坏可能是由相连的任意一台VM导致,故障诊断更为困难(“write-through”磁盘和“Normal”相似,唯一差别在不支持快照上)。
在这些情况下,首先要关闭(不仅是挂起!)所有跟损坏磁盘相关的VM。然后,最好是内存最大的那台VirtualBox VM启动恢复。
多台VM可以同时共享“multi-attach”磁盘,但是每台VM另有自己的差分镜像部分。这种方式在需要多台VM之间共享某个磁盘主镜像时非常有用。但也同时意味着VirtualBox灾难恢复必须在使用了问题数据的VM上执行,否则VirtualBox VM是看不到数据的。如果您不确定是哪台VM,则需要在每台机器上进行检查。
关于恢复环境的一点注释:如果可能,最好在宿主机OS上挂载问题VHD默认为为只读状态(不幸的是Windows对此支持并不好)。
一旦确认了需要恢复的VM和VHD对象,下一步就是准备数据恢复目标地。
网络vs.本地磁盘
显然,创建一个全新的空白VHD,把它挂载给VM,通过某种恢复介质启动并把所有数据拷贝出来是可行的。这种VirtualBox VM恢复方法简单:所有需要做的就是挂载和格式化新介质。但同时也带来额外的步骤:如果您需要的数据存在于宿主机而不是VHD上,那么之后还需要再拷贝出来。
您可以借助连接到共享网络节省这一步,和宿主机建立共享区域,并把数据从共享区拷贝出来。不过这种方式也有一些注意点。
首先,如果您使用的VirtualBox VM配置不能访问网络,或本地网络不能跟宿主机通讯,您需要更改配置。这仅需要更改VM而不是OS的硬件配置,因为我们在恢复过程中不会真的去启动OS。
第二步,您需要确定恢复系统是否有网络连接。举个例子,如果虚拟机的适配器在不安装额外驱动的情况下无法识别的话,您可能需要改变网络适配器类型。
最后但不是最重要的一点,网络的拷贝速度根据目标的不同可能会成为问题。如果你使用的网络连接是跟宿主机之间的专线,那么拷贝的数据量不是问题。但如果连接到高延迟和带宽紧张的实际网络时,数据拷贝会慢得多。(把大量数据拷贝到本地连接的VHD会变慢,尤其是当源和目标磁盘镜像在同一个网络系统中时。这是需要关注的另外一点。)
完全跳过VirtualBox VM
另外还有种方式就是完全跳过VirtualBox,直接把硬盘挂载到宿主机OS,并把所有文件拷贝出来。具体的方法据宿主机不同OS而异。例如在Linux中就有自带的名为libguestfs的工具。
对于Windows,已经开始一个名为WinMount的计划。VDI格式的文件可以通过Explorer加载为另外一个驱动器盘符。通过7-Zip等归档工具,.VHD格式的文件可以为非压缩格式。该工具是免费和开源的。我试用这些工具的感觉不错。
这种VirtualBox VM恢复方法完全去掉了中间媒介的影响,可以自行处理文件。但是也有一些注意点:
• 有助于VM完全关机。如果虚拟机宕机时磁盘位于不一致状态,而您希望在同样的OS下启动该虚拟机的另一个实例(或许通过.ISO镜像),先执行磁盘检查和完全关机,然后尝试离线恢复。
• 这些工具都是第三方的,所以在功能一致性上没有保障。它们在多数情况下可以工作,但是使用VirtualBox的优点之一就是它的虚拟机数据恢复(尤其是.VDI文件格式)更有保证,磁盘可以保证正确加载和成功读取。
完成VirtualBox VM的恢复不是某人的乐趣,而在VirtualBox运行良好没有任何意外时,这也不是您的必备方法。但在虚拟机宕机之间,请先熟悉一下这些灾难恢复方法。