Compartilhar via


Native?! Host-Based?! Hypervisor, Binary Translation

오랜만에 기술적인 이야기를 한번 포스팅해볼까 합니다. :) 가상화에 대한 이야기를 나누다보면, 여러 용어들에 접하게 되는데요. 그중 많이 이야기가 나오는 것이 바로 Hypervisor의 타입 유형 및 Binary Translation에 대한 이야기입니다.

하이퍼바이져가 무엇인지부터 간단히 다시 정리를 해보죠. 작년 9월 27일에 포스팅한 글을 보시면 참고가 조금은 되실 수 있을 것입니다.

clip_image006

하이퍼바이져는 하드웨어와 실제 운영체제 & 가상 머신 사이에 위치한 얇은 추상화 계층입니다. 하이퍼바이져는 머신에서 처리를 요청하는 많은 하드웨어에 대한 접근을 처리해주며, 각각의 머신별 파티셔닝을 공정하게 나누어주는 역할을 하게 됩니다. 꼬알라의 방식대로 정의를 하자면, 하드웨어를 공정하게 나누어쓸수 있게 해주는 추상화 계층이라고 생각합니다.

물리적인 머신이던 가상 머신이던 하드웨어에 대한 접근시는 하이퍼바이져를 통과해야 하며, 하이퍼바이져는 물리적인 머신의 커널보다 먼저 로딩되어, 자리를 잡아야 합니다. 이에 Windows Server 2008 Hyper-V의 경우에도 하이퍼바이져 영역이 가장 먼저 운영 체제 부팅시에 자리를 잡게 됩니다.

간단하게 하이퍼바이져가 무엇인지 정리를 했으니, 이제 Type 1, Type 2에 대한 유형을 살펴보죠. Type 1은 다른 말로 Native Hypervisor라고 합니다. Type 2의 경우에는 Hosted Hypervisor라고 하고요. Microsoft의 Hyper-V, XEN, VMWare의 하이퍼바이져는 모두 Type 1 방식의 하이퍼바이져를 사용하며, Type 2의 하이퍼바이져는 운영 체제에서 하이퍼바이져, 응용 프로그램, 관련된 가상화 하드웨어 드라이버를 모두 제공하게 됩니다. 당연히 Type 1의 하이퍼바이져가 실제 하드웨어 플랫폼 위에서 동작하기 때문에, Type 2보다 성능이 우수합니다.

Virtual Server의 경우에는 하이퍼바이져 기반의 가상화가 아닙니다. Virtual Server를 구지 정의하자면, 호스트 기반의 소프트웨어 가상화 기술입니다.

Binary Translation을 설명해야 약간의 지식이 확장될 수 있습니다. Binary Translation은 x86 기반의 옛날 가상화에서 사용하던 기술입니다. 실제로는 가상화를 위해서 만들어진 기술은 아니라고 합니다. 일반적으로 가상 머신 플랫폼은 Translation 또는 Emulation을 하여 가상화 환경을 처리합니다. 왜냐하면 가상 머신이던, 실제 머신이던 프로세서로 전달하는 "Privileged" 명령을 실행하려고 합니다. Privileged 명령의 경우는 실제 물리적인 머신에서만 명령을 내릴 수 밖에 없었습니다. 왜냐하면 이 명령은 실제 CPU로 전달되어야 하기 때문입니다. CPU에 가상 머신이 Privileged 명령을 내리는 방법론 자체가 없었기 때문이죠. 이에 CPU 벤더인 인텔과 AMD는 여러대의 가상머신이 프로세서를 감지하고, 이에 Privileged 명령을 전달할 수 있도록 기술을 확장한 것이 바로 AMD-V, Intel-VT 기술입니다. 이 기술을 사용한다면 더이상 Translation과 Emulation을 위해 Binary Translation을 할 필요가 없어졌죠.

Virtual PC 2007, Virtual Server 2005 R2 SP1부터는 Intel VT, AMD-V 기능을 가진 CPU를 사용할 경우, 이를 활용할 수 있는 옵션이 있습니다. 이는 모든 하드웨어에 대해서 공유하는 모델이 아니라, CPU로 처리되는 명령에 대해서만 하드웨어를 사용할 수 있게 해주고, 나머지 하드웨어들은 모두 기존의 방식인 Emulation을 사용하는 것입니다.

그렇다면 이제 하이퍼바이져가 어디에 맵핑될지.. 딱 이해가 가실 수 있겠네요. 바로 Intel-VT, AMD-V 기술을 사용하는 영역에 자리를 잡게 되고, 이런 이유로 Hypervisor 기반의 가상화 기술은 Intel-VT, AMD-V가 필수입니다.

조금은 이해가 되셨나요?

Comments

  • Anonymous
    May 15, 2008
    좋은글 잘보고 갑니다. 씬클라이언트 제품을 담당한지 별로 안되어서 가상화/SBC를 잘 모르는 저로써는 코알라님 덕분에 많이 공부하고 있습니다. 담에 일본오시면 연락 주세요,맛난거라도 하나 사드리죠..ㅎ

  • Anonymous
    May 15, 2008
    열심히 코멘트 달았는데 가입안하면 안 남는군요..--; 항상 좋은글 잘 보고 갑니다

  • Anonymous
    May 15, 2008
    Hyper-V + Virtual Server 2005 SP1 올렸을 때 Virtual Server가 상당히 느려지던데요 Hypervisior 계층때문에 그런건가요?

  • Anonymous
    May 15, 2008
    둘다 같이 쓰는건 안됩니다. 제가 알기론 두개의 가상화 기술이 프로세서의 기술을 동시에 쓸수 없기 때문입니다. 설치는 되겠지만, 지원 자체를 하지 않는 요소입니다. :)

  • Anonymous
    May 15, 2008
    panzer979 // 가입안하시고 남기시면 제가 승인을 해야 뜨게 되어져 있습니다. :) 방문해주셔서 감사합니다.