背景:VMwareからの「脱出」ラッシュ
BroadcomによるVMware買収とライセンスポリシーの変更により、かつてない規模のインフラ移行の波が起きています。多くの企業がライセンス費用の高騰に直面しており、中には2〜3倍に跳ね上がったケースもあります。これにより、多くのインフラエンジニア(Sysadmin)がKVMやProxmoxといったオープンソースソリューションへの移行を模索しています。
私は現在、12台のVMとコンテナを搭載したProxmoxホームラボを運用しています。ここは本番環境にデプロイする前のあらゆるテストを行う「遊び場」です. 個人のVirtualBoxからKVMサーバーへ仮想マシンを移動してデバッグすることは日常茶飯事です。しかし、本当の障壁はRAMやCPUの構成にあるわけではありません。
問題の核心は、仮想ディスク形式(Disk Format)の不一致にあります。VMwareは.vmdk、VirtualBoxは.vdi、そしてKVM/Proxmoxは.qcow2を好みます。ディスクをそのまま別のプラットフォームに持ち込むと、Linuxではカーネルパニック(Kernel Panic)、Windowsではブルースクリーン(BSOD)が発生してしまいます。
「武器」の準備:qemu-imgのインストール
ディスク形式をスムーズに扱うには、qemu-imgが必要です。これはQEMUツールセットに含まれる非常に強力で多機能な「スイスアーミーナイフ」のようなツールです。現在主流のほとんどの仮想マシン形式間で相互変換が可能です。
UbuntuやDebianでは、以下のコマンドで素早くインストールできます:
sudo apt update && sudo apt install qemu-utils -y
Windowsの場合は、WSL2を使用するか、ビルド済みのバイナリをダウンロードできます。ここで非常に重要な注意点があります。作業を始める前に、必ず仮想マシンを**シャットダウン(Shutdown)**してください。スリープ(Suspend)状態やスナップショットが残っている状態で変換を行ってはいけません。これは、データの破損(corruption)を防ぐためです。
実際の変換プロセス
移行作業は通常、3つのステップに集約されます:形式の変換 -> 新規VMの作成 -> ドライバーの設定。以下に最も一般的なシナリオを紹介します。
1. VMware (.vmdk) から KVM/Proxmox (.qcow2) へ
.qcow2形式は、圧縮や柔軟なスナップショットをサポートしているため、非常に人気があります。変換には以下のコマンドを使用します:
# 容量を節約するためにファイルを変換および圧縮する
qemu-img convert -f vmdk -O qcow2 source-vmware.vmdk target-kvm.qcow2 -c
実践的なヒント: Windows仮想マシンの場合、変換前にVMware Toolsをアンインストールしてください。KVMに移行した後、ハードディスクドライバーをインストールするためにvirtio-win ISOファイルをマウントする必要があります。この手順を怠ると、Windowsは新しいコントローラーを認識できず、起動に失敗します。
2. VirtualBox (.vdi) から KVM へ
多くの開発者は、まずVirtualBoxでローカル環境を構築し、それをサーバーにデプロイします. 手順は同様です:
qemu-img convert -f vdi -O qcow2 source-vbox.vdi target-kvm.qcow2
3. KVM から VMware への逆変換
サーバーから個人のVMware Workstationを実行しているマシンに仮想マシンを持ち帰る必要がある場合は、vmdkに逆変換します:
qemu-img convert -f qcow2 -O vmdk target-kvm.qcow2 source-vmware.vmdk
移行後に陥りやすい罠
ディスクファイルの変換は、まだ道のりの半分に過ぎません。正常に起動させるために、すぐに確認すべき3つのポイントがあります。
ブートモード:BIOS vs UEFI
これは「No bootable device found(起動可能なデバイスが見つかりません)」というエラーを引き起こす典型的な原因です。元のマシンがUEFIで動作していたのに、新しいVMでBIOS(Legacy)を選択すると、システムは起動しません。新規VMのハードウェア設定で、元のマシンと一致するようにブート規格を調整してください。
ネットワークカードの競合
新しい環境に移行すると、MACアドレスが変更されます。Linuxでは、インターフェース名がeth0からens33などに変更されることがあります。接続が切れないよう、ネットワーク設定ファイルを再確認する必要があります:
# 新しいインターフェース名を確認する
ip a
# Netplanを更新する (Ubuntuの場合)
sudo nano /etc/netplan/00-installer-config.yaml
Guest Agentのインストール
ハイパーバイザーがVMをより適切に管理できるように、Guest Agentのインストールを忘れないでください。これにより、安全なシャットダウンや管理ダッシュボードでの正確なIP表示が可能になります。
- KVM/Proxmox:
qemu-guest-agentをインストール。 - VMware:
open-vm-toolsをインストール。
私の経験上、qcow2に変換する際は常に-cフラグを使用することをお勧めします。40GBのファイルが15GBまで削減されることもあり、サーバーのストレージ容量を大幅に節約できます。qemu-imgとVirtIOドライバーをマスターすれば、特定の仮想化ベンダーに「ロックイン」される心配はもうありません。

