如何在Windows 2008 R2上打开VSS的详细日志

大家好!我是微软企业平台支持部的工程师黄爱华。

Volume Shadow Copy service (卷影拷贝服务)是在Windows平台上进行备份的基础架构。大多数的备份软件在对Windows平台进行备份时,都会使用到VSS服务。通常,我们对VSS进行排错时,会查看应用程序日志中的VSS相关日志。但是有些时候,针对更复杂的VSS问题,我们也需要使用VSS的详细日志来进行排查。

在Windows 2003和Windows 2008 上VSS的详细日志可以通过添加注册表键值来启用,具体的步骤可以参考微软的KB https://support.microsoft.com/kb/887013。这种记录日志的方式是由VSS服务直接写到指定的文本的日志文件上来实现的。有一点需要注意的是,如果在VSS详细日志功能打开的情况下,若指定的VSS日志文件恰好是在备份软件需要备份的磁盘上的,这样会导致备份失败的。

在Windows 2008 R2之后,考虑到写文本出现的性能问题以及可能的导致备份失败的情况,2008 R2 VSS详细日志的记录方式放弃了纯文本的方式。现在是通过ETW的方式进行日志的发布和记录的。ETW的架构是由日志提供程序将日志发布到一个在系统核心态的会话中,然后再写到对应的追踪文件里,或者其他对这些事件有兴趣的程序可以直接从会话中去取得日志。

VSS提供了一个VSS详细日志的提供程序,它是运行在kernel的,它的ID是{9138500e-3648-4edb-aa4c-859e9f7b7c38}。我们可以通过以下命令启动这个提供程序。

 logman
start vss -o x:\ vss.etl -ets -p {9138500e-3648-4edb-aa4c-859e9f7b7c38} 0xfff 255

 运行该命令后,VSS的详细日志已经启用,我们可以重现VSS的问题,重现后,运行以下命令来停止日志。 请避免长时间启用详细日志以避免日志文件太大。

 logman
stop vss -ets

停止后,得到详细日志文件x:\vss.etl。但是这个日志文件时etl格式的,我们还需要把它用vsstrace.exe解析成文本格式来查看其内容。Vsstrace.exe可以在Windows SDK for Win7/Windows 2008R2的文件夹%ProgramFiles%\Microsoft SDKs\Windows\v7.0\bin找到。

解析的etl格式文档的命令如下:

vsstrace.exe -etl x:\vss.etl -o x:\vss.log –l 255

该命令会把etl的日志文件解析为可阅读的文本文件vss.log。这样我们就可以通过VSS的详细日志文件去排查一些复杂的VSS问题。

希望这篇文章对您有所帮助。谢谢!