[OpenStack] Glance

KH55S·2025년 11월 20일

OpenStack

목록 보기
8/9

Glance : OpenStack의 이미지 서비스로, VM의 운영체제가 설치된 디스크 이미지의 검색, 등록, 검색 및 전달을 담당하는 중앙 저장소 및 관리 시스템이다. Nova나 Cinder와 같은 다른 서비스들이 VM을 생성하거나 볼륨을 만들 때 필요한 OS 템플릿 파일을 제공하는 역할을 한다.

Glance의 아키텍처 및 구성 요소

  • Glance는 크게 제어(메타데이터 관리)데이터 저장(이미지 파일 관리) 두 가지 영역으로 나뉜다.
  • glance-api
    • Glance의 프론트엔드. 사용자나 다른 서비스로부터 REST API 요청을 수신한다.
    • 이미지의 데이터데이터 확인, 이미지 업로드/다운로드 요청을 처리한다.
  • Glance Database (SQL)
    • 이미지의 메타데이터를 저장한다.

      이미지의 메타데이터
      실제 이미 파일(바이너리 데이터)를 제외한, 그 이미지를 설명하고 관리하고 식별하기 위한 모든 속성 정보. Nova는 메타데이터를 먼저 읽은 후에야 실제 이미지 파일에 접근할 수 있다.

      • 식별 및 상태 정보 : ID, Name, Status, Owner, Visibility
      • 상태 속성 정보 : Disk Format, Container Format, Size, Checksum
      • 실행 요구 사항 : Min RAM, Min Disk
      • 위치 정보 : Direct URL (실제 이미지 바이너리 데이터가 저장된 스토리지 백엔드 주소)
      • 사용자 정의 속성 : 특정 하드웨어 기능을 활성화하기 위한 플래그들
  • Store Backend
    • 실제 대용량 이미지 바이너리 데이터가 저장되는 공간
    • Glance는 자제적으로 데이터를 저장하지 않고, 다양한 백엔드 드라이버를 사용한다.
    • 지원 백엔드
      • Filesystem : Glance 서버의 로컬 디렉토리(/var/lib/glance/images/)
      • Ceph RBD : 분산 스토리지 (kolla-ansible에서 주로 사용)
      • Cinder : 블록 스토리지
      • Swift / S3 : 오브젝트 스토리지

이미지가 Glance에 저장되는 과정

  • 사용자가 openstack image create 명령어를 통해 이미지를 업로드할 때의 내부 동작
  1. API 요청
    • 사용자가 glance-api에 이미지 생성을 요청한다. 이때는 아직 데이터가 전송되지 않는다.
    • glance-api는 DB에 이미지 레코드를 생성하고 상태를 queued로 설정한다.
  2. 데이터 전송 (Upload)
    • 사용자가 이미지 바이너리 데이터를 스트림으로 전송한다.
    • glance-api는 상태를 saving으로 변경하고, 설정된 Store Backend(ex. Ceph)로 데이터를 쓴다.
  3. 검증 및 완료
    • 전송이 완료되면 glance-api는 데이터의 크기와 체크섬을 계산하여 DB에 업데이트한다.
    • 데이터가 백엔드에 안전하게 저장되었음이 확인되면 상태를 active로 변경한다.
    • 다른 서비스가 이미지를 사용할 수 있다.

VM 생성 시 이미지가 사용되는 과정

  • Nova가 VM을 생성할 때 Glance 이미지를 가져와서 부팅 디스크로 만드는 과정은 스토리지 백엔드의 종류에 따라 크게 두 가지 방식을 나뉜다.
  1. 일반적인 방식 (Local Filesystem 백엔드 사용 시)
    • 요청 : nova-compute가 VM 생성을 위해 glance-api에 이미지 정보와 다운로드 URL을 요청한다.
    • 다운로드
      • nova-compute는 HTTP를 통해 glance-api로부터 이미지 데이터를 스트리밍 받는다.
      • 이 데이터는 Compute 노드의 로컬 디스크 경로인 Image Cache Directory에 저장된다.
    • 변환 및 복사
      • nova-compute는 다운로드한 Base 이미지를 복사하거나 스냅샷을 떠서 해당 VM만을 위한 디스크 파일을 생성한다.
    • 실행 : QEMU/KVM이 이 디스크 파일을 사용하여 VM을 부팅한다.

  2. Ceph RBD 방식 (CoW - Copy on Write 사용 시)
    • kolla-ansible과 같이 Glance와 Nova가 모두 Ceph를 백엔드로 사용하는 경우, 훨씬 효율적인 Copy-on-Write 방식이 사용된다.
    • 요청 : nova-compute가 Glance에게 이미지 위치를 묻는다.
      위치 확인: Glance는 "이 이미지는 Ceph 클러스터의 주소 rbd://...에 있다"고 알려준다.
    • 클론 (Clone) - 네트워크 전송 없음
      • nova-compute는 이미지를 다운로드하지 않는다.
      • 대신 Ceph에게 "저 이미지(스냅샷)를 기반으로 새로운 쓰기 가능한 볼륨(Clone)을 하나 만들어 줘"라고 명령한다.
      • Ceph 내부에서 포인터만 생성하므로 이 과정은 수 초 이내에 완료된다. (데이터 복사가 일어나지 않음)
    • 실행 : nova-compute는 Ceph에 있는 이 클론 볼륨을 VM에 네트워크 디스크로 연결하여 부팅한다.

0개의 댓글