이미지 생성 및 관리
이미지 생성 및 관리
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.
Jira에서 문서 피드백 제공
문제 생성 양식을 사용하여 문서에 대한 피드백을 제공합니다. Jira 문제는 Red Hat OpenStack Platform Jira 프로젝트에서 생성되어 피드백의 진행 상황을 추적할 수 있습니다.
- Jira에 로그인했는지 확인합니다. Jira 계정이 없는 경우 피드백을 제출할 계정을 생성합니다.
- 다음 링크를 클릭하여 문제 생성 페이지를 엽니다. 문제 생성
- 요약 및 설명 필드를 작성합니다. 설명 필드에 문서 URL, 장 또는 섹션 번호, 문제에 대한 자세한 설명을 포함합니다. 양식의 다른 필드를 수정하지 마십시오.
- 생성을 클릭합니다.
1장. 이미지 서비스(glance)
RHOSP(Red Hat OpenStack Platform)에서 이미지 및 스토리지를 관리합니다.
가상 머신 이미지는 부팅 가능한 운영 체제가 설치된 가상 디스크가 포함된 파일입니다. 가상 시스템 이미지는 다양한 형식으로 지원됩니다. RHOSP에서는 다음 형식을 사용할 수 있습니다.
-
RAW
- 구조화되지 않은 디스크 이미지 형식입니다. -
QCOW2
- QEMU 에뮬레이터에서 지원하는 디스크 형식입니다. 이 형식에는 QCOW2v3(때로는 QCOW3이라고 함)이 포함되며 QEMU 1.1 이상이 필요합니다. -
ISO
- 바이너리 파일에 저장된 디스크에 있는 데이터의 섹터별 사본입니다. -
AKI
- Amazon 커널 이미지를 나타냅니다. -
AMI
- Amazon 시스템 이미지를 나타냅니다. -
ARI
- Amazon RAMDisk 이미지를 나타냅니다. -
VDI
- VirtualBox 가상 시스템 모니터 및 QEMU 에뮬레이터에서 지원하는 디스크 형식입니다. -
VHD
- VMware, VirtualBox 등의 가상 시스템 모니터에서 사용하는 일반 디스크 형식입니다. -
PLOOP
- Virtuozzo에서 OS 컨테이너를 실행하기 위해 지원하고 사용하는 디스크 형식입니다. -
OVA
- 이미지 서비스(glance)에 저장된 항목이 OVA tar 아카이브 파일임을 나타냅니다. -
DOCKER
- Image 서비스(glance)에 저장된 것이 컨테이너 파일 시스템의 Docker tar 아카이브임을 나타냅니다.
ISO
는 일반적으로 가상 시스템 이미지 형식으로 간주되지 않지만 ISO에는 설치된 운영 체제가 있는 부팅 가능한 파일 시스템이 포함되어 있기 때문에 다른 가상 시스템 이미지 파일과 동일한 방식으로 사용합니다.
공식 Red Hat Enterprise Linux 클라우드 이미지를 다운로드하려면 계정에 유효한 Red Hat Enterprise Linux 서브스크립션이 있어야 합니다.
고객 포털에 로그인하지 않은 경우 Red Hat 계정 자격 증명을 입력해야 하는 프롬프트가 열립니다.
1.1. 이미지 서비스 이해
RHOSP(Red Hat OpenStack Platform) 이미지 서비스(glance) 기능.
1.1.1. 지원되는 이미지 서비스 백엔드
다음 Image 서비스(glance) 백엔드 시나리오가 지원됩니다.
- Ceph를 사용할 때 RBD는 기본 백엔드입니다. 자세한 내용은 Advanced Overcloud Customization 가이드의 Ceph Storage 설정을 참조하십시오.
- RBD 다중 저장소. 자세한 내용은 2.1절. “스토리지 에지 아키텍처의 요구 사항”의 내용을 참조하십시오.
오브젝트 스토리지(swift). 자세한 내용은 Advanced Overcloud Customization 가이드의 외부 Object Storage 클러스터 사용을 참조하십시오.
이미지 서비스는 Object Storage 유형 및 백엔드를 기본값으로 사용합니다.
- 블록 스토리지(cinder). 자세한 내용은 Advanced Overcloud Customization 가이드 의 Image 서비스용 cinder 백엔드 구성을 참조하십시오.
NFS. 자세한 내용은 Advanced Overcloud Customization 가이드의 NFS 스토리지 구성을 참조하십시오.
- 중요
NFS는 지원되는 이미지 서비스 배포 옵션이지만 더 강력한 옵션을 사용할 수 있습니다.
NFS는 이미지 서비스에 고유하지 않습니다. 이미지 서비스에 NFS 공유를 마운트하면 이미지 서비스에서 작업을 관리하지 않습니다. 이미지 서비스는 파일 시스템에 데이터를 작성하지만 백엔드가 NFS 공유임을 인식하지 못합니다.
이 유형의 배포에서는 공유가 실패하는 경우 이미지 서비스에서 요청을 다시 시도할 수 없습니다. 즉, 백엔드에서 오류가 발생하면 저장소가 읽기 전용 모드로 전환되거나 로컬 파일 시스템에 데이터를 계속 쓸 수 있습니다. 이 경우 데이터 손실 위험이 있습니다. 이 상황에서 복구하려면 공유를 마운트하고 동기화한 다음 이미지 서비스를 다시 시작해야 합니다. 이러한 이유로 Red Hat은 이미지 서비스 백엔드로 NFS를 권장하지 않습니다.
그러나 NFS를 이미지 서비스 백엔드로 사용하도록 선택하는 경우 다음 모범 사례 중 일부가 위험을 완화하는 데 도움이 될 수 있습니다.
- 신뢰할 수 있는 프로덕션 등급 NFS 백엔드를 사용합니다.
- 컨트롤러 노드와 NFS 백엔드 간에 강력하고 안정적인 연결이 있는지 확인합니다. 계층 2(L2) 네트워크 연결이 권장됩니다.
- 마운트된 공유에 대한 모니터링 및 경고를 포함합니다.
- 기본 파일 시스템 권한을 설정합니다. 저장소로 사용하는 공유 파일 시스템에 쓰기 권한이 있어야 합니다.
- glance-api 프로세스가 실행되는 사용자 및 그룹에 로컬 파일 시스템의 마운트 지점에 대한 쓰기 권한이 없는지 확인합니다. 즉, 프로세스는 마운트 가능한 마운트 실패를 감지하고 쓰기 시도 중에 저장소를 읽기 전용 모드로 설정할 수 있습니다.
1.1.2. 이미지 서명 및 확인
배포자가 이미지에 서명하고 서명과 공개 키 인증서를 이미지 속성으로 저장할 수 있도록 함으로써 이미지 서명 및 확인을 통해 이미지 무결성과 신뢰성을 보호합니다.
이 기능을 활용하여 다음 작업을 수행할 수 있습니다.
- 개인 키를 사용하여 이미지에 서명하고 이미지, 서명 및 공개 키 인증서(확인 메타데이터)에 대한 참조를 업로드합니다. 그런 다음 이미지 서비스는 서명이 유효한지 확인합니다.
- 계산 서비스에 이미지를 생성하고, 계산 서비스에 이미지에 서명하고, 이미지 및 확인 메타데이터를 업로드합니다. 이미지 서비스는 서명이 유효한지 다시 확인합니다.
- 계산 서비스에서 서명된 이미지를 요청합니다. 이미지 서비스는 이미지 및 확인 메타데이터를 제공하므로, 계산 서비스에서 부팅하기 전에 이미지를 검증할 수 있습니다.
이미지 서명 및 확인에 대한 자세한 내용은 OpenStack 키 관리자를 사용하여 시크릿 관리 가이드의 이미지 확인(glance) 을 참조하십시오.
1.1.3. 이미지 변환
이미지 변환은 이미지를 가져오는 동안 작업 API를 호출하여 이미지를 변환합니다.
가져오기 워크플로의 일부로 플러그인은 이미지 변환을 제공합니다. 이 플러그인은 배포자 구성에 따라 활성화 또는 비활성화할 수 있습니다. 따라서 배포자는 배포에 사용할 기본 이미지 형식을 지정해야 합니다.
내부적으로 이미지 서비스는 특정 형식으로 이미지의 비트를 받습니다. 이러한 비트는 임시 위치에 저장됩니다. 그런 다음 플러그인이 트리거되어 이미지를 대상 형식으로 변환하고 최종 대상으로 이동합니다. 작업이 완료되면 임시 위치가 삭제됩니다. 결과적으로 처음에 업로드된 형식은 이미지 서비스에 의해 유지되지 않습니다.
이미지 변환에 대한 자세한 내용은 다음을 참조하십시오. 1.2.8절. “이미지 변환 활성화”
변환은 이미지를 가져올 때만 트리거할 수 있습니다. 이미지를 업로드할 때 실행되지 않습니다. 예를 들면 다음과 같습니다.
$ glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name NAME \ --visibility public \ --import-method web-download \ --uri http://server/image.qcow2
1.1.4. 상호 운용 가능한 이미지 가져오기
상호 운용 가능한 이미지 가져오기 워크플로를 사용하면 다음 두 가지 방법으로 이미지를 가져올 수 있습니다.
-
web-download
(기본값) 방법을 사용하여 URI에서 이미지를 가져옵니다. -
glance-direct
방법을 사용하여 로컬 파일 시스템에서 이미지를 가져옵니다.
1.1.5. 이미지 서비스 캐싱으로 확장성 개선
glance-api 캐싱 메커니즘을 사용하여 이미지 서비스(glance) API 서버에 이미지 복사본을 저장하고 자동으로 검색하여 확장성을 개선합니다. 이미지 서비스 캐싱을 사용하면 glance-api를 여러 호스트에서 실행할 수 있습니다. 즉, 백엔드 스토리지에서 동일한 이미지를 여러 번 검색할 필요가 없습니다. 이미지 서비스 캐싱은 이미지 서비스 작업에 영향을 미치지 않습니다.
Red Hat OpenStack Platform director(tripleo) heat 템플릿을 사용하여 이미지 서비스 캐싱을 구성합니다.
절차
환경 파일에서
glance-api.conf heat 템플릿에서
플레이버
값을keystone+cachemanagement
로 자동 설정하는GlanceCacheEnabled
매개변수 값을true
로 설정합니다.parameter_defaults: GlanceCacheEnabled: true
-
오버클라우드를 재배포할 때
openstack overcloud deploy
명령에 환경 파일을 포함합니다. 선택 사항: 오버클라우드를 재배포할 때 대체 빈도로
glance_cache_pruner
를 조정합니다. 다음 예제에서는 5분의 빈도를 보여줍니다.parameter_defaults: ControllerExtraConfig: glance::cache::pruner::minute: '*/5'
파일 시스템 전체 시나리오를 방지하려면 필요에 따라 빈도를 조정합니다. 대체 빈도를 선택할 때 다음 요소를 포함합니다.
- 환경에 캐시할 파일의 크기입니다.
- 사용 가능한 파일 시스템 공간의 양입니다.
- 환경이 이미지를 캐시하는 빈도입니다.
1.1.6. 이미지 사전 캐싱
RHOSP(Red Hat OpenStack Platform) director는 glance-api
서비스의 일부로 이미지를 사전 캐시할 수 있습니다.
1.1.6.1. 주기적인 이미지 사전 캐싱을 위한 기본 간격 구성
이미지 사전 캐싱의 기본 주기 간격은 300초입니다. 요구 사항에 따라 기본 간격을 늘리거나 줄일 수 있습니다.
절차
요구 사항에 따라 언더클라우드의 환경 파일에
ExtraConfig
매개변수를 사용하여 새 간격을 추가합니다.parameter_defaults: ControllerExtraConfig: glance::config::glance_api_config: DEFAULT/cache_prefetcher_interval: value: '<300>'
<300>을 이미지를 미리 캐시하는 간격으로 원하는 시간(초)으로 바꿉니다.
/home/stack/templates/
의 환경 파일의 간격을 조정한 후stack
사용자로 로그인하고 구성을 배포합니다.$ openstack overcloud deploy --templates \ -e /home/stack/templates/<env_file>.yaml
<env_file>을 추가한
ExtraConfig
설정이 포함된 환경 파일의 이름으로 바꿉니다.중요오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우
-e
옵션을 사용하여 오버클라우드를 원하지 않는 변경을 방지하여 다시 여기에 전달합니다.
openstack overcloud deploy
명령에 대한 자세한 내용은 Director 설치 및 사용 가이드의 Deployment 명령을 참조하십시오.
1.1.6.2. 주기적 작업을 사용하여 이미지 사전 캐시
사전 요구 사항
주기적으로 작업을 사용하여 이미지를 사전 캐시하려면 glance
명령을 사용해야 합니다. 서비스 요청에 응답하는 노드를 숨기는 프록시를 사용하지 마십시오. undercloud에서 _api 서비스가 실행 중인 노드에 직접 연결된 glance
-cache-manageglance_api
서비스가 실행 중인 네트워크에 액세스할 수 없으므로 기본적으로 controller-0
이라고 하는 첫 번째 Overcloud 노드에서 명령을 실행합니다.
다음 전제 조건 절차를 완료하여 올바른 호스트에서 명령을 실행하고 필요한 자격 증명이 있으며 glance- api
컨테이너 내부에서 glance-cache-manage
명령을 실행 중인지 확인합니다.
절차
stack 사용자로 언더클라우드에 로그인하고
controller-0
의 프로비저닝 IP 주소를 식별합니다.(undercloud) [stack@site-undercloud-0 ~]$ openstack server list -f value -c Name -c Networks | grep controller overcloud-controller-1 ctlplane=192.168.24.40 overcloud-controller-2 ctlplane=192.168.24.13 overcloud-controller-0 ctlplane=192.168.24.71 (undercloud) [stack@site-undercloud-0 ~]$
오버클라우드에 인증하려면 기본적으로
/home/stack/overcloudrc
에 저장된 인증 정보를controller-0
에 복사합니다.$ scp ~/overcloudrc heat-admin@192.168.24.71:/home/heat-admin/
controller-0
에 연결합니다.$ ssh heat-admin@192.168.24.71
controller-0
에서heat-admin
사용자로glance_api 서비스의
IP 주소를 식별합니다. 다음 예에서 IP 주소는172.25.1.105
입니다.(overcloud) [root@controller-0 ~]# grep -A 10 '^listen glance_api' /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg listen glance_api server central-controller0-0.internalapi.redhat.local 172.25.1.105:9292 check fall 5 inter 2000 rise 2
glance-cache-manage
명령은glance_api
컨테이너에서만 사용할 수 있으므로 Overcloud에 인증할 환경 변수가 이미 설정된 해당 컨테이너에 대해 실행할 스크립트를 생성합니다. 다음 콘텐츠를 사용하여controller-0
의/home/heat-admin
에glance_pod.sh
라는 스크립트를 생성합니다.sudo podman exec -ti \ -e NOVA_VERSION=$NOVA_VERSION \ -e COMPUTE_API_VERSION=$COMPUTE_API_VERSION \ -e OS_USERNAME=$OS_USERNAME \ -e OS_PROJECT_NAME=$OS_PROJECT_NAME \ -e OS_USER_DOMAIN_NAME=$OS_USER_DOMAIN_NAME \ -e OS_PROJECT_DOMAIN_NAME=$OS_PROJECT_DOMAIN_NAME \ -e OS_NO_CACHE=$OS_NO_CACHE \ -e OS_CLOUDNAME=$OS_CLOUDNAME \ -e no_proxy=$no_proxy \ -e OS_AUTH_TYPE=$OS_AUTH_TYPE \ -e OS_PASSWORD=$OS_PASSWORD \ -e OS_AUTH_URL=$OS_AUTH_URL \ -e OS_IDENTITY_API_VERSION=$OS_IDENTITY_API_VERSION \ -e OS_COMPUTE_API_VERSION=$OS_COMPUTE_API_VERSION \ -e OS_IMAGE_API_VERSION=$OS_IMAGE_API_VERSION \ -e OS_VOLUME_API_VERSION=$OS_VOLUME_API_VERSION \ -e OS_REGION_NAME=$OS_REGION_NAME \ glance_api /bin/bash
overcloudrc
파일을 가져오고 필요한 환경 변수를 사용하여glance_pod.sh
스크립트를 실행하여 overcloud 컨트롤러 노드를 인증하는 데 필요한 환경 변수를 사용하여glance_api
컨테이너에 실행합니다.[heat-admin@controller-0 ~]$ source overcloudrc (overcloudrc) [heat-admin@central-controller-0 ~]$ bash glance_pod.sh ()[glance@controller-0 /]$
glance image-list
와 같은 명령을 사용하여 컨테이너에서 Overcloud에 대해 인증된 명령을 실행할 수 있는지 확인합니다.()[glance@controller-0 /]$ glance image-list +--------------------------------------+----------------------------------+ | ID | Name | +--------------------------------------+----------------------------------+ | ad2f8daf-56f3-4e10-b5dc-d28d3a81f659 | cirros-0.4.0-x86_64-disk.img | +--------------------------------------+----------------------------------+ ()[glance@controller-0 /]$
절차
admin 사용자로 캐시할 이미지를 대기열에 지정합니다.
$ glance-cache-manage --host=<host_ip> queue-image <image_id>
-
<host_ip>를
glance-api
컨테이너가 실행 중인 컨트롤러 노드의 IP 주소로 바꿉니다. <image_id>를 대기열에 추가할 이미지의 ID로 바꿉니다.
사전 캐시하려는 이미지를 큐에 추가한 경우
cache_images
주기적 작업은 대기 중인 모든 이미지를 동시에 가져오기합니다.참고이미지 캐시는 각 노드에 로컬이기 때문에 Red Hat OpenStack Platform이 HA(3, 5 또는 7 컨트롤러 사용)와 함께 배포되면
glance-cache-manage
명령을 실행할 때--host
옵션으로 호스트 주소를 지정해야 합니다.
-
<host_ip>를
다음 명령을 실행하여 이미지 캐시의 이미지를 확인합니다.
$ glance-cache-manage --host=<host_ip> list-cached
<host_ip>를 사용자 환경에 있는 호스트의 IP 주소로 바꿉니다.
관련 정보
다음과 같은 목적으로 추가 glance-cache-manage
명령을 사용할 수 있습니다.
-
list-cached
: 현재 캐시된 모든 이미지를 나열합니다. -
list-queued
: 현재 캐싱에 대기 중인 모든 이미지를 나열합니다. -
캐싱을 위해 이미지를 대기열에 대기하는
queue-image
. -
delete-cached-image
를 사용하여 캐시에서 이미지를 제거합니다. -
delete-all-cached-images
를 사용하여 캐시에서 모든 이미지를 제거합니다. -
delete-queued-image
를 사용하여 캐시 큐에서 이미지를 삭제합니다. -
캐시 큐에서 모든 이미지를 삭제하려면
delete-all-queued-images
를 삭제합니다.
1.1.7. 이미지 서비스 API를 사용하여 스파스 이미지 업로드 활성화
Image 서비스(glance) API를 사용하면 스파스 이미지 업로드를 사용하여 네트워크 트래픽을 줄이고 스토리지 공간을 절약할 수 있습니다. 이 기능은 DCN(Distributed Compute Node) 환경에서 특히 유용합니다. 스파스 이미지 파일을 사용하면 이미지 서비스에서 null 바이트 시퀀스를 작성하지 않습니다. 이미지 서비스는 지정된 오프셋을 사용하여 데이터를 기록합니다. 스토리지 백엔드는 이러한 오프셋을 실제로 스토리지 공간을 사용하지 않는 null 바이트로 해석합니다.
제한
- 스파스 이미지 업로드는 Ceph RBD에서만 지원됩니다.
- 파일 시스템에는 스파스 이미지 업로드가 지원되지 않습니다.
- 클라이언트와 이미지 서비스 API 간 전송 중에 스파스 값은 유지 관리되지 않습니다. 이미지는 이미지 서비스 API 수준에서 스파스됩니다.
사전 요구 사항
- RHOSP(Red Hat OpenStack Platform) 배포는 이미지 서비스 백엔드에 RBD를 사용합니다.
절차
-
stack
사용자로 Undercloud 노드에 로그인합니다. stackrc
인증 정보 파일을 소싱합니다.$ source stackrc
다음 콘텐츠를 사용하여 환경 파일을 생성합니다.
parameter_defaults: GlanceSparseUploadEnabled: true
다른 환경 파일을 사용하여 스택에 새 환경 파일을 추가하고 오버클라우드를 배포합니다.
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <new_environment_file>.yaml \ …
이미지 업로드에 대한 자세한 내용은 1.2.2절. “이미지 업로드” 을 참조하십시오.
검증
이미지를 가져오고 크기를 확인하여 스파스 이미지 업로드를 확인할 수 있습니다.
이미지 파일을 로컬로 다운로드합니다.
$ wget <file_location>/<file_name>
&
lt;file_location
>을 파일 위치로 바꿉니다. <file_name
>을 파일 이름으로 바꿉니다.다음 절차에서는 예제 명령을 사용합니다. 적절한 경우 값을 해당 환경의 값으로 바꿉니다.
$ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
업로드할 이미지의 디스크 크기 및 가상 크기를 확인합니다.
qemu-img info <file_name>
다음 절차에서는 예제 명령을 사용합니다. 적절한 경우 값을 해당 환경의 값으로 바꿉니다.
$ qemu-img info CentOS-6-x86_64-GenericCloud-1508.qcow2 image: CentOS-6-x86_64-GenericCloud-1508.qcow2 file format: qcow2 virtual size: 8 GiB (8589934592 bytes) disk size: 1.09 GiB cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 1
이미지를 가져옵니다.
$ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
- 이미지 ID를 기록합니다. 후속 단계에서 필요합니다.
이미지를 가져오고 활성 상태인지 확인합니다.
$ openstack image show <image_id>
Ceph Storage 노드에서 이미지 크기가 1 단계의 출력에서 가상 크기보다 작은지 확인합니다.
$ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }' 1.03906 GB
선택 사항: 컨트롤러 노드의 Glance 구성 파일에
rbd_thin_provisioning
이 구성되었는지 확인할 수 있습니다.SSH를 사용하여 컨트롤러 노드에 액세스합니다.
$ ssh -A -t heat-admin@<controller_node_IP_address>
해당 컨트롤러 노드에서
rbd_thin_provisioning
이True
와 같은지 확인합니다.$ sudo podman exec -it glance_api sh -c 'grep ^rbd_thin_provisioning /etc/glance/glance-api.conf'
1.1.8. Metadef API 보안
RHOSP(Red Hat OpenStack Platform)에서 사용자는 키 값 쌍을 정의하고 메타데이터를 메타데이터(metadef) API로 태그할 수 있습니다. 현재는 사용자가 생성할 수 있는 메타 재정의 네임스페이스, 오브젝트, 속성, 리소스 또는 태그 수에 제한이 없습니다.
Metadef API는 권한 없는 사용자에게 정보를 유출할 수 있습니다. 악의적인 사용자는 제한 부족을 악용하고 무제한 리소스로 Image 서비스(glance) 데이터베이스를 채울 수 있습니다. 그러면 DoS(서비스 거부) 스타일 공격이 발생할 수 있습니다.
이미지 서비스 정책은 메타 파일 API를 제어합니다. 그러나 metadef API의 기본 정책 설정을 사용하면 모든 사용자가 metadef 정보를 생성하거나 읽을 수 있습니다. metadef 리소스는 소유자와 격리되지 않으므로 내부 인프라 세부 정보 또는 고객 이름과 같이 잠재적으로 민감한 이름의 메타 파일 리소스는 악의적인 사용자에게 해당 정보를 노출할 수 있습니다.
1.1.8.1. metadef API를 제한하도록 정책 구성
Image 서비스(glance)의 보안을 강화하려면 메타 파일 수정 API를 RHOSP(Red Hat OpenStack Platform) 배포에서 기본적으로 admin 전용 액세스로 제한합니다.
절차
클라우드 관리자로서 Image 서비스 metadef API에 대한 정책 재정의를 포함하려면
lock-down-glance-metadef-api.yaml
과 같은 별도의 heat 템플릿 환경 파일을 생성합니다.... parameter_defaults: GlanceApiPolicies: { glance-metadef_default: { key: 'metadef_default', value: '' }, glance-metadef_admin: { key: 'metadef_admin', value: 'role:admin' }, glance-get_metadef_namespace: { key: 'get_metadef_namespace', value: 'rule:metadef_default' }, glance-get_metadef_namespaces: { key: 'get_metadef_namespaces', value: 'rule:metadef_default' }, glance-modify_metadef_namespace: { key: 'modify_metadef_namespace', value: 'rule:metadef_admin' }, glance-add_metadef_namespace: { key: 'add_metadef_namespace', value: 'rule:metadef_admin' }, glance-delete_metadef_namespace: { key: 'delete_metadef_namespace', value: 'rule:metadef_admin' }, glance-get_metadef_object: { key: 'get_metadef_object', value: 'rule:metadef_default' }, glance-get_metadef_objects: { key: 'get_metadef_objects', value: 'rule:metadef_default' }, glance-modify_metadef_object: { key: 'modify_metadef_object', value: 'rule:metadef_admin' }, glance-add_metadef_object: { key: 'add_metadef_object', value: 'rule:metadef_admin' }, glance-delete_metadef_object: { key: 'delete_metadef_object', value: 'rule:metadef_admin' }, glance-list_metadef_resource_types: { key: 'list_metadef_resource_types', value: 'rule:metadef_default' }, glance-get_metadef_resource_type: { key: 'get_metadef_resource_type', value: 'rule:metadef_default' }, glance-add_metadef_resource_type_association: { key: 'add_metadef_resource_type_association', value: 'rule:metadef_admin' }, glance-remove_metadef_resource_type_association: { key: 'remove_metadef_resource_type_association', value: 'rule:metadef_admin' }, glance-get_metadef_property: { key: 'get_metadef_property', value: 'rule:metadef_default' }, glance-get_metadef_properties: { key: 'get_metadef_properties', value: 'rule:metadef_default' }, glance-modify_metadef_property: { key: 'modify_metadef_property', value: 'rule:metadef_admin' }, glance-add_metadef_property: { key: 'add_metadef_property', value: 'rule:metadef_admin' }, glance-remove_metadef_property: { key: 'remove_metadef_property', value: 'rule:metadef_admin' }, glance-get_metadef_tag: { key: 'get_metadef_tag', value: 'rule:metadef_default' }, glance-get_metadef_tags: { key: 'get_metadef_tags', value: 'rule:metadef_default' }, glance-modify_metadef_tag: { key: 'modify_metadef_tag', value: 'rule:metadef_admin' }, glance-add_metadef_tag: { key: 'add_metadef_tag', value: 'rule:metadef_admin' }, glance-add_metadef_tags: { key: 'add_metadef_tags', value: 'rule:metadef_admin' }, glance-delete_metadef_tag: { key: 'delete_metadef_tag', value: 'rule:metadef_admin' }, glance-delete_metadef_tags: { key: 'delete_metadef_tags', value: 'rule:metadef_admin' } } …
정책 및 정책 구문에 대한 자세한 내용은 이 정책 장을 참조하십시오.
오버클라우드를 배포할 때
-e
옵션을 사용하여 배포 명령에 정책 덮어쓰기가 포함된 환경 파일을 포함합니다.$ openstack overcloud deploy -e lock-down-glance-metadef-api.yaml
1.1.8.2. metadef API 활성화
이전에 메타데이터 정의(metadef) API를 제한하거나 새 기본값을 완화하려는 경우 메타 파일 수정 정책을 재정의하여 사용자가 해당 리소스를 업데이트할 수 있습니다.
metadef API에 대한 쓰기 액세스 권한을 사용하는 사용자가 클라우드 관리자는 모든 사용자가 해당 API에 액세스할 수 있도록 할 수 있습니다. 그러나 이러한 유형의 구성에서는 의도치 않게 민감한 리소스 이름(예: 고객 이름 및 내부 프로젝트)을 유출할 수 있습니다. 관리자는 모든 사용자에게 읽기 액세스만 활성화되어 있더라도 취약할 수 있는 이전에 생성된 리소스를 식별하도록 시스템을 감사해야 합니다.
절차
클라우드 관리자로 언더클라우드에 로그인하고 정책을 재정의할 파일을 만듭니다. 예를 들면 다음과 같습니다.
$ cat open-up-glance-api-metadef.yaml
metadef API 읽기-쓰기 액세스를 모든 사용자에게 허용하도록 정책 덮어쓰기 파일을 구성합니다.
GlanceApiPolicies: { glance-metadef_default: { key: 'metadef_default', value: '' }, glance-get_metadef_namespace: { key: 'get_metadef_namespace', value: 'rule:metadef_default' }, glance-get_metadef_namespaces: { key: 'get_metadef_namespaces', value: 'rule:metadef_default' }, glance-modify_metadef_namespace: { key: 'modify_metadef_namespace', value: 'rule:metadef_default' }, glance-add_metadef_namespace: { key: 'add_metadef_namespace', value: 'rule:metadef_default' }, glance-delete_metadef_namespace: { key: 'delete_metadef_namespace', value: 'rule:metadef_default' }, glance-get_metadef_object: { key: 'get_metadef_object', value: 'rule:metadef_default' }, glance-get_metadef_objects: { key: 'get_metadef_objects', value: 'rule:metadef_default' }, glance-modify_metadef_object: { key: 'modify_metadef_object', value: 'rule:metadef_default' }, glance-add_metadef_object: { key: 'add_metadef_object', value: 'rule:metadef_default' }, glance-delete_metadef_object: { key: 'delete_metadef_object', value: 'rule:metadef_default' }, glance-list_metadef_resource_types: { key: 'list_metadef_resource_types', value: 'rule:metadef_default' }, glance-get_metadef_resource_type: { key: 'get_metadef_resource_type', value: 'rule:metadef_default' }, glance-add_metadef_resource_type_association: { key: 'add_metadef_resource_type_association', value: 'rule:metadef_default' }, glance-remove_metadef_resource_type_association: { key: 'remove_metadef_resource_type_association', value: 'rule:metadef_default' }, glance-get_metadef_property: { key: 'get_metadef_property', value: 'rule:metadef_default' }, glance-get_metadef_properties: { key: 'get_metadef_properties', value: 'rule:metadef_default' }, glance-modify_metadef_property: { key: 'modify_metadef_property', value: 'rule:metadef_default' }, glance-add_metadef_property: { key: 'add_metadef_property', value: 'rule:metadef_default' }, glance-remove_metadef_property: { key: 'remove_metadef_property', value: 'rule:metadef_default' }, glance-get_metadef_tag: { key: 'get_metadef_tag', value: 'rule:metadef_default' }, glance-get_metadef_tags: { key: 'get_metadef_tags', value: 'rule:metadef_default' }, glance-modify_metadef_tag: { key: 'modify_metadef_tag', value: 'rule:metadef_default' }, glance-add_metadef_tag: { key: 'add_metadef_tag', value: 'rule:metadef_default' }, glance-add_metadef_tags: { key: 'add_metadef_tags', value: 'rule:metadef_default' }, glance-delete_metadef_tag: { key: 'delete_metadef_tag', value: 'rule:metadef_default' }, glance-delete_metadef_tags: { key: 'delete_metadef_tags', value: 'rule:metadef_default' } }
참고rule:metadef_default
를 사용하도록 모든 metadef 정책을 구성해야 합니다. 정책 및 정책 구문에 대한 자세한 내용은 이 정책 장을 참조하십시오.오버클라우드를 배포할 때
-e
옵션을 사용하여 배포 명령에 새 정책 파일을 포함합니다.$ openstack overcloud deploy -e open-up-glance-api-metadef.yaml
1.2. 이미지 관리
이미지 서비스(glance)는 디스크 및 서버 이미지에 대한 검색, 등록 및 전달 서비스를 제공합니다. 서버 이미지를 복사 또는 스냅숏하고 즉시 저장할 수 있는 기능을 제공합니다. 저장된 이미지를 템플릿으로 사용하여 서버 운영 체제를 설치하고 개별적으로 서비스를 구성하는 것보다 새 서버를 빠르고 일관되게 수행할 수 있습니다.
1.2.1. 이미지 생성
Red Hat Enterprise Linux 7 ISO 파일, Red Hat Enterprise Linux 6 ISO 파일 또는 Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
1.2.1.1. Red Hat OpenStack Platform에서 KVM 게스트 이미지 사용
준비된 RHEL KVM 게스트 QCOW2 이미지를 사용할 수 있습니다.
이러한 이미지는 cloud-init
로 구성되며, SSH 키가 올바르게 작동하기 위해 ec2 호환 메타데이터 서비스를 활용해야 합니다.
준비된 Windows KVM 게스트 QCOW2 이미지를 사용할 수 없습니다.
KVM 게스트 이미지의 경우:
-
이미지의
root
계정은 비활성화되지만sudo
액세스는cloud-user
라는 특수 사용자에게 부여됩니다. -
이 이미지에 대해 설정된
root
암호가 없습니다.
루트
암호는 두 번째 필드에 ✓을 배치하여 /etc/shadow
에
잠깁니다.
RHOSP 인스턴스의 경우 RHOSP 대시보드 또는 명령줄에서 ssh 키 쌍을 생성하고 해당 키 조합을 사용하여 인스턴스에 대한 SSH 공용 인증을 root로 수행합니다.
인스턴스가 시작되면 이 공개 키가 삽입됩니다. 그런 다음 키 쌍을 만들 때 다운로드한 개인 키를 사용하여 인증할 수 있습니다.
사용자 지정 Red Hat Enterprise Linux 또는 Windows 이미지를 생성하려면 Red Hat Enterprise Linux 7 이미지 생성,Red Hat Enterprise Linux 6 이미지 생성 또는 1.2.1.2.3절. “Windows 이미지 만들기” 을 참조하십시오.
1.2.1.2. 사용자 지정 Red Hat Enterprise Linux 또는 Windows 이미지 만들기
사전 요구 사항
- Linux 호스트 시스템으로 이미지를 생성합니다. 언더클라우드 또는 오버클라우드를 제외한 Linux 패키지를 설치하고 실행할 수 있는 모든 시스템이 될 수 있습니다.
advanced-virt 리포지토리가 활성화되어 있습니다.
$ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
libvirt, virt-manager: 게스트 운영 체제를 생성하는 데 필요한 모든 패키지를 설치합니다.
$ sudo dnf module install -y virt
가상 머신 이미지에 액세스하고 수정하기 위한 툴 세트를 설치하는 libguestfs 툴:
$ sudo dnf install -y libguestfs-tools-c
- Red Hat Enterprise Linux 7 또는 6 ISO 파일. 자세한 내용은 RHEL 7.2 바이너리 DVD 또는 RHEL 6.8 바이너리 DVD 또는 Windows ISO 파일을 참조하십시오. Windows ISO 파일이 없는 경우 Microsoft evaluation Center 를 참조하여 평가 이미지를 다운로드합니다.
-
텍스트 편집기 -
킥스타트
파일을 변경하려는 경우(RHEL만 해당).
언더클라우드에 libguestfs-tools
패키지를 설치하는 경우 iscsid.socket
을 비활성화하여 언더클라우드의 tripleo_iscsid
서비스와 포트 충돌을 방지합니다.
$ sudo systemctl disable --now iscsid.socket
1.2.1.2.1. Red Hat Enterprise Linux 7 이미지 만들기
Red Hat Enterprise Linux 7 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
virt-install
을 사용하여 설치를 시작합니다.[root@host]# qemu-img create -f qcow2 rhel7.qcow2 8G [root@host]# virt-install --virt-type kvm --name rhel7 --ram 2048 \ --cdrom /tmp/rhel-server-7.2-x86_64-dvd.iso \ --disk rhel7.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=0.0.0.0 \ --noautoconsole --os-type=linux --os-variant=rhel7
이 명령은 인스턴스를 시작하고 설치 프로세스를 시작합니다.
참고인스턴스가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer rhel7
인스턴스를 구성합니다.
- 초기 설치 프로그램 부팅 메뉴에서 Install Red Hat Enterprise Linux 7 을 선택합니다.
- 적절한 Language(언어) 및 Keyboard ( 키보드) 옵션을 선택합니다.
- 설치에서 사용하는 장치 유형에 대한 메시지가 표시되면 자동 감지 설치 미디어를 선택합니다.
- 설치 대상 유형을 묻는 메시지가 표시되면 로컬 표준 디스크 를 선택합니다. 다른 스토리지 옵션은 Automatically configure partitioning (파티션 자동 구성)을 선택합니다.
- 소프트웨어 선택의 경우 Minimal Install (최소 설치)을 선택합니다.
- 네트워크 및 호스트 이름의 경우 네트워크로 eth0 을 선택하고 장치에 대한 호스트 이름을 선택합니다. 기본 호스트 이름은 localhost.localdomain 입니다.
Root Password (루트 암호) 필드에 암호를 입력하고 Confirm (확인) 필드에 동일한 암호를 다시 입력합니다.
- 결과
- 설치 프로세스가 완료되고 Complete! 화면이 표시됩니다.
- 설치가 완료되면 인스턴스를 재부팅하고 root 사용자로 로그인합니다.
다음 값만 포함하도록
/etc/sysconfig/network-scripts/ifcfg-eth0
파일을 업데이트합니다.TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 시스템을 재부팅합니다.
Content Delivery Network(콘텐츠 전달 네트워크)에 시스템을 등록합니다.
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-7-server-rpms
시스템을 업데이트합니다.
# dnf -y update
cloud-init
패키지를 설치합니다.# dnf install -y cloud-utils-growpart cloud-init
cloud_init_modules
에서/etc/cloud/cloud.cfg
구성 파일을 편집하고 다음을 추가합니다.- resolv-conf
The
resolv-conf
옵션은 인스턴스가 처음 부팅될 때resolv.conf
를 자동으로 구성합니다. 이 파일에는이름 서버
,도메인
및 기타 옵션과 같은 인스턴스와 관련된 정보가 포함되어 있습니다.EC2 메타데이터 서비스에 액세스하는 데 문제가 발생하지 않도록
/etc/sysconfig/network
에 다음 행을 추가합니다.NOZEROCONF=yes
콘솔 메시지가 대시보드의 Log 탭 및
nova console-log
출력에 표시되는지 확인하려면/etc/default/grub
파일에 다음 부팅 옵션을 추가합니다.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
grub2-mkconfig
명령을 실행합니다.# grub2-mkconfig -o /boot/grub2/grub.cfg
출력은 다음과 같습니다.
Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.7.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.7.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
결과 이미지에 이 인스턴스의 서브스크립션 세부 정보가 포함되지 않도록 인스턴스를 등록 취소합니다.
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
인스턴스의 전원을 끕니다.
# poweroff
virt-sysprep
명령을 사용하여 이미지를 재설정하고 정리하여 문제 없이 인스턴스를 생성할 수 있도록 합니다.[root@host]# virt-sysprep -d rhel7
디스크 이미지 내의 여유 공간을 호스트 내의 여유 공간으로 다시 변환하여 이미지 크기를 줄입니다.
[root@host]# virt-sparsify --compress /tmp/rhel7.qcow2 rhel7-cloud.qcow2
그러면 명령이 실행되는 위치에 새
rhel7-cloud.qcow2
파일이 생성됩니다.
rhel7-cloud.qcow2
이미지 파일을 이미지 서비스에 업로드할 준비가 되었습니다. 대시보드를 사용하여 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 1.2.2절. “이미지 업로드” 을 참조하십시오.
1.2.1.2.2. Red Hat Enterprise Linux 6 이미지 만들기
Red Hat Enterprise Linux 6 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
virt-install
을 사용하여 설치를 시작합니다.[root@host]# qemu-img create -f qcow2 rhel6.qcow2 4G [root@host]# virt-install --connect=qemu:///system --network=bridge:virbr0 \ --name=rhel6 --os-type linux --os-variant rhel6 \ --disk path=rhel6.qcow2,format=qcow2,size=10,cache=none \ --ram 4096 --vcpus=2 --check-cpu --accelerate \ --hvm --cdrom=rhel-server-6.8-x86_64-dvd.iso
이 명령은 인스턴스를 시작하고 설치 프로세스를 시작합니다.
참고인스턴스가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer rhel6
인스턴스를 구성합니다.
초기 설치 프로그램 부팅 메뉴에서 Install or upgrade an existing system 을 선택하고 설치 프롬프트를 따릅니다. 기본값을 수락합니다.
디스크 설치 프로그램은 설치 전에 설치 미디어를 테스트할 수 있는 옵션을 제공합니다. OK(확인) 를 선택하여 테스트 없이 진행하려면 테스트 또는 Skip 를 실행합니다.
- 적절한 Language(언어) 및 Keyboard ( 키보드) 옵션을 선택합니다.
- 설치에서 사용하는 장치 유형을 묻는 메시지가 표시되면 Basic Storage Devices (기본 스토리지 장치)를 선택합니다.
-
장치에 대한 호스트 이름을 선택합니다. 기본 호스트 이름은
localhost.localdomain
입니다. -
시간대 와
루트
암호를 설정합니다. - 디스크의 공간을 기준으로 원하는 설치 유형을 원하는 옵션에서 원하는 설치 유형을 선택하십시오.
- SSH 서버를 설치하는 Basic Server install을 선택합니다.
- 설치 프로세스가 완료되고 축하합니다. Red Hat Enterprise Linux 설치 화면이 표시됩니다.
-
인스턴스를 재부팅하고
root 사용자로 로그인합니다
. 다음 값만 포함하도록
/etc/sysconfig/network-scripts/ifcfg-eth0
파일을 업데이트합니다.TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 시스템을 재부팅합니다.
Content Delivery Network에 시스템을 등록합니다.
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-6-server-rpms
시스템을 업데이트합니다.
# dnf -y update
cloud-init
패키지를 설치합니다.# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
구성 파일을 편집하고cloud_init_modules
아래에 다음 콘텐츠를 추가합니다.- resolv-conf
The
resolv-conf
옵션은 인스턴스가 처음 부팅될 때resolv.conf
구성 파일을 자동으로 구성합니다. 이 파일에는이름 서버
,도메인
및 기타 옵션과 같은 인스턴스와 관련된 정보가 포함되어 있습니다.네트워크 문제를 방지하려면
/etc/udev/rules.d/75-persistent-net-generator.rules
:# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
이렇게 하면
/etc/udev/rules.d/70-persistent-net.rules
파일이 생성되지 않습니다./etc/udev/rules.d/70-persistent-net.rules
가 생성되면 스냅샷에서 부팅할 때 네트워킹이 제대로 작동하지 않을 수 있으며 네트워크 인터페이스가eth
로 생성되고 IP 주소가 할당되지 않습니다.0 대신 eth
1EC2 메타데이터 서비스에 액세스하는 데 문제가 발생하지 않도록
/etc/sysconfig/network
에 다음 행을 추가합니다.NOZEROCONF=yes
콘솔 메시지가 대시보드의 Log 탭 및
nova console-log
출력에 표시되는지 확인하려면/etc/grub.conf 파일에 다음 부팅 옵션을 추가합니다.
console=tty0 console=ttyS0,115200n8
결과 이미지에 이 인스턴스에 대한 동일한 서브스크립션 세부 정보가 포함되지 않도록 가상 머신을 등록 취소합니다.
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
인스턴스의 전원을 끕니다.
# poweroff
virt-sysprep
명령을 사용하여 이미지를 재설정하고 정리하여 문제 없이 인스턴스를 생성할 수 있도록 합니다.[root@host]# virt-sysprep -d rhel6
virt-sparsify
명령을 사용하여 이미지 크기를 줄입니다. 이 명령은 디스크 이미지 내의 사용 가능한 공간을 호스트 내에서 사용 가능한 공간으로 다시 변환합니다.[root@host]# virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2
그러면 명령이 실행되는 위치에 새로운
rhel6-cloud.qcow2
파일이 생성됩니다.참고인스턴스에 적용되는 플레이버의 디스크 공간에 따라 이미지의 파티션 크기를 수동으로 조정해야 합니다.
rhel6-cloud.qcow2
이미지 파일을 이미지 서비스에 업로드할 준비가 되었습니다. 대시보드를 사용하여 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 1.2.2절. “이미지 업로드” 을 참조하십시오.
1.2.1.2.3. Windows 이미지 만들기
Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
절차
virt-install
을 사용하여 설치를 시작합니다.[root@host]# virt-install --name=<name> \ --disk size=<size> \ --cdrom=<path> \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=<ram>
virt-install
매개변수의 다음 값을 교체합니다.- <name>|-Windows 인스턴스에 있는 이름입니다.
- <size>^-디스크 크기(GB)입니다.
- <path>^-Windows 설치 ISO 파일의 경로입니다.
<RAM>|요청된 RAM 크기(MB)입니다.
참고o
s-type=windows
매개 변수는 클록이 Windows 게스트에 맞게 올바르게 구성되었는지 확인하고 Hyper-V 구현 기능을 활성화합니다. 이미지를 이미지 서비스에 업로드하기 전에 이미지 메타데이터에os_type=windows
도 설정해야 합니다.
virt-install
은 기본적으로 게스트 이미지를/var/lib/libvirt/images/
<name>
.qcow2
로 저장합니다. 게스트 이미지를 다른 위치에 유지하려면--disk
옵션의 매개변수를 변경합니다.--disk path=<filename>,size=<size>
<filename>을 인스턴스 이미지를 저장하는 파일의 이름으로 교체하고 경로(선택 사항)로 바꿉니다. 예를 들어
path=win8.qcow2,size=8
은 현재 작업 디렉터리에win8.qcow2
라는 8GB 파일을 생성합니다.작은 정보게스트가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer <name>
Windows 설치 방법에 대한 자세한 내용은 관련 Microsoft 문서를 참조하십시오.
-
새로 설치한 Windows 시스템이 가상화된 하드웨어를 사용할 수 있도록 하려면 VirtIO 드라이버를 설치해야 할 수도 있습니다. 이렇게 하려면 먼저 Windows 인스턴스에 CD-ROM 드라이브로 연결해야 하는 이미지를 설치합니다.
virtio-win
패키지를 설치하려면 VirtIO ISO 이미지를 인스턴스에 추가하고 VirtIO 드라이버를 설치해야 합니다. 자세한 내용은 가상화 구성 및 관리 가이드 의 Windows 가상 머신용 KVM 반가상화 드라이버 설치를 참조하십시오. 구성을 완료하려면 Windows 시스템에서 Cloudbase-Init 을 다운로드하여 실행합니다. Cloudbase-Init 설치가 끝나면 Run Sysprep and Shutdown(시스템 실행 및 종료 ) 확인란을 선택합니다.
Sysprep
툴은 특정 Microsoft 서비스에서 사용하는 OS ID를 생성하여 게스트를 고유하게 만듭니다.중요Red Hat은 Cloudbase-Init에 대한 기술 지원을 제공하지 않습니다. 문제가 발생하면 Cloudbase Solutions Contact Cloudbase Solutions 를 참조하십시오.
Windows 시스템이 종료되면 <name>.qcow2
이미지 파일을 이미지 서비스에 업로드할 준비가 됩니다. 대시보드 또는 명령줄을 사용하여 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 1.2.2절. “이미지 업로드” 을 참조하십시오.
libosinfo data
계산 서비스에는 libosinfo 데이터를 사용하여 기본 장치 모델을 설정하는 지원이 더 이상 사용되지 않습니다. 대신 다음 이미지 메타데이터 속성을 사용하여 인스턴스에 대한 최적의 가상 하드웨어를 구성합니다.
-
os_distro
-
os_version
-
hw_cdrom_bus
-
hw_disk_bus
-
hw_scsi_model
-
hw_vif_model
-
hw_video_model
-
hypervisor_type
이러한 메타데이터 속성에 대한 자세한 내용은 이미지 구성 매개 변수를 참조하십시오.
1.2.2. 이미지 업로드
- 대시보드에서 Project > Compute > Images 를 선택합니다.
- Create Image(이미지 만들기)를 클릭합니다.
- 값을 입력하고 Create Image(이미지 만들기 )를 클릭합니다.
필드 | 참고 |
---|---|
이름 | 이미지의 이름입니다. 이름은 프로젝트 내에서 고유해야 합니다. |
설명 | 이미지를 식별하는 간략한 설명입니다. |
이미지 소스 | 이미지 소스: 이미지 위치 또는 이미지 파일. 선택에 따라 다음 필드가 표시됩니다. |
이미지 위치 또는 이미지 파일 |
|
형식 | 이미지 형식(예: qcow2). |
아키텍처 | 이미지 아키텍처. 예를 들어, i686은 64비트 아키텍처의 경우 32비트 아키텍처 또는 x86_64를 사용합니다. |
최소 디스크 용량(GB) | 이미지를 부팅하는 데 필요한 최소 디스크 크기입니다. 이 필드를 지정하지 않으면 기본값은 0입니다(최소값 없음). |
최소 RAM 용량 (MB) | 이미지를 부팅하는 데 필요한 최소 메모리 크기입니다. 이 필드를 지정하지 않으면 기본값은 0입니다(최소값 없음). |
공용 | 선택하면 이미지를 모든 사용자에게 공용으로 만들고 프로젝트에 액세스할 수 있습니다. |
보호됨 | 선택하면 특정 권한이 있는 사용자만 이 이미지를 삭제할 수 있습니다. |
이미지가 성공적으로 업로드되면 상태가 active
이며 이미지를 사용할 수 있음을 나타냅니다. 이미지 서비스는 업로드를 시작할 때 사용된 ID 서비스 토큰의 수명보다 더 오래 걸리는 큰 이미지를 처리할 수 있습니다. 이는 이미지 서비스가 먼저 ID 서비스에 대한 신뢰를 만들어 업로드가 완료되고 이미지 상태를 업데이트할 때 새 토큰을 가져오고 사용할 수 있기 때문입니다.
glance image-create
명령을 속성
옵션과 함께 사용하여 이미지를 업로드할 수도 있습니다. 명령줄에서 더 많은 값을 사용할 수 있습니다. 전체 목록은 부록 A. 이미지 구성 매개변수 에서 참조하십시오.
1.2.3. 이미지 업데이트
- 대시보드에서 Project > Compute > Images 를 선택합니다.
목록에서 Edit Image (이미지 편집)를 클릭합니다.
참고Edit Image( 이미지 편집) 옵션은
admin
사용자로 로그인할 때만 사용할 수 있습니다.데모
사용자로 로그인하면 Launch an instance (인스턴스 시작) 또는 Create Volume (볼륨 만들기) 옵션이 있습니다.- 필드를 업데이트하고 이미지 업데이트를 클릭합니다. name, description, kernel ID, ramdisk ID, 아키텍처, 형식, 최소 디스크, 최소 RAM, 공용, 보호 값을 업데이트할 수 있습니다.
- 드롭다운 메뉴를 클릭하고 Update Metadata (데이터베이스 업데이트) 옵션을 선택합니다.
- 왼쪽 열의 항목을 오른쪽에 추가하여 메타데이터를 지정합니다. 왼쪽 열에는 Image 서비스 메타데이터 카탈로그의 메타데이터 정의가 있습니다. Other (기타)를 선택하여 선택한 키로 메타데이터를 추가하고 완료되면 Save(저장 )를 클릭합니다.
glance image-update
명령을 속성
옵션과 함께 사용하여 이미지를 업데이트할 수도 있습니다. 명령줄에서 추가 값을 사용할 수 있습니다. 전체 목록은 부록 A. 이미지 구성 매개변수 에서 참조하십시오.
1.2.4. 이미지 가져오기
다음 두 가지 방법 중 하나를 사용하여 이미지를 Image 서비스(glance)로 가져올 수 있습니다.
-
web-download
를 사용하여 URI에서 이미지를 가져옵니다. -
glance-direct
를 사용하여 로컬 파일 시스템에서 이미지를 가져옵니다.
web-download
방법은 기본적으로 활성화되어 있습니다. 클라우드 관리자는 가져오기 방법을 구성합니다. glance import-info
명령을 실행하여 사용 가능한 가져오기 옵션을 나열할 수 있습니다.
1.2.4.1. 원격 URI에서 이미지 가져오기
web-download
방법을 사용하여 원격 URI에서 이미지를 복사할 수 있습니다.
이미지를 생성하고 가져올 이미지의 URI를 지정합니다.
$ glance image-create-via-import \ --container-format <CONTAINER FORMAT> \ --disk-format <DISK-FORMAT> \ --name <NAME> \ --import-method web-download \ --uri <URI>
-
<
CONTAINER FORMAT
>를 이미지에 대해 설정 중인 컨테이너 형식으로 바꿉니다(없음, ami, aki, 베어, ovf, ova, ova, docker). -
<
DISK-FORMAT
>를 이미지에 대해 설정하는 디스크 형식으로 바꿉니다(없음, ami, aki, aki, vhdx, vhdx, vmdk, raw, qcow2, vdi, iso, ploop). -
&
lt;NAME&
gt;을 이미지의 설명 이름으로 바꿉니다. -
<
;URI&
gt;를 이미지의 URI로 바꿉니다.
-
<
glance image-show <IMAGE_ID> 명령을 사용하여 이미지
의 가용성을 확인할 수 있습니다.-
&
lt;IMAGE_ID&
gt;를 이미지 생성 중에 제공한 ID로 바꿉니다.
-
&
이미지 서비스 웹 다운로드
방법은 2단계 프로세스를 사용하여 가져오기를 수행합니다.
-
웹 다운로드
방법은 이미지 레코드를 생성합니다. -
웹 다운로드
방법은 지정된 URI에서 이미지를 검색합니다.
URI에는 선택적 거부 목록 및 허용 목록 필터링이 적용됩니다.
Image PropertyECDHE 플러그인은 이미지에 메타데이터 속성을 삽입할 수 있습니다. 삽입된 이러한 속성은 이미지 인스턴스가 시작되는 계산 노드를 결정합니다.
1.2.4.2. 로컬 볼륨에서 이미지 가져오기
glance-direct
메서드는 이미지 ID를 생성하는 이미지 레코드를 생성합니다. 이미지가 로컬 볼륨에서 이미지 서비스에 업로드되면 스테이징 영역에 저장되고 구성된 검사를 통과한 후 활성화됩니다. glance-direct
방법을 사용하려면 HA(고가용성) 구성에서 사용할 때 공유 스테이징 영역이 필요합니다.
공통 스테이징 영역이 없는 경우 glance-direct
방법을 사용하는 이미지 업로드가 HA 환경에서 실패할 수 있습니다. HA 활성 환경에서 API 호출은 이미지 서비스 컨트롤러에 배포됩니다. 이미지를 업로드하는 API 호출과 다른 컨트롤러에 다운로드 API 호출을 보낼 수 있습니다.
glance-direct 메서드는 이미지를 가져오려면 세 개의 다른 호출을 사용합니다.
-
Glance image-create
-
glance image-stage
-
glance image-import
glance image-create-via-import
명령을 사용하여 다음 세 가지 호출을 모두 하나의 명령으로 수행할 수 있습니다.
$ glance image-create-via-import --container-format <CONTAINER FORMAT> --disk-format <DISK-FORMAT> --name <NAME> --file </PATH/TO/IMAGE>
-
<
CONTAINER FORMAT
>, <DISK-FORMAT
> , <NAME
>, </PATH/TO/IMAGE
>를 이미지의 관련 값으로 바꿉니다.
이미지가 스테이징 영역에서 백엔드 위치로 이동하면 이미지가 나열됩니다. 그러나 이미지가 활성화되는 데 다소 시간이 걸릴 수 있습니다.
glance image-show <IMAGE_ID> 명령을 사용하여 이미지
의 가용성을 확인할 수 있습니다.
-
&
lt;IMAGE_ID
를 이미지 생성 중에 제공한 ID로 바꿉니다.
1.2.5. 이미지 삭제
- 대시보드에서 Project > Compute > Images 를 선택합니다.
- 삭제할 이미지를 선택하고 이미지 삭제를 클릭합니다.
1.2.6. 이미지 숨기기 또는 숨기기
사용자에게 표시되는 일반 목록에서 공개 이미지를 숨길 수 있습니다. 예를 들어 더 이상 사용되지 않는 CentOS 7 이미지를 숨기고 사용자 환경을 간소화하기 위해 최신 버전만 표시할 수 있습니다. 사용자는 숨겨진 이미지를 검색하고 사용할 수 있습니다.
이미지를 숨기려면 다음을 수행합니다.
glance image-update <image_id> --hidden 'true'
숨겨진 이미지를 생성하려면 glance image-create
명령에 --hidden
인수를 추가합니다.
이미지를 숨기려면 다음을 수행합니다.
glance image-update <image_id> --hidden 'false'
1.2.8. 이미지 변환 활성화
GlanceImageImportPlugins
매개변수를 활성화하면 QCOW2 이미지를 업로드하고 이미지 서비스에서 RAW로 변환할 수 있습니다.
Red Hat Ceph Storage RBD를 사용하여 이미지를 저장하고 Nova 인스턴스를 부팅하면 이미지 변환이 자동으로 활성화됩니다.
이미지 변환을 활성화하려면 다음 매개변수 값이 포함된 환경 파일을 생성하고 openstack overcloud deploy
명령에 -e
옵션을 사용하여 새 환경 파일을 포함합니다.
+
parameter_defaults: GlanceImageImportPlugins:'image_conversion'
1.2.9. 이미지를 RAW 형식으로 변환
Red Hat Ceph Storage는 QCOW2 이미지를 사용하여 VM(가상 시스템) 디스크를 호스팅하는 사용을 지원하지는 않습니다.
QCOW2 이미지를 업로드하고 VM을 생성할 때 계산 노드에서 이미지를 다운로드하고 이미지를 RAW로 변환한 다음, 다시 Ceph에 업로드하여 사용할 수 있습니다. 이 프로세스는 특히 병렬 VM을 생성하는 동안 VM을 생성하는 데 걸리는 시간에 영향을 미칩니다.
예를 들어 여러 VM을 동시에 생성하는 경우 변환된 이미지를 Ceph 클러스터에 업로드하면 이미 실행 중인 워크로드에 영향을 미칠 수 있습니다. 업로드 프로세스에서 이러한 워크로드를 IOPS에 소비하고 스토리지 응답성을 저하시킬 수 있습니다.
Ceph에서 VM을 보다 효율적으로 부팅하려면(임시 백엔드 또는 볼륨에서 부팅) glance 이미지 형식이 RAW여야 합니다.
절차
이미지를 RAW로 변환하면 원본 QCOW2 이미지 파일보다 크기가 큰 이미지가 생성될 수 있습니다. 변환 전에 다음 명령을 실행하여 최종 RAW 이미지 크기를 결정합니다.
qemu-img info <image>.qcow2
이미지를 QCOW2에서 RAW 형식으로 변환합니다.
qemu-img convert -p -f qcow2 -O raw <original qcow2 image>.qcow2 <new raw image>.raw
1.2.9.1. Image 서비스(glance)에서 디스크 형식 구성
GlanceDiskFormats
매개변수를 사용하여 디스크 형식을 활성화하거나 거부하도록 이미지 서비스(glance)를 구성할 수 있습니다.
절차
-
언더클라우드 호스트에
stack
사용자로 로그인합니다. 언더클라우드 자격 증명 파일을 가져옵니다.
$ source ~/stackrc
환경 파일에
GlanceDiskFormats
매개변수를 포함합니다(예:glance_disk_formats.yaml
):parameter_defaults: GlanceDiskFormats: - <disk_format>
예를 들어 다음 구성을 사용하여 RAW 및 ISO 디스크 형식만 활성화합니다.
parameter_defaults: GlanceDiskFormats: - raw - iso
다음 예제 구성을 사용하여 QCOW2 디스크 이미지를 거부합니다.
parameter_defaults: GlanceDiskFormats: - raw - iso - aki - ari - ami
환경과 관련된 기타 환경 파일과 함께
openstack overcloud deploy
명령에 새 구성이 포함된 환경 파일을 포함합니다.$ openstack overcloud deploy --templates \ -e <overcloud_environment_files> \ -e <new_environment_file> \ …
-
<overcloud_environment_files>
를 배포에 포함된 환경 파일 목록으로 바꿉니다. -
<new_environment_file>
을 새 구성이 포함된 환경 파일로 바꿉니다.
-
RHOSP에서 사용할 수 있는 디스크 형식에 대한 자세한 내용은 1장. 이미지 서비스(glance) 을 참조하십시오.
1.2.10. RAW 형식으로 이미지 저장
GlanceImageImportPlugins
매개변수를 활성화한 상태에서 다음 명령을 실행하여 이전에 생성된 이미지를 RAW 형식으로 저장합니다.
$ glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name NAME \ --visibility public \ --import-method web-download \ --uri http://server/image.qcow2
-
name의 경우
NAME
을 이미지 이름으로바꿉니다
. 이는glance image-list
에 표시될 이름입니다. -
--uri
의 경우QCOW2 이미지의 위치 및 파일 이름으로 바꿉니다.
이 명령 예제에서는 web-download
방법을 사용하여 이미지 레코드를 생성하고 가져옵니다. glance-api는 가져오기 프로세스 중 --uri
위치에서 이미지를 다운로드합니다. web-download
를 사용할 수 없는 경우 glanceclient
는 이미지 데이터를 자동으로 다운로드할 수 없습니다. glance import-info
명령을 실행하여 사용 가능한 이미지 가져오기 방법을 나열합니다.
2장. 여러 저장소가 있는 이미지 서비스
Red Hat OpenStack Platform Image 서비스(glance)는 모든 에지 사이트에 이미지 풀을 보유할 수 있도록 분산 에지 아키텍처와 함께 여러 저장소 사용을 지원합니다. 허브 사이트라고도 하는 중앙 사이트와 에지 사이트 간에 이미지를 복사할 수 있습니다.
이미지 메타데이터에는 각 복사본의 위치가 포함됩니다. 예를 들어 두 개의 에지 사이트에 있는 이미지는 중앙 사이트와 두 개의 에지 사이트를 포함하는 세 개의 위치가 있는 단일 UUID로 노출됩니다. 즉, 여러 저장소에서 단일 UUID를 공유하는 이미지 데이터의 복사본이 있을 수 있습니다. 위치에 대한 자세한 내용은 이미지 위치 이해를 참조하십시오.
모든 에지 사이트에 RBD 이미지 풀을 사용하면 Ceph RBD COW(Copy-On-Write) 및 스냅샷 계층화 기술을 사용하여 VM을 빠르게 부팅할 수 있습니다. 즉, 볼륨에서 VM을 부팅하고 실시간 마이그레이션을 수행할 수 있습니다. Ceph RBD를 사용한 계층 지정에 대한 자세한 내용은 블록 장치 가이드의 Ceph 블록 장치 계층화 를 참조하십시오.
2.1. 스토리지 에지 아키텍처의 요구 사항
- 각 이미지의 사본은 중앙 위치에 있는 이미지 서비스에 있어야 합니다.
- 에지 사이트에서 인스턴스를 만들기 전에 해당 에지 사이트에 이미지의 로컬 복사본이 있어야 합니다.
- 에지 사이트에 업로드된 이미지는 다른 에지 사이트에 복사하기 전에 중앙 위치에 복사해야 합니다.
- DCN 아키텍처를 Ceph 스토리지와 함께 배포할 때 원시 이미지를 사용해야 합니다.
- RBD는 이미지, 계산 및 블록 스토리지 서비스의 스토리지 드라이버여야 합니다.
-
각 사이트에 대해
NovaComputeAvailabilityZone 및
매개변수에 동일한 값을 할당해야 합니다.CinderStorageAvailabilityZone
2.2. 여러 저장소로 이미지 가져오기
상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 이미지 데이터를 여러 Ceph Storage 클러스터로 가져옵니다. 이미지를 로컬 파일 시스템 또는 웹 서버를 통해 사용할 수 있는 이미지 서비스로 가져올 수 있습니다.
웹 서버에서 이미지를 가져오는 경우 한 번에 여러 저장소로 이미지를 가져올 수 있습니다. 웹 서버에서 이미지를 사용할 수 없는 경우 로컬 파일 시스템에서 중앙 저장소로 이미지를 가져온 다음 추가 저장소로 복사할 수 있습니다. 자세한 내용은 여러 저장소에 기존 이미지 복사를 참조하십시오.
중앙 위치에 이미지를 사용하는 인스턴스가 없어도 항상 중앙 사이트에 이미지 복사본을 저장합니다. 이미지 서비스로 이미지를 가져오는 방법에 대한 자세한 내용은 분산 계산 노드 및 스토리지 배포 가이드를 참조하십시오.
2.2.1. 이미지 가져오기 실패 관리
--allow-failure
매개변수를 사용하여 이미지 가져오기 작업의 오류를 관리할 수 있습니다.
-
--allow-failure
매개변수 값이true이면
첫 번째 저장소에서 데이터를 성공적으로 가져온 후 이미지 상태가활성화됩니다
. 이 설정은 기본 설정입니다.os_glance_failed_import
이미지 속성을 사용하여 이미지 데이터를 가져오지 못한 저장소 목록을 볼 수 있습니다. -
--allow-failure
매개변수 값을false로 설정하면
지정된 모든 저장소가 데이터를 성공적으로 가져온 후에만 이미지 상태가활성화됩니다
. 이미지 데이터를 가져오는 저장소가실패하면 이미지 상태가 실패합니다
. 이미지는 지정된 저장소 중 하나로 가져오지 않습니다.
2.2.2. 여러 저장소로 이미지 데이터 가져오기
--allow-failure
매개변수의 기본 설정이 true
이므로 일부 저장소가 이미지 데이터를 가져오지 못하는 경우 명령에 매개 변수를 포함할 필요가 없습니다.
이 절차에서는 모든 저장소를 이미지 데이터를 성공적으로 가져오지 않아도 됩니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --stores STORE1,STORE2,STORE3
- IMAGE-NAME 을 가져올 이미지의 이름으로 바꿉니다.
- URI 를 이미지의 URI로 바꿉니다.
- STORE1,STORE2 및 STORE3 을 이미지 데이터를 가져올 저장소의 이름으로 바꿉니다.
-
또는
--stores
를--all-stores true
로 교체하여 이미지를 모든 저장소에 업로드합니다.
QCOW2 이미지를 RAW 형식으로 자동 변환하는 glance image-create-via-import
명령은 web-download
방법에서만 작동합니다. glance-direct
방법은 사용할 수 있지만 구성된 공유 파일 시스템을 사용한 배포에서만 작동합니다.
2.2.3. 실패 없이 여러 저장소로 이미지 데이터 가져오기
다음 절차에서는 모든 저장소가 이미지 데이터를 성공적으로 가져와야 합니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --stores STORE1,STORE2
- IMAGE-NAME 을 가져올 이미지의 이름으로 바꿉니다.
- URI 를 이미지의 URI로 바꿉니다.
- STORE1,STORE2 및 STORE3 을 이미지 데이터를 복사하려는 저장소 이름으로 바꿉니다.
또는
--stores
를--all-stores true
로 교체하여 이미지를 모든 저장소에 업로드합니다.참고--allow-failure
매개변수를false
로 설정하면 이미지 서비스에서 이미지 데이터를 가져오지 못하는 저장소를 무시하지 않습니다. image 속성os_glance_failed_import
를 사용하여 실패한 저장소 목록을 볼 수 있습니다. 자세한 내용은 이미지 가져오기 작업의 진행 상황 확인을 참조하십시오.
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID | grep stores
IMAGE-ID 를 원래의 기존 이미지의 ID로 바꿉니다.
출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
2.2.4. 단일 저장소로 이미지 데이터 가져오기
이미지 데이터를 단일 저장소로 가져올 수 있습니다.
절차
이미지 데이터를 단일 저장소로 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --store STORE
- IMAGE-NAME 을 가져올 이미지의 이름으로 바꿉니다.
- URI 를 이미지의 URI로 바꿉니다.
STORE 를 이미지 데이터를 복사하려는 저장소의 이름으로 바꿉니다.
참고명령에
--stores, --
all-stores
또는--store
옵션을 포함하지 않으면 이미지 서비스에서 중앙 저장소에 이미지를 생성합니다.
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID | grep stores
IMAGE-ID 를 원래의 기존 이미지의 ID로 바꿉니다.
출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
2.2.5. 이미지 가져오기 작업의 진행 상황 확인
상호 운용 가능한 이미지 가져오기 워크플로는 이미지 데이터를 저장으로 순차적으로 가져옵니다. 이미지 크기, 저장소 수, 중앙 사이트와 에지 사이트 간의 네트워크 속도가 이미지 가져오기 작업을 완료하는 데 걸리는 시간에 영향을 미칩니다.
이미지 가져오기 작업 중에 전송된 알림에 표시되는 두 개의 이미지 속성을 확인하여 이미지 가져오기 진행 상황을 추적할 수 있습니다.
-
os_glance_importing_to_stores
속성은 이미지 데이터를 가져오지 않은 저장소를 나열합니다. 가져오기 시작 시 요청된 모든 저장소가 목록에 표시됩니다. 저장소가 이미지 데이터를 성공적으로 가져올 때마다 이미지 서비스는 목록에서 저장소를 제거합니다. -
os_glance_failed_import
속성은 이미지 데이터를 가져오지 못하는 저장소를 나열합니다. 이 목록은 이미지 가져오기 작업의 시작 부분에 비어 있습니다.
다음 절차에서는 세 개의 Ceph Storage 클러스터, 즉 에지 dcn0 및
에 있는 dcn
1중앙
저장소와 두 개의 저장소가 있습니다.
절차
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID
IMAGE-ID 를 원래의 기존 이미지의 ID로 바꿉니다.
출력에는 쉼표로 구분된 다음 예제 코드 조각과 유사한 저장소 목록이 표시됩니다.
| os_glance_failed_import | | os_glance_importing_to_stores | central,dcn0,dcn1 | status | importing
이미지 가져오기 작업의 상태를 모니터링합니다.
watch
를 사용하여 명령을 앞에 추가하면 2초마다 명령 출력이 새로 고쳐집니다.$ watch glance image-show IMAGE-ID
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
2.3. 기존 이미지를 여러 저장소에 복사
이 기능을 사용하면 상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 Red Hat OpenStack Image 서비스(glance) 이미지 데이터를 사용하여 에 있는 여러 Ceph Storage 저장소로 기존 이미지를 복사할 수 있습니다.
이미지는 에지 사이트에 복사하기 전에 중앙 사이트에 있어야 합니다. 이미지 소유자 또는 관리자만 기존 이미지를 새로 추가된 저장소에 복사할 수 있습니다.
--all-stores
를 true
로 설정하거나 이미지 데이터를 수신하도록 특정 저장소를 지정하여 기존 이미지 데이터를 복사할 수 있습니다.
-
all
-stores
옵션의 기본 설정은false
입니다. all-stores가
false인
경우 --stores STORE1,STORE2
를 사용하여 이미지 데이터를 수신하는 저장소를 지정해야 합니다. 지정된 저장소에 이미지 데이터가 이미 있는 경우 요청이 실패합니다. -
all-stores
를true
로 설정하고 이미지 데이터가 일부 저장소에 이미 있는 경우 해당 저장소는 목록에서 제외됩니다.
이미지 데이터를 수신하는 저장소를 지정하면 이미지 서비스에서 중앙 사이트에서 스테이징 영역으로 데이터를 복사합니다. 그런 다음 이미지 서비스는 상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 이미지 데이터를 가져옵니다. 자세한 내용은 여러 저장소에 이미지 가져오기를 참조하십시오.
Red Hat은 관리자가 시간이 많이 소요되는 이미지 복사 요청을 신중하게 피하도록 권장합니다. 동일한 이미지에 대해 두 번 긴밀한 시간 복사 이미지 작업으로 인해 경쟁 조건과 예기치 않은 결과가 발생합니다. 기존 이미지 데이터는 그대로 남아 있지만 데이터를 새 저장소로 복사하는 데 실패합니다.
2.3.1. 모든 저장소에 이미지 복사
다음 절차에 따라 이미지 데이터를 사용 가능한 모든 저장소에 복사합니다.
절차
사용 가능한 모든 저장소에 이미지 데이터를 복사합니다.
$ glance image-import IMAGE-ID \ --all-stores true \ --import-method copy-image
IMAGE-ID 를 복사할 이미지의 이름으로 바꿉니다.
이미지 데이터가 사용 가능한 모든 저장소에 성공적으로 복제되었는지 확인합니다.
$ glance image-list --include-stores
이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 작업의 진행 상황 확인을 참조하십시오.
2.3.2. 특정 저장소에 이미지 복사
다음 절차에 따라 이미지 데이터를 특정 저장소에 복사합니다.
절차
특정 저장소에 이미지 데이터를 복사합니다.
$ glance image-import IMAGE-ID \ --stores STORE1,STORE2 \ --import-method copy-image
- IMAGE-ID 를 복사할 이미지의 이름으로 바꿉니다.
- STORE1 및 STORE2 를 이미지 데이터를 복사하려는 저장소의 이름으로 바꿉니다.
이미지 데이터가 지정된 저장소에 성공적으로 복제되었는지 확인합니다.
$ glance image-list --include-stores
이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 작업의 진행 상황 확인을 참조하십시오.
2.4. 특정 저장소에서 이미지 삭제
이 기능을 사용하면 Red Hat OpenStack Image 서비스(glance)를 사용하여 특정 저장소에서 기존 이미지 복사본을 삭제할 수 있습니다.
절차
특정 저장소에서 이미지를 삭제합니다.
$ glance stores-delete --store _STORE_ID_ _IMAGE_ID_
- _STORE_ID를 이미지 복사본을 삭제해야 하는 저장소 이름으로 교체합니다.
- IMAGE_ID 를 삭제하려는 이미지의 ID로 바꿉니다.
glance image-delete
를 사용하면 모든 사이트에서 이미지가 영구적으로 삭제됩니다. 모든 이미지 복사본과 이미지 인스턴스 및 메타데이터가 삭제됩니다.
2.5. 이미지 위치 이해
이미지가 여러 사이트에 있을 수 있지만 지정된 이미지에 대한 단일 UUID만 있습니다. 이미지 메타데이터에는 각 복사본의 위치가 포함됩니다. 예를 들어 두 개의 에지 사이트에 있는 이미지는 중앙 사이트와 두 개의 에지 사이트를 포함하는 세 개의 위치가 있는 단일 UUID로 노출됩니다.
절차
이미지 사본이 있는 사이트를 표시합니다.
$ glance image-show ID | grep "stores" | stores | default_backend,dcn1,dcn2
이 예제에서 이미지는 중앙 사이트인
default_backend
및 두 개의 에지 사이트dcn1 및
에 있습니다.dcn
2또는
--include
명령을 실행하여 이미지가 있는 사이트를 확인할 수 있습니다.-stores 옵션과 함께 glance image-
list$ glance 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-8118ae2ae284
는 중앙 Ceph FSID에 해당합니다. 각 Ceph 클러스터에는 고유한 FSID가 있습니다. -
모든 사이트의 기본값은
images로, 이미지가
저장되는 Ceph 풀에 해당합니다. -
2bd882e7-1da0-4078-97fe-f1bb81f61b00
은 이미지 UUID에 해당합니다. UUID는 위치와 관계없이 지정된 이미지에 대해 동일합니다. -
메타데이터는 이 위치가 매핑하는 Glance 저장소를 표시합니다. 이 예제에서는 중앙 허브 사이트인
default_backend
에 매핑됩니다.
-
부록 A. 이미지 구성 매개변수
다음 키는 glance image -update 및
명령 모두의 glance image-
createproperty
옵션과 함께 사용할 수 있습니다.
$ glance image-update IMG-UUID --property architecture=x86_64
특정 대상 | 키 | 설명 | 지원되는 값 |
---|---|---|---|
모두 |
|
하이퍼바이저에서 지원해야 하는 CPU 아키텍처입니다. 예를 들면 |
|
모두 |
| 하이퍼바이저 유형. |
|
모두 |
| 스냅샷 이미지의 경우 이 이미지를 만드는 데 사용되는 서버의 UUID입니다. | 유효한 서버 UUID |
모두 |
| AMI 스타일 이미지를 부팅할 때 커널로 사용해야 하는 이미지 서비스에 저장된 이미지의 ID입니다. | 유효한 이미지 ID |
모두 |
| 소문자로 된 운영 체제 배포의 일반 이름입니다. |
|
모두 |
| 배포업체가 지정한 운영 체제 버전입니다. | 버전 번호(예: "11.10") |
모두 |
| AMI 스타일 이미지를 부팅할 때 ramdisk로 사용해야 하는 이미지 서비스에 저장된 이미지의 ID입니다. | 유효한 이미지 ID |
모두 |
| 가상 머신 모드입니다. 이는 가상 시스템에 사용되는 호스트/게스트 ABI(애플리케이션 바이너리 인터페이스)를 나타냅니다. |
|
libvirt API 드라이버 |
| 디스크 장치를 연결할 디스크 컨트롤러 유형을 지정합니다. |
|
libvirt API 드라이버 |
| CD-ROM 장치를 연결할 디스크 컨트롤러 유형을 지정합니다. |
|
libvirt API 드라이버 |
| 인스턴스에 표시할 NUMA 노드 수입니다(플레이버 정의를 재정의하지 않음). | 정수. |
libvirt API 드라이버 |
| vCPU N-M과 NUMA 노드 0 매핑(플레이버 정의를 재정의하지 않음). | 쉼표로 구분된 정수 목록입니다. |
libvirt API 드라이버 |
| vCPU N-M을 NUMA 노드 1에 매핑(플레이버 정의 재정의하지 않음). | 쉼표로 구분된 정수 목록입니다. |
libvirt API 드라이버 |
| NMB의 RAM을 NUMA 노드 0에 매핑합니다(플레이버 정의를 재정의하지 않음). | 정수 |
libvirt API 드라이버 |
| NMB의 RAM을 NUMA 노드 1에 매핑(플레이버 정의 재정의하지 않음). | 정수 |
libvirt API 드라이버 |
|
게스트 에이전트 지원. |
|
libvirt API 드라이버 |
| 이 이미지로 시작된 인스턴스에 임의 번호 생성기(RNG) 장치를 추가합니다.
instance 플레이버는 기본적으로 RNG 장치를 활성화합니다. RNG 장치를 비활성화하려면 클라우드 관리자가 플레이버에서
기본 엔트로피 소스는 |
|
libvirt API 드라이버 |
| VirtIO SCSI(virtio-scsi)를 사용하여 계산 인스턴스에 블록 장치 액세스를 제공합니다. 기본적으로 인스턴스에서 VirtIO 블록(virtio-blk)을 사용합니다. VirtIO SCSI는 향상된 확장성과 성능을 제공하고 고급 SCSI 하드웨어를 지원하는 반가상화 SCSI 컨트롤러 장치입니다. |
|
libvirt API 드라이버 |
| 가상 시스템 인스턴스에서 사용할 디스플레이 장치의 비디오 장치 드라이버입니다. | 사용할 지원되는 드라이버를 지정하려면 다음 값 중 하나로 설정합니다.
|
libvirt API 드라이버 |
|
비디오 이미지의 최대 RAM. 플레이버의 | MB 단위 정수(예: 64) |
libvirt API 드라이버 |
|
서버가 중지되면 지정된 작업을 수행하는 가상 하드웨어 워치독 장치를 활성화합니다. 워치독은 i6300esb 장치를 사용합니다(PCI Intel 6300ESB 에뮬레이션). |
|
libvirt API 드라이버 |
| libvirt 드라이버에서 기본값 대신 사용할 커널 명령줄입니다. LXC(Linux Containers)의 경우 값은 초기화를 위한 인수로 사용됩니다. 이 키는 Amazon 커널, ramdisk 또는 시스템 이미지(aki, ari 또는 ami)에만 유효합니다. | |
libvirt API 드라이버 및 VMware API 드라이버 |
| 사용할 가상 네트워크 인터페이스 장치의 모델을 지정합니다. | 유효한 옵션은 구성된 하이퍼바이저에 따라 다릅니다.
|
VMware API 드라이버 |
| 하이퍼바이저에서 사용하는 가상 SCSI 또는 IDE 컨트롤러. |
|
VMware API 드라이버 |
|
이미지에 설치된 운영 체제를 설명하는 VMware GuestID. 이 값은 가상 머신을 생성할 때 하이퍼바이저로 전달됩니다. 지정하지 않는 경우 키의 기본값은 | 자세한 내용은 VMware vSphere가 포함된 이미지를 참조하십시오. |
VMware API 드라이버 |
| 현재 사용하지 않는 경우. |
|
XenAPI 드라이버 |
|
true인 경우 인스턴스가 부팅되기 전에 디스크의 루트 파티션의 크기가 자동으로 조정됩니다. 이 값은 XenAPI 드라이버와 함께 Xen 기반 하이퍼바이저를 사용하는 경우에만 계산 서비스에서 고려합니다. 계산 서비스는 이미지에 하나의 파티션이 있는 경우에만 파티션이 |
|
libvirt API 드라이버 및 XenAPI 드라이버 |
|
이미지에 설치된 운영 체제입니다. XenAPI 드라이버에는 이미지의 |
|