🍙

Azure VMのインプレースアップグレードを試してみた

2024/06/16に公開

はじめに

データを保持しつつVMのOSアップグレードをしたいときってあると思います。
Microsoft公式ドキュメントで「インプレース アップグレード」と呼ばれる方法が紹介されていたので、実際にWindows Server 2019から2022へのアップグレードを試してみました。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows-in-place-upgrade

やってみた

環境

Azure VM(Windows Server 2019 Datacenter)
Standard B1ms(1 vcpu、2 GiBメモリ)

https://learn.microsoft.com/ja-jp/windows-server/get-started/hardware-requirements?tabs=ram#storage-controller-and-disk-space-requirements

アップグレード用ディスクの作成

アップグレード用ディスクを作成します。
公式からPowerShellスクリプトが提供されているので、それを一部編集して使用します。

# 顧客固有のパラメータ(それぞれ変更する)
# VMのリソースグループ
$resourceGroup = "upgrade"

# VMのリージョン
$location = "Japaneast"

# (もしあれば)VMのゾーン
$zone = ""

# ディスクの名前
$diskName = "WindowsServer2022UpgradeDisk"

# アップグレードメディアのバージョン
#「server2022Upgrade」「server2019Upgrade」「server2016Upgrade」「server2012Upgrade」のいずれかである必要がある
$sku = "server2022Upgrade"

# 共通パラメータの設定(ここから下は変更しなくてOK)

$publisher = "MicrosoftWindowsServer"
$offer = "WindowsServerUpgrade"
$managedDiskSKU = "Standard_LRS"

# 最新のVMイメージバージョンの取得
$versions = Get-AzVMImage -PublisherName $publisher -Location $location -Offer $offer -Skus $sku | sort-object -Descending {[version] $_.Version	}
$latestString = $versions[0].Version

# VMイメージの取得
$image = Get-AzVMImage -Location $location -PublisherName $publisher -Offer $offer -Skus $sku -Version $latestString


# リソースグループの作成(指定したリソースグループが存在しない場合)
if (-not (Get-AzResourceGroup -Name $resourceGroup -ErrorAction SilentlyContinue)) {
    New-AzResourceGroup -Name $resourceGroup -Location $location    
}


# マネージドディスクの作成
if ($zone){
    $diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU -CreateOption FromImage -Zone $zone -Location $location
} else {
    $diskConfig = New-AzDiskConfig -SkuName $managedDiskSKU -CreateOption FromImage -Location $location
}

Set-AzDiskImageReference -Disk $diskConfig -Id $image.Id -Lun 0

New-AzDisk -ResourceGroupName $resourceGroup -DiskName $diskName -Disk $diskConfig

アップグレード用ディスクが作成されていることが確認できました。

アップグレード用ディスクのアタッチ

Azure Portalからアップグレード用ディスクをアタッチします。


アップグレード

アタッチが完了したらVMにリモートデスクトップ接続します。

PowerShellを起動し、アップグレード用ディスク上の「Windows Server 〇〇〇〇」というディレクトリまで移動します。

以下のコマンドを実行します。

.\setup.exe /auto upgrade /dynamicupdate disable

インストーラーが起動します。
アップグレード先のイメージを選択します。

インストールが始まります。私の環境では40分ほどかかりました。

インストールが完了したら自動的に再起動します。
再起動にも少々時間がかかるため、必要に応じて「ブート診断」から状況を確認してください。

確認

Azure PortalよりWidows Server 2022にアップグレードできていることが確認できました。

VM上でも確認できました。

まとめ

「インプレース アップグレード」によって、簡単にOSのアップグレードを行えることが分かりました。EOL対応もこれで大丈夫そうです。

Discussion