Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

이 글에서는 Linux RHEL 또는 CentOS가 설치된 서버에 KVM 하이퍼바이저를 설치하고 구성하는 방법을 단계별로 살펴봅니다. KVM에서 가상 머신(VM)을 생성하고 설정을 변경하며 게스트 운영체제를 설치하는 과정을 안내하고, 가상 머신 관리에 자주 사용되는 기본 명령어도 함께 소개합니다.

KVM(Kernel-based Virtual Machine)이란?

KVM(Kernel-based Virtual Machine)은 Intel VT-x 또는 AMD SVM과 같은 하드웨어 가상화 기술을 활용하는 Linux 하이퍼바이저입니다. KVM을 사용하면 네트워크 어댑터, 디스크, 그래픽 카드 등 자체 가상 하드웨어를 갖춘 격리된 가상 머신을 만들 수 있습니다. 게스트 OS는 Linux뿐 아니라 Windows를 포함한 어떤 운영체제든 설치할 수 있습니다.

CentOS/RHEL에 KVM 설치하기

KVM 구성의 첫 단계는 CPU 확인입니다. 호스트 서버에 장착된 CPU가 하드웨어 가상화를 지원하는지 반드시 확인해야 합니다. 서버 콘솔에서 다음 명령어를 실행하세요:

# cat /proc/cpuinfo | egrep "(vmx|svm)"

CPU가 VT-x를 지원한다면 다음과 같은 출력 결과를 볼 수 있습니다:

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

명령어 실행 결과가 아무것도 나오지 않았는데 CPU가 가상화를 지원하는 것으로 알고 있다면, 서버 BIOS에서 해당 옵션이 비활성화되어 있지 않은지 확인하세요. BIOS 설정에서 Intel Virtualization Technology 또는 SVM MODE 항목을 찾아 활성화하면 됩니다.

제 서버는 VT-x를 지원하고 활성화되어 있으므로, yum/dnf 패키지 관리자로 필요한 패키지를 설치할 수 있습니다:

# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y

  • qemu-kvm – KVM 하이퍼바이저
  • libvirt – 가상화 관리 라이브러리
  • virt-install – KVM 가상 머신을 관리하는 CLI 도구

설치 과정에서 많은 패키지가 함께 설치되므로, 오류 없이 정상적으로 완료되었는지 확인하세요.

다음으로 libvirtd 서비스를 부팅 시 자동 시작하도록 등록하고 실행합니다:

# systemctl enable libvirtd
# systemctl start libvirtd

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

kvm_intelkvm 커널 모듈이 정상적으로 로드되었는지 확인합니다:

# lsmod | grep kvm

kvm_intel 188688 0
kvm 636931 1 kvm_intel
irqbypass 13503 1 kvm

명령어 결과가 비어 있다면 호스트를 재부팅한 후 다시 확인해 보세요.

KVM용 브리지(Bridge) 네트워크 생성 및 구성

먼저 가상 머신 디스크와 ISO 이미지를 저장할 디렉터리를 생성합니다:

# mkdir -p /vz/{disk,iso}

가상 머신이 인터넷에 접속하려면 브리지(bridge) 방식으로 네트워크를 구성해야 합니다. 이를 위해서는 bridge-utils 패키지가 필요합니다. 다음 명령어로 설치 여부를 확인하세요:

# rpm -qa | grep bridge-utils

설치되어 있지 않다면 설치합니다:

# yum install bridge-utils -y

패키지 설치 후 운영체제에 virbr0 네트워크 인터페이스가 생성된 것을 확인할 수 있습니다:

# ip a

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

브리지를 생성하려면 서버 네트워크 인터페이스 설정 파일을 수정해야 합니다. 먼저 원본 파일을 백업한 후 편집기로 엽니다:

# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – 파일 백업
# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 – 편집기로 열기

파일 내용을 모두 지우고 다음 내용으로 교체합니다:

DEVICE="enp1s0f0"
ONBOOT="yes"
BRIDGE=br0

인터페이스 이름은 환경에 따라 다를 수 있으며, ip a 명령어로 확인할 수 있습니다.

그다음 브리지 설정 파일을 새로 생성합니다:

# nano /etc/sysconfig/network-scripts/ifcfg-br0
파일에 다음 내용을 입력합니다:

DEVICE="br0"
TYPE=BRIDGE
ONBOOT=yes
BOOTPROTO=static
IPADDR="서버_IP_주소"
NETMASK="255.255.255.0"
GATEWAY="기본_게이트웨이"
DNS1="8.8.8.8"
DNS2="8.8.4.4"

서버의 실제 IP 주소와 기본 게이트웨이를 반드시 입력해야 합니다. 네트워크 인터페이스 설정 파일 수정 후 네트워크를 재시작합니다:

# service network restart

네트워크 재시작 후 서버에 접속할 수 없다면 호스트를 재부팅해 보세요. 경우에 따라 브리지가 올바르게 적용되려면 재부팅이 필요할 수 있습니다.

브리지 상태를 확인하려면 다음 명령어를 사용합니다:

# brctl show

bridge name     bridge id               STP enabled     interfaces
br0             8000.ac1f6b654321       no              enp1s0f0
virbr0          8000.525400abcdef1      yes             virbr0-nic

마지막으로 네트워크 트래픽 포워딩을 설정합니다:

# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p

그런 다음 libvirtd를 재시작합니다:

# service libvirtd restart

이제 KVM의 기본 네트워크 구성이 완료되었으며, 가상 머신을 생성할 준비가 되었습니다.

KVM에서 가상 머신 생성하기

가상 머신을 생성하기 전에 공식 미러 사이트에서 CentOS 8 이미지를 다운로드하여 /vz/iso 디렉터리에 저장했습니다:

# cd /vz/iso && wget https://mirror.imt-systems.com/centos/8.3.2011/isos/x86_64/CentOS-8.3.2011-x86_64-dvd1.iso

새로운 KVM 가상 머신을 생성하려면 다음 명령어를 실행합니다:

virt-install -n test-centosvm \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=4 --cpu host --check-cpu \
--disk path=/vz/disk/test-centosvm.img,size=32 \
--cdrom /vz/iso/CentOS-8.3.2011-x86_64-dvd1.iso \
--graphics vnc,listen=IP,password=p@sswdr0w1 \
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on

  • test-centosvm — 가상 머신 이름
  • noautoconsole – VM 생성 후 콘솔에 자동으로 연결하지 않음
  • network – 네트워크 유형(여기서는 브리지 br0 사용)
  • ram — VM에 할당할 RAM 용량(MB)
  • vcpus – CPU 코어 수(vCPU 구성)
  • disk – 가상 디스크(path는 디스크 경로, size는 디스크 크기 GB 단위, 이후 확장/축소 가능)
  • cdrom – 가상 CDROM, 게스트 OS 설치용 ISO 이미지가 마운트됨
  • graphics — 그래픽 콘솔 접속 파라미터. VNC로 접속하므로 listen에는 VM이 생성된 KVM 서버의 IP 주소와 콘솔 접속 비밀번호를 지정

호스트 부팅 시 VM이 자동으로 시작되도록 설정하려면 다음 명령어를 실행합니다:

# virsh autostart test-centosvm

VNC로 KVM 가상 머신에 접속하여 OS 설치하기

VNC로 KVM 가상 머신에 접속하려면 먼저 사용 중인 포트 번호를 확인해야 합니다:

# virsh vncdisplay test-centosvm

IP:0

0은 VNC 접속 포트가 5900번이라는 의미입니다. 다른 값이 반환되면 5900에 해당 숫자를 더한 포트를 사용하면 됩니다.

VNC 접속에는 TightVNC 클라이언트를 사용합니다. TightVNC를 실행하고 서버 IP 주소와 앞서 확인한 VNC 포트를 콜론 두 개(::)로 구분하여 입력합니다.

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

Connect를 클릭하고 VM 생성 시 설정한 비밀번호를 입력합니다. 올바르게 접속하면 서버 콘솔 화면이 나타나며, CentOS(또는 마운트한 다른 게스트 OS) 설치가 진행됩니다.

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

서버에 방화벽이 활성화되어 있다면 firewalld/iptables에서 VNC용 포트 5900~5910을 열어 주세요(10개 포트면 충분합니다). 가상 머신에 게스트 OS 설치를 마친 후에는 서버 콘솔에서 VM을 시작할 수 있습니다:

CentOS/RHEL 서버에 KVM 하이퍼바이저 설치 및 구성 완벽 가이드

KVM 가상 머신을 종료하려면 다음 명령어를 사용합니다:

# virsh shutdown test-centosvm

등록된 모든 KVM 가상 머신 목록을 보려면:

# virsh list --all

virsh를 사용한 서버 콘솔 기반의 KVM 가상 머신 관리(RAM, CPU, 디스크, 네트워크 인터페이스 추가 등)에 대해 더 자세히 알아보세요. 그래픽 인터페이스를 선호한다면 virt-manager라는 KVM GUI 도구를 사용할 수도 있습니다.

이제 KVM 호스트의 기본 구성이 끝났고 가상 머신도 성공적으로 생성되었습니다. KVM에서는 서버 리소스와 필요에 따라 원하는 만큼 가상 머신을 추가로 생성할 수 있습니다.