VMware ESXiの仮想マシンをvirt-v2vでKVMへ変換

投稿者: | 2022年8月21日

VMware vCenterにより構成される ESXi ホスト上にあるLinuxベースの仮想マシンを、ローカルUbuntu内のQEMU / KVM へ変換インポートするのに virt-v2v を使ってみたのですが、Debianベースの仮想マシンは扱えないエラーに遭遇します。

virt-v2vの導入

VMware ESXiからQEMU/KVMへのマイグレーションは、libguestfs-toolsパッケージに含まれる、 virt-v2v を使って行なうので、まずはインストール。

 

vCenter下のESXiホストと疎通確認

manpageの実行例を参考に試してみるもエラー続きなので、まずはvCenterとの疎通確認から始めることに。

まず、vCenterへのログインユーザ名が Administrator@ABC.local のようになっているのを、URI文字列に含める場合にはコツがいります。

そして、vCenterにESXiホストはどのように登録されているのか確認し、その通りにESXiホストを指定すること。

図1.vCenterとESXiホスト

図1.vCenterとESXiホスト

ホスト名ではなくIPアドレスで登録されていたので、その通りに指定することで、ようやく仮想マシン一覧を取得することが出来ました。

このような単純な参照程度では弾かれませんが、vCenterの指定はIPアドレス( 192.168.2.23 )では認証が通らないこともあるので、FQDN名( vcsa.abc.local )にしておいた方が良さそうです。

 

CentOS VMをマイグレーション

実際にマイグレーションしたい仮想マシンは、ESXiホスト上で動くCentOS 6.8の小さなMySQLサーバで、仮想ディスクも20GB程度と小規模。

図2.変換元VMハードウェア

図2.変換元VMハードウェア

マイグレーション先はUbuntu 18.04の自機で構築されたQEMU/KVMです。システムとは別のHDDに確保した kvm と言う名のpoolが移転先です。

それではvCenterからローカルQEMU/KVMへ、 virt-v2v で変換してみます。

実行するとまず、vCenterへのログインパスワードを都合2度聞かれるのは、内部でうまく渡せていないらしいので、仕様ということでしょう。

20GBのVMがおよそ1時間弱で転送・変換されました。

 

Permission Deniedで起動しないVM

変換されたVMを早速起動させてみますが、このpoolにある他のVMは問題無く起動出来るのに、このVMだけが Permission Denied で立ち上がりません。

図3.Permission Errorで起動しない

図3.Permission Errorで起動しない

てっきり仮想ディスクの所有権を疑うもおかしな点は見つからないのですが、当該VMのXMLファイルにある仮想ディスクの指定方法を次のように変えると起動することが分かりました。

この現象について検索してみると、こちらのスレッドに辿り着きました。

曰く、セキュリティドライバを無効に設定することで回避出来るとのこと。 /etc/libvirt/qemu.conf を次の要領で編集します。

設定ファイルを編集後、サービスを再起動させると起動エラーは解消されました。

 

NIC設定を編集

仮想ハードウェアのうち、NICはESXiホストにいた頃のままになっていたので、これを移行先の環境へ合わせます。

図4.NIC設定の変更

図4.NIC設定の変更

これはVM内のシステムにとっては全く別のNICが接続されたという扱いになるので、インターフェイス名が変わり、ひいてはその設定もやり直す必要がある場合も。

今回、移行前は eth0 へ固定IPを設定していましたが、新しいNIC名 eth1 へ変わったので /etc/sysconfig/network-scripts/ifcfg-eth0 を元に /etc/sysconfig/network-scripts/ifcfg-eth1 を作って、その内容を適宜変更しました。

 

virshからシャットダウン出来ない

こうして使えるようになったVMが最後に遭遇した不具合が、 virsh shutdown コマンドを発行してもシャットダウンされない、というもの。調べてみるとvirsh は仮想マシンへAPCIを通じて指示を送っているようです。

ここで思い当たるのが昔、この仮想マシンのシステムを最小構成にするために、不要なサービスを削除したこと。その中にAPCIが含まれていたのであらためてインストールします。

 

ところがCentOSのサポート終了に伴い、 yum の参照するレポジトリが変更されていることから、

まずレポジトリ設定ファイル /etc/yum.repos.d/CentOS-Base.repo に記載されているURLを以下の要領で書き換えます。

※変数 $releasever にはメジャー番号 6 しか包含されていない。

編集後レポジトリを読み直し、 acpid をインストールすると、 virsh shutdown に応じてシャットダウンしてくれるようになりました。

 

DebianベースVMには使えない

続いてもう一つ、Ubuntu 20.04ベースの仮想マシンを同様にマイグレーションしようとするも、こちらは異常終了します。

公式サイトやmanpageにもこの挙動に関しては、以下の記述を目にすることができます。

試しに仮想マシン内で apt update をしてみるも解消されないので、 virt-v2v を用いての移行はあきらめて別途他の方法を模索します。

 

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA