15장. 가상화
- 가상 CPU 타임 슬라이스 공유
- 가상 CPU의 타임 슬라이스 공유는 Linux 스케줄러 수준에서 성능을 향상시키는 기능입니다. 여기서 회전 가상 CPU는 CPU의 생성 전에 타임 슬라이스 알림을 다른 가상 CPU에 전달할 수 있습니다. 이 기능은 SMP 시스템에 존재하는 고유의 잠금 홀더 선점의 문제를 해결하고 가상 CPU의 성능에 영향을 미칩니다. 이 기능은 멀티 프로세서 게스트에서 안정된 성능을 제공합니다. 이 기능은 Intel 및 AMD 프로세서 모두에서 지원되며, Intel 프로세서에서는 PLE (Pause Loop Exiting), AMD 프로세서에서는 Pause Filter라고 합니다.
KVM 네트워크 성능은 가상화와 클라우드 기반의 제품과 솔루션에 필수적인 요구 사항입니다. Red Hat Enterprise Linux 6.2에서는 여러 네트워크 성능의 최적화를 실현하고 다양한 설정의 KVM 네트워크 반가상화 드라이버 성능이 개선되었습니다.
- KVM 작은 메시지 처리 기능 개선
- Red Hat Enterprise Linux 6.2에서는 KVM 작은 메시지 처리 기능을 개선하여 작은 메시지 (< 4K)를 생성하는 다양한 네트워크 작업에 알맞게 되었습니다.
- KVM 네트워크 드라이버에서 유선 속도 요구 사항
- 네트워크 작업을 실행하는 가상화 및 클라우드 제품은 유선 속도를 실행해야 합니다. Red Hat Enterprise Linux 6.1까지에서 CPU 사용이 낮은 10 GB Ethernet NIC 유선 속도에 도달하는 유일한 방법은 PCI 장치 할당 (통과)을 사용하는 것이었습니다. 이렇게하면 메모리 오버 커밋 또는 게스트 마이그레이션과 같은 다른 기능이 제한됩니다.macvtap/vhost zero-copy 기능은 고성능이 필요한 경우 사용자가 이러한 기능을 사용할 수 있게 합니다. 이 기능은 VEPA 사용 경우에 Red Hat Enterprise Linux 6.x 게스트 성능을 개선합니다. 이는 기술 프리뷰로 소개되고 있습니다.
- KVM 네트워크 드라이버에 대한 UDP 체크섬 최적화
- UDP 체크섬의 최적화를 통해 체크섬이 호스트 NIC에 의해 유효화된 경우 게스트가 체크섬을 유효화할 필요가 없습니다. 이 기능은 Red Hat Enterprise Linux 6.2 게스트와 호스트를 갖는 10 GB Ethernet 카드의 게스트로 외부의 UDP 속도를 증가시킵니다. UDP 체크섬 최적화는
virtio-net
드라이버에서 구현되어 있습니다. - 호스트가 게스트보다 느린 I/O 경로 성능 개선
- Red Hat Enterprise Linux 6.2 KVM 네트워크 드라이버는 I/O 경로 성능을 개선했습니다. 이와 함께 가상 머신 종료와 중단을 감소시켜 빠른 데이터 전송을 구현했습니다. 이러한 개선은 성능 저하를 발생시키지 않고, 느린 호스트에서 빠른 게스트를 실행하는 것을 가능하게 합니다. 이와 같이 향상된 기능은 개선된
virtio
링 구조와virtio
및vhost-net
의 이벤트 인덱스 지원을 통해 제공됩니다.
- SNMP를 통한 시스템 모니터링
- 이 기능은 베어 메탈 시스템과 함께 데이터 센터에서 이미 사용되고 있는 안정된 기술에 대한 KVM 지원을 제공합니다. SNMP는 모니터링 표준으로 계산 효율성과 함께 매우 잘 알려져 있습니다. Red Hat Enterprise Linux 6.2에서 SNMP를 통한 시스템 모니터링을 통해 KVM 호스트는 이벤트의 SNMP 트랩을 전송할 수 있으므로 하이퍼 바이저 이벤트는 표준 SNMP 프로토콜을 통해 사용자와 통신할 수 있습니다. 이 기능은 새로운 패키지 libvirt-snmp의 추가 기능으로 제공되고 있으며 이는 기술 퓨리뷰입니다.
- 게스트 디버깅 기능 개선
- 게스트 OS가 중단하여 크래시 덤프를 시작해야 할 경우, 데이터 센터를 가상화하는 사용자는 디버깅 방법이 필요합니다. 물리적 시스템에서 자주 사용되는 두 가지 방법이 있습니다:
- 게스트에서 NMI (non-maskable interrupt)를 트리거
- 게스트로 SysRq 순서 전송
이러한 기능은 KVM 콘솔을 통해 직접 제공되는 반면 여러 사용자는 libvirt API 및 virsh를 통해 KVM을 사용합니다. 여기서 이러한 두 가지 기능은 누락되어 있습니다. Red Hat Enterprise Linux 6.2에서는 KVM 스택 전체에 걸쳐 게스트 디버깅 기능을 개선했기 때문에, 사용자는 게스트에서 NMI를 실행하고 SysRq 키 순서를 게스트로 보낼 수 있습니다. - 가상 머신의 부팅 액세스 개선
- 데이터 센터를 가상화하는 사용자는 게스트의 부팅 프로세스를 추적하여 BIOS 전체와 커널 부팅 메시지를 처음부터 표시해야 합니다. 이 기능이 없다면 부팅 전에 사용자는 virsh 콘솔의 대화식 사용을 할 수 없습니다. 새로운 패키지 sgabios가 Red Hat Enterprise Linux 6.2에 추가되어 qemu-kvm의 추가 기능 이외에 이 기능을 제공합니다.
- 라이브 스냅샷
- Red Hat Enterprise Linux 6.2에서 기술 프리뷰로 라이브 스냅샷 (Live Snapshot) 기능이 도입되어 있습니다. 라이브 스냅샷 기능은 하드 드라이브에 가상 머신 이미지의 자동 백업을 제공하고 외부 qcow2 이미지를 사용하여 드라이브 마다 가상 디스크의 스냅샷을 투명하게 제공합니다. 멀티 디스크 라이브 스냅샷 생성은 디스크가 가지고 있는 만큼 많은 스냅샷을 갖기 전에 qemu를 일시 중지하여 데이터의 무결성을 유지하는데 도움이 됩니다. 따라서 멀티 디스크 스냅샷은 같은 시점의 데이터를 포함한 모든 디스크를 보유할 수 있습니다.파일 시스템의 일관성에 한계가 있음을 인식하는 것이 중요합니다. 하지만 스냅샷 이미지를 다시 사용하는 것은 손상 방지됩니다. 사용자는 파일 시스템 검사 (
fsck
)를 실행하거나 저널 항목을 재생해야 하며 이는 전원 코드를 뺀 후 부팅하는 것과 비슷합니다. - 멀티 프로세서 (NUMA) 튜닝 개선
- Red Hat Enterprise Linux 6.2에서는 libvirt API 스택으로의 튜닝이 개선되었습니다. 그 결과 SPECvirt 측정을 실행할 때 특별한 설정을하지 않고 성능이 향상되었습니다. 가상 머신이 생성되면 Red Hat Enterprise Linux 6.2는 NUMA 코드와 관련된 메모리를 고정할 수 있게 되었습니다.
- USB 기능 개선
- USB 2.0 에뮬레이션 qemu-kvm에 대해 구현되었습니다. 이는 QEMU에 대해서만 직접 사용할 수 있습니다. Libvirt 지원은 다음 릴리스에 계획되어 있습니다.원격 시동 (Remote Wakeup) 지원은 USB 호스트 컨트롤러에 대해 추가되었습니다. 게스트 OS와의 연계와 함께 이는 주파수 1000hz 폴링 모드를 중지하고 장치를 절전 모드로 둘 수 있습니다. 이는 모든 가상 머신이 갖고 있는 일반 장치 중 하나인 USB 마우스 에뮬레이션 (또는 테블릿)과 함께 가상 머신의 CPU 소비와 전원 활용을 비약적으로 향상시킵니다.
- 메모리 조정 (Memory ballooning)
- 메모리 조정 (Memory ballooning)은 Red Hat Enterprise Linux 6 반가상화 Xen 게스트에 의해 지원됩니다.
- 도메인 메모리 제한
- x86_64 domU PV 게스트에 대한 메모리 제한은 128 GB:
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
로 증가되었습니다. - 시간 계정
xen_sched_clock
구현 (손실되지 않은 나노 초를 반환)은xen_clocksource_read
구현에 의해 대체되었습니다.
Red Hat Enterprise Linux 가상화 가이드는 여러 특정 가이드로 나뉘어져 있습니다:
spice-protocol 패키지가 버전 0.8.1로 업그레이드되어 다음과 같은 새로운 기능을 제공합니다:
- 볼륨 변경 지원
- 비동기 게스트 I/O 쓰기 및 중단에 대한 지원
- 게스트 I/O 쓰기 관련 일시 중단 (S3)에 대한 지원
- 게스트 버그를 나타내는 인터럽트에 대한 지원
Linux 컨테이너는 작업 부하를 완전히 가상화할 필요없이 베어 메탈 시스템에서 응용 프로그램 런타임 포함이라는 유연한 방법을 제공합니다. Red Hat Enterprise Linux 6.2에서는 응용 프로그램 수준의 컨테이너를 제공하여 cgroup 및 네임 스페이스를 통해 응용 프로그램 리소스 사용 정책을 별도로 관리합니다. 이 릴리스에서는 컨테이너 라이프 사이클의 기본적인 관리를 도입하기 위해 libvirt API 및 virt-manager GUI를 통해 컨테이너를 생성, 편집, 삭제할 수 있습니다. Linux 컨테이너는 기술 프리뷰 사항입니다.
rhev-hypervisor 패키지의 side-by-side 설치를 허용하려면 /etc/yum.conf
파일을 편집하고 installonlypkgs
옵션을 추가하여 rhev-hypervisor를 installonly 패키지가 되로록 Yum을 설정합니다:
[main] ... installonlypkgs=rhev-hypervisor
yum.conf
man 페이지 (man yum.conf 5
)에 있습니다.