как использовать образы, созданные методом «Offload rbd's copy_volume_to_image» в openstack?

как использовать образы, созданные методом «Offload rbd's copy_volume_to_image» в openstack?

У меня есть openstack, интегрированный с ceph. Я работаю над самым быстрым способом создания копии тома экземпляра без использования модуля 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 не сгенерировал их и не имеет идентификатора OpenStack. Интересно, могли бы вы помочь мне узнать, как я могу использовать образы после создания с помощью этого метода. Спасибо заранее.

решение1

Вы можете использовать cinder для управления существующими образами rbd и «адаптации» их в openstack. Предполагая, что вы уже клонировали или скопировали исходный образ в целевой образ (например: rbd clone fast-pool/image@snap fast-pool/new_image), вам нужна информация о бэкэнде, вот пример одного из наших кластеров (мы используем два разных пула 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. но 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, но это не помогло.

Связанный контент