
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 환경에서는 virsh와 virt-install을 이용한 VM 생성 방식이 가장 널리 사용되며, 운영 환경에서는 Bridge 네트워크와 qcow2 디스크 포맷을 함께 사용하는 구성이 일반적입니다.