11.7. SR-IOV 장치 관리


에뮬레이트된 가상 장치는 하드웨어 네트워크 장치보다 많은 CPU 및 메모리를 사용하는 경우가 많습니다. 그러면 VM(가상 머신)의 성능을 제한할 수 있습니다. 그러나 가상화 호스트의 장치에서 SR-IOV(Single Root I/O Virtualization)를 지원하는 경우 이 기능을 사용하여 장치 성능을 개선하고 VM의 전반적인 성능도 향상시킬 수 있습니다.

11.7.1. SR-IOV란 무엇입니까?

SR-IOV(Single-root I/O Virtualization)는 단일 PCI Express(PCIe) 장치에서 VF( 가상 기능 )라는 여러 개의 개별 PCI 장치를 호스트 시스템에 제공할 수 있도록 하는 사양입니다. 이러한 각 장치:

  • 은 원래 PCIe 장치와 동일한 또는 유사한 서비스를 제공할 수 있습니다.
  • 호스트 PCI 버스의 다른 주소에 표시됩니다.
  • VFIO 할당을 사용하여 다른 VM에 할당할 수 있습니다.

예를 들어 단일 SR-IOV 가능 네트워크 장치는 VF를 여러 VM에 제공할 수 있습니다. 모든 VF는 동일한 물리적 카드, 동일한 네트워크 연결 및 동일한 네트워크 케이블을 사용하지만 각 VM은 자체 하드웨어 네트워크 장치를 직접 제어하며 호스트에서 추가 리소스를 사용하지 않습니다.

SR-IOV 작동 방식

SR-IOV 기능은 다음 PCIe 기능을 도입하여 수행할 수 있습니다.

  • PF(물리적 기능) - 호스트에 장치(예: 네트워킹)의 기능을 제공하지만 VF 세트를 생성하고 관리할 수 있는 PCIe 기능입니다. 각 SR-IOV 지원 장치에는 하나 이상의 PF가 있습니다.
  • VF(가상 기능) - 독립 장치 역할을 하는 경량 PCIe 기능입니다. 각 VF는 PF에서 파생됩니다. 장치에서 보유할 수 있는 최대 VF 수는 장치 하드웨어에 따라 다릅니다. 각 VF는 한 번에 하나의 VM에만 할당할 수 있지만 VM에는 여러 VF가 할당될 수 있습니다.

VM은 VF를 가상 장치로 인식합니다. 예를 들어 SR-IOV 네트워크 장치에서 생성한 VF는 실제 네트워크 카드가 호스트 시스템에 표시되는 것과 동일한 방식으로 할당된 VM의 네트워크 카드로 나타납니다.

그림 11.1. SR-IOV 아키텍처

Virt SR IOV

이점

에뮬레이트된 장치가 아닌 SR-IOV VF를 사용하는 주된 이점은 다음과 같습니다.

  • 성능 향상
  • 호스트 CPU 및 메모리 리소스 사용 감소

예를 들어 vNIC가 VM에 연결된 VF는 물리적 NIC와 거의 동일한 수준에서 수행되며 반가상화 또는 에뮬레이트된 NIC보다 훨씬 효율적입니다. 특히 단일 호스트에서 여러 VF를 동시에 사용하는 경우 성능상의 이점이 매우 클 수 있습니다.

단점

  • PF의 구성을 수정하려면 먼저 PF에 의해 노출된 VF 수를 0으로 변경해야 합니다. 따라서 이러한 VF가 할당된 VM에서 이러한 VF를 제공하는 장치도 제거해야 합니다.
  • SR-IOV VF를 포함하여 VFIO로 할당된 장치가 연결된 VM은 다른 호스트로 마이그레이션할 수 없습니다. 할당된 장치를 에뮬레이트된 장치와 결합하여 이러한 제한 사항을 해결할 수 있는 경우도 있습니다. 예를 들어 할당된 네트워킹 VF 에뮬레이트된 vNIC에 결합하고 마이그레이션 전에 VF를 제거할 수 있습니다.
  • 또한 VFIO 할당 장치는 VM 메모리를 고정해야 하므로 VM의 메모리 사용량이 증가하고 VM에서 메모리 증대가 사용되지 않습니다.

11.7.2. 가상 머신에 SR-IOV 네트워킹 장치 연결

Intel 또는 AMD 호스트의 VM(가상 머신)에 SR-IOV 네트워킹 장치를 연결하려면 호스트의 SR-IOV 가능 네트워크 인터페이스에서 VF(가상 기능)를 생성하고 VF를 지정된 VM에 장치로 할당해야 합니다. 자세한 내용은 다음 지침을 참조하십시오.

사전 요구 사항

  • 호스트의 CPU 및 펌웨어는 IOMMU(I/O Memory Management Unit)를 지원합니다.

    • Intel CPU를 사용하는 경우 Intel Virtualization Technology for Directed I/O(VT-d)를 지원해야 합니다.
    • AMD CPU를 사용하는 경우 AMD-Vi 기능을 지원해야 합니다.
  • 호스트 시스템은 ACS(액세스 제어 서비스)를 사용하여 PCIe 토폴로지에 대한 DMA(직접 메모리 액세스) 격리를 제공합니다. 시스템 벤더를 사용하여 이를 확인합니다.

    자세한 내용은 SR-IOV 구현에 대한 하드웨어 고려 사항을 참조하십시오.

  • 물리적 네트워크 장치는 SR-IOV를 지원합니다. 시스템의 네트워크 장치가 SR-IOV를 지원하는지 확인하려면 lspci -v 명령을 사용하고 출력에서 SR -IOV(Single Root I/O Virtualization) 를 찾습니다.

    # lspci -v
    [...]
    02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    	Subsystem: Intel Corporation Gigabit ET Dual Port Server Adapter
    	Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
    	Memory at fcba0000 (32-bit, non-prefetchable) [size=128K]
    [...]
    	Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
    	Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
    	Kernel driver in use: igb
    	Kernel modules: igb
    [...]
  • VF를 만드는 데 사용할 호스트 네트워크 인터페이스가 실행 중입니다. 예를 들어 eth1 인터페이스를 활성화하고 실행 중인지 확인하려면 다음을 수행합니다.

    # ip link set eth1 up
    # ip link show eth1
    8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
       link/ether a0:36:9f:8f:3f:b8 brd ff:ff:ff:ff:ff:ff
       vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
       vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
  • SR-IOV 장치 할당이 작동하려면 호스트 BIOS 및 커널에서 IOMMU 기능을 활성화해야 합니다. 이렇게 하려면 다음을 수행합니다.

    • Intel 호스트에서 VT-d를 활성화합니다.

      1. intel_iommu=oniommu=pt 매개변수를 사용하여 GRUB 설정을 다시 생성합니다.

        # grubby --args="intel_iommu=on iommu=pt" --update-kernel=ALL
      2. 호스트를 재부팅합니다.
    • AMD 호스트에서 AMD-Vi를 활성화합니다.

      1. the iommu=pt 매개변수를 사용하여 GRUB 설정을 다시 생성합니다.

        # grubby --args="iommu=pt" --update-kernel=ALL
      2. 호스트를 재부팅합니다.

절차

  1. 선택 사항: 네트워크 장치에서 사용할 수 있는 최대 VF 수를 확인합니다. 이렇게 하려면 다음 명령을 사용하고 eth1 을 SR-IOV 호환 네트워크 장치로 교체합니다.

    # cat /sys/class/net/eth1/device/sriov_totalvfs
    7
  2. 다음 명령을 사용하여 VF(가상 기능)를 생성합니다.

    # echo VF-number > /sys/class/net/network-interface/device/sriov_numvfs

    명령에서 다음을 교체합니다.

    • PF에서 생성할 VF 수를 포함하는 VF-number 입니다.
    • VF를 생성할 네트워크 인터페이스의 이름이 있는 network-interface 입니다.

    다음 예제에서는 eth1 네트워크 인터페이스에서 2개의 VF를 생성합니다.

    # echo 2 > /sys/class/net/eth1/device/sriov_numvfs
  3. VF가 추가되었는지 확인합니다.

    # lspci | grep Ethernet
    82:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
    82:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
    82:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)
  4. VF를 만드는 데 사용한 네트워크 인터페이스에 대한 udev 규칙을 만들어 생성된 VF를 영구적으로 만듭니다. 예를 들어 eth1 인터페이스의 경우 /etc/udev/rules.d/eth1.rules 파일을 만들고 다음 행을 추가합니다.

    ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="ixgbe", ATTR{device/sriov_numvfs}="2"

    이렇게 하면 호스트가 시작될 때 ixgbe 드라이버를 사용하는 두 개의 VF를 eth1 인터페이스에 자동으로 사용할 수 있습니다. 영구 SR-IOV 장치가 필요하지 않은 경우 이 단계를 건너뜁니다.

    주의

    현재 Broadcom NetXtreme II BCM57810 어댑터에서 VF를 영구적으로 만들려고 할 때 위에서 설명한 설정이 제대로 작동하지 않습니다. 또한 이러한 어댑터를 기반으로 하는 VF를 Windows VM에 연결하는 것은 현재 신뢰할 수 없습니다.

  5. 새로 추가된 VF 인터페이스 장치 중 하나를 실행 중인 VM에 핫플러그합니다.

    # virsh attach-interface testguest1 hostdev 0000:82:10.0 --managed --live --config

검증

  • 절차가 성공하면 게스트 운영 체제는 새 네트워크 인터페이스 카드를 감지합니다.

11.7.3. SR-IOV 할당에 지원되는 장치

SR-IOV에는 일부 장치를 사용할 수 없습니다. 다음 장치는 RHEL 8의 SR-IOV와 호환되는 것으로 테스트 및 검증되었습니다.

네트워킹 장치

  • Intel 82599ES 10 기가비트 이더넷 컨트롤러 - ixgbe 드라이버 사용
  • Intel Ethernet Controller710 Series - i40e 드라이버 사용
  • Intel Ethernet Network Adapter XXV710 - i40e 드라이버를 사용합니다.
  • Intel 82576 기가비트 이더넷 컨트롤러 - igb 드라이버를 사용합니다.
  • Broadcom NetXtreme II BCM57810 - bnx2x 드라이버 사용
  • QSFP용 이더넷 컨트롤러 E810-C - 스노우 드라이버 사용
  • SFC9220 10/40G 이더넷 컨트롤러 사용
  • FastLinQ QL41000 시리즈 10/25/40/50GbE 컨트롤러 사용
  • Mellanox ConnectX-5 이더넷 어댑터 카드
  • Mellanox MT2892 제품군 [ConnectX-6 Dx]
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.