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 以上)
bash# Install Helm if not already installed curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashAwanio Dashboard 上で構成済みの Storage Pool
Awanio API アクセス
- API エンドポイント URL(例:
https://192.168.1.2/v2) - 認証に使用できる有効な認証情報
- API エンドポイント URL(例:
Helm でインストール
Condensa Helm リポジトリを追加:
bashhelm repo add condensa https://storage.awan.io/assets/charts helm repo updatevalues ファイルを作成(
condensa-values.yaml):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 をインストール:
bash# Create namespace kubectl create namespace condensa # Install with custom values helm install condensa condensa/condensa \ --namespace condensa \ --values condensa-values.yamlインストール確認:
bash# 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 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 -nooutChanged Block Tracking(CBT)を有効化
重要: CBT は、移行用スナップショットを作成する 前 に有効化する必要があります。
vSphere Client で vCenter に接続
(稼働中の場合)VM を停止:
VM を右クリック → Power → Shut Down Guest OSCBT を有効化:
VM を右クリック → Edit Settings
"VM Options" タブ
"Advanced" を展開
"Edit Configuration" をクリック
次のパラメータを追加:
ctkEnabled = trueOK をクリックして保存
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ファイルが存在するはずです
VMware のベストプラクティス
- VM Tools をインストールし、最新に保つ
- 移行前に不要なスナップショットを整理
- Condensa と vCenter のネットワーク疎通を確認
- 大容量 VM はメンテナンスウィンドウでの移行を検討
Nutanix VM(OVA エクスポート)
Nutanix AHV から VM を移行する場合:
Nutanix Prism にアクセス:
https://<nutanix-cluster-ip>:9440VM の準備:
- VM を正常にシャットダウン
- 不要なスナップショットを削除
- VM 仕様(CPU、メモリ、ディスク)を記録
OVA としてエクスポート:
a. Nutanix Move を使用(推奨):
- Windows/Linux マシンに Nutanix Move をインストール
- 移行元を Nutanix AHV に設定
- エクスポート対象 VM を選択
- "Export to OVA" を選択
- ローカルディレクトリに保存
b. acli(Nutanix CLI)を使用:
bash# 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 ファイルを確認:
bash# 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 を移行する場合:
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 ファイルをダウンロード
エクスポート後の確認:
bash# 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 の場合
Hyper-V Manager を開く:
powershell# Run as Administrator virtmgmt.mscVM の準備:
powershell# Stop the VM Stop-VM -Name "VMName" # Remove checkpoints (snapshots) Get-VMSnapshot -VMName "VMName" | Remove-VMSnapshotVM をエクスポート:
方法 1: Hyper-V Manager GUI を使用
- VM を右クリック → Export
- エクスポート先を選択
- 完了まで待機
方法 2: PowerShell を使用
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 に変換(互換性のため):
powershellConvert-VHD -Path "C:\VMExports\VMName.vhdx" ` -DestinationPath "C:\VMExports\VMName.vhd" ` -VHDType Dynamicメタデータファイルを準備(
vm-info.jsonを作成):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
Condensa Web UI にログイン
Providers に移動:
- メインメニューで "Providers" をクリック
- "Add Provider" ボタンをクリック
VMware Provider を設定:
yamlProvider 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 provider は OVA ファイルを用いたファイルベース移行を扱います。
Providers → Add Provider に移動
OVA Provider を設定:
yamlProvider Type: OVA Name: ova-imports Description: OVA File Imports Settings: - Upload Directory: /data/uploads/ova - Max File Size: 500GB - Supported Formats: .ova, .ovfOVA ファイルをアップロード:
Option 1: Web UI からアップロード
"Upload OVA" ボタンをクリック
ローカルから OVA ファイルを選択
VM メタデータを追加:
yamlVM Name: imported-vm-01 OS Type: Ubuntu Linux 20.04 CPUs: 4 Memory: 8192 MB"Upload" をクリック
Option 2: CLI アップロード(大容量ファイル向け)
bash# 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/VHDX Provider
VHD provider は Hyper-V のエクスポートからの移行を扱います。
Providers → Add Provider に移動
VHD Provider を設定:
yamlProvider Type: VHD Name: hyperv-imports Description: Hyper-V VHD Imports Settings: - Upload Directory: /data/uploads/vhd - Supported Formats: .vhd, .vhdx, .avhdx - Auto-convert VHDX: YesVHD ファイルをアップロード:
Step 1: VHD/VHDX をアップロード
bash# 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 プロトコルでアップロード
bash# 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 に移動
基本設定:
yamlMigration 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 OrganizationVM を選択:
VMware Provider の場合:
- 利用可能な VM を参照
- フィルタを使用:
- Datacenter
- Folder
- Power State
- OS Type
- 移行対象 VM を選択
- VM 詳細(CPU、メモリ、ディスク)を確認
OVA Provider の場合:
- アップロード済み OVA ファイルから選択
- "Ready" 状態を確認
- 展開された仕様を確認
VHD Provider の場合:
- アップロード済み VHD ファイルから選択
- "Processed" 状態を確認
- OS 互換性を確認
移行設定:
yamlMigration 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
bashcurl -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ログ確認:
bash# 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 連携(設定されている場合)
トラブルシューティング
よくある問題と対処
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)
キャパシティ計画:
- ターゲットクラスターに十分なストレージがあることを確認
- 変換中は最大 2 倍のディスク容量が必要になる可能性を考慮
- 必要なネットワーク帯域を見積もり
VM 準備:
- VM ツール/ドライバを更新
- 不要ファイルを整理
- スナップショットを統合
- VM 依存関係を記録
テスト:
- 重要度の低い VM から試す
- エンドツーエンドで移行プロセスを検証
- リカバリ手順を文書化
移行中(During Migration)
バッチ処理:
- VM を論理的なグループで移行
- 重要度の低いワークロードから開始
- リソース使用率を監視
ネットワーク考慮:
- 可能であれば専用の移行ネットワークを使用
- 適切な帯域制限を設定
- ネットワークメンテナンスウィンドウを考慮
監視:
- 転送レートを監視
- 移行元の負荷を監視
- ターゲットクラスターのリソースを監視
移行後(Post-Migration)
検証:
- 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 リファレンス
自動化に使う主要 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