初めに
Azure Windows VMをOracle Cloud Infrastructure(OCI)へ移行したいと考えている方も少なくないでしょうか。
本記事では、Windows VMを手動でOCIへ移行する方法を、ステップごとにわかりやすく解説します。AzureからVMをエクスポートし、VHD形式のディスクをQCOW2へ変換した後、OCI Object Storageへアップロードしてカスタム・イメージを作成し、OCI上でインスタンスを起動するまでの一連の手順を詳しく紹介します。
マルチクラウド環境を検討している方の参考になれば幸いです。
検証環境
Azure (Japan East), OCI (東京リージョン)
Windows VM バージョン:Windows Server 2019 Datacenter (Gen1)
VM ディスク容量:127 GiB
ステップ
STEP-1~STEP-2はAzure側で実施し、STEP-5~STEP-6はOCI側で実施します。
STEP-3~STEP-4の作業は、クラウド環境でもオンプレミス環境でも実施できます。本例では、Azure上のWindows VM(移行対象とは別のVM)で実施します。
作業の目安時間
ディスク容量がデフォルトの127GiBの場合に測定した時間です。
| ステップ | 処理内容 | 時間(min) | 実施場所 | コメント |
|---|---|---|---|---|
| 1 | ドライバーのインストール | 10 | Azure (作業用VM) | 事前にアカウントを用意 |
| 2 | VHDファイルのダウンロード | 50 | Azure (作業用VM) | ローカルへ |
| 3 | イメージフォーマットの変換 (VHD → QCOW2) | 30 | Azure (作業用VM) | QEMUを利用 |
| 4 | OCI Object Storageへ イメージをコピー | 17 | Azure (作業用VM) | Rcloneを利用 |
| 5 | イメージのインポート | 12 | OCI | |
| 6 | Computeインスタンスの新規作成 | 12 | OCI |
1. Oracle VirtIOドライバーのインストール (Azure側)
OCIで利用するように、Windows VMにOracle VirtIOドライバーのインストールする必要があります。
詳細は、こちらのオフィシャル記事をご参照ください。
ドライバーのダウンロード
ダウンロードサイト:Oracle Software Delivery Cloud (アカウントが必要です。)
現時点(2022年1月)の最新バージョン: 1.1.7 (67.90 MB)
検索ボックスにoracle linuxを入力し、検索結果一覧からDLP:Oracle Linux 7.9.0.0.0 ( Oracle Linux )をクリックしたら、カートに追加されます。画面右上のContinueボタンをクリックし続行します。
x86 64 bitを選択し、進んでください。
"Oracle Standard Terms and Restrictions"を承認した後、下記の画面が表示されます。一番下のV1009702-01.zipをクリックし、ダウンロードを開始します。
ダウンロード後、Zipファイルを移行対象のWindows VMにコピーしてください。
ドライバーのインストール
圧縮ファイルを解凍してから、setup.exeを実行してください。
Installボタンをクリックし、インストールを開始します。
インストール後、VMの再起動が必要です。
2. Windows VMのエクスポート (Azure側)
VMを停止してください。
Settings → Disks → ディスク名をクリック
Settings → Disk Export → Generate URLをクリック
デフォルトのURLの有効時間は1時間(3600秒)です。ディスク容量が大きい場合、多めに設定してください。
Download the VHD fileをクリックし、ダウンロードを開始します。
ファイルをローカルに保存します。(デフォルト名は、abcdです。)
ディスク容量とネットワーク回線の速度により、ダウンロード時間は異なります。
同じAzureリージョン内のWindows VMにダウンロードした場合、デフォルトの127GiBで約50分かかりました。
3. イメージ・フォーマットの変換 (VHD → QCOW2)
エクスポートされたファイルのフォーマットはVHDで、OCIでサポートされているQCOW2形式に変換する必要があります。この例では、QEMUというツールを利用します。
ダウンロード・サイト:https://www.qemu.org/download/
サポートOS:Linux, Mac, Windows
今回は、Windows(64bit)版を利用します。
ダウンロード後、ファイルを実行し、インストールを開始します(詳細を省略)。
インストール後、PATH環境変数にC:\Program Files\qemuを追加してください。
変換処理のコマンド: (VHD → QCOW2)qemu-img.exe convert -f vpc -O qcow2 azure2oci.vhd azure2oci.qcow2
E:\>ren abcd azure2oci.vhd
E:\>qemu-img.exe convert -f vpc -O qcow2 azure2oci.vhd azure2oci.qcow2
E:\>dir
Volume in drive E is New Volume
Volume Serial Number is 8CC3-C88D
Directory of E:\
01/28/2022 06:36 PM 14,846,787,584 azure2oci.qcow2
01/28/2022 05:06 PM 136,367,309,312 azure2oci.vhd
01/27/2022 11:17 PM <DIR> rclone-v1.57.0-windows-amd64
2 File(s) 151,214,096,896 bytes
1 Dir(s) 385,453,883,392 bytes free
E:\>変換処理には約30分かかりました。変換されたファイルのサイズは、元のファイルより非常に小さくなりました。
4. ディスク・イメージをOCI Object Storageにアップロード
方法はいくつかあります。この例では、Rcloneという転送ツールを利用します。
インストールとOCIへの接続設定を省略します。(詳細は以下の記事をご参照ください。)
RcloneでAzure BlobからOCIオブジェクト・ストレージにデータをコピーする方法
ローカルから、OCIのバケット(Disk_Image)にファイルをコピーします。(バケットを事前に作成しておいてください。)
E:\>rclone ls oci:Disk_Image
E:\>rclone copy azure2oci.qcow2 oci:Disk_Image
E:\>rclone ls oci:Disk_Image
14846787584 azure2oci.qcow2
E:\>この例のコピー時間は、約17分間でした。(サイズ14 GBで、Azure VM → OCI Bucket)
5. OCI Object Storageからイメージをインポート (OCI側)
Menu → Compute → Custom Images → Import image
必要な情報を入力し、インポートを開始します。(「準仮想化モード(Paravirtualized mode)」を選択します。)

「Work requests」画面で状態を確認できます。インポート・タスクには約12分間かかりました。
6. インポートされたイメージでOCIインスタンスを作成 (OCI側)
Menu → Compute → Instances → Create Instance → Change image
「Image source」で、「Custom images」を選択してから、インポートされたイメージ・ファイルを指定します。
その他の必要な情報を入力し、インスタンスの作成を開始します。
作成完了まで約12分間かかりました。
RDP経由で新しいインスタンスに接続する
ログイン・ユーザーは移行元VMと同じです。
無事にログインでき、これでVMの移行作業は完了です。

VNCコンソール接続で確認しますと、「ディスク起動中の状態に止まっている」のようなメッセージが表示されます。この状態でも、OCIコンソール上の新インスタンスの状態は、「実行中(Running)」と表示されているので、ご注意ください。
以上
公式ドキュメント
【Oracle】- KVMで使用するためのOracle VirtIO Drivers for Microsoft Windows
【Azure】 - Download a Windows VHD from Azure