정보공간_1

[4기 강북 유성배] 가상화 기술의 이해 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강북 유성배] 가상화 기술의 이해

알 수 없는 사용자 2013. 11. 11. 19:13

안녕하세요.
저는 강북 멤버십 20-1기 유성배라고 합니다.

제가 지금 부터 소개드릴 내용은 가상화 기술(Virtualization technology)에 관한 내용입니다.
먼저 가상화의 개념부터 이 포스팅에서 다룰까 합니다.

 

가상화란 무엇일까요?

  가상화란 실제 존재하는 물리적인 자원을 여러 개의 어플리케이션 혹은 운영체제에게 논리적으로 분할하여 분배하는 것을 말합니다.

  가상화를 사용하는 이유는 뭘까요? 바로 자원 관리의 편의성 때문입니다. 물리적으로 자원을 분배하는 것은 한계가 있는 데다가 유연하지 못하기 때문입니다. 이런 장점을 가장 잘 활용할 수 있는 곳이 데이터센터입니다. 서버를 추가적으로 임대해주기 위해, 물리적인 서버를 추가로 구축하는 것보다 기존 서버들의 유휴자원을 논리적으로 분할하여 분배하는 것이 더 편리하기 때문입니다.


가상화는 대상에 따라서 여러 갈래로 나눌 수 있습니다. 스토리지 가상화, 네트워크 가상화, 하드웨어 가상화 등 여러 갈래가 있지만, 이번 포스팅에서는 하드웨어 가상화에 대해 주로 다루도록 하겠습니다.

  하드웨어 가상화란 하나의 단일 시스템을 논리적으로 분할해 여러 개의 시스템(가상 머신)으로 만드는 기술입니다. 이렇게 만들어진 가상 머신마다 개별적으로 운영체제를 실행할 수 있습니다.
  가상화에서 가장 중요한 요소는 바로 하이퍼바이저(Hypervisor)입니다. 단일 시스템을 논리적으로 분할해 주고, 분할한 시스템이 서로 충돌 나지 않게 관리하는 역할을 수행합니다.

 

 

  위 그림은 하드웨어 가상화의 구조에 대해서 나타낸 그림입니다. 맨 아래에는 하드웨어가 있고 이를 가상화하기 위한 하이퍼바이저가 바로 그 위에 위치하게 됩니다.
  하이퍼바이저에는 여러 개의 운영체제가 위치하고 있습니다. 각 운영체제는 각각 가상 머신에서 구동됩니다. 보통 가상 머신(Virtual Machine, 이하 VM) 위에서 구동되는 운영체제는 구분을 위해 게스트 운영체제(Guest OS)라고 부릅니다. 게스트 운영체제들 위에서는 여러 어플리케이션들이 구동될 수 있습니다.
  하이퍼바이저와 게스트 운영체제의 관계는 어플리케이션과 운영체제의 관계와 비슷하다고 볼 수 있습니다. 어플리케이션은 운영체제를 침범할 수 없고, 게스트 운영체제는 하이퍼바이저를 침범할 수 없습니다. 이러한 구조를 통해 게스트 운영체제가 맘대로 특권명령을 수행하지 못하게 하여, 다른 게스트 운영체제에 영향을 미칠 수 없게 합니다.. 또한,  어플리케이션이 게스트 운영체제에게 시스템콜(System call)을 통해서 요청을 보내듯이, 게스트 운영체제는 하이퍼바이저에게 하이퍼콜(Hypercall)을 통해 요청을 보낼 수 있습니다. 이런 방식을 통해 게스트 운영체제에서 함부로 수행하면 안되는 특권명령(Privileged operation)을 하이퍼바이저에서 대신 수행해주게 됩니다.

 

  하드웨어 가상화는 구조와 방법에 따라 여러개로 나눌 수 있습니다. 먼저 구조에 따라서 Type-I과 Type-II의 두 가지로 나눌 수 있습니다.

  Type-I은 bare-metal 방식이라고도 불립니다. 이 방식은 이름에서도 알 수 있듯이 바로 생짜의 하드웨어에 올라가는 개념입니다. 즉, 하이퍼바이저가 바로 하드웨어에 올라가는 방식입니다.
  반면, Type-II는 hosted 방식이라고 불립니다. 아까와는 반대로 하이퍼바이저가 바로 하드웨어와 붙지 않습니다. 운영체제 위에 하이퍼바이저가 올라가게 됩니다.
  아래 그림을 보시면, 그 차이를 명확하게 아실 수 있습니다.

 

  Type-I의 경우 Type-II에 비해 하드웨어까지 거치는 요소가 적기 때문에 일반적으로 좀더 높은 성능을 낼 수 있습니다. 반면, Type-II는 운영체제가 깔린 환경에 하이퍼바이저를 설치만 하면 되는 간단한 방법으로 쉽게 가상화를 할 수 있습니다. 여러분들은 이미 리눅스 수업 실습 등을 통해 Type-II는 많이 다루어 보셨을거라 생각합니다. Oracle의 VirtualBox나 VMWare의 VMWare Workstation 같은 경우가 바로 Type-II의 대표적인 예입니다. 참고로 Type-I의 경우는 Citrix의 Xen이 가장 대표적인 예라고 할 수 있습니다.

 

다음으로 방법에 따라서 전가상화, 반가상화, 하드웨어지원 가상화의 세 가지로 나눌 수 있습니다.

  1. 전가상화(Full-virtualization)
    • 특권 명령을 Trap하여 하이퍼바이저에서 수행하게 합니다. 또한, Binary Translation 등을 통하여 특권명령을 하이퍼콜로 동적으로 변경합니다. 운영체제를 수정한 적이 없거나 해당 하이퍼바이저용 운영체제를 따로 구하지 않았다면 전가상화를 수행하고 있는 것입니다. 대표적인 예가 Oracle의 VirtualBox입니다.
    • 장점 : 특권명령을 Trap하고 동적으로 Binary Translation을 수행하기 때문에 운영체제를 수정하지 않고도 하이퍼바이저 위에서 동작이 가능합니다.
    • 단점 : 동적으로 특권명령을 변경하는 방식이므로 이에 대한 오버헤드가 있을 수 있습니다.
  2. 반가상화(Para-virtualization)
    • 게스트 운영체제의 코드를 하이퍼바이저에 맞게 미리 수정합니다. 코드 내에 있는 특권 명령들을 하이퍼콜로 변경합니다. 또한, 사용하는 장치 드라이버 코드의 경우도 미리 변경해주어야 합니다. 이러한 코드 변경 작업을 반가상화한다(Para-virtualize)라고 합니다. 반가상화한 운영체제는 해당 하이퍼바이저에 종속적입니다. 대표적인 예가 Citrix의 Xen입니다.
    • 장점 : 미리 특권명령을 하이퍼콜로 변경하였으므로, 이에 대한 오버헤드가 없습니다.
    • 단점 : 소스코드가 공개되지 않은 운영체제의 경우 코드 변경 작업이 매우 어렵습니다.  반가상화된 운영체제를 구하지 못하면 이를 게스트 운영체제로 사용할 수 없습니다. (코드를 구해서 반가상화하여야 하는데 운영체제에 대한 높은 이해도가 요구됩니다.)

  3. 하드웨어지원 가상화(Hardware-assisted virtualization)
    • 하드웨어적으로 가상화를 지원하는 방법입니다. 인텔의 VT-x와 ARM의 Virtualization Extension이 대표적인 가상화를 지원하는 하드웨어입니다.
    • 장점 : 전가상화의 동적 변경에 따른 오버헤드가 없고, 어려운 반가상화작업이 요구되지 않습니다.
    • 단점 : 지원하는 하드웨어가 필요합니다. 인텔의 경우 VT-x는 이제 일반적인 기술이지만 아직 ARM은 그렇지 않습니다. (Cortex-A15 이상 부터 지원합니다. 아직 해당 프로세서가 많이 없으며, 삼성의 Exynos 5 계열이 가장 대표적인 프로세서입니다.)

 

  이번 포스팅에서는 가상화에 대한 설명과 각 분류에 대해 다루었습니다. 다음 세 개의 포스팅은 하이퍼바이저에 대해 다루도록 하겠습니다. Xen과 Virtualbox와 같은 PC/서버 환경에서 사용되는 하이퍼바이저를 다루고 Xen-ARM과 같은 임베디드 환경의 하이퍼바이저에 대해서 다룰 예정입니다.