ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

Hyper-VのVHDファイルをVMインポートしてみた

こんにちは、CRE部 技術支援チームです。

ニフクラにはVMware vSphere環境のイメージをインポートすることができる、VMインポートの機能があります。
VMインポート機能でインポートするにはOVFフォーマット(拡張子.ovf)のファイルを用意する必要がありますが、他社の仮想環境のディスクイメージもインポートすることが可能です。今回はMicrosoft社が提供する仮想化ソフトHyper-VのVHDフォーマット(拡張子.vhd)ファイルからインポートが可能なOVFファイルを作成してインポートするまでの一連の作業を実施してみたいと思います。

VHD 2 OVF 2 ニフクラ

前提条件

本ブログは、以下の前提知識がある方を想定しています。

  • ニフクラの基本的なコントロールパネルの操作、サービスを利用する知識
  • Linuxサーバーの基本的な操作、知識
  • ESXiの基本的な操作、知識

手順概要

今回はニフクラのクラウド ユーザーガイド(ディスクイメージからovfファイルへの変換) の手順に沿ってVMインポートを実施します。

手順の概要は以下の通りです。

  1. ディスクイメージを変換するために qemu-imgをインストールします
  2. ディスクイメージをVMDK(拡張子.vmdk)ファイルに変換します
  3. ESXi上でVMDKファイルを使用して、VMインポートの条件に合う設定で仮想マシンを起動します
  4. 起動した仮想マシン上でVMインポートに必要なOS上の設定を行います
  5. ESXiからエクスポートを実行してOVFファイル、VMDKファイルを作成します
  6. エクスポートしたOVFファイルをVMインポート可能な条件に合うように修正します
  7. VMインポートでサーバーを作成します

利用リソース

本検証を実施するにあたり、ニフクラとは別の環境で以下を用意しています。

リソース・環境 備考
VHDファイル OS:Rocky Linux 8.7
qemu-img実行環境 OS:Rocky Linux 8.7
ESXi 環境 ESXiバージョン:7.0.3

ESXiのインストール手順は省略させていただきます。
公式ドキュメント等をご参照ください。

作業内容

1. qemu-img のインストール

用意したVHDのイメージファイルをVMDKファイルに変換するためにqemu-img コマンドラインツールをインストールします。
今回は予め用意していたRocky Linux の環境にインストールします。

# yum -y install qemu-img

2. ディスクイメージの変換

1.でインストールしたqemu-imgコマンドを利用してディスクイメージを変換します。

# qemu-img convert -O vmdk Rocky-8.vhd Rocky-8.vmdk

※Rocky-8.vhdが変換前のファイル、Rocky-8.vmdkが変換後のファイルです。

3. 仮想マシンの設定

VMインポートの条件に合うようにESXiを利用して設定の変更を実施します。

3.1. ESXi上で仮想マシンを新規作成
ディスクを付けない状態で仮想マシンを作成します。
 
今回は仮想マシン名を「testVM01 」として作成しています。

名前とゲストOSの選択画面では、互換性で「ESXi 6.5 仮想マシン」を選択します。

※対応しているバージョンはVMイメージの作成方法のページの「互換性」の項目をご確認ください。

新規作成時の以下の画面の赤枠の部分をクリックすることでハードディスクを削除できます。

設定が完了するとハードディスク無しの仮想サーバができます。

3.2. 仮想マシンのディスクの設定
仮想マシンの編集画面を開いてハードディスクに 2. で作成したVMDKファイルを設定します。

まずは仮想マシンオプションの画面を開いて、用意したディスクイメージに合ったファームウェアが正しく指定されていることを確認します。
今回用意したディスクイメージはEFIでOSがインストールされているため、BIOSからEFIに変更しています。

※EFIのVMインポートについてニフクラでは動作検証を実施していません。利用者責任のもと検証を実施の上、利用をご検討ください。

次に仮想ハードウェアの画面を開いて「ハードディスクの追加」から「既存のハードディスク」を選択します。

データストアブラウザーが開くので、VMDKファイルをアップロードして選択します。

選択後、ハードディスクの設定は以下のようになるので設定を保存します。

3.3. 仮想マシンの起動確認
仮想マシンの電源を入れ、仮想マシンが起動できるかを確認します。
起動できない場合は仮想ハードウェアの画面を開いてコントローラの場所を「IDE コントローラ0」「マスター」に変更して起動します。

仮想ディスクがIDEの場合、そのままではニフクラにVMインポートができないため、仮想ディスクの変換が必要になります。

3.4. 仮想ディスクの変換
IDEの仮想ディスクをSCSIに変換します。
※3.3. でSCSIのまま起動した場合は変換が不要なので、4. に進んでください。

仮想マシンを停止します。

# shutdown -h now

仮想マシンの編集画面を開いて、ハードディスクを削除します。
※「データストアからファイルを削除します」はチェックしない

VMDKファイルの編集のため、ESXiにSSH接続します。

データストアの場所に移動して、viでVMDKファイルを編集します。

# cd [VMDKファイルの場所]
# vi Rocky-8.vmdk

Rocky-8.vmdkの以下の箇所を

ddb.adapterType = "ide"  

次のように変更します。

ddb.adapterType = "lsilogic"  

ESXiの画面に戻って3.2.と同様にVMDKファイルを指定してハードディスクを追加します。
このときコントローラの場所の項目が「SCSIコントローラ0」「SCSI (0:0)」となっていることを確認します。

仮想マシンを起動し、正常に動作することを確認します。

起動時にエラーが表示されたとき

「仮想マシンtestVM01のパワーオンに失敗しました。「scsi0:0」用のディスクタイプ7がサポートされていないか無効です。ディスクがインポートされていることを確認してください。」

上記のようなエラーメッセージが表示された場合は以下の手順を実施します。

3.4の最初の手順と同様に、もう一度仮想マシンからハードディスクを削除します。

ESXiにSSH接続してデータストアの場所に移動します。

# cd [VMDKファイルの場所]

vmdkファイルをrenameします。

# mv Rocky-8.vmdk old_Rocky-8.vmdk

VMDKファイルを変換します。

# vmkfstools -i [VMDKファイルの場所]/old_Rocky-8.vmdk -d thin [VMDKファイルの場所]/Rocky-8.vmdk

以下のファイルが作成されます。
Rocky-8.vmdk
Rocky-8-s001.vmdk

再びESXiの画面に戻って、3.2.と同様にRocky-8.vmdkを仮想マシンに接続して起動できることを確認します。

4. 仮想マシンOS上の設定

VMイメージの作成方法のページの「OSの設定」を参照してVMインポートに必要なOS上の設定を行います。
ESXi上で起動している仮想マシンにSSH接続して設定を行っていきます。

4.1. open-vm-toolsのインストール
VMware Tools または open-vm-tools がインストールされていないとVMインポートが失敗します。
今回はニフクラFAQの手順でopen-vm-toolsのインストールを行います。

※仮想マシンからインターネットに接続できる必要があります。
※利用可能なVMware-Toolsのバージョンについては機能・サービスページの「VMware-Toolsのバージョンについて」の項目をご確認ください。

VMware Tools / open-vm-tools がインストールされていない状態であることを確認します。

# vmware-toolbox-cmd -v
-bash: vmware-toolbox-cmd: command not found

open-vm-toolsをインストールします。

# yum install open-vm-tools

インストールを確認します。

# rpm -qa | grep open-vm-tools
open-vm-tools-12.0.5-2.el8.x86_64
# vmware-toolbox-cmd -v
12.0.5.35655 (build-19716617)

4.2. ネットワーク設定の変更
今回は「共通グローバル」「共通プライベート」を使用するため、DHCPを有効にします。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

以下の内容に変更します。

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

設定が完了したら仮想マシンを停止します。

# shutdown -h now

5. VMインポートに使用するファイルのエクスポート

VMware Open Virtualization Format Tool (以降はOVF Toolと記載)を使って仮想マシンのエクスポートを実施します。

作業端末のOSに合ったOVF Toolをインストールします。
今回はWindows 64bit版を利用して作業を実施します。

コマンドプロンプトを起動して、OVF Toolのインストール先に移動します。

> cd "C:\Program Files\VMware\VMware OVF Tool\"

ESXiに接続して仮想マシンをエクスポートします。
※対象の仮想マシンは予め停止しておく必要があります。

> .\ovftool --noImageFiles vi://[ESXiのユーザ名]:[ESXiのパスワード]@[ESXiのIPアドレス]/[仮想マシン名] [OVF保存先のフルパス]

エクスポートが完了すると、以下の4つのファイルが作成されます。
testVM01.mf
testVM01.ovf
testVM01-disk1.vmdk
testVM01-file1.nvram

6. ovfファイルの修正

エクスポートしたOVFファイルをVMイメージの作成方法のページの内容に沿うように修正します。

nvramを含む以下の行を削除します。

<File ovf:href="testVM01.nvram" ovf:id="file2" ovf:size="74232"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="nvram" vmw:value="ovf:/file/file2"/>

※今回修正したのは上記内容のみでしたが、インポートするイメージや環境によって修正箇所が異なります。詳細はVMイメージの作成方法のページでご確認ください。

7. VMインポートを実施

「サーバー:VMインポート」の手順に従ってVMインポートを実施します。

以下の画面で「testVM01.ovf」を選択します。

OVFファイルのインポートが完了した後で「testVM01-disk1.vmdk」をアップロードします。

設定の不備が無ければ、しばらく待つとサーバーがオンラインになります。

まとめ

今回はHyper-VのVHDファイルをニフクラでVMインポートする一連の手順を実施しました。qemu-imgコマンドを用いてディスクイメージを変換することで、Hyper-VのVHDファイルなどのVMDK以外のディスクイメージでもニフクラを利用できることがお分かりいただけたかと思います。
今回の手順はあくまでも一例で持ち込む前の環境や設定によって必要な作業が変わってきますが、ニフクラにディスクイメージを持ち込む際の参考になれば幸いです。

注意事項

  • 本記事に記載されている会社名、製品名等の固有名詞は各社の商号、登録商標または商標です。
  • 本記事の他社サイトへのリンクにつきまして、リンク切れの際はご容赦ください。
  • 本記事の手順は参考情報となり、ニフクラのサポート対象外となります。
  • 本記事で記載した各サービス/ニフクラの機能等は、2023年2月時点の情報です。ご利用の際は、各サービス/ニフクラの機能の最新情報をご確認ください。