VMware vCenter 環境の Windows 仮想マシンを KVM 環境用に変換する

更新 -

Virt-v2v は、外部ハイパーバイザーの仮想マシンを libvirt 管理の KVM、Red Hat Enterprise Virtualization (RHEV)、Red Hat Enterprise Linux OpenStack Platform などで実行できるように変換します。virt-v2v は、Xen および VMware vCenter 環境で実行する Red Hat Enterprise Linux および Windows 仮想マシンを変換できます。

このナレッジでは、Windows 仮想マシンを Red Hat Enterprise Linux 7 KVM で実行するように、VMware vCenter ハイパーバイザーから変換してインポートする方法を説明します。

virt-v2v ツールの概要、サポートされる変換、そして、その他の仮想マシン変換の種類については、Converting Virtual Machines from Other Hypervisors to KVM with virt-v2v を参照してください。

前提条件

リソース要件

virt-v2v を使用して変換するには、最低でも以下のシステムが必要になります。

  • ネットワークの帯域幅が 1Gbps 以上
  • ファイル化される仮想マシンと、変換したターゲットを保存するのに十分なディスク領域
  • 仮想マシンのファイルシステムに十分な空き領域
ファイルシステム 最低限の空き領域
root のファイルシステムまたは c:\ 20 MB
/boot 50 MB
その他のマウントできるファイルシステム 10 MB

準備

virt-v2v は Red Hat Enterprise Linux 64bit ホストシステムから実行します。virt-v2v はホストにインストールする必要があります。

標準の virt-v2v パッケージの他に、Windows 仮想マシンに libguestfs-winsupport および virtio-win パッケージをインストールすることが推奨されます。これらのパッケージは、仮想マシンのパフォーマンスを速くする virtIO ドライバーを仮想マシンに提供します。

これらのパッケージをインストールし、ホストシステムを設定するには、以下の手順を実行する必要があります。

ホストシステムを設定する

1. ホストシステム v2vsystem1.example.com に root ユーザーとしてログインします。

2. Red Hat サブスクリプション管理にシステムを登録していない場合は登録します。

# subscription-manager register

Red Hat サブスクリプション管理の認証情報を入力して続行します。

3. 以下のコマンドを実行して、利用できるプールの一覧を取得して保存します。

# subscription-manager list --available > /tmp/pools_available

4. /tmp/pools_available ファイルを開いて、以下のパッケージグループにアクセスを提供するサブスクリプションの Pool ID を書き留めます。

Red Hat Enterprise Linux Server RPMs
Red Hat Enterprise Linux Supplementary RPMs
Red Hat Enterprise Linux Server V2V Tools for Windows

5. 書き留めた Pool ID 値を使用して、以下のようにコマンドを実行します。

# subscription-manager subscribe --pool=8a85f4923cf494ef013ddc6045a541c8

6. これでシステムにサブスクリプションが登録されます。一旦、すべてのリポジトリを無効にし、この手順に必要なリポジトリだけを再度有効にします。

# subscription-manager repos --disable=*
# subscription-manager repos --enable rhel-7-server-rpms
# subscription-manager repos --enable rhel-7-server-supplementary-rpms
# subscription-manager repos --enable rhel-7-server-v2vwin-1-rpms
# subscription-manager repos --enable rhel-7-server-rh-common-rpms
# subscription-manager repos --enable rhel-7-server-openstack-6.0-rpms

7. システムアップデートを実行します。

# yum update

8. システムアップデートで新しいカーネルバージョンが提供された場合はそのバージョンでシステムを再起動し、 root 権限で再度ログインします。

9. virt-v2vlibguestfs-winsupport、および virtio-win パッケージとその依存関係パッケージをインストールします。

Note: Red Hat Enterprise Linux 7 に含まれる virt-v2v のバージョンでは Linux の新しいカーネルまたはドライバーをインストールせず、インストールされていない場合には警告します。

Windows 仮想マシンには、ドライバーが存在すれば、/usr/share/virtio-win からドライバーをインストールします。

# yum install virt-v2v
# yum install libguestfs-winsupport
# yum install virtio-win    

10. 以下を /root/.bashrc に追加します。

export LIBGUESTFS_BACKEND=direct

11. ログアウトします。

12. 仮想マシンに VMware Tools がある場合は削除します。

Windows 仮想マシンを VMware vCenter から変換する場合、仮想マシンに VMware Tools がインストールされていないことを確認してください。VMware Tools は変換後に削除できないため、変換プロセスの前にアンインストールする必要があります。VMware Tools をアンインストールせずに仮想マシンを変換すると、仮想マシンが正しく機能しません。

Note: virt-v2v は VMware Tools を Linux 仮想マシンから削除できるため、この手順は Linux 仮想マシンでは必要ありません。

これで、virt-v2v コマンドを実行して、仮想マシンを取得、変換し、libvirt 管理の KVM 環境へアップロードできるようになりました。

変換

ここまでの手順で、virt-v2v を使用して、Red Hat Enterprise Linux KVM で実行するように仮想マシンを変換できるようになりました。

Windows 仮想マシンを変換するプロセスは以下の 2 段階に分けることができます。

1. オフライン変換
2. Firstboot

オフライン変換

ローカルの仮想マシンを変換する一般的なコマンド構文は以下の通りです。

# virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp

# virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi esx_guest

# virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi esx_guest -o rhev -os rhev.nfs:/export_domain --network rhevm

Virt-v2v には、-i および -o オプションを使用して選択できる入力モードと出力モードが多数あります。virt-v2v の実行ごとに選択できる入力モードと出力モードは 1 つだけです。仮想マシンのイメージファイルおよび変換後のターゲットのために十分なディスク領域が必要です。

virt-v2v パラメーターの一覧については、virt-v2v の man ページを参照してください。

重要箇所

v2v 変換プロセスを実行する前に、仮想マシンを停止してください。

以下のコマンドを実行して仮想マシンを変換してください。コマンドの内容はお使いのシステムによって異なります。この例では、esx.example.com が VMware vCenter サーバー、“esx_guest” が仮想マシンの名前、そして /var/tmp がイメージを保存するローカルリポジトリです。

# virt-v2v -ic vpx://username@esx.example.com/Datacenter/esxi “esx_guest” -o local -os /var/tmp

また、仮想マシンにネットワークインターフェイスが 1 つしかない場合は、--network パラメーターを使用して、ローカルで管理されたネットワークに接続することもできます。

VMware vCenter サーバーで認証する

VMware vCenter サーバーへの接続には認証が必要です。virt-v2v は、VMware vCenter に接続する際のパスワード認証をサポートします。パスワードは変換時、または --password-file オプションを使用して入力できます。

無効な証明書を持つ VMware vCenter サーバーに接続する

非プロダクション環境では、VMware vCenter サーバーに無効な証明書 (自己署名証明書 など) が設定されている場合があります。この場合、以下のように ?no_verify=1 を接続 URI に追加して、証明書チェックを明示的に無効にできます。

...-ic esx://esx.example.com?no_verify=1 ...

Firstboot

オフライン変換が完了した時、 変換した仮想マシンが正しく動作するのに必要なドライバーのすべてがインストールされているわけではありません。残りのドライバーは、仮想マシンを最初に起動する時に自動的にインストールされます。

重要箇所

最初に仮想マシンにログインした際、ドライバーの自動インストールプロセスを中断すると、その後仮想マシンが正しく起動されなくなるため注意してください。

⁠完了

変換が完了すると、virt-v2v は、変換前の仮想マシンと同じ名前を持つ新しい仮想マシンの libvirt ドメイン XML ファイルを作成します。新しい仮想マシンは、virt-manager や virsh などの libvirt ツールを使用して起動できます。

libvirt で仮想マシンを管理する方法については、Red Hat Enterprise Linux 7 Virtualization Deployment and Administration Guide を参照してください。

注意

現在、virt-v2v ツールは、仮想マシンのネットワーク設定を再構築できません。変換した仮想マシンをソースとして同じサブネットに接続しない場合、そのネットワーク設定にはアップデートが必要になる場合があります。virt-customize(1) の man ページも併せて参照してください。

参照情報

virt-v2v を使用して仮想マシンを変換する方法については、virt-v2v の man ページと http://libguestfs.org/virt-v2v.1.html を参照してください。