LoginSignup
1
1

Azure上のVMをHyper-V上でOSインプレースアップグレードした話

Posted at

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に持ち込む用のディスクを用意しておく必要があります。
  • 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の作成

  1. Hyper-Vに持ち込むディスクの準備。
    今回はAzure Backupで取得したバックアップデータからディスクリストアしてアップグレード作業を実施するディスクを作成しました。
    既存VMのディスクを直接Hyper-V上にアップロードしてアップグレードすることもできますが、その場合はVMの停止が必要です。
    (何かあったときにやり直しができないので、個人的には直接アップロードはおすすめしません。)

     

  2. 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」をつけるのを忘れずに。)
    SnapCrab_No-0002.jpg

    ちなみにHyper-VがインストールされているVMからAzure Portalにログインして、Azure Portalの画面でダウンロードすることも可能ですが、
    こちらはダウンロード先が指定できないので、C:¥配下のダウンロードフォルダにアップロードされます。 
    SnapCrab_No-0001.jpg


  3. アップロードしたVHDファイルからHyper-V上にVMを作成。
    Hyper-Vを起動して[新規]-[仮想マシン]からVMを構築します。
    VM構築のウィザードは、基本的にはデフォルト値で問題ないです。
    仮想ハードディスクの接続のみ、2.でアップロードしたVHDファイルを指定してください。
    SnapCrab_No-0013.jpg

作成したVMが起動できれば準備完了!
SnapCrab_No-0004.jpg

OSインプレースアップグレードの実施

Hyper-V上に持ちこんだディスクでOSインプレースアップグレードを実施します。
メディアのマウントができれば、後はウィザードに沿って進めれば良いです。


アップグレード前後のバージョンによって必要な手順が違うので、詳細はこちら参照。
(今回はWS2012→2019へのアップグレードだったので2012→2016→2019の2段階でアップグレードを実施)


Hyper-V上へのメディアのマウントは、画面上部の「メディア」から「DVDドライブ」-「ディスクの挿入」の順番で可能です。
(Hyper-V操作するの久々過ぎて無駄に時間を費やした。。。)
SnapCrab_No-0005.jpg


「更新プログラムをダウンロードしてインストールする(推奨)」を選択。

SnapCrab_No-0008.jpg


「Windows Server 2016 DataCenter(デスクトップエクスペリエンス)」を選択。

SnapCrab_No-0009.jpg


「個人用ファイルとアプリを引き継ぐ」を選択。

SnapCrab_No-0010.jpg


「確認」をクリック。

SnapCrab_No-0011.jpg

ここで警告が出力された場合は、指示に従ってください。
実際に警告が出力された際は、WS2016には存在してない役割があるからアンインストールしてください。という内容だったので役割をアンインストールしました。


上記以外にもウィザード画面はありますが、選択肢ないものがほとんどなので、読んで進めます。


ウィザードが終わったらインプレースアップグレードが開始されるので、後は待つだけ。
(所要時間は1~2時間程度)


複数回再起動されて、アップグレード後のバージョンでログイン画面が表示されれば完了です!
SnapCrab_No-0012.jpg


※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時間程度。
SnapCrab_No-0007.jpg

アップグレード済みのディスクからVM作成

アップロードしたディスクからVMを作成します。
前手順完了時点でマネージドディスクが作成されているので、新規VMを作るでも良いし、
既存VMのディスクを置換すれば、既存VMのインプレースアップグレードを実施したことにもなります。
(既存VMのディスクを置換する場合は、最初にHyper-V上にアップロードした時点に戻ってしまうのでご注意を。)


以上です。
OSインプレースアップグレード後、アップグレード前に反映されていた設定が一部反映されていなかったり、
不明なイベントログが出力されていたりしますが、特に大きな問題は発生していない模様。。。
(WS2012と2019だと、使えるサービスや設定箇所も一部違っていたりするのであるあるなのかな。)


とりあえず無事に終わって良かったー!!!!
(OSインプレースアップグレード自体が初だったので、作業終わるまでずっとドキドキしてましたw)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1