スナップショットとテンプレート
Vaporは、テスト、バックアップ、または迅速なインスタンス複製の目的で、仮想マシンの特定時点の状態をキャプチャするメカニズムを提供します。
VMスナップショット
スナップショットは、特定の瞬間における仮想マシンのディスクイメージの状態、およびオプションでアクティブメモリ(RAM)の状態を記録します。
スナップショット機能とメモリ状態
ストレージバックエンドやゲスト構成によって、サポートされるスナップショット機能が異なります:
- 機能チェック (Capabilities Check): スナップショットを作成する前に、Vaporは
GET /api/v1/virtualization/computes/{id}/snapshots/capabilitiesを呼び出して、メモリを含むスナップショット(supports_memory)がサポートされているかどうかを判断します。 - メモリを含める (Include Memory): サポートされている場合、作成時に Include Memory を有効にすることでアクティブなRAM状態を保存できます。これにより、VMはスナップショット取得時の正確なポイントから実行を再開し、実行中のプロセスを維持できます。メモリが保存されない場合、スナップショットへの復元時にVMは電源オフの状態で起動します。
- ファイルシステム静止化 (Filesystem Quiescing): 静止化が有効(
quiesce: true)な場合、VaporはQEMU Guest Agentを使用してゲストファイルシステムのI/O操作を一時停止し、ダーティキャッシュブロックをディスクにフラッシュしてからスナップショットをキャプチャします。 - 外部スナップショット (External Snapshots): 特定のストレージ構成では、内部のQCOW2構造を変更する代わりに、外部スナップショット(
force_external: true)の作成を強制してオーバーレイファイルを生成できます。
管理操作 (API & UI)
- スナップショット一覧の取得:
GET /api/v1/virtualization/computes/{id}/snapshots - スナップショットの作成:
POST /api/v1/virtualization/computes/{id}/snapshots(パラメータ:name、description、include_memory(bool)、quiesce(bool)、force_external(bool)) - スナップショット詳細の取得:
GET /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name} - スナップショットへの復元:
POST /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name}/revert - スナップショットの削除:
DELETE /api/v1/virtualization/computes/{id}/snapshots/{snapshot_name}
WARNING
スナップショットは、基盤となる仮想ディスクファイルチェーンに依存します。ベースの仮想ディスクイメージが削除または破損した場合、スナップショットは復元できなくなります。スナップショットを独立したバックアップとして扱うべきではありません。
VMテンプレート
テンプレートを使用すると、管理者は仮想マシンの構成を読み取り専用のマスターイメージ(ゴールデンイメージ)として固定し、同一の新しいVMを迅速にデプロイできます。
テンプレートのライフサイクルと変換
- VMからテンプレートへの変換:
POST /api/v1/virtualization/computes/{id}/convert-to-template(descriptionを指定)。VMは電源オフである必要があります。変換されると、VMはテンプレートレジストリ(GET /virtualization/computes/templates)に隔離され、通常の一覧からは非表示になります。 - 起動ブロック (Start Block): テンプレートを直接電源オンにしたり実行したりすることはできません。テンプレートを起動しようとすると、
HTTP 409 Conflictエラーが返されます。 - テンプレートからのデプロイ:
POST /api/v1/virtualization/computes/from-templateにtemplate_id、name、およびターゲットのstorage_poolを指定して送信します。Vaporは、テンプレートのディスクボリュームの高速なコピーオンライトクローンを作成して新しいVMをプロビジョニングします。 - テンプレートからVMへの変換:
POST /api/v1/virtualization/computes/templates/{template_id}/convert-to-vm。これにより、テンプレートが通常の起動可能なVMとして再登録されます。 - テンプレートの削除:
DELETE /api/v1/virtualization/computes/templates/{template_id}?remove_disks=trueはテンプレートを削除し、オプションでバッキングストレージディスクをパージします。