1.2. バックアップおよび復元の仕組み

以下のサブセクションでは、バックアップと復元のワークフローについて説明します。

1.2.1. ボリュームバックアップのワークフロー

Block Storage バックアップサービスがバックアップを実行すると、cinder API から、ターゲットのボリュームのバックアップを作成する要求を受け取ります。バックアップサービスは要求を完了し、コンテンツをバックエンドに保存します。

以下の図は、要求が Block Storage (cinder) サービスと相互作用してバックアップを実行する方法を示しています。

OpenStack BlockStorage のバックアップ
  1. クライアントは、cinder API を起動して、Block Storage ボリュームのバックアップを作成するように要求します。
  2. cinder API サービスは、HAProxy から要求を受信し、要求、ユーザー認証情報、およびその他の情報を検証します。
  3. SQL データベースにバックアップレコードを作成します。
  4. AMQP を介して、cinder-backup への非同期 RPC 呼び出しを行い、ボリュームのバックアップを作成します。
  5. API 呼び出し元に、現在のバックアップレコード (ID) を返します。
  6. RPC 作成メッセージは、バックアップサービスのいずれかに届きます。
  7. cinder-backup は、get_backup_デバイス への同期 RPC 呼び出しを実行します。
  8. cinder-volume は、正しいデバイスが呼び出し元に返されるようにします。通常は同じボリュームですが、ボリュームが使用中の場合は、設定によっては一時クローンボリュームまたは一時スナップショットが返されます。
  9. cinder-backup は、別の同期 RPC を発行して、ソースデバイスを公開するように cinder-volume します。
  10. cinder-volume サービスは、ソースデバイス (ボリュームまたはスナップショット) をエクスポートしてマッピングし、適切な接続情報を返します。
  11. cinder-backup は、接続情報を使用してソースボリュームを割り当てます。
  12. cinder-backup は、デバイスが接続されている状態でバックアップドライバーを呼び出し、バックアップ先へのデータ転送を開始します。
  13. ボリュームがバックアップホストから切り離されている。
  14. cinder-backup は、同期 RPC をcinder-volume に発行して、ソースデバイスの接続を解除します。
  15. cinder-volume サービスは、デバイスのマッピングを解除し、エクスポートを削除します。
  16. 一時ボリュームまたは一時スナップショットが作成された場合、cinder-backupcinder-volume を呼び出してそのボリュームを削除します。
  17. cinder-volume により、一時ボリュームが削除されます。
  18. バックアップが完了すると、データベースのバックアップレコードが更新されます。