Azure上のWS2012のVMをHyper-V上に持ちこんでOSインプレースアップグレードしました。
またやることがあるのかは分からないけど、とりあえず備忘録。
はじめに
Hyper-V上でOSインプレースアップグレードを実施した経緯
少し前からAzure上のVMのOSインプレースアップグレードはサポートされるようになったので、
ただ単にAzure上で作ったVMのOSインプレースアップグレードを実施するのであれば、以下URLに記載されている手順でインプレースアップグレード用のメディア(ディスク)を作成して、
Azure VMにアタッチしてあげればAzure上でOSインプレースアップグレードが実施できるので、わざわざHyper-V上にVMを持ちこむ必要はありません。
Azure で Windows Server を実行している VM のインプレース アップグレード
しかし!!!!!
上記方法では英語版のインプレースアップグレード用のメディアしか作成できません。
Azureのマーケットプレイス経由でVMを作成した場合、日本語で使う場合でも英語版VMに日本語パックを適用して使うことがほとんどなので、
通常であれば、英語版のOSインプレースアップグレード用メディアがあれば問題ないのですが、
今回インプレースアップグレードを実施したVMは、元々オンプレミスで日本語版のWindowsメディアを利用して作成されたVM(後にAzure MigrateでAzure上に移行)だったため、
OSインプレースアップグレードには日本語版のインプレースアップグレード用メディアが必要になり、上記の方法ではできないという事態に。。。orz。。。
というわけで、最初から日本語で作られたAzure VMのインプレースアップグレードを実施したいって場合は注意が必要です!
事前準備
- アップグレード対象のVM(今回はWindows Server 2012の仮想マシン)
- VMにアタッチしているディスクをそのままHyper-Vにアップロードする場合、アップロード中はVMを停止する必要があるので、
VMを停止できない場合は、事前にAzure Backup等のバックアップデータからデータをリストアするなどでHyper-Vに持ち込む用のディスクを用意しておく必要があります。
- VMにアタッチしているディスクをそのままHyper-Vにアップロードする場合、アップロード中はVMを停止する必要があるので、
- Hyepr-V環境の構築
- 今回はAzure上にDシリーズのWS2019のVMを1台立てて、Hyper-Vをインストールしました。
- アップグレードするVMのディスクが格納できるサイズのディスクをアタッチしておく(もしくはCドライブを拡張しておく)必要があります。
- アップグレードに利用するOSメディア
- 今回はWS2012→2019へのアップグレードだったため、WS2012→2016→2019の2段階でアップグレードが必要でした。この場合は、WS2016と2019の両方のメディアが必要です。
- Azure PowerShellのインストール(Hyper-Vが構築されている環境に)
- Hyper-V上がインストールされているVMとAzure間でディスクのダウンロード/アップロードをする際に使いました。
- Azure PowerShellのインストール手順はこちら。
実施手順
Hyper-V上にアップグレード対象のVMの作成
-
Hyper-Vに持ち込むディスクの準備。
今回はAzure Backupで取得したバックアップデータからディスクリストアしてアップグレード作業を実施するディスクを作成しました。
既存VMのディスクを直接Hyper-V上にアップロードしてアップグレードすることもできますが、その場合はVMの停止が必要です。
(何かあったときにやり直しができないので、個人的には直接アップロードはおすすめしません。)
-
Hyper-Vにディスクのアップロード。
Hyper-Vを構築したVMからAzure PowerShellを起動し、1.のディスクのダウンロードを実施します。# Hyper-V用のVMからAzure環境への接続 Connect-AzAccount # SASの作成 $diskSas = Grant-AzDiskAccess -ResourceGroupName "<1.のディスクが存在しているリソースグループ名>" -DiskName "<1.のディスク名>" -DurationInSecond 86400 -Access 'Read' # ダウンロード先を指定してダウンロード実行 $localFolder = "<ダウンロード先>" $blob = Get-AzStorageBlobContent -Uri $diskSas.AccessSAS -Destination $localFolder -Force # ダウンロード完了後、指定したダウンロード先にvhdファイルがダウンロードされることを確認("abcd"というファイル名になるため、拡張子「vhd」をつけて任意の名前に変更する) # 元ディスクのサイズにも依存しますが、256GBのディスクのダウンロード完了までの所要時間は1~2時間程度。 # SASの削除 Revoke-AzDiskAccess -ResourceGroupName "<1.のディスクが存在しているリソースグループ名>" - DiskName "<1.のディスク名>"
アップロード完了後は、指定したダウンロード先に「abcd」というファイルが作成されるので、
任意の名前に変更してください。(拡張子に「.vhd」をつけるのを忘れずに。)
ちなみにHyper-VがインストールされているVMからAzure Portalにログインして、Azure Portalの画面でダウンロードすることも可能ですが、
こちらはダウンロード先が指定できないので、C:¥配下のダウンロードフォルダにアップロードされます。
-
アップロードしたVHDファイルからHyper-V上にVMを作成。
Hyper-Vを起動して[新規]-[仮想マシン]からVMを構築します。
VM構築のウィザードは、基本的にはデフォルト値で問題ないです。
仮想ハードディスクの接続のみ、2.でアップロードしたVHDファイルを指定してください。
OSインプレースアップグレードの実施
Hyper-V上に持ちこんだディスクでOSインプレースアップグレードを実施します。
メディアのマウントができれば、後はウィザードに沿って進めれば良いです。
アップグレード前後のバージョンによって必要な手順が違うので、詳細はこちら参照。
(今回はWS2012→2019へのアップグレードだったので2012→2016→2019の2段階でアップグレードを実施)
Hyper-V上へのメディアのマウントは、画面上部の「メディア」から「DVDドライブ」-「ディスクの挿入」の順番で可能です。
(Hyper-V操作するの久々過ぎて無駄に時間を費やした。。。)
「更新プログラムをダウンロードしてインストールする(推奨)」を選択。
「Windows Server 2016 DataCenter(デスクトップエクスペリエンス)」を選択。
「個人用ファイルとアプリを引き継ぐ」を選択。
「確認」をクリック。
ここで警告が出力された場合は、指示に従ってください。
実際に警告が出力された際は、WS2016には存在してない役割があるからアンインストールしてください。という内容だったので役割をアンインストールしました。
上記以外にもウィザード画面はありますが、選択肢ないものがほとんどなので、読んで進めます。
ウィザードが終わったらインプレースアップグレードが開始されるので、後は待つだけ。
(所要時間は1~2時間程度)
複数回再起動されて、アップグレード後のバージョンでログイン画面が表示されれば完了です!
※2回アップグレードが必要な場合(WS2012→2016→2019など)は、メディアを変えて同手順でアップグレード作業を実施します。
アップグレードしたディスクをAzure上にアップロード
Hyper-V上でアップグレードしたディスクをAzure上に戻します。
Hyper-V上にアップロードしたときと同様、Hyper-VがインストールされているVMからAzure Powershellに接続。
# Hyper-V用のVMからAzure環境への接続
Connect-AzAccount
# 情報の指定
$path = "<アップロードしたディスク(vhd)のフルパス>"
$resourceGroup = "<アップロード先のリソースグループ名>"
$location = "japaneast" # リージョンの指定
$name = "<アップロード後のマネージドディスク名>"
$sku = "StandardSSD_LRS" # 作成するマネージドディスクのSKU
# VHDのアップロード+マネージドディスク作成実行
Add-AzVhd -LocalFilePath $path -ResourceGroupName $resourceGroup -Location $location -DiskName $name -DiskSKU $sku
コマンド実行後、指定したリソースグループに指定した名前のマネージドディスクが作成されていればOKです。
※所要時間は256GBのディスクで2時間程度。
アップグレード済みのディスクからVM作成
アップロードしたディスクからVMを作成します。
前手順完了時点でマネージドディスクが作成されているので、新規VMを作るでも良いし、
既存VMのディスクを置換すれば、既存VMのインプレースアップグレードを実施したことにもなります。
(既存VMのディスクを置換する場合は、最初にHyper-V上にアップロードした時点に戻ってしまうのでご注意を。)
以上です。
OSインプレースアップグレード後、アップグレード前に反映されていた設定が一部反映されていなかったり、
不明なイベントログが出力されていたりしますが、特に大きな問題は発生していない模様。。。
(WS2012と2019だと、使えるサービスや設定箇所も一部違っていたりするのであるあるなのかな。)
とりあえず無事に終わって良かったー!!!!
(OSインプレースアップグレード自体が初だったので、作業終わるまでずっとドキドキしてましたw)