如何使用openstack中通过“Offload rbd的copy_volume_to_image”方法创建的图像?

如何使用openstack中通过“Offload rbd的copy_volume_to_image”方法创建的图像?

我有一个与 ceph 集成的 openstack。我正在研究不使用 cinder_backup 模块来创建实例卷副本的最快方法。在 Ceph 中,可以访问存储在池中的 rbd 文件(如卷池),我们可以导出它们,然后从中创建映像并创建另一个实例。但还有另一种名为“卸载 rbd 的 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 ID。我想知道您是否可以帮助我了解如何在使用此方法创建后使用镜像。提前谢谢您。

答案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 看到的是这样的:

# 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 中的池名称,但没有帮助。

相关内容