苦恼有妙招 使用开源Xen部署灾难恢复策略前沿技术
在使用VMware vSphere或Citrix XenServer这样的企业级虚拟化平台时,灾难恢复策略的执行是非常简单的。但是如果您运行了开源Xen hypervisor,情况会复杂得多。
企业级平台的默认管理工具中已经包含了完整的备份和灾难恢复方案。而开源Xen平台下就需要自己来组合所需工具。开源方案缺少自动备份工具,管理员需要手动完成关键部分的备份。
为保障在灾难发生后可以快速重建虚拟架构,对于开源Xen平台有两个可以借鉴的操作实践:备份虚拟机配置文件和后端磁盘存储。通过Linux命令行可以协助过程的执行和故障诊断。
备份后端磁盘存储
对于灾备策略而言,备份后端磁盘存储是一个不错的开始,通常都是基于SAN存储进行的。
后端存储有两种不同的形式:磁盘镜像文件或裸设备。我们不需要对所有的这些虚拟机及虚拟设备做保护,只要在整个后端磁盘阵列上完成备份就可以了。但是您需要确保镜像文件是静态的,换句话说就是要先通过快照技术冻结磁盘状态,然后再对快照做备份。
通过基于SAN的快照技术可以创建快照。如果您把逻辑卷作为后端磁盘存储,可以使用如Logical Volume Manager这样的开源快照软件。只要后端存储没有被破坏,就可以在灾难发生后通过它来启动故障虚拟机。
备份配置文件
开源Xen平台另一个最佳实践就是:备份虚拟机配置文件。只需拷贝这个文件就可以很好地改善灾备策略。保存好拷贝的文件,在发生灾难后可以借助它们来恢复。
灾难发生后,我们需要尽快登录到受影响的虚拟机。如果磁盘文件和配置文件都没有被破坏,只需把它们拷贝出来,在新主机或容灾站点上就可以进行重建。如果配置文件跟后端存储的位置相关联,也可以对访问连接进行重新设置。
灾难恢复中的障碍
不过,开源Xen平台中依然会存在一些影响灾难恢复策略成功实施的因素。例如,如果配置文件丢失,我们就需要重建该文件。
Virt-manager工具可以通过导入一个现有的虚拟机来重建配置文件。导入虚拟机的过程类似于创建一个新的VM。区别之处在于不需要启动安装,只打开虚拟机本身就可以了。Virt-manager还允许客户定制包括希望使用的虚拟磁盘等硬件配置信息。
当磁盘文件被破坏时恢复过程要复杂得多。这种情况下,虽然灾难恢复策略会很复杂,但通过Linux命令行还是可以恢复文件的。挂载磁盘文件然后把所有相关内容都拷贝到新的临时地址。在拷贝了所需信息之后,再从头开始创建虚拟机。
恢复配置文件
首先,运行losetup-a建立loop设备和希望访问的镜像文件之间的连接(-a代表命令中涉及的参数)。这个命令是必须的,因为在Linux中我们无法挂载文件,只能挂载设备。该命令显示了当前所分配的所有loop设备。
在多数情况下,现在还看不到loop设备,通过/dev/loop0来指定需要把镜像文件关联到的loop设备。例如,假设镜像文件的名称是/var/lib/xen/images/vm1/disk0,使用如下的命令来创建挂载镜像文件用的loop文件:
losetup /dev/loop0 /var/lib/xen/images/vm1/disk0
如果您已经使用了一些loop设备,那么确保为新设备分配了不同的名称,例如/dev/loop1。(和其它Linux设备相同,命名排列是连续的。)
接下来,再运行losetup-a,会发现loop设备创建完成并已经跟镜像文件关联。然后通过如下包含loop设备名称的命令来分析镜像文件中已经存在的分区:
fdisk -l /dev/loop0
该命令列举出文件中所包含的所有分区及其大小等相关信息。基于这些,您可以猜测根文件系统所在分区。在开始访问该文件系统前,要先确认相关的设备文件已经创建。如果您已经安装了multipath-tools工具包,如下命令可用于完成该任务:
kpartx -a /dev/loop0
由于镜像文件使用了loop0设备,所以新的设备文件将命名为/dev/mapper/loop0p1, /dev/mapper/loop0p2依此类推。然后借助这些文件,可以完成虚拟操作系统中文件系统的挂载。无论使用的是哪种OS,都可以从Linux主机挂载虚拟分区。
现在您完全可以访问文件,而且所有的重要数据都被拷贝到了安全的地点。最后一步,通过如下命令清除所有临时设备文件:
umount /mnt
kpartx -d /dev/loop0
losetup -d /dev/loop0
使用开源Xen系统进行灾难恢复的最佳实践完全不同于企业级平台。数据中心通常在较小规模应用中使用Xen,因此多数情况下,开源Xen平台灾难恢复策略中可能遇到的种种限制都可以解决。只要您备份了虚拟机配置文件和后端磁盘存储,该灾难恢复策略就可以帮助我们克服各种可能遭遇的意外。