Xen 仮想マシンを KVM に変換する

更新 -

Virt-v2v は、外部ハイパーバイザーのゲストを libvirt 管理の KVM、Red Hat Enterprise Virtualization (RHEV)、Red Hat Enterprise Linux OpenStack Platform などで実行できるように変換します。

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

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 をインストールし、ホストシステムを設定するには、以下の手順を実行する必要があります。

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

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 OpenStack RPMs

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-rh-common-rpms
# subscription-manager repos --enable rhel-7-server-openstack-6.0-rpms

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

# yum update

8. システムアップデートに提供した場合に、新しいカーネルバージョンでシステムを再起動し、root ユーザーとして再度ログインします。

注意: Red Hat Enterprise Linux 5 Xen 準仮想化ゲストを変換する場合、Xen 準仮想化カーネルだけが利用可能だと virt-v2v はエラーを返します。virt-v2v は新しいカーネルをインストールしないため、手動でインストールする必要があります。したがって、変換前に通常のカーネルがインストールされていることを確認しなければいけません。通常のカーネルがインストールされていない場合は、ゲストに新しくカーネルをインストールしてください。

# yum install kernel

9. virt-v2v パッケージとその依存関係をインストールします。

# yum install virt-v2v

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

export LIBGUESTFS_BACKEND=direct

11. ログアウトしてマシンに戻ります。

12. (任意) 必要に応じて virtIO ドライバーを有効にします。

virtIO ドライバーを使用すると、ディスク (ブロックデバイス)、ネットワーク、そしてその他のゲストオペレーションが KVM よりも速くなります。以前のバージョンの virt-v2v では特定の Linux ゲストにこれらのドライバーをインストールできましたが、Red Hat Enterprise Linux 7 に含まれる virt-v2v のバージョンでは、Linux の新しいカーネルまたはドライバーをインストールせず、 インストールされていない場合に警告を発生します。

virtIO を有効にして変換後のゲストパフォーマンスを向上させるには、Red Hat Enterprise Linux 5 システムを変換する前に、パッケージの最低バージョンがインストールされていることを確認する必要があります。

  • 2.6.18-128.el5 以降のカーネル
  • 2.02.40-6.el5 以降の lvm2
  • 2.4.6-203.el5 以降の selinux-policy-targeted

13. Xen ホストへの ssh-agent アクセスを設定します。

Xen ゲストを変換する前に、virt-v2v 変換サーバーからリモートの Xen ホストへパスワード無しの SSH アクセスを有効にする必要があります。

これを設定するには、ssh-agent と authorized_keys を使用する必要があります。Xen ホストの /root/.ssh/authorized_keys に SSH 公開鍵を追加します。

$ exec /usr/bin/ssh-agent $SHELL
$ ssh-add

SSH アクセスに設定したら、virt-v2v サーバーから Xen ホストへのアクセスにパスワードを求められないことを確認します。たとえば、以下のコマンドは、パスワードを要求せずに直接シェルにログ記録します。

 $ ssh root@xen.example.com

パスワードによる対話と Kerberos アクセスはサポートされません。ssh-agent および authorized_keys を使用した ssh アクセスを設定する必要があります。

14. リモートの Xen ホストへの libvirt 接続をテストするには、以下のコマンドを実行します。

virsh コマンドを使用して、リモートの Xen ホストにゲストの一覧を表示します。

 $ virsh -c xen+ssh://root@xen.example.com list --all
  Id    Name                           State
 ----------------------------------------------------
  0     Domain-0                       running
  -     rhel5-1                             shut off   

以下のように、サーバーのゲストからメタデータをダンプして libvirt 設定を確認します。

 $ virsh -c xen+ssh://root@xen.example.com dumpxml rhel5-1
 <domain type='xen'>
   <name>rhel5-1</name>
   [...]
 </domain>     

このコマンドが成功すれば、接続に成功しており、virt-v2v コマンドを実行してゲストを取得、変換、libvirt 管理の KVM をアップロードする準備が整います。

変換

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

重要

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

以下のコマンドを実行して仮想マシンを変換してください。コマンドの内容はお使いのシステムによって異なります。この例では、xen.example.com が Xen サーバー、“rhel5-1” が仮想マシンの名前、そして /v2vconvert がイメージを保存するローカルリポジトリです。出力の場所を指定しないと、virt-v2v は変換したファイルを /var/tmp に配置します。

# virt-v2v -ic 'xen+ssh://root@xen.example.com' rhel5-1 -o local -os /v2vconvert/

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

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

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

以下の例は、Xen ホストで実行する Red Hat Enterprise Linux 5 Xen 仮想マシンを変換する virt-v2v プロセスです。

# virt-v2v -ic 'xen+ssh://root@xen.example.com' rhel5-1 -o local -os /v2vconvert/
[   0.0] Opening the source -i libvirt -ic xen+ssh://root@xen.example.com rhel5-1
[   5.0] Creating an overlay to protect the source from being modified
[   9.0] Opening the overlay
[  38.0] Initializing the target -o local -os /v2vconvert/
[  38.0] Inspecting the overlay
[ 193.0] Checking for sufficient free disk space in the guest
[ 193.0] Estimating space required on target for each disk
[ 193.0] Converting Red Hat Enterprise Linux Server release 5.6 (Tikanga) to run on KVM
virt-v2v:This guest has virtio drivers installed.
[ 731.0] Mapping filesystem data to avoid copying unused and blank areas
[ 741.0] Closing the overlay
[ 741.0] Copying disk 1/1 to /v2vconvert/rhel5-1-sda (raw)
    (100.00/100%)
[5442.0] Creating output metadata
[5442.0] Finishing off

⁠完了

変換が完了すると、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 を参照してください。