【ナレッジ】
オンプレ環境にある物理PCのイメージをクラウド上のVMに適用する流れ

【活用シーン】
オンプレ環境で運用しているPCのイメージをそのままクラウドに移行してVDI環境を作成することで在宅勤務環境を作る

【利用環境】
Azure

【方法】
実際に筆者がオンプレ環境にある物理PCのイメージをクラウド上のVMに適用した際にはちょうど良い参考資料がなく様々がサイトに有用なナレッジが分散していたため、筆者が試行錯誤しながら感じたことや参考になったコマンドやサイトのリンク先をまじえてご説明する。

全体像を理解するには”cloudsteady.jp”からの引用で最も参考になったのでご紹介する。
手順は以下①~⑥でオンプレミス側での作業とクラウド環境(Azure側での作業)に分かれており、私の手順ではオンプレミス環境が①~④、クラウド環境での作業が⑤~⑥となる。
(参考リンク)https://cloudsteady.jp/post/25239/
image

【オンプレ環境】
①disk2vhd:第二世代(vhdx)形式でファイル作成
まず、disk2vhdのアプリを下記サイトを参考に64bitのPCに準拠した第二世代(vhdx)形式で作成して保存
保存先はローカルのCドライブ配下にいったん保存
(参考リンク)https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd

②仮想化したPCイメージであるvhdxファイルに問題ないことを確認するため、Hyper-vでvhdxファイルを読み込んで起動できることを確認しSysprep(一般化)
次にロカールPCであるWindows10上でHyper-vを起動して先ほどCドライブに保存したvhdxファイルを読み込んで起動できることを確認する。この際にWindows10上でどのようにすればHyper-vを起動できるようにするかは下記のサイトが参考になる。Hyper-vはWindows 10 EnterprisePro、または Educationに標準的にインストールされているが、デフォルトの設定ではスタートメニューからアプリを探して起動することはできない点に注意が必要である。
(参考リンク)https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

③P2V(Hyper-vで「容量固定形式」で第一世代(vhd)形式に変換保存)
ここが最も難しいポイントとなる。Azureに仮想化したPCイメージを上げる際には以下の3点が必要となる。
1点目:容量固定形式でないといけない⇒③で説明
2点目:ファイル形式がvhd形式でないといけない(2021年12月時点)⇒③で説明
3点目:vhdファイルは容量サイズが整数でないといけない⇒④で説明

Azure 仮想マシン上の Microsoft Hyper-V Generation 2 に仮想化したPCイメージをインストールするためには第 2 世代 VHDX ファイルから VHD ファイルを作成する必要がある。このためにはHyper-V上で②で確認済のvhdxファイルをvhdファイル形式で別名ファイルとして保存し、その際にあわせて容量固定形式を指定する。下記リンクが参考になったので参照をお勧めする。
(参考リンク)https://www.ibm.com/docs/ja/sig-and-i/10.0.0?topic=mhvs-creating-azure-compliant-generation-2-virtual-hard-disk-vhd-from-vhdx-file

④powershellでVHD容量サイズの整数化
最後に③で出来上がった容量固定形式のvhdファイルを整数にそろえるため、Resize-VHDコマンドを同じくWindows10上で起動したPowerShell上で実行してファイルサイズをそろえる。以下の参考コマンド例は Dドライブ直下にあるvhdファイル(SH-PC.vhd)を257GBにリサイズしている。リサイズ前のvhdファイルは256.8GBのように整数ではなかったため繰り上げ形式で最も近い整数である 257GBにリサイズする。
(参考コマンド)Resize-VHD -Path D:\SH-PC.vhd -SizeBytes 257GB

【Azrureでの作業】
⑤Azure のStorage explorerでAzure StorageにVHDファイルをロード
まず、Azureのストレージアカウントを作成する。Azureのサービスの検索欄に「ストレージアカウント」で検索して、「ストレージアカウント」のサービスを利用する。「作成」ボタンを押して各項目を設定して、ストレージアカウントを作成する。この際のBlOBの種類は仮想ファイルの保存に適した「ページBLOB」を選択する。
ストレージアカウントができたらAzure Storage Explorerを開いて、ローカルのVHDファイルをAzureのストレージアカウントにアップロードする。アップロードの時間はvhdファイルのサイズと利用するネットワークの帯域に依存するが、vhdファイルが数百GBのの場合には上り数ギガの光回線でも1時間から2時間ほどの時間が必要となる。

⑥マスタイメージ化
Azureのサービスの検索欄に「イメージ」で検索して、「イメージ」のサービスを利用する。「作成」ボタンを押して、⑤でVHDファイルをアップロードしたAzure Storageを指定してマスタイメージを作成する。

以上がオンプレ環境にある物理PCのイメージをクラウド上のVMに適用する流れである。
繰り返しとなるが、最も難しいポイントは③と④の容量固定形式への変換、Azureの仕様のためにせっかく第二世代形式で作成したvhdxファイルの拡張子をvhd形式で変換して保存しなおすこと、VHD容量サイズの整数化の3点である。
筆者の苦労したポイントを踏まえて全体をイメージしやすい流れの図と補足を加えながら参考リンクとコマンドを例示して説明した。J2Cが何かと話題になることが多いが、実務でオンプレ環境にある物理PCのイメージをクラウド上のVMに適用する必要がある方の参考になれば幸いである。