들어가는 말
기술은 종교와 같은 속성을 갖고 있다고 생각합니다. 좋은 기술이라고 하더라도 역사 속의 에피소드 하나로 묻히는 경우도 있고, 도대체 이게 왜?라는 생각이 들정도로 조잡하지만 시장의 주류로 남는 경우도 있습니다. 기술이 세상에 태어나서 성장하고 주류로서 받아들여지고 아니고는 기술의 좋고 나쁨이 아니라 사람들이 그 기술을 얼마나 필요로 하고 있으며, 기술 도입 초기에 그 기술의 미래를 믿고 얼마나 많은 개발자 즉 복음서를 만드는자(evangelist?)들이 그 기술의 깃발아래로 모여드느냐에 달려있다고 봅니다.
최근 시스템 소프트웨어서 가장 큰 이슈라면 역시 Virtualization(가상화)일 것입니다. 저로서는 뛰어난 디지털 디스플레이 기술 및 무선 네트워킹 기술들과 맞물려 향후 유비쿼터스 환경을 구축하기 위한 중요한 기둥의 하나라고 믿는 기술이지만 많은 분들은 그 복잡성과 높은 오버헤드로 인해 표준적인 컴퓨팅 환경으로 자리 잡을 것인가에 대해 회의적인 것이 사실입니다.
이러한 상황에서 연구실에서 많은 후배님들과 함께 VM 연구 그룹을 운영하고 있는 입장으로서, 또한 VM의 전도사를 자처한 사람으로서 이교도 및 무교인 분들을 위해 가벼운 입문용 복음서를 하나 써보려고 합니다. 이 글은 일단 초안이 완성되면 공개할 것이고 그 이후로도 계속 추가 및 수정을 진행할 예정입니다.
Let there be light :)
-----------------------------------------------------------
목차
1. Virtual Machine은 무엇인가
2. Virtual Machine의 필요성 및 활용 범위
3. 왜 지금이 Virtual Machine의 Renaissance인가
4. 연구 및 비즈니스의 기회로서의 Virtual Machine
1. Virtual Machine은 무엇인가 <그림 1. 기존 구조와 VM 구조>
a. 정의
Virtual machine(이하 VM)은 하드웨어 구조를 추상화하여 다양한 운영체계가 하부 구조인 하드웨어에 영향을 받지 않고 실행되도록 하는 구조를 말합니다. VM을 사용하면 얻게 되는 주요 장점으로는 하드웨어에 상관 없이 여러 운영체계 및 소프트웨어를 실행할 수 있으며 심지어 한 대의 컴퓨터에서 동시에 여러 운영체계를 실행할 수 있습니다. 즉 달리 말하면 멀티태스킹 기술로 인해 하나의 프로세서가 여러 태스크들을 동시에 실행함으로서 다수의 프로세서가 존재하는 것처럼 보이듯이 하나의 하드웨어가 여러 버츄얼 시스템들을 동시에 실행함으로서 외부에서 보았을 때에는 다수의 시스템이 존재하는 것으로 보이게 하는 기술입니다.
b. 구조
기존의 시스템은 그림 1의 좌측과 같이 하드웨어를 통제하여 어플리케이션이 표준 API를 통해 하드웨어를 사용할 수 있도록 해주는 운영체계가 존재하고 그 위에서 어플리케이션이 동작하는 구조를 따르고 있습니다. VM 구조에서는 운영체계는 하드웨어가 아닌 Virtual Machine Monitor(그림에서는 VMWare라고 표시되어 있습니다. 이하 VMM)가 제공하는 가상의 하드웨어 환경을 진짜 하드웨어로 착각하는 상태에서 실행되고 어플리케이션은 역시 운영체계가 제공하는 API를 통해 가상 하드웨어를 사용하게 됩니다.
만약 VMM이 하부 하드웨어 구조를 완벽하게 흉내내어준다면 Guest OS는 수정을 할 필요가 전혀 없습니다. 하지만, 현재 프로세서들이 이러한 하드웨어 구조를 완벽하게 흉내내기에는 몇가지 제약점이 따릅니다. 완벽한 에뮬레이션을 위한 하드웨어 구조에 대해서는 Part 3와 Part 4에서 중점적으로 논하도록 하겠습니다. 결국 현재 Xen이나 VMWare등은 완벽한 하드웨어 에뮬레이션을 제공하지 못하고 있으며 이를 해결하기 위해 각각 독자적인 정책을 사용하고 있습니다.
완벽한 하드웨어 에뮬레이션에서 가장 큰 문제가 되는 부분은 프로세서의 실행 레벨(privilege level)입니다. 기존의 시스템에서는 운영체계는 PR0, 즉 가장 높은 레벨로 실행되어 하드웨어의 모든 설정을 조작하고 모든 명령을 다 실행할 수 있었습니다. 나머지 어플리케이션들은 그 이하의 레벨로 실행되어 높은 권한이 필요한 작업(privileged operation)을 하려면 운영체계를 통해서 진행해야만 했습니다. 하지만 Guest OS는 PR4인 VMM에서 실행되며 그 결과 역시 PR4인 낮은 권한을 갖게 됩니다. 즉, Guest OS는 하드웨어 조작을 위해 PR0에서만 실행되는 명령을 내리게 되는데 이 때 이것은 문제를 발생시키거나 프로세서에 의해서 묵살되게 되게 됩니다.
이를 피하기 위해 Xen의 경우 Guest OS로 실행될 Linux 커널에서 PR0의 권한이 필요한 코드를 소스 수준에서 Xen이 그 코드를 대신 실행할 수 있도록 패치를 합니다. 이른바 짜가버추얼라이제이션(para-virtualization)이라는 것입니다. 장점으로는 Xen에 최적화된 코드를 실행하게 되고 VMM이 신경쓸 부분이 많이 줄어들게 됨으로서 높은 성능을 얻을 수 있습니다. VMWare의 경우는 보다 높은 가상화를 얻기 위해 더 어려운 기술을 사용하고 있습니다.
VMWare는 실행될 코드 중에 권한이 높은 코드가 있는지를 검사하여 그 부분을 VMM이 처리해주는 코드로 바꾸는 이른바 dynamic code transform을 사용하고 있습니다. 역시 이러한 기술은 overhead가 많이 있으며 결국 VMWare에서 많은 I/O나 privileged operation을 하면 성능이 비약적으로 낮아진다는 것을 알 수 있습니다. 물론 비디오카드 같은 경우 VMWare Tools등의 방식으로 높은 성능을 제공하고 있긴 합니다.
이러한 과도기적 VMM등은 결국 VMWare ESX Server나 Xen 3.0 등과 같이 Host OS 없이 VMM이 바로 하드웨어 위에서 실행되는 완전한 형태의 Native VMM과 인텔의 Vanderpool, AMD의 Pacifica 등과 같이 VM Mode를 지원하는 프로세서의 등장으로 인해 대체될 것입니다.
VM Mode를 지원하는 프로세서는 VMM의 역할을 경량화시켜주고 privileged operation에 대해 VMM의 간섭이 필요 없어지게 해주므로 오버헤드를 많이 줄여주게 됩니다. Native VMM 등은 Host OS의 시스템콜을 통한 privileged operation을 없애주므로 I/O 성능등이 Native OS 수준으로 향상될 것이 기대됩니다.
c. 성능 오버헤드
VM을 사용하는데 만약 오버헤드가 들지 않는다면 사용자에게 보다 많은 유연성을 제공하는 이러한 기술을 사용하지 않을 이유는 없습니다. 결국 VM이 일반적인 데스크탑 및 모바일 환경에서 사용되기에 가장 큰 걸림돌은 현재 높은 오버헤드에 있다고 생각합니다.
오버헤드는 VMM의 형태와 목표로 하는 어플리케이션의 특성에 따라 크게 달라집니다. Xen과 같은 paravirtualization 기술을 사용하면 CPU 관련 작업은 90% 이상의 성능을 보인다고도 합니다. 하지만, 일반적으로 현재 VM 지원 하드웨어 등이 없는 이유로 b에서 설명한 문제들이 I/O 작업의 발목을 잡습니다. 정확한 연구 결과를 소개해드리지 못하지만 간단한 벤치를 돌려보면 VMWare나 Xen이나 50%미만, 특히 VMWare의 경우 40% 미만의 성능을 보이더군요. 특히 VMWare에서 가상하드디스크를 사용하고 공간을 미리 할당 받지 않고 on-demand로 할당 받아 사용하는 경우 그 성능은 상당히 떨어집니다.
이러한 문제들 중 상당 부분은 역시 곧 출시될 VM 지원 프로세서들을 통해 해결이 되겠지만 근본적으로 Native 시스템에서도 상대적으로 느린 I/O 디바이스를 여러 시스템이 공유한다는 것은 앞으로도 VM의 발목을 잡는 최후의 보루는 I/O 디바이스의 속도가 될 것이라는 생각이 듭니다. 하지만 그런 것 역시 빠른 버스 구조와 병렬화된 I/O 컨트럴러 및 복수개의 하드디스크 장착등으로 많이 완화될 것이라 믿습니다.



댓글을 달아 주세요
휴~ 다 읽었당. 요즘 vm에 대한 이야기를 너무 많이 들어서 세뇌당하는거 같아..
잘 읽었어요..^^ 자주와서 봐야겠어요...좋은글..~~ㅎ
Clouded the VM's future is ...
I sense much motivation in you ...
Motivation leads to diligence ... Diligence leads to work ... Work leads to suffering!
(from www.phdcomics.com)
드뎌 나왔군요 ㅋㅋ 병실에 무선 인터넷 신호가 미약하게 나마 들어오네요 ㅡㅡ;
어디서 날라온건지는 모르겠지만 ㅎㅎ 앞으로 2, 3, 4타도 기대할께요^^
좋은글 잘 읽고 갑니다 ㅎ