<scshin />

Ubuntu에서 libvirt를 이용한 KVM 가상머신(VM) 생성 방법

1.00

Ubuntu에서 libvirt를 이용한 KVM 가상머신(VM) 생성 방법

개요

KVM(Kernel-based Virtual Machine)은 Linux 커널에 포함된 하이퍼바이저로, 리눅스 서버를 가상화 호스트(Hypervisor)로 사용할 수 있도록 지원합니다.

하지만 KVM만으로는 가상머신을 생성하거나 관리하기 어렵기 때문에 일반적으로 libvirt를 함께 사용합니다.

libvirt는 KVM, QEMU 등의 가상화 기술을 통합 관리하는 프레임워크이며, virsh, virt-install, virt-manager 등의 도구는 모두 libvirt를 통해 가상머신을 제어합니다.


KVM과 libvirt 구조

                 +---------------------+
                 |     virt-manager    |
                 +----------+----------+
                            |
                 +----------v----------+
                 |        virsh        |
                 +----------+----------+
                            |
                 +----------v----------+
                 |       libvirt       |
                 +----------+----------+
                            |
                 +----------v----------+
                 |      QEMU/KVM       |
                 +----------+----------+
                            |
                 +----------v----------+
                 |   Virtual Machine   |
                 +---------------------+

각 구성 요소의 역할은 다음과 같습니다.

구성 요소 설명
KVM Linux 커널 기반 하이퍼바이저
QEMU 하드웨어 에뮬레이터
libvirt 가상머신 관리 프레임워크
virsh CLI 관리 도구
virt-install VM 생성 도구
virt-manager GUI 관리 도구

1. CPU 가상화 지원 확인

먼저 CPU가 가상화를 지원하는지 확인합니다.

egrep -c '(vmx|svm)' /proc/cpuinfo

또는

lscpu | grep Virtualization

출력 예시

Virtualization: VT-x
  • Intel → VT-x
  • AMD → AMD-V

2. KVM 설치

패키지 목록을 최신화합니다.

sudo apt update

필요한 패키지를 설치합니다.

sudo apt install -y \
qemu-kvm \
libvirt-daemon-system \
libvirt-clients \
bridge-utils \
virtinst \
cpu-checker

3. 설치 확인

kvm-ok

정상이라면

INFO: /dev/kvm exists
KVM acceleration can be used

4. libvirt 서비스 실행

sudo systemctl enable --now libvirtd

상태 확인

systemctl status libvirtd

5. 사용자 권한 추가

현재 사용자를 libvirt 그룹에 추가합니다.

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

로그아웃 후 다시 로그인하거나

newgrp libvirt

를 실행합니다.


6. libvirt 동작 확인

virsh list --all

출력

 Id   Name   State

7. Storage Pool 생성

Ubuntu에서는 기본 Storage Pool이 없는 경우가 있습니다.

먼저 디렉터리를 생성합니다.

sudo mkdir -p /var/lib/libvirt/images

Storage Pool 정의

virsh pool-define-as \
default \
dir \
--target /var/lib/libvirt/images

시작

virsh pool-start default

자동 시작

virsh pool-autostart default

확인

virsh pool-list --all

예시

 Name      State    Autostart
--------------------------------
 default   active   yes

8. 기본 Network 확인

virsh net-list --all

기본 네트워크가 비활성화되어 있다면

virsh net-start default

자동 시작

virsh net-autostart default

9. ISO 파일 준비

ISO 파일을 Storage Pool에 복사합니다.

sudo cp ubuntu-24.04.iso /var/lib/libvirt/images/

10. VM 생성

virt-install \
--name ubuntu24 \
--memory 4096 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu24.qcow2,size=40 \
--cdrom /var/lib/libvirt/images/ubuntu-24.04.iso \
--os-variant ubuntu24.04 \
--network default \
--graphics vnc

옵션 설명

옵션 설명
--name VM 이름
--memory 메모리(MB)
--vcpus CPU 개수
--disk 가상 디스크
--cdrom ISO 파일
--network 사용할 네트워크
--graphics 그래픽 방식

11. VM 관리

전체 목록

virsh list --all

실행

virsh start ubuntu24

종료

virsh shutdown ubuntu24

강제 종료

virsh destroy ubuntu24

삭제

virsh undefine ubuntu24

자동 시작

virsh autostart ubuntu24

12. VM 콘솔 접속

virsh console ubuntu24

종료

Ctrl + ]

13. VM 정보 확인

VM 정보

virsh dominfo ubuntu24

CPU 정보

virsh vcpuinfo ubuntu24

메모리 정보

virsh dommemstat ubuntu24

XML 설정 확인

virsh dumpxml ubuntu24

14. 디렉터리 구조

/var/lib/libvirt/
├── images/
│   ├── ubuntu24.qcow2
│   └── ubuntu-24.04.iso
├── dnsmasq/
├── network/
└── storage/

실무에서 권장하는 구성

항목 권장
Host OS Ubuntu Server 24.04 LTS
Hypervisor KVM
관리 libvirt
CLI virsh
VM 생성 virt-install
디스크 qcow2
네트워크 Bridge(br0)
원격 관리 Cockpit 또는 virt-manager

마무리

KVM은 Linux 커널에 내장된 강력한 가상화 기술이며, libvirt를 함께 사용하면 CLI와 GUI 환경 모두에서 효율적으로 가상머신을 관리할 수 있습니다.

특히 Ubuntu Server 환경에서는 virshvirt-install을 이용한 VM 생성 방식이 가장 널리 사용되며, 운영 환경에서는 Bridge 네트워크와 qcow2 디스크 포맷을 함께 사용하는 구성이 일반적입니다.