はじめに
検証環境としてVMware Workstation Pro上にHyper-Vホストを2台(HV1・HV2)構築し、仮想マシンのライブマイグレーションを試みたところ、複数のエラーが連続して発生した。同じ物理マシン上の同じVMware環境なのになぜ?という疑問から調査を開始し、最終的に原因を特定・解決できたのでその記録を残す。
構成環境
今回の検証環境は以下の通り。物理PCは1台で、その上にVMware Workstation Proをインストールし、さらにその中にHyper-VホストをゲストVMとして2台構築するという、いわゆるネスト仮想化構成となっている。
物理PC
└── VMware Workstation Pro
├── HV1(Hyper-Vホスト)← 移行元
│ └── WS2025Base2(移行対象VM)
└── HV2(Hyper-Vホスト)← 移行先
エラー①:CPU互換性エラー
発生したエラー内容
最初に発生したエラーがこちら。

仮想マシンを宛先コンピューターに移動できません。宛先コンピューターのハードウェアが、この仮想マシンのハードウェア要件と一致しません。 仮想マシンは、物理コンピューター ‘HV2’ でサポートされていないプロセッサー固有の機能を使用しています。
なぜ同じ物理CPUなのに互換性エラーが出るのか
同じ物理PC上で動いているのにCPUが違うとはどういうことか、最初は全く意味がわからなかった。
原因はVMwareの仮想CPU提示の仕組みにある。VMware Workstation Proはゲス トVMに対してCPUをエミュレートして提供しているが、HV1とHV2のVMX設定(仮想CPUのコア数・世代・機能フラグ等)が少しでも異なると、Hyper-Vレベルでは「異なるCPU」と認識してしまう。
ライブマイグレーションはVMのメモリを実行状態のまま転送する技術であるため、両ホストのCPUID情報が完全に一致していなければならない。物理CPUが同じでもVMX設定の差異があればアウトだ。
対処方法
手っ取り早い回避策:プロセッサ互換性モードの有効化
VMをシャットダウンしてから以下を実行する。
Set-VMProcessor -VMName "WS2025Base2" -CompatibilityForMigrationEnabled $true
GUIの場合はHyper-Vマネージャー → VM設定 → プロセッサ → 「移行のための物理プロセッサの互換性」にチェック。一部のCPU拡張機能が制限されるが、検証用途では問題にならない。
根本解決策:VMware側でCPUID設定を統一する
HV1とHV2の.vmxファイルを見比べてCPU関連設定を統一するか、VMware側でCPUIDマスクを設定して両VMが同一のCPUID情報を提示するようにする。
エラー②:ネットワークパスが見つからない(0x80070035)
発生したエラー内容
CPU互換性を回避した後、今度は別のエラーが発生した。

移動操作中にエラーが発生しました。フォルダーを作成できませんでした。 ネットワーク パスが見つかりません。(0x80070035)
HV2上の共有パスへのフォルダー作成に失敗し、仮想ディスクファイルの転送ができなかった。
原因の特定
まず基本的な疎通確認から実施した。
# HV1からHV2へSMBポート確認
Test-NetConnection -ComputerName HV2 -Port 445
# パス直接確認
Test-Path "\\HV2\c$"
どちらも失敗。次にHV2のWindowsファイアウォールを一時的に無効化して再テストしたところ、あっさり成功した。
原因はHV2のファイアウォールがSMBおよびHyper-V移行トラフィックをブロックしていたことだった。下記コマンドでファイヤーウォールを丸ごと解除して試してみることでも確認できた。
# HV2上で実行 # ファイアウォールを一時的に無効化してテスト
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# HV1から再度テスト後、必ず戻す
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
# HV2上で実行 #ファイルとプリンターの共有を有効化
Enable-NetFirewallRule -DisplayGroup "ファイルとプリンターの共有"
注意点:日本語版Windowsの場合、DisplayGroupの名前が日本語になっている。 英語名("File and Printer Sharing")で実行するとエラーになる。グループ名が不明な場合は以下で確認できる。
Enable-NetFirewallRule -DisplayGroupはグループに属するTCP・UDP両方のルールをまとめて有効化するため、個別にプロトコルを指定する必要はない。要はUDP445とTCP445です。まとめと教訓
CPU互換性エラーはVMwareのCPUID提示の問題 物理CPUが同じでもVMX設定の差異でHyper-VがCPUを別物と判断する。ネスト仮想化環境特有の落とし穴なので覚えておきたい。
エラーメッセージを素直に読む 「ネットワークパスが見つからない」は文字通りネットワーク疎通の問題だった。まずpingやTest-NetConnectionで基本確認から始めることが重要。
ファイアウォールの切り分けは有効 一時的に無効化して問題が解消するか確認することで、原因を素早く絞り込める。解消後は必ず適切なルールで再有効化すること。
日本語Windowsのコマンド名に注意 PowerShellのDisplayGroupパラメーターは日本語OSでは日本語名になる。事前にGet-NetFirewallRuleで名前を確認する習慣をつけておくとよい。
VMware上にHyper-V環境を構築して検証する構成は非常に便利だが、ネスト仮想化ならではの挙動に悩まされることがある。「同じ環境のはずなのになぜ?」という疑問を持ったときは、仮想化レイヤーがどこで何を変換・提示しているかを意識して調査するとよい。