LinuxサーバーをKVMへ移行:VMware Converterの代替としてvirt-p2vを使用するガイド

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

古い物理サーバー移行という難題

半年前、私は国内企業のシステムアップグレードプロジェクトを引き受けました。彼らのDell PowerEdge R710サーバー群は、CentOS 6とUbuntu 14.04で8年もの間、休むことなく稼働し続けていました。オレンジ色のエラーランプが点滅し、ハードディスクからは異音が聞こえ、寿命が近いことを告げていました。私の任務は、これらすべての「骨董品」を新しいKVMクラスタに移行し、リソースを有効活用してバックアップを容易にすることでした。

VMwareの専門家であれば、VMware vCenter Converterは非常になじみ深いツールでしょう。しかし、オープンソースのKVMエコシステムやProxmoxに移行する場合、同等のツールを見つけるのは容易ではありません。私はかつてSSH経由のddやClonezillaを試したことがあります。結果はどうだったでしょうか? VirtIOドライバの不足やGRUBエラーにより、仮想マシンが起動画面でフリーズすることが頻繁にありました。

何晩も徹夜した後、私はvirt-p2vを見つけました。このツールはvirt-v2vと組み合わせることで、LinuxサーバーをKVMへ最もスムーズに移行できるコンビとなります。実際、ライセンス料を一切かけずに、一晩で5台の物理サーバーをProxmoxへ移行することに成功しました。

一般的なP2V手法の比較

作業に取り掛かる前に、通常検討される選択肢を見てみましょう:

  • dd/rsyncコマンドの使用: 最も手動な方法です。物理ディスクからイメージファイルへ生データをコピーします。しかし、VirtIOドライバを自動インストールできないため、ブートローダーのエラー率が非常に高いです。
  • Clonezilla: ディスクイメージのバックアップには適しています。しかし、仮想マシンにリストアする際、仮想化されたハードディスクを認識させるためにカーネルを手動で再構成する必要があり、非常に時間がかかります。
  • virt-p2v / virt-v2v: Red Hatによる専用ソリューション。ハードウェアを自動的にスキャンし、ディスク形式をqcow2に変換し、変換プロセス中にドライバを再インストールします。

virt-p2vの仕組み

このプロセスは、主に2つのコンポーネントで構成されています:

  1. Conversion Server: virt-v2vがインストールされた強力なLinuxマシン。データを受け取り、ファイルシステムの「手術」を行う場所です。
  2. Source Machine (Client): 移行対象の物理サーバー。virt-p2vのLive環境を含むUSBからこのマシンを起動します。

データは物理マシンからConversion ServerへSSH経由で転送されます。そこで、virt-v2vが必要なドライバをinitrd/initramfsに注入し、OSが仮想環境で起動できるようにします。

導入前の準備

1. Conversion Serverの設定

ソースマシンの容量より約20%多い空きディスク容量を持つUbuntuまたはDebianマシンを使用します。必要なパッケージをインストールします:

sudo apt update
sudo apt install virt-v2v libguestfs-tools -y

データ転送が中断されないよう、このサーバーにroot権限またはパスワードなしのsudo権限を持つユーザーでSSH接続できることを確認してください。

2. virt-p2v起動ディスクの作成

Red Hatのリポジトリまたはコミュニティからvirt-p2vのISOファイルをダウンロードします。好みに合わせてビルドしたい場合は、virt-p2v-make-diskツールを使用します。その後、Rufusを使用して起動可能なUSBを作成し、物理サーバーに差し込みます。

詳細な実行手順

ステップ1:物理マシンをvirt-p2v環境で起動する

USBからマシンを起動します。virt-p2vのインターフェースは非常にシンプルです。ネットワーク接続を安定させるため、DHCPではなく固定IPを設定することをお勧めします。

ステップ2:Conversion Serverへの接続

インターフェースに以下の情報を入力します:

  • Hostname: Conversion ServerのIPアドレス。
  • User/Password: SSHログイン情報。

Test Connectionをクリックします。成功のメッセージが表示されれば、準備は半分完了です。

ステップ3:ターゲット仮想マシンの構成

次に、作成する仮想マシンのパラメータを選択します:

  • Target Properties: VM名を設定し、CPUコア数とRAM容量を選択します。
  • Disks: 変換するディスクを選択します(通常は/dev/sda)。
  • Output format: KVMのスナップショット機能を利用するために、常にqcow2を選択することを推奨します。

ステップ4:変換の開始

Start Conversionをクリックします。変換速度はLANの帯域幅に依存します。1Gbpsの環境では、通常60〜80MB/s程度の速度が出ます。100GBのディスクであれば、約25〜30分で完了します。

Conversion Server側で以下のコマンドを実行することで、詳細な進捗を確認できます:

tail -f /var/log/virt-v2v.log

実際のトラブルシューティングの経験

作業を通じて得られた重要な注意点をいくつか紹介します:

1. VirtIOドライバの不足

CentOS 5のような非常に古いLinuxバージョンの場合、virt-v2vが適切なカーネルを見つけられないことがあります。P2Vを開始する前に、ソースマシンのカーネルを最新バージョンにアップデートしておいてください。

2. SSHの設定

接続に失敗する場合は、/etc/ssh/sshd_configを確認してください。一時的にPermitRootLogin yesを有効にする必要がある場合があります。セキュリティのため、作業終了後は必ず設定を元に戻してください。

3. UEFIベースのマシン

物理マシンがUEFIを使用している場合、KVMでVMを作成する際にファームウェアとしてOVMFを選択する必要があります。デフォルトのBIOSのままにすると、仮想マシンは「No bootable device」エラーで起動しません。

移行後のチェック

完了すると、.qcow2ファイルとXMLファイルが生成されます。以下のvirshコマンドを使用して、KVMにインポートできます:

virsh define /path/to/vm.xml
virsh start my_new_vm

注意:ネットワークインターフェース名が変更される可能性があります(例:eth0からenp0s3へ)。/etc/netplan//etc/network/interfacesを確認し、IP設定を正しく修正してください。

まとめ

virt-p2vを使用することは、古い物理サーバーをKVM仮想環境へ「転生」させる最もプロフェッショナルな方法です。インターフェースは少し古風ですが、その信頼性は通常の生コピー手法を遥かに凌駕します。サーバー室の整理を計画しているなら、ぜひこのツールセットを試してみてください。スムーズなシステム移行ができることを願っています!

Share: