目次
시작하기
Ubuntu는 전 세계적으로 널리 사용되는 Linux 배포판 중 하나입니다. 개인 사용자부터 엔터프라이즈 환경까지 다양한 상황에서 지원되고 있으며, 서버 구축 및 개발 환경에도 많이 사용됩니다. 이러한 Ubuntu에서 본격적인 가상화를 구현하고 싶다면, 매우 강력한 것이 바로 “KVM(Kernel-based Virtual Machine)”입니다. KVM은 Linux 커널에 표준으로 포함된 하이퍼바이저형 가상화 기술로, 하드웨어 가상화 지원 기능(Intel VT 및 AMD-V)을 활용하여 높은 성능과 안정성을 구현합니다. KVM은 오픈소스이며, 비용을 절감하면서 본격적인 가상화 인프라를 구축할 수 있다는 점이 큰 특징입니다. 가상화 기술이라고 하면 어려운 인상을 받는 분도 많을 수 있습니다. 하지만 Ubuntu와 KVM을 결합하면 초보자도 비교적 쉽게 가상 머신을 생성·운용할 수 있습니다. 물론 기존 물리 서버 자원을 효율적으로 사용하고자 하는 중급자나 실제 업무 시스템을 가상화하고자 하는 현장 엔지니어에게도 추천합니다. 이 기사에서는 Ubuntu에서 KVM을 사용한 가상화 환경 구축 방법부터 기본적인 사용법, 실전 활용 노하우, 자주 발생하는 문제에 대한 대처법까지 자세히 설명합니다. “앞으로 KVM을 도입하고 싶다” “Ubuntu의 가상화 환경을 더 편리하게 활용하고 싶다”라고 생각하는 분은 꼭 마지막까지 확인해 주세요.KVM와 다른 가상화 기술의 비교
가상화 기술에는 다양한 종류가 있지만, Ubuntu 환경에서 자주 사용되는 것으로는 KVM 외에 VirtualBox와 VMware가 있습니다. 여기서는 각각의 특징과 차이점, KVM을 선택하는 장점·단점에 대해 자세히 설명합니다。주요 가상화 기술의 종류
- KVM(Kernel-based Virtual Machine) KVM은 Linux 커널에 내장된 가상화 기능으로, 호스트 OS가 Linux인 것이 전제입니다. 하드웨어 가상화 지원 기능(Intel VT 및 AMD‑V)을 이용함으로써 가상 머신의 성능이 높고, 실제 운영에도 충분히 견딜 수 있는 것이 큰 특징입니다. 명령어 조작 및 관리 도구(virt‑manager 등)를 사용하여 유연하게 운영할 수 있습니다。
- VirtualBox VirtualBox는 Oracle사가 제공하는 데스크톱용 가상화 소프트웨어로, Windows, Mac, Linux 등 다양한 플랫폼에서 동작합니다. 인터페이스가 이해하기 쉬워 개인 용도나 학습 목적에 많이 사용됩니다. 다만, KVM에 비하면 상용 환경이나 고부하 용도에는 다소 부적합한 면도 있습니다。
- VMware(VMware Workstation/ESXi등) VMware는 업무용으로도 많이 사용되는 상용 가상화 제품입니다. 기능이 풍부하고 지원도 충실하지만, 유료 라이선스가 필요하다는 점이 큰 차이점입니다. 특히 대규모 기업 반면, 비용 부담이 있습니다。
KVM의 장점
- 높은 성능과 안정성 KVM은 Linux 커널의 일부로 동작하기 때문에 리소스 효율이 좋고, 가상 머신마다 할당되는 CPU와 메모리 제어도 세밀하게 할 수 있습니다. 실제 업무 시스템 운영에도 견딜 수 있는 안정성이 매력입니다。
- 오픈소스이며 비용이 들지 않는다 KVM은 완전히 오픈소스이며, 라이선스 비용이 들지 않습니다. 저비용으로 가상화 기반을 구축하고자 할 때에도 최적입니다。
- 다양한 관리 도구와 자동화 명령줄 도구(virsh 및 virt‑install)와 GUI 관리 도구(virt‑manager) 등, 용도에 맞는 다양한 관리 방법이 있습니다. 자동화와 스크립트화도 용이하여 DevOps 및 인프라 관리에 적합합니다。
KVM의 단점
- 호스트 OS가 Linux에 한정됨 KVM은 Linux 커널을 전제로 하기 때문에 Windows나 Mac 호스트 환경에서는 사용할 수 없습니다。
- 초기 설정 및 문제 해결에 Linux 지식이 필요 GUI 도구도 제공되지만, 네트워크 설정 및 세밀한 튜닝에는 명령어 조작이나 Linux 고유의 지식이 요구되는 경우가 있습니다。
어떤 경우에 KVM을 선택해야 할까?
- 물리 서버의 자원을 효율적으로 활용하고 싶을 때
- 본격적인 업무 시스템이나 서버 용도로 가상화를 이용하고 싶을 때
- 비용을 절감하면서 본격적인 가상화 기반을 구축하고 싶을 때
- Linux 서버 운영 및 인프라 관리를 자동화하고 싶을 때
Ubuntu에서 KVM 환경 구축【설치 및 초기 설정】
KVM을 Ubuntu에서 활용하려면 몇 가지 전제 조건과 준비, 그리고 실제 설치 작업이 필요합니다. 이 장에서는 KVM 도입에 필요한 절차를 순서대로 설명합니다. 초보자도 원활하게 환경을 구축할 수 있도록 포인트별로 자세히 설명합니다.필요한 요건 및 사전 확인
KVM을 이용하려면 PC나 서버의 CPU가 “가상화 지원 기능(Intel VT 또는 AMD‑V)”을 지원해야 합니다。 먼저, 다음 명령으로 가상화 지원 기능이 활성화되어 있는지 확인해 봅시다。egrep -c '(vmx|svm)' /proc/cpuinfo
값이 1 이상이면 가상화 기능을 사용할 수 있습니다。
또한, 64비트 버전의 Ubuntu인 것도 필요 조건입니다。KVM 및 필요한 패키지 설치
KVM 본체와 관련 도구(libvirt 및 virt‑manager 등)를 설치합니다。 아래 명령을 순서대로 실행하십시오。sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm
:KVM 가상화의 본체libvirt-daemon-system
,libvirt-clients
:가상 머신 관리 서비스bridge-utils
:네트워크 브리지용 도구virt-manager
:GUI로 가상 머신을 관리할 수 있는 도구
사용자 그룹 설정 및 권한 부여
설치 후 현재 사용자를 KVM 및 libvirt 그룹에 추가합시다. 이를 통해 관리자 권한 없이 가상 머신을 조작할 수 있게 됩니다.sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
반영을 위해 로그아웃·재로그인 또는 재부팅을 수행하십시오。KVM 서비스 동작 확인
KVM이 올바르게 설치되고 서비스가 실행 중인지 확인합니다。sudo systemctl status libvirtd
‘active (running)’이라고 표시되면 정상입니다。
또한, 다음 명령으로 KVM이 활성화되어 있는지도 확인할 수 있습니다。virsh list --all
가상 머신 목록이 (현재는 비어 있지만) 표시되면 KVM 환경이 올바르게 구축된 것입니다。가상 머신 생성 및 기본 작업
KVM 환경 준비가 완료되면, 이제 실제로 가상 머신을 생성하고 조작해 봅시다. KVM에서는 그래픽 관리 도구(virt-manager)와 명령줄 조작(virt-install 및 virsh)을 상황에 따라 선택해서 사용할 수 있습니다. 여기서는 두 가지 접근 방식을 소개합니다.virt-manager(GUI)를 사용한 가상 머신 생성
virt-manager는 가상 머신의 생성 및 관리를 직관적인 GUI로 수행할 수 있는 도구입니다. Linux 데스크톱 환경을 사용하고 있다면, virt-manager를 이용하는 것이 매우 편리합니다.- “애플리케이션”이나 명령줄에서
virt-manager
를 실행합니다. - 화면 왼쪽 위의 “새로 만들기” 버튼을 클릭합니다.
- 설치 미디어(ISO 이미지 등)의 위치를 지정하고, 게스트 OS 종류(예: Ubuntu, Windows)를 선택합니다.
- 가상 머신에 할당할 CPU 수, 메모리, 디스크 용량 등을 설정합니다.
- 설정 내용을 확인하고, “완료”를 클릭하면 가상 머신이 생성되고, 설치 화면이 표시됩니다.
virt-install(CLI)를 이용한 가상 머신 생성
서버 용도나 원격 환경에서는 명령줄에서 가상 머신을 생성하는 것이 편리한 경우가 많습니다. 아래는virt-install
명령의 기본 사용 예시입니다.sudo virt-install
--name ubuntu-vm
--memory 2048
--vcpus 2
--disk size=20
--cdrom /path/to/ubuntu.iso
--os-type linux
--os-variant ubuntu20.04
--network network=default
--graphics vnc
--name
: 가상 머신 이름--memory
: 할당할 메모리(MB 단위)--vcpus
: 할당할 CPU 코어 수--disk size=20
: 가상 디스크 용량(GB 단위)--cdrom
: 설치에 사용할 ISO 이미지 경로--os-type
,--os-variant
: OS 종류 및 버전 지정--network
: 연결할 네트워크--graphics
: 그래픽 모드(VNC 등)
가상 머신 시작·정지·삭제·스냅샷 생성
KVM에서는 생성 가상 머신의 조작도 간단합니다. 대표적인 명령은 다음과 같습니다.- 가상 머신 시작
virsh start <가상 머신 이름>
- 가상 머신 정지
virsh shutdown <가상 머신 이름>
- 가상 머신 강제 정지
virsh destroy <가상 머신 이름>
- 가상 머신 삭제(디스크도 함께 삭제할 경우 주의)
virsh undefine <가상 머신 이름>
- 스냅샷 생성
virsh snapshot-create-as <가상 머신 이름> <스냅샷 이름>
이러한 조작은 virt-manager의 GUI에서도 동일하게 수행할 수 있습니다.네트워크 설정 및 확장
KVM으로 가상 머신을 운영할 때, 네트워크 설정은 매우 중요합니다. 기본 설정만으로도 많은 용도에 사용할 수 있지만, 업무용이나 본격적인 서버 운영에서는 맞춤 설정이 필요할 수도 있습니다. 이 장에서는 KVM 네트워크의 기본부터 자주 사용되는 확장 설정까지 설명합니다.기본 NAT(virbr0)와 브리지 네트워크의 차이
KVM을 설치하면 자동으로 “virbr0”라는 가상 네트워크 브리지가 생성됩니다. 이는 NAT(Network Address Translation) 방식의 네트워크이며, 다음과 같은 특징이 있습니다.- virbr0(NAT 방식)의 특징
- 가상 머신은 외부 인터넷에 접근할 수 있다
- 하지만, 호스트나 다른 네트워크에서 가상 머신으로 직접 접근하려면 포트 포워드 등의 설정이 필요하다
- 가정이나 개발 환경, 테스트 용도에 적합하다
- 브리지 네트워크의 특징
- 가상 머신이 호스트와 동일한 네트워크 세그먼트에 참여할 수 있다
- 물리 PC나 다른 서버에서도 가상 머신에 직접 접근 가능하다
- 사내 서버나 서비스 공개 등 본격 운영에 최적이다
커스텀 브리지 구축·설정 절차(LAN 접근용)
프로덕션 서버나 다른 PC에서 직접 가상 머신에 접근하고 싶을 경우 브리지 네트워크를 생성합니다. 아래는 일반적인 절차입니다(예: 호스트 측 물리 NIC가eth0
인 경우).- bridge-utils 설치(이미 설치된 경우는 불필요)
sudo apt install bridge-utils
- 네트워크 설정 파일 편집 Ubuntu 18.04 이후는 Netplan이 사용됩니다.
/etc/netplan/01-netcfg.yaml
등의 설정 파일을 편집합니다. 예:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
interfaces: [eth0]
dhcp4: yes
- 설정 적용
sudo netplan apply
- KVM 측에서 새로운 브리지(br0)를 네트워크에 추가 virt-manager나 virsh를 사용해 가상 머신의 네트워크 어댑터를 br0로 전환합니다.
가상 머신의 IP 주소 고정·포트 포워드 설정
- IP 주소 고정 가상 머신의 OS 측에서 정적 IP 주소를 설정하거나, DHCP 서버에서 MAC 주소별로 고정 할당을 하는 것이 일반적입니다.
- 포트 포워드 설정(NAT 사용 시) virsh 명령이나 libvirt의 XML 설정으로 특정 포트(예: SSH나 웹 서버)를 호스트→가상 머신으로 전달할 수 있습니다. 예(SSH를 22번 포트로 전달):
virsh nat-forward --network default --add-port tcp:2222:22
※세부 설정은 libvirt 설정 파일 편집이나 firewalld를 통한 제어도 가능합니다.스토리지 관리와 디스크 조작
KVM으로 가상 머신을 운영할 때, 스토리지 설계와 디스크 관리도 매우 중요합니다. 여기서는 가상 디스크의 종류와 생성 방법, 스토리지 풀 관리, 그리고 디스크 확장 및 스냅샷 활용에 대해 설명합니다.가상 디스크(qcow2, raw)의 종류와 용도
KVM의 가상 디스크에는 주로 다음 두 종류가 있습니다.- qcow2 형식
- KVM의 표준 가상 디스크 포맷
- 스냅샷 획득 및 디스크 압축, 공간 절약에 대응
- 유연한 운영 및 검증 환경에 최적
- raw 형식
- 데이터 변환이나 압축이 이루어지지 않는 단순한 포맷
- 성능을 중시하거나 스토리지 IO 성능을 최대화하고 싶을 때 유효
스토리지 풀 생성·관리
KVM에서는 ‘스토리지 풀’이라는 메커니즘으로 가상 머신이 사용하는 디스크 영역을 관리합니다.- 기본 스토리지 풀 설치 직후는,
/var/lib/libvirt/images/
가 기본 스토리지 풀입니다. 가상 디스크는 이 디렉터리 내에 생성됩니다. - 새 스토리지 풀 생성(예)
- 디렉터리를 준비
sudo mkdir /data/kvm-images sudo chown libvirt-qemu:kvm /data/kvm-images
- virt-manager 또는 virsh 명령으로 새 풀을 추가 (virsh인 경우):
virsh pool-define-as --name mypool --type dir --target /data/kvm-images virsh pool-autostart mypool virsh pool-start mypool
가상 디스크 확장·스냅샷 활용
- 가상 디스크 확장 디스크 용량을 늘리고 싶을 경우,
qemu-img
명령으로 확장이 가능합니다(qcow2, raw 모두 지원).
sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
그 후, 가상 머신의 OS에서 파티션 및 파일 시스템을 확장해야 합니다.- 스냅샷 활용 qcow2 형식의 디스크에서는 스냅샷을 생성하여 원하는 시점의 상태를 저장할 수 있습니다.
virsh snapshot-create-as <가상 머신 이름> <스냅샷 이름>
스냅샷은 설정 실수나 업데이트 전 백업, 테스트 환경의 롤백 등에 매우 유용합니다.게스트 OS 설치 및 운영
KVM 가상 머신에 실제 OS를 설치하고, 편리하게 운영하기 위한 포인트를 설명합니다. 여기서는 대표적인 게스트 OS 설치 절차와 ISO 이미지 다루는 방법, 운영 시 성능 향상 방안까지 다룹니다.대표적인 게스트 OS 도입 절차
KVM에서는 Ubuntu, CentOS, Windows 등 다양한 OS를 가상 머신으로 실행할 수 있습니다. 여기서는 Ubuntu와 Windows 설치 예제를 소개합니다.- Ubuntu의 경우
- Ubuntu 공식 사이트에서 최신 ISO 이미지를 다운로드합니다.
- virt-manager를 사용하는 경우, “새 가상 머신 만들기” 화면에서 “로컬 설치 미디어”를 선택하고 다운로드한 ISO 파일을 지정합니다.
- 가상 머신의 CPU·메모리·디스크 용량을 설정하고 설치를 시작합니다.
- 화면 안내에 따라 일반적인 Ubuntu 설치 작업을 진행합니다.
- Windows의 경우
- Microsoft 공식 사이트에서 Windows 평가판 ISO 이미지 등을 얻습니다.
- virt-manager 또는 virt-install을 사용해 새 가상 머신을 만들고 ISO 파일을 선택합니다.
- Windows인 경우 “virtio 드라이버”를 설치하면 디스크와 네트워크 성능이 향상됩니다. virtio ISO도 가상 CD 드라이브에 마운트하여 설정 시 적용하면 좋습니다.
ISO 이미지 획득 및 로드
- 게스트 OS 설치에는 공식 사이트에서 다운로드한 ISO 이미지를 사용합니다.
- 가상 머신 생성 시 ISO 파일 경로를 지정하면 가상 CD/DVD로 마운트할 수 있습니다.
- 필요에 따라 여러 ISO(OS와 드라이버)를 동시에 마운트하는 것도 가능합니다.
게스트 OS 운영 시 팁·성능 향상 방안
- 리소스 할당 최적화 가상 머신에 할당하는 CPU와 메모리를 적절히 설정합시다. 필요 이상으로 리소스를 할당하면 호스트 OS나 다른 가상 머신에 영향을 미칩니다。
- virtio 드라이버 도입 게스트 OS가 Windows이거나 오래된 Linux인 경우, virtio 드라이버를 설치하면 디스크와 네트워크 성능이 크게 향상됩니다。
- 불필요한 서비스 중지 게스트 OS에서 사용하지 않는 서비스나 상주 프로그램을 비활성화함으로써 리소스를 효율적으로 활용할 수 있습니다。
- KVM 게스트 도구 활용 QEMU Guest Agent를 도입하면 가상 머신의 정보 조회 및 셧다운 등 작업이 보다 정확해집니다。
실전 활용 사례와 자동화 팁
KVM은 단순히 가상 머신을 생성·운용하는 것에 그치지 않고, 다양한 업무 및 개발 현장에서 활용되고 있습니다. 또한 스크립트와 자동화 도구와 결합함으로써 관리 작업의 효율화도 가능합니다. 이 장에서는 KVM의 실전 활용 사례와 자동화 팁을 소개합니다.서버 용도의 활용 사례
- 개발·테스트 환경의 분리 프로젝트마다 가상 머신을 준비하여, 소프트웨어 버전 및 구성을 자유롭게 전환할 수 있는 환경을 구현할 수 있습니다. 새로운 버전의 OS나 소프트웨어를 시험할 때에도, 프로덕션 환경에 영향을 주지 않고 검증할 수 있는 것이 큰 장점입니다.
- 사내 서비스 구축 파일 서버, Web 서버, 데이터베이스 서버 등 여러 서비스를 가상 머신 단위로 분리하여 운영함으로써, 장애 발생 시 영향 범위를 제한할 수 있습니다。 또한, 가상 머신 단위의 백업 및 스냅샷도 용이합니다.
CLI 및 Ansible 등을 이용한 자동 구축 예시
- CLI에 의한 가상 머신 자동 생성 스크립트를 사용하여
virt-install
와virsh
명령을 자동 실행하면, 여러 가상 머신을 일괄적으로 생성·관리할 수 있습니다. 예: 쉘 스크립트를 이용한 가상 머신 생성
for i in {1..5}
do
virt-install --name test-vm-$i --memory 1024 --vcpus 1
--disk size=10 --cdrom /path/to/ubuntu.iso
--os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole
done
- Ansible에 의한 가상 환경 구축 인프라 자동화 도구 “Ansible”을 활용하면, 플레이북을 작성하기만 하면 KVM 가상 머신의 생성 및 초기 설정, 애플리케이션 도입까지 일괄 자동화할 수 있습니다。 서버 대수가 많거나, 구성 관리의 일관성을 중시하는 경우에 특히 유효합니다。
클라우드와 같은 운영을 위한 팁
- 가상 머신 템플릿화 자주 사용하는 초기 상태의 가상 머신을 템플릿으로 저장해 두면, 새로운 서버의 배포가 순식간에 완료됩니다。
- API 연동·Web 기반 관리 도구 활용 libvirt에는 API도 제공되므로, 독자 도구나 다른 관리 시스템과 연동하는 것도 가능합니다. 대규모 환경에서는 Web 기반 관리 도구(Cockpit 등)를 활용하면, 시각적으로 가상 환경을 관리할 수 있습니다。
문제 해결·자주 발생하는 오류 해결
KVM 환경을 운영하면 가상 머신의 부팅 실패나 네트워크 연결 불량 등 다양한 문제에 직면할 수 있습니다. 이 장에서는 자주 발생하는 문제 패턴과 해결 방법, 로그 확인 절차 및 지원 리소스 활용 방법에 대해 설명합니다.
KVM에서 발생하기 쉬운 문제 예시
- 가상 머신이 부팅되지 않음/생성되지 않음
- 가상화 지원 기능(Intel VT, AMD-V)이 비활성화되어 있음
- 할당된 메모리나 디스크 용량이 부족함
- 스토리지 풀이나 ISO 이미지 경로가 잘못되어 있음
- 네트워크 연결이 안 됨
- 가상 머신의 네트워크 어댑터가 올바르게 설정되지 않음
- 브리지나 NAT 설정 오류, DHCP 할당 불량
- 방화벽 및 보안 설정의 영향
- 성능이 극도로 낮음
- 리소스 할당 과다/부족
- Virtio 드라이버가 도입되지 않음(특히 Windows 게스트)
- 디스크 I/O가 병목 현상이 되고 있음
로그 확인 방법·기본적인 해결 흐름
문제가 발생했을 때는 먼저 로그 확인이 중요합니다.- 시스템 로그 확인
sudo journalctl -xe
KVM 및 libvirt와 관련된 오류 메시지가 있는지 확인합니다.- libvirt 로그 확인
/var/log/libvirt/
아래에 있는 로그 파일(예: libvirtd.log)도 유용합니다. - 가상 머신별 로그 virt-manager와 virsh로 가상 머신 상태를 확인하고, “상세” 및 “로그” 탭에서 오류 내용을 조사합니다.
- 네트워크 상태 확인
ip a
brctl show
virsh net-list --all
위 명령으로 네트워크 연결 상태와 브리지 설정을 확인합니다. 문제 대응 기본 흐름- 상황을 정리하고, 언제부터 문제가 발생했는지 파악한다
- 위 로그와 설정을 확인한다
- 필요에 따라 설정 파일을 수정하고, 서비스 재시작이나 가상 머신 재생성을 시도한다
공식 문서 및 커뮤니티 활용법
문제가 생겼을 때는 아래 정보원이 크게 도움이 됩니다.- 공식 문서 Ubuntu 공식 KVM 문서 libvirt 공식 문서
- 커뮤니티 포럼·Q&A 사이트
- Ubuntu Forums
- Ask Ubuntu
- Stack Overflow
- 오류 메시지로 검색 발생한 오류 메시지를 일본어·영어 모두로 Google 검색하면 많은 사례를 찾을 수 있습니다.
보안·성능 최적화
KVM 환경을 안전하고 쾌적하게 운영하기 위해서는 보안 대책과 성능 최적화가 필수입니다. 여기에서는 가상화 기반을 보호하기 위한 포인트와 효율적인 리소스 활용을 위한 실용적인 노하우를 소개합니다.가상화 환경 보안 강화 방안
- 불필요한 서비스 중지·최소 구성 가상 머신 내에서 사용하지 않는 서비스는 비활성화하고, 공격 대상을 최소화합시다. 또한, 호스트 OS도 마찬가지로 불필요한 서비스를 중지합니다.
- 방화벽 및 접근 제한 철저 호스트·게스트 양쪽에서 방화벽(예: ufw와 firewalld)을 적절히 설정하여 외부의 불법 접근을 차단합니다. SSH 접근은 포트 번호 변경, 공개키 인증, fail2ban 등으로 보호하는 것이 권장됩니다.
- 가상 머신 간 격리(네트워크 세그먼트 분리) 중요한 서버끼리는 가상 네트워크를 분리하거나 물리적으로 네트워크를 분리함으로써, 만일의 침해 시 피해 확대를 방지할 수 있습니다.
- 정기적인 업데이트 철저 호스트 OS·게스트 OS 모두 보안 패치와 소프트웨어 업데이트를 꾸준히 수행합시다.
리소스 할당 최적화(CPU/메모리/디스크 I/O)
- 리소스 관리 기본 가상 머신마다 CPU와 메모리를 적절히 배분하고, 호스트 측에 여유를 남겨 전체 안정성을 유지합니다. 과도한 리소스 할당은 호스트·다른 가상 머신 양쪽의 성능 저하를 초래합니다.
- 디스크 I/O 최적화 스토리지 성능이 병목이 되기 쉬우므로, 중요한 가상 머신에는 고속 SSD 스토리지를 할당하는 것이 효과적입니다. 또한, qcow2 형식의 스냅샷을 많이 사용하면 성능 저하 원인이 될 수 있으니 운영 균형을 고려합시다.
- virtio 드라이버 활용 게스트 OS에 virtio 드라이버를 도입하면 디스크와 네트워크 성능이 크게 향상됩니다.
백업·스냅샷 자동화
- 스냅샷 정기 획득 운영 중인 가상 머신은 정기적으로 스냅샷을 확보함으로써 장애 시 신속한 복구가 가능합니다.
- 가상 디스크 및 설정 파일 백업 가상 디스크 이미지(qcow2 또는 raw 파일)와 libvirt 설정 XML 파일은 정기적으로 별도 스토리지나 외부 서버에 백업합시다.
- 자동화 도구와 연계 cron이나 Ansible 등의 자동화 도구를 사용하면 백업 및 스냅샷 획득을 정기적으로 실행할 수 있습니다.
요약·향후 학습 리소스
이 기사에서는 Ubuntu에서 KVM을 사용한 가상화 환경 구축부터 운영, 실용적인 활용법 및 트러블슈팅, 그리고 보안과 성능 최적화까지 폭넓게 설명했습니다. 마지막으로, 지금까지의 내용을 되돌아보며, 추가적인 스킬 향상에 도움이 되는 학습 리소스를 소개합니다.이 글의 요약
- KVM의 개요와 장점 KVM은 오픈소스이면서 고성능 가상화 기술이며, Ubuntu 서버를 중심으로 다양한 상황에서 사용됩니다.
- 설치부터 운영까지의 흐름 CPU 가상화 지원 기능 확인부터 필요한 패키지 설치, 사용자 권한 설정, 가상 머신 생성 및 기본 조작까지, 단계별로 설명했습니다.
- 네트워크·스토리지·운용 실전 포인트 기본 NAT와 브리지 등 용도에 맞는 네트워크 구성, 스토리지 풀 관리와 디스크 확장, 스냅샷 활용 방법도 배웠습니다.
- 문제 대응 및 보안 자주 발생하는 오류에 대한 대처법, 로그 확인 방법, 그리고 안전하고 효율적인 운영을 위한 보안·최적화 포인트도 소개했습니다.
향후 단계·추천 학습 리소스
KVM은 기본을 잡으면 개인부터 기업까지 폭넓게 활용할 수 있는 가상화 기반입니다. 이번 내용을 참고하여, 자신의 목적과 환경에 맞는 KVM 활용을 더욱 깊게 해보세요.명령어 빠른 참고표 및 자주 사용하는 설정 예시(치트시트)
KVM 및 libvirt를 사용할 때, 자주 쓰는 명령어와 설정 예시를 손에 넣어두면 매우 편리합니다. 이 장에서는 일상적인 가상 머신 관리에 도움이 되는 대표적인 명령어와 네트워크·디스크 설정 예시를 간결하게 소개합니다.KVM/virsh/virt-manager 주요 명령어 목록
- 가상 머신 목록 표시
virsh list --all
- 가상 머신 시작
virsh start <가상머신명>
- 가상 머신 종료
virsh shutdown <가상머신명>
- 가상 머신 강제 정지
virsh destroy <가상머신명>
- 가상 머신 생성(virt-install)
virt-install --name <이름> --memory <MB> --vcpus <코어수>
--disk size=<GB> --cdrom <ISO파일경로>
--os-type linux --os-variant ubuntu20.04
- 가상 머신 삭제(설정만)
virsh undefine <가상머신명>
네트워크·브리지 관련 설정 예시
- 현재 네트워크 목록 표시
virsh net-list --all
- 새로운 네트워크 생성(XML 예시)
/etc/libvirt/qemu/networks/
배치에 XML 파일을 배치하고,virsh net-define <파일명>
,virsh net-start <네트워크명>
로 활성화
스토리지 관리·디스크 작업 예시
- 스토리지 풀 목록
virsh pool-list --all
- 가상 디스크 확장
sudo qemu-img resize /path/to/disk.qcow2 +10G
- 스냅샷 생성
virsh snapshot-create-as <가상머신명> <스냅샷명>
자주 사용하는 기타 팁
- 가상 머신 자동 시작 설정
virsh autostart <가상머신명>
- 가상 머신 상세 정보 조회
virsh dominfo <가상머신명>
- virt-manager 실행(GUI 환경)
virt-manager
FAQ(자주 묻는 질문)
KVM 및 Ubuntu 가상화 환경의 구축·운용에 대해 독자들로부터 자주 제시되는 질문과 그 답변을 정리했습니다. 문제 대응 및 운용 팁으로 활용해 주세요.Q1: KVM과 VirtualBox 및 VMware의 차이점은 무엇인가요?
A1: KVM은 Linux 커널에 통합된 고성능 가상화 기반으로, 서버 용도 및 본격 운용에 적합합니다. VirtualBox는 데스크톱 용도에, VMware는 상용 지원 및 대규모 운용에 풍부한 기능을 제공하지만, 비용을 절감하면서 높은 성능을 원할 경우 KVM을 권장합니다.Q2: 가상 머신의 백업 및 복구는 어떻게 하면 좋나요?
A2: 가상 디스크 이미지(qcow2 및 raw 파일)를 복사하면 간단히 백업할 수 있습니다. 또한, virsh의 스냅샷 기능이나 가상 머신의 XML 설정 파일을 함께 저장해 두면 복구가 원활합니다.Q3: 가상 머신에서 USB 장치를 사용하려면?
A3: virt-manager의 ‘하드웨어 추가’ 기능이나 virsh에서 USB 패스스루 설정을 하면 USB 메모리, 외장 HDD, 프린터 등을 가상 머신에서 인식시킬 수 있습니다.Q4: 가상 머신을 호스트 부팅 시 자동으로 시작하려면?
A4:virsh autostart <가상머신명>
명령을 실행하면 해당 가상 머신은 호스트 OS 부팅과 동시에 자동으로 시작하도록 설정할 수 있습니다.