VMWare Converter FAILED: Unable to create a VSS snapshot of the source volume(s). Error code: 2147754767 (0x8004230F).

VMWare ConverterでサーバーをESXiに仮想化しようとしたら、開始後1秒も立たないうちにエラーとなり仮想化プロセスが停止した。

エラー内容は

FAILED: Unable to create a VSS snapshot of the source volume(s).
Error code:2147754767 (0x8004230F).

日本語だと

シャドウ コピー プロバイダーを指定された操作を処理中に予期しないエラーがありました

最初は単純に何かの設定が間違っているのかと思ったが結局半日かかった。

当初エラーはVMWareが原因のエラーと考えていたが下記のサイトからの情報と、メッセージの"VSS"というキーワードでMicrosoftのVSS(Volume Shadow Service)関連のエラーということことが推測された。

VSS (Volume Shadow Copy) による静止に関する問題のトラブルシューティング

VSSのプロセスが正常に動作しているかを確認してみる。使うコマンドはvssadmin list writers。すべてのライタで"最後のエラー"が"エラーなし"になっていればVSSは正常に動作しているらしい。

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

ライタ名: 'System Writer'
ライタ Id: {e8132975-6f93-4464-a53e-1050253ae220}
ライタ インスタンス Id: {44bfa757-fb30-45dd-a259-21634e6ad44b}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'MSDEWriter'
ライタ Id: {f8544ac1-0611-4fa5-b04b-f7ee00b03277}
ライタ インスタンス Id: {a9dcc483-853b-45fa-bfdc-d9f7d8e4dfb9}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'WMI Writer'
ライタ Id: {a6ad56c2-b509-4e6c-bb19-49d8f43532f0}
ライタ インスタンス Id: {f238456b-7d1b-45e9-b9f4-7a849e377e92}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'Event Log Writer'
ライタ Id: {eee8c692-67ed-4250-8d86-390603070d00}
ライタ インスタンス Id: {9dd59ae2-0899-48c7-8977-573e151e3cdc}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'IIS Metabase Writer'
ライタ Id: {59b1f0cf-90ef-465f-9609-6ca8b2938366}
ライタ インスタンス Id: {e2c6b53a-43ef-4476-84cb-b6e3cc87bee9}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'Registry Writer'
ライタ Id: {afbab4a2-367d-4d15-a586-71dbb18f8485}
ライタ インスタンス Id: {e8ce1da9-3676-450e-9d82-b81ec4794302}
状態: [5] 完了待ち
最後のエラー: エラーなし

ライタ名: 'COM+ REGDB Writer'
ライタ Id: {542da469-d3e1-473c-9f4f-7847f01fc64f}
ライタ インスタンス Id: {0c3855a2-647b-498a-89f6-aec237fdaae6}
状態: [5] 完了待ち
最後のエラー: エラーなし(())

すべてのライタが"エラーなし"になっているのでプロセスに問題はないと判断。

次に下記のサイトからVSS関連のレジストリ、おもにdll関連のレジストリが壊れている可能性が指摘されていたので試してみる。

コマンドラインを開き、下記のコマンドを実行。

cd /d %windir%\system32
Net stop vss
Net stop swprv
regsvr32 ole32.dll
regsvr32 oleaut32.dll
regsvr32 vss_ps.dll
vssvc /register
regsvr32 /i swprv.dll
regsvr32 /i eventcls.dll
regsvr32 es.dll
regsvr32 stdprov.dll
regsvr32 vssui.dll
regsvr32 msxml.dll
regsvr32 msxml3.dll
regsvr32 msxml4.dll

しかしこれでもエラーはまだ出る。

Virus Scanによる可能性が指摘されていたのでMcAfeeをアンインストールしてみたがだめ。

半分お手上げだったが、ふと気がついてイベントビューワのエラーから調査をしてみた。イベントビューワに出ているエラーはこれ。

イベントの種類: エラー
イベント ソース: VSS
イベント カテゴリ: なし
イベント ID: 12292
日付: 2011/11/01
時刻: 15:13:15
ユーザー: N/A
コンピュータ:
説明:
ボリューム シャドウ コピー サービス エラー: CLSID {6e374478-ad8e-41d1-90cb-38dc78fd4144} でシャドウ コピー プロバイダ COM クラスの作成中にエラーが発生しました [0x80040154]。

この中でCLSID 6e374478-ad8e-41d1-90cb-38dc78fd4144に注目してレジストリを検索してみたら、VERITAS Volume Snapshot Service Dynamic Provider 1.0がVSSのプロバイダに設定されていた。

このサーバーについてユーザに確認すると以前テストでVERITASのクラスタリングのテストをしていたよう。ただしまともには設定されておらず今はまったく動いていない状態。

VERITASをアンインストール後、上記のレジストリを削除した。アンインストールだけではレジストリの削除がされなかった。

ここでもう一度仮想化をしてみたら成功でした。

まとめてみると、VSSにより仮想化が失敗したときには以下を対応すれば何とかなりそう。

  • vssadmin list writersによりVSSライタが正常に動いているかを確認
  • レジストリにVSS関連のdllを再登録
  • ウイルススキャンの停止(もしくはアンインストール)
  • イベントビューワから失敗しているVSS Providerを特定→関連するアプリケーションのアンインストールおよびレジストリの削除