本記事はマイクロソフト社員によって公開されております。
こんにちは。Windows サポートチームです。
複数のマウントポイントがあるボリュームで仮想ハードディスクのチェーンが破損する事象についてお伝えさせていただきます。
概要
仮想ハードディスクを保存するドライブのマウント ポイントが複数存在する状態でチェックポイントの作成、削除を行うと親ディスクと差分ディスクの親子関係が破損し、マージ処理が失敗する場合がございます。
Hyper-V サービスでは、仮想ディスクファイルが設定されているドライブに対して複数のマウントポイントが作成されることを想定しておりません。
そのため、仮想ハードディスクを保存するドライブのマウント ポイントは、複数作成しないようお願いいたします。
事象
Hyper-V がディスクの親子関係を解決する際に、保存先のドライブに複数のマウント ポイントが存在すると同じフォルダー内にある親ディスクと子ディスクであっても、チェックポイント作成時、チェックポイントの削除時のマージ処理で、それぞれのファイルの完全パス名を取得する際に別々のマウントポイントのパス名を受け取ってしまう場合があります。
別々のパス名として扱われた結果、親子関係がないと判断されチェックポイントの削除時にマージ処理が失敗する状況が発生いたします。
複数のマウント ポイントが存在した場合の例について、以下のとおり説明します。
実体として、以下のように、C:\Hyper-V\VMs 配下に仮想ハードディスクの親仮想ディスク (.vhdx) と、子仮想ディスク (.avhdx) が存在し、C:\Hyper-V\VMs のマウント ポイントとして、D:\VMs が存在すると仮定します。
設定している仮想ディスクのパス:C:\Hyper-V\VMs\ | 追加したマウント ポイント:C:\Hyper-V\ -> D:\ |
---|---|
C:\Hyper-V\VMs\ +– VM.vhdx +– VM_AAAA.avhdx +– VM_BBBB.avhdx +– VM_CCCC.avhdx |
D:\VMs\ +– VM.vhdx +– VM_AAAA.avhdx +– VM_BBBB.avhdx +– VM_CCCC.avhdx |
上記のような状態で、親子関係を確認すると、以下のように、親子のパスが異なるドライブとして解決されます。
1 | PS > Get-VHD * | select path,parentpath |
このような状況が発生すると、Hyper-V に正しく仮想ディスクの親子関係を解決できなくなりマージ処理が失敗いたします。
補足:
本事象が発生する事例を紹介します。
複数のマウント ポイントは、意図的に手動で作成することもできますが、Hyper-V クラスターの
環境では意図せず発生する事例が報告されています。
Hyper-V クラスターの環境では、共有ディスクとして、CSV (Cluster Shared Volume) を利用します。
この CSV は、以下のパス (以降、「CSV へのパス」と記載します。) として作成され、各ノードがアクセスする Hyper-V の構成情報や、仮想ディスクが格納されます。
C:\ClusterStorage\VolumeX
※ VolumeX の X は、インデックスになります。(例:C:\ClusterStorage\Volume1 など)
Hyper-V クラスターの環境で、リソースの所有者となったノードで CSV をオンラインにする際に「CSV へのパス」の初期化に失敗した場合、回復処置として初期化に失敗した CSV のパスを以下のようなパス名に変更し、新規に CSV のパスを作成するため「CSV へのパス」が複数存在する状態が発生いたします。
C:\ClusterStorage.000\VolumeX
※ ClusterStorage.001 や ClusterStorage.002 などが作成されている場合もございます。
セキュリティ対策ソフトや、フィルター ドライバーを利用するソリューションの影響により、「CSV へのパス」へアクセスできない状況が発生した場合に、このような状況が発生する (C:\ClusterStorage.000\VolumeX が作成される) 可能性がございます。
そのため、Hyper-V クラスターをご利用の環境では、以下の公開情報に掲載している除外設定をいただき、「CSV へのパス」を含めた、Hyper-V に影響するフォルダーや、ファイルへのアクセスに影響がない状況にて、運用いただくことをお勧めしております。
Hyper-V ホストに推奨されるウイルス対策の除外
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/virtualization/antivirus-exclusions-for-hyper-v-hosts
C:\ClusterStorage.000\VolumeX が作成された場合には、C:\ClusterStorage.000\VolumeX を削除して、重複したパスが存在しない状態にしてください。
なお、削除対象は、C:\ClusterStorage.000 フォルダーとなりますが、フォルダーを削除する際は、空の状態にする必要がありますので、まず、VolumeX などのマウントポイントの削除を実施してから
C:\ClusterStorage.000 フォルダーの削除を実施します。
※ 仮想マシンの削除による、差分ディスクのマージを実施される場合には、必ず、パスを統一 (ひとつのマウント ポイントのみが存在する状態に) してからご実施ください。パスが統一されていない状態で、仮想マシンを削除した場合、差分ディスクは正しくマージされないことが想定されます。
C:\ClusterStorage.000 フォルダーの VolumeX 配下の仮想マシンフォルダーや、ファイルを削除した場合、フォルダーや、ファイルの実体が削除されますため、ご注意ください。
なお、仮想ディスクの親子関係が破損してしまっている場合には、一旦、仮想マシンを削除してから同じ構成の仮想マシンを再作成いただくことをお勧めいたします。
仮想マシンの削除時に差分ディスクの AVHDX ファイルが存在する場合、すべてマージされ親ディスクの VHDX ファイルのみが残されます。仮想マシンを新規に作成いただく際は、マージされた仮想ディスクをご利用いただければと存じます。
いかがでしたでしょうか。本投稿が少しでも皆様のお役に立てば幸いです。
本情報の内容(添付文書、リンク先などを含む)は、作成日時でのものであり、予告なく変更される場合があります。