私は Ceph と統合された OpenStack を持っています。cinder_backup モジュールを使用せずにインスタンスのボリュームのコピーを作成する最も速い方法に取り組んでいます。Ceph では、プールに保存されている rbd ファイル (ボリューム プールなど) にアクセスできます。それらをエクスポートして、そこからイメージを作成し、別のインスタンスを作成できます。ただし、「Offload rbd's copy_volume_to_image」という別の方法もあります。https://specs.openstack.org/openstack/cinder-specs/specs/liberty/optimze-rbd-copy-volume-to-image.html OpenStack でイメージ プールにコピーされたこれらのボリュームをどのように使用すればよいのか疑問に思っています。これを行うと、イメージは rbd プールにありますが、OpenStack によって生成されておらず、OpenStack ID もないため、OpenStack では使用できません。この方法で作成した後、イメージをどのように使用できるか教えていただけないでしょうか。よろしくお願いします。
答え1
cinder を使用して既存の rbd イメージを管理し、それらを openstack に「採用」することができます。ソース イメージをターゲット イメージに既にクローンまたはコピーしている場合は (例: rbd clone fast-pool/image@snap fast-pool/new_image
)、バックエンド情報が必要です。以下は、クラスターの 1 つからの例です (高速ストレージと低速ストレージに 2 つの異なる rbd プールを使用しています)。
control01:~ # cinder get-pools
+----------+---------------------+
| Property | Value |
+----------+---------------------+
| name | control@rbd#rbd-ssd |
+----------+---------------------+
+----------+----------------------+
| Property | Value |
+----------+----------------------+
| name | control@rbd2#rbd-hdd |
+----------+----------------------+
管理したいターゲット イメージは高速ストレージ (rbd-ssd) にあるため、これをボリュームとして cinder で管理し、「openstack に認識させる」ために必要なコマンドは次のとおりです。
cinder manage --name new_volume_name control@rbd#rbd-ssd new_image
「new_volume_name」は出力に表示される名前でcinder list
、「new_image」は前の手順で作成したクローン化された rbd イメージです。
答え2
@eblock 返信ありがとうございます。私の場合は状況が異なります。すでにクローンイメージを images という名前のプールの 1 つに持っています。しかし、cinder は ceph 内のプールとは異なるプールを認識します。これが ceph 内のプールです。
# ceph osd pool ls
.mgr
images
volumes
backup
そして、シンダーが見たものは次のとおりです。
# cinder get-pools
+----------+-------------------------+
| Property | Value |
+----------+-------------------------+
| name | controller3@rbd-1#rbd-1 |
+----------+-------------------------+
+----------+-------------------------+
| Property | Value |
+----------+-------------------------+
| name | controller2@rbd-1#rbd-1 |
+----------+-------------------------+
+----------+-------------------------+
| Property | Value |
+----------+-------------------------+
| name | controller1@rbd-1#rbd-1 |
+----------+-------------------------+
「cinder manage」コマンドを使用しようとすると、
cinder manage --name my_new_volume controller1@rbd-1#rbd-1 my_cloned_image
ボリュームが作成され、「エラー」ステータスで停止します。また、cinder ログ ファイルに次のエラーが表示されます。
cinder.exception.ManageExistingInvalidReference: Manage existing volume failed due to invalid backend reference my_cloned_image: Specified rbd image does not exist.
バックエンド アドレスを Ceph のプール名に変更しましたが、効果はありませんでした。