개발/가상화
-
QEMU 성능 문제 - 개론개발/가상화 2018. 5. 30. 23:54
Host OS의 유저 앱으로 구동되는 Guest OS는 Hypervisor가 만들어 준 가상 장치로 동작하고 있기 때문에 실제 물리 장치를 이용하는 Host OS에 비해서 성능이 확연히 낮다. Hypervisor가 만들어준 가상장치도 결국에는 실제 하드웨어에서 동작하게 되는 것이니 이론상으론 시스템 하드웨어 성능이 높아지면 가상 장치로 동작하는 Guest OS도 좋은 성능을 가질 수는 있다. 그러나 아무리 좋은 하드웨어를 사용해도 Host OS처럼 직접 접근해서 사용하는 것과는 확연하게 차이가 난다. 배틀그라운드의 권장사양을 훨씬 뛰어넘는 그래픽카드와 CPU를 장착해도 Guest OS로 실행되는 윈도우에서는 배틀그라운드는 커녕 스타크래프트도 온전하게 플레이하기 어렵다. qemu를 이용해 스타크래프트를 하..
-
KVM - ARM개발/가상화 2018. 1. 1. 11:41
아주아주 먼 옛날 가상화 기술이 핫 할때 Intel과 ARM 같은 제조사들은 자사의 칩에서 동작하는 가상화 소프트웨어의 성능을 높이고자 하드웨어단에서 여러 옵션을 추가 했다. 소프트웨어 개발자들은 제조사들이 제공하는 옵션을 활용해 하이퍼바이저를 만들었는데 KVM 또한 이때 만들어진 하이퍼바이저중 하나다. 좀더 구체적으로 말하면 QEMU같은 Type2 소프트웨어가 하드웨어의 가상화 확장 기능을 쉽게 사용 할 수 있도록 인터페이스의 역할을 하는 커널의 모듈이다. 그런데 제조사들은 가상화 기술의 성능을 높이기 위해 어떤 기능을 제공하고 있을까? 여러 OS를 동작하는 작업인 만큼 매우 오버헤드가 심할텐데 어떤 옵션이 있었기에 VMware로 리눅스가 쌩쌩 잘 돌아가는거지? 그리고 KVM은 하드웨어의 기능을 어떻게..
-
QEMU와 KVM - 2개발/가상화 2017. 11. 11. 11:03
KVM(Kernel-based Virtual Machine) 그림1. KVM 공식 로고다. 펭귄이 던지고 있는 공은 VM을 의미하는 것 같다. "KVM은 리눅스 커널을 하이퍼바이저로 변환하기 위한 가상화 인프라스트럭처의 하나이다"라고 위키 백과에선 설명하는데 이것만 가지곤 KVM의 제공하는 기능을 이해하긴 힘들다. KVM을 공부하기 전에 같이 사용되는 하이퍼바이저, QEMU에 대해 먼저 공부해보면 KVM의 사용 목적에 대해서 더 쉽게 이해할 수 있다. QEMU 포스트 읽어보기 Intel과 ARM같은 하드웨어 개발 회사들은 컴퓨터 내에서 가상화 기술을 지원하기 위한 장치들(Intel VT 또는 AMD-V )을 넣어뒀다. 이런 장치들은 가상화 기술의 고질적인 성능 저하 문제를 해결 하기 위해 만들어졌는데 이..
-
QEMU와 KVM - 1개발/가상화 2017. 11. 1. 00:59
QEMU 'Quick Emulator' 풀네임 만으로는 와닿지 않지만 QEMU는 현재 PC에 설치된 운영체제와 다른 여러 개의 다른 운영체제를 구동 할 수 있는, 전가상화(Full Virtualization)를 지원하는 가상화 소프트웨어중 하나다. 전가상화 소프트웨어로는 VirtualBox나 VMware가 대중적으로 알려져있지만 가상화 기술 개발자들 사이에선 QEMU는 빼놓을 수 없는 가상화 소프트웨어중 하나다. 거의 가상화 기술 초창기를 주도 했던 소프트웨어이며 이때 만들어진 개념들도 상용화된 가상화 소프트웨어에서 사용되고 있다. 실제로 VirtualBox에선 상당부분을 QEMU 소스를 사용했다고 한다. QEMU는 다른 가상화 소프트웨어와는 다르게 오픈소스로 개발됐다(물론 VirtualBox도 오픈소스..
-
6. XenStore, Xenbus개발/가상화 2017. 1. 22. 13:40
Dom0의 장치드라이버인 Backend와 DomU의 장치드라이버인 Frontend가 서로 통신하기 위해선 각 상대 드라이버(Otherend) 상태와 연결 포트와 같은 정보들이 필요하다. 이런 정보들을 각 드라이버들마다 따로 정보를 관리하는 툴을 만들어서 처리 할 수 있겠지만, Xen에서는 이런 정보들을 Xenstore라는 자료구조를 통해 일괄적으로 관리할 수 있게 한다. Xenstore에는 이런 정보들이 입력된다. Dom0에서 xenstore-ls를 입력하면 현재 활성화된 Domain의 목록과 각 Domain들이 갖고 있는 장치들의 종류와 상태, 위치, 타입 등등을 알 수 있다. 그림을 보면 "local/domain/[domain id]/[device type]/[driver name]"처럼 경로의 형태..
-
5. 이벤트 채널 소개개발/가상화 2017. 1. 7. 17:52
이벤트 채널에 대해 설명하기 전에 인터럽트에 대해서 간단히 소개를 하자. 인터럽트는 CPU에 즉각적인 처리가 필요한 작업을 알리는데 사용되는 프로세스이다. 사용 방법은 네트워크, 블럭 드라이버 같은 하드웨어에 처리가 필요한 작업이 들어온 경우 인터럽트 핸들러에 알리고, 요청을 받은 인터럽트 핸들러는 이들의 요구 사항을 디바이스 정보와 함께 CPU에 전달한다. CPU는 현재 실행중인 프로세스를 잠시 중단 시키고 요청을 처리한다. 인터럽트가 있기 때문에 나는 블로그 포스트를 쓰면서도 친구의 카톡메시지를 동시에 받을 수 있다. 이벤트 채널의 역할은 인터럽트와 거의 동일하다. 단지 쓰이는 곳이 다를 뿐이다. 앞서 포스트에서 DomainU들은 Domain0와 Frontend-Backend Driver 관계를 가진..
-
가상화기술의 대표적인 보안 문제개발/가상화 2016. 12. 10. 12:54
가상화 기술은 각 OS들 간의 isolation을 지원해 다른 VM들에 비해 보안이 우수하다고 하지만 가상화 기술 또한 보안 문제에서 자유롭지 못하다. 기존 OS가 갖고 있는 보안 문제를 회피 할 수 있으면서도 또 다른 양상의 보안 문제가 발생 할 수 있는데 이번 포스트에서는 가상화 기술의 대표적인 보안 문제점들을 정리 해보고자 한다. 1. Virtual Machine들 간의 공격. 가상화 기술의 가장 큰 장점은 VM들끼리 독립된 관계를 유지(isolation)되어 서로 영향을 주지 않는다는 것인데 만약 이 처리를 잘 해두지 않는다면 VM들간에 혹은 VM이랑 VMM 간에 공격이 발생 할 수 있다. 공격 양상은 VMM이 갖고 있는 데이터를 바꿔버리거나 혹은 읽어오는것 등등이 있다. 2. VM escape ..
-
4. Domain 장치 드라이버 개발개발/가상화 2016. 11. 27. 21:36
Domain의 장치 드라이버 개발 설명에 앞서 왜 장치 드라이버 개발이 필요한지 먼저 알아보자. 일반적으로 OS는 각각의 드라이버(네트워크, 블록 등등)를 통해 실제 하드웨어 장치를 제어하는 시스템을 가지고 있다. 하지만 가상화 환경에서는 하드웨어는 하나인 상태에서 여러개의 OS가 떠있다. Xen 플랫폼 내에 구동중인 여러 Domain들이 각자 하드웨어 Device들을 각자의 방식으로 제어하려 한다면 어떻게 될까? 물건은 하나인데 주인이 여러명이 생기는 엉뚱한 상황이 벌어질 것이다. 각 Domain들의 하드웨어 통제권을 정리하기 위해 Xen은 Domain0에게 하드웨어를 제어하는 독점적인 권한을 주고 나머지 DomainU 들은 Domain0의 통해서 하드웨어에 접근 할 수 있도록 규칙을 세웠다. 간단히 ..