QEMU와 KVM - 1

기술/가상화 2017. 11. 1. 00:59 Posted by 아는 개발자

QEMU


'Quick Emulator' 풀네임 만으로는 와닿지 않지만 QEMU는 현재 PC에 설치된 운영체제와 다른 여러 개의 다른 운영체제를 구동 할 수 있는, 전가상화(Full Virtualization)를 지원하는 가상화 소프트웨어중 하나다. 전가상화 소프트웨어로는 VirtualBox나 VMware가 대중적으로 알려져있지만 가상화 기술 개발자들 사이에선 QEMU는 빼놓을 수 없는 가상화 소프트웨어중 하나다. 거의 가상화 기술 초창기를 주도 했던 소프트웨어이며 이때 만들어진 개념들도 상용화된 가상화 소프트웨어에서 사용되고 있다. 실제로 VirtualBox에선 상당부분을 QEMU 소스를 사용했다고 한다.


QEMU는 다른 가상화 소프트웨어와는 다르게 오픈소스로 개발됐다(물론 VirtualBox도 오픈소스지만 대부분 Oracle에서 개발했다) 가상화 기술이 한창 붐일때 부터 시작해서 현재 버전 2.10 까지 나왔다. 시간이 꽤 많이 흘렀지만 여전히 많은 개발자들이 참여하고 있는 만큼 질문 피드백이나 하드웨어 업데이트도 빠르고 포럼도 매년 열리고 있다.


VirtualBox나 VMware는 x86용 OS 구동만 지원하는 것에 비해 QEMU는 x86뿐만 아니라 다양한 하드웨어에서 구동 할 수 있도록 지원한다. ARM처럼 모바일 시장을 장악한 아키텍처 뿐만 아니라 지금은 거의 사장되기 싶은 alpha, i386같은 아키텍처도 qemu에선 돌려 볼 수 있으며 뿐만 아니라 동일한 아키텍처 내에서도 라즈베리파이나 삼성 smdk 보드 처럼 특정 하드웨어 머신을 설정할 수 있다. 상용화된 가상화 솔루션들은 비용적인 측면 때문에 지원하지 않은것 같은데 QEMU는 다양한 영역에서 활동하고 있는 개발자들이 참여하고 있기 때문에 인기가 없는 하드웨어들 까지도 서비스되는 것 같다. 물론 A/S는 본인의 몫이다



(QEMU를 이용해 라즈베리파이를 구동한 모습)


Guest OS의 수정없이도 잘 돌아가야 하기 때문에 QEMU내에선 Guest OS가 사용할 CPU, USB, PCI처럼 컴퓨터 본체에 있는 모든 디바이스들을 만든다(Type2 가상화 글을 참고). 이 방식은 모든 OS를 돌릴 수 있다는 장점이 있지만 막상 실행해보면 사용하기 어려울 정도로 매우 느리다.  사실 당연한 것이 Host의 관점에선 QEMU에서 만든 device들은 결국 process나 thread의 일종일 것이다. User process들은 Kernel process에 비해 우선 순위가 낮기 때문에 기존에 사용하던 운영체제와 동일하게 사용하는것이 거의 불가능 하다. 게다가 만약 Host 내에서 처리해야하는 일이 많다면 자연스레 QEMU 작업들은 뒤로 밀릴 수 밖에 없다.  


이런 고민을 소프트웨어 회사만 한 것이 아니다. 한창 가상화 기술이 뜨고 있을 무렵 Intel과 ARM 같은 아키텍처 하드웨어 회사도 어떻게 하면 하드웨어적으로 가상화를 지원 할 수 있을지를 연구를 했고 그에 맞춰 칩을 새롭게 디자인 했다. 리눅스에선 하드웨어 상에서 지원하는 가상화 feature들을 모두 KVM이란 모듈에 통합해서 관리하도록 만들었다.


QEMU는 workload가 높은 작업들을 적절히 KVM으로 돌려서 Host에 가까운 성능을 내도록 했다. 구조적으로는 이렇게 잡아서 사용했다.


(kvm - QEMU 개념도)


자세한 작동 방식은 KVM 포스팅에서!


출처


- https://azeria-labs.com/emulate-raspberry-pi-with-qemu/ - QEMU를 이용해 라즈베리파이를 구동한 모습, 사진

- http://www.admin-magazine.com/CloudAge/Articles/Virtualization-with-KVM - kvm QEMU 개념도, 사진

728x90

'기술 > 가상화' 카테고리의 다른 글

KVM - ARM  (0) 2018.01.01
QEMU와 KVM - 2  (0) 2017.11.11
QEMU와 KVM - 1  (0) 2017.11.01
6. XenStore, Xenbus  (0) 2017.01.22
5. 이벤트 채널 소개  (0) 2017.01.07
가상화기술의 대표적인 보안 문제  (0) 2016.12.10