Hyper-V環境の仮想マシンバックアップのタイムアウトについて

こんにちは。Windows プラットフォーム サポートの大川です。
今回は Hyper-V 環境の仮想マシンバックアップのタイムアウトについてお伝えさせていただきます。

仮想マシンの構成変更後や仮想マシン自体を格納しているディスクに障害が発生し、仮想マシンが起動できない場合に備えて、
仮想マシンのバックアップを Hyper-V ホストから取得いただいていると思います。

仮想マシンのバックアップは Hyper-V 環境のバックアップに対応した 3rd party 製のソフトウェアや弊社の製品である
Data Proctection Manager (DPM) やWindows Server バックアップを利用することで取得が可能です。

Hyper-V ホストからバックアップソフトを使用してバックアップを取得する場合、Hyper-V のコンポーネントや VSS が
連携し、整合性のあるバックアップデータが取れるように動作します。仮想マシンバックアップの流れとコンポーネントは
以下のとおりです。

 

 

// Hyper-V 仮想マシンのバックアップに関連するコンポーネント
1. バックアップ リクエスター
DPM や Windows Server バックアップなどのバックアップ処理を命令するコンポーネント

2. Hyper-V ホスト上の VSS
VSS を制御するコンポーネント。仮想マシンの vhdx 静止点やスナップショットを取得するコンポーネント

3. 仮想マシン上の統合サービス
Hyper-V ホスト上の VSS と連携するコンポーネント

4. 仮想マシン上の VSS
VSS を制御するコンポーネント。仮想マシン上のデータの静止点やスナップショットを取得するコンポーネント

ここで 1 点注意点があります。それは、"4.仮想マシン上の統合サービス" にタイムアウト値が存在している点です。
このタイムアウト値は仮想マシン 内での VSS 処理の時間を監視しており、10 分以内に完了しない場合、仮想マシン
内で処理中であっても、Hyper-Vホストに対して後続処理をするように命令をします。その結果、仮想マシン 内の
データは整合性が取られていない状態でバックアップされます。この状態でリストアした場合、仮想マシンの回復
ができない可能性があります。また、この 10 分は固定であり、設定などにより変更することができません。

仮想マシン 内での VSS 処理に時間がかかるケースとしては、以下が考えられます。

1.仮想マシン 内で多くの VSS スナップショットが取得されている場合
2.仮想マシン 内で非常に大きなボリュームに対して、VSS スナップショットが取得されている場合

上記は仮想マシン内のデータの静止点を取る際に、VSS スナップショット作成処理が行われますが、この際に、
仮想マシン 内の "スナップショットの列挙処理" が行われるためです。この "スナップショットの列挙処理" は
仮想マシン内の全てのスナップショットについて ID や属性情報などを取得します。そのため、スナップショットの数が
多い場合には、本処理に時間がかかります。また、各スナップショットにおいて、ボリューム上のどのデータを
保護しているのかも確認しているため、ボリュームサイズの大きさに比例して処理に時間を要します。

もし、本事象が発生した場合には、仮想マシン内のイベントログに以下のイベントがセットで記録されます。

===
ログの名前:         System
ソース:           volsnap
日付:            XXXX/XX/XX XX:XX:XX
イベント ID:       16
タスクのカテゴリ:      なし
レベル:           エラー
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       XXXXX
説明:
The shadow copies of volume \\?...XXX-XXXX-XXXX-XXXXXXXXXXXX} were aborted because volume \\?...XXX-XXXX-XXXX-XXXXXXXXXXXX},
which contains shadow copy storage for this shadow copy, was force dismounted.
===

===
ログの名前:         System
ソース:           disk
日付:            XXXX/XX/XX XX:XX:XX
イベント ID:       51
タスクのカテゴリ:      なし
レベル:           警告
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       XXXXX
説明:
ページング操作中にデバイス \Device\HarddiskX\DRXX 上でエラーが検出されました。
===

===
ログの名前:         System
ソース:           Microsoft-Windows-Ntfs
日付:            XXXX/XX/XX XX:XX:XX
イベント ID:       140
タスクのカテゴリ:      なし
レベル:           警告
キーワード:         (8)
ユーザー:          SYSTEM
コンピューター:       XXXXX
説明:
トランザクション ログへのデータのフラッシュに失敗しました。VolumeId: \\?\Volume{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}、
DeviceName: \Device\HarddiskVolumeXX で破損が発生している可能性があります。
(存在しないデバイスを指定しました。)
===

===
ログの名前:         System
ソース:           disk
日付:            XXXX/XX/XX XX:XX:XX
イベント ID:       157
タスクのカテゴリ:      なし
レベル:           警告
キーワード:         クラシック
ユーザー:          N/A
コンピューター:       XXXXX
説明:
ディスク X が突然取り外されました。
===

上記のイベントがセットで記録されている場合には、タイムアウトが発生している可能性がありますので、
以下の対処策の実施についてご検討いただければと思います。

[対処策1]
仮想マシン内で作成するスナップショットの世代数を減らす。

スナップショットの世代数が増えることに比例して、"スナップショットの列挙処理"  の時間も長くなります。
そのため、vssadmin list shadows コマンドで作成されているスナップショットを確認し、 vssadmin delete shadows
コマンドでスナップショットを削除することをご検討いただければと思います。

Vssadmin list shadows
https://technet.microsoft.com/ja-jp/library/cc788116(v=ws.10).aspx

Vssadmin delete shadows
https://technet.microsoft.com/ja-jp/library/cc788026(v=ws.10).aspx

 

もし、vssadmin delete shadows コマンドでも削除できないスナップショットが存在する場合は、diskshadows コマンド
にて削除を試してもらえればと思います。diskshadows コマンドについての詳細は以下を参照ください。

vssadmin コマンドでシャドウ コピーが削除できない場合の対処方法について
https://blogs.technet.microsoft.com/askcorejp/2013/11/28/vssadmin-2096/

 

また、[シャドウ コピーの構成] 画面の設定から作成されるスナップショットは既定では 64 世代まで作成することが
可能になっています。このスナップショットで作成できる既定の世代数は以下のレジストリにて制御が可能ですので、
こちらの設定についてもご検討ください。

// スナップショットの世代数設定
----------------------------------------------------------------------------------------------------------------
1. [スタート] – [ファイル名を指定して実行] をクリックし、regedit と入力し、OK ボタンをクリックします。

2. 以下のレジストリキーをご確認いただき、クリックします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS\Settings

3. メニューバーより、[編集] – [新規] を選択し、[DWORD 値] をクリックします。

4. MaxShadowCopies と入力し、Enter キーを押します。

5. 続けて、[編集] – [修正] をクリックします。

6. 設定する世代数を入力し、[OK] をクリックします。

7. メニューバーより、[ファイル] – [レジストリエディタの終了] で終了します。

8. コンピュータを再起動します。
-----

※ バックアップソフトにより作成されたスナップショットは上記のレジストリでも世代数を制御することができません。
その場合は、diskshadow コマンドにより、スナップショットを定期的に削除する必要があります。

 

[対処策2]
VSS スナップショットを取得している大きなボリュームを縮小する。

"スナップショットの列挙処理" はボリュームの大きさに比例しても処理時間が長くなります。そのため、
対象ボリュームを縮小することもご検討ください。ボリュームのサイズがどれぐらいの大きさにより
本事象が発生するのかは環境に依存するところがありますが、これまでの報告事例では数十 TB を超える
ボリュームを利用しているマシンで発生しています。

ボリュームの縮小方法は以下のとおりです。

// ボリュームの縮小方法
----------------------------------------------------------------------------------------------------------------
1. [スタート] – [ファイル名を指定して実行] をクリックし、diskmgmt.msc と入力し、OK ボタンをクリックします。

2. ディスクの管理画面が開きますので、対象のボリュームを右クリックし、[ボリュームの縮小] をクリックします。

3. 縮小可能なサイズが表示されますので、そのサイズ内に収まるサイズを入力し、[縮小] をクリックします。

4. ボリュームが縮小されたことを確認します。
-----

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