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 をインストールする前に、次を用意してください。
-
Awanio Dashboard
- Dashboard の利用権限を持つユーザーが必要です。
-
Helm(v3.0 以上)
# Install Helm if not already installed curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash -
Awanio Dashboard 上で構成済みの Storage Pool
-
Awanio API アクセス
- API エンドポイント URL(例:
https://192.168.1.2/v2) - 認証に使用できる有効な認証情報
- API エンドポイント URL(例:
-
Condensa Helm リポジトリを追加:
helm repo add condensa https://storage.awan.io/assets/charts helm repo update -
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" -
Condensa をインストール:
# Create namespace kubectl create namespace condensa # Install with custom values helm install condensa condensa/condensa \ --namespace condensa \ --values condensa-values.yaml -
インストール確認:
# 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}' -
Web UI にアクセス:
ブラウザで Condensa の URL を開きます。
http://<external-ip>:8080
| パラメータ | 説明 | デフォルト | 必須 |
|---|---|---|---|
publicUrl | CDI からアクセス可能な Public URL | - | Yes |
awanio.apiEndpoint | Awanio API エンドポイント | - | Yes |
awanio.username | Awanio ユーザー名 | - | Yes |
awanio.password | Awanio パスワード | - | Yes |
persistence.enabled | 永続ストレージを有効化 | true | No |
persistence.size | アップロード用ストレージ容量 | 100Gi | No |
service.type | Service 種別 | LoadBalancer | No |
uploadDir | ファイルアップロード用ディレクトリ | /data/uploads | No |
移行元 VM の準備
移行を成功させるためには、移行元 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
重要: CBT は、移行用スナップショットを作成する 前 に有効化する必要があります。
-
vSphere Client で vCenter に接続
-
(稼働中の場合)VM を停止:
VM を右クリック → Power → Shut Down Guest OS -
CBT を有効化:
-
VM を右クリック → Edit Settings
-
“VM Options” タブ
-
“Advanced” を展開
-
“Edit Configuration” をクリック
-
次のパラメータを追加:
ctkEnabled = true -
OK をクリックして保存
-
-
VM を起動:
VM を右クリック → Power → Power On -
スナップショットを作成(CBT 有効化後に必須):
VM を右クリック → Snapshots → Take Snapshot Name: "Pre-Migration Snapshot" Description: "Snapshot for Condensa migration with CBT enabled"⚠️ クリティカル: スナップショットは CBT を有効化した 後 に作成する必要があります。CBT 有効化前に作成されたスナップショットは移行失敗の原因になります。
-
CBT が有効であることを確認:
- VM の .vmdk ファイルを確認
- 各ディスクに対して
-ctk.vmdkファイルが存在するはずです
- VM Tools をインストールし、最新に保つ
- 移行前に不要なスナップショットを整理
- Condensa と vCenter のネットワーク疎通を確認
- 大容量 VM はメンテナンスウィンドウでの移行を検討
Nutanix AHV から VM を移行する場合:
-
Nutanix Prism にアクセス:
https://<nutanix-cluster-ip>:9440 -
VM の準備:
- VM を正常にシャットダウン
- 不要なスナップショットを削除
- VM 仕様(CPU、メモリ、ディスク)を記録
-
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 . -
OVA ファイルを確認:
# Check OVA contents tar -tvf <vm-name>.ova # Should contain: # - .ovf file (VM descriptor) # - .vmdk file(s) (Virtual disks) # - .mf file (Manifest)
Sangfor HCI から VM を移行する場合:
-
Sangfor HCI コンソールにアクセス:
https://<sangfor-hci-ip> -
VM の準備:
- Sangfor コンソールから VM を停止
- スナップショットがあれば削除
- VM 構成を記録
-
エクスポート手順:
a. Virtual Machines セクションへ移動
b. 対象 VM を選択
c. More Actions → Export をクリック
d. エクスポート形式を選択:
- “OVA” を選択
- すべてのディスクを含める
- VM 構成を含める
e. エクスポートを開始:
Export Location: Local Computer or Network Share Format: OVA 1.0 Compression: None (for better compatibility)f. エクスポートされた OVA ファイルをダウンロード
-
エクスポート後の確認:
# 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 上の Hyper-V から VM を移行する場合:
-
Hyper-V Manager を開く:
# Run as Administrator virtmgmt.msc -
VM の準備:
# Stop the VM Stop-VM -Name "VMName" # Remove checkpoints (snapshots) Get-VMSnapshot -VMName "VMName" | Remove-VMSnapshot -
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" -
必要に応じて VHDX を VHD に変換(互換性のため):
Convert-VHD -Path "C:\VMExports\VMName.vhdx" ` -DestinationPath "C:\VMExports\VMName.vhd" ` -VHDType Dynamic -
メタデータファイルを準備(
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" }
# 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)は移行元プラットフォームを表します。プロバイダ種別ごとに必要な設定が異なります。
-
Condensa Web UI にログイン
-
Providers に移動:
- メインメニューで “Providers” をクリック
- “Add Provider” ボタンをクリック
-
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 -
接続テスト:
- “Test Connection” をクリック
- 接続成功を確認
- 検出されたリソースを確認
-
プロバイダを保存:
- “Save” をクリック
- プロバイダが “Connected” 状態になることを確認
OVA provider は OVA ファイルを用いたファイルベース移行を扱います。
-
Providers → Add Provider に移動
-
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 -
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" -
-
アップロード確認:
- “OVA Uploads” セクションを確認
- ファイル整合性を確認
- 展開された VM 仕様を確認
VHD provider は Hyper-V のエクスポートからの移行を扱います。
-
Providers → Add Provider に移動
-
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 -
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> -
VHD アップロード確認:
- 処理ステータスを確認
- ディスク形式の互換性を確認
- VM 仕様を確認
移行の作成と実行
プロバイダ設定と移行元 VM の準備ができたら、移行を作成して実行できます。
-
Migrations → Create Migration に移動
-
基本設定:
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 -
VM を選択:
VMware Provider の場合:
- 利用可能な VM を参照
- フィルタを使用:
- Datacenter
- Folder
- Power State
- OS Type
- 移行対象 VM を選択
- VM 詳細(CPU、メモリ、ディスク)を確認
OVA Provider の場合:
- アップロード済み OVA ファイルから選択
- “Ready” 状態を確認
- 展開された仕様を確認
VHD Provider の場合:
- アップロード済み VHD ファイルから選択
- “Processed” 状態を確認
- OS 互換性を確認
-
移行設定:
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 -
確認して作成:
- 移行サマリを確認
- リソース要件を確認
- “Create Migration” をクリック
-
移行詳細を表示:
Migrations → Select Migration → View Details -
事前チェック(Pre-flight):
- 移行元への接続性を確認
- ターゲット namespace が存在することを確認
- ストレージの空き/利用可否を検証
- ネットワークマッピングを確認
-
移行を開始:
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>" -
移行フェーズ:
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 作成を確認
- ディスクアタッチ状況を確認
- 構成を検証
-
リアルタイム進捗:
- 全体進捗(%)を確認
- VM ごとの状態を監視
- データ転送レートを確認
- ログをリアルタイム表示
-
進捗インジケータ例:
Overall Progress: 45% VMs Status: - vm-web-01: ✓ Completed (100%) - vm-app-01: ⟳ Transferring (67%) - vm-db-01: ⏸ Queued -
ログ確認:
# 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 -
通知:
- 完了時のメール通知
- Webhook 通知
- Slack 連携(設定されている場合)
トラブルシューティング
問題: “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. プロバイダ接続をリフレッシュ
問題: “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 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 が “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'
ベストプラクティス
-
キャパシティ計画:
- ターゲットクラスターに十分なストレージがあることを確認
- 変換中は最大 2 倍のディスク容量が必要になる可能性を考慮
- 必要なネットワーク帯域を見積もり
-
VM 準備:
- VM ツール/ドライバを更新
- 不要ファイルを整理
- スナップショットを統合
- VM 依存関係を記録
-
テスト:
- 重要度の低い VM から試す
- エンドツーエンドで移行プロセスを検証
- リカバリ手順を文書化
-
バッチ処理:
- VM を論理的なグループで移行
- 重要度の低いワークロードから開始
- リソース使用率を監視
-
ネットワーク考慮:
- 可能であれば専用の移行ネットワークを使用
- 適切な帯域制限を設定
- ネットワークメンテナンスウィンドウを考慮
-
監視:
- 転送レートを監視
- 移行元の負荷を監視
- ターゲットクラスターのリソースを監視
-
検証:
- VM の機能を確認
- アプリケーション接続性をテスト
- パフォーマンス指標を検証
-
クリーンアップ:
- 成功した移行の DataVolumes を削除
- 移行元スナップショットを整理
- 移行ログを保管
-
ドキュメント:
- 移行中の問題を記録
- Runbook を更新
- パフォーマンス指標を記録
-
認証情報:
- プロバイダにはサービスアカウントを使用
- 認証情報を定期的にローテーション
- RBAC ポリシーを実装
-
ネットワークセキュリティ:
- すべての接続で TLS を使用
- ネットワークポリシーを実装
- Condensa へのアクセスを制限
-
データ保護:
- 転送中データを暗号化
- アップロードディレクトリを保護
- 保持(retention)ポリシーを実装
付録
| 移行元プラットフォーム | 移行方式 | 要件 |
|---|---|---|
| VMware vSphere 6.0+ | Hot/Cold | CBT, Snapshots |
| Nutanix AHV | OVA Export | OVA 1.0/2.0 |
| Sangfor HCI | OVA Export | OVA 1.0 |
| Hyper-V 2012+ | VHD Export | VHD/VHDX |
| Azure Stack HCI | VHD Export | VHD/VHDX |
自動化に使う主要 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
- ドキュメント: https://gitlab.com/awan.io/condensa
- Issue Tracker: https://gitlab.com/awan.io/condensa/issues
- コミュニティサポート: support@awan.io
- エンタープライズサポート: Awanio サブスクリプションで利用可能
最終更新: 2025 バージョン: 0.1.0