Skip to main content
NetApp virtualization solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

QEMU 및 Libvirt를 사용한 KVM 가상화에 대해 알아보세요

기여자 netapp-jsnyder kevin-hoke

KVM 가상화에 대해 알아보고 QEMU와 Libvirt와 함께 작동하여 포괄적인 Linux 가상화 플랫폼을 만드는 방법을 알아보세요. 이러한 구성 요소가 기업 환경에서 컴퓨팅, 스토리지 및 네트워킹 리소스에 대한 유연한 관리 기능을 제공하는 동시에 기본 성능에 가까운 가상 머신을 구현하는 방법을 알아보세요.

구성 요소 개요

  1. KVM(커널 기반 가상 머신):

    • 역할: KVM은 CPU의 하드웨어 지원 가상화 확장(예: Intel VT-x 또는 AMD-V)을 활용하여 핵심 가상화 기능을 제공하는 커널 모듈입니다.

    • 기능: KVM을 사용하면 Linux 커널이 유형 1 하이퍼바이저 역할을 하여 CPU 및 메모리 작업에 대해 거의 기본 성능으로 가상 머신을 만들고 관리할 수 있습니다.

    • 최하위 계층: KVM은 최하위 수준의 구성 요소로, 하드웨어와 직접 상호 작용하여 전체 가상화에 필요한 인프라를 제공합니다.

  2. QEMU(빠른 에뮬레이터):

    • 역할: QEMU는 네트워크 인터페이스, 디스크 컨트롤러, 그래픽 카드 등 게스트 시스템에 다른 가상화된 하드웨어 구성 요소를 제공하는 머신(하드웨어) 에뮬레이터입니다.

    • 기능: KVM을 사용할 수 없을 때 QEMU는 유형 2 하이퍼바이저로 작동할 수 있지만 소프트웨어에서 게스트 CPU를 시뮬레이션해야 하므로 상당히 느립니다. KVM과 결합하면 QEMU는 KVM을 사용하여 CPU 및 메모리 작업을 가속화하고, QEMU는 주변 장치 및 기타 하드웨어 장치의 에뮬레이션을 처리합니다.

    • KVM과의 상호작용: QEMU는 ioctl() 시스템 호출을 사용하여 장치 파일(예: /dev/kvm)을 통해 KVM과 상호작용하여 가상 머신 프로세스를 관리하고 KVM과 통신합니다.

  3. "리브비르트":

    • 역할: Libvirt는 KVM/QEMU, Xen, VMware ESXi를 포함한 다양한 가상화 플랫폼을 위한 고수준 관리 인터페이스를 제공하는 가상화 라이브러리 및 API입니다.

    • 기능: Libvirt는 통합된 인터페이스와 도구 세트를 제공하여 가상 머신 관리를 간소화합니다. 하이퍼바이저는 추상화 계층 역할을 하여 사용자와 애플리케이션이 기본 하이퍼바이저의 특정 명령이나 API와 직접 상호 작용하지 않고도 VM을 관리할 수 있도록 합니다.

    • 주요 특징:

      • VM 수명 주기 관리: VM을 시작, 중지, 일시 중지, 저장, 복원 및 마이그레이션합니다.

      • 원격 관리: SSH나 다른 프로토콜을 통해 원격 호스트의 VM을 제어합니다.

      • 스토리지 관리: VM의 스토리지 풀과 볼륨을 생성하고 관리합니다.

      • 가상 네트워킹: NAT, 브리징 및 기타 모드를 사용하여 가상 네트워크를 구성합니다.

      • 보안: SELinux 및 AppArmor와 통합하여 VM의 보안을 강화합니다.

      • 핫플러그: VM이 실행되는 동안 디스크 및 네트워크 인터페이스와 같은 장치를 추가하거나 제거합니다.

      • 도구: Libvirt에는 VM을 관리하기 위한 virsh와 같은 명령줄 도구와 virt-manager와 같은 그래픽 도구가 포함되어 있습니다.

    • 그들이 함께 작동하는 방식:

      • KVM: 커널 수준의 가상화 인프라를 제공합니다.

      • QEMU: 에뮬레이션된 하드웨어를 제공하고 VM 프로세스를 관리합니다.

      • Libvirt: 관리 계층 역할을 하며 KVM/QEMU 및 기타 하이퍼바이저를 제어하기 위한 API와 도구를 제공합니다.

    • 기본적으로 KVM은 가상화를 위한 하드웨어 가속을 제공하고, QEMU는 에뮬레이션된 하드웨어를 제공하고 VM을 실행하며, Libvirt는 사용자 친화적인 관리 인터페이스와 API를 제공하여 전체 설정을 제어합니다.

Libvirt 클라이언트 도구를 사용하면 Cockpit 머신을 사용하여 CLI, GUI 또는 웹 기반으로 VM이나 작업을 관리할 수 있습니다. libvirt를 사용하는 애플리케이션 목록을 확인하려면 다음을 확인하세요. "여기" .

애플리케이션이 Kubernetes 환경으로 이동함에 따라 Kubevirt를 살펴보고 해당 환경에서 가상 머신을 Pod로 실행해보세요.

클러스터 관리

일반적으로 가상화 관리자 또는 virsh CLI 도구는 한 번에 하나의 호스트를 관리합니다. 클러스터에서 여러 호스트를 관리하기 위해 oVirt, CloudStack 또는 OpenStack과 같은 상위 레벨 애플리케이션이 종종 사용됩니다. 이러한 도구는 VM 배치와 부하 분산에 도움이 됩니다. 소규모 클러스터 환경에서 특정 VM의 고가용성을 원하는 경우 Corosync와 함께 Pacemaker를 사용하거나 관리 스택 옵션을 확인하세요.

관리 구성 요소가 포함된 Libvirt 스택

컴퓨팅

Libvirt는 가상 머신 리소스와 기능을 관리하기 위한 포괄적인 프레임워크를 제공합니다. 여기에는 다음과 관련된 작업이 포함됩니다.

  1. 가상 머신(도메인) 관리:

    • 수명 주기 작업: Libvirt는 가상 머신의 상태를 관리하기 위한 완전한 작업 세트를 제공합니다(libvirt 용어로 "도메인"이라고 함). 여기에는 VM 시작, 중지, 일시 중지, 재개, 저장, 복원 및 마이그레이션이 포함됩니다.

    • XML 구성: 가상 머신 구성은 XML 파일을 사용하여 정의됩니다. virsh나 virt-manager와 같은 도구를 사용하여 이러한 XML 구성을 만들고, 수정하고, 삭제할 수 있습니다.

    • 원격 관리: SSH와 같은 다양한 네트워크 전송을 지원하는 libvirt의 원격 프로토콜을 사용하여 원격 호스트의 가상 머신을 관리할 수 있습니다.

  2. 자원 할당 및 관리:

    • CPU 관리: Libvirt를 사용하면 가상 CPU 수 지정, CPU 고정 제어(vCPU를 호스트의 특정 물리적 CPU에 연결), CPU 모드 관리(호스트의 CPU 기능을 게스트에 노출하는 호스트 패스스루 등) 등 게스트 CPU를 구성할 수 있습니다.

    • 메모리 관리: 가상 머신에 메모리를 할당하고 메모리 오버커밋(VM에 할당된 메모리 합계가 호스트에서 사용 가능한 실제 메모리를 초과하도록 허용)을 구성할 수 있습니다.

    • 스토리지 관리: Libvirt는 디스크 이미지(qcow2, vmdk, raw 등의 형식), NFS 공유, LVM 볼륨 그룹, iSCSI 공유, raw 디스크 장치를 포함하여 가상 머신의 다양한 유형의 스토리지를 관리할 수 있습니다.

    • 호스트 장치 관리: SR-IOV 및 NPIV와 같은 가상화 기능을 포함하여 USB, PCI, SCSI 및 네트워크 장치와 같은 물리적 및 가상 호스트 장치를 관리할 수 있습니다.

  3. 가상 네트워킹:

    • 가상 네트워크 스위치: Libvirt는 가상 머신을 서로 연결하고 호스트 네트워크에 연결하는 가상 네트워크 스위치(브리지)를 만듭니다.

    • 네트워킹 모드: NAT, 브리지, 격리, 라우팅 등 다양한 네트워킹 모드를 지원하여 VM이 네트워크와 상호 작용하는 방식을 구성합니다.

    • 방화벽 규칙: Libvirt는 방화벽 규칙(iptables 사용)을 자동으로 관리하여 가상 네트워크의 네트워크 트래픽을 제어합니다.

  4. 성능 최적화:

    • CPU 고정: vCPU를 특정 물리적 CPU에 고정하면 특히 NUMA 환경에서 캐시 효율성과 성능을 개선할 수 있습니다.

    • NUMA 튜닝: 단일 NUMA 노드의 리소스 양에 맞게 게스트 크기를 제한하고, I/O 어댑터에 연결된 동일한 물리적 소켓에 vCPU와 메모리를 고정하여 NUMA 시스템의 성능을 최적화할 수 있습니다.

    • 거대 페이지: 거대 페이지를 사용하면 작은 메모리 페이지 관리와 관련된 오버헤드를 줄여 성능을 향상시킬 수 있습니다.

  5. 다른 도구와의 통합:

    • virsh: libvirt와 상호작용하기 위한 명령줄 인터페이스.

    • virt-manager: 가상 머신과 libvirt 리소스를 관리하기 위한 그래픽 도구입니다.

    • OpenStack: Libvirt는 OpenStack에서 일반적으로 사용되는 가상화 드라이버입니다.

    • 타사 도구: 클라우드 관리 플랫폼과 백업 솔루션을 비롯하여 가상 머신을 관리하기 위해 libvirt의 API를 활용하는 다른 많은 도구와 애플리케이션이 있습니다.

KVM 하이퍼바이저를 사용하면 일반적으로 VM 게스트가 충분히 활용되지 않으므로 CPU와 메모리를 과도하게 할당할 수 있습니다. 하지만 더 나은 성과를 위해서는 모니터링과 균형 조정이 필요합니다.

VM 메타데이터는 /etc/libvirt/qemu에 XML로 저장됩니다. VM은 virt-install 또는 virsh cli를 사용하여 만들 수 있습니다. UI를 선호하거나 상위 관리 스택을 사용하는 경우 Virt-Manager를 활용할 수 있습니다.

요약하자면, libvirt는 가상화의 컴퓨팅 측면에 대한 포괄적인 관리 계층을 제공하여 가상 머신 수명 주기를 제어하고, 리소스를 할당하고, 네트워킹을 구성하고, 성능을 최적화하고, 다른 도구 및 플랫폼과 통합할 수 있도록 해줍니다.

스토리지

VM 디스크는 스토리지 풀에 동적으로 프로비저닝될 수도 있고, 스토리지 관리자가 VM에 대해 미리 프로비저닝할 수도 있습니다. libvirt는 다양한 풀 유형을 지원합니다. 지원되는 저장 프로토콜과 함께 적용 가능한 풀 유형 목록은 다음과 같습니다. 가장 많이 사용되는 옵션은 dir입니다. 그 다음으로 netfs와 logical입니다. iscsi와 iscsi-direct는 단일 대상을 사용하며 내결함성을 제공하지 않습니다. mpath는 다중 경로를 제공하지만 동적으로 할당되지는 않습니다. 이는 vSphere의 원시 장치 매핑과 비슷하게 사용됩니다. 파일 프로토콜(NFS/SMB/CIFS)의 경우 마운트 옵션을 지정할 수 있습니다. "자동 마운터" 또는 fstab과 dir 풀 유형이 사용됩니다. 블록 프로토콜(iSCSI, FC, NVMe-oF)의 경우 ocfs2나 gfs2와 같은 공유 파일 시스템이 사용됩니다.

저장 프로토콜 디렉터 에프에스 넷에프에스 논리적 디스크 iSCSI iSCSI 직접 연결 엠패스

SMB/CIFS

아니요

아니요

아니요

아니요

아니요

아니요

NFS

아니요

아니요

아니요

아니요

아니요

아니요

iSCSI

아니요

FC

아니요

아니요

아니요

NVMe-oF

아니요

아니요

아니요

아니요1

참고: 1 - 추가 구성이 필요할 수 있습니다.

사용된 저장 프로토콜에 따라 호스트에서 추가 패키지를 사용할 수 있어야 합니다. 샘플 목록은 다음과 같습니다.

저장 프로토콜 페도라 데비안 팩맨

SMB/CIFS

삼바 클라이언트/cifs-유틸리티

smbclient/cifs-utils

smbclient/cifs-utils

NFS

nfs-유틸리티

nfs-공통

nfs-유틸리티

iSCSI

iSCSI 이니시에이터 유틸리티, 디바이스 매퍼 멀티패스, OCF2 도구/GFS2 유틸리티

open-iscsi, multipath-tools, ocfs2-tools/gfs2-utils

open-iscsi, multipath-tools, ocfs2-tools/gfs2-utils

FC

sysfsutils, 장치 매퍼 다중 경로, ocfs2 도구/gfs2 유틸리티

sysfsutils, multipath-tools, ocfs2-tools/gfs2-utils

sysfsutils, multipath-tools, ocfs2-tools/gfs2-utils

NVMe-oF

nvme-cli, ocfs2-tools/gfs2-utils

nvme-cli, ocfs2-tools/gfs2-utils

nvme-cli, ocfs2-tools/gfs2-utils

스토리지 풀 세부 정보는 /etc/libvirt/storage에 있는 XML 파일에 저장됩니다.

vSphere 환경에서 VM 데이터를 가져오려면 다음을 살펴보세요."시프트 툴킷" .

회로망

Libvirt는 가상 머신과 컨테이너를 관리하기 위한 강력한 가상 네트워킹 기능을 제공합니다. 이는 가상 네트워크 스위치 또는 브리지라는 개념을 통해 달성됩니다.

핵심 개념: * 가상 네트워크 스위치(브리지): 이는 호스트 서버의 소프트웨어 기반 네트워크 스위치처럼 작동합니다. 가상 머신은 이 스위치에 연결되고 트래픽은 이를 통해 흐릅니다. * TAP 장치: 이는 가상 머신의 네트워크 인터페이스를 libvirt 브리지에 연결하는 "가상 케이블" 역할을 하는 특수한 네트워크 장치입니다.

  • 네트워킹 모드: Libvirt는 다양한 요구 사항을 충족하기 위해 다양한 네트워크 구성을 지원합니다.

    • NAT(네트워크 주소 변환): 기본 모드입니다. NAT 네트워크에 연결된 VM은 호스트의 IP 주소를 사용하여 외부 네트워크에 액세스할 수 있지만, 외부 호스트는 VM에 직접 연결을 시작할 수 없습니다.

    • 브리지: 이 모드에서는 가상 네트워크가 호스트와 동일한 네트워크 세그먼트에 직접 연결됩니다. 이를 통해 VM이 물리적 네트워크에 직접 연결된 것처럼 보일 수 있습니다.

    • 격리됨: 격리된 네트워크에 있는 VM은 서로 통신하고 호스트와도 통신할 수 있지만, 호스트 외부의 어떤 것에도 접속할 수 없습니다. 이는 테스트나 보안 환경에 유용합니다.

    • 라우팅: 가상 네트워크의 트래픽이 NAT 없이 물리적 네트워크로 라우팅됩니다. 이렇게 하려면 호스트 네트워크에서 적절한 라우팅 구성이 필요합니다.

    • 개방형: 라우팅 모드와 유사하지만 libvirt에서 자동으로 적용되는 방화벽 규칙이 없습니다. 이는 네트워크 트래픽이 다른 시스템에 의해 관리된다고 가정합니다.

  • DHCP 및 DNS: Libvirt는 dnsmasq를 사용하여 가상 네트워크의 DHCP 서비스를 관리할 수 있으며, 이를 통해 VM에 IP 주소를 할당하고 가상 네트워크 내에서 DNS 확인을 처리할 수 있습니다.

  • 방화벽 규칙: Libvirt는 특히 NAT 모드에서 가상 네트워크의 트래픽 흐름을 제어하기 위해 iptables 규칙을 자동으로 설정합니다.

Libvirt 네트워크 관리:

  • virsh: virsh 명령줄 도구는 네트워크 나열, 시작, 중지, 정의, 정의 해제를 포함하여 가상 네트워크를 관리하기 위한 포괄적인 명령 세트를 제공합니다.

  • 가상 머신 관리자(virt-manager): 이 그래픽 도구는 직관적인 사용자 인터페이스를 통해 가상 네트워크의 생성과 관리를 간소화합니다.

  • XML 구성: Libvirt는 XML 파일을 사용하여 가상 네트워크의 구성을 정의합니다. 이러한 XML 파일을 직접 편집하거나 virsh net-edit과 같은 도구를 사용하여 네트워크 구성을 수정할 수 있습니다.

일반적인 사용 사례:

  • NAT: 단일 네트워크 인터페이스를 갖춘 호스트의 VM에 대한 간단하고 기본적인 연결입니다.

  • 브리지: VM을 기존 네트워크에 원활하게 통합합니다.

  • 격리됨: VM에 대한 외부 액세스가 제한되어 안전한 환경이나 테스트 환경을 만드는 것입니다.

  • 라우팅: 특정 라우팅이 필요한 보다 고급 시나리오입니다.

  • Open vSwitch(OVS): 고급 네트워크 관리 및 자동화가 필요한 복잡하고 대규모 배포에 적합합니다.

libvirt는 이러한 기능을 활용하여 Linux 환경에서 가상 머신 네트워킹을 관리하기 위한 유연하고 강력한 프레임워크를 제공합니다.

모니터링

NetApp Data Infrastructure Insights (이전 명칭 Cloud Insights)는 가상 머신을 포함한 IT 인프라에 대한 포괄적인 가시성을 제공하는 클라우드 기반 인프라 모니터링 및 분석 플랫폼입니다.

Data Infrastructure Insights NetApp 스토리지와 VMware 환경 모니터링에 중점을 두고 있는 것으로 알려져 있지만, 다른 유형의 인프라와 워크로드를 모니터링하는 기능도 갖추고 있습니다.

NetApp Data Infrastructure Insights 사용하여 Libvirt 기반 가상 머신을 잠재적으로 모니터링할 수 있는 방법은 다음과 같습니다.

  1. 데이터 수집자:

    • Data Infrastructure Insights 다양한 데이터 수집기를 사용하여 인프라에서 데이터를 수집하는 Acquisition Unit 소프트웨어를 통해 운영됩니다.

    • Data Infrastructure Insights Kubernetes를 포함한 이기종 인프라 및 워크로드를 위한 수집기가 있습니다. 또한 다른 시스템과 쉽게 통합할 수 있는 개방형 Telegraf 수집기와 개방형 API도 있습니다.

  2. Libvirt와의 잠재적 통합:

    • 사용자 정의 데이터 수집: 오픈 Telegraf 수집기나 Data Infrastructure Insights API를 사용하여 Libvirt 기반 시스템에서 데이터를 수집할 수 있습니다. Libvirt의 API(예: virsh 명령을 사용하거나 Libvirt의 내부 메트릭에 액세스)를 사용하여 Libvirt에서 메트릭을 수집하려면 수집기를 작성하거나 구성해야 합니다.

  3. Data Infrastructure Insights 사용하여 Libvirt를 모니터링하는 이점:

    • 통합된 가시성: NetApp 스토리지와 Libvirt 기반 VM을 포함하여 가상화된 환경에 대한 단일 보기를 확보하세요.

    • 성능 모니터링: VM 내부 또는 이를 지원하는 기반 인프라와 관련된 성능 병목 현상과 리소스 제약을 파악합니다.

    • 리소스 최적화: 워크로드 프로필을 분석하여 적절한 크기의 VM을 확보하고, 사용되지 않는 리소스를 회수하고, 환경 전반에서 리소스 활용도를 최적화합니다.

    • 문제 해결: VM 성능 지표와 백엔드 스토리지 지표를 연관시켜 엔드투엔드 가시성을 확보하여 문제를 빠르게 식별하고 해결합니다.

    • 예측 분석: 머신 러닝을 활용하여 지능적인 통찰력을 얻고 성능에 영향을 미치기 전에 잠재적인 문제를 사전에 식별합니다.

요약하자면, Data Infrastructure Insights VMware에 대한 강력한 지원을 제공하지만, 사용자 정의 데이터 수집기를 사용하거나 개방형 API를 활용하여 Libvirt 기반 가상화와 통합하는 것도 가능합니다. 이를 통해 Data Infrastructure Insights 플랫폼 내의 Libvirt 환경에 대한 통합된 가시성, 향상된 성능 모니터링 및 리소스 최적화 기능이 제공됩니다.

데이터 보호

NetApp ONTAP 사용하여 Libvirt 기반 가상 머신의 데이터를 보호하는 작업은 여러 가지 방법으로 수행할 수 있으며, 종종 ONTAP의 내장된 데이터 보호 기능을 활용합니다. 일반적인 전략에 대한 세부 사항은 다음과 같습니다.

  1. ONTAP의 기본 데이터 보호 기능 사용:

    • 스냅샷: ONTAP의 핵심 데이터 보호 기술은 스냅샷입니다. 이는 최소한의 디스크 공간만 필요하고 성능 오버헤드가 거의 없는 데이터 볼륨의 빠른 특정 시점 복사본입니다. 스냅샷을 사용하면 Libvirt VM 디스크의 자주 백업을 생성할 수 있습니다( ONTAP 볼륨에 저장되어 있다고 가정).

    • SnapMirror: SnapMirror 한 ONTAP 스토리지 시스템에서 다른 ONTAP 스토리지 시스템으로 스냅샷 복사본을 비동기적으로 복제하는 데 사용됩니다. 이를 통해 원격 사이트나 클라우드에서 Libvirt VM의 재해 복구(DR) 복사본을 만들 수 있습니다.

    • SnapVault: SnapVault 여러 스토리지 시스템의 데이터를 중앙 ONTAP 시스템으로 백업하는 데 사용됩니다. 이는 여러 호스트의 많은 Libvirt VM 백업을 중앙 백업 저장소로 통합하는 데 좋은 옵션입니다.

    • SnapRestore: SnapRestore 사용하면 스냅샷 복사본에서 데이터를 빠르게 복원할 수 있습니다. 이는 데이터 손실이나 손상이 발생한 경우 Libvirt VM을 복구하는 데 필수적입니다.

    • FlexClone: FlexClone 스냅샷 복사본을 기반으로 볼륨의 쓰기 가능한 복사본을 만듭니다. 이 기능은 프로덕션 VM 데이터를 기반으로 테스트/개발 환경을 빠르게 만드는 데 유용합니다.

    • MetroCluster/ SnapMirror 액티브 동기화: 자동화된 0 RPO(복구 지점 목표) 및 사이트 간 가용성을 위해 ONTAP MetroCluster 또는 SMas를 사용할 수 있으며, 이를 통해 사이트 간에 스트레치 클러스터를 구축할 수 있습니다.

  2. 타사 백업 솔루션과의 통합: 많은 타사 백업 솔루션이 NetApp ONTAP 과 통합되어 가상 머신 백업을 지원합니다. 이러한 솔루션을 사용하면 ONTAP의 데이터 보호 기능을 활용하여 Libvirt VM을 ONTAP 스토리지에 백업할 수 있습니다. 예를 들어, 일부 백업 솔루션은 빠르고 에이전트 없는 백업을 위해 ONTAP의 스냅샷 기술을 사용합니다.

  3. 스크립팅 및 자동화: Libvirt VM 볼륨의 ONTAP 스냅샷을 생성하는 프로세스를 자동화하는 스크립트를 만들 수 있습니다. 이러한 스크립트는 ONTAP의 명령줄 인터페이스나 API를 활용하여 스토리지 시스템과 상호 작용할 수 있습니다.

주요 고려 사항:

  • 저장 위치: ONTAP의 데이터 보호 기능을 활용하려면 Libvirt VM 디스크 이미지를 ONTAP 볼륨에 저장해야 합니다.

  • 네트워크 연결: Libvirt 호스트와 ONTAP 스토리지 시스템 간의 네트워크 연결을 보장합니다.

  • HBA 관리: 스토리지 연결에 파이버 채널(FC)을 사용하는 경우 Libvirt 호스트에 필요한 HBA 관리 패키지가 설치되어 있는지 확인하세요.

  • 모니터링 및 보고: 데이터 보호 작업을 모니터링하고 성공적으로 완료되는지 확인하세요. Libvirt의 기능과 ONTAP의 강력한 데이터 보호 기능을 결합하면 가상화된 환경에 대한 포괄적인 데이터 보호 전략을 구현할 수 있습니다.