h1. Connect X-2
создайте исполняемый файл
{code}
/etc/sysconfig/modules/mellanox.modules
{code}
с содержимым
{code}
#!/bin/sh
/sbin/modprobe mlx4_core
/sbin/modprobe mlx4_en
{code}
h1. Connect X-3
Идём на сайт
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
Качаем ISO'шку под нужный нам дистрибутив (сейчас CentOS 6.10) и кладём её в /root/ на сервер
Монтируем
{code}
mkdir /mnt/mellanox
mount -o ro,loop MLNX_OFED_LINUX-4.2-1.2.0.0-rhel6.8-x86_64.iso /mnt/mellanox/
{code}
Запускаем установку (идёт долго, после установки может быть зависание минут на пять).
{code}
cd /mnt/mellanox
./mlnxofedinstall
/etc/init.d/openibd restart
{code}
{info}
Вероятнее всего потребуется доставить ряд зависимостей. О чём будет сообщено установщиком:
{info}
{code}
Logs dir: /tmp/MLNX_OFED_LINUX-4.0-2.0.0.1.6322.logs
Verifying KMP rpms compatibility with target kernel...
Error: One or more required packages for installing MLNX_OFED_LINUX are missing.
Please install the missing packages using your Linux distribution Package Management tool.
Run:
yum install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}
Ставим:
{code}
yum -y install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}
И повторяем установку.
h1. Как определить что установленный драйвер не подходит
Проверьте что драйвер сейчас загружен:
{code}
lsmod | grep mlx
{code}
Если в вывод не пустой -- выполните команду и найдите в её выводе сетевую карту.
{code}
lspci -k
{code}
Если в её выводе нет строчки kernel driver in use - значит драйвер не подходит.
Если в её выводе есть kernel driver in use -- скорее всего всё работает и нужно перепроверить вывод команды ip link / ifconfig.
{code}...
05:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
Subsystem: Mellanox Technologies Device 0015
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core
...
{code}
ethtool может показывать другой драйвер:
{code}
$ ethtool -i eth2
driver: mlx4_en
{code}
Ничего страшного в этом нет, для работы mellanox требуется несколько загруженных модулей ядра.
h2. Как проверить что исходники для нужного драйвера
Находим pci id устройства:
1. Выполняем lspci и запоминаем bus id нужного устройства:
{code}
$ lspci
...
05:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
...
{code}
bus id - 05:00.0.
Теперь узнаем pci id устройства:
{code}
$ lspci -n | grep 05:00.0
05:00.0 0200: 8086:107c (rev 05)
{code}
PCI ID = 8086:107c
8086 - номер вендора, в данном случае это Intel.
107c - номер устройства.
Пробуем найти номер устройства в исходниках драйвера.
Если его там нет - скорее всего это драйвера не подходят для этого устройства.
Например для Mellanox :
{code}
[username@reductor mlnx-en-2.4-1.0.0.1]$ grep -ri 6750 ./
./drivers/net/ethernet/mellanox/mlx4/main.c: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
./drivers/net/ethernet/mellanox/mlx4/main.c.orig: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
{code}
создайте исполняемый файл
{code}
/etc/sysconfig/modules/mellanox.modules
{code}
с содержимым
{code}
#!/bin/sh
/sbin/modprobe mlx4_core
/sbin/modprobe mlx4_en
{code}
h1. Connect X-3
Идём на сайт
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
Качаем ISO'шку под нужный нам дистрибутив (сейчас CentOS 6.10) и кладём её в /root/ на сервер
Монтируем
{code}
mkdir /mnt/mellanox
mount -o ro,loop MLNX_OFED_LINUX-4.2-1.2.0.0-rhel6.8-x86_64.iso /mnt/mellanox/
{code}
Запускаем установку (идёт долго, после установки может быть зависание минут на пять).
{code}
cd /mnt/mellanox
./mlnxofedinstall
/etc/init.d/openibd restart
{code}
{info}
Вероятнее всего потребуется доставить ряд зависимостей. О чём будет сообщено установщиком:
{info}
{code}
Logs dir: /tmp/MLNX_OFED_LINUX-4.0-2.0.0.1.6322.logs
Verifying KMP rpms compatibility with target kernel...
Error: One or more required packages for installing MLNX_OFED_LINUX are missing.
Please install the missing packages using your Linux distribution Package Management tool.
Run:
yum install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}
Ставим:
{code}
yum -y install gtk2 atk cairo gcc-gfortran libxml2-python tcsh tcl numactl tk
{code}
И повторяем установку.
h1. Как определить что установленный драйвер не подходит
Проверьте что драйвер сейчас загружен:
{code}
lsmod | grep mlx
{code}
Если в вывод не пустой -- выполните команду и найдите в её выводе сетевую карту.
{code}
lspci -k
{code}
Если в её выводе нет строчки kernel driver in use - значит драйвер не подходит.
Если в её выводе есть kernel driver in use -- скорее всего всё работает и нужно перепроверить вывод команды ip link / ifconfig.
{code}...
05:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
Subsystem: Mellanox Technologies Device 0015
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core
...
{code}
ethtool может показывать другой драйвер:
{code}
$ ethtool -i eth2
driver: mlx4_en
{code}
Ничего страшного в этом нет, для работы mellanox требуется несколько загруженных модулей ядра.
h2. Как проверить что исходники для нужного драйвера
Находим pci id устройства:
1. Выполняем lspci и запоминаем bus id нужного устройства:
{code}
$ lspci
...
05:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
...
{code}
bus id - 05:00.0.
Теперь узнаем pci id устройства:
{code}
$ lspci -n | grep 05:00.0
05:00.0 0200: 8086:107c (rev 05)
{code}
PCI ID = 8086:107c
8086 - номер вендора, в данном случае это Intel.
107c - номер устройства.
Пробуем найти номер устройства в исходниках драйвера.
Если его там нет - скорее всего это драйвера не подходят для этого устройства.
Например для Mellanox :
{code}
[username@reductor mlnx-en-2.4-1.0.0.1]$ grep -ri 6750 ./
./drivers/net/ethernet/mellanox/mlx4/main.c: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
./drivers/net/ethernet/mellanox/mlx4/main.c.orig: { PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
{code}