OpenStack에서 "Offload rbd의 copy_volume_to_image" 메소드로 생성된 이미지를 어떻게 사용합니까?

OpenStack에서 "Offload rbd의 copy_volume_to_image" 메소드로 생성된 이미지를 어떻게 사용합니까?

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 ID가 없기 때문에 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 답변 감사드립니다. 여기서는 상황이 다릅니다. 이미지라는 이름의 풀 중 하나에 복제된 이미지가 이미 있습니다. 하지만 콘크리트는 세프에 있는 웅덩이와는 다른 웅덩이를 봅니다. 여기 세프에 있는 내 수영장이 있어요

# 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의 풀 이름으로 변경했지만 도움이 되지 않았습니다.

관련 정보