RHCSA 시리즈: KVM을 사용한 가상화 및 게스트 관리 기초 – Part 15

단어 virtualize를 사전에서 찾으면 “무언가의 가상(실제가 아닌) 버전을 만드는 것”이라는 의미를 찾을 수 있습니다. 컴퓨팅에서 가상화라는 용어는 동일한 물리적(하드웨어) 시스템 위에서 동시에 여러 운영 체제를 실행하고 서로 격리시킬 수 있는 가능성을 말하며, 가상화 스키마에서 호스트라고 알려져 있습니다.

RHCSA Series: Essentials of Virtualization and Guest Administration with KVM – Part 15

가상 머신 모니터(또는 하이퍼바이저라고도 함)를 사용하여 가상 머신(손님으로 알려진 손님)은 기본 하드웨어에서 가상 리소스(예: CPU, RAM, 저장소, 네트워크 인터페이스 등)를 제공받습니다.

이러한 점을 감안할 때 가상화의 주요 이점 중 하나는 비용 절감(장비 및 네트워크 인프라 및 유지 보수 노력 측면)과 필요한 모든 하드웨어를 수용하기 위해 필요한 물리적 공간의 상당한 감소입니다.

이 간단한 방법으로는 모든 가상화 방법을 다룰 수 없으므로 요약에 나열된 문서를 참조하여 항목에 대한 추가 세부 정보를 확인하는 것이 좋습니다.

이 기사는 RHEL 7에서 KVM(커널 기반 가상 머신)을 사용하여 명령줄 유틸리티로 가상화의 기본 사항을 배우기 위한 시작점으로 의도되었으며, 주제에 대한 심층적인 토론이 아닙니다.

하드웨어 요구 사항 확인 및 패키지 설치

가상화를 설정하려면 CPU가 지원해야 합니다. 다음 명령으로 시스템이 요구 사항을 충족하는지 확인할 수 있습니다:

# grep -E 'svm|vmx' /proc/cpuinfo

다음 스크린샷에서 현재 시스템(AMD 마이크로프로세서)이 svm으로 표시되어 가상화를 지원하는 것을 확인할 수 있습니다. 인텔 기반 프로세서가 있다면 위 명령의 결과에는 vmx가 표시됩니다.

Check KVM Support

또한, 호스트(BIOS 또는 UEFI)의 펌웨어에서 가상화 기능을 활성화해야 합니다.

이제 필요한 패키지를 설치하세요:

  1. qemu-kvm은 KVM 하이퍼바이저의 하드웨어 에뮬레이션을 제공하는 오픈 소스 가상화 도구이며, qemu-img는 디스크 이미지를 조작하는 명령 줄 도구를 제공합니다.
  2. libvirt는 운영 체제의 가상화 기능과 상호 작용하기 위한 도구를 포함합니다.
  3. libvirt-python은 libvirt가 제공하는 인터페이스를 사용하는 파이썬으로 작성된 응용 프로그램을 허용하는 모듈을 포함합니다.
  4. libguestfs-tools: 가상 머신에 대한 잡다한 시스템 관리자 명령 줄 도구입니다.
  5. virt-install: 가상 머신 관리를 위한 다른 명령 줄 유틸리티입니다.
# yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install

설치가 완료되면 libvirtd 서비스를 시작하고 활성화해야 합니다:

# systemctl start libvirtd.service
# systemctl enable libvirtd.service

기본적으로 각 가상 머신은 동일한 물리 서버 내의 다른 가상 머신 및 호스트 자체와만 통신할 수 있습니다. 게스트가 LAN 내의 다른 기계 및 인터넷에 액세스하려면 호스트에 브릿지 인터페이스를 설정해야 합니다(예: br0). 이를 위해 다음을 수행해야 합니다.

1. 주 NIC 설정 파일(아마도 /etc/sysconfig/network-scripts/ifcfg-enp0s3)에 다음 라인을 추가:

BRIDGE=br0

2. br0의 설정 파일(/etc/sysconfig/network-scripts/ifcfg-br0)을 다음 내용으로 생성(IP 주소, 게이트웨이 주소 및 DNS 정보를 변경해야 할 수 있음):

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4

3. 마지막으로, /etc/sysctl.conf에 패킷 전달을 활성화하기 위해 다음을 수행하고 현재 커널 구성에 변경 사항을 로드:

net.ipv4.ip_forward = 1

# sysctl -p

이러한 유형의 트래픽을 허용해야 하는 경우 firewalld에도 알려야 할 수 있습니다. 이에 대한 도움이 필요한 경우 이 시리즈의 동일한 주제에 대한 기사(제11부: FirewallD 및 Iptables를 사용한 네트워크 트래픽 제어)를 참고할 수 있습니다.

Source:
https://www.tecmint.com/kvm-virtualization-basics-and-guest-administration/