SR-IOV with ConnectX-5
Proxmox 설치 후 Mellanox ConnectX-5 의 SR-IOV를 활성화 하는 법
SR-IOV 활성화
# apt install -y infiniband-diags ibutils rdma-core rdmacm-utils mstflint # lshw -short -c net H/W path Device Class Description ======================================================= /0/100/1/0 ens1f0 network 82599ES 10-Gigabit SFI/SFP+ Network Connection /0/100/1/0.1 ens1f1 network 82599ES 10-Gigabit SFI/SFP+ Network Connection /0/100/3.2/0 eno1 network I350 Gigabit Network Connection /0/100/3.2/0.1 enp4s0f1 network I350 Gigabit Network Connection /0/2/0 ens6np0 network MT27800 Family [ConnectX-5] # lspci | grep -i mellanox 81:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5] # mstconfig -d 81:00.0 query Device #1: ---------- Device type: ConnectX5 Name: MCX555A-ECA_Ax_Bx Description: ConnectX-5 VPI adapter card; EDR IB (100Gb/s) and 100GbE;... Device: 81:00.0 Configurations: Next Boot NUM_OF_VFS 0 NUM_OF_PF 1 SRIOV_EN False(0) # mstconfig -d 81:00.0 set SRIOV_EN=1 NUM_OF_VFS=4 # reboot
VF 생성 서비스 등록
/etc/systemd/system/sriov-vf.service
[Unit] Description=Script to enable SR-IOV on boot Before=networking.service RequiredBy=networking.service [Service] Type=oneshot ExecStart=/usr/bin/bash -c 'echo 4 > /sys/class/net/ens6np0/device/sriov_numvfs' [Install] WantedBy=multi-user.target
# systemctl enable --now sriov-vf.service
VF 할당
VF의 PCI 주소를 확인하고 VM에 할당하는 방법입니다.
# lshw -short -c net H/W path Device Class Description ======================================================= /0/2/0 ens6np0 network MT27800 Family [ConnectX-5] /0/2/0.1 ens6v0 network MT27800 Family [ConnectX-5 Virtual Function] /0/2/0.2 ens6v1 network MT27800 Family [ConnectX-5 Virtual Function] /0/2/0.3 ens6v2 network MT27800 Family [ConnectX-5 Virtual Function] /0/2/0.4 ens6v3 network MT27800 Family [ConnectX-5 Virtual Function] ... # ls -al /sys/class/net ens6np0 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.0/net/ens6np0 ens6v0 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.1/net/ens6v0 ens6v1 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.2/net/ens6v1 ens6v2 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.3/net/ens6v2 ens6v3 -> ../../devices/pci0000:80/0000:80:02.0/0000:81:00.4/net/ens6v3 ...
ens6v1 는 0000:81:00.2 가 PCI 주소입니다.
다음과 같이 PCI 장치를 선택해 pass through 로 장착합니다.
Proxmox 웹 로그인 → 특정 VM 선택 → Hardware → Add → PCI Device → 장치 선택
파일을 직접 수정해도 됩니다.
/etc/pve/nodes/<prox-hostname>/qemu-server/<vm-id>.conf
... hostpci0: 0000:81:00.2,rombar=0 ...