本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
利用中のクラウドから、他クラウドにリソースを移行したい時、VMの移行は重要なタスクになります。AzureからWindows VMをOCI(Oracle Cloud Infrastructure)に手動で移行する方法を紹介したいます。少しお役に立てれば幸いです。
検証環境
Azure (Japan East), OCI (東京リージョン)
Windows VM バージョン:Windows Server 2019 Datacenter - Gen1
VM ディスク容量:127 GiB
ステップ
1. Oracle VirtIOドライバーのインストール (Azure側)
2. Windows VMのエクスポート (Azure側)
3. イメージ・フォーマットの変換 (VHD to QCOW2)
4. ディスク・イメージをOCIにアップロードする
5. OCIオブジェクト・ストレージからイメージをインポートする (OCI側)
6. インポートされたイメージでOCIインスタンスを作成 (OCI側)
STEP-1~2はAzure側で実施します。STEP-5~6は、OCI側で実施します。
STEP-3~4までの実施場所は、固定ではないで、クラウド側か或いはローカルどちらでもOKです。
作業の目安時間
ディスク容量は、デフォルトの127 GiBの場合、測定した時間です。
ステップ | 処理内容 | 時間(分) | コメント |
---|---|---|---|
2 | VHDファイルのダウンロード | 50 | Azure Windows VMで実施 ローカルへ |
3 | フォーマット変換 VHD → QCOW2 |
30 | Azure Windows VMで実施 QEMUを利用 |
4 | オブジェクト・ストレージへ イメージをコピー |
17 | Azure Windows VMで実施 rcloneを利用 |
5 | イメージのインポート | 12 | OCIで実施 |
6 | インスタンスの新規作成 | 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
ボタンをクリックし続行します。
"Oracle Standard Terms and Restrictions"を承認した後、下記の画面が表示されます。一番下のV1009702-01.zip
をクリックし、ダウンロードを開始します。
ダウンロード後、Zipファイルを移行対象のWindows VMにコピーしてください。
ドライバーのインストール
圧縮ファイルを解凍してから、setup.exe
を実行してください。
Install
ボタンをクリックし、インストールを開始します。
2. Windows VMのエクスポート (Azure側)
Settings -> Disks -> ディスク名をクリック
Settings -> Disk Export -> Generate URL
をクリック
デフォルトのURLの有効時間は、1時間(3600秒)です。ディスク容量が大きい場合、多めに設定してください。
Download the VHD file
をクリックし、ダウンロードを開始します。
ファイルをローカルに保存します。(デフォルト名は、abcd
です。)
ディスク容量とネットワーク回線の速度により、ダウンロード時間の差異があります。
同じAzureリージョンにあるWindows VMにダウンロードしてみて、デフォルトの127GiBの場合、約50分がかかりました。
3. イメージ・フォーマットの変換 (VHD to QCOW2)
エクスポートされたファイルのフォーマットはVHDで、OCIサポート対象のQCOW2に変換する必要があります。この例では、QEMUというツールを利用します。
ダウンロード・サイト:https://www.qemu.org/download/
サポートOS:Linux, Mac, Windows
ダウンロード後、EXEファイルを実行し、インストールを開始します。(詳細を省略する)
インストール後、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にアップロードする
やり方は、いろいろがあります。この例では、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オブジェクト・ストレージからイメージをインポートする (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の移行作業が終わりました。
注意
この例は、Azure Windows VM Gen1を利用しています。最新リリースされたVM Gen2(デフォルトの選択肢)を利用する場合、STEP1からSTEP6のインスタンス新規作成まで、エラー発生せず実施できますが、RDPで新インスタンスに接続しようとすると、接続できません。
VNCコンソール接続で確認しますと、「ディスク起動中の状態に止まっている」のようなメッセージが表示されます。この状態でも、OCIコンソール上の新インスタンスの状態は、「実行中(Running)」と表示されているので、ご注意ください。
以上
関連記事
オラクル・クラウドの個人ブログ一覧
AWS EC2インスタンスをOracle Cloudに移行
RcloneでAzure BlobからOCIオブジェクト・ストレージにデータをコピー
テナンシ間 OCI カスタム・イメージの移行
公式ドキュメント
Oracle - KVMで使用するためのOracle VirtIO Drivers for Microsoft Windows
Azure - Download a Windows VHD from Azure