存储 频道

卷影复制服务(VSS)原理介绍

  Microsoft Exchange Server 2003 使用包含在Microsoft Windows Server2003操作系统中的卷影复制服务(VSS)来生成Exchange Server 2003 数据库和日志文件的卷影副本。通过使用VSS,您也许能够在几分钟中内恢复数据库,不管数据库的大小。快速恢复能力主要取决于VSS方案中的提供程序组件的能力。

  因为有许多不同的VSS 策略可用,您必须理解和测试方案的容量、性能和恢复,来确保在您的部署中您所需要的数据被成功恢复。您也必须确认在VSS 框架中任何潜在的方案是可操作的。我们将要描述为Exchange Server 2003选择、测试、部署和监视VSS 方案。

  什么是VSS?

  VSS 是一套COM API,它部署了这样的架构,让卷备份能够被执行同时系统上的应用程序继续写入卷。请求者、书写器和提供程序它们在VSS架构中通讯来创建和恢复卷影副本。一个卷的影子副本及时地复制了加载在卷上处于正常状态的所有的数据。

  备份的过程包含下面这些步骤:

  1. 请求者发起备份。接着请求者通知书写器准备一个数据集便于备份。

  2. 书写器为备份准备数据。Exchange Server 2003 和其他应用程序部署根据应用程序的特定要求准备数据的书写器。在数据集准备好之后,书写器用信号通知请求者来备份数据集。

  3. 提供程序与磁盘系统交互,并管理影子副本。当被请求者指示的时候,提供程序创建影子副本。

  4. 请求者发信号将备份成功或失败的信号发送给书写器,接着完成整个备份过程。

  5. 通过分开请求者、书写器和提供程序的功能,VSS 架构使得每个组件独立于其他组件。一个请求者能够与不同的提供程序或多个书写器交互。

  Exchange 书写器随着Exchange Server 2003自动被安装。请求者能够访问Exchange 书写器只有当Exchange Server 2003 被安装在Windows Server 2003 操作系统上。VSS 备份将对Exchange Server 2003不可用如果Exchange Server 2003 安装在Microsoft Windows 2000 Server 上。

  当被请求者指示这样做的时候,Exchange 书写器准备Exchange 数据库用于备份。书写器通过暂停对数据库的所有磁盘写I/O最多达20秒来实现它。这也被称为冻结数据库。提供程序必须能够在该窗口中完成影子备份否则备份将被失败。在备份完成之后,书写器解冻数据库并恢复正常的I/O 操作。

  注意:

  Windows Server 2003 的Windows Backup能够使用缺省的基于软件的Windows VSS 提供程序来执行磁盘卷和文件的普通VSS 备份。然而,Windows Backup 不能与Exchange 书写器进行通讯,也不应该被用来制作Exchange 数据库文件的VSS 备份。几个非Microsoft 的备份应用程序部署了能够与Exchange 书写器一起工作的请求者。

  VSS 备份方法

  提供程序能够以很多种方式来执行影子备份。尽管Exchange 书写器不知道提供程序是如何创建影子副本,确认您理解了您的方案中的提供程序是如何工作的,这样的话您能够计划性能和容量。尽管对于现有的影子副本备份方法没有工业标准定义或命名约定,备份方法的大多数在总体上能够被分为克隆影子副本或快照影子副本。

  克隆影子副本

  在影子副本集中克隆影子副本是卷的完整副本。一个影子副本集是一组在同一个点被及时同步的卷影副本。

  象一个普通的副本一样,克隆是独立于原始的数据。如果所有的原始数据丢失的话,克隆仍保持不变。这不同于快照,它不完全独立于原始数据。

  您必须考虑容量对话当您使用克隆的时候。为了确保可复原的副本如果在备份的时候发生故障,您必须使用N+1 计划,N 是备份克隆的数量,您想在任何时候使用可用的备份克隆来恢复。例如,如果您决定只拥有一个备份,您仍然需要两(1+1)个目标克隆来旋转来阻止数据丢失如果在备份的时候发生故障。

  1. 提供程序供应商决定具体的方案是如何部署克隆是如何创建的。

  镜像 一些方案预先准备镜象。这些镜像备份接着被分成两份,一个备份为您提供只读的副本和一个活的生产环境中的卷。该策略几乎对生产环境中逻辑单元号(LUN)没有影响当备份和校验与完整性检查发生的时候。然而,它会对生产环境中的LUN增加显著的I/O 负载在备份之前。

  您必须确认您安排好时间来重新同步不在需要生产环境中的逻辑单元号的克隆当您在多个克隆之间旋转。对于恢复,方案也许将只读副本重新同步到生产环境中的LUN,它影响其他在线的使用相同的生产LUN的存储组直到所有的数据被备份。在恢复期间,一些存储阵列仅更改指示器到只读副本。这使它可写。

  克隆 一些方案在备份的时候创建克隆,其中LUN中所有的数据必须被拷贝到其他LUN。那些数据接着被标记为只读。该策略在前面能够消耗更少的容量,但是要求所有的数据在备份的时候被拷贝。通过这个策略,您必须知道一个特定的存储控制器能维持每个小时多少千兆字节,除了在备份的时候对生产数据库LUN 的影响。这让您正确地设计您的LUN为了最大的吞吐量,并计划该操作的时间来最小化对生产LUN的影响。

  快照影子副本

  克隆和快照之间的最重要区别是快照是不完全独立于原始数据。一般地,通过在一个点及时地定义一个标记来创建快照,同时确保数据能够被及时回滚到那个点。您能够保持多个快照,并且快照与克隆相比要求更少的空间。

  能够以几种不同的方法来创建快照。最常用的方法是copy-on-write。

  copy-on-write 方法在一个点及时地定义一个快照,接着监视原始的数据集是否更改。如果发生更改,更改被记录或跟踪在单独的位置。随着时间的过去,因此,快照的大小会继续增长,尤其当一个快照是由快速更改数据集组成。

  快照管理器提供了数据集的不同视图,通常好象它们是数据的不同完整备份。根据需要快照管理器也能够切换到数据的任何可用的视图,这样,在某种意义上,恢复数据。

  记住快照不是真正独立于数据的备份。如果原始数据破坏了的话,快照数据是没有用的因为它只包含了 数据的最近的修改。

  这种备份方法给您提供了回滚的机制,但不是真正的数据备份。该备份方法的好处是您只写入更改,而不是所有的数据,到磁盘,因此快照的实际创建发生的非常快。缺点是如果您的原始数据损坏的话您没有可恢复的备份。

  因为快照备份不提供真正的备份,大多数方案部署了额外的步骤将快照备份流出到磁带。流出到磁带对您的生产数据库LUN 的I/O 增加了显著的连续负载。

  在常规操作期间,对于加载Exchange 数据库的磁盘的I/O 负载是非常随机的,但是对于流备份来说I/O 负载是非常连续的。持续负载和随机负载的混合使的缓存很难继续保持高效,并且会导致额外的延迟并使最高吞吐量大大减少。如果您计划完全依赖快照作为您的Exchange Server 2003 的备份源,这是要考虑的一个重要因素。

  许多Exchange Server 管理员计划减少该问题的影响通过在非高峰时间制定流备份。尽管这是一个有效的策略,但什么是真正的非高峰时间也许并不很明显。

  除了响应客户端的请求,Exchange 数据库也要时间来执行在线维护。管理员能够计划该维护的时间,但经常要求一天的几个小时才能完成。即使终端用户负载很低,数据库也许忙于维护任务。您也必须考虑额外服务器负载要求用来准备或执行备份。作为非常好的实践,避免备份窗口与在线维护或高峰用户需求时间重叠。

  要决定数据库活动的高峰时间是什么,您必须通过至少几天的基线时间段真正描绘出您的数据库负载。

  Exchange 请求者和校验与完整性检查

  Exchange 数据库文件被分成了一系列相同大小的页面。这些页面中的每个都包含了验证页面上Exchange 数据的完整性的校验。如果页面上的任何数据在Exchange 服务器的控制之外发生了更改,例如,磁盘或控制器错误,校验检查将检测到该问题。Exchange 事务日志文件也部署了校验计划,但它不是基于页面的。因此,事务日志文件的损坏也能够被检测到。

  Microsoft 支持流备份API来执行Exchange 数据库的备份当它们运行的时候。流API 部署在所有版本的Windows 和Exchange Server的Windows Backup 中以及许多非Microsoft 备份应用程序中。

  注意:您必须在运行Windows Server 的计算机上安装Exchange 管理程序,来让Windows Backup 执行Exchange 在线流API 备份。

  本质上,流备份在将数据库拷贝到媒介上的时候一次拷贝一页,非常整齐。在备份的期间,每页的校验被验证,只有当数据库中的所有页都通过验证,备份才算成功完成。备份中事务日志文件也被验证。这保证特定数据库的最后一次备份是好的。

  当影子副本被创建的时候没有机会去验证数据库或事务日志的页完整性。因此,必须在影子副本被创建后执行校验与完整性检查。Microsoft 指导方针提供了在请求者上执行该验证的职责。

  请求者,或备份应用程序,对数据库和日志文件运行校验与完整性检查在备份完成之后。这对数据库和事务日志逻辑单元号(LUN)来说是非常重的流I/O负载。请求者通过运行执行Exchange Server 数据库工具 (Eseutil.exe) 来执行校验与完整性检查。它读取整个备份文件集来验证每个数据库页面和事务日志文件的单独完整性。

  在缺省情况下,Eseutil.exe 运行和存储读数据一样快,对于通常的独立于生产LUN的克隆这是最优的。然而,不是所有的VSS 备份集都独立于原始数据。

  有时候,它也许能够帮助降低校验与完整性检查的I/O 率通过增加人为的暂停在一组I/O 数字之后。通过使用Exchange Server 2003 加上 Service Pack 2,您能够增加下面的开关来增加1秒钟的暂停在一组I/O数字之后。

  /p

  这里的x 表示在经过多少I/O之后暂停将发生。例如,下面的命令增加1秒钟的暂停在每100个I/O之后:

  eseutil /K /p100

  I/O 减速部署只针对于数据库文件验证,不适用于事务日志文件验证。

  当策划您的备份方法的时候,您必须仔细考虑和计划由校验与完整性检查创建的I/O 负载。该验证是备份过程的一个重要部分不能被忽视。

  快照不能完全独立于生产LUN。因此,对快照运行校验检查肯定会影响生产LUN。克隆上的校验检查可能会或可能不会影响生产系统,取决于克隆保存在哪儿和它是如何被访问的。

  您必须仔细的监视I/O 负载和验证过程对您的终端用户和平常数据库维护的影响。仔细地使用Eseutil.exe 减速机制也许也能够让您更好地掌握验证性能和其他I/O 需求。

0
相关文章