Azure 上の Windows Server 2019 をインプレースアップグレードする

azure
Published: 2023-01-19

はじめに

Azure 上の Windows サーバはインプレースアップグレードをサポートしていません。ですが、ドキュメントが更新されまして、2016と2019、2022がインプレースアップグレードのサポート対象外から削除されました。

https://github.com/MicrosoftDocs/SupportArticles-docs/commit/4e899cd3222eeee017208b658723e99c633d59ba

このタイミングにあわせて、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 を起動してインプレースアップグレード → 仮想マシンとして再インポート」という今までの手順と比べると、かなり簡素になりました。