Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows Server Hyper-V에서 SR-IOV 구성하기: BIOS 설정부터 가상 머신 적용까지

SR-IOV란 무엇인가?

SR-IOV(Single Root Input/Output Virtualization)는 호스트의 물리적 하드웨어 장치를 가상화하여 가상 머신(VM)이 호스트 장치에 직접 접근할 수 있도록 하는 하드웨어 가상화 기술입니다. 다양한 유형의 장치를 가상화할 수 있지만, 실무에서는 주로 네트워크 어댑터를 가상화하는 데 활용됩니다. 이 글에서는 Windows Hyper-V 서버에서 가상 머신 네트워크 어댑터용 SR-IOV를 활성화하고 구성하는 방법을 단계별로 살펴보겠습니다.

SR-IOV는 Hyper-V 2012 이상 버전에서 지원되며, 무료로 제공되는 Microsoft Hyper-V Server에서도 사용할 수 있습니다. SR-IOV의 세부 원리까지 깊이 다루지는 않겠지만, 실무적인 관점에서 핵심만 정리하면 다음과 같습니다. SR-IOV를 사용하면 가상 머신이 호스트의 물리적 네트워크 어댑터에 직접 접근할 수 있으며, Hyper-V 가상 스위치를 거치는 트래픽 처리 과정을 우회할 수 있습니다. 또한 하나의 물리적 네트워크 어댑터가 SR-IOV 모드에서 여러 가상 머신에 동시에 서비스를 제공할 수 있습니다.

Hyper-V 가상 머신에 SR-IOV를 적용하면 다음과 같은 효과를 기대할 수 있습니다.

  • 네트워크 처리량(Throughput) 대폭 향상
  • 네트워크 지연 시간(Latency) 감소
  • Hyper-V 소프트웨어의 트래픽 처리로 인한 CPU 부하 감소

주의: SR-IOV는 NIC 티밍(NIC Teaming)과는 호환되지 않습니다.

SR-IOV 활성화를 위한 사전 요구 사항

Hyper-V 호스트에서 SR-IOV를 활성화하려면 몇 가지 요구 사항을 충족해야 합니다.

먼저, 서버 BIOS에서 SR-IOV와 가상화 관련 옵션들을 활성화해야 합니다. 제조사마다 BIOS 설정 메뉴의 위치와 명칭은 다를 수 있습니다.

  • 가상화 지원: Intel(Virtualization Technology, Intel VT, VT-d, Vanderpool), AMD(SVM, AMD-V)
  • IOMMU(입출력 메모리 관리 장치)
  • SR-IOV
  • ASPM(Active State Power Management)

BIOS에 위 항목이 모두 존재하지 않거나 SR-IOV 항목 자체가 없더라도, 서버가 SR-IOV를 지원하지 않는다는 의미는 아닙니다. 예를 들어 Supermicro 메인보드는 BIOS에 별도의 SR-IOV 메뉴가 없지만 ASPM이 기본적으로 비활성화되어 있는 경우가 많습니다. 이런 경우 ASPM과 가상화 지원을 활성화하면 SR-IOV가 자동으로 활성화됩니다.

참고: BIOS에서 SR-IOV가 비활성화된 상태로 Windows 호스트 OS를 설치한 후 나중에 SR-IOV를 활성화하면, 시스템은 네트워크 어댑터가 교체된 것으로 인식합니다. 이 경우 기존에 설정해 둔 고정 IP 주소가 초기화되므로 주의가 필요합니다.

PowerShell로 SR-IOV 하드웨어 지원 여부 확인

다음 PowerShell 명령을 실행하면 Hyper-V 서버가 하드웨어 수준에서 SR-IOV를 지원하는지 확인할 수 있습니다.

(Get-VMHost).IovSupport
(Get-VMHost).IovSupportReasons

서버가 SR-IOV를 지원하면 IovSupport 값이 True로 표시되고, 지원하지 않으면 False로 표시됩니다. False인 경우 IovSupportReasons 항목에 SR-IOV를 사용할 수 없는 구체적인 이유가 상세하게 표시됩니다. 일반적으로 나타나는 대표적인 사유는 다음과 같습니다.

  • 시스템 칩셋이 인터럽트 리매핑(interrupt remapping)을 지원하지 않아 SR-IOV를 사용할 수 없습니다.
  • CPU가 SLAT(Second-Level Address Translation)을 지원하지 않아 SR-IOV를 사용할 수 없습니다. Intel 프로세서에서는 EPT(Extended Page Tables), AMD 프로세서에서는 RVI(Rapid Virtualization Indexing) 또는 NPT(Nested Page Tables)라는 명칭으로 불립니다.
  • PCI Express 하드웨어가 어떠한 루트 포트에서도 ACS(Access Control Services)를 지원하지 않아 SR-IOV를 사용할 수 없습니다. 자세한 내용은 시스템 제조사에 문의하십시오.
  • BIOS에 하드웨어 기능에 대한 잘못된 정보가 포함되어 있어 BIOS 업데이트가 필요합니다.
  • 시스템 칩셋이 DMA 리매핑(DMA remapping)을 지원하지 않아 SR-IOV를 사용할 수 없습니다.
  • I/O 리매핑 하드웨어 사용이 비활성화되어 있어 SR-IOV를 사용할 수 없습니다.
  • Windows가 PCI Express를 제어할 수 있도록 시스템 BIOS 업데이트가 필요합니다.
  • 시스템이 SR-IOV를 위한 칩셋을 지원하는지, 그리고 BIOS에서 I/O 가상화가 활성화되어 있는지 확인하십시오.
  • 시스템이 PCI Express 버스가 존재하지 않는다고 보고하고 있어 SR-IOV를 사용할 수 없습니다.

가상 스위치의 IOV 정보 확인

Get-VMSwitch 명령의 전체 출력에도 유용한 정보가 포함되어 있습니다.

Get-VMSwitch | fl *iov*
IovVirtualFunctionCount : 6
IovVirtualFunctionsInUse : 3

첫 번째 값은 사용 가능한 IOV 가상 함수(가상 장치)의 개수를, 두 번째 값은 현재 가상 머신이 사용 중인 개수를 나타냅니다.

Hyper-V 가상 스위치에서 SR-IOV 활성화

Hyper-V 가상 스위치를 생성할 때 “SR-IOV(단일 루트 I/O 가상화) 사용” 옵션을 체크합니다.

또는 PowerShell로 가상 스위치를 생성할 때 EnableIov 매개변수를 지정할 수 있습니다.

New-VMSwitch -Name "VMNetExt" -NetAdapterName "Ethernet 2" -EnableIov $true

중요: 가상 스위치는 생성 이후에는 SR-IOV를 활성화할 수 없습니다. 생성 시점에 SR-IOV를 함께 활성화하지 않았다면 기존 가상 스위치를 삭제한 후 다시 생성해야 합니다.

Hyper-V 호스트가 SR-IOV를 지원한다고 해서 특정 가상 스위치에서 반드시 동작하는 것은 아닙니다. 가상 스위치는 반드시 SR-IOV를 지원하는 네트워크 어댑터에 바인딩되어야 합니다.

또 한 가지 유의할 점이 있습니다. 메인보드에 여러 개의 네트워크 어댑터가 장착되어 있더라도 SR-IOV를 지원하는 것은 일부 어댑터에 불과할 수 있습니다. 더욱이 제조사 스펙 시트(datasheet)에 SR-IOV 지원이 명시되어 있어도, 실제 사용 중인 메인보드에서는 동작하지 않는 경우도 있습니다.

가상 스위치를 구성한 후에는 다음 명령으로 상태를 확인하십시오.

Get-VMSwitch | Select IovSupport, IovSupportReasons, IovEnabled

IovEnabled 속성은 해당 가상 스위치에서 SR-IOV가 실제로 활성화되었는지 여부를 보여줍니다.

SR-IOV를 지원하는 네트워크 어댑터 목록 역시 PowerShell로 확인할 수 있습니다.

Get-NetAdapterSriov | Sort Name | ft Name, InterfaceDescription, SriovSupport

가상 머신 네트워크 어댑터에서 SR-IOV 활성화

Hyper-V 호스트와 가상 스위치 수준에서 SR-IOV를 활성화했다면, 이제 개별 가상 머신에서 SR-IOV를 켤 차례입니다(기본값은 비활성화 상태). 가상 머신 설정의 네트워크 어댑터 항목에서 하드웨어 가속(Hardware Acceleration) 섹션 안에 있는 SR-IOV 사용 옵션을 찾을 수 있습니다.

PowerShell을 통해서도 가상 머신의 네트워크 어댑터에 대해 SR-IOV를 활성화할 수 있습니다.

Set-VMNetworkAdapter -VMName mytestvm -VMNetworkAdapterName "Network Adapter" -IovWeight 100

SR-IOV를 비활성화하려면 IovWeight 값을 0으로 변경하면 됩니다.

이벤트 뷰어에서 SR-IOV 오류 및 이벤트 확인

Hyper-V의 SR-IOV 관련 오류와 이벤트는 이벤트 뷰어(Event Viewer)의 별도 로그에서 확인할 수 있습니다.

응용 프로그램 및 서비스 로그 → Microsoft → Windows → Hyper-V-SynthNic → Admin

SR-IOV가 정상적으로 작동하고 있다면, 가상 머신 시작 시 이벤트 뷰어에서 다음과 같은 항목을 확인할 수 있습니다.

12597 : 네트워크 어댑터(%NIC_ID%)가 가상 네트워크에 연결되었습니다.
12582 : 네트워크 어댑터(%NIC_ID%)가 성공적으로 시작되었습니다.
12584 : 네트워크 어댑터(%NIC_ID%)가 가상 함수를 할당했습니다.
12588 : 네트워크 어댑터(%NIC_ID%)에 가상 함수가 할당되었습니다.

마무리

SR-IOV는 가상 머신과 하이퍼바이저의 네트워크 성능을 크게 향상시키는 강력한 기능입니다. 특히 가상 머신의 트래픽 양이 많아 호스트 CPU에 상당한 부하가 걸리는 Hyper-V 환경에서 SR-IOV 적용 효과가 가장 두드러지게 나타납니다. 도입 전에는 BIOS 설정, 하드웨어(칩셋·CPU·NIC) 지원 여부, 가상 스위치 바인딩 상태를 반드시 점검하는 것을 권장합니다.