1.2.2. ボリュームの復元のワークフロー

以下の図は、ユーザーが Block Storage バックアップを復元する際に発生する手順を示しています。

OpenStack BlockStorage の復元
  1. クライアントは CinderREST API を呼び出して cinder バックアップを復元するリクエストを発行します。
  2. cinder API は HAProxy から要求を受信し、要求、ユーザー認証情報などを検証します。
  3. 要求に宛先として既存のボリュームが含まれていない場合、API は非同期 RPC 呼び出しを行って新しいボリュームを作成し、ボリュームのステータスをポーリングして利用可能になります。
  4. cinder-scheduler がボリュームサービスを選択し、RPC 呼び出しを実行してボリュームを作成します。
  5. 選択した cinder-ボリューム により、音量が作成されます。
  6. cinder-api が利用可能なボリュームを検出すると、バックアップレコードがデータベースに作成されます。
  7. cinder-api は、AMQP 経由でバックアップサービスへの非同期 RPC 呼び出しを行い、バックアップを復元し、現在のボリューム ID、バックアップ ID、およびボリューム名を API 呼び出し元に返します。
  8. RPC 作成メッセージは、バックアップサービスのいずれかに届きます。
  9. cinder-backup は、cinder-volume への同期 RPC 呼び出しを実行して、宛先ボリュームを公開します。
  10. cinder-volume は、適切な接続情報を返す宛先ボリュームをエクスポートしてマッピングします。
  11. cinder-backup は、接続情報を使用してソースボリュームを接続します。
  12. cinder-backup サービスは、デバイスが接続されている状態でドライバーを呼び出し、ボリュームデスティネーションへのデータの復元を開始します。
  13. ボリュームがバックアップホストから切り離されている。
  14. cinder-backup は、同期 RPC を cinder-volume に発行して、ソースデバイスの接続を解除します。
  15. cinder-volume サービスは、デバイスのマッピングを解除し、エクスポートを削除します。
  16. バックアップが完了すると、データベースのバックアップレコードが更新されます。