가상 머신 이미지 형식 변환하는 방법

소개

원격 클라우드 서버를 사용할 때는 일반적으로 가상 머신과 작업하게 됩니다. 가상 머신은 더 큰 서버 클러스터 내에서 실행되는 전체 운영 체제의 격리된 인스턴스입니다. 또한 QEMU나 VirtualBox와 같은 소프트웨어를 사용하여 로컬 데스크톱에서도 가상 머신을 작업할 수 있습니다. 가상 머신은 전체 데스크톱 인터페이스를 포함할 수도 있고, 터미널 연결을 허용하기 위해 SSH 서버만 실행할 수도 있습니다. 어떤 경우에도 기술적으로 유사하며, 유사한 가정을 합니다. 대규모 클라우드 최적화를 제외하고는, 가상화 환경 사이의 유일한 중요한 차이점은 가상 머신 하드 디스크와 구성 옵션입니다. 이러한 것들은 가상 머신 이미지라고 불리며, 공급업체마다 다른 형식으로 포맷되어 있습니다.

이 튜토리얼에서는 qcow2, vdi, vhd, vmdk를 포함한 가상 머신 이미지 형식 간의 변환 방법을 배우게 됩니다. 이를 통해 필요에 따라 가상 환경을 데스크톱에서 클라우드로 이동하고 다시 돌아올 수 있습니다.

전제 조건

이 튜토리얼의 명령어는 QEMU와 VirtualBox 및 그들의 명령 줄 도구를 설치할 수 있는 한 Windows, macOS 또는 Linux에서 실행할 수 있습니다. 이 튜토리얼은 Homebrew 패키지 관리자를 사용하여 설치 지침을 제공합니다. macOS에서, Linux에서 또는 WSL2에서 Windows에서 Homebrew를 설치할 수 있습니다.

만약 DigitalOcean 드롭렛에서 실행 중이라면, 최소 2개의 CPU와 2GB의 메모리가 있어야 합니다.

또한 이 튜토리얼의 명령어를 실행하기 위해 최소 10GB의 여유 공간이 필요합니다.

참고: 만약 2020년 이후에 제조된 Apple Silicon CPU를 사용하는 macOS를 사용 중이라면, VirtualBox가 아닌 QEMU만 사용할 수 있습니다.

QEMU

QEMU은 가장 강력하고 널리 지원되는 오픈 소스 가상화 소프트웨어입니다. 이는 Windows, macOS, Linux 및 Android와 같은 다른 운영 체제를 포함한 모든 주요 플랫폼에서 실행되며 필요에 따라 가상화 및 에뮬레이션이 가능합니다. 예를 들어, Linux 서버 이미지를 Windows 데스크톱에서 실행하는 경우 (일반적인 사용 사례), 이 두 플랫폼은 공통된 기반 아키텍처 (Intel/AMD x86)를 공유하므로 QEMU는 가상화를 통해 완전한 성능을 달성할 수 있습니다. x86 Linux 또는 Windows를 실행하여 macOS 또는 Android의 ARM 아키텍처와 같은 아키텍처를 혼합하는 경우 QEMU는 아키텍처를 변환하기 위해 에뮬레이션을 자동으로 사용합니다.

가상화와 비교하여 에뮬레이션은 일반적으로 제품 환경에서 사용되지 않습니다. 왜냐하면 성능에 상당한 페널티가 발생하기 때문입니다. 그러나 QEMU는 가상화와 에뮬레이션을 거의 동등하게 처리함으로써 호환성 이점을 제공합니다. 이는 동일한 이미지 형식과 동일한 도구를 모든 시나리오에서 사용할 수 있음을 의미합니다.

QEMU는 명령 줄 소프트웨어이며, 가상 머신을 구성하는 데 사용할 수 있는 옵션의 수가 많기 때문에 VMware 또는 VirtualBox와 같은 데스크톱 가상화 소프트웨어와 비교하여 높은 학습 곡선을 가지고 있습니다. 이는 선택적으로 Windows 또는 Linux에서 QtEmu 및 macOS에서 UTM과 같은 GUI 프론트엔드와 함께 사용할 수 있습니다. 이 튜토리얼에서는 QEMU 작업에 대한 명령 줄 지침을 제공할 것입니다.

QEMU 설치

QEMU를 설치하려면 Homebrew의 brew install을 사용하세요:

  1. brew install qemu

이 명령을 통해 qemu-img를 포함한 QEMU 도구와 명령어 모두 사용할 수 있습니다. qemu-img 명령어에 액세스할 수 있는지 확인하려면 which qemu-img를 실행하세요:

  1. which qemu-img
Output
/usr/local/bin/qemu-img

참고: Windows에서 WSL2 없이 작업하려는 경우 원본 설치 파일을 사용하여 Windows에 QEMU를 설치할 수도 있습니다.

QEMU는 이 튜토리얼에서 필요한 대부분의 기능을 제공합니다. 또한 인기있는 가상화 패키지인 VirtualBox도 설치할 수 있습니다.

VirtualBox

VirtualBox는 Oracle에서 제공하는 오픈 소스 가상화 소프트웨어입니다. 이 소프트웨어는 모든 x86 운영 체제(Windows, Linux 및 macOS 2020년 이전에 제조된 컴퓨터)를 지원합니다. 이 소프트웨어는 에뮬레이션 또는 비-x86 아키텍처를 지원하지 않으며, 주로 Windows에서 Linux를 실행하거나 그 반대로 실행하는 데 유용합니다. 그러나 QEMU보다 사용하기 더 간편하며, 널리 호환되는 기본 설정을 제공하며, 기본적으로 데스크톱 인터페이스를 포함하고 있습니다.

QEMU보다는 많은 명령 줄 기능을 제공하지 않으므로, 종종 Vagrant와 같은 전용 오케스트레이션 소프트웨어와 함께 사용하여 가상 머신 구성을 자동화하고 재현합니다. 그러나 일부 가상 머신 이미지를 조작하는 데 사용할 수 있는 VBoxManage 명령 줄 도구가 포함되어 있습니다.

VirtualBox 설치

macOS에서 VirtualBox를 설치하려면, VirtualBox가 전체 애플리케이션 번들로 배포되기 때문에 Homebrew에서 cask라고 하는 것과 같은 –cask 플래그를 사용하여 brew install을 사용하십시오:

  1. brew install --cask virtualbox

Ubuntu 또는 Debian 기반의 Linux 배포판 (WSL2 아래 포함)에 VirtualBox를 설치하려면, 먼저 패키지 소스를 새로 고칠 수 있도록 apt update를 사용한 후 apt install을 사용하십시오:

  1. sudo apt update
  2. sudo apt install virtualbox

WSL2 없이 Windows에 VirtualBox를 설치하려면, 다운로드 페이지를 참조하십시오.

VirtualBox를 설치한 후 vboxmanage 명령에 액세스할 수 있는지 확인하려면 which vboxmanage를 실행하십시오.

  1. which vboxmanage
Output
​​/usr/local/bin/vboxmanage

가상화를 위해 QEMU와 VirtualBox에는 대체제가 있습니다. 그러나 대부분은 플랫폼에 특화되어 있습니다(예: Windows의 Hyper-V) 또는 대규모 기업용으로 설계되었습니다(예: VMware). 이 튜토리얼에서는 직접 다루지 않겠지만, 다음 단계에서 이들의 이미지 형식을 변환할 수 있습니다.

QEMU를 사용하여 가상 머신 이미지 생성하기

가상 머신 이미지를 변환하는 것을 보여주기 위해, 먼저 QEMU로 이미지를 생성할 수 있습니다. 이미 변환할 이미지가 있는 경우에는 이 섹션을 건너뛸 수 있습니다.

qemu-img create 명령을 사용하여 QEMU의 기본 qcow2 형식으로 이미지를 생성하면 됩니다:

  1. qemu-img create -f qcow2 ubuntu-desktop-22.04.qcow2 10G

이 시점에서 빈 가상 머신 이미지가 생성되었습니다. ubuntu-desktop-22.04.qcow2라고 이름을 지었고 용량을 10G로 제공했지만, 이 시점에서는 Ubuntu 22.04가 설치되지 않았으며 크기도 10GB가 되지 않습니다.

Output
Formatting 'ubuntu-desktop-22.04.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

QEMU 이미지는 가상 머신 내에서 실행되는 모든 소프트웨어에게 최대 선언 용량을 반영하면서 디스크에서 가능한한 적은 공간을 차지합니다. 이 경우, 가상 머신이 가용한 용량으로 생각하는 10GB가 있으며, 가상 머신 이미지가 자동으로 확장되는 최대 크기입니다.

A typical next step would be to install Ubuntu 22.04 onto the virtual machine, using a Ubuntu 22.04 ISO. However, you can skip this step for this tutorial, as you won’t actually be working directly with this virtual machine. An ISO is another type of disk image that is usually read-only, and was historically written onto CD and DVD installation media, rather than an image of a writable hard disk. Other software exists for manipulating ISO images, such as mkisofs and dd. To learn more about installing Linux using QEMU, refer to the QEMU documentation.

QEMU 이미지를 다른 형식으로 변환하기

가상 머신 이미지를 만든 후에는 qemu-img convert를 사용하여 다른 형식으로 변환할 수 있습니다. vdi는 VirtualBox의 기본 이미지 형식입니다. 기본적으로 원본 가상 머신 이미지를 지우지 않고 새로운 이미지를 만듭니다:

  1. qemu-img convert -f qcow2 ubuntu-desktop-22.04.qcow2 -O vdi ubuntu-desktop-22.04.vdi

-f 플래그는 입력 형식과 입력 파일 이름을 지정하는 데 사용됩니다. -O 플래그는 출력 형식과 출력 파일 이름을 지정하는 데 사용됩니다. 매우 큰 이미지를 변환할 때 유용한 진행 표시 줄을 표시하기 위해 -p 플래그도 포함할 수 있습니다. 마지막 단계에서 만든 이미지는 아직 내용이 없으므로 즉시 변환됩니다. ls를 사용하여 ubuntu-desktop-22.04.vdi를 확인할 수 있습니다:

  1. ls ubuntu-desktop-22.04.vdi
Output
ubuntu-desktop-22.04.vdi

다른 일반적인 형식으로는 VMware에서 주로 사용하는 vmdk와 Microsoft의 Hyper-V에서 주로 사용하는 vhd가 있습니다. 소프트웨어가 요구하는 경우 “raw” 이미지를 생성할 수도 있습니다. 다음 단계를 따르세요.

다른 가상 머신 형식을 QEMU로 변환하기

vdi 형식의 이미지가 있으면 VirtualBox에서 제공하는 vboxmanage 명령을 사용하여 변환할 수 있습니다:

  1. vboxmanage clonemedium ubuntu-desktop-22.04.vdi ubuntu-desktop-22.04.img --format raw
Output
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'raw'. UUID: 0501e707-c94e-4103-9069-d7b64a933d78

만약 임시 복사본을 만들려는 경우 불편할 수 있으므로, 이 명령은 자동으로 생성된 이미지를 로컬 VirtualBox 구성에 등록합니다. 실수로 중복 등록한 경우 VirtualBox 인터페이스에서 새 항목을 수동으로 제거해야 할 수도 있습니다.

원시 가상 머신 이미지는 전혀 압축되지 않으므로, 이 명령은 실제로 10GB의 완전한 파일을 생성합니다. qcow2 형식으로 다시 변환하여 QEMU와 함께 사용할 수 있도록 마지막 단계의 구문을 반대로 사용할 수 있습니다:

  1. qemu-img convert -f raw ubuntu-desktop-22.04.img -O qcow2 ubuntu-desktop-22.04-new.qcow2

이제 디스크 공간을 회수하기 위해 원시 이미지를 삭제할 수 있습니다:

  1. rm ubuntu-desktop-22.04.img

마지막으로, 가상 머신 이미지의 일부 메타데이터를 출력하기 위해 qemu-img checkqemu-img info 명령을 사용할 수 있습니다:

  1. qemu-img check ubuntu-desktop-22.04.qcow2
Output
No errors were found on the image. Image end offset: 262144
  1. qemu-img info ubuntu-desktop-22.04.qcow2
Output
image: ubuntu-desktop-22.04.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false

qemu-img를 사용하여 이미지를 변환하는 자세한 내용은 qemu-img 매뉴얼 페이지 또는 공식 문서를 참조하십시오.

참고: 이 가상 머신 이미지를 클라우드 서버 이미지로 사용하기 위해 DigitalOcean에 업로드할 수도 있습니다. DigitalOcean의 사용자 정의 이미지 문서를 따라하십시오.

결론

이 튜토리얼에서는 QEMU와 VirtualBox의 명령 줄 도구를 사용하여 가상 머신 이미지를 생성, 변환 및 내보내는 방법을 알아보았습니다. 일반적으로 사용되는 가상 머신 이미지 형식의 일부 예제와 가상 머신 작업에 유용한 기본 가정 몇 가지를 검토했습니다. 가상화와 같은 일반적인 개념의 기술적인 면을 이해하는 것은 아키텍처 또는 클라우드 공급자를 이전해야 하는 경우 특히 도움이 됩니다.

다음으로, 필요에 따라 가상 머신을 확장하는 방법에 대한 가이드를 검토하시기 바랍니다.

Source:
https://www.digitalocean.com/community/tutorials/how-to-convert-virtual-machine-image-formats