Home > Windows にまつわる e.t.c.

Windows Server 2016 Hyper-V から Windows Server 2019 Hyper-V 移行


Windows Server 2016 Hyper-V(WS16 Hyper-V) から Windows Server 2019 Hyper-V(WS19 Hyper-V) へ移行する前に色々検証したのでその情報共有です。

 

VM 互換性

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 のバージョンアップ

VM バージョンを 9.0 に上げるには VM をシャットダウンし、GUI で操作するか PowerShell の Update-VMVersion コマンドレットでバージョンを上げます。

 

VM の TPM を有効にしている場合

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 で暗号してある場合はどうにもならないので諦めるしかないかも...

 

GUI で WS16 Hyper-V から WS19 Hyper-V に TPM 情報を移行する

証明書は [ローカルコンピューター]-[シールド VM のローカル証明書] に保存されていますので、こいつを Export します。

 

Export した証明書を WS19 Hyper-V で Import すればよいですが、Import する際に「シールド VM のローカル証明書」が存在しないと Import 出来ません。

WS19 Hyper-V で TPM を ON にした VM が最初に作られた際に「シールド VM のローカル証明書」作成されるので、ダミーの VM を1つ作って TPM を ON にする必要があります。

 

PowerShell で WS16 Hyper-V から WS19 Hyper-V に TPM 情報を移行する

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 は 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 は 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 にするなどの操作をしても問題ありません、

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.