如何使用openstack中透過「Offload rbd's copy_volume_to_image」方法建立的鏡像?

如何使用openstack中透過「Offload rbd's copy_volume_to_image」方法建立的鏡像?

我有一個與 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 尚未產生它並且沒有 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管理”命令時,

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 中的池名稱,但沒有幫助。

相關內容