16.5.2. 가상 머신에 SR-IOV 네트워킹 장치 연결
SR-IOV 네트워킹 장치를 VM(가상 머신)에 할당하려면 호스트의 SR-IOV 가능 네트워크 인터페이스에서 VF(가상 기능)를 생성하고 VF를 지정된 VM에 장치로 할당해야 합니다.
사전 요구 사항
호스트의 CPU 및 펌웨어는 I/O Memory Management Unit(IOMMU)을 지원합니다.
- Intel CPU를 사용하는 경우 Directed I/O(VT-d)에 대한 Intel Virtualization Technology를 지원해야 합니다.
- AMD CPU를 사용하는 경우 AMD-Vi 기능을 지원해야 합니다.
호스트 시스템은ACS(Access Control Service)를 사용하여 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 autoSR-IOV 장치 할당이 작동하려면 호스트 BIOS 및 커널에서 IOMMU 기능을 활성화해야 합니다. 이렇게 하려면 다음을 수행합니다.
Intel 호스트에서 VT-d를 활성화합니다.
intel_iommu=on및iommu=pt매개변수를 사용하여 GRUB 설정을 다시 생성합니다.# grubby --args="intel_iommu=on iommu=pt" --update-kernel=ALL- 호스트를 재부팅합니다.
AMD 호스트에서 AMD-Vi를 활성화합니다.
iommu=pt매개변수를 사용하여 GRUB 설정을 다시 생성합니다.# grubby --args="iommu=pt" --update-kernel=ALL- 호스트를 재부팅합니다.
프로세스
선택 사항: 네트워크 장치에서 사용할 수 있는 최대 VF 수를 확인합니다. 이렇게 하려면 다음 명령을 사용하고 eth1 을 SR-IOV 호환 네트워크 장치로 교체합니다.
# cat /sys/class/net/eth1/device/sriov_totalvfs 7다음 명령을 사용하여 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_numvfsVF가 추가되었는지 확인합니다.
# 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)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에 연결하는 것은 현재 신뢰할 수 없습니다.
새로 추가된 VF 인터페이스 장치 중 하나를 실행 중인 VM에 핫플러그합니다.
# virsh attach-interface <vm_name> hostdev 0000:82:10.0 --mac 52:54:00:00:01:01 --managed --live --config--live옵션은 부팅 간 지속성 없이 실행 중인 VM에 장치를 연결합니다.--config옵션을 사용하면 구성을 영구적으로 변경합니다. 장치를 종료 VM에 연결하려면--live옵션을 사용하지 마십시오.--mac옵션은 연결된 인터페이스의 MAC 주소를 지정합니다. 인터페이스의 MAC 주소를 지정하지 않으면 VM에서 52:54:00 로 시작하는 영구 의사 임의 주소를 자동으로 생성합니다.중요VM의 XML 구성 파일의 < hostdev > 섹션에 장치 항목을 수동으로 추가하여 SR-IOV VF를 가상 머신에 할당하는 경우 MAC 주소가 영구적으로 할당되지 않으며 게스트의 네트워크 설정은 일반적으로 모든 호스트 재부팅 시 재구성해야 합니다.
이러한 문제를 방지하려면 이 단계에 설명된 대로
virsh attach-interface명령을 사용합니다.
검증
- 프로시저가 성공하면 게스트 운영 체제는 새 네트워크 인터페이스 컨트롤러를 감지합니다.