개요
가상화 환경에서 VM을 생성하려면 디스크 이미지가 필요합니다. 이때 사용되는 이미지 포맷은 하이퍼바이저 종류나 환경에 따라 다양하며, 각 포맷마다 성능과 기능 면에서 차이가 있습니다. 이 글에서는 주요 디스크 이미지 포맷들의 특징을 정리하고, OpenStack Glance에서 어떻게 활용되는지 간단히 소개합니다.
1. 디스크 이미지 포맷 간단 소개
| 포맷 | 개발사 | 주요 사용 환경 |
| raw | - | KVM, Xen |
| qcow2 | QEMU | KVM, QEMU |
| vmdk | VMware | ESXi, Workstation |
| vhd / vhdx | Microsoft | Hyper-V, XenServer |
| vdi | Oracle | VirtualBox, QEMU |
| iso | - | 범용 |
| ploop | Virtuozzo | Virtuozzo 컨테이너 |
| ami / aki / ari | Amazon | AWS EC2 |
2. 포맷별 특징
2.1 raw
가장 단순한 비구조적 디스크 이미지 포맷입니다. /dev/sda를 dd 명령어로 파일에 그대로 복사한 것과 동일한 구조로, KVM과 Xen 하이퍼바이저에서 기본적으로 지원합니다. 별도의 포맷 오버헤드가 없어 I/O 성능이 가장 우수하지만, 씬 프로비저닝이나 스냅샷 같은 고급 기능은 지원하지 않으며 디스크 전체 크기만큼 파일이 할당됩니다.
2.2 qcow2
QEMU에서 개발한 포맷으로, KVM 기반 환경에서 가장 널리 사용됩니다. Sparse representation 방식을 사용해 실제 사용한 만큼만 디스크 공간을 차지하며, Copy-on-Write 기반의 스냅샷과 압축, AES 암호화를 지원합니다. raw 대비 약간의 I/O 오버헤드가 존재하지만, 스토리지 효율과 기능 면에서 로컬 스토리지 기반 KVM 환경에 가장 적합한 포맷입니다.
2.3 vmdk
VMware에서 개발한 포맷으로, ESXi, Workstation, Fusion 등 VMware 제품군에서 기본적으로 사용됩니다. VMware 외에도 VirtualBox, QEMU 등 다양한 하이퍼바이저에서도 지원하기 때문에 이기종 환경 간 이미지 이전 시 활용되기도 합니다.
2.4 vhd / vhdx
Microsoft에서 개발한 포맷으로, Hyper-V의 기본 디스크 이미지 포맷입니다. VMware, Xen, VirtualBox 등에서도 지원합니다. vhdx는 vhd의 개선 버전으로, 더 큰 디스크 크기(최대 64TB)를 지원하고 전원 장애 시 데이터 손상을 방지하는 로깅 기능이 추가되었습니다.
2.5 vdi
Oracle VirtualBox에서 사용하는 기본 디스크 이미지 포맷으로, QEMU에서도 지원합니다. VirtualBox 환경에서 주로 사용됩니다.
2.6 iso
ISO 9660 파일시스템으로 포맷된 읽기 전용 디스크 이미지입니다. CD/DVD 미디어에 사용되는 포맷으로, 하이퍼바이저 종류와 무관하게 OS 설치 미디어 용도로 범용적으로 활용됩니다.
2.7 ploop
Virtuozzo(구 OpenVZ)에서 OS 컨테이너를 실행하기 위해 사용하는 디스크 포맷입니다. Virtuozzo 환경 외에는 사용할 일이 거의 없습니다.
2.8 ami / aki / ari
Amazon EC2에서 처음 도입된 이미지 포맷 체계입니다.
- ami (Amazon Machine Image): raw 포맷의 실제 VM 디스크 이미지
- aki (Amazon Kernel Image): 부팅 시 로드하는 커널 파일 (Linux의 경우 vmlinuz)
- ari (Amazon Ramdisk Image): 부팅 시 마운트되는 램디스크 파일 (Linux의 경우 initrd)
3. OpenStack Glance에서의 활용
Glance에 이미지를 등록할 때는 disk_format 외에 container_format도 함께 지정해야 합니다. Container Format은 이미지 파일에 VM 메타데이터가 포함되어 있는지를 나타내며, 지원하는 값은 아래와 같습니다.
| bare | 컨테이너나 메타데이터 없음. 일반적으로 가장 많이 사용 |
| ovf | DMTF 표준의 가상 머신 패키징 포맷. .ovf XML 메타데이터와 이미지 파일로 구성 |
| ova | OVF 패키지를 단일 tar 아카이브로 묶은 포맷 |
| docker | Docker 컨테이너 파일시스템의 tar 아카이브 |
| compressed | 압축 포맷. 구체적인 압축 방식은 이미지를 소비하는 서비스가 판단 |
| ami / aki / ari | Amazon 이미지 포맷 |
대부분의 경우 container_format은 bare를 사용하며, Glance는 설정값이 실제 이미지 데이터와 일치하는지 별도로 검증하지 않습니다.
참고