virtualization:proxmox_ve_6_3_how_to_use_connectx3_sr_iov

文書の過去の版を表示しています。


Proxmox VE 6.3でConnectX-3のSR-IOVを使う

  • Proxmox VE 6.3-3
  • Supermicro X10DRi
  • Mellanox ConnectX-3 Pro EN (MCX314A-BCCT)

ConnectXカードのSR-IOV設定が有効になっていれば、confファイルを1つ作るだけでSR-IOVが使えるようになる。

カードのSR-IOVが有効になってない、有効か確認したい場合はページ後半を参照。

/etc/modprobe.d/mlx4.confに以下の記述を追加する。

options mlx4_core port_type_array=2,2 num_vfs=4,0,0 probe_vf=4,0,0

confファイルを作ったら、initramfsを更新しマシンを再起動する。

# update-initramfs -u -k all
# reboot

上手く設定できてればPCIデバイスとしてVFが生えてくる。

prove_vfを設定すると、ホスト側でネットワークデバイスとして認識される。物理ポート1に4つのVFを指定してるハズなのに、ens1とens1d1の両方にVFが出来てるのは何故…

上記の設定でVFが出てこない場合、カードのファームウェアのSR-IOVとVF数の設定を確認する。

PVEのホスト側にコンパイラやmst (Mellanoxのツール)を入れる事になるので、環境を汚したくなければ別マシンで確認&設定を行ってもよい。

MFTのインストールに必要なツールチェイン類を入れる。

# apt install gcc make dkms pve-headers-$(uname -r)

公式サイトからMFTのDebian向けパッケージを取ってくる。本記事執筆時は4.16.0-105が最新だった。

# wget https://www.mellanox.com/downloads/MFT/mft-4.16.0-105-x86_64-deb.tgz

展開してインストールスクリプトを実行。

# tar -xvf ./mft-4.16.0-105-x86_64-deb.tgz
# cd mft-4.16.0-105-x86_64-deb/
# ./install.sh

MFTを使うにはmstを実行しておく必要がある。

# mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices

mlxconfigでカードの状態を確認する。

表示されたConfigurationsで、SRIOV_ENがTrue、NUM_OF_VFSが1以上になっていれば、カードのSR-IOVは有効になっている。

# mlxconfig q

Device #1:
----------

Device type:    ConnectX3Pro    
Device:         /dev/mst/mt4103_pciconf0

Configurations:                              Next Boot
         SRIOV_EN                            True(1)         
         NUM_OF_VFS                          8               
         LOG_BAR_SIZE                        3               
         BOOT_OPTION_ROM_EN_P1               True(1)         
         BOOT_VLAN_EN_P1                     False(0)        
         BOOT_RETRY_CNT_P1                   0               
         LEGACY_BOOT_PROTOCOL_P1             PXE(1)          
         BOOT_VLAN_P1                        1               
         BOOT_OPTION_ROM_EN_P2               True(1)         
         BOOT_VLAN_EN_P2                     False(0)        
         BOOT_RETRY_CNT_P2                   0               
         LEGACY_BOOT_PROTOCOL_P2             PXE(1)          
         BOOT_VLAN_P2                        1               
         IP_VER_P1                           IPv4(0)         
         IP_VER_P2                           IPv4(0)         
         CQ_TIMESTAMP                        True(1)

カードのSR-IOVが有効になっていなければ有効化する。

# mlxconfig -d /dev/mst/mt4103_pciconf0 set SRIOV_EN=1 

Device #1:
----------

Device type:    ConnectX3Pro    
Device:         /dev/mst/mt4103_pciconf0

Configurations:                              Next Boot       New
         SRIOV_EN                            False(0)         True(1)         

 Apply new Configuration? (y/n) [n] : y
Applying... Done!
-I- Please reboot machine to load new configurations.

同様にNUM_OF_VFSも適切な値を設定し、マシンを再起動する。

  • virtualization/proxmox_ve_6_3_how_to_use_connectx3_sr_iov.1610627969.txt.gz
  • 最終更新: 2021-01-14 21:39
  • by Decomo