古い物理サーバー移行という難題
半年前、私は国内企業のシステムアップグレードプロジェクトを引き受けました。彼らの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つのコンポーネントで構成されています:
- Conversion Server:
virt-v2vがインストールされた強力なLinuxマシン。データを受け取り、ファイルシステムの「手術」を行う場所です。 - 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仮想環境へ「転生」させる最もプロフェッショナルな方法です。インターフェースは少し古風ですが、その信頼性は通常の生コピー手法を遥かに凌駕します。サーバー室の整理を計画しているなら、ぜひこのツールセットを試してみてください。スムーズなシステム移行ができることを願っています!

