VSS 跟踪和故障排除选项
摘要: 本文介绍如何为 Microsoft 卷影复制服务 VSS 实现一些跟踪选项。有时需要在 VSS 层收集调试信息,以便对涉及快照创建的问题进行故障排除。
说明
VSS 技术是多个数据保护解决方案中的基本组件,有助于 Microsoft Windows 系统的备份功能。但是,许多元素可能会使 VSS 快照失败,扩展 VSS 组件及其模块的故障处理范围可能很有用。
本文基于 VSSTrace.exe 二进制工具,它提供了多个选项,用于在尝试创建快照时跟踪 VSS 服务,并可能为故障排除目的提供有意义的信息。VSSTrace.exe 包含在可从 Microsoft 下载中心下载的 Microsoft Windows 软件开发工具包 (SDK) 中:Windows SDK 下载 - Windows 应用 |Microsoft 了解
详情 VSSTrace.exe看到:将跟踪工具与 VSS 配合使用 - Win32 应用程序 |Microsoft 学习版
安装 Windows SDK 后, vsstrace.exe 可以在以下位置找到。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\vsstrace.exe
以下命令语法用于重定向 VSSTrace 文件的输出:vsstrace -o c:\Temp\VSSTrace\myTrace1.txt
在尝试 VSS 快照时,跟踪的 VSS 模块将写入日志文件,以便可以进行进一步分析。
VSS 模块注意事项:
对被认为与进一步故障排除相关的 VSS 模块进行选择性跟踪可帮助减少收集的数据和跟踪文件的大小。 VSSTrace 允许跟踪特定模块和命名模块,例如:VSS 服务本身称为协调器、请求者、VSS 编写器等。如果怀疑错误是由请求者或编写者生成的,请将跟踪限制为一个或多个特定模块。
每个模块都有一个掩码,该掩码可用作 VSSTrace 语句中的标志。例如,以下语句将禁用对所有模块 (-f 0) 的跟踪,并启用对 VSS 编写器的跟踪:vsstrace -f 0 +WRITER -o C:\Temp\VSSTrace\myTraceWriters.txt
跟踪开始时,掩码 0x00000010 报告并对应于 Writer 模块标志。
然后,可以按照语法附加所有模块: -f 0 +<MODULE> +<MODULE> +<MODULE> ...
可以使用以下命令获取可用模块的列表:
vsstrace -help modules Available modules: Module : Flag : Default : Description ------------:--------------:---------:---------------------------------------------- EXCEPT : 0x00000001 : ON : C++ exception handling COORD : 0x00000002 : ON : VSS Coordinator service SWPRV : 0x00000004 : ON : System Provider service BUCOMP : 0x00000008 : ON : Requester and backup metadata processing WRITER : 0x00000010 : ON : Writer infrastructure and VSS hosted writers VSSAPI : 0x00000020 : ON : Miscellaneous VSSAPI exported routines HWDIAG : 0x00000040 : ON : Hardware Provider diagnostics ADMIN : 0x00000080 : ON : Command line utilities VSSUI : 0x00000100 : ON : Shadow Copies for Shared Folders UI TEST : 0x00000200 : ON : Internal test infrastructure (unused) IOCTL : 0x00000400 : ON : IOCTL and FSCTL operations GEN : 0x00000800 : ON : General purpose utilities (noisy) WRXML : 0x00001000 : OFF : Writer metadata processing (noisy) VSSXML : 0x00002000 : OFF : Metadata processing base classes (noisy) FSSPROV : 0x00004000 : OFF : File Server Shadow Copy Provider FSSAGENT : 0x00008000 : OFF : File Server Shadow Copy Agent FSSMD : 0x00010000 : OFF : File Server Shadow Copy Metadata
级别注意事项:
有 21 个不同的级别 ,默认设置为 170 ,这意味着最多记录模块函数返回值。级别 255 是最大值,但如果选择此级别,则跟踪文件中会包含大量数据。
以下示例启用跟踪级别 190: 仅适用于 VSS 服务的函数参数详尽:
vsstrace -f 0 +COORD -l 190 -o C:\Temp\VSSTrace\myTraceVSSService190.txt
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64>vsstrace -f 0 +COORD -l 190 -o C:\Temp\VSSTrace\myTraceVSSService190.txt
Session started. Enabling provider...
Enabling provider {9138500e-3648-4edb-aa4c-859e9f7b7c38}on level 190 and flags 0x00000002 ...
Real-time tracing now in progress. Press Ctrl-C to stop tracing...
Tracing stopped.
Total Events Processed 0
Start Time 0 (0x0000000000000000)
End Time 0 (0x0000000000000000)
Elapsed Time 0 sec
+-------------------------------------------------------------------------------------+
|EventCount EventName EventType Guid |
+-------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------+
然后将190报告为掩码为 0x00000002 对应于 VSS 协调器。
可用级别的说明如下,以供参考:
Available levels: 000 : None 020 : Fatal Errors 030 : Unhandled Exception 040 : Error 050 : Assertion 060 : Warning 080 : Exception Handling 100 : Event Log Activity 120 : General Information 140 : Code flow 160 : Function enter/exit 170 : Function return values (Default level) 180 : Function Parameters 190 : Function Parameters Verbose 200 : Verbose Info Level 1 210 : Verbose Info Level 2 220 : Verbose Info Level 3 230 : Fast Code Level 1 240 : Fast Code Level 2 250 : Fast Code Level 3 255 : All
手动快照故障处理:
最佳方法是复制触发错误情况的用例,但由于这可能并不总是可行的,因此检查 VSS 服务功能并测试 VSS 服务功能的最简单方法是 VSSTrace 已正确设置二进制文件所需的参数是按需生成还原点。
在这里,按需创建还原点,进而创建卷影拷贝:
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64>vssadmin list shadows
Contents of shadow copy set ID: {41167b4f-2da1-47cf-a9d6-235adf1e29df}
Contained 1 shadow copies at creation time: 08/05/2019 18:12:12
Shadow Copy ID: {09144331-79a6-4f34-9994-7ea22a72fbbd}
Original Volume: (C:)\\?\Volume{49ec4df8-2a9b-4f9a-8fa8-c9fe8e10943b}\
Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9
Originating Machine: XXXXXXXXXXXXXX.corp.emc.com
Service Machine: XXXXXXXXXXXXXX.corp.emc.com
Provider: 'Microsoft Software Shadow Copy provider 1.0'
Type: ClientAccessibleWriters
Attributes: Persistent, Client-accessible, No auto release, Differential, Auto recovered
vssadmin 返回当前可用卷影的列表,并按创建日期和时间标识手动创建的还原点。
现在,启用 VSSTrace 并生成还原点启动 VSS 跟踪,该跟踪可能已经包含一些有用的数据,以便进一步进行故障处理。
在上图中,创建了一个还原点,而 VSSTrace 仅针对 WRITER 模块启用:vsstrace -f 0 +WRITER -o C:\Temp\VSSTrace\myTraceWriters.txt
创建还原点并调用 VSS 服务时,按预期收集和跟踪相关的 WRITER 模块活动。
保留手动创建的还原点没有意义,因此在收集跟踪后,有必要将其删除。vssadmin 允许按 ID 选择性删除卷影副本:
使用以下命令列出 VSS 快照:
vssadmin list shadows
删除快照:
vssadmin delete shadows /shadow=SNAPSHOT_GUID
使用事件查看器获取错误代码和消息。
在发生 VSS 问题的主机中,可以通过以下方式运行事件查看器: eventvwr.msc /s
限制在 Windows 日志 --> 应用程序和 Windows 日志 --> 系统内进行搜索。
筛选依据:VSS 和 VolSnap
最终将在那里显示与 VSS 相关的消息。