Hyper-V フェールオーバー クラスター環境で VM の移動後に、移動元のノードに VM の情報が残ってしまう

こんにちは。Windows プラットフォーム サポートの加藤です。
本日は、Hyper-V フェールオーバー クラスターの環境で、仮想マシンの移動後に、移動元のノードに仮想マシンの情報が残ってしまう事象の回避策をご案内します。
※ [移動] = ライブ、クイック マイグレーションとフェールオーバーを含む所有者変更を指します。

Hyper-V フェールオーバー クラスターの環境で、仮想マシンの移動後に、移動元のノードに情報が残ってしまい、移動元の Hyper-V マネージャーと、移動先の Hyper-V マネージャーの両方に同じ仮想マシンが表示される場合がございます。

また、この問題が発生すると、仮想マシンの情報が二つのノードで重複して表示される以外に、以下の事象が発生する場合もございます。

1. ライブ マイグレーションやクイック マイグレーションを実行すると [時間がかかっています] と表示され、完了しない。
2. 仮想マシンを最新の情報に更新をしても同様に [時間がかかっています] と表示され、正常に完了しない。
3. すべてのノードの Hyper-Vマネージャーで仮想マシンが表示されなくなる。
※ この時、移動元のノードのクラスター サービスを停止すると、移動元の Hyper-V マネージャーと、移動先の Hyper-V マネージャーの両方に同じ仮想マシンが表示されることが確認できます。

通常であれば、移動元のノードからは、情報が削除されるため、両方のノードで表示されることはございません。
表示されるのは、仮想マシン リソースのオーナーノードのみです。

しかしながら、何らかの原因で情報が残ってしまった場合には、両ノードで表示されてしまいます。
上記状態に陥ってしまった場合には、以下の手順で復旧可能です。

以下の手順は移動元のノードで実施します。

1. まず、ノード上に不要な情報が残っているか確認します。
---------------------------------------------------------
当該ノード上に仮想マシン リソースがすでに存在していない (他のノード上に存在している) にもかかわらず、
以下のフォルダに XML ファイル (ファイル名:<VmID>.XML) が存在する場合は、情報が残っています。

----------------------------
"C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines Cache"
"C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines"
----------------------------

ファイル名例:
00866BD3-E68F-4724-B891-82048BD0D60C.xml
※ 00866BD3-E68F-4724-B891-82048BD0D60C は VmID です。

そのため、当該ノード上の上記のフォルダを確認していただき、<VmID>.XML ファイルが存在していましたら後述の手順で削除をお願いいたします。
※ 削除前に Cluster Service と Hyper-V Virtual Machine Management の停止を実施します。

- 参考
VmID は以下の手順で確認可能です。

Windows Server 2008 R2 以前
----------------------------
1) 管理者権限のコマンド プロンプトを起動します。
2) 以下のコマンドを実行します。
> cluster res "<重複している仮想マシンの仮想マシン構成リソース名>" /priv:vmid
※ 仮想マシン リソース名ではありません。

例:
cluster res "仮想マシン構成 test" /priv:vmid

'仮想マシン構成 test' のプライベート プロパティの一覧を作成しています:

T  リソース             名前                           値
-- -------------------- ------------------------------ -----------------------
S  仮想マシン構成 test  VmID                           3766b456-94d4-46b8-9e4d-95255841eb96
--------------

Windows Server 2012 以降
----------------------------
1) 管理者権限で PowerShell を起動します。
2) 以下のコマンド レットを実行します。

Get-ClusterResource "<重複している仮想マシンの仮想マシン構成リソース名>" | Get-ClusterParameter vmid | FL

例:
Get-ClusterResource "仮想マシン構成 test" | Get-ClusterParameter vmid | FL

Name          : VmID
IsReadOnly    : False
ParameterType : String
Value         : cc80876e-15e8-47b1-a81c-423c2c4f6936

2. 次に残っている情報を削除します。
---------------------------------------------------------
1) [スタート] - [ファイル名を指定して実行] をクリックします。
2) services.msc と入力し [OK] をクリックします。
3) サービス コンソールが開きますので Cluster Service を右クリックし、"停止" を実行します。
4) Hyper-V Virtual Machine Management をダブルクリックします。
5) [スタートアップの種類] を [無効] に変更し、[適用] をクリックします。
6) [停止] をクリックして、サービスを停止します。
7) 残存している XML ファイルを削除します。
8) Hyper-V Virtual Machine Management の [スタートアップの種類] を [自動] に変更し、[適用] をクリックします。
9) [開始] をクリックして、サービスを開始します。
10) Cluster 右クリックし、"開始" を実行します。

削除完了後に、他の問題も解消されるか確認をお願いいたします。

本 Blog が少しでも皆様のお役に立てば幸いです。