요즘 가상화는 그 어느 때보다 널리 활용되고 있습니다. 기존의 한 대의 물리 머신 위에 여러 개의 가상 머신(VM)을 생성할 수 있다면 교육, 테스트와 실험, 업무 생산성 향상 등 다양한 분야에서 큰 도움이 됩니다. 특히 리눅스는 강력하고 폭넓게 사용되는 운영체제인 만큼, 개인용 가상화 서버나 워크스테이션을 구축하기에 최적의 환경입니다. 이 글에서는 리눅스 가상화 워크스테이션을 처음부터 끝까지 구축하는 방법을 소개합니다.
가상화를 위한 하드웨어 호환성 확인
패키지 설치에 앞서 가장 먼저 확인해야 할 것은 CPU가 하드웨어 가상화를 지원하는지 여부입니다. 최근 출시되는 노트북과 데스크톱용 CPU는 대부분 지원하지만, 미리 점검해 두는 것이 좋습니다. 아래 명령어로 /proc/cpuinfo 파일에서 필요한 가상화 기술이 있는지 확인할 수 있습니다. 시스템에 어떤 CPU가 장착되어 있는지 확실하지 않다면 두 명령을 모두 실행해 보아도 무방합니다.
grep vmx /proc/cpuinfo # 인텔(Intel) CPU 확인 grep svm /proc/cpuinfo # AMD CPU 확인
필자의 시스템은 인텔 CPU를 사용 중이라 출력 결과가 아래 이미지와 같습니다.
위 명령어에서 아무런 출력도 나오지 않는다면 lscpu 명령의 결과에서 "Virtualization(가상화)" 항목을 직접 찾아보세요. 필자의 경우 다음 이미지와 같습니다.
이제 시스템이 가상화를 처리할 준비가 되었음을 알 수 있습니다. 추가로 권장하는 사양도 있습니다. 최소 8GB의 RAM을 갖추는 것이 좋으며, 쾌적한 환경을 원한다면 16GB, 32GB, 심지어 64GB까지 고려해 보세요. 메모리가 충분하면 여러 개의 VM을 부담 없이 동시에 실행할 수 있고, 하나의 시스템 위에서 완전한 클라이언트/서버 네트워크나 워크스테이션 그룹까지 구성할 수 있습니다.
KVM 설치하기
KVM은 Kernel-based Virtual Machine(커널 기반 가상 머신)의 약자로, 리눅스 네이티브 하이퍼바이저 중 가장 뛰어난 솔루션입니다. 성능이 우수하고 KVM 가상 머신을 관리할 수 있는 방법도 다양합니다. 또한 QEMU가 함께 사용되어 하드웨어 에뮬레이션 역할을 담당합니다.
서버 구축에 필요한 패키지들을 설치하려면 배포판에 따라 아래 명령어를 실행하세요.
Fedora의 경우:
sudo dnf -y groupinstall "Virtualization Host"; sudo dnf -y install virt-install
Ubuntu 및 Ubuntu 기반 배포판의 경우:
sudo apt -y install qemu-kvm libvirt-daemon-system libvirt-daemon virtinst bridge-utils libosinfo-bin libguestfs-tools virt-top
KVM 설치가 완료되면 커널 모듈이 정상적으로 로드되었는지 아래 명령으로 확인하세요.
lsmod | grep kvm
그다음 KVM 데몬(libvirtd)을 시작하고 부팅 시 자동 실행되도록 활성화합니다.
sudo systemctl start libvirtd sudo systemctl enable libvirtd sudo systemctl status libvirtd
정상적으로 설정되었다면 출력 결과가 아래 이미지와 같이 표시됩니다.
많은 가이드 문서들이 이 시점에 VM들이 외부 네트워크에 접근할 수 있도록 브리지(bridge) 설정을 진행합니다. 여기서는 다루지 않지만, 다양한 브리지 구성 방법을 설명하는 Arch Wiki 문서를 참고하면 좋습니다. VM이 상위 네트워크에 서비스를 제공해야 하는 경우에는 유용하지만, 단순히 테스트와 샌드박스 용도라면 기본 네트워크 옵션만으로도 충분합니다.
GUI 환경에서 KVM VM 설치 및 관리하기
KVM 가상 머신을 관리하는 방법은 여러 가지가 있습니다. 리눅스 워크스테이션 또는 서버에 그래픽 데스크톱 환경을 사용 중이라면 Virtual Machine Manager나 GNOME Boxes*를 활용할 수 있습니다. CLI 전용 서버를 운영하면서 GUI 인터페이스가 필요하다면 Cockpit을 사용하고, 인터페이스의 "Applications(애플리케이션)" 메뉴에서 "Machines" 앱을 설치하여 VM을 관리할 수 있습니다. 이러한 GUI 도구들은 모두 KVM VM 설치 기능도 함께 제공합니다.
* GNOME Boxes는 KVM 가상 머신을 다루는 가장 간편한 방법이지만, 네트워킹·스토리지·하드웨어 구성 등 세부적인 제어 기능 면에서는 다른 도구들에 비해 많이 부족합니다.
터미널에서 KVM VM 설치하기
앞서 설치한 패키지에 포함된 CLI 도구를 사용할 수도 있습니다. virt-install은 XML 정의 파일을 일일이 작성하지 않고도 KVM 가상 머신을 설치할 수 있는 훌륭한 도구입니다. 사용 가능한 옵션이 매우 다양하지만, 필자가 가장 잘 활용해 온 템플릿은 다음과 같습니다.
sudo virt-install \ --connect qemu:///system \ --name <NAME> \ --memory <MEMORY_IN_MB> \ --vcpus <CPUs> \ --disk size=<SIZE> \ --cdrom /PATH/TO/ISO/FILE
이 명령 하나로 시스템 구성에 필요한 대부분의 요소를 정의할 수 있습니다. 네트워크를 통한 설치나 이미지 가져오기도 가능하며, size 옵션 뒤에 쉼표로 구분하여 "path=/PATH/TO/DIR/DISKNAME.qcow2" 형식을 추가하면 디스크 저장 위치를 직접 지정할 수도 있습니다. 자세한 내용은 Red Hat의 virt-install 공식 문서를 참고하세요.
명령을 실행하면 Remote Viewer(virt-viewer)가 열리고, 일반적인 OS 설치 과정을 그대로 진행할 수 있습니다. GUI 접근이 필요하므로 헤드리스(headless) 서버라면 앞서 언급한 Cockpit 사용을 추천합니다. 또한 kickstart 파일을 활용하면 RHEL 계열 배포판을 virt-install로 자동 설치할 수도 있습니다.
터미널에서 KVM VM 관리하기
KVM 가상 머신을 관리할 때 가장 핵심적인 명령어는 virsh입니다. 일반 명령어 형태와 대화형 셸 형태 두 가지로 사용할 수 있으며, sudo virsh를 입력하고 Enter 키만 누르면 바로 진입할 수 있습니다.
몇 가지 예시를 들자면, list --all로 모든 도메인(VM) 목록을 조회하고, start로 도메인을 시작하며, shutdown으로 종료할 수 있습니다.
virsh에는 방대한 수의 옵션이 존재합니다. man 페이지를 살펴보며 터미널에서 관리할 수 있는 다양한 기능들을 직접 탐색해 보시길 권합니다.
또한 VM에 IP 주소로 SSH 접속하는 것도 가능합니다. VM들은 virbr0 인터페이스로부터 IP를 할당받으며, 기본적으로 VM의 네트워크 인터페이스는 SSH 접근이 허용되어 있습니다.
이제 리눅스 시스템 위에 가상화 워크스테이션이 완성되었습니다. 마지막으로 가상 머신의 성능을 쉽게 향상시키는 방법과 VNC를 통해 리눅스 VM에 접속하는 방법도 함께 익혀두시면 더욱 유용하게 활용할 수 있습니다.