VSS Writer が全て消失する事象について

こんにちは。日本マイクロソフト株式会社 高谷 です。

弊社では、Windows Server バックアップでのバックアップ取得に失敗するというお問い合わせを多くいただいております。
原因は様々ございますが、今回のブログではVSS Writer が全て消失してしまうことによりバックアップが取得できない、という事例についてご紹介したいと思います。
もし、お客様の環境で Windows Server バックアップによるバックアップが取得できない事象が発生している場合は、この事例に合致するかご確認ください。合致する場合は比較的容易に改善が可能ですので、対処方法をお試しください。

VSS Writer とは?

.
VSS Writer とは、ボリューム シャドウ コピー サービス (VSS) を構成する 4 つのコンポーネントのうちの 1 つです。

VSS サービスからの指令により、シャドウ コピーを作成するために、各アプリケーションを一旦静止する役割を持っています。アプリケーションごとに存在し、各 VSS ライターは自身に紐づいたアプリケーションの静止処理を行います。

ボリューム シャドウ コピー サービス (VSS) とVSS Writer については以下のブログにて詳しくご説明しています。よろしければこちらをご覧ください。

- 公開情報
ボリューム シャドウ コピー サービス (VSS) について
https://blogs.technet.microsoft.com/askcorejp/2018/08/15/aboutvss/
.

VSS Writer の確認方法

.
お客様の環境にどのようなVSS Writer が存在するかは、vssadmin コマンドで確認が可能です。各 VSS Writer のステータス等も確認が可能です。

正常な環境での vssadmin コマンド実行例
---------------------------------------------------------------------------------------

C:\Windows\system32>vssadmin list writers
vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンド ライン ツール
(C) Copyright 2001-2013 Microsoft Corp.

ライター名: 'System Writer'
ライター Id: {a1111111-1a11-2222-a33a-1050253ae220}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-eacf897c2bb2}
状態: [1] 安定
最後のエラー: エラーなし

ライター名: 'ASR Writer'
ライター Id: {a1111111-1a11-2222-a33a-531aa6355fc4}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-3f05d6e23c18}
状態: [1] 安定
最後のエラー: エラーなし

ライター名: 'Registry Writer'
ライター Id: {a1111111-1a11-2222-a33a-71dbb18f8485}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-5a769b979293}
状態: [1] 安定
最後のエラー: エラーなし

ライター名: 'WMI Writer'
ライター Id: {a1111111-1a11-2222-a33a-49d8f43532f0}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-d7228e01237e}
状態: [1] 安定
最後のエラー: エラーなし

ライター名: 'COM+ REGDB Writer'
ライター Id: {a1111111-1a11-2222-a33a-7847f01fc64f}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-6b3475ddad24}
状態: [1] 安定
最後のエラー: エラーなし

ライター名: 'Shadow Copy Optimization Writer'
ライター Id: {a1111111-1a11-2222-a33a-3bee2926fd7f}
ライター インスタンス Id: {a1111111-1a11-2222-a33a-f0ba3a6d115c}
状態: [1] 安定
最後のエラー: エラーなし

---------------------------------------------------------------------------------------

例えば上記のような結果が出た場合は、6 種類の VSS Writer が存在し、すべての Writer のステータスが安定していることが確認できます。今回ご紹介する事例では、これらの VSS Writer が「全て」消えてしまう事象です。
.

VSS Writer が全て消失してしまうことによりバックアップが取得できない事例のご紹介

.
バックアップ取得に失敗しているお客様は、以下にご紹介する確認ポイントをご確認いただき、合致するようであれば後述の対処方法をお試しください。

.
確認ポイント (1) :vssadmin コマンドの実行結果

今回ご紹介する事例の最大の特徴は、Vssadmin コマンドの結果、VSS Writer が 1 つも表示されない点です。まずは VSS Writer が表示されるかどうかご確認ください。

vssadmin コマンド実行結果
-----------------------------------------------------------------------------------

C:\Windows\system32>vssadmin list writers
vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンド ライン ツール
(C) Copyright 2001-2013 Microsoft Corp.
.

-----------------------------------------------------------------------------------
※ VSS Writer が一つも表示されません!!

.
確認ポイント (2) :環境の確認

事象が報告されている環境は以下の通りですが、これ以外の環境でも発生する可能性はあります。
こちらは参考程度にご確認ください。

・OS: Windows Server 2012R2
・VMWare 環境上の仮想サーバー
・Windows Server バックアップで、サーバー全体のバックアップを日次で実行
.

確認ポイント (3) :ソース:VSS のエラーのイベント ログ

バックアップ失敗のタイミングでイベント ログにソースを VSS とする複数のエラーが記録されているか、ご確認ください。

ソース:VSS、ID:8193 のエラーのイベント ログ
-----------------------------------------------------------------------------------

レベル:エラー
日付と時刻:2018/10/01 21:00:19
ソース:VSS
ID:8193
メッセージ:ボリューム シャドウ コピー サービス エラー: ルーチン CoCreateInstance の呼び出し中に予期しないエラーが発生しました。
hr = 0x800401fb, Object is not registered.

Operation:
Subscribing Writer

Context:
Writer Class Id: {ee000eee-11ee-4422-9c9c-531aa6355aa6}
Writer Name: ASR Writer
Writer Instance ID: {ee000eee-11ee-4422-9c9c-cb9a0863baa6}

-----------------------------------------------------------------------------------
※ Writer Name は環境によって異なります。複数の Writer で表示される場合が多くございます。

ソース:VSS、ID:13 のエラーのイベント ログ
-----------------------------------------------------------------------------------

レベル:エラー
日付と時刻:2018/05/09 21:00:19
ソース:VSS
ID:13
メッセージ:ボリューム シャドウ コピー サービス情報: CLSID {2222aaaa-2ee2-11d1-9944-00c04fbbb111} および名前 CEventSystem を持つ COM サーバーを開始できません。[0x800401fb, Object is not registered]

Operation:
Subscribing Writer

Context:
Writer Class Id: {ee000eee-11ee-4422-9c9c-531aa6355aa6}
Writer Name: ASR Writer
Writer Instance ID: {ee000eee-11ee-4422-9c9c-cb9a0863baa6}

-----------------------------------------------------------------------------------
※ Writer Name は環境によって異なります。複数の Writer で表示される場合が多くございます。

VSS Writer に何らかの異常が発生していることが、エラーのメッセージから読み取れます。
.

確認ポイント (4) :COM+ Event System サービスのプロセス svchost.exe の実行状況

この事象のもう一つの大きな特徴として、COM+ Event System サービスのプロセスである svchost.exe に、他のサービスが同居していることが挙げられます。Tasklist コマンドで svchost.exe の状況をお確かめください。
単一のプロセスとして COM+ Event System サービスのプロセス svchost.exe が実行されている場合は、この事例には当てはまりません。
.

Tasklist コマンド実行結果の例)
-----------------------------------------------------------------------------------

C:\Windows\system32>tasklist /svc |findstr /i svchost

Image Name       PID     Services
===========  ====   ============================
svchost.exe        816      EventSystem, FontCache, netprofm, nsi

-----------------------------------------------------------------------------------

この例のコマンド実行結果では、COM+ Event System サービスは、Windows Font Cache サービス(Fontcache)、Network List Service サービス(netprofm)、Network Store Interface サービス(nsi) が同居していることがわかります。
.

■ 対処方法

.
VSS Writer は呼び出される際に COM+ Event System サービスと連動して呼び出されます。
従って、COM+ Event System サービスに問題が発生していると、VSS Writer との通信が正常に行えません。
COM+ Event System サービスのプロセス svchost.exe にて、同居する別サービスが異常な動作を行ったことによって COM+ Event System サービスが影響受け、VSS Writer が呼び出しに応じられなくなるような事例が複数報告されております。
再び VSS Writer が呼び出しに応じることができるようになるためには、異常なサービスを正常に戻す、もしくはサービスを分離してしまう方法が効果的です。

お客様の環境で起きている事象が、以上の 4 つの確認ポイントに合致している場合は、次の対処方法を実行いただくことで事象が改善する可能性が高いです。
次の内からどれか一つを実行ください。
.

対処方法(1)サーバー再起動

サーバー再起動によってプロセスがリセットされ、異常な状態となっているサービスも起動しなおします。サーバー再起動が可能な状況であればサーバー再起動をお試しください。この対処方法の場合、一時的に事象は改善しますが、しばらく時間が経過すると事象が再発することがあります。
.

対処方法(2)サービス再起動

サーバー再起動ができない場合は、確認ポイント(4)で表示されたサービスを全て再起動してください。
この対処方法の場合、一時的に事象は改善しますが、しばらく時間が経過すると事象が再発することがあります。
.

対処方法(3)サービス再起動および各プロセスの分離

サービス再起動時に複数のサービスをホストする svchost.exe プロセスから、COM+ Event System サービスを分離することで、COM+ Event System サービスが他のサービスからの影響を受けずに動作することができます。
.

=============================
サービスの分離方法
=============================

手順 1. コマンド プロンプトを管理者として起動し、Tasklist のコマンドにて COM+ Event System サービスをホストしている svchost.exe を確認します。※ 確認ポイント(4)と同様のコマンドです。

Tasklist コマンド実行結果の例)
-----------------------------------------------------------------------------------

C:\Windows\system32>tasklist /svc |findstr /i svchost

Image Name       PID     Services
===========  ====   ============================
svchost.exe        816      EventSystem, FontCache, netprofm, nsi

-----------------------------------------------------------------------------------

手順 2. sc config のコマンドにて、COM+ Event System サービスを分離します。

構文)
sc config <サービス名> type= own

sc config コマンドの例)
-----------------------------------------------------------------------------------

sc config EventSystem type= own

-----------------------------------------------------------------------------------

手順 3. "手順 2." で分離したCOM+ Event System サービスを services.msc などから再起動します。サーバーの再起動でも問題ございません。再起動すると、単一の svchost.exe にて起動しますので、正常に起動したかを確認します。

Tasklist コマンド実行結果の例)
-----------------------------------------------------------------------------------

C:\>tasklist /svc |findstr /i svchost

Image Name       PID     Services
===========  ====   ============================
svchost.exe         816      FontCache, netprofm, nsi
svchost.exe        1025      EventSystem

-----------------------------------------------------------------------------------

このように、COM+ Event System サービスが他のサービスから分離され、独立した svchost.exe のプロセスとして動作していることが確認できます。

いかがでしたでしょうか。
本ブログが少しでも皆様のお役に立てますと幸いです。