热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

VirtualBox虚拟机数据恢复的两种方法

近期,我恰巧在工作中遇到一台已经崩溃并且无法启动的VirtualBoxVM。当类似的事情发生时,有一些VirtualBox灾难恢复办法供您选择。OracleVMVirtualBox作为宿主机平台可支持服务器虚拟化或桌面虚拟化。我过去曾使用VirtualBox作为虚拟桌面平台,不幸的是数

  近期,我恰巧在工作中遇到一台已经崩溃并且无法启动的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运行良好没有任何意外时,这也不是您的必备方法。但在虚拟机宕机之间,请先熟悉一下这些灾难恢复方法。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
author-avatar
D3LJ664D5LJ81111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有