解决卷影复制服务问题

 

上一次修改主题: 2011-10-05

主动存储组和数据库及被动存储组和数据库都支持 Microsoft Exchange 感知的卷影复制服务 (VSS) 备份。Microsoft 提供的被动副本备份解决方案是仅受 VSS 支持的解决方案。这种解决方案由复制服务中包含的 Exchange 副本 VSS 书写器予以实施。只有主动存储组支持流式备份。您无法使用流式备份 API 备份副本数据库。VSS 备份程序必须与 Exchange 书写器的 VSS 请求程序一起使用。

在 Microsoft Exchange Server 2003 中,您可以使用流式备份同时对两个不同的存储组运行两个备份。但是,您不能在其中使用 VSS。例如,如果在 Exchange 2003 中使用 VSS,则只有在存储组一上的备份完成之后才能备份存储组二。

如果使用 Microsoft Exchange Server 2007,您可以对同一个 Exchange 服务器运行两个单独的 VSS 备份作业。 此外,Exchange 2007 书写器还支持您将 Exchange 数据还原到替代位置。Exchange 2003 书写器不允许您将 VSS 还原操作定位在原始路径以外的位置。

无法使用 Exchange 书写器将 VSS 备份还原到副本位置。但是,它们可以还原到其他位置(如副本复制目录)。

在 Exchange 2007 中,Store.exe VSS 书写器对任何存储组都启用了还原操作。这包括恢复存储组 (RSG)。Store.exe VSS 书写器还对未与存储组关联的文件夹位置启用了数据库还原。如果您执行此操作,则可以使用 Jet 数据库引擎将还原的事务日志重播到数据库中,使数据库处于一致的、且可装入的状态。然后,您可以将数据库移动到其他位置。

解决卷影复制服务问题

默认情况下,VSS 安装在 Windows Server 2003 服务器上。它设置为手动启动,并且它将在请求程序(备份程序)可以在系统中使用书写器时运行。 Windows Server 2003 Service Pack 2 (SP2) 解决了影响 VSS 性能的一些问题。

有关 Windows Server 2003 SP2 中修复的问题列表,请参阅 Microsoft 知识库文章 914962,在 Windows Server 2003 Service Pack 2 中的更新列表

尽管您可以仅安装 VSS 的更新,但我们建议您安装完整的服务包。此外,有关相关更新汇总包的 Microsoft 知识库文章可以帮助解决 Windows Server 2003 中的一些 VSS 快照问题。

有关详细信息,请参阅知识库文章 940349,Windows Server 2003 卷影复制服务 (VSS) 更新汇总包可解决一些 VSS 快照问题

以下修补程序可用于解决您可能遇到的 VSS 问题。

KBID 号 标题

833167

卷影复制服务 (VSS) 更新包可用于 Windows Server 2003

915331

在卷影复制服务书写器中,备份过程可能失败,并且可能会发生超时错误

930800

当 VSS 备份操作在 Exchange 2007 或 Exchange 2003 中失败时会记录事件 ID 9840 或 9607

910250

Exchange Server 2003 数据库的快照备份失败,并且会记录事件 ID 9607

923628

当您在 Windows Server 2003 SP1 中执行使用卷快照的备份时,备份应用程序停止响应

933779

存储组的快照复制备份失败,并且会在 Exchange Server 2003 中的应用程序日志中记录事件 ID

在运行备份操作之前,Exchange 书写器必须处于稳定状态,并且没有遇到错误。您可以通过运行以下命令确定 Exchange 书写器的状态:

VSSadmin list writers

该命令的输出将列出使用 VSS 注册的所有书写器。在命令结果中,检查书写器的**“状态”**字段。请注意“状态”字段是否显示“稳定”之外的状态。以下示例输出显示 Exchange 书写器处于失败状态。

Writer name:'Microsoft Exchange Writer'

Writer Id:{GUID}

Writer Instance Id:{GUD}

State:[14] Failed

Last error:Retryable error

如果 Exchange 书写器处于失败状态,请重新启动 Microsoft Exchange 信息存储服务,然后运行 VSSadmin list writers 命令,以确定书写器状态是否会返回到稳定状态。以下示例输出显示 Exchange 书写器处于稳定状态。

Writer name:'Microsoft Exchange Writer'

Writer Id:{GUID}

Writer Instance Id:{GUD}

State:[1] Stable

Last error:No error

如果 VSSadmin list writers 命令的输出为空,则可能是注册表错误阻止操作系统检测并显示相应的书写器信息。有关如何解决此问题以及如何重新创建 VSS 书写器列表的详细信息,请参阅 Microsoft 知识库文章 940184,在基于 Windows Server 2003 的计算机上运行 "vssadmin list writers" 命令时出现错误消息:“错误:0x8000FFFF”

VSSadmin list providers 命令将列出计算机上注册的卷影复制提供程序。通常,当您运行该命令时,"Microsoft Software Shadow Copy provider 1.0" 会作为其中一个提供程序或者作为唯一提供程序列出。其他第三方备份程序可能会使用自己的提供程序。以下示例输出显示 VSSadmin list providers 命令的结果。

vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool

(C) Copyright 2001 Microsoft Corp.

Provider name:'Microsoft Software Shadow Copy provider 1.0'

Provider type:System

Provider Id:{GUID}

Version: 1.0.0.7

为了成功进行备份,请确保提供程序已列出并且 Exchange 书写器处于稳定状态。有关您可以运行的其他测试的详细信息,请在命令提示符下键入 vssadmin /?

跟踪卷影复制服务

如果您仍然遇到备份问题,应该启用 VSS 跟踪。有关如何启用跟踪的详细信息,请参阅 Microsoft 知识库文章 887013 如何在 Microsoft Windows Server 2003 中启用卷影复制服务的调试跟踪功能

您可以创建批处理文件以设置文章 887013 中介绍的注册表项。若要执行此操作,请将以下文本键入或复制到文本文件中。然后,将文件另存为 "EnableVSSTracing.bat"。此批处理文件将跟踪信息保存在以 C:\trace.txt 命名的文件中。

net stop swprv 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceFile /t REG_SZ /d C:\trace.txt /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceLevel /t REG_DWORD /d 0xffffffff /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceEnterExit /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceToFile /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceToDebugger /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceFileLineInfo /t REG_DWORD /d 1 /f 
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /v TraceForceFlush /t REG_DWORD /d 0 /f

若要跟踪 VSS,请执行以下步骤:

  1. 修改 Windows 注册表以启用跟踪。为此,请遵循文章 887013 中的步骤或运行您先前创建的 EnableVSSTracing.bat 文件。

  2. 重现您遇到的 VSS 问题。

  3. 在您收到与您要解决的问题相对应的 VSS 错误之后,停止 VSS 服务。为此,请运行以下命令:

    net stop VSS
    net stop SWPRV
    
  4. 禁用 VSS 跟踪。为此,请运行以下命令:

    reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Debug\Tracing /f
    
  5. 检查生成的跟踪文件。

跟踪 Exchange 书写器

Exchange 书写器是与 Microsoft Exchange 信息存储一起提供的内置 VSS 书写器。该书写器在 Store.exe 进程中运行。当 VSS 请求程序(VSS 备份程序)请求从活动数据库进行 VSS 备份时,会使用 Exchange 书写器。与 Exchange Server 2007 中的其他所有组件一样,在事件跟踪日志 (ETL) 文件中生成跟踪。

信息存储会为 Exchange 书写器提供以下标记。

标记 说明

TagVSS

在 Exchange Server 2007 中,唯一能用于 Exchange 书写器的标记是 TagVSS。此标记组合了 Exchange 2003 中提供的所有 VSS 标记,包括以下标记:

  • Exchange VSS Snapshot Initialize

  • Exchange VSS Snapshot OnIdentify

  • Exchange VSS Snapshot OnPrepareBackup

  • Exchange VSS Snapshot OnThaw

  • Exchange VSS Snapshot OnPostSnapshot

  • Exchange VSS Snapshot OnBackupComplete

  • Exchange VSS Snapshot OnPreRestore

  • Exchange VSS Snapshot EcAddComponents

  • Exchange VSS EcPrepareJetInitBackup

  • Exchange VSS Snapshot EcBuildSGArrayFromWriteComp

note注意:
Exchange 书写器的默认冻结超时是 20 秒。

跟踪副本书写器

Exchange 群集副本书写器是与复制服务一起提供的内置 VSS 书写器。此书写器在 M.E.Cluster.Replay.exe 进程中运行。当 VSS 请求程序(VSS 备份程序)请求从复制数据库进行 VSS 备份时,会使用 Exchange 群集副本书写器。与 Exchange Server 2007 中的其他组件一样,以 ETL 格式生成跟踪。

副本服务会为 Exchange 群集副本书写器提供以下标记。

标记 说明

ReplicaVssWriterInterop

  • 此跟踪提供 VSS 书写器和复制服务之间的交互。

使用 Extra.exe 跟踪副本书写器

您还可以使用 Microsoft Exchange 疑难解答助理 (Extra.exe) 跟踪 Exchange VSS 书写器。为此,请执行下列步骤:

  1. 在 Exchange 命令行管理程序中运行以下命令:

    Set-EventLogLevel "MSExchange Repl\Exchange VSS Writer" -level expert
    
  2. 单击“开始”,再单击“运行”,键入 cmd,然后单击“确定”。

  3. 单击“转到欢迎屏幕”,然后单击“选择任务”。

  4. 如果您收到消息,表明 Exchange 没有分析跟踪的模块,请单击“跟踪控制”,然后单击“确定”。

  5. 指定保存跟踪文件的位置,然后将跟踪文件大小设置为 200 MB。

  6. 单击“设置手动跟踪标记”,然后单击以选择以下跟踪类型复选框:

    • PFD

    • 致命

    • 错误

    • 警告

    • 信息

    • 调试

  7. 在“要跟踪的组件”列表中,单击以选中“Cluster.Replay”复选框。

    note注意:
    此复选框仅适用于群集 Exchange 环境。
  8. 在“跟踪标记”列表中,单击以选中以下复选框:

    • ReplicaInstance

    • ReplicaVssWriterInterop

  9. 在“要跟踪的组件”列表中,单击以选中“Store”复选框。

  10. 在“跟踪标记”列表中,单击以选中以下复选框:

    • tagVSS

    • tagMostError

  11. 单击“开始跟踪”。

  12. 启动 Exchange VSS 备份。如果备份失败,请单击 Exchange 疑难解答助理中的“立即停止跟踪”。

运行 BETest 工具

BETest 是用于测试高级备份和还原操作的 VSS 请求程序。此工具可用于测试应用程序对复杂的 VSS 功能的使用,如以下功能:

  • 增量备份和差异备份

  • 复杂的还原选项(如权威还原)

  • 前滚选项

可以使用 BETest 工具对 Exchange 存储组进行 VSS 备份,然后测试 Exchange VSS 书写器。BETest 可以执行 VSS 请求程序可以执行的大多数操作。还可以使用 BETest 在 Exchange 2007 服务器上对主动和副本数据库进行 VSS 快照。

VSS SDK 7.2 中提供了 BETest。若要获取该 SDK,请参阅 Microsoft 下载中心文章 Volume Shadow Copy Service SDK 7.2(英文网页)。

SDK 中提供的 BETest 版本使用 Components 文件的基于文本的版本 (Components.txt)。Windows SDK 中提供了使用基于 XML 版本的 Components.txt 文件的 BETest 版本。有关如何获取并使用 BETest 的 Windows SDK 版本的详细信息,请参阅 BETest Tool(英文网页)。

note注意:
本主题中的这些步骤在 BETest 中使用基于文本版本的 Components 文件。

若要使用 BETest 工具,请执行下列步骤:

  1. 获取并安装 BETest 工具。默认情况下,此工具的 i386 版本安装在以下文件夹中:

    C:\Program Files (x86)\Microsoft\VSSSDK72\TestApps\betest\obj\i386

    note注意:
    BETest 基于 AMD64 的版本也已推出。在运行 BETest 之前,始终更改为相应操作系统版本的目录。
  2. 运行以下命令以获取可用的书写器列表:

    betest.exe > AvailableWriters.txt
    
  3. 创建 Components.txt 文件为 BETest 指定 VSS 组件。Components 文件使用以下格式指定选项:

    "<WriterId>": "<component-logical-path>" {"target" # "new target", ...}, ..."<component-logical-path>" : '"<subcomponent-logical-path>,...";
    
  4. 获取 WriterId 条目的值以使用 Components.txt 文件。为此,请执行下列步骤:

    1. 使用记事本等文本编辑器打开 AvailableWriters.txt 文件。

    2. 搜索以下文本:

      Microsoft Exchange Writer

    3. 记下 WriterId 字段的值。例如,76fe1ac4-15f7-4bcd-987e-8e1acb462fb7

  5. 确定 Components.txt 文件中 <component-logical-path> 占位符的路径。此路径可能按以下某种格式指定:

    • <logical-path>

    • <logical-path>\<component-name>

    • <component-name> (如果逻辑路径不存在)

    例如,Microsoft Exchange Server\Microsoft Information Store\<ServerName>\<StorageGroupGUID>

  6. 将这些值添加到 Components.txt 文件中,然后将更改保存到该文件。以下是 Components.txt 文件的示例内容。

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\<Server Name>\68e5b198-468e-4328-8e8d-8d5276b8e355 ";

    在此示例中,第一个 GUID 表示 Exchange 书写器。第二个 GUID 表示特定存储组。如果您有多个存储组,可以选择仅对一个存储组运行 BETest 工具。若要获取特定存储组的 GUID,可以使用 LDP.exe 工具或 Get-StorageGroup cmdlet。如果您使用 LDP 工具,请找到以下对象,然后记下详细信息窗格中 objectGUID 的值。

    CN=First Storage Group,CN=InformationStore,CN=<ServerName>,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=First Organization,CN=Organizations,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=fourthcoffee,DC=com

    note注意:
    此路径使用组织和管理组的默认名称。根据您的组织需要修改此路径。

    若要从命令行获取存储组 GUID,请在 Exchange 命令行管理程序中运行以下命令:

    Get-StorageGroup  <SG name> |fl Guid
    

    只有主动存储组支持流式备份。如果要备份被动数据库副本,必须使用 VSS 备份。如果数据库是群集连续复制数据库,或者您使用本地连续复制,则 Components.txt 文件将与以下某个内容类似。

    对于 CCR 副本复制

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\Replica\<ClusteredMailboxServerName>\<StorageGroupGUID> ";

    对于 LCR 副本复制

    1. "{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}":"Microsoft Exchange Server\Microsoft Information Store\Replica\<Server Name>\68e5b198-468e-4328-8e8d-8d5276b8e355 ";

    note注意:
    流式备份的成功与否不表示 Exchange VSS 书写器的运行状况。
  7. 在保存 Components.txt 文件之后,运行以下命令来启动 BETest:

    BETEST.exe /B /E /T 1 /S output.XML /C components.txt /D c:\betest > Output.txt
    

    此命令将在 C:\BETest 目录中创建备份。

    note注意:
    您也可以在不使用 /E 选项的情况下运行此命令。
  8. 如果备份不成功,请检查 Output.txt 文件的内容以查看已记录的任何错误消息。

详细信息

Exchange Server 2007 Service Pack 1 (SP1) 和若干 Exchange 更新汇总包中都包含 VSS 问题的修补程序。我们建议您将最新的 Exchange 2007 Service Pack 与 Exchange 的最新更新汇总包一起安装。有关详细信息,请参阅如何获取最新的 Exchange 2007 服务包或更新汇总