wie verwende ich die Bilder, die mit der Methode „Offload rbd’s copy_volume_to_image“ in OpenStack erstellt wurden?

wie verwende ich die Bilder, die mit der Methode „Offload rbd’s copy_volume_to_image“ in OpenStack erstellt wurden?

Ich habe einen OpenStack in Ceph integriert. Ich arbeite an der schnellsten Möglichkeit, eine Kopie des Volumes einer Instanz zu erstellen, ohne das Modul Cinder_Backup zu verwenden. In Ceph ist es möglich, auf die im Pool gespeicherten RBD-Dateien zuzugreifen (wie Volume-Pools). Wir können sie exportieren und dann daraus ein Image erstellen und eine weitere Instanz erstellen. Es gibt aber auch eine andere Methode namens „Offload rbd's copy_volume_to_image“.https://specs.openstack.org/openstack/cinder-specs/specs/liberty/optimze-rbd-copy-volume-to-image.html Ich frage mich, wie ich diese kopierten Datenträger für Image-Pools in OpenStack verwenden kann, da sich die Images danach im RBD-Pool befinden, aber in OpenStack nicht verwendet werden können, da OpenStack sie nicht generiert hat und keine OpenStack-ID hat. Ich frage mich, ob Sie mir helfen können, herauszufinden, wie ich Images verwenden kann, nachdem ich sie mit dieser Methode erstellt habe. Vielen Dank im Voraus.

Antwort1

Sie können Cinder verwenden, um vorhandene RBD-Images zu verwalten und sie in OpenStack zu „übernehmen“. Vorausgesetzt, Sie haben das Quellimage bereits geklont oder in Ihr Zielimage kopiert (zum Beispiel: rbd clone fast-pool/image@snap fast-pool/new_image), benötigen Sie die Backend-Informationen. Hier ist ein Beispiel aus einem unserer Cluster (wir verwenden zwei verschiedene RBD-Pools für schnellen und langsamen Speicher):

control01:~ # cinder get-pools
+----------+---------------------+
| Property | Value               |
+----------+---------------------+
| name     | control@rbd#rbd-ssd |
+----------+---------------------+
+----------+----------------------+
| Property | Value                |
+----------+----------------------+
| name     | control@rbd2#rbd-hdd |
+----------+----------------------+

Das Ziel-Image, das ich verwalten wollte, befindet sich im schnellen Speicher (rbd-ssd). Daher ist dies der Befehl, den ich benötige, damit Cinder es als Volume verwalten kann und es „OpenStack bekannt“ macht:

cinder manage --name new_volume_name control@rbd#rbd-ssd new_image

„new_volume_name“ ist der Name, den Sie dann in der Ausgabe sehen cinder list, während „new_image“ das geklonte RBD-Image ist, das Sie im vorherigen Schritt erstellt haben.

Antwort2

@eblock, danke für deine Antwort. Ich habe hier eine andere Situation. Ich habe meine geklonten Bilder bereits auf einem meiner Pools namens „Images“. Aber Cinder sieht andere Pools als die Pools im Ceph. Hier sind meine Pools im Ceph

# ceph osd pool ls 
.mgr
images
volumes
backup

und hier ist, was Cinder sieht:

# 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 |
+----------+-------------------------+

Wenn ich also versuche, den Befehl "cinder manage" zu verwenden,

cinder manage --name  my_new_volume  controller1@rbd-1#rbd-1  my_cloned_image

Es erstellt das Volume und bleibt im Status „Fehler“ hängen. Außerdem erhalte ich diesen Fehler in der Cinder-Protokolldatei:

cinder.exception.ManageExistingInvalidReference: Manage existing volume failed due to invalid backend reference my_cloned_image: Specified rbd image does not exist.

ich habe sogar die Backend-Adresse im Ceph in den Poolnamen geändert, aber das hat nicht geholfen.

verwandte Informationen