이동철입니다.

3월인데 아직도 쌀쌀하네요…. 제가 생각하기에는 Windows Server 8의 주요 역할은 바로 Hyper-V가 아닐까 싶습니다. 요즘, 서버 가상화 및 VDI 등 가상화 기술이 IT 업계의 최대 화두입니다.

그래서, Windows Server 8의 신규 기능을 소개하는 Series를 잠시 중단하고, Windows Server 8의 Hyper-V의 Advanced 기능을 소개하고자 합니다. 한 가지 여러분들에게 미안한 점은 Hyper-V에 대한 포스팅에는 개념 소개만 있고, Step-By-Step 가이드는 제공하지 못하는 것입니다. 제가 하드웨어를 확보하지 못 해 아직까지도 Hyper-V에 대한 테스트를 진행하지 못 했기 때문에, Step-By-Step 가이드를 작성하지 못 했습니다. 이 점 널리 양해해 주시기 바라면서, 추후 반드시 Hyper-V의 Advanced 기능에 대한 가이드를 첨부할 것을 약속 드립니다.

먼저, Hyper-V 8의 Dynamic Memory에 대한 소개를 합니다.

Hyper-V Dynamic Memory ( http://technet.microsoft.com/en-us/library/hh831766.aspx )

VDI Pooling 같은 환경의 가상 기계들의 사용률이 낮거나 유휴상태라면, Windows Server 8의 Hyper-v Dynamic Memory 기능은 더 많은 가상 기계를 운용할 수 있고, 가상 기계들의 안정적인 재 시작을 가능하게 합니다. 또한, 가상 기계가 운영 중인 상화에서도, 가상 기계의 메모리를 동적으로 증가 및 감소시킬 수 있는 기능을 Dynamic Memory에서 제공합니다.

Windows Server 2008 R2 SP1 에서 소개된 Dynamic Memory는 가상 기계가 소유할 수 있는 최소의 메모리 양으로써 “시작 메모리 (startup memory)”를 정의했습니다. 그러나, 통상적으로 Windows 컴퓨터는 운영 중인 상황보다 시작 시점에 더 많은 메모리를 사용합니다. 결과적으로, 가상 기계가 시작된 후, 최초 할당했던 메모리를 회수할 수 없기 때문에, 관리자는 가상 기계에 부가적인 메모리를 할당하는 경우가 종종 있습니다.

Windows Server 8 의 Dynamic Memory는 “최소 메모리 설정 (minimum memory settings)” 이라는 신규 기능을 제공합니다. “최소 메모리 설정 (minimum memory settings)” 기능을 사용하면, Hyper-V 호스트가 가상 기계에서 사용하지 않는 메모리를 회수할 수 있습니다. 즉, 가상 기계가 시작된 후, 안정화 상태를 유지하면서, 사용하지 않는 유휴 메모리를 Hyper-V 호스트가 다시 회수함으로써, 더 많은 가상 기계를 Hyper-V 에서 호스트 할 수 있습니다. 이러한 기능은 VDI 환경에서는 더욱 효과적입니다.

Windows Server 8에서, 가상 기계의 안정적인 재시작 작업을 지원하기 하기 위해, “Smart Paging” 이라는 기능도 제공합니다. 앞서 살펴본 “최소 메모리 설정 (minimum memory settings)” 기능을 사용함으로써 더 많은 가상 기계를 Hyper-V 호스트에서 운영하더라도, 결국에는 Hyper-V 호스트는 메모리 부족 현상을 겪을 수도 있습니다. 예를 들어, 가상 기계가 시작 메모리보다 작은 양의 메모리를 소유한 상태에서 재시작 된다면, Hyper-V 호스트는 해당 가상 기계가 재시작할 수 있는 메모리를 할당해야 합니다. 이러한 상황 때문에, Hyper-V 호스트가 항상 여유 메모리를 충분히 확보하고 있지는 않습니다. 결국 이러한 메모리 부족 현상으로 인해 산발적으로 가상 기계의 재시작이 실패할 수도 있습니다. 이러한 상황을 해결하기 위해, Smart Paging 기능이 도입되었습니다. Smart Paging은 “최소 메모리 (Minimum Memory)” 와 “시작 메모리 (Startup Memory)”의 차이를 메우기 위해 사용됩니다. Smart Paging은 어떠한 상황에서도 일단 가상 기계의 안정적인 재시작을 보장할 수 있습니다.

Windows Server 2008 R2 SP1의 Dynamic Memory와 유사하게, Windows Server 8도 가상 기계에 “최소 메모리 양 (Minimum Memory Amount)”을 구성할 수 있습니다. 최소 메모리 양이 항상 해당 가상 기계에 할당되도록 Hyper-V 호스트는 메모리를 유지해야 합니다.

“시작 메모리 (Startup Memory)” 보다 더 작은 “최소 메모리 (Minimum Memory)”로 구성된 가상 기계가 안정적으로 재시작하기 위해, Windows Server 8의 Hyper-V는 Smart Paging 을 사용합니다. 이러한 상황에서, 과거의 Windows Server 2008 R2 SP1의 Hyper-V는 메모리 자원 부족으로 가상 기계를 재시작할 수 없다는 메시지를 사용자에게 보여줍니다. Smart Paging 메모리 관리 방식은 디스크를 사용합니다. 가상 기계의 재시작에 필요한 추가적인 메모리는 바로 디스크를 사용하는 방법이 바로 Smart Paging 입니다. 추가적인 메모리로써 디스크를 사용하기 때문에, 분명히 장점과 단점이 존재합니다. 가상 기계들의 안정적인 재시작을 위해 추가적인 물리적 메모리가 필요없다는 장점이 존재합니다. 그러나, 실제 메모리보다는 디스크를 가상 메모리로 사용하기 때문에, 가상 기계의 성능이 저하되는 단점도 존재합니다.

Smart Paging 사용으로 인한 성능 영향을 최소화하기 위해, Hyper-V는 다음 상황에서 Smart Paging을 사용합니다:

  • The virtual machine is being restarted.
  • There is no available physical memory.
  • No memory can be reclaimed from other virtual machines running on the host.

 아래 상황에서는 Smart Paging을 절대 사용하면 안 됩니다:

  • A virtual machine is being started from an “off state” (instead of a restart).
  • Oversubscribing memory for a running virtual machine is required.
  • A virtual machine is failing over in Hyper-V clusters.

 Hyper-V 호스트 메모리가 oversubscribed 되었을 때, Hyper-V 호스트는 게스트 운영 체제의 paging 동작에 의존하여 메모리 부족 현상을 해결합니다. 게스트 운영 체제의 paging 작업은 Smart Paging 보다 효율적이기 때문입니다. 게스트 운영 체제의 paging 작업은 Windows Memory Manager가 처리합니다. Windows Memory Manager는 가상 기계의 메모리 사용률에 관하여 Hyper-V 호스트보다 더 많은 정보를 알고 있습니다. 즉, 가상 기계의 메모리가 paging 될 때, Windows Memory Manager가 Hyper-V 호스트에 더 좋은 정보를 제공할 수 있습니다. 이러한 이유 때문에, Smart Paging 보다 Hyper-V 호스트에 오버헤드가 적습니다.

Smart Paging의 영향을 최소화하기 위해, 가상 기계가 시작된 이후 유휴 메모리를 가상 기계로부터 회수해야 합니다. 이러한 메모리 회수 작업은 가상 기계의 운영 체제 내에 “Dynamic Memory 구성요소 (ballooning 이라는 process)”가 처리합니다. 해당 가상 기계는 Smart Paging 사용을 중지합니다. 이러한 기술을 사용하면, Smart Paging 사용은 임시이고, 10분 이상 사용하지 않도록 합니다.

Smart Paging 기술이 사용되는 방법은 아래와 같습니다:

  • Smart Paging files are created only when needed for a virtual machine.
  • After the additional amount of memory is removed, Smart Paging files are deleted.
  • Smart Paging is not used for this virtual machine again until another restart occurs and there is not enough physical memory.