virt-v2vの使い方を清書した物をこちらで公開しました。→http://blog.virtualtech.jp/ouchi/395
以下、古い内容。

virt-v2v(0.5.2)の使い方

 RHEL6からXenがなくなってKVM1本になるとのことで、もちろんそれに追従するCentOS6からもXenが消えるのだと思われますが、CentOSとXenで自宅サーバを運用している僕としてはいずれどうにかしないといけない問題です。
 で、XenからKVMへの移行を支援するツールとして、virt-v2vというものが用意されています。Fedora14から搭載予定とWikiにはあるのですが、RHEL6betaでもFedora13でも一応すでに搭載されています。ちなみに、最新バージョンではESXからの移行もできるようになっているのだとか。
 しかしこのvirt-v2v、manコマンド以外のドキュメントがないほか、ブログでのレポートも少ないので、現状ではなかなか敷居の高いツールになっています。というわけで、ぼくが日本語レポート1番のりしちゃうぞー(ええええ

前提

  • コンバートに使用するマシンはFedora13のテスト版(Beta、x86_64版)を使う。
    • RHEL6betaでやろうとしたらいろいろはまってくじけたのであきらめました。
  • VMはCentOSのXenで動いていた、CentOSがインストールされたVMをコンバートする。
  • コンバートしたVMは、CentOSのKVM環境に登録して確認する。
  • virt-v2vはgitリポジトリから最新の0.5.2を拾ってくる。
    • RHEL6betaでは0.2、Fedora13では0.3.2。いずれも、使い方が最新と異なる(ように見えた)。

VMの用意

 CentOSのXen環境で適当なVMをテスト用に用意します。
 /var/lib/xen/imagesにあるディスクイメージをFedora13マシンにコピーします。コピー先は/var/lib/xen/imagesディレクトリにします(ないので作成してください)。
 設定ファイルは次のようにxml形式にコンバートしてからFedora13マシンに送ります。

#virsh dumpxml /etc/xen/<VM名> > /root/<VM名>.xml

virt-v2vのコンパイルとインストール

 Fedoraマシンにgitパッケージをインストールして、最新コードをダウンロードします。

# git clone git://git.fedorahosted.org/virt-v2v.git

コンパイルの手順は次のとおりです。

# perl Build.pl
# ./Build
# ./Build install

……が、たぶん、いろいろ足りないとエラーが出ると思います。適当に解決してしまったので記録が残っていないのですが、perl-Net-SSLGlueパッケージを入れたり、cpanでIO::Socket::SSLをインストールしたりするとなんとかなるかと思います。

いろいろ用意

 virt-v2vがディスクイメージにアクセスしてカーネルの差し替えとかを行うため、差し替えを行うカーネルのパッケージと、それを支持する設定ファイル「virt-v2v.conf」を用意します。
 パッケージは、CentOSのリポジトリから適宜ダウンロードします。以下に2010/4/8現在の最新パッケージをダウンロードするコマンドを置いておきます。virt-v2v.confのサンプルはソースのv2vディレクトリの中に含まれていますが、同じく僕が作成したものを置いておきます。

mkdir -p /root/centos/5
cd /root/centos/5
wget http://rsync.atworks.co.jp/centos/5.4/os/x86_64/CentOS/ecryptfs-utils-75-5.el5.x86_64.rpm
wget http://rsync.atworks.co.jp/centos/5.4/updates/x86_64/RPMS/lvm2-2.02.46-8.el5_4.2.x86_64.rpm
wget http://rsync.atworks.co.jp/centos/5.4/os/x86_64/CentOS/device-mapper-1.02.32-1.el5.x86_64.rpm
wget http://rsync.atworks.co.jp/centos/5.4/os/x86_64/CentOS/device-mapper-event-1.02.32-1.el5.x86_64.rpm
wget http://rsync.atworks.co.jp/centos/5.4/os/i386/CentOS/ecryptfs-utils-75-5.el5.i386.rpm
wget http://rsync.atworks.co.jp/centos/5.4/updates/i386/RPMS/lvm2-2.02.46-8.el5_4.2.i386.rpm
wget http://rsync.atworks.co.jp/centos/5.4/os/i386/CentOS/device-mapper-1.02.32-1.el5.i386.rpm
wget http://rsync.atworks.co.jp/centos/5.4/os/i386/CentOS/device-mapper-event-1.02.32-1.el5.i386.rpm
wget http://rsync.atworks.co.jp/centos/5.4/updates/i386/RPMS/kernel-2.6.18-164.15.1.el5.i686.rpm
wget http://rsync.atworks.co.jp/centos/5.4/updates/x86_64/RPMS/kernel-2.6.18-164.15.1.el5.x86_64.rpm

コンバートの実行

 次のコマンドを実行して、コンバートを実行します。ストレージのプールはvirt-managerやvirshコマンドで作成しておいてください。

virt-v2v -i libvirtxml -op <ストレージのプール名> -f virt-v2v.conf <VM名>.xml

 実行しても何も表示されませんが、裏でディスクイメージを作成したりしています。

VMの追加と起動テスト

 Fedora13のKVMでそのまま起動できたらスムーズなのですが、virsh createする際、エラーが発生して登録できないため、今回はCentOSのKVM環境を作って、そちらにディスクイメージを写して起動テストを行いました。

ちなみに、エラーの内容はこんな感じ。
>> エラー: v2vtest.xml からのドメイン作成に失敗しました
>> エラー: internal error Process exited while reading console log output: char device redirected to /dev/pts/1
>> qemu: could not open disk image /var/lib/libvirt/images/test/v2vtest.img: Permission denied
たぶん、これ( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=574241 )と同じ現象のようで、0.80以降なら問題ないようです。Fedora13にも適用されると良いですね。

 ディスクイメージと設定ファイルをコピーします。scpでは遅いので、webサーバをたててhttpプロトコルでブワっとファイルをやり取りするのが個人的に好きです。nfsとかでも良いと思います。それはお任せで。
 コピーしたら、設定ファイルを2ヶ所書き換えます。

  • machineをfedora-13からpcに変更
    (前)<type arch='i686' machine='fedora-13'>hvm</type>
    (後)<type arch='i686' machine='pc'>hvm</type>
  • qemu-kvmのパスを修正
    (前)<emulator>/usr/bin/qemu-kvm</emulator>
    (後)<emulator>/usr/libexec/qemu-kvm</emulator>
     書き換えたら、「virsh create <設定ファイルのパス>」を実行して登録します。後はVMが起動できれば成功です。

memo

yum install git perl-libguestfs perl-XML-DOM-XPath perl-Sys-Virt
cpan Locale::TextDomain

添付ファイル: filevirt-v2v.conf 102件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-14 (金) 19:08:17