como usar as imagens que foram criadas pelo método "Offload rbd's copy_volume_to_image" no openstack?

como usar as imagens que foram criadas pelo método "Offload rbd's copy_volume_to_image" no openstack?

Tenho um openstack integrado ao ceph. Estou trabalhando na maneira mais rápida de criar uma cópia do volume de uma instância sem usar o módulo cinder_backup. no Ceph é possível acessar os arquivos rbd que estão armazenados no pool (como pools de volumes), podemos exportá-los e então criar uma imagem a partir dele e criar outra instância. mas também existe outro método chamado "Offload rbd's copy_volume_to_image"https://specs.openstack.org/openstack/cinder-specs/specs/liberty/optimze-rbd-copy-volume-to-image.html Eu me pergunto como posso usar esses volumes copiados para pools de imagens no Openstack porque depois de fazer isso as imagens estão no pool rbd, mas não podem ser usadas no OpenStack porque o OpenStack não as gerou e não possui um ID do OpenStack. Gostaria de saber se você poderia me ajudar a saber como posso usar imagens após criar com este método. Agradeço antecipadamente.

Responder1

Você pode usar o cinder para gerenciar imagens rbd existentes e "adotá-las" no openstack. Supondo que você já tenha clonado ou copiado a imagem de origem para sua imagem de destino (por exemplo: rbd clone fast-pool/image@snap fast-pool/new_image), você precisa das informações de back-end. Aqui está um exemplo de um de nossos clusters (usamos dois pools rbd diferentes para armazenamento rápido e lento):

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

A imagem de destino que eu queria gerenciar está no armazenamento rápido (rbd-ssd), então este é o comando que preciso para deixar o cinder gerenciá-lo como um volume e torná-lo "conhecido pelo openstack":

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

"new_volume_name" é o nome que você verá na cinder listsaída, enquanto "new_image" é a imagem rbd clonada que você criou na etapa anterior.

Responder2

@eblock obrigado pela sua resposta. Eu tenho uma situação diferente aqui. Já tenho minhas imagens clonadas em um dos meus pools denominados imagens. mas a cinza vê poças diferentes das poças do ceph. aqui estão minhas piscinas no ceph

# ceph osd pool ls 
.mgr
images
volumes
backup

e aqui está o que Cinder vê:

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

então, quando tento usar o comando "cinder manager",

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

ele cria o volume e fica preso no status "erro". Também recebo este erro no arquivo de log do Cinder:

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

até mudei o endereço de back-end para o nome do pool no ceph, mas não ajudou.

informação relacionada