Ubuntu에서 KVM 가상화 완전 가이드: 설치, 네트워킹, 스토리지 및 모범 사례

目次

Introduction

Ubuntu는 전 세계에서 가장 널리 사용되는 Linux 배포판 중 하나로, 개인 사용자부터 기업 시스템에 이르기까지 다양한 환경에서 신뢰받고 있습니다. 서버 구축 및 개발 환경에서 흔히 사용됩니다. Ubuntu에서 본격적인 가상화를 구현하고자 할 때 가장 강력한 솔루션 중 하나가 KVM(커널 기반 가상 머신)입니다.

KVM은 Linux 커널에 직접 내장된 하이퍼바이저 기반 가상화 기술입니다. Intel VT와 AMD‑V와 같은 하드웨어 지원 가상화 기능을 활용해 높은 성능과 안정성을 제공합니다. 오픈 소스 솔루션인 KVM은 비용을 최소화하면서도 견고한 가상화 인프라를 구축할 수 있게 해줍니다.

가상화 기술은 처음에 복잡하게 느껴질 수 있습니다. 하지만 Ubuntu와 KVM을 결합하면 초보자도 비교적 쉽게 가상 머신을 만들고 운영할 수 있습니다. 기존 물리 서버 자원을 효율적으로 활용하고자 하는 중급 사용자나, 생산 시스템을 가상화하려는 엔지니어에게도 강력히 추천됩니다.

이 문서는 Ubuntu에서 KVM 기반 가상화 환경을 구축하는 방법을 자세히 설명합니다. 기본 사용법, 실전 운영 기법, 흔히 발생하는 문제에 대한 해결책을 다룹니다. KVM 도입을 고려 중이거나 Ubuntu에서 가상화를 보다 효율적으로 활용하고 싶다면 반드시 끝까지 읽어 보시기 바랍니다.

Comparison Between KVM and Other Virtualization Technologies

사용 가능한 가상화 기술은 다양합니다. Ubuntu 환경에서 흔히 사용되는 옵션으로는 KVM, VirtualBox, VMware가 있습니다. 이 섹션에서는 각각의 특성과 차이점, 그리고 KVM을 선택했을 때의 장단점을 설명합니다.

Main Types of Virtualization Technologies

  • KVM (Kernel-based Virtual Machine)
    KVM은 Linux 커널에 내장된 가상화 기능으로, 호스트 OS가 Linux여야 합니다. Intel VT와 AMD‑V와 같은 하드웨어 가상화 지원을 활용해 생산 환경에 적합한 높은 가상 머신 성능을 제공합니다. 명령줄 도구와 virt‑manager와 같은 관리 유틸리티를 사용해 유연하게 운영할 수 있습니다.
  • VirtualBox
    VirtualBox는 Oracle에서 제공하는 데스크톱 중심 가상화 소프트웨어로, Windows, macOS, Linux에서 실행됩니다. 직관적인 인터페이스를 갖추고 있어 개인용이나 학습용으로 많이 사용됩니다. 그러나 KVM에 비해 고부하 혹은 상업 환경에는 적합하지 않은 경우가 많습니다.
  • VMware (VMware Workstation / ESXi 등)
    VMware는 기업 환경에서 널리 사용되는 상용 가상화 제품입니다. 풍부한 기능과 강력한 지원을 제공하지만, 라이선스 비용이 발생해 특히 대규모 배포 시 운영 비용이 증가합니다.

Advantages of KVM

  • High Performance and Stability
    KVM은 Linux 커널의 일부로 동작하므로 효율적인 자원 사용과 CPU·메모리 할당에 대한 세밀한 제어가 가능합니다. 높은 안정성 덕분에 실제 생산 시스템에 적합합니다.
  • Open Source and Cost‑Free
    KVM은 완전 오픈 소스이며 라이선스 비용이 없어 제한된 예산으로도 가상화 플랫폼을 구축할 수 있습니다.
  • Rich Management Tools and Automation
    KVM은 명령줄 도구(virsh, virt‑install)와 GUI 도구(virt‑manager)를 모두 제공해 자동화 작업이 용이하고, DevOps·인프라 관리 워크플로와 쉽게 통합할 수 있습니다.

Disadvantages of KVM

  • Linux‑Only Host OS
    KVM은 Linux 커널이 필요하므로 Windows나 macOS를 호스트 OS로 사용할 수 없습니다.
  • Linux Knowledge Required for Setup and Troubleshooting
    GUI 도구가 존재하지만, 고급 설정 및 문제 해결은 종종 명령줄 작업과 Linux에 대한 전문 지식을 요구합니다.

When Should You Choose KVM?

  • 물리 서버 자원을 효율적으로 활용하고 싶을 때
  • 프로덕션 수준 시스템이나 서버에 가상화가 필요할 때
  • 저비용으로 완전한 기능을 갖춘 가상화 플랫폼을 구축하고 싶을 때
  • Linux 서버 운영 및 인프라 관리를 자동화하고 싶을 때

KVM은 숙련된 Linux 사용자와 엔지니어에게만 권장되는 것이 아니라, 앞으로 본격적인 서버 운영을 계획하고 있는 사람들에게도 권장됩니다.

가상 머신 생성 및 기본 작업

KVM 환경이 준비되면 가상 머신을 생성하고 운영할 수 있습니다. KVM은 사용 사례에 따라 그래픽 관리 도구(virt-manager)와 명령줄 작업(virt-install 및 virsh) 중에서 선택할 수 있게 해줍니다. 이 섹션에서는 두 가지 접근 방식을 모두 소개합니다.

virt-manager(GUI)를 사용한 가상 머신 생성

virt-manager는 직관적인 그래픽 인터페이스를 통해 가상 머신을 생성하고 관리할 수 있는 도구입니다. Linux 데스크톱 환경을 사용한다면 virt-manager가 특히 편리합니다.

  1. 애플리케이션 메뉴 또는 명령줄에서 virt-manager를 실행합니다.
  2. 좌측 상단의 “New” 버튼을 클릭합니다.
  3. 설치 미디어 위치(예: ISO 이미지)를 선택하고 게스트 OS 유형(예: Ubuntu 또는 Windows)을 선택합니다.
  4. 가상 머신의 CPU 개수, 메모리 크기, 디스크 용량을 설정합니다.
  5. 설정을 검토하고 “Finish”를 클릭하여 가상 머신을 생성하고 설치 과정을 시작합니다.

virt-manager를 사용하면 가상 머신을 쉽게 시작·중지·재시작하고, 스냅샷을 찍으며, 네트워크 인터페이스나 스토리지 장치를 추가할 수 있습니다.

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)

명령을 실행하면 가상 머신이 자동으로 시작되고 VNC 등 그래픽 인터페이스를 통해 설치 화면이 표시됩니다.

가상 머신 시작·중지·삭제·스냅샷 생성

KVM은 간단한 명령으로 가상 머신을 손쉽게 관리할 수 있게 해줍니다. 일반적인 작업은 다음과 같습니다.

  • 가상 머신 시작
    virsh start <virtual-machine-name>
    
  • 가상 머신 종료
    virsh shutdown <virtual-machine-name>
    
  • 가상 머신 강제 중지
    virsh destroy <virtual-machine-name>
    
  • 가상 머신 삭제(디스크를 제거할 경우 주의)
    virsh undefine <virtual-machine-name>
    
  • 스냅샷 생성
    virsh snapshot-create-as <virtual-machine-name> <snapshot-name>
    

이러한 작업은 모두 virt-manager GUI를 통해서도 수행할 수 있습니다.

네트워크 구성 및 확장

네트워크 구성은 KVM으로 가상 머신을 운영할 때 중요한 요소입니다. 기본 설정만으로도 많은 경우에 충분하지만, 프로덕션 환경에서는 맞춤 구성이 필요할 때가 많습니다. 이 섹션에서는 KVM 네트워킹의 기본과 흔히 사용되는 고급 설정을 설명합니다.

기본 NAT(virbr0)와 브리지 네트워킹의 차이점

KVM을 설치하면 virbr0라는 가상 네트워크 브리지가 자동으로 생성됩니다. 이는 다음과 같은 특성을 가진 NAT 기반 네트워크입니다.

  • virbr0 (NAT 모드)의 특징
  • 가상 머신이 외부 인터넷에 접근 가능
  • 호스트 또는 다른 네트워크에서 직접 접근하려면 포트 포워딩 필요
  • 가정용, 개발 및 테스트 환경에 이상적

대조적으로, 브리지 네트워킹은 가상 머신에 물리 네트워크와 동등한 접근을 제공합니다.

  • 브리지 네트워킹의 특징
  • 가상 머신이 호스트와 동일한 네트워크 세그먼트에 참여
  • 물리 PC 및 다른 서버에서 직접 접근 가능
  • 프로덕션 서버 및 공개 서비스에 이상적

사용자 정의 브리지 생성 및 구성 (LAN 접근용)

프로덕션 서버나 다른 PC에서 가상 머신에 직접 접근하도록 하려면 브리지 네트워크를 구성해야 합니다. 아래는 호스트의 물리 NIC가 eth0인 경우의 일반적인 절차 예시입니다.

  1. bridge-utils 설치 (이미 설치되어 있으면 건너뛰기)
    sudo apt install bridge-utils
    
  1. 네트워크 설정 파일 편집 Ubuntu 18.04 이후 버전은 Netplan을 사용합니다. /etc/netplan/01-netcfg.yaml 와 같은 설정 파일을 편집합니다. 예시:
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
      bridges:
        br0:
          interfaces: [eth0]
          dhcp4: yes
    
  1. 설정 적용
    sudo netplan apply
    
  1. 새 브리지 (br0)를 가상 머신 네트워크에 할당 virt-manager 또는 virsh를 사용해 네트워크 어댑터를 br0로 변경합니다.

정적 IP 할당 및 포트 포워딩

  • 정적 IP 할당 게스트 OS 내부에서 정적 IP를 설정하거나 MAC 주소 기반 DHCP 서버에서 고정 IP를 할당할 수 있습니다.
  • 포트 포워딩 (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 포맷
  • 압축이나 변환이 없는 단순 포맷
  • 최대 성능 및 고 I/O 워크로드에 최적

대부분의 경우 qcow2를 권장하지만, 구체적인 요구 사항에 따라 포맷을 선택하면 됩니다.

스토리지 풀 생성 및 관리

KVM은 가상 머신이 사용하는 디스크 자원을 스토리지 풀이라는 개념으로 관리합니다.

  • 기본 스토리지 풀 설치 후 /var/lib/libvirt/images/가 기본 스토리지 풀로 사용됩니다. 가상 디스크는 이 디렉터리 안에 생성됩니다.
  • 새 스토리지 풀 생성 (예시)
  1. 디렉터리 생성
    sudo mkdir /data/kvm-images && sudo chown libvirt-qemu:kvm /data/kvm-images
  2. 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 <virtual-machine-name> <snapshot-name>
    

스냅샷은 구성 변경, 시스템 업데이트 또는 롤백 시나리오 테스트 전에 백업을 수행할 때 매우 유용합니다.

게스트 OS 설치 및 운영

이 섹션에서는 KVM 가상 머신 내부에 운영 체제를 설치하고 효율적으로 운영하는 방법을 설명합니다. 일반적인 게스트 OS 설치 절차, ISO 이미지 처리 및 성능 최적화 팁을 다룹니다.

일반적인 게스트 운영 체제 설치

KVM은 Ubuntu, CentOS, Windows 등 다양한 게스트 운영 체제를 지원합니다. 아래는 Ubuntu와 Windows 설치 절차의 예시입니다.

  • Ubuntu 설치
  1. 공식 Ubuntu 웹사이트에서 최신 ISO 이미지를 다운로드합니다.
  2. virt-manager에서 새 가상 머신을 만들 때 “Local install media”를 선택하고 다운로드한 ISO 파일을 지정합니다.
  3. 가상 머신의 CPU, 메모리 및 디스크 용량을 설정합니다.
  4. 화면에 표시되는 안내에 따라 표준 Ubuntu 설치를 완료합니다.
  • Windows 설치
  1. 공식 Microsoft 웹사이트에서 Windows 평가용 ISO 이미지를 다운로드합니다.
  2. virt-manager 또는 virt-install을 사용해 새 가상 머신을 만들고 ISO 파일을 지정합니다.
  3. Windows 게스트의 경우 virtio 드라이버를 설치하면 디스크와 네트워크 성능이 크게 향상됩니다. virtio ISO를 가상 CD 드라이브에 마운트하고 설치 과정에서 적용합니다.

ISO 이미지 획득 및 마운트

  • 게스트 OS 설치에는 공식 소스에서 다운로드한 ISO 이미지가 필요합니다.
  • 가상 머신 생성 시 ISO 파일 경로를 지정하면 가상 CD/DVD로 마운트됩니다.
  • 필요에 따라 OS와 드라이버용 여러 ISO 이미지를 동시에 마운트할 수 있습니다.

게스트 OS 운영 및 성능 최적화 팁

  • 리소스 할당 최적화 CPU와 메모리를 적절히 할당합니다. 과도한 할당은 호스트 OS와 다른 가상 머신에 부정적인 영향을 줄 수 있습니다.
  • virtio 드라이버 설치 Windows 또는 오래된 Linux 게스트에 virtio 드라이버를 설치하면 디스크와 네트워크 성능이 크게 개선됩니다.
  • 불필요한 서비스 비활성화 게스트 OS 내부에서 사용하지 않는 서비스와 백그라운드 프로세스를 비활성화하면 시스템 리소스를 절약할 수 있습니다.
  • KVM 게스트 도구 사용 QEMU Guest Agent를 설치하면 VM 정보 조회와 제어된 종료 작업이 보다 정확해집니다.

실용적인 사용 사례 및 자동화 팁

KVM은 단순히 가상 머신을 생성하고 운영하는 수준을 넘어 다양한 비즈니스 및 개발 시나리오에서 널리 활용됩니다. 스크립트와 자동화 도구와 결합하면 관리 효율성을 크게 높일 수 있습니다. 이 섹션에서는 실용적인 사용 사례와 자동화 아이디어를 소개합니다.

서버 사용 사례 예시

  • 개발·테스트 환경 분리 각 프로젝트마다 별도의 가상 머신을 준비하면 소프트웨어 버전과 구성을 자유롭게 전환할 수 있습니다. 이를 통해 운영 시스템에 영향을 주지 않고 새로운 OS 버전이나 애플리케이션을 테스트할 수 있습니다.
  • 내부 서비스 구축 파일 서버, 웹 서버, 데이터베이스 서버 등을 별도 가상 머신에서 운영하면 장애 영향 범위를 제한할 수 있습니다. 백업 및 스냅샷도 VM 단위로 손쉽게 관리됩니다.

CLI 및 Ansible을 활용한 자동 프로비저닝

  • CLI를 이용한 자동 VM 생성 virt-installvirsh 명령을 스크립트화하면 다수의 가상 머신을 자동으로 생성·관리할 수 있습니다. 예시: 배치 VM 생성을 위한 셸 스크립트.
    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을 사용하면 플레이북만으로 가상 머신 생성, 초기 설정 및 애플리케이션 배포를 자동화할 수 있습니다. 이는 서버가 많거나 설정 일관성이 중요한 환경에서 특히 효과적입니다.

클라우드와 같은 운영을 위한 팁

  • VM 템플릿 만들기 자주 사용하는 기본 가상 머신을 템플릿으로 저장하면 새로운 서버를 거의 즉시 배포할 수 있습니다.
  • API 통합 및 웹 기반 관리 도구 libvirt은 사용자 정의 도구나 다른 관리 시스템과 통합할 수 있는 API를 제공합니다. 대규모 환경에서는 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)은 유용한 정보를 제공합니다.
  • VM 전용 로그 확인 virt-manager 또는 virsh를 사용해 VM 상태를 검사하고 로그 또는 상세 보기에서 오류 세부 정보를 검토합니다.
  • 네트워크 상태 확인
    ip a
    brctl show
    virsh net-list --all
    

이 명령들은 네트워크 연결 및 브리지 구성을 확인하는 데 도움이 됩니다.

기본 문제 해결 워크플로우

  1. 문제가 언제 시작되었는지, 무엇이 변경되었는지 파악
  2. 로그와 설정을 검토
  3. 필요에 따라 설정을 수정하고 서비스 재시작 또는 가상 머신 재생성

공식 문서 및 커뮤니티 리소스 활용

문제 해결 시 다음 리소스가 매우 유용합니다.

보안 및 성능 최적화

KVM 환경을 안전하고 효율적으로 운영하려면 보안 조치와 성능 최적화가 필수적입니다. 이 섹션에서는 가상화 플랫폼을 보호하고 자원 효율성을 극대화하기 위한 실용적인 기술을 소개합니다.

가상화 보안 강화

  • 불필요한 서비스 비활성화 및 구성 최소화 게스트와 호스트 시스템 모두에서 사용되지 않는 서비스를 비활성화하여 공격 표면을 줄입니다.
  • 방화벽 및 액세스 제어 호스트와 게스트 시스템 모두에서 방화벽(예: ufw 또는 firewalld)을 적절히 구성합니다. SSH 액세스를 보호하기 위해 비기본 포트, 키 기반 인증, fail2ban 같은 도구를 사용합니다.
  • 가상 머신 간 격리 손상 시 피해를 제한하기 위해 중요한 서버를 서로 다른 가상 네트워크 또는 물리적 네트워크 세그먼테이션을 사용하여 분리합니다.
  • 정기 업데이트 호스트와 게스트 시스템 모두를 보안 패치 및 소프트웨어 업데이트로 최신 상태로 유지합니다.

리소스 할당 최적화 (CPU, 메모리, 디스크 I/O)

  • 기본 리소스 관리 각 가상 머신에 CPU와 메모리를 신중하게 할당하면서 호스트 시스템에 충분한 리소스를 남겨둡니다.
  • 디스크 I/O 최적화 중요한 가상 머신에 고속 SSD 스토리지를 사용합니다. qcow2 형식에서 과도한 스냅샷 사용에 주의하세요. 성능에 영향을 줄 수 있습니다.
  • virtio 드라이버 사용 게스트 운영 체제에서 디스크와 네트워크 성능을 크게 향상시키기 위해 virtio 드라이버를 설치합니다.

백업 및 스냅샷 자동화

  • 정기 스냅샷 생성 시스템 장애 시 빠른 복구를 위해 주기적인 스냅샷을 생성합니다.
  • 디스크 이미지 및 구성 파일 백업 가상 디스크 이미지(qcow2 또는 raw)와 libvirt XML 구성 파일을 외부 스토리지에 정기적으로 백업합니다.
  • 자동화 도구 통합 백업 및 스냅샷 작업을 자동화하기 위해 cron 또는 Ansible을 사용합니다.

결론 및 학습 자료

이 기사는 Ubuntu에서 KVM 가상화 환경 구축부터 일상 운영, 실용 사례, 문제 해결, 보안, 성능 최적화까지 모든 것을 다루었습니다. 아래는 요약과 추가 학습을 위한 추천 자료입니다.

요약

  • KVM 개요 및 이점 KVM은 Ubuntu 서버 환경에서 널리 사용되는 오픈 소스 고성능 가상화 기술입니다.
  • 설치부터 운영까지 CPU 가상화 확인, 패키지 설치, 권한 설정, VM 생성, 기본 운영을 단계별로 안내했습니다.
  • 네트워킹, 스토리지 및 운영 모범 사례 NAT 및 브리지 네트워킹 구성, 스토리지 풀 관리, 디스크 확장, 스냅샷 효과적 사용 방법을 배웠습니다.
  • 문제 해결 및 보안 일반 오류 해결, 로그 검사 방법, 안전하고 효율적인 운영을 위한 모범 사례를 소개했습니다.

다음 단계 및 추천 자료

KVM은 개인 및 기업 모두에 적합한 강력한 가상화 플랫폼입니다. 이 가이드를 기반으로 이해를 심화하고 KVM을 특정 요구 사항에 맞게 조정하세요.

명령어 치트 시트 및 일반 구성 예시

자주 사용하는 명령어와 구성 예시를 쉽게 접근할 수 있으면 일상적인 VM 관리 효율이 크게 향상됩니다. 이 섹션은 간결한 참조를 제공합니다.

일반 KVM / virsh / virt-manager 명령어

  • 가상 머신 목록
    virsh list --all
    
  • 가상 머신 시작
    virsh start <virtual-machine-name>
    
  • 가상 머신 종료
    virsh shutdown <virtual-machine-name>
    
  • 가상 머신 강제 중지
    virsh destroy <virtual-machine-name>
    
  • 가상 머신 생성 (virt-install)
    virt-install --name <name> --memory <MB> --vcpus <cores> \
      --disk size=<GB> --cdrom <ISO-path> \
      --os-type linux --os-variant ubuntu20.04
    
  • 가상 머신 제거 (정의만)
    virsh undefine <virtual-machine-name>
    

네트워크 및 브리지 구성 예시

  • 네트워크 목록
    virsh net-list --all
    

스토리지 관리 및 디스크 작업

  • 스토리지 풀 목록
    virsh pool-list --all
    
  • 가상 디스크 크기 조정
    sudo qemu-img resize /path/to/disk.qcow2 +10G
    
  • 스냅샷 생성
    virsh snapshot-create-as <virtual-machine-name> <snapshot-name>
    

기타 유용한 팁

  • VM 자동 시작 활성화
    virsh autostart <virtual-machine-name>
    
  • VM 상세 정보 표시
    virsh dominfo <virtual-machine-name>
    
  • virt-manager 실행 (GUI)
    virt-manager
    

FAQ

Q1: KVM, VirtualBox, VMware의 차이점은 무엇인가요?

A1: KVM은 Linux 커널에 통합된 고성능 가상화 플랫폼으로, 프로덕션 서버에 적합합니다. VirtualBox는 주로 데스크톱 용도로 설계되었으며, VMware는 상업적 지원과 풍부한 엔터프라이즈 기능을 제공합니다. 비용 대비 높은 성능을 원한다면 KVM이 이상적입니다.

Q2: 가상 머신을 어떻게 백업하고 복원할 수 있나요?

A2: 가상 머신은 디스크 이미지 파일(qcow2 또는 raw)을 복사하여 백업할 수 있습니다. 또한 libvirt XML 설정 파일과 스냅샷을 백업하면 복원이 더 쉬워집니다.

Q3: 가상 머신 내부에서 USB 장치를 사용할 수 있나요?

A3: 예. virt-manager의 하드웨어 설정이나 virsh를 통해 USB 패스스루를 구성하면 USB 저장 장치, 외장 드라이브, 프린터 등을 가상 머신 내부에서 사용할 수 있습니다.

Q4: 호스트가 부팅될 때 가상 머신을 자동으로 시작하려면 어떻게 해야 하나요?

A4: virsh autostart <virtual-machine-name> 명령을 실행하면 호스트 시스템 부팅 시 자동 시작이 활성화됩니다.

Q5: 가상 머신이 느리게 실행될 경우 어떻게 해야 하나요?

A5: CPU와 메모리 할당을 검토하고, 디스크 I/O를 최적화하세요(더 빠른 스토리지를 사용하거나 필요에 따라 qcow2에서 raw로 전환). 또한 게스트 OS에 virtio 드라이버를 설치하면 성능이 향상됩니다.

Q6: 네트워크 구성이 올바르게 작동하지 않습니다. 무엇을 확인해야 하나요?

A6: virsh와 brctl 명령을 사용해 네트워크 상태를 확인하고, 브리지와 Netplan 또는 NetworkManager 설정 파일을 검토하세요. 필요하면 가상 네트워크를 다시 생성합니다.

Q7: KVM으로 클러스터 또는 고가용성(HA) 구성을 구축할 수 있나요?

A7: 예. KVM을 Pacemaker, Corosync 및 공유 스토리지(NFS 또는 iSCSI)와 결합하면 HA 구성과 라이브 마이그레이션을 구현할 수 있습니다. 다만 고급 지식이 필요합니다.