はじめに
Azure 上の Windows サーバはインプレースアップグレードをサポートしていません。ですが、ドキュメントが更新されまして、2016と2019、2022がインプレースアップグレードのサポート対象外から削除されました。
このタイミングにあわせて、2016と2019をインプレースアップグレードするためのドキュメントも公開されました。
In-place upgrade for VMs running Windows Server in Azure
手順は、インプレースアップグレード用のイメージが格納されたディスクを仮想マシンにマウントしたうえでアップグレードのコマンドを叩く形です。手順に従って、実際に2019を2022にインプレースアップグレードしてみました。
事前準備
インプレースアップグレードが失敗した場合に備えて、Azure VM バックアップまたはスナップショットを取得しておきます。
インプレースアップグレード用ディスクのマウント
ドキュメントに記載されているスクリプトを利用して、インプレースアップグレード用のディスクを作成します。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows-in-place-upgrade#script-contents
現時点で2種類のイメージがマーケットプレイスで配信されています。2016を2019にアップグレードするためのイメージと、2019を2022にアップグレードするためのイメージです。実行するアップグレードの種類やロケーションに応じてスクリプトを修正してください
> Get-AzVMImageSku -Location japaneast -PublisherName MicrosoftWindowsServer -Offer WindowsServerUpgrade
Skus Offer PublisherName Location Id
---- ----- ------------- -------- --
server2019upgrade WindowsServerUpgrade MicrosoftWindowsServer japaneast /Subscriptions/aa9de0c7-adae-4ccc-b041-e472076…
server2022upgrade WindowsServerUpgrade MicrosoftWindowsServer japaneast /Subscriptions/aa9de0c7-adae-4ccc-b041-e472076…
ディスクが作成できたら、インプレースアップグレードしたい仮想マシンにマウントします。
インプレースアップグレードの実行
サーバにログインして、マウントしたディスクに移動したうえで次のコマンドを実行します。
.\setup.exe /auto upgrade /dynamicupdate disable
アップグレード先を指定します。
アップグレードが始まるので、じっくり待ちます。
途中で RDP が切れますので、必要に応じてブート診断の画面で状況を確認します。
無事にインプレースアップグレードが成功すると、ブート診断がログイン画面になります。RDP で接続してバージョンを見ると Windows Server 2022 になっています。
後始末
Azure 的な後始末として、マウントしたインプレースアップグレード用ディスクを取り外します。
それ以外にも OS やアプリケーションが正常に動作しているかを確認しましょう。
まとめ
一部のバージョン限定ではありますが、Azure 上の Windows サーバのインプレースアップグレードがサポートされました。「仮想マシンを一旦 VHD としてエクスポートする → どこかの Hyper-V 上でVM を起動してインプレースアップグレード → 仮想マシンとして再インポート」という今までの手順と比べると、かなり簡素になりました。