Condensa ユーザーガイド

はじめに

Condensa は、さまざまなプラットフォーム(VMware、Nutanix、Sangfor、Windows Server など)から Awanio クラウドプラットフォームへ仮想マシン(VM)を移行するための強力な VM 移行ツールです。

ホットマイグレーション(稼働中 VM の移行。VMware のみ)、コールドマイグレーション、および OVA / VHD / VHDX 形式を用いたファイルベース移行など、複数の移行方式をサポートします。

主な機能

  • ホットマイグレーション: 稼働中の VM を最小限のダウンタイムで移行(VMware のみ)
  • マルチプロバイダ対応: VMware vSphere、OVA ファイル、VHD/VHDX ファイル
  • Changed Block Tracking (CBT): VMware 向けの効率的な差分(増分)転送
  • Web ベース UI: 移行を管理しやすいユーザーフレンドリーな画面
  • リアルタイム進捗トラッキング: 移行状態と進捗を監視

インストール

前提条件

Condensa をインストールする前に、次を用意してください。

  1. Awanio Dashboard

    • Dashboard の利用権限を持つユーザーが必要です。
  2. Helm(v3.0 以上)

    # Install Helm if not already installed
    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  3. Awanio Dashboard 上で構成済みの Storage Pool

  4. Awanio API アクセス

    • API エンドポイント URL(例: https://192.168.1.2/v2
    • 認証に使用できる有効な認証情報

Helm でインストール

  1. Condensa Helm リポジトリを追加:

    helm repo add condensa https://storage.awan.io/assets/charts
    helm repo update
  2. values ファイルを作成condensa-values.yaml):

    # REQUIRED: Public URL for Condensa (must be accessible by CDI for data imports)
    publicUrl: "http://condensa.example.com:8080"
    
    # REQUIRED: Awanio API configuration
    awanio:
      apiEndpoint: "https://192.168.1.2/v2"
      username: "your-username"
      password: "your-password"
    
    # Image configuration
    image:
      repository: registry.awan.io/images/condensa
      tag: latest
      pullPolicy: IfNotPresent
    
    # Service configuration
    service:
      type: LoadBalancer  # or NodePort, ClusterIP
      port: 8080
    
    # Storage configuration
    persistence:
      enabled: true
      storageClass: "standard"  # Your storage class
      size: 100Gi  # Storage for uploaded OVA/VHD files
    
    # Resource limits
    resources:
      requests:
        memory: "512Mi"
        cpu: "500m"
      limits:
        memory: "2Gi"
        cpu: "2000m"
    
    # Upload directory configuration
    uploadDir: "/data/uploads"
    
    # Namespace for VM migrations
    migrationNamespace: "vm-migrations"
  3. Condensa をインストール:

    # Create namespace
    kubectl create namespace condensa
    
    # Install with custom values
    helm install condensa condensa/condensa \
      --namespace condensa \
      --values condensa-values.yaml
  4. インストール確認:

    # Check pod status
    kubectl get pods -n condensa
    
    # Check service
    kubectl get svc -n condensa
    
    # Get the external IP/URL
    kubectl get svc condensa -n condensa -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
  5. Web UI にアクセス:

    ブラウザで Condensa の URL を開きます。

    http://<external-ip>:8080

構成オプション

パラメータ説明デフォルト必須
publicUrlCDI からアクセス可能な Public URL-Yes
awanio.apiEndpointAwanio API エンドポイント-Yes
awanio.usernameAwanio ユーザー名-Yes
awanio.passwordAwanio パスワード-Yes
persistence.enabled永続ストレージを有効化trueNo
persistence.sizeアップロード用ストレージ容量100GiNo
service.typeService 種別LoadBalancerNo
uploadDirファイルアップロード用ディレクトリ/data/uploadsNo

移行元 VM の準備

移行を成功させるためには、移行元 VM を適切に準備することが重要です。要件はプロバイダ種別によって異なります。

VMware VM

VMware vSphere 環境、とくに ホットマイグレーション(稼働中 VM の移行)では次の準備が必要です。

前提条件

  • VMware vSphere 6.0 以上
  • VM ハードウェアバージョン 8 以上
  • vCenter への管理者アクセス
  • Thumbprint(リモート VMware サーバーの SSL(SHA1)フィンガープリント)。リモート接続時に必要です。

次のコマンドは、SERVER-NAME という VMware サーバーの thumbprint を出力します。

openssl s_client -connect SERVER-NAME:443 </dev/null |
   openssl x509 -in /dev/stdin -fingerprint -sha1 -noout

Changed Block Tracking(CBT)を有効化

重要: CBT は、移行用スナップショットを作成する に有効化する必要があります。

  1. vSphere Client で vCenter に接続

  2. (稼働中の場合)VM を停止:

    VM を右クリック → Power → Shut Down Guest OS
  3. CBT を有効化:

    • VM を右クリック → Edit Settings

    • “VM Options” タブ

    • “Advanced” を展開

    • “Edit Configuration” をクリック

    • 次のパラメータを追加:

      ctkEnabled = true
    • OK をクリックして保存

  4. VM を起動:

    VM を右クリック → Power → Power On
  5. スナップショットを作成(CBT 有効化後に必須):

    VM を右クリック → Snapshots → Take Snapshot
    Name: "Pre-Migration Snapshot"
    Description: "Snapshot for Condensa migration with CBT enabled"

    ⚠️ クリティカル: スナップショットは CBT を有効化した に作成する必要があります。CBT 有効化前に作成されたスナップショットは移行失敗の原因になります。

  6. CBT が有効であることを確認:

    • VM の .vmdk ファイルを確認
    • 各ディスクに対して -ctk.vmdk ファイルが存在するはずです

VMware のベストプラクティス

  • VM Tools をインストールし、最新に保つ
  • 移行前に不要なスナップショットを整理
  • Condensa と vCenter のネットワーク疎通を確認
  • 大容量 VM はメンテナンスウィンドウでの移行を検討

Nutanix VM(OVA エクスポート)

Nutanix AHV から VM を移行する場合:

  1. Nutanix Prism にアクセス:

    https://<nutanix-cluster-ip>:9440
  2. VM の準備:

    • VM を正常にシャットダウン
    • 不要なスナップショットを削除
    • VM 仕様(CPU、メモリ、ディスク)を記録
  3. OVA としてエクスポート:

    a. Nutanix Move を使用(推奨):

    • Windows/Linux マシンに Nutanix Move をインストール
    • 移行元を Nutanix AHV に設定
    • エクスポート対象 VM を選択
    • “Export to OVA” を選択
    • ローカルディレクトリに保存

    b. acli(Nutanix CLI)を使用:

    # SSH to Nutanix CVM
    ssh nutanix@<cvm-ip>
    
    # List VMs
    acli vm.list
    
    # Export VM
    acli vm.export <vm-name> format=ova path=/tmp/<vm-name>.ova
    
    # Download the OVA file
    scp nutanix@<cvm-ip>:/tmp/<vm-name>.ova .
  4. OVA ファイルを確認:

    # Check OVA contents
    tar -tvf <vm-name>.ova
    
    # Should contain:
    # - .ovf file (VM descriptor)
    # - .vmdk file(s) (Virtual disks)
    # - .mf file (Manifest)

Sangfor VM(OVA エクスポート)

Sangfor HCI から VM を移行する場合:

  1. Sangfor HCI コンソールにアクセス:

    https://<sangfor-hci-ip>
  2. VM の準備:

    • Sangfor コンソールから VM を停止
    • スナップショットがあれば削除
    • VM 構成を記録
  3. エクスポート手順:

    a. Virtual Machines セクションへ移動

    b. 対象 VM を選択

    c. More ActionsExport をクリック

    d. エクスポート形式を選択:

    • “OVA” を選択
    • すべてのディスクを含める
    • VM 構成を含める

    e. エクスポートを開始:

    Export Location: Local Computer or Network Share
    Format: OVA 1.0
    Compression: None (for better compatibility)

    f. エクスポートされた OVA ファイルをダウンロード

  4. エクスポート後の確認:

    # Verify OVA integrity
    sha256sum <vm-name>.ova
    
    # Extract and check OVF descriptor
    tar -xf <vm-name>.ova *.ovf
    cat *.ovf  # Review VM specifications

Windows Server VM(VHD/VHDX エクスポート)

Windows Server 上の Hyper-V から VM を移行する場合:

Windows Server 2012/2016/2019/2022 の場合

  1. Hyper-V Manager を開く:

    # Run as Administrator
    virtmgmt.msc
  2. VM の準備:

    # Stop the VM
    Stop-VM -Name "VMName"
    
    # Remove checkpoints (snapshots)
    Get-VMSnapshot -VMName "VMName" | Remove-VMSnapshot
  3. VM をエクスポート:

    方法 1: Hyper-V Manager GUI を使用

    • VM を右クリック → Export
    • エクスポート先を選択
    • 完了まで待機

    方法 2: PowerShell を使用

    # Export entire VM
    Export-VM -Name "VMName" -Path "C:\VMExports"
    
    # Or export just the VHD/VHDX
    $vm = Get-VM -Name "VMName"
    $vhd = Get-VMHardDiskDrive -VM $vm
    Copy-Item $vhd.Path -Destination "C:\VMExports\VMName.vhdx"
  4. 必要に応じて VHDX を VHD に変換(互換性のため):

    Convert-VHD -Path "C:\VMExports\VMName.vhdx" `
                -DestinationPath "C:\VMExports\VMName.vhd" `
                -VHDType Dynamic
  5. メタデータファイルを準備vm-info.json を作成):

    {
      "name": "VMName",
      "os_family": "windows",
      "os_version": "Windows Server 2019",
      "cpu": 4,
      "memory_mb": 8192,
      "disk_size_gb": 100,
      "architecture": "x86_64"
    }

Azure Stack HCI の場合

# Connect to cluster
Enter-PSSession -ComputerName <cluster-node>

# Export VM
Export-VM -Name "VMName" -Path "\\share\exports"

# Or use Windows Admin Center for GUI export

プロバイダの設定

プロバイダ(Providers)は移行元プラットフォームを表します。プロバイダ種別ごとに必要な設定が異なります。

VMware Provider

  1. Condensa Web UI にログイン

  2. Providers に移動:

    • メインメニューで “Providers” をクリック
    • “Add Provider” ボタンをクリック
  3. VMware Provider を設定:

    Provider Type: VMware vSphere
    Name: vcenter-prod
    Description: Production vCenter Server
    
    Connection Details:
    - vCenter URL: https://vcenter.example.com
    - Username: administrator@vsphere.local
    - Password: ********
    - Allow Insecure: No (uncheck for production)
    
    Advanced Settings:
    - Port: 443
    - Datacenter: Datacenter-01 (optional, for filtering)
    - Concurrent Transfers: 4
  4. 接続テスト:

    • “Test Connection” をクリック
    • 接続成功を確認
    • 検出されたリソースを確認
  5. プロバイダを保存:

    • “Save” をクリック
    • プロバイダが “Connected” 状態になることを確認

OVA Provider

OVA provider は OVA ファイルを用いたファイルベース移行を扱います。

  1. ProvidersAdd Provider に移動

  2. OVA Provider を設定:

    Provider Type: OVA
    Name: ova-imports
    Description: OVA File Imports
    
    Settings:
    - Upload Directory: /data/uploads/ova
    - Max File Size: 500GB
    - Supported Formats: .ova, .ovf
  3. OVA ファイルをアップロード:

    Option 1: Web UI からアップロード

    • “Upload OVA” ボタンをクリック

    • ローカルから OVA ファイルを選択

    • VM メタデータを追加:

      VM Name: imported-vm-01
      OS Type: Ubuntu Linux 20.04
      CPUs: 4
      Memory: 8192 MB
    • “Upload” をクリック

    Option 2: CLI アップロード(大容量ファイル向け)

    # Copy to Condensa pod
    kubectl cp large-vm.ova condensa/condensa-pod:/data/uploads/ova/
    
    # Or use curl
    curl -X POST http://condensa.example.com:8080/api/v1/ova/upload \
         -H "Authorization: Bearer <token>" \
         -F "file=@large-vm.ova" \
         -F "metadata=@vm-info.json"
  4. アップロード確認:

    • “OVA Uploads” セクションを確認
    • ファイル整合性を確認
    • 展開された VM 仕様を確認

VHD/VHDX Provider

VHD provider は Hyper-V のエクスポートからの移行を扱います。

  1. ProvidersAdd Provider に移動

  2. VHD Provider を設定:

    Provider Type: VHD
    Name: hyperv-imports
    Description: Hyper-V VHD Imports
    
    Settings:
    - Upload Directory: /data/uploads/vhd
    - Supported Formats: .vhd, .vhdx, .avhdx
    - Auto-convert VHDX: Yes
  3. VHD ファイルをアップロード:

    Step 1: VHD/VHDX をアップロード

    # Web UI for small files (<10GB)
    Navigate to "VHD Uploads" "Upload VHD"
    
    # For large files, use resumable upload
    curl -X POST http://condensa.example.com:8080/api/v1/vhd/uploads \
         -H "Content-Type: application/json" \
         -d '{
           "filename": "windows-server.vhdx",
           "vm_name": "WinServer2019",
           "os_family": "windows",
           "os_version": "Windows Server 2019",
           "num_cpu": 4,
           "memory_mb": 16384,
           "disk_size_gb": 200,
           "architecture": "x86_64"
         }'

    Step 2: 大容量ファイルは TUS プロトコルでアップロード

    # Install tus client
    npm install -g tus-js-client
    
    # Upload using resumable protocol
    tus-upload windows-server.vhdx \
      --endpoint http://condensa.example.com:8080/api/v1/tus \
      --metadata filename=d2luZG93cy1zZXJ2ZXIudmhkeA==,vm_id=<vm-uuid>
  4. VHD アップロード確認:

    • 処理ステータスを確認
    • ディスク形式の互換性を確認
    • VM 仕様を確認

移行の作成と実行

プロバイダ設定と移行元 VM の準備ができたら、移行を作成して実行できます。

移行を作成

  1. MigrationsCreate Migration に移動

  2. 基本設定:

    Migration Name: prod-to-awanio-batch1
    Description: Production VMs migration batch 1
    
    Source Provider: vcenter-prod (or ova-imports, hyperv-imports)
    Target Namespace: vm-migrations
    Organization: My Organization
  3. VM を選択:

    VMware Provider の場合:

    • 利用可能な VM を参照
    • フィルタを使用:
      • Datacenter
      • Folder
      • Power State
      • OS Type
    • 移行対象 VM を選択
    • VM 詳細(CPU、メモリ、ディスク)を確認

    OVA Provider の場合:

    • アップロード済み OVA ファイルから選択
    • “Ready” 状態を確認
    • 展開された仕様を確認

    VHD Provider の場合:

    • アップロード済み VHD ファイルから選択
    • “Processed” 状態を確認
    • OS 互換性を確認
  4. 移行設定:

    Migration Type:
    - Hot Migration (VMware only, VM stays running)
    - Cold Migration (VM powered off first)
    
    Network Mapping:
    - Source Network: VM Network → Target Network: default
    - Source Network: Management → Target Network: mgmt-net
    
    Storage Settings:
    - Storage Class: fast-ssd
    - Volume Mode: Filesystem
    - Access Mode: ReadWriteOnce
    
    Advanced Options:
    - Preserve MAC Addresses: Yes
    - Start VM after Migration: No
    - Delete Source after Success: No
  5. 確認して作成:

    • 移行サマリを確認
    • リソース要件を確認
    • “Create Migration” をクリック

移行を開始

  1. 移行詳細を表示:

    Migrations → Select Migration → View Details
  2. 事前チェック(Pre-flight):

    • 移行元への接続性を確認
    • ターゲット namespace が存在することを確認
    • ストレージの空き/利用可否を検証
    • ネットワークマッピングを確認
  3. 移行を開始:

    Option 1: Web UI

    • “Start Migration” ボタンをクリック
    • ダイアログで操作を確認

    Option 2: CLI

    curl -X POST http://condensa.example.com:8080/api/v1/migrations/<id>/start \
         -H "Authorization: Bearer <token>"
  4. 移行フェーズ:

    Phase 1: Preparation

    • ターゲット namespace を作成
    • DataVolumes をセットアップ
    • 転送ジョブを初期化

    Phase 2: Data Transfer

    • VMware: CBT を利用した VDDK 転送
    • OVA/VHD: CDI による HTTP インポート
    • 進捗はリアルタイム表示

    Phase 3: Conversion

    • ディスクを QCOW2 に変換
    • OS 最適化を適用
    • ドライバを構成

    Phase 4: VM Creation

    • VirtualMachine CR を作成
    • ネットワークを構成
    • リソース制限を適用

    Phase 5: Verification

    • VM 作成を確認
    • ディスクアタッチ状況を確認
    • 構成を検証

進捗の監視

  1. リアルタイム進捗:

    • 全体進捗(%)を確認
    • VM ごとの状態を監視
    • データ転送レートを確認
    • ログをリアルタイム表示
  2. 進捗インジケータ例:

    Overall Progress: 45%
    
    VMs Status:
    - vm-web-01: ✓ Completed (100%)
    - vm-app-01: ⟳ Transferring (67%)
    - vm-db-01: ⏸ Queued
  3. ログ確認:

    # View migration logs
    kubectl logs -n condensa condensa-pod -f
    
    # View specific VM transfer
    kubectl get datavolume -n vm-migrations vm-web-01-disk-0 -o yaml
  4. 通知:

    • 完了時のメール通知
    • Webhook 通知
    • Slack 連携(設定されている場合)

トラブルシューティング

よくある問題と対処

VMware 移行が失敗する

問題: “CBT not enabled” エラー

対処:
1. 移行元 VM で CBT を有効化
2. CBT 有効化後に新しいスナップショットを作成
3. 移行を再実行

問題: “Cannot connect to vCenter”

対処:
1. ネットワーク疎通を確認
2. ファイアウォールルールを確認(port 443)
3. 認証情報を確認
4. 自己署名証明書の場合は "Allow Insecure" を試す

問題: “Snapshot not found”

対処:
1. 移行元 VM にスナップショットを作成
2. スナップショットの統合(consolidate)を待つ
3. プロバイダ接続をリフレッシュ

OVA アップロードの問題

問題: “Invalid OVF descriptor”

対処:
1. OVA ファイル整合性を確認:
   tar -tvf vm.ova
2. OVF を展開して検証:
   tar -xf vm.ova *.ovf
   xmllint --noout *.ovf
3. 破損している場合は移行元から再エクスポート

問題: “Unsupported disk format”

対処:
1. ディスクをサポート形式へ変換:
   qemu-img convert -f vmdk -O qcow2 disk.vmdk disk.qcow2
2. 変換したディスクで OVA を再パッケージ

VHD アップロードの問題

問題: “VHD file corrupted”

対処:
1. ファイルチェックサムを検証
2. Hyper-V から再エクスポート
3. VHDX を VHD に変換してみる:
   Convert-VHD -Path source.vhdx -DestinationPath dest.vhd

問題: “Metadata missing”

対処:
1. 必須フィールドを含む vm-info.json を作成
2. VHD と一緒にメタデータをアップロード
3. または、アップロード後に API で更新

DataVolume が進まない

問題: DataVolume が “Pending” 状態

# Check DataVolume status
kubectl describe datavolume -n vm-migrations <dv-name>

# Common solutions:
1. Check PVC bound status
2. Verify storage class exists
3. Check available storage capacity
4. Review CDI pod logs:
   kubectl logs -n cdi deployment/cdi-deployment

移行パフォーマンスの問題

転送レートが遅い

対処:
1. 並列転送を有効化(VMware)
2. CDI のリソース上限を引き上げ
3. 高速なストレージクラスを使用
4. ネットワーク帯域を確認
5. オフピーク時間帯に実行

デバッグコマンド

# Check Condensa logs
kubectl logs -n condensa deployment/condensa -f

# Check migration status
curl http://condensa.example.com:8080/api/v1/migrations/<id>/status

# Check DataVolume progress
kubectl get datavolume -n vm-migrations -w

# Check CDI importer pods
kubectl get pods -n vm-migrations | grep importer

# View importer logs
kubectl logs -n vm-migrations <importer-pod-name>

# Check events
kubectl get events -n vm-migrations --sort-by='.lastTimestamp'

ベストプラクティス

移行前(Pre-Migration)

  1. キャパシティ計画:

    • ターゲットクラスターに十分なストレージがあることを確認
    • 変換中は最大 2 倍のディスク容量が必要になる可能性を考慮
    • 必要なネットワーク帯域を見積もり
  2. VM 準備:

    • VM ツール/ドライバを更新
    • 不要ファイルを整理
    • スナップショットを統合
    • VM 依存関係を記録
  3. テスト:

    • 重要度の低い VM から試す
    • エンドツーエンドで移行プロセスを検証
    • リカバリ手順を文書化

移行中(During Migration)

  1. バッチ処理:

    • VM を論理的なグループで移行
    • 重要度の低いワークロードから開始
    • リソース使用率を監視
  2. ネットワーク考慮:

    • 可能であれば専用の移行ネットワークを使用
    • 適切な帯域制限を設定
    • ネットワークメンテナンスウィンドウを考慮
  3. 監視:

    • 転送レートを監視
    • 移行元の負荷を監視
    • ターゲットクラスターのリソースを監視

移行後(Post-Migration)

  1. 検証:

    • VM の機能を確認
    • アプリケーション接続性をテスト
    • パフォーマンス指標を検証
  2. クリーンアップ:

    • 成功した移行の DataVolumes を削除
    • 移行元スナップショットを整理
    • 移行ログを保管
  3. ドキュメント:

    • 移行中の問題を記録
    • Runbook を更新
    • パフォーマンス指標を記録

セキュリティ考慮

  1. 認証情報:

    • プロバイダにはサービスアカウントを使用
    • 認証情報を定期的にローテーション
    • RBAC ポリシーを実装
  2. ネットワークセキュリティ:

    • すべての接続で TLS を使用
    • ネットワークポリシーを実装
    • Condensa へのアクセスを制限
  3. データ保護:

    • 転送中データを暗号化
    • アップロードディレクトリを保護
    • 保持(retention)ポリシーを実装

付録

サポート構成

移行元プラットフォーム移行方式要件
VMware vSphere 6.0+Hot/ColdCBT, Snapshots
Nutanix AHVOVA ExportOVA 1.0/2.0
Sangfor HCIOVA ExportOVA 1.0
Hyper-V 2012+VHD ExportVHD/VHDX
Azure Stack HCIVHD ExportVHD/VHDX

API リファレンス

自動化に使う主要 API エンドポイント:

# Provider Management
GET    /api/v1/providers
POST   /api/v1/providers
DELETE /api/v1/providers/{id}

# Migration Management
GET    /api/v1/migrations
POST   /api/v1/migrations
POST   /api/v1/migrations/{id}/start
POST   /api/v1/migrations/{id}/cancel
GET    /api/v1/migrations/{id}/status

# Upload Management
POST   /api/v1/ova/upload
POST   /api/v1/vhd/uploads
GET    /api/v1/uploads/status

環境変数

環境変数で Condensa を構成できます。

CONDENSA_PUBLIC_URL=http://condensa.example.com:8080
CONDENSA_UPLOAD_DIR=/data/uploads
AWANIO_API=https://api.awanio.com/v2
DB_PATH=/data/condensa.db
PORT=8080

サポートとリソース


最終更新: 2025 バージョン: 0.1.0