4.3. 단일 또는 여러 저장소로 이미지 가져오기 및 복사
Red Hat Ceph Storage를 백엔드로 사용하도록 Image 서비스(glance)를 구성할 때 로컬 파일 시스템 또는 웹 서버에서 여러 Ceph Storage 클러스터로 이미지 데이터를 가져올 수 있습니다.
웹 서버에서 여러 저장소로 이미지를 한 번에 가져올 수 있습니다. 웹 서버에서 이미지를 사용할 수 없는 경우 로컬 파일 시스템에서 중앙 저장소로 이미지를 가져온 다음 다른 저장소에 복사할 수 있습니다.
중앙 위치에서 이미지를 사용하는 인스턴스가 없는 경우에도 중앙 사이트에 이미지 복사본을 항상 저장합니다.
4.3.1. 단일 저장소로 이미지 데이터 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Image 서비스(glance)를 사용하여 이미지 데이터를 단일 저장소로 가져올 수 있습니다.
프로세스
이미지 데이터를 단일 저장소로 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name <image-name> \ --import-method web-download \ --uri <uri> \ --store <store>-
&
lt;image-name>을 가져올 이미지의 이름으로 바꿉니다. -
&
lt;uri>를 이미지 URI로 바꿉니다. &
lt;store>를 이미지 데이터를 복사할 저장소 이름으로 바꿉니다.참고명령에
--stores,--all-stores또는--store옵션을 포함하지 않으면 이미지 서비스에서 중앙 저장소에 이미지를 생성합니다.
-
&
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ openstack image show <image-id> | grep stores&
lt;image-id>를 원본 이미지의 ID로 바꿉니다.출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
4.3.2. 여러 저장소로 이미지 데이터 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
--allow-failure 매개변수의 기본 설정은 true 이므로 일부 저장소가 이미지 데이터를 가져오지 못하는 경우 명령에 매개 변수를 포함할 필요가 없습니다.
이 절차에서는 이미지 데이터를 성공적으로 가져오기 위해 모든 저장소가 필요하지는 않습니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name <image-name> \ --import-method web-download \ --uri <uri> \ --stores <store-1>,<store-2>,<store-3>-
&
lt;image-name>을 가져올 이미지의 이름으로 바꿉니다. -
&
lt;uri>를 이미지 URI로 바꿉니다. -
<
store-1> , <store>을 이미지 데이터를 가져오려는 저장소 이름으로 바꿉니다.-2> 및 <store-3 -
또는 모든 저장소에 이미지를 업로드하려면
--stores를--all-stores true로 바꿉니다.
-
&
4.3.3. 실패 없이 모든 저장소로 이미지 데이터 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
이 절차에서는 이미지 데이터를 성공적으로 가져오려면 모든 저장소가 필요합니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name <image-name> \ --import-method web-download \ --uri <uri> \ --stores <store-1>,<store-2>,<store-3>-
&
lt;image-name>을 가져올 이미지의 이름으로 바꿉니다. -
&
lt;uri>를 이미지 URI로 바꿉니다. -
<
store-1> , <>을 이미지 데이터를 복사할 저장소 이름으로 바꿉니다.store-2> 및 <store-3 또는 모든 저장소에 이미지를 업로드하려면
--stores를--all-stores true로 바꿉니다.참고--allow-failure매개변수를false로 설정하면 Image 서비스(glance)에서 이미지 데이터를 가져오지 못하는 저장소를 무시하지 않습니다. 이미지 속성os_glance_failed_import를 사용하여 실패한 저장소 목록을 볼 수 있습니다. 자세한 내용은 4.3.4절. “이미지 가져오기 작업의 진행률 확인”의 내용을 참조하십시오.
-
&
검증
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ openstack image show <image-id> | grep stores&
lt;image-id>를 기존 이미지의 ID로 바꿉니다.출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
4.3.4. 이미지 가져오기 작업의 진행률 확인 링크 복사링크가 클립보드에 복사되었습니다!
이미지 가져오기 워크플로는 이미지 데이터를 저장소로 순차적으로 가져옵니다. 이미지 크기, 저장소 수, 중앙 사이트와 에지 사이트 간의 네트워크 속도는 이미지 가져오기 작업을 완료하는 데 걸리는 시간에 영향을 미칩니다.
이미지 가져오기 작업 중에 전송된 알림에 표시되는 두 개의 이미지 속성을 확인하여 이미지 가져오기 진행 상황을 확인할 수 있습니다.
-
os_glance_importing_to_stores속성에는 이미지 데이터를 가져오지 않은 저장소가 나열됩니다. 가져오기 시작 시 요청된 모든 저장소가 목록에 표시됩니다. 저장소가 이미지 데이터를 가져올 때마다 이미지 서비스는 목록에서 저장소를 제거합니다. -
os_glance_failed_import속성은 이미지 데이터를 가져오지 못하는 저장소를 나열합니다. 이 목록은 이미지 가져오기 작업 시작 시 비어 있습니다.
다음 절차에서는 3개의 Red Hat Ceph Storage 클러스터, 즉 중앙 저장소와 에지 dcn0 및 dcn1 저장소에 있는 3개의 Red Hat Ceph Storage 클러스터가 있습니다.
프로세스
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ openstack image show <image-id>&
lt;image-id>를 원본 이미지의 ID로 바꿉니다.출력에는 다음 예제 스니펫과 유사한 쉼표로 구분된 저장소 목록이 표시됩니다.
| os_glance_failed_import | | os_glance_importing_to_stores | central,dcn0,dcn1 | status | importing
이미지 가져오기 작업의 상태를 모니터링합니다.
watch를 사용하여 명령 앞에 도달하면 명령 출력이 2초마다 새로 고쳐집니다.$ watch openstack image show <image-id>&
lt;image-id>를 원본 이미지의 ID로 바꿉니다.이미지 가져오기 작업이 진행됨에 따라 작업 상태가 변경됩니다.
| os_glance_failed_import | | os_glance_importing_to_stores | dcn0,dcn1 | status | importing이미지를 가져오지 못했습니다. 이미지가 다음 예와 유사합니다.
| os_glance_failed_import | dcn0 | os_glance_importing_to_stores | dcn1 | status | importing작업이 완료되면 상태가 active로 변경됩니다.
| os_glance_failed_import | dcn0 | os_glance_importing_to_stores | | status | active
4.3.5. 이미지 가져오기 실패 관리 링크 복사링크가 클립보드에 복사되었습니다!
--allow-failure 매개변수를 사용하여 이미지 가져오기 작업의 오류를 관리할 수 있습니다.
-
--allow-failure매개변수의 값이true인 경우 첫 번째 저장소에서 데이터를 성공적으로 가져온 후 이미지 상태가활성화됩니다. 이 설정은 기본 설정입니다.os_glance_failed_import이미지 속성을 사용하여 이미지 데이터를 가져오지 못한 저장소 목록을 볼 수 있습니다. -
--allow-failure매개변수의 값을false로 설정하면 지정된 모든 저장소에서 데이터를 성공적으로 가져온 후에만 이미지 상태가활성화됩니다. 이미지 데이터를 가져오는 저장소 실패로 인해 이미지 상태가실패하게 됩니다. 이미지는 지정된 저장소 중 하나로 가져오지 않습니다.
4.3.6. 특정 저장소에 이미지 복사 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 이미지 데이터를 하나 이상의 특정 저장소에 복사합니다.
프로세스
이미지 데이터를 하나 이상의 특정 저장소에 복사합니다.
이미지 데이터를 단일 저장소에 복사합니다.
$ openstack image import <image_id> \ --store <store_id>\ --import-method copy-image-
&
lt;image_id>를 복사할 이미지의 이름으로 바꿉니다. -
&
lt;store_id>를 이미지 데이터를 복사할 저장소 이름으로 바꿉니다.
-
&
이미지 데이터를 특정 저장소에 복사합니다.
$ openstack image import <image-id> \ --stores <store-1>,<store-2> \ --import-method copy-image-
&
lt;store-1> 및 <store-2>를 이미지 데이터를 복사할 저장소 이름으로 바꿉니다.
-
&
이미지 데이터가 지정된 저장소에 성공적으로 복제되었는지 확인합니다.
$ openstack image list --include-stores이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 4.3.4절. “이미지 가져오기 작업의 진행률 확인” 을 참조하십시오.
4.3.7. 여러 저장소에 이미지 복사 링크 복사링크가 클립보드에 복사되었습니다!
Image 서비스(glance)를 사용하여 이미지 가져오기 워크플로를 사용하여 에지의 여러 Red Hat Ceph Storage 저장소에 이미지 데이터를 복사할 수 있습니다.
이미지를 에지 사이트에 복사하기 전에 중앙 사이트에 있어야 합니다. 이미지 소유자 또는 프로젝트 관리자만 새로 추가된 저장소에 기존 이미지를 복사할 수 있습니다.
이미지 데이터를 수신하도록 --all-stores 를 true 로 설정하거나 특정 저장소를 지정하여 기존 이미지 데이터를 복사할 수 있습니다.
-
--all-stores옵션의 기본 설정은false입니다.--all-stores가false인 경우 --stores <store-1>,<store-2>를 사용하여 이미지 데이터를 수신하는 저장소를 지정해야 합니다. 지정된 저장소에 이미지 데이터가 이미 있으면 요청이 실패합니다. -
all-stores를true로 설정하고 이미지 데이터가 일부 저장소에 이미 있는 경우 해당 저장소가 목록에서 제외됩니다.
이미지 데이터를 수신하는 저장소를 지정하면 이미지 서비스는 중앙 사이트의 데이터를 스테이징 영역으로 복사합니다. 그런 다음 이미지 서비스는 이미지 가져오기 워크플로를 사용하여 이미지 데이터를 가져옵니다.
경쟁 조건 및 예기치 않은 결과가 발생할 수 있으므로 동일한 이미지에 대해 시간이 지정된 복사 이미지 작업을 주의 깊게 사용하지 마십시오. 기존 이미지 데이터는 그대로 유지되지만 새 저장소에 데이터를 복사하지 못합니다.
4.3.8. 모든 저장소에 이미지 복사 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 사용 가능한 모든 저장소에 이미지 데이터를 복사합니다.
절차
사용 가능한 모든 저장소에 이미지 데이터를 복사합니다.
$ openstack image import <image-id> \ --all-stores true \ --import-method copy-image-
&
lt;image-id>를 복사할 이미지의 ID로 바꿉니다.
-
&
이미지 데이터가 사용 가능한 모든 저장소에 성공적으로 복제되었는지 확인합니다.
$ openstack image list --include-stores이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 4.3.4절. “이미지 가져오기 작업의 진행률 확인” 을 참조하십시오.
4.3.9. 특정 저장소에서 이미지 삭제 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift(RHOSO) 이미지 서비스(glance)에서 Red Hat OpenStack Services를 사용하여 특정 저장소의 기존 이미지 사본을 삭제합니다.
프로세스
특정 저장소에서 이미지를 삭제합니다.
$ openstack image delete --store <store-id> <image-id>-
&
lt;store-id>를 이미지 복사본을 삭제해야 하는 저장소 이름으로 바꿉니다. -
&
lt;image-id>를 삭제하려는 이미지의 ID로 바꿉니다.
openstack image delete --store <store-id& gt; 명령은 모든 사이트에서 이미지를 영구적으로 삭제합니다. 이미지 인스턴스 및 메타데이터뿐만 아니라 모든 이미지 사본이 삭제됩니다.
4.3.10. 이미지 위치 및 위치 속성 나열 링크 복사링크가 클립보드에 복사되었습니다!
이미지가 여러 사이트에 존재할 수 있지만 지정된 이미지에 대한 단일 UUID(Universal Unique Identifier)만 있습니다. 이미지 메타데이터에는 각 복사본의 위치가 포함되어 있습니다. 예를 들어 두 에지 사이트에 있는 이미지는 중앙 사이트와 두 개의 에지 사이트 등 3개의 위치가 있는 단일 UUID로 노출됩니다.
프로세스
이미지 사본이 존재하는 사이트를 표시합니다.
$ openstack image show ID | grep "stores" | stores | default_backend,dcn1,dcn2이 예제에서는 중앙 사이트인
default_backend및 두 에지 사이트dcn1및dcn2에 이미지가 있습니다.또는
--include-stores옵션을 사용하여openstack image list명령을 실행하여 이미지가 존재하는 사이트를 확인할 수 있습니다.$ openstack image list --include-stores | ID | Name | Stores | 2bd882e7-1da0-4078-97fe-f1bb81f61b00 | cirros | default_backend,dcn1,dcn2이미지 위치 속성을 나열하여 각 위치의 세부 정보를 표시합니다.
$ openstack image show ID -c properties | properties | (--- cut ---) locations='[{'url': 'rbd://79b70c32-df46-4741-93c0-8118ae2ae284/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'default_backend'}}, {'url': 'rbd://63df2767-8ddb-4e06-8186-8c155334f487/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'dcn1'}}, {'url': 'rbd://1b324138-2ef9-4ef9-bd9e-aa7e6d6ead78/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'dcn2'}}]', (--- cut --)이미지 속성에는 각 이미지의 위치에 대한 다양한 Ceph RBD URI가 표시됩니다.
이 예에서 중앙 이미지 위치 URI는 다음과 같습니다.
rbd://79b70c32-df46-4741-93c0-8118ae2ae284/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'default_backend'}}URI는 다음 데이터로 구성됩니다.
-
79b70c32-df46-4741-93c0-8118ae284는 중앙 Ceph FSID에 해당합니다. 각 Ceph 클러스터에는 고유한 FSID가 있습니다. -
모든 사이트의 기본값은
이미지가저장되는 Ceph 풀에 해당하는 images 입니다. -
2bd882e7-1da0-4078-97fe-f1bb81f61b00은 이미지 UUID에 해당합니다. UUID는 위치에 관계없이 지정된 이미지에 대해 동일합니다. -
메타데이터는 이 위치가 매핑되는 Glance 저장소를 보여줍니다. 이 예제에서는 중앙 허브 사이트인
default_backend에 매핑됩니다.
-
4.3.11. 이미지 서비스 API 추가 링크 복사링크가 클립보드에 복사되었습니다!
관리자는 OpenShift(RHOSO)의 Red Hat OpenStack Services에 새 이미지 서비스 API(glanceAPI)를 추가하여 여러 워크로드를 지원하거나 기존 glanceAPI 및 백엔드 서비스의 라이프사이클을 유지 관리할 수 있습니다. 예를 들어 배포에 Red Hat Ceph Storage와 같은 분할 레이아웃과 NFS와 같은 단일 레이아웃이 있는 백엔드가 있는 경우 PVC(PersistentVolumeClaims)와 같은 구성 요소에 영향을 미치기 때문에 단일 레이아웃을 변경하거나 레이아웃을 분할 할 수 없습니다. 대신 새로운 glanceAPI 를 추가하여 백엔드 간에 전환할 수 있습니다.
프로세스
OpenStackControlPlaneCR 파일openstack_control_plane.yaml을 열고glance템플릿에 매개변수를 추가하여 새로운glanceAPI를 구성합니다. 다음 예제에는 Object Storage 서비스(swift)를 백엔드로 사용하는 기존기본API가 있으며, 새default1API를 배포하도록OpenStackControlPlane를 업데이트합니다.... apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane spec: glance: template: databaseInstance: openstack keystoneEndpoint: default glanceAPIs: default: customServiceConfig: | [DEFAULT] enabled_backends = default_backend:swift [glance_store] default_backend = default_backend [default_backend] swift_store_create_container_on_put = True swift_store_auth_version = 3 swift_store_auth_address = {{ .KeystoneInternalURL }} swift_store_endpoint_type = internalURL swift_store_user = service:glance swift_store_key = {{ .ServicePassword }} preserveJobs: false replicas: 3 default1: type: single replicas: 1 storage: storageRequest: 10G ...컨트롤 플레인을 업데이트합니다.
$ oc apply -f openstack_control_plane.yaml -n openstackCryostat가
OpenStackControlPlaneCR과 관련된 리소스를 생성할 때까지 기다립니다. 다음 명령을 실행하여 상태를 확인합니다.$ oc get openstackcontrolplane -n openstack상태가 "Setup complete"인 경우
OpenStackControlPlane리소스가 생성됩니다.작은 정보get명령의 끝에-w옵션을 추가하여 배포 진행 상황을 추적합니다.
4.3.12. 이미지 서비스 API 해제 링크 복사링크가 클립보드에 복사되었습니다!
관리자가 기존 이미지 서비스 API(glanceAPI)를 해제하려면 다음을 수행해야 합니다.
-
glanceAPICR 및 관련 오브젝트(예: pods 및StatefulSets)를 삭제합니다. -
active
glanceAPI를 가리키도록keystoneEndpoint를 업데이트합니다.
OpenStackControlPlane의 유일한 glanceAPI 인 경우 glanceAPI 를 삭제할 수 없으며, CR 파일의 OpenStackControlPlane keystoneEndpoint 매개변수를 존재하지 않는 glanceAPI 로 가리킬 수 없습니다.
glanceAPI 를 제거하면 API와 연결된 PVC(PersistentVolumeClaims)가 보존되므로 필요한 경우 이전 설정으로 API를 다시 추가할 수 있습니다.
프로세스
한 개의
glanceAPI가OpenStackControlPlane에 배포되었는지 확인합니다.$ oc -n openstack get oscp $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.glanceAPIs}' | jqKeystone 카탈로그에 등록된 현재
glanceAPI를 확인합니다.$ oc -n openstack get oscp $(oc get oscp -o custom-columns=NAME:.metadata.name --no-headers) -o jsonpath='{.spec.glance.template.keystoneEndpoint}'새
glanceAPI에 Keystone 엔드포인트가 있는지 확인합니다.$ oc exec -it openstackclient bash -- openstack endpoint list | grep image제거 중인
glanceAPI가 Keystone 카탈로그에 등록된 API인 경우OpenStackControlPlaneCR 파일인openstack_control_plane.yaml을 열어 API를 해제하고keystoneEndpoint매개변수를 업데이트합니다. 다음 예제에서는default라는glanceAPI를 제거하고keystoneEndpoint매개변수를default1로 업데이트합니다.... apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane spec: glance: template: keystoneEndpoint: default1 glanceAPIs: default1: type: single replicas: 1 storage: storageRequest: 10G ...컨트롤 플레인을 업데이트합니다.
$ oc apply -f openstack_control_plane.yaml -n openstackCryostat가
OpenStackControlPlaneCR과 관련된 리소스를 생성할 때까지 기다립니다. 다음 명령을 실행하여 상태를 확인합니다.$ oc get openstackcontrolplane -n openstack상태가 "Setup complete"인 경우
OpenStackControlPlane리소스가 생성됩니다.작은 정보get명령의 끝에-w옵션을 추가하여 배포 진행 상황을 추적합니다.