vRanger Pro 4.5备份与恢复指南——性能篇

Vizioncore公司(已被Quest Software公司收购)最近发布了4.5版本的虚拟化备份产品——vRanger Pro。这个新版本包括许多新特性,比如支持变化块跟踪(CBT)这项VMware的vStorage APIs,还有一项称为Active Block Mapping(活动块映射)的新技术,以及基于对象的微软Exchange Server恢复。本文将对vRanger Pro 4.5这个新版本做一个概览并提供一些小技巧以及其他能够让你更好使用它的帮助信息。

变化块跟踪(CBT)与活动块映射的好处

支持变化块跟踪(CBT)对于Vizioncore vRanger Pro 4.5来讲是一项非常关键的特性,因为一时间几乎所有其他备份软件都支持这项功能了。CBT允许备份软件更快的做增量备份,因为VMkernel会跟踪所有距上次备份之后变化的数据块,所以备份软件就无需自己去开发插件之类的程序来跟踪这些变化的块了,大大简化了备份软件复杂度,同时又提高了效率。

活动块映射技术是Vizioncore特有的技术,这项技术可以实现不备份在操作系统层面已经被删除的文件。所有在Windows的NTFS文件系统下的文件在存放文件系统元数据的主文件表 (MFT)都有一个条目对应,这个条目用于记录文件在磁盘上所存储的位置。当某个文件被删除时,系统会在MFT对应这个文件的条目上做一个删除标记,同时这个文件原先所存储的磁盘空间也被标记为空闲,可以写入。但是,对应这个文件的实体内容依然会存放在磁盘的对应位置上,这些位置上的内容并没有被清零(译者注:传统环境下有必要被清零),经过相当一段时间之后,这些块可能被新数据所覆盖。但是在没有被覆写新数据之前,将这些块备份下来是一种时间和资源上极大的浪费。(译者注:这些块又被称为“僵尸块”,“文件尸体”,详见《大话存储》) 然而有了活动块映射技术功能,vRanger便会从对应的虚拟机磁盘(VMDK)文件中读出对应其中NTFS文件系统的MFT表来扫描到底哪些块是被占用的,哪些不被占用,这个过程只耗费不到一秒钟的时间,不会产生任何开销。有了这些信息,vRanger便可以建立一个这份VMDK虚拟机磁盘文件中被真正占用的块所对应的磁盘空间,从而可以只备份这些被占用的块了。(译者注:所有文件系统都会使用bitmap来记录当前文件系统所在的底层磁盘/卷空间的占用和空闲状态,备份软件只要将这份位图从对应的虚拟机文件中提取出来便可知道到底这个文件中哪些区段是空闲的,然后备份软件只需要将文件中被占用的部分从底层磁盘中读取出来连续存放即可,当恢复的时候,系统会根据这份位图来实时地向对应的VMDK中填入0(在内存中填入),之后将数据发送给恢复目标介质)。

跳过被删除的数据并不仅仅对全备份有效果,它对增量备份或者差异备份也同样很有效。在vRanger Pro 4.5中,活动块映射技术与变化块跟踪(CBT)会被配合使用从而实现加速增量备份。比如,虽然变化块跟踪(CBT)对虚拟机VMDK文件中的NTFS文件系统一无所知,无法感知到其中任何信息,但是活动块映射技术却可以。所以,如果VMDK中NTFS文件系统中的某些文件相对于上一次备份来讲是已经被删除了的,那么变化块跟踪(CBT)在备份的时候就会包含这些块,随后活动块映射技术会扫描位图以确认这些块是否应当被备份,相当于一个过滤器的作用。通过结合使用活动块映射技术与变化块跟踪(CBT),备份窗口会变得更小,需要备份的数据量也会变得更小,上层文件系统中被删除的数据不会被处理、压缩、发送或者存储。(译者注:VMkernel中的变化块跟踪(CBT)功能会记录所有据上次备份之后系统对VMDK文件(虚拟机磁盘)所做的所有写I/O,所以虚拟机文件系统中删除某个文件,实际上会更改文件系统元数据,会对底层硬盘进行写入操作,所以此时VMkernel会记录下这些改动的块,下次备份时就需要备份了。)

备份虚拟机

vRanger支持对3.0.1到4.1之间版本的ESX Server主机上的所有虚拟机进行备份,也支持对任何3.5到4.1版本之间的ESXi主机上的虚拟机进行备份。但是由于VMware本身的限制,vRanger不支持ESXi免费版本上的虚拟机备份。依赖于你所使用的虚拟机服务器类型(ESX或者ESXi)以及你的存储方面的配置,vRanger提供三种不同的方式来备份虚拟机。

第一种虚拟机备份方式被称为“直达目标”法,这种方法只能用于备份ESX主机上的虚拟机。使用“直达目标”模式时,vRanger使用一系列的API调用以及SSH命令来准备和控制数据传输。数据直接从主机端被传送到备份目标介质中,期间使用ESX Console控制。这种备份方式可以实现可扩展的多个备份任务并行,但是却对Service Console上的CPU以及网络的负担有所加重。当备份任务执行过程中,一个客户端代理会被注入到Service Console中来执行备份工作,当备份结束之后,这个代理会被移除。当使用这种方式时,需要确保你的Service Console网络带宽足以支撑这些由于备份而产生的额外数据。同时,你需要在每台主机上再创建一个Service Console接口来连接这个只存在备份目标介质以及vRanger服务器的隔离网络。

另外两个备份方式则只针对ESXi主机了,通过在源虚拟机以及目标备份存储介质之间增加一个代理角色来实现,代理既可以是一台物理服务器也可以用一台安装有vRanger的虚拟机来运行。代理可以用两种方式运行:LAN模式或者LAN-Free模式。

在LAN模式下,所有的数据都是从ESX/ESXi主机流出,经过网络传输到代理服务器然后再到备份目标介质中保存。这种通过网络的传输方式是比较慢而且低效的,因为数据传输占用了管理网络的带宽。在LAN-Free模式中,vStorage API被充分利用从而可以让代理服务器直接连接到虚拟机服务器所连接的存储设备,这样的话就不需要通过管理网络来传输数据了。为了使用LAN-Free方式,代理服务器要求必须可以直接连接到存储设备上,比如使用iSCSI或者Fibre Channel方式连接,但是这种方式却不支持NFS存储,因为vStorage APIs只支持块级别访问的存储设备。同时,LAN-Free模式下也不能够使用虚拟机来运行vRanger代理角色,因为vRanger当前并不支持将一个虚拟机的卷热挂载到另一个虚拟机中。Vizioncore计划在将来的版本中支持使用虚拟机运行vRanger代理。另外,当vRanger运行在某台虚拟机上的时候,你不能使用vRanger来备份这台虚拟机。

不管是在哪种代理模式下,由于所有的数据都需要流经它,所以代理服务器可能成为瓶颈。但是可以部署多台vRanger服务器来解决这个问题,但是这多台vRanger服务器也必须各自单独管理,因为目前为止并没有一个集中的管理模块来管理这种环境。但是请一定注意,你不能够针对同一个LUN来让多台vRanger服务器共同管理针对它的备份。VMware不推荐同时多台Windows服务器访问同一个VMFS卷,因为它们无法感知到VMFS文件系统的信息以及ESX/ESXi所使用的特殊的锁机制。

应用一致性备份以及虚拟机数据恢复

为了实现应用一致性的数据备份,vRanger引入了一个特殊的VSS驱动(vzshadow.exe),这个驱动由Vizioncore开发,目的是为了应对一些VMware 工具中对VSS的不同实现。Vmware开发的Vmware工具的VSS实现在特定的操作系统(Windows 2003/2008)下工作有问题,这也就是为何Vizioncore单独开发了他们自己的VSS驱动的原因。同时你也必须安装Microsoft Visual C++ 2008 Redistributable Package才可以正常运行。除了对Windows Server2003以及2008提供应用一致性的备份之外,Vizioncore VSS驱动也同时被用来对Exchange Server的日志进行裁剪。(译者注:在进行应用级别的备份的时候,为了形成一个完整可用的一致性数据备份,每次备份都需要对应用程序的日志进行裁剪,生成新的日志文件,之前的被备份到备份集中。) 从vSphere4.1开始,Vmware对它的VSS驱动做了一些更改,现在已经支持Windows 2003以及2008服务器了。所以Vizioncore的VSS驱动也就不需要了,除非你想实现Exchange日志级别的一致性保护。

虽然vRanger 4.5提供应用一致性的备份,但是当你准备恢复数据的时候,会有三种级别的一致性,每一种都会对数据一致性有不同程度的影响。

1.Crash Consistent(冲突一致性):这种相当于直接对服务器拔下电源之后磁盘上的数据状态。当发生这种情况时,服务器上所运行的操作系统以及应用程序根本来不及将存储在各自缓存中的脏数据写入磁盘。所以,如果备份的时候,某个应用程序处于打开状态,那么此时备份之后的数据当恢复的时候就可能是不一致的。

2.文件系统级别的一致性:这种方式是通过将操作系统中的文件系统进行刷盘处理来实现的,这种机制可以让文件系统将文件系统缓存中的任何脏数据写入磁盘,之后再发起备份。这种机制利用了VMware工具中的Sync Driver来实现,这种驱动并不会感知任何应用程序的缓存,但是它的确可以保障操作系统的文件系统级别的一致性,从而可以保障应用程序对应的文件的一致性,但是依然无法保证应用程序级别的一致性。

3.应用程序级别的一致性:这种方式是通过与对应的应用程序通信从而将应用程序置于一种静默或者归档模式从而将任何暂挂的交易或者脏数据从应用程序的缓存、文件系统的缓存端到端的刷入磁盘,这样的话,备份下来的数据就是完全可靠的了。这种方式是利用微软的VSS平台来实现的,VMware工具中提供了VSS驱动程序。

VSS可以实现诸如SQL Server以及Exchange这样的基于交易的应用程序的一致性,这一点是非常重要的。一旦这些应用程序处于静默状态,系统会对其对应的底层卷或者磁盘做一份快照,然后备份程序开始把这份快照对应的数据影像备份下来。但是,为了实现纯粹的应用程序级别的一致性备份,下列条件必须满足:

虚拟机中运行的应用程序(比如Exchange)必须打开对VSS的支持,也就是说对应的应用程序必须作为一个VSS Writer的角色存在。
对应的备份程序,比如vRanger必须作为一个VSS Requestor的角色存在。
虚拟机平台中对VSS的支持必须被正确的实现。

对于vRanger只有在Windows的虚拟机上才可以支持单个文件级别的恢复,Linux或者其他类型的操作系统不支持这种功能。但是这并不意味着在非Windows操作系统上就不能实现单个文件级别的恢复了。你可以选择将虚拟机恢复到另外一个存储空间或者目录,或者选择将备份之后的虚拟机虚拟磁盘文件挂载到原先的虚拟机中,然后将文件从其中拷贝出来,或者使用一个额外的虚拟机挂载这个虚拟磁盘然后从中读出对应的文件,然后将其导回原先的虚拟机。