Skip to content

v2v: VMware-to-Cockpit (VM Migration Tools)

v2v は、virt-v2v を利用して VMware vCenter/ESXi の仮想マシンを、ローカルホストシステム(Vapor プラットフォームの仮想化環境)上の永続的な Libvirt 仮想マシンへ直接移行するためのユーティリティツールです。

このツールは、必要なすべての移行パッケージ(virt-v2vlibguestfsqemu-utils、および互換性のあるカーネルイメージを含む)を、自己完結型の Docker コンテナ内に自動でインストールします。

VM の移行は Vapor を通じて実行されます。移行が正常に完了すると、VM は Cockpit に表示され、Cockpit から管理できるようになります。

Pre-flight Requirements

移行を実行するには、Docker をインストールする必要があります。

移行を正常に実行するためには、ホストシステムおよび Docker コンテナに以下の要件が必要です。

  1. Privileged Mode: ホストの仮想化機能、/dev/kvm ハードウェアアクセラレーション、およびシステムソケットへアクセスするために必要です。
  2. Libvirt Socket Access: /var/run/libvirt をコンテナ内にマウントします。
  3. Storage Pool Access: ストレージプールのディレクトリ(例: /var/lib/libvirt/images または /home/awanio/data/virtualcompute)をマウントします。
  4. KVM Device Mount: guestfs アプライアンスの高速仮想化のために /dev/kvm へアクセスします。

Running Migration via Vapor terminal

以下の手順 1 と 2 は、Docker コンテナをインストールする際に一度だけ実行します。Docker コンテナがすでに存在する場合は、手順 3 のみ実行してください。

1. Download Image

イメージをダウンロードします。

bash
docker run --rm r.awan.app/library/tools/v2v:v1.0.4 bootstrap > v2v-install.sh

2. Install/run the image as a container:

bash
sudo sh v2v-install.sh

3. Migrate VM

A. Execute via Vapor terminal

移行ツールは Interactively(推奨)または CLI Arguments を使用して実行できます。

Interactively

このモードでは、接続設定および移行先の設定を対話形式で入力し、入力内容を動的に検証するとともに、保存済みの接続情報を一覧表示します。

bash
sudo docker exec -it v2v migrate-v2v -i

Walkthrough:

  1. Credentials Selection: 保存済みの認証情報がある場合は接続を選択するか、新しい認証情報を入力します。
  2. Connection Type: vpx(vCenter/vSphere)または ssh(ESXi へ直接接続)を選択します。
  3. VMware Details: Host/IP、Username、Password、および接続タイプに応じた設定を入力します。
    • vpx の場合: Datacenter パス(例: /Datacenter/Cluster/Host)および SSL 証明書の検証をスキップするかどうかを指定します。
    • ssh の場合: ESXi 上の対象ゲスト .vmx ファイルのパスを指定します。
  4. Credentials Storage: 認証情報を credentials.json に保存するか選択します(0600 権限で保存されます)。
  5. Source VM: 移行元 VM の名前を入力します。
  6. Target Config: Vapor 上の移行先 VM 名、ターゲット Storage Pool、およびネットワークインターフェース設定(Network または Bridge のマッピング)を指定します。
  7. Execution: virt-v2v による変換処理の進行状況がリアルタイムでコンソールに表示されます。
Standard CLI Mode

コマンドライン引数を指定して、非対話形式でツールを実行することもできます。

bash
# 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 default

CLI 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 になったら、以下を実行します。

  1. コンテナのアクションメニューをクリックし、Terminal を選択します。

  2. コンテナのターミナルが開き、移行コマンドを示すバナーが表示されます。

    bash
    migrate-v2v -i
  3. ターミナル内で migrate-v2v -i を実行して対話型ウィザードを開始するか、必要な CLI 引数を指定して直接実行します。