卷影复制服务 (VSS)

由于以下问题,备份和还原关键业务数据可能非常复杂:

  • 当生成数据的应用程序仍在运行时,通常需要备份数据。 这意味着,某些数据文件可能处于打开状态,或者可能处于不一致的状态。

  • 如果数据集很大,则很难一次备份所有数据集。

正确执行备份和还原操作需要备份应用程序、要备份的业务线应用程序以及存储管理硬件和软件之间密切协调。 卷影复制服务 (VSS) 是在 Windows Server®2003 中引入的,它有助于这些组件之间的对话,以便更好地协同工作。 当所有组件都支持 VSS 时,你可以使用它们来备份应用程序数据,无需将应用程序脱机。

VSS 协调为要备份的数据创建一致的卷影副本(也称为快照或时间点副本)所需的操作。 卷影副本可以按原样使用,也可以在以下情况下使用:

  • 你需要备份应用程序数据和系统状态信息,包括将数据存档到其他硬盘驱动器、磁带或其他可移动媒体。

  • 你是数据挖掘。

  • 正在执行磁盘到磁盘备份。

  • 你需要将数据恢复到原始逻辑单元号 (LUN) 或全新的 LUN(替换出现故障的原始 LUN),从数据丢失的情况中快速恢复正常。

使用 VSS 的 Windows 功能和应用程序包括:

VSS 的工作原理

完整的 VSS 解决方案需要以下所有基本部分:

  • VSS 服务:Windows 操作系统的一部分,可确保其他组件能够正确通信并协同工作。

  • VSS 请求者:请求实际创建卷影副本的软件(或其他高级操作,例如导入或删除它们)。 通常,这是备份应用程序。 Windows Server 备份实用程序和 System Center Data Protection Manager 应用程序是 VSS 请求程序。 非Microsoft VSS 请求者包括几乎所有在 Windows 上运行的备份软件。

  • VSS 编写器:保证我们有一致的数据集来备份的组件。 这通常作为业务线应用程序的一部分提供,例如 SQL Server 或 Exchange Server。 各种 Windows 组件(如注册表)的 VSS 编写程序都包含在 Windows 操作系统中。 许多 Windows 应用程序都包含非Microsoft VSS 编写器,这些应用程序需要在备份期间保证数据一致性。

  • VSS 提供程序:创建和维护卷影副本的组件。 这可能会在软件或硬件中发生。 Windows 操作系统包括使用写入时复制的 VSS 提供程序。 如果使用存储区域网络(SAN),请务必为 SAN 安装 VSS 硬件提供程序(如果提供)。 硬件提供程序从主机操作系统中卸载创建和维护卷影副本的任务。

下图说明了 VSS 服务如何与请求程序、编写程序和提供程序协调以创建卷的卷影副本。

显示 VSS 服务如何与请求者、编写器和提供程序协调以创建卷的卷影副本的关系图。

图 1:卷影复制服务的体系结构图

如何创建卷影副本

本部分通过列出创建卷影副本所需采取的步骤,将请求程序、编写程序和提供程序的各种角色置于上下文中。 下图显示了 VSS 如何控制请求者、编写器和提供程序的整体协调。

显示卷影复制服务如何控制请求者、编写器和提供程序的整体协调的关系图。

图 2:卷影复制创建过程

若要创建卷影副本,请求程序、编写程序和提供程序将执行以下操作:

  1. 请求者要求 VSS 枚举编写器、收集编写器元数据并准备创建卷影副本。

  2. 每个编写器都会创建需要备份的组件和数据存储的 XML 说明,并将其提供给 VSS。 编写器还定义了用于所有组件的还原方法。 VSS 向请求者提供编写器的说明,该请求程序选择要备份的组件。

  3. VSS 通知所有编写器准备其数据以创建卷影副本。

  4. 每个编写程序都会根据需要准备数据,例如完成所有未结束事务、滚动事务日志和刷新缓存。 当数据准备好进行卷影复制时,编写器会通知 VSS。

  5. VSS 告知编写者在创建卷或卷的卷影副本所需的几秒钟内暂时冻结应用程序写入 I/O 请求(读取 I/O 请求)。 不允许应用程序冻结时间超过 60 秒。 VSS 刷新文件系统缓冲区,然后冻结文件系统,这可确保正确记录文件系统元数据,并按一致顺序写入要复制的数据。

  6. VSS 告知提供程序创建卷影副本。 卷影副本创建周期不超过 10 秒,在此期间,对文件系统的所有写入 I/O 请求都将保持冻结状态。

  7. VSS 释放文件系统写入 I/O 请求。

  8. VSS 通知编写程序解除冻结应用程序写入 I/O 请求。 此时,应用程序可以继续将数据写入正在进行卷影复制的磁盘。

注意

如果编写程序保持冻结状态的时间超过 60 秒,或者提供程序提交卷影副本的时间超过 10 秒,则会中止创建卷影副本。

  1. 请求程序可以重试该过程(返回步骤 1)或通知管理员稍后重试。

  2. 如果成功创建卷影副本,VSS 会将卷影副本的位置信息返回到请求者。 在某些情况下,卷影副本可以临时作为读写卷使用,以便 VSS 和一个或多个应用程序可以在卷影副本完成之前,更改卷影副本的内容。 VSS 和应用程序进行更改后,卷影副本将变为只读。 此阶段称为自动恢复,用于在创建卷影副本之前未完成的卷上撤消任何文件系统或应用程序事务。

提供程序如何创建卷影副本

硬件或软件卷影复制提供程序使用以下方法之一创建卷影副本:

  • 完整副本:此方法在给定的时间点创建原始卷的完整副本(称为 完整副本克隆)。 此副本为只读副本。

  • 写入时复制:此方法不复制原始卷。 相反,它通过复制在给定时间点之后对卷所做的所有更改(已完成的写入 I/O 请求)来进行差异复制。

  • 重定向时写入:此方法不会复制原始卷,并且不会在给定的时间点之后对原始卷进行任何更改。 相反,它会通过将所有更改重定向到其他卷来进行差异复制。

完整复制

通常通过创建 拆分镜像 来创建完整的副本,如下所示:

  1. 原始卷和卷影副本卷是镜像卷集。

  2. 卷影副本卷与原始卷分离。 这会中断镜像连接。

镜像连接断开后,原始卷和卷影副本卷彼此独立。 原始卷继续接受所有更改(写入 I/O 请求),而卷影副本卷在中断时仍是原始数据的准确只读副本。

写入时复制方法

在写入时复制方法中,发生对原始卷的更改(但在写入 I/O 请求完成之前),将读取要修改的每个块,然后写入卷的卷影复制存储区域(也称为其 差异区域)。 卷影副本存储区域可以位于同一卷或不同卷上。 这将在更改覆盖原始卷之前保留该卷上数据块的副本。

时间 源数据(状态和数据) 卷影副本(状态和数据)
T0 原始数据:1 2 3 4 5 无副本:-
T1 缓存中的数据已更改:3 到 3' 已创建的卷影副本(仅限差异):3
T2 已覆盖的原始数据:1 2 3' 4 5 卷影副本上存储的差异和索引:3

表 1:创建卷影副本的复制时写入方法

写入时复制方法是创建卷影副本的快速方法,因为它只复制对数据所做的更改。 可将差异区域中复制的块与原始卷上更改的数据相结合,将卷还原到进行任何更改之前的状态。 如果有很多更改,则写入时复制方法会变得昂贵。

写入时重定向方法

在重定向写入方法中,每当原始卷收到更改(写入 I/O 请求),更改不会应用于原始卷。 相反,更改将写入另一个卷的卷影副本存储区域。

时间 源数据(状态和数据) 卷影副本(状态和数据)
T0 原始数据:1 2 3 4 5 无副本:-
T1 缓存中的数据已更改:3 到 3' 已创建的卷影副本(仅限差异):3'
T2 覆盖的原始数据:1 2 3 4 5 卷影副本上存储的差异和索引:3'

表 2:创建卷影副本的重定向写入方法

与写入时复制方法一样,写入时重定向方法是创建卷影副本的快速方法,因为它只复制对数据所做的更改。 差异区域中复制的块可以与原始卷上未更改的数据相结合,以创建完整、最新的数据副本。 如果有很多读取 I/O 请求,则写入时重定向方法可能会变得昂贵。

卷影复制提供程序

卷影复制提供程序有两种类型:基于硬件的提供程序和基于软件的提供程序。 还有一个系统提供程序,它是内置于 Windows 操作系统的软件提供程序。

基于硬件的提供程序

基于硬件的卷影复制提供程序通过与硬件存储适配器或控制器结合使用,充当 VSS 与硬件级别之间的接口。 创建和维护卷影副本的工作由存储阵列执行。

硬件提供程序始终获取整个 LUN 的卷影副本,但 VSS 仅公开所请求的卷或卷的卷影副本。

基于硬件的卷影复制提供程序利用 VSS 功能来定义时间点、允许数据同步、管理卷影副本,并提供与备份应用程序的通用接口。 但是,VSS 不指定基于硬件的提供程序生成和维护卷影副本的基础机制。

基于软件的提供程序

基于软件的卷影复制提供程序通常拦截并处理文件系统和卷管理器软件之间软件层中的读写 I/O 请求。

这些提供程序作为用户模式 DLL 组件和至少一个内核模式设备驱动程序(通常是存储筛选器驱动程序)实现。 与基于硬件的提供程序不同,基于软件的提供程序在软件级别(而不是硬件级别)创建卷影副本。

基于软件的卷影复制提供程序必须通过访问可用于在卷复制创建时间之前重新创建卷状态的数据集来维护 卷的时间 点视图。 示例是系统提供程序的写入时复制技术。 但是,VSS 对基于软件的提供程序用于创建和维护卷影副本的技术没有限制。

与基于硬件的提供程序相比,软件提供程序适用于范围更广的存储平台,并且它应同样适用于基本磁盘或逻辑卷。 (逻辑卷是通过合并两个或多个磁盘的空闲空间而创建的卷。)与硬件卷影副本不同,软件提供程序使用操作系统资源来维护卷影副本。

有关基本磁盘的详细信息,请参阅 “管理基本卷”。

系统提供程序

Windows 操作系统中提供了一个卷影复制提供程序,即系统提供程序。 尽管 Windows 中提供了默认的提供程序,但其他供应商可以随意提供针对其存储硬件和软件应用程序优化的实现。

为了维护 卷包含在卷影副本中的卷的时间 点视图,系统提供程序使用写入时复制技术。 自开始创建卷影副本以来,卷上已修改的块的副本存储在卷影副本存储区域中。

系统提供程序可以公开可正常写入和读取的生产卷。 当需要卷影副本时,它会按照逻辑将差异应用于生产卷上的数据,以公开完整的卷影副本。

对于系统提供程序,卷影副本存储区域必须位于 NTFS 卷上。 要复制卷影的卷不需要是 NTFS 卷,但系统上至少装载的卷必须是 NTFS 卷。

构成系统提供程序的组件文件swprv.dllvolsnap.sys

内置 VSS 编写器

Windows 操作系统包含一组 VSS 编写程序,这些编写程序负责枚举各种 Windows 功能所需的数据。

有关这些编写器的详细信息,请参阅内置 VSS 编写器

如何使用卷影副本

除了备份应用程序数据和系统状态信息外,还可以使用卷影副本实现多种目的,包括:

  • 还原 LUN(LUN 重新同步和 LUN 交换)

  • 还原单个文件(共享文件夹的卷影副本)

  • 使用可传输卷影副本进行数据挖掘

还原 LUN(LUN 重新同步和 LUN 交换)

在 Windows Server 2008 R2 和 Windows 7 中,VSS 请求者可以使用称为 LUN 重新同步(或 LUN 重新同步)的硬件卷影复制提供程序功能。 这是一种快速恢复方案,应用程序管理员利用该方案能够将数据从卷影副本还原到原始 LUN 或新 LUN。

卷影副本可以是完整克隆或差异卷影副本。 在任一情况下,在重新同步操作结束时,目标 LUN 的内容与卷影复制 LUN 相同。 在重新同步操作期间,阵列执行从卷影副本到目标 LUN 的块级复制。

注意

卷影副本必须是可传输的硬件卷影副本。

大多数阵列允许在重新同步操作开始后不久继续生产 I/O 操作。 重新同步操作正在进行时,读取请求将重定向到卷影副本 LUN,写入请求将重定向到目标 LUN。 这允许阵列恢复非常大的数据集,并在几秒钟内继续进行正常操作。

LUN 重新同步不同于 LUN 交换。 LUN 交换是自 Windows Server 2003 SP1 以来 VSS 支持的一种快速恢复方案。 在 LUN 交换中,会导入卷影副本,然后将其转换为读写卷。 转换是不可逆的操作,之后无法使用 VSS API 控制卷和基础 LUN。 以下列表描述了如何将 LUN 重新同步与 LUN 交换进行比较:

  • 在 LUN 重新同步中,不会更改卷影副本,因此可以多次使用它。 在 LUN 交换中,卷影副本只能用于一次恢复。 对于安全意识很高的管理员来说,这一点很重要。 使用 LUN 重新同步时,如果首次出现问题,请求程序可以重试整个还原操作。

  • 在 LUN 交换结束时,卷影复本 LUN 用于生产 I/O 请求。 因此,卷影复制 LUN 必须使用与原始生产 LUN 相同的存储质量,以确保恢复操作后性能不会受到影响。 如果改为使用 LUN 重新同步,则硬件提供程序可以在成本低于生产质量存储的存储上维护卷影副本。

  • 如果目标 LUN 不可用且需要重新创建,则 LUN 交换可能更经济,因为它不需要目标 LUN。

警告

列出的所有操作都是 LUN 级别的操作。 如果尝试使用 LUN 重新同步来恢复特定卷,则会无意中还原共享该 LUN 的所有其他卷。

还原单个文件(共享文件夹的卷影副本)

共享文件夹的卷影副本使用 VSS 提供位于共享网络资源(如文件服务器)上的文件的时间点副本。 使用共享文件夹的卷影副本,用户可以快速恢复存储在网络上的已删除或更改的文件。 因为无需管理员帮助也可以执行此操作,共享文件夹的卷影副本可以提高生产效率并降低管理成本。

有关共享文件夹的卷影副本的详细信息,请参阅 共享文件夹的卷影副本。

使用可传输卷影副本进行数据挖掘

借助设计用于 VSS 的硬件提供程序,可以创建可传输的卷影副本,这些副本可以导入到同一子系统中的服务器(例如 SAN)。 这些卷影副本可用于为具有只读数据的生产或测试安装设定种子以进行数据挖掘。

使用 VSS 和具有与 VSS 一起使用的硬件提供程序的存储阵列,可以在一台服务器上创建源数据卷的卷影副本,然后将卷影副本导入到另一台服务器(或重新导入到同一服务器)。 此过程在数分钟内完成,而不考虑数据的大小。 传输过程通过一系列步骤实现的,这些步骤使用支持可传输卷影副本的卷影副本请求程序(存储管理应用程序)。

传输卷影副本

  1. 在服务器上创建源数据的可传输卷影副本。

  2. 将卷影副本导入连接到 SAN 的服务器(可以导入到其他服务器或同一服务器)。

  3. 数据现已准备就绪,可供使用。

显示如何在两台服务器之间传输卷影副本的关系图。

图 3:两台服务器之间的卷影复制创建和传输

注意

无法在运行 Windows Server 2008 或 Windows Server 2008 R2 的服务器上导入在 Windows Server 2003 上创建的可传输卷影副本。 无法在运行 Windows Server 2003 的服务器上导入在 Windows Server 2008 或 Windows Server 2008 R2 上创建的可传输卷影副本。 但是,在 Windows Server 2008 上创建的卷影副本可以导入到运行 Windows Server 2008 R2 的服务器上,反之亦然。

卷影副本是只读的。 如果要将卷影副本转换为读/写 LUN,除了 VSS 之外,还可以使用基于虚拟磁盘服务的存储管理应用程序(包括一些请求者)。 通过使用此应用程序,可以从卷影复制服务管理中删除卷影副本并将其转换为读/写 LUN。

VSS 传输是运行 Windows Server 2003 企业版、Windows Server 2003 Datacenter Edition、Windows Server 2008 或 Windows Server 2008 R2 的计算机上的高级解决方案。 仅当存储阵列上存在硬件提供程序时,它才有效。 卷影复制传输可用于多种目的,包括磁带备份、数据挖掘和测试。

常见问题解答

本常见问题解答解答了有关系统管理员 VSS 的问题。 有关 VSS 应用程序编程接口的信息,请参阅 卷影复制服务

何时引入了 VSS? 它在哪些 Windows 操作系统版本上可用?

VSS 在 Windows XP 中引入。 它在 Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008、Windows 7 和 Windows Server 2008 R2 上可用。

卷影副本和备份之间有何区别?

对于硬盘驱动器备份,创建的卷影副本也是备份。 可以从卷影副本复制数据以进行还原,也可以将卷影副本用于快速还原方案,例如,LUN 重新同步或 LUN 交换。

当数据从卷影副本复制到磁带或其他可移动媒体时,存储在该媒体上的内容构成备份。 从卷影副本复制数据后,可以删除卷影副本本身。

VSS 支持的最大大小卷是什么?

VSS 支持最大 64 TB 的卷大小。

我在 Windows Server 2008 上进行了备份。 能否在 Windows Server 2008 R2 上进行还原?

这取决于所使用的备份软件。 大多数备份程序支持将此方案用于数据备份,但不支持用于系统状态备份。

在这两种版本 Windows 中的一种上创建的卷影副本可用于另一版本的 Windows。

我在 Windows Server 2003 上进行了备份。 能否在 Windows Server 2008 上进行还原?

这取决于所使用的备份软件。 如果在 Windows Server 2003 上创建卷影副本,则无法在 Windows Server 2008 上使用。 此外,如果在 Windows Server 2008 上创建卷影副本,则无法在 Windows Server 2003 上将其还原。

如何禁用 VSS?

可以使用 Microsoft 管理控制台禁用 VSS。 但是,你不应执行此操作。 禁用 VSS 会对所用的依赖它的任何软件(如系统还原和 Windows Sever 备份)产生不利影响。

有关详细信息,请参阅以下 Microsoft TechNet 网站:

是否可以从卷影副本中排除文件以节省空间?

VSS 可用于创建整个卷的卷影副本。 临时文件(如页面文件)会自动从卷影副本中忽略以节省空间。

若要从卷影副本中排除特定文件,请使用以下注册表项: FilesNotToSnapshot

注意

FilesNotToSnapshot注册表项仅供应用程序使用。 尝试使用它的用户将遇到如下所示的限制:

  • 它无法从使用“以前的版本”功能在 Windows Server 上创建的卷影副本中删除文件。
  • 它无法从共享文件夹的卷影副本中删除文件。
  • 它可以从使用 Diskshadow 实用工具创建的卷影副本中删除文件,但不能从使用 Vssadmin 实用工具创建的卷影副本中删除文件。
  • 系统会尽力从卷影副本中删除文件。 这意味着不能保证它们被删除。

有关详细信息,请参阅从卷影副本中排除文件

我的非 Microsoft 备份程序因 VSS 错误而失败。 我该怎么办?

查看创建备份程序的公司网站的产品支持部分。 可能有一个产品更新,你可以下载并安装以解决问题。 如果没有,请与公司的产品支持部门联系。

系统管理员可以使用以下 Microsoft TechNet Library 网站上的 VSS 故障排除信息来收集 VSS 相关问题的诊断信息。

有关详细信息,请参阅 卷影复制服务

什么是 差异区域

卷影复制存储区域(或差异区域)是存储系统软件提供程序创建的卷影副本数据的位置。

差异区域位于何处?

差异区域可以位于任何本地卷上。 但是,它必须位于有足够空间存储它的 NTFS 卷上。

如何确定差异区域的位置?

按此顺序评估以下条件以确定差异区域位置:

  • 如果卷中已存在卷影副本,则使用该位置。

  • 如果原始卷与卷影复制卷位置之间存在预配置的手动关联,则使用该位置。

  • 如果前两个条件未提供位置,卷影复制服务会根据可用空间选择位置。 如果正在对多个卷进行卷影复制,卷影复制服务将根据空闲空间的大小按降序创建可能的快照位置列表。 提供的位置数等于要进行卷影复制的卷数。

  • 如果要进行卷影复制的卷是可能的位置之一,则会创建本地关联。 否则将创建与具有最大可用空间的卷的关联。

VSS 是否可以创建非 NTFS 卷的卷影副本?

是的。 但是,只能对 NTFS 卷进行永久性卷影复制。 此外,系统上必须至少安装一个 NTFS 卷。

我可以一次创建的卷影副本的最大数目是多少?

单个卷影副本集中卷影复制的卷的最大数目为 64。 请注意,这与卷影副本的数量不同。

对于一个卷,我可以维护的系统提供程序创建的软件卷影副本的最大数量是多少?

每个卷的软件卷影副本的最大数量为 512。 但是,默认情况下,你只能维护共享文件夹的卷影副本功能使用的 64 个卷影副本。 若要更改共享文件夹的卷影副本功能的限制,请使用以下注册表项: MaxShadowCopies

如何控制用于卷影副本存储空间的空间?

键入 vssadmin resize shadowstorage 命令。

有关详细信息,请参阅 Vssadmin resize shadowstorage

当空间不足时,会发生什么情况?

将删除卷的卷影副本,从最旧的卷影副本开始。

VSS 工具

Windows 操作系统提供了以下用于处理 VSS 的工具:

DiskShadow

DiskShadow 是一个 VSS 请求程序,可用来管理系统上的所有硬件和软件快照。 DiskShadow 包含如下所示的命令:

  • list:列出 VSS 编写器、VSS 提供程序和卷影副本

  • create:创建新的卷影副本

  • import:导入可传输卷影副本

  • expose:公开永久性卷影副本(例如驱动器号)

  • revert:将卷还原回指定的卷影副本

此工具适用于 IT 专业人员,但开发人员会发现在测试 VSS 编写程序或 VSS 提供程序时它也很有用。

DiskShadow 仅在 Windows Server 操作系统上可用。 它在 Windows 客户端操作系统上不可用。

VssAdmin

VssAdmin 用于创建、删除和列出有关卷影副本的信息。 它还可用于调整卷影复制存储区域的大小(差异区域)。

VssAdmin 包含如下所示的命令:

  • create shadow:创建新的卷影副本

  • delete shadows:删除卷影副本

  • list providers:列出所有已注册的 VSS 提供程序

  • list writers:列出所有订阅的 VSS 编写器

  • resize shadowstorage:更改卷影复制存储区域的最大大小

VssAdmin 只能用于管理由系统软件提供程序创建的卷影副本。

VssAdmin 适用于 Windows 客户端和 Windows Server 操作系统版本。

卷影复制服务注册表项

以下注册表项可用于 VSS:

  • VssAccessControl

  • MaxShadowCopies

  • MinDiffAreaFileSize

VssAccessControl

此项用于指定哪些用户有权访问卷影副本。

有关详细信息,请参阅 MSDN 网站上的以下条目:

MaxShadowCopies

此项指定可以存储在计算机的每个卷上的客户端可访问的卷影副本的最大数量。 共享文件夹的卷影副本使用客户端可访问的卷影副本。

有关详细信息,请参阅备份和还原注册表项下的 MaxShadowCopies

MinDiffAreaFileSize

此项指定卷影副本存储区域的最小初始大小 (MB)。

有关详细信息,请参阅备份和还原的注册表项下的 MinDiffAreaFileSize

支持的操作系统版本

下表列出了 VSS 功能支持的最低操作系统版本。

VSS 功能 最低受支持的客户端 最低受支持的服务器
LUN 重新同步 无受支持的版本 Windows Server 2008 R2
FilesNotToSnapshot 注册表项 Windows Vista Windows Server 2008
可传输的卷影副本 无受支持的版本 带有 SP1 的 Windows Server 2003
硬件卷影副本 无受支持的版本 Windows Server 2003
以前版本的 Windows Server Windows Vista Windows Server 2003
使用 LUN swap 快速恢复 无受支持的版本 带有 SP1 的 Windows Server 2003
多导入硬件卷影副本(这是多次导入卷影副本的功能。一次只能执行一个导入操作。 无受支持的版本 Windows Server 2008
共享文件夹的卷影副本 无受支持的版本 Windows Server 2003
可传输的自动恢复卷影副本 无受支持的版本 Windows Server 2008
并发备份会话(最多 64 个) Windows XP Windows Server 2003
与备份并发的单个还原会话 Windows Vista Windows Server 2003 SP2
与备份并发的最多 8 个还原会话 Windows 7 Windows Server 2003 R2