分类: 服务器与存储
2009-03-22 22:47:07
尽管VMware提供封装技术和抽象技术,使我们受益匪浅,但数据保护领域发生的基本变革也带来了各项挑战。即使出现了VMware虚拟化,备份人员依然是牢骚最多的IT人员。最大的挑战在于保证数据的一致性,解决VMware物理资源过度消耗的问题。
VMware能将物理服务器封装成大型的硬盘图像文件--虚拟机磁盘格式(VMDK)文件,因此我们不禁认为:备份整台服务器应该和备份这些VMDK文件(当然也包括相关的配置文件)一样简单。
但是在大多数情况下,事实并非如此。除非已经关闭虚拟机(VM),否则,在运行状态下备份VM不能覆盖所有文件。换句话说,这种备份方式不能保证数据的一致性,因而也不能保证已恢复的VM包含足够的精确信息,不能说明服务器已成功恢复。
至于资源过度消耗的问题,这是虚拟化的副作用。利用VMware使系统虚拟化的一个关键原因是,将资源消耗集中在较少的物理服务器中,从而减少大多数IT服务器架构都存在的空闲周期。但是,这么也做带来了不良影响--无法找到足够资源,使数据备份不受阻碍地运行。
备份触到了VMware内部的脆弱之处:VMware处理过量磁盘和网络I/O的能力很弱。实际上,决定是否将物理服务器虚拟化取决于物理服务器中的磁盘密度、网络I/O。毋庸置疑,备份负载是VMware服务器承担的最大负载。
但是,的确有方法能解决这些问题,并且在某些情况下,比标准的物理服务器备份和恢复方法更加出众。但是,人们对这些方法存在一些误解,对第三方备份/恢复产品提供的实施措施也存在误解。实际上,许多管理员依然缺乏有效实现备份和恢复的方法,道路充满挫折。
方法1:在每个VM中安装本地备份程序
工作原理:这是一种传统的备份方法,在每个VM中安装备份程序,就像以前在每台物理服务器中安装备份程序。如下图所示,数据通过LAN流入备份/恢复设施,以往在本地物理服务器中安装备份程序时,数据流向也如此。
这种方法的优点如下:
备份程序的安装和配置与在物理服务器中的安装和配置十分相似,所以无需专门技巧和程式变化。
恢复过程没有发生变化,与将文件恢复到物理服务器的过程十分相似。
这样,就有可能恢复文件;这一点在我们采用其它方法时显得更加重要。
也有可能实现完全备份和增量备份,同样,在我们讨论其它方法时,这一点显得尤为重要。
如果你采用专门的应用感知备份程序,如SQL或Exchange,这将有助于实现应用程序数据的一致性,由此实现的备份在应用程序上具有一致性。
这种方法的缺点如下:
由于所有的备份都在同一台服务器中运行,因而你需要十分小心,不要过度消耗VMware主机资源。
尽管服务器能封装成少量的大型VMDK文件,但备份程序对此一无所知,也就不能利用这一点提供快速的备份或恢复能力;而进行灾难恢复时,需要快速、全面地恢复服务器,从这点上讲,这种方法价值不大。
部署技巧
在物理服务器中,同时运行数据备份可能问题不大,因为物理服务器具有充足的闲置资源,但是对VMware虚拟架构而言,闲置资源已得到充分利用,多个备份操作就有可能阻塞物理服务器。从而,在进行虚拟化以后,应该修改备份手册,通过备份窗口避免资源过度重叠。
一个VM只允许一条数据流。VM的VMDK文件通常寄存在一个VMFS卷中,多条数据流操作很容易覆盖VMFS卷。因此,除非VMDK文件隔离在独立卷(RDM、 iSCSI LUN、或独立的VMFS卷)中,否则备份就应该单流运行,而不是多流运行。
方法2:ESX Service Console中安装备份程序
工作原理:这种方法是在ESX Service Console在安装备份程序,按下图备份VM中潜在的VMDK文件组。Service Console采用红帽子Linux操作系统,因此能够使用Linux备份程序。
这种方法的优点包括:
只需一个备份程序就能备份所有的VM,而不是一台VM配备一个备份程序。
通过这种方法,VM资源能完全备份,只需简单备份少量的大型VMDK文件。
图像能快速恢复,因为只需恢复大型图像,而不必查找大量的小型图像。
这种方法的缺点包括:
需要脚本才能自动关闭、快照和启动VM。为了保证备份过程应用程序数据的一致性,必须这么做。
不可能恢复文件,这种方法只能备份和恢复图像。另外,这也意味着不能实现增量备份。
VNware指出,其开发流程包括从ESX Server移除Service Console。VMware的ESX Server 3i在这一点上迈出了第一步。
部署技巧
为了保证应用程序的一致性,在备份VMDK之前应该关闭VM。
VMDK文件在备份窗口中静止不动。
很不幸,备份过程中VM失去效用。
VMDK文件利用Service Console中的备份程序进行备份。
如果不能关机,可以利用VMware快照功能拍摄运行中的VM,获取即时备份。
备份数据停留在相同的状态,因而不能保证数据的一致性。
同样,实现自动化也需要脚本。
不是所有的备份程序都支持这种方法,所以你需要事先进行调查。
对于应用程序数据一致性的备份,利用VSS使应用程序在备份之前停止运行。但是,这需要非常复杂的脚本。
你可以利用ESX Service Console 中的VCB设施,获取运行状态下虚拟机的快照:
vcbMounter设施:
创建VM的静态快照。
将快照投射到一组文件中,文件可能处于控制台的本地目录中,也可能处于LAN的远程目录中。
利用ESX控制台支持的备份软件对本地文件进行备份和恢复。
vcbRestore设施:
将VM恢复到初始站点或者其它站点,
如果你决定冒险采用脚本技术,就会发现错误校验和更正是脚本技术最难的一个方面,需要编写大量代码。
方法3:VMware集中备份(VCB-Proxy)
工作原理:这种方法涉及一组VMware设施,通常称为VMware集中备份。这种方法使集中的Windows 2003代理服务器中的非LAN备份与相同的SAN卷相连,称为ESX Server。随后,数据通过第三方备份软件传送到代理服务器中,作为后序备份。这种方法比上述两种方法更为复杂,包括以下组件:
备份代理服务器:
服务器能与VMware主机访问相同的卷。
代理服务器中加载/输出VMDK文件的图像。
这种加载/输出图像通过寄存在代理服务器中的备份程序实现备份。
VCB框架:
ESX服务器中的"同步推动器"能刷新文件系统,创建快照。
VCB代理服务器中的"vLUN推动器"允许服务器中存在VMDK文件。
采用VCB自动工作流,命令行设施(vcbMounter/vcbRestore)发挥作用。
备份软件集成模块:
模块集成到VCB框架的组件中。
VMware和备份程序都能开发并支持这种模块。
备份程序之间的集成和使用变量相对简单。
在此点击,查看采用备份代理服务器的VMware集中备份示意图。
采用备份代理服务器的VMware集中备份能够执行非LAN文件备份和非LAN图像备份。但是,这两种方法的实现途径截然不同。
VCB文件备份/恢复是在VCB代理服务器中加载VMDK文件,具体步骤如下:
1备份工作要求VCB框架获取VM快照,在VCB代理服务器中加载VB快照,加载路径包括SAN、C:mnt等。
2利用备份程序备份(完全、增量、差异备份)目录/文件。
3备份程序要求VCB框架卸载VM快照,使VM不再具有快照功能。
4通过安装在VM中的备份程序,文件经由LAN恢复到初始VM中。
在此点击,查看文件备份和恢复的VCB-Proxy工作流。
VCB图像备份/恢复是将VMDK文件输出到VCB代理服务器中,具体步骤如下:
1.备份工作要求VCB框架获取VM快照,并输出快照,输出路径包括SAN、C:mnt等。
2.系统文件等输出的图像文件通过备份程序进行备份。
3.备份软件要求VCB框架卸载VM快照,使VM不再具有快照功能。
4.利用备份程序,将输出的VM图像恢复到一个VMware能够访问的临时区域,该区域可能位于Proxy Server 或ESX Service Console,由此完成恢复工作。
5.VM图像加载到ESX主机中的指定位置。
在此点击,查看图像备份和恢复的VCB-Proxy工作流。
这种方法的优点包括:
你可以利用VCB Proxy中一个备份程序,备份所有的VM,而不必每个VM配备一个程序。
通过这种方法,VM资源能完全备份,只需简单备份少量的大型VMDK文件。
图像能快速恢复,因为只需恢复大型图像,而不必查找大量的小型图像。
将备份过程转移到VCB代理服务器中,降低了ESX服务器的开销。
这种备份方法无需LAN,在SAN中也能实现,从理论上讲,备份速度比基于LAN的备份方法要快。
这种方法的缺点包括:
能否实现自动化、能否方便地加以使用取决于第三方备份软件的能力。
如果没有某种形式的备份软件集成到备份过程中,要部署这种方法就变得非常复杂。
如果你想将文件直接恢复到VM中,就需要在VM中安装备份软件。
对于没有集成VSS的Windows系统,由VCB提供的图像备份会使数据处于相同的状态。
VCB不提供Windows系统状态的恢复机制,尽管有可能成功实现服务器完全恢复,但是如果在操作VM时,系统状态紊乱,就不能保证完全恢复。
部署技巧
请记住,VCB不是备份/恢复程序,而是一组能集成到第三方备份应用程序中的设施。
Proxy Server不是虚拟机。
VCB不能安装在虚拟中心的服务器中,也不能注册。
Proxy Server需要安装Windows 2003 Server、SP1或R2。
Proxy Server必须和ESX Servers安装在相同的LUN区域中。
VCB Proxy Server不支持多路径。
如果需要恢复文件,但你又不想为每个VM都安装备份程序,你就可以创建一个仅用于恢复的VM,这个VM包含备份和恢复程序,将文件恢复到这个VM中,然后通过网络共享将文件迁移到正确的目标VM中。