====== Proxmox VE 6.3でConnectX-3向けMLNX_OFEDを自前ビルドする ====== 2021-12-08現在、最新のMLNX_OFED LTS 4.9-4.0.8.0でもProxmox VE 7に対応していない。インボックスドライバでConnectX-3を動かさざるをえず、WindowsゲストでVFが動かないので注意のこと。 ===== 試した環境 ===== * Proxmox VE 6.3-3 * ConnectX-3 Pro EN * Mellanox OFED LTS 4.9-2.2.4.0 ===== 現状の確認 ===== modinfoでPVE 6.3のビルトインドライバのバージョンを確認してみる。 # modinfo mlx4_core filename: /lib/modules/5.4.78-2-pve/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko version: 4.0-0 license: Dual BSD/GPL description: Mellanox ConnectX HCA low-level driver author: Roland Dreier srcversion: 25D4BE18689C49081028B96 ... # modinfo mlx4_en filename: /lib/modules/5.4.78-2-pve/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko version: 4.0-0 license: Dual BSD/GPL description: Mellanox ConnectX HCA Ethernet driver author: Liran Liss, Yevgeny Petrilin srcversion: 78D5DFCC022AAE0752BABC2 depends: mlx4_core ... 2021-01-15現在、ConnectX-3向けOFEDの最新版は4.9-2.2.4.0 LTSなので、内蔵の4.0はびっくりするほど古い。 ===== 手順 ===== ==== 最新のOFEDの取得 ==== [[https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed|公式サイト]]から最新のOFEDを取ってくる。 ConnectX-3はLTSドライバでのサポートとなっているので間違わないように。利用規約への同意が必要なので、作業マシンでISOをダウンロードし管理Web画面からアップロードするのが手っ取り早い。 Proxmox VE 6.3はDebian 10.7ベースだが、LTSのOFEDはDebian 10.0向けまでしか用意されていない。メージャーバージョンが同じなら大丈夫だろうってなもんで、これを使う事にする。 ==== ISOの展開 ==== アップロードしたMLNX_OFEDのISOから中身を取り出す。 インストールスクリプトを書き換える必要があるので、てきとーにマウントして作業フォルダにコピーする。ドットファイルが含まれるので"/."のドットを忘れずに。 # mkdir /mnt/iso # mount -t iso9660 /var/lib/vz/template/iso/MLNX_OFED_LINUX-4.9-2.2.4.0-debian10.0-x86_64.iso /mnt/iso # mkdir ~/ofed # cp -Rp /mnt/iso/. ~/ofed/ # cd ~/ofed ==== インストールスクリプトの書き換え ==== そのままのインストールスクリプトでは古いMLNX_OFEDパッケージの削除のところで失敗するので、当該箇所を書き換える。 mlnxofedinstallファイルのremove_old_package関数を即returnするように変える。 # # remove old packages # sub remove_old_packages { return; # ★追加 print_and_log("Removing old packages...\n", (not $quiet)); ... ==== 必要なツールのインストール ==== ビルドに必要なツールとヘッダを入れる。 # apt install gcc make dkms pve-headers-$(uname -r) 試しにmlnxofedinstallを実行してみる。普通にやるとディストリビューションチェックで弾かれるので、--skip-distro-checkを付ける。 # ./mlnxofedinstall --skip-distro-check Logs dir: /tmp/MLNX_OFED_LINUX.22915.logs General log file: /tmp/MLNX_OFED_LINUX.22915.logs/general.log (中略) Checking SW Requirements... One or more required packages for installing MLNX_OFED_LINUX are missing. Attempting to install the following missing packages: chrpath automake tcl tk m4 bison libgfortran4 dpatch libltdl-dev graphviz flex gfortran swig quilt ethtool autoconf debhelper pkg-config autotools-dev 恐らく、上記のようにパッケージ不足のエラーになるので、追加でインストールする。 # apt install chrpath automake tcl tk m4 bison libgfortran4 dpatch libltdl-dev graphviz flex gfortran swig quilt ethtool autoconf debhelper pkg-config autotools-dev ==== ビルド ==== パッケージが揃ったところで、改めてmlnxofedinstallを実行しドライバをビルドする。 CPUがうんうん唸りを上げてビルドが走るので、重いVMが動いてたり、リソースがカツカツの場合は要注意。 # ./mlnxofedinstall --skip-distro-check Logs dir: /tmp/MLNX_OFED_LINUX.11169.logs General log file: /tmp/MLNX_OFED_LINUX.11169.logs/general.log Below is the list of MLNX_OFED_LINUX packages that you have chosen (some may have been added by the installer due to package dependencies): ofed-scripts mlnx-ofed-kernel-utils mlnx-ofed-kernel-dkms rshim-dkms iser-dkms isert-dkms srp-dkms mlnx-rdma-rxe-dkms libibverbs1 ibverbs-utils libibverbs-dev libibverbs1-dbg libmlx4-1 libmlx4-dev libmlx4-1-dbg libmlx5-1 libmlx5-dev libmlx5-1-dbg librxe-1 librxe-dev librxe-1-dbg libibumad libibumad-static libibumad-devel ibacm ibacm-dev librdmacm1 librdmacm-utils librdmacm-dev mstflint ibdump libibmad libibmad-static libibmad-devel libopensm opensm opensm-doc libopensm-devel infiniband-diags infiniband-diags-compat mft kernel-mft-dkms libibcm1 libibcm-dev perftest ibutils2 libibdm1 ibutils ar-mgr dump-pr ibsim ibsim-doc ucx sharp hcoll knem-dkms knem openmpi mpitests libdapl2 dapl2-utils libdapl-dev srptools mlnx-ethtool mlnx-iproute2 neohost-backend neohost-sdk This program will install the MLNX_OFED_LINUX package on your machine. Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed. Those packages are removed due to conflicts with MLNX_OFED_LINUX, do not reinstall them. Do you want to continue?[y/N]:y Checking SW Requirements... Installing new packages Installing ofed-scripts-4.9... Installing mlnx-ofed-kernel-utils-4.9... Installing mlnx-ofed-kernel-dkms-4.9... Installing rshim-dkms-1.18... Installing iser-dkms-4.9... Installing isert-dkms-4.9... Installing srp-dkms-4.9... Installing mlnx-rdma-rxe-dkms-4.9... Installing libibverbs1-41mlnx1... Installing ibverbs-utils-41mlnx1... Installing libibverbs-dev-41mlnx1... Installing libibverbs1-dbg-41mlnx1... Installing libmlx4-1-41mlnx1... Installing libmlx4-dev-41mlnx1... Installing libmlx4-1-dbg-41mlnx1... Installing libmlx5-1-41mlnx1... Installing libmlx5-dev-41mlnx1... Installing libmlx5-1-dbg-41mlnx1... Installing librxe-1-41mlnx1... Installing librxe-dev-41mlnx1... Installing librxe-1-dbg-41mlnx1... Installing libibumad-43.1.1.MLNX20200211.078947f... Installing libibumad-static-43.1.1.MLNX20200211.078947f... Installing libibumad-devel-43.1.1.MLNX20200211.078947f... Installing ibacm-41mlnx1... Installing ibacm-dev-41mlnx1... Installing librdmacm1-41mlnx1... Installing librdmacm-utils-41mlnx1... Installing librdmacm-dev-41mlnx1... Installing mstflint-4.14.0... Installing ibdump-6.0.0... Installing libibmad-5.4.0.MLNX20190423.1d917ae... Installing libibmad-static-5.4.0.MLNX20190423.1d917ae... Installing libibmad-devel-5.4.0.MLNX20190423.1d917ae... Installing libopensm-5.7.2.MLNX20201014.9378048... Installing opensm-5.7.2.MLNX20201014.9378048... Installing opensm-doc-5.7.2.MLNX20201014.9378048... Installing libopensm-devel-5.7.2.MLNX20201014.9378048... Installing infiniband-diags-5.6.0.MLNX20200211.354e4b7... Installing infiniband-diags-compat-5.6.0.MLNX20200211.354e4b7... Installing mft-4.15.1... Installing kernel-mft-dkms-4.15.1... Installing libibcm1-41mlnx1... Installing libibcm-dev-41mlnx1... Installing perftest-4.4.0.mlnxlibs... Installing ibutils2-2.1.1... Installing libibdm1-1.5.7.1... Installing ibutils-1.5.7.1... Installing ar-mgr-1.0... Installing dump-pr-1.0... Installing ibsim-0.10... Installing ibsim-doc-0.10... Installing ucx-1.8.0... Installing sharp-2.1.2.MLNX20200428.ddda184... Installing hcoll-4.4.2957... Installing knem-dkms-1.1.3.90mlnx1... Installing knem-1.1.3.90mlnx1... Installing openmpi-4.0.3rc4... Installing mpitests-3.2.20... Installing libdapl2-2.1.10.1.mlnx... Installing dapl2-utils-2.1.10.1.mlnx... Installing libdapl-dev-2.1.10.1.mlnx... Installing srptools-41mlnx1... Installing mlnx-ethtool-5.4... Installing mlnx-iproute2-5.4.0... Installing neohost-backend-1.5.0... Installing neohost-sdk-1.5.0... Selecting previously unselected package mlnx-fw-updater. (Reading database ... 88906 files and directories currently installed.) Preparing to unpack .../mlnx-fw-updater_4.9-2.2.4.0_amd64.deb ... Unpacking mlnx-fw-updater (4.9-2.2.4.0) ... Setting up mlnx-fw-updater (4.9-2.2.4.0) ... Added 'RUN_FW_UPDATER_ONBOOT=no to /etc/infiniband/openib.conf Initializing... Attempting to perform Firmware update... Querying Mellanox devices firmware ... Device #1: ---------- Device Type: ConnectX3Pro Part Number: MCX314A-BCC_Ax Description: ConnectX-3 Pro EN network interface card; 40GigE; dual-port QSFP; PCIe3.0 x8 8GT/s; RoHS R6 PSID: MT_1090111023 PCI Device Name: 01:00.0 Port1 MAC: e41d2d7416e0 Port2 MAC: e41d2d7416e1 Versions: Current Available FW 2.42.5000 2.42.5000 PXE 3.4.0752 3.4.0752 Status: Up to date Log File: /tmp/MLNX_OFED_LINUX.11169.logs/fw_update.log Device (01:00.0): 01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro] Link Width: x8 PCI Link Speed: 8GT/s Installation passed successfully To load the new driver, run: /etc/init.d/openibd restart ==== バージョン確認 ==== modinfoで出来上がったドライバを確認。 # modinfo mlx4_core filename: /lib/modules/5.4.78-2-pve/updates/dkms/mlx4_core.ko version: 4.9-2.2.4 license: Dual BSD/GPL description: Mellanox ConnectX HCA low-level driver author: Roland Dreier srcversion: 0E22D5CD2864A28C729715C # modinfo mlx4_en filename: /lib/modules/5.4.78-2-pve/updates/dkms/mlx4_en.ko version: 4.9-2.2.4 license: Dual BSD/GPL description: Mellanox ConnectX HCA Ethernet driver author: Liran Liss, Yevgeny Petrilin srcversion: 69FB9FB2542ADA2197811E7 システムを再起動し、ConnectX-3を使った通信が問題なくできるか確認する。 ===== 参考サイト ===== * [[https://community.mellanox.com/s/article/howto-install-mlnx-ofed-driver|HowTo Install MLNX_OFED Driver]] * [[https://insujang.github.io/2020-01-25/building-mellanox-ofed-from-source/|Building Mellanox OFED from source code]] * [[https://forums.servethehome.com/index.php?threads/install-mellanox-driver-proxmox-ve-5-1.17913/|Install Mellanox Driver Proxmox VE 5.1 | ServeTheHome Forums]] * [[https://wangmingjun.com/2018/09/22/reinstall-the-driver-of-mellanox-infiniband-when-kernel-is-changed/|Reinstall the Driver of Mellanox Infiniband When Kernel Is Changed – 王明军的博客]]