Hyper-V の仮想マシンを Azure VM に移行する

今回はローカルマシンの Hyper-V 環境で作成した仮想マシンを Azure に移行します。

#背景
Azure では Marketplace からイメージ（OS やソフトウェアのセット）を選択して仮想マシンを作成することができます。しかし Azure 側で用意されているものは全て英語 UI になっており、日本語化して使うこともできますが、今回は検証環境として、ネイティブ日本語 UI のwindows マシンが必要だったので、Hyper-V の仮想マシンから移行することにしました。

#手順
1. [ローカルマシンで Hyper-V 仮想マシンを作成](https://qiita.com/drafts/d33fdcb3c8edacb38900/edit#1-%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%A7-hyper-v-%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90)
2. [Azure で使用可能な環境に設定変更](https://qiita.com/drafts/d33fdcb3c8edacb38900/edit#2-azure-%E3%81%A7%E4%BD%BF%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E7%92%B0%E5%A2%83%E3%81%AB%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4)
3. [容量固定の vhd ファイルを作成](https://qiita.com/drafts/d33fdcb3c8edacb38900/edit#3-%E5%AE%B9%E9%87%8F%E5%9B%BA%E5%AE%9A%E3%81%AE-vhd-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90)
4. [Azure にアップロード](https://qiita.com/drafts/d33fdcb3c8edacb38900/edit#4-azure-%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89)
5. [仮想マシンを作成](https://qiita.com/drafts/d33fdcb3c8edacb38900/edit#5-%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90)


#1. ローカルマシンで Hyper-V 仮想マシンを作成
まず、[Hyper-V を有効化します。](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/prepare-for-upload-vhd-image)
**[コントロール パネル]>[プログラム]>[Windows の機能の有効化と無効化]** から、Hyper-Vを有効化します。（再起動が必要です）

![有効化01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/99d9eb0f-b3f4-2971-5d7a-0c64f7a949c0.png)


次に Hyper-V マネージャーを起動します。
左側のメニューからローカルマシン名を選択し、右側のメニューから [新規]>[仮想マシン]を選択し、あとは画面に従って作成します。
注意点として今回は**第１世代**を選択し、**サイズはローカル PC の空き容量を超えない**ようにします。

![有効化02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/34e7d40a-b145-3130-73e8-602b9a27c352.png)


（windowsのインストール手順はスキップします）

#2. Azure で使用可能な環境に設定変更
作製した windows 仮想マシンを Azure で使用可能な設定に変更していきます。
この[ドキュメント](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/prepare-for-upload-vhd-image)に書いてあるコマンドを順番に実行していくだけです。
今回は単純に Azure VM に移行することが目的なので**一般化（Sysprep）は実施していません。**

実行したコマンドは[ここ](https://github.com/NakayamaKento/vhdFile_into_Azure/blob/master/LocalSetting.ps1)にまとめています。


#3. 容量固定の vhd ファイルを作成
容量固定という設定の vhd ファイルを作成します。
まず、Hyper-V マネージャーの左側のメニューからローカルマシン名を右クリック > [ディスクの編集] を選択します。
対象の仮想ディスクを選択し、[変換]>[vhd]>[容量固定] を選択し実行します。

![vhd化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/353bdf81-d328-e93d-56a2-82cf76aa50be.png)

![vhd化02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/44938e38-d7a6-b4a4-f34e-79a6927c2dbd.png)

![vhd化03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/65f0118a-e191-485d-bb02-a6d0b579bc10.png)


#4. Azure にアップロード
準備した vhd ファイルを Azure にアップロードします。今回は Azcopy を使って直接ディスクとしてアップロードします。
この[ドキュメント](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/disks-upload-vhd-to-managed-disk-powershell)を参考に、実行します。
実行したコマンドは[ここ](https://github.com/NakayamaKento/vhdFile_into_Azure/blob/master/vhd2diskDirect.ps1)

#5. 仮想マシンを作成
アップロードした vhd ファイルを基に作製されたディスクから新しい仮想マシンを作成します。
Azure Portal にログインすると、先ほど作成したディスクがあるはずなので、そのメニューから VM を作成します。

![portal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539633/bfd60353-dc92-8bff-d970-7377e79ad92a.png)


#おわりに
今回は ローカルマシンの Hyper-V 仮想マシンを Azure VM に移行しました。
基本的にはドキュメントに記載されている手順を実行するだけですが、ドキュメントが散らばっていたので、備忘録的にまとめてみました。

Azure VM としての機能を最大限に使いたければ [仮想マシン エージェント](https://docs.microsoft.com/ja-jp/azure/virtual-machines/extensions/agent-windows)をインストールすることをお勧めします。