v2v: VMware-to-Cockpit (VM Migration Tools)
v2v は、virt-v2v を利用して VMware vCenter/ESXi の仮想マシンを、ローカルホストシステム(Vapor プラットフォームの仮想化環境)上の永続的な Libvirt 仮想マシンへ直接移行するためのユーティリティツールです。
このツールは、必要なすべての移行パッケージ(virt-v2v、libguestfs、qemu-utils、および互換性のあるカーネルイメージを含む)を、自己完結型の Docker コンテナ内に自動でインストールします。
VM の移行は Vapor を通じて実行されます。移行が正常に完了すると、VM は Cockpit に表示され、Cockpit から管理できるようになります。
Pre-flight Requirements
移行を実行するには、Docker をインストールする必要があります。
移行を正常に実行するためには、ホストシステムおよび Docker コンテナに以下の要件が必要です。
- Privileged Mode: ホストの仮想化機能、
/dev/kvmハードウェアアクセラレーション、およびシステムソケットへアクセスするために必要です。 - Libvirt Socket Access:
/var/run/libvirtをコンテナ内にマウントします。 - Storage Pool Access: ストレージプールのディレクトリ(例:
/var/lib/libvirt/imagesまたは/home/awanio/data/virtualcompute)をマウントします。 - KVM Device Mount:
guestfsアプライアンスの高速仮想化のために/dev/kvmへアクセスします。
Running Migration via Vapor terminal
以下の手順 1 と 2 は、Docker コンテナをインストールする際に一度だけ実行します。Docker コンテナがすでに存在する場合は、手順 3 のみ実行してください。
1. Download Image
イメージをダウンロードします。
docker run --rm r.awan.app/library/tools/v2v:v1.0.4 bootstrap > v2v-install.sh2. Install/run the image as a container:
sudo sh v2v-install.sh3. Migrate VM
A. Execute via Vapor terminal
移行ツールは Interactively(推奨)または CLI Arguments を使用して実行できます。
Interactively
このモードでは、接続設定および移行先の設定を対話形式で入力し、入力内容を動的に検証するとともに、保存済みの接続情報を一覧表示します。
sudo docker exec -it v2v migrate-v2v -iWalkthrough:
- Credentials Selection: 保存済みの認証情報がある場合は接続を選択するか、新しい認証情報を入力します。
- Connection Type:
vpx(vCenter/vSphere)またはssh(ESXi へ直接接続)を選択します。 - VMware Details: Host/IP、Username、Password、および接続タイプに応じた設定を入力します。
vpxの場合: Datacenter パス(例:/Datacenter/Cluster/Host)および SSL 証明書の検証をスキップするかどうかを指定します。sshの場合: ESXi 上の対象ゲスト.vmxファイルのパスを指定します。
- Credentials Storage: 認証情報を
credentials.jsonに保存するか選択します(0600権限で保存されます)。 - Source VM: 移行元 VM の名前を入力します。
- Target Config: Vapor 上の移行先 VM 名、ターゲット Storage Pool、およびネットワークインターフェース設定(Network または Bridge のマッピング)を指定します。
- Execution:
virt-v2vによる変換処理の進行状況がリアルタイムでコンソールに表示されます。
Standard CLI Mode
コマンドライン引数を指定して、非対話形式でツールを実行することもできます。
# vCenter Example:
sudo docker exec -it v2v migrate-v2v \
--type vpx \
--host vcenter.example.com \
--username administrator@vsphere.local \
--datacenter-path /Datacenter/Cluster/Host \
--source-vm my-vcenter-vm \
--target-name my-vapor-vm \
--storage-pool virtualcompute \
--network-name default
# Direct ESXi/VMX Example:
sudo docker exec -it v2v migrate-v2v \
--type ssh \
--host esxi.example.com \
--username root \
--vmx-path /vmfs/volumes/datastore1/my-vm/my-vm.vmx \
--source-vm my-vm \
--target-name my-vapor-vm \
--storage-pool defaultCLI Options:
--interactive,-i: 対話モードを開始します。--type: 接続タイプ(vpxまたはssh)。--host: VMware ホストまたは IP アドレス。--username: VMware 接続ユーザー名。--password: VMware のパスワード(省略した場合は安全な入力プロンプトが表示されます)。--datacenter-path: vCenter の Datacenter パス。--vmx-path: ESXi 上の対象ゲスト.vmxファイルのパス。--source-vm: 移行元 VM 名。--target-name: Vapor 上で作成される移行先 VM 名。--storage-pool: 移行先 Storage Pool(デフォルト:default)。--network-type: 移行先ネットワークモード(networkまたはbridge、デフォルト:network)。--network-name: 移行先 Network/Bridge 名(デフォルト:default)。
B. Execute Migration from container terminal
コンテナのステータスが running になったら、以下を実行します。
コンテナのアクションメニューをクリックし、Terminal を選択します。
コンテナのターミナルが開き、移行コマンドを示すバナーが表示されます。
bashmigrate-v2v -iターミナル内で
migrate-v2v -iを実行して対話型ウィザードを開始するか、必要な CLI 引数を指定して直接実行します。