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 は、cinder-volume に別の同期 RPC を発行して、ソースデバイスを公開するようにします。
  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. バックアップが完了すると、データベースのバックアップレコードが更新されます。

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

以下の図は、ユーザーが Block Storage Service (cinder) バックアップの復元を要求すると発生する手順を示しています。

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