웹사이트 검색

RHCSA 시리즈: KVM을 통한 가상화 및 게스트 관리의 필수 요소 - 15부


사전에서 가상화라는 단어를 찾아보면 "무엇의 실제 버전이 아닌 가상 버전을 생성하는 것"을 의미한다는 것을 알 수 있습니다. 컴퓨팅에서 가상화라는 용어는 가상화 스키마에서 호스트로 알려진 동일한 물리적(하드웨어) 시스템 위에서 여러 운영 체제를 동시에 실행하고 서로 격리할 수 있는 가능성을 의미합니다.

가상 머신 모니터(하이퍼바이저라고도 함)를 통해 가상 머신(게스트라고 함)에 가상 리소스(예: CPU, RAM, 스토리지, 네트워크)가 제공됩니다. 인터페이스 등)을 기본 하드웨어에서 가져옵니다.

이를 염두에 두면 가상화의 주요 이점 중 하나는 비용 절감(장비 및 네트워크 인프라, 유지 관리 노력 측면에서)과 필요한 모든 하드웨어를 수용하는 데 필요한 물리적 공간의 상당한 감소라는 점을 쉽게 알 수 있습니다.

이 간단한 방법에서는 모든 가상화 방법을 다룰 수 없으므로 해당 주제에 대한 자세한 내용은 요약에 나열된 설명서를 참조하는 것이 좋습니다.

본 문서는 명령줄 유틸리티가 포함된 KVM(커널 기반 가상 머신)을 사용하여 RHEL 7에서 가상화의 기본 사항을 배우기 위한 출발점이 될 수 있다는 점을 명심하세요. -주제에 대한 심도 있는 토론.

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

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


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

다음 스크린샷에서는 svm에 표시된 대로 현재 시스템(AMD 마이크로프로세서 포함)이 가상화를 지원하는 것을 볼 수 있습니다. Intel 기반 프로세서가 있는 경우 위 명령의 결과에 vmx가 대신 표시됩니다.

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

이제 필요한 패키지를 설치하십시오.

  1. qemu-kvm은 KVM 하이퍼바이저에 대한 하드웨어 에뮬레이션을 제공하는 오픈 소스 가상화기인 반면, qemu-img는 디스크 이미지 조작을 위한 명령줄 도구를 제공합니다.
  2. libvirt에는 운영 체제의 가상화 기능과 상호작용하는 도구가 포함되어 있습니다.
  3. libvirt-python에는 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

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