리눅스 KVM
IT위키
더 많은 작업
(KVM에서 넘어옴)
- KVM(Kernel-based Virtual Machine)은 리눅스 커널 자체를 하이퍼바이저로 만드는 커널 모듈(kvm.ko, kvm-intel.ko·kvm-amd.ko)이다
- KVM은 인텔의 VT 및 AMD-V를 기반으로 동작하는 공개형 기술로, 리눅스에선 커널 2.6.20부터 포함되었다.
- 이스라엘의 Qumranet(2005년 설립)이 개발해 2006년에 공개했고, 2008년 레드햇이 Qumranet 을 인수한 뒤로 레드햇이 개발을 주도한다. RHEL 의 기본 가상화 기술이다
- x86 CPU 의 하드웨어 가상화 기능으로 게스트를 고치지 않고 돌리는 전가상화 방식이다
1. CPU 지원 여부 확인
# egrep “(vmx|svm)” /proc/cpuinfo
2. 관련 패키지 설치
# yum groupinstall virtualization-client virtualization-platform virtualization-tools
3. 서비스 데몬 실행
# service libvirtd start
4. 네트워크 설정(네트워크 브리지 설정 포함)
5. 가상머신 생성 및 게스트 OS 설치
# virt-manager
KVM 은 CPU 를 Intel VT-x·AMD-V 의 하드웨어 지원으로 가상화하므로 CPU 는 반가상화 대상이 아니다. 대신 게스트에 반가상화 드라이버를 넣어 입출력 장치를 에뮬레이션보다 빠르게 쓴다.
| 반가상화 장치 | 드라이버 | 하는 일 |
|---|---|---|
| 이더넷 카드 | virtio-net | 가상 네트워크 카드 |
| 디스크 I/O | virtio-blk, virtio-scsi | 가상 디스크 컨트롤러 |
| VGA(그래픽) | QXL(SPICE), virtio-gpu, VMware SVGA 호환 | 가상 그래픽 장치 |
| 메모리 벌룬 | virtio-balloon | 실행 중에 게스트 메모리를 거둬들이거나 돌려준다 |
- KVM 의 반가상화는 이처럼 이더넷 카드·디스크 I/O·VGA 같은 장치 쪽에 쓰이고, CPU 는 하드웨어 지원 전가상화로 처리한다
- KVM 은 처음부터 CPU 의 하드웨어 가상화 기능(Intel VT-x, AMD-V)을 쓰는 전가상화 하이퍼바이저로 개발되었다. 게스트 운영체제를 고치지 않고 그대로 돌린다
- KVM 커널 모듈은 CPU 와 메모리의 가상화만 맡는다. 가상 머신 하나하나는 사용자 공간의 QEMU 프로세스로 돌고, QEMU 가 디스크·네트워크 카드·그래픽 같은 장치를 에뮬레이션한다. 그래서 흔히 KVM/QEMU 라고 부른다
- QEMU 는 원래 다른 CPU 의 명령어까지 소프트웨어로 흉내 내는 에뮬레이터다. KVM 이 있으면 같은 종류 CPU 의 명령은 하드웨어에서 바로 실행해 빠르게 돈다
- 가상 머신 관리는 libvirt 위의 virsh, virt-manager 로 한다
- 반가상화 드라이버의 구조는 I/O 가상화, 반가상화와 전가상화의 차이는 반가상화·전가상화