Cloud Computing

가상화 소개

이번 강의에서는 가상화에 대한 기초적인 소개를 해드리겠습니다. 가상머신(Virtual Machine)이 무엇인지, ESXi 호스트가 무엇인지, 그리고 가상 머신에 리소스를 어떻게 제공하는지에 대해 공부할 것입니다. 우선 가장 기본적인 개념부터 공부해 봅시다!

1. 가상머신(Virtual Machine)이란 무엇인가?

여러 측면에서 가상 머신은 물리 컴퓨터와 매우 비슷합니다.
가상 머신도 물리적 컴퓨터와 마찬가지로 운영체제(OS)가 설치되어 있습니다. 그 운영체제는 윈도우일수도 있고, 리눅스일수도 있습니다.

중요한 점은 운영체제는 자신이 가상 머신 위에서 실행되고 있다는 사실을 전혀 알지 못한다는 사실입니다. 운영체제 입장에서 볼 때, 자신은 여느 컴퓨터와 다를 바 없는 물리 컴퓨터 위에서 실행되고 있다고 생각합니다. 운영체제는 가상머신 환경에 대해서 전혀 알지 못합니다.

하지만 가상머신(VM)과 물리적 컴퓨터 사이의 가장 큰 차이점 중 하나는 가상머신은 자신만이 독점적으로 사용할 수 있는 전용 물리적인 리소스를 가지고 있지 못하다는 것입니다.

2. ESXi 호스트와 리소스 공유

가상 머신은 호스트(Host)라고 불리는 물리적 서버 위에서 다른 여러 가상 머신들과 함께 실행됩니다. 그리고 그 호스트 위에 있는 모든 가상 머신은 호스트의 기본 물리적 리소스를 공유합니다.이것이 바로 가상화의 첫 번째 큰 이점입니다.

우리는 단일 물리적 시스템에서 많은 가상 머신을 실행할 수 있습니다. 각 가상 머신은 해당 호스트에서 실행 중인 다른 모든 가상 머신을 인지하지 못하는 독립적인 운영 체제를 갖게 됩니다.이 가상 머신들은 호스트의 하드웨어라는 공통된 물리적 하드웨어 집합을 공유합니다. 즉, 호스트의 메모리, CPU, 네트워크 카드, 스토리지 어댑터 등 ESXi 호스트가 가지고 있는 모든 물리적 리소스가 그 위에서 실행되는 가상 머신들에 의해 공유되는 것입니다.

이것이 바로 ESXi 호스트의 실체입니다. ESXi 호스트는 이 모든 가상 머신이 실행될 물리적 서버를 의미합니다.

3. 소프트웨어로서의 가상 머신

가상 머신은 컴퓨터에서 실행되는 소프트웨어와 거의 비슷하다고 볼 수 있습니다.
예를 들어, 제가 노트북을 열어서 Office를 실행하고, Google Chrome을 실행하고, 또 다른 여러 애플리케이션을 실행한다고 가정해 봅시다. 이 프로그램들은 서로 반드시 상호 작용하는 것은 아니며, 서로가 실행되고 있다는 사실을 모를 수도 있지만, 모두 제 컴퓨터의 기본 하드웨어를 사용하고 있습니다.

이것이 가상 머신과 비슷합니다. 저는 이 ESXi 호스트에서 가상 머신들을 실행할 수 있고, 그들은 서로를 인식하지 못하지만 모두 호스트의 기본 하드웨어 위에서 실행되고 있습니다. 또한 VM 각각은 다양한 형태로 호스트의 리소스를 소비할 수 있습니다.

  • 어떤 VM은 많은 메모리나 CPU를 소비할 수 있습니다.
  • 데이터베이스를 실행하는 VM은 많은 스토리지 트래픽을 유발할 수 있습니다.

따라서 동일한 호스트에서 운용되는 모든 VM 각각은 서로 다른 리소스 요구량을 가질 수 있습니다.

4. 하이퍼바이저(Hypervisor)와 ESXi

우리는 호스트를 ESXi 호스트라고 부르고 있습니다. 실제로 이것이 의미하는 바는 물리적 호스트가 있고, 그 물리적 호스트 자체가 ESXi가 설치되어 실행되는 실제 존재하는 물리적 서버라는 뜻입니다. ESXi는 그 물리적 서버 위에서 실행되는 하이퍼바이저(Hypervisor)입니다.

기본적인 작동 방식은 다음과 같습니다.

  1. 제가 물리적 서버를 구매합니다. 이것이 저의 호스트가 됩니다.
  2. 그리고 이 물리적 서버에 일반적인 운영 체제를 설치하는 대신, 하이퍼바이저를 설치합니다.
  3. 그 하이퍼바이저의 이름이 바로 ESXi입니다.

하이퍼바이저는 여러 가상 머신이 동시에 실행될 수 있게 해주는 소프트웨어입니다.

5. 추상화 계층 (Layer of Abstraction)

제가 하이퍼바이저라는 단어를 몇 번 사용했는데, ESXi 호스트가 바로 그 예입니다. ESXi는 1형(Type 1) 하이퍼바이저의 한 예입니다. 그리고 하이퍼바이저는 추상화 계층(Layer of Abstraction)이라는 것을 추가합니다.

추상화 계층은 기본적으로 가상 머신들과 그 VM들이 소비하려는 물리적 리소스 사이에서 실행되는 소프트웨어입니다.

VM들은 실제 물리적 하드웨어를 보고 있는 것이 아닙니다. 그들은 소프트웨어를 통해 가상화된 버전을 보고 있는 것입니다. 그들은 가상 메모리와 가상 CPU를 봅니다. 가상 네트워크 어댑터를 가지고 있습니다. 이러한 리소스를 가상화하여 보여주는 것이 하이퍼바이저의 역할입니다.

6. 오버서브스크립션 (Overrsubscription, 초과할당)

우리가 액세스를 제공할 가장 중요한 리소스 중 하나는 CPU입니다. 여기 작은 다이어그램을 보시면 4개의 물리적 CPU가 있고, 총 12개의 가상 머신이 표시되어 있습니다. 보시다시피 우리는 가상 머신보다 적은 수의 물리적 CPU를 가지고 있습니다.

가상 머신들은 1개의 CPU, 2개의 가상 CPU, 또는 4개의 가상 CPU로 구성될 수 있습니다. 각 VM에 할당하는 가상 CPU의 수는 다를 수 있습니다. 하지만 현실은, 제가 보유한 CPU보다 더 많은 가상 머신이 있다는 것입니다. 따라서 모든 VM에게 물리적 CPU 1개를 전용으로 줄 방법은 없습니다.

이것이 우리가 오버서브스크립션(Oversubscription, 초과 할당)이라고 부르는 개념입니다.

오버서브스크립션 개념을 이야기할 때마다 저는 식당 비유를 즐겨 사용합니다.
여기 제 식당이 있습니다. 우리가 식당을 짓고 있다고 가정해 봅시다.

  • 저는 이 식당을 지으면서 매일 200명의 손님이 문을 열고 들어올 것이라고 예상합니다.
  • 그렇다고 해서, 어떤 특정 순간에 200명이 동시에 식당에 있을 가능성은 거의 없습니다.
  • 아마 아침 식사 시간에 50명, 점심 시간에 50명, 이른 저녁에 40명, 오후 6시쯤 30명, 그리고 밤 8시 늦은 저녁에 20명이 올 수도 있겠죠.

비록 하루에 200명이 올 거라는 걸 알고 있지만, 50명만 앉을 수 있는 식당을 지어도 충분할 것입니다.
이것이 오버서브스크립션입니다.

저는 필요한 모든 리소스를 다 구축하지 않을 것입니다. 왜냐하면 그 모든 리소스가 한 번에 필요할 가능성은 낮기 때문입니다.

12개의 가상 머신이 있지만 물리적 CPU는 4개뿐인 시나리오를 생각해 보면, 이것은 괜찮습니다. 왜냐하면 12개의 모든 VM이 100%의 시간 동안 100%의 CPU를 필요로 할 확률은 낮기 때문입니다. 어떤 VM은 매우 바쁠 수 있지만, 다른 VM은 그렇게 바쁘지 않을 수 있습니다. 따라서 4개의 CPU를 12개의 가상 머신이 공유하더라도 원활하게 작동하며 좋은 성능을 제공할 수 있습니다.

이것이 오버서브스크립션의 개념입니다. 우리는 우리가 소유한 물리적 리소스를 가능한 한 가장 효율적으로 사용하고 싶어 합니다. 그리고 이것이 ESXi 호스트가 정말 잘하는 일 중 하나입니다.

정리

이번 강의에서 배운 핵심 개념을 잠시 복습해 보겠습니다.

  • 가상 머신(VM)은 운영 체제와 가상 하드웨어를 가지고 있습니다.
  • 따라서 실제 전용 물리적 하드웨어를 갖는 것이 아니라, 하이퍼바이저 위에서 다른 많은 가상 머신과 함께 실행됩니다.
  • vSphere의 경우, 우리는 ESXi 하이퍼바이저를 사용합니다. 이것이 우리의 1형(Type-1) 하이퍼바이저입니다.
  • ESXi 하이퍼바이저는 물리적 호스트에 설치되며, 추상화 계층을 사용하여 호스트의 물리적 리소스를 가상 머신들에게 제공(Present)합니다.

답글 남기기