Windows Server 2016 Hyper-V(WS16 Hyper-V) から Windows Server 2019 Hyper-V(WS19 Hyper-V) へ移行する前に色々検証したのでその情報共有です。
WS16 Hyper-V VM のバージョンは 8.0 で、WS19 2019 Hyper-V VM バージョンは 9.0 ですが、WS19 Hyper-V 上で 8.0 の VM がそのまま動くので、移行はとても楽です。
例えば、WS16 Hyper-V で Export した VM をそのまま WS19 Hyper-V で Import すれば移行完了します。
WSFC の場合も、片側に VM をすべて寄せて WS19 にアップグレードが完了したら WS19 側に FO する事が出来ます。
今回試していませんが、WS16 Hyper-V から WS19 Hyper-V に Live Migration も出来そうです。
VM バージョンを 9.0 に上げるには VM をシャットダウンし、GUI で操作するか PowerShell の Update-VMVersion コマンドレットでバージョンを上げます。
VM の互換性はあるのですが、唯一注意しなくてならないケースが VM の TPM を有効にしている場合です。
移行元の WS16 Hyper-V で TPM を OFF にせずに WS19 Hyper-V に VM を持っていくと、エラーになって VM が起動しなくなります。
詳細を展開すると...
これは、WS16 Hyper-V ホストが持っている TPM 情報が WS19 Hyper-V に移行されていないので発生するエラーです。
対応策は以下の三択です。
1 WS16 Hyper-V で VM の TPM を OFF にする
単純に ON になっているだけなら問題ないのですが、Bitlocker 使っているとか等で簡単に OFF できない場合は悩ましいです。
2 WS16 Hyper-V から WS19 Hyper-V に TPM 情報を移行する
TPM 情報は証明書として持っているので、証明書の Export / Import で移行できます。
なお、WS16 Hyper-V を WS19 にアップグレードインストールした場合は、証明書がそのまま引き継がれますので VM が起動しない問題は発生しません。。
3 VM 移行ではなく、VHD 移行する。
移行元の WS16 Hyper-V が既に存在しない場合は、VM 移行を諦めて、新たに VM を作成し、移行元 VM の VHD を使用します。
Bitlocker で暗号してある場合はどうにもならないので諦めるしかないかも...
証明書は [ローカルコンピューター]-[シールド VM のローカル証明書] に保存されていますので、こいつを Export します。
Export した証明書を WS19 Hyper-V で Import すればよいですが、Import する際に「シールド VM のローカル証明書」が存在しないと Import 出来ません。
WS19 Hyper-V で TPM を ON にした VM が最初に作られた際に「シールド VM のローカル証明書」作成されるので、ダミーの VM を1つ作って TPM を ON にする必要があります。
GUI レス環境の場合や、GUI ポチポチしたくない場合は PowerSehll で移行すると良いです。
証明書は「Cert:\LocalMachine\Shielded VM Local Certificates\」に格納されています。
PowerShell で移行する場合も、WS19 Hyper-V 側の Cert:\LocalMachine\Shielded VM Local Certificates\ は作られていないので、GUI の場合と同様に ダミー VM で TPM を有効にして、Cert:\LocalMachine\Shielded VM Local Certificates\ を生成します。
証明書の Export は Export-PfxCertificate コマンドレットを使います。
# パスワードを指定して証明書のエクスポート $Password = ConvertTo-SecureString -AsPlainText -Force "P@ssW0rd" Get-ChildItem "Cert:\LocalMachine\Shielded VM Local Certificates" | Export-PfxCertificate -FilePath "D:\CertExport\VM_Cert.pfx" -Password $Password |
証明書の Import は Import-PfxCertificate コマンドレットを使います。
# 証明書のインポート $Password = ConvertTo-SecureString -AsPlainText -Force "P@ssW0rd" Import-PfxCertificate -FilePath "D:\CertExport\VM_Cert.pfx" -CertStoreLocation "Cert:\LocalMachine\Shielded VM Local Certificates" -Password $Password |
VM が起動しないからと、WS19 Hyper-V で TPM を OFF する等の VM 設定を変更すると、証明書を Import しても VM が起動出来なくなり VM を作り直すしか手が打てなくなるので注意が必要です。
VM 設定は変更せず、証明書 Import 後に VM を起動すれば OK です。
一度 VM 起動してしまえば、その後に TPM を OFF にするなどの操作をしても問題ありません、
Copyright © MURA All rights reserved.