À jour


Faut mettre à jour le firmware des switchs infiniband sur le cluster...

C'est facile qu'ils disent, c'est tout dans la doc, qu'ils disent...

C'est pas faux... Mais c'est incomplet.

Postulat de base, il faut une machine avec un OS à jour (ami lecteur, imprègne-toi de cette notion toute relative qu'est le "à jour" en HPC, un jour, tu en riras aussi) au sein du cluster. Les miens faisant tourner SIDUS (http://www.cbp.ens-lyon.fr/doku.php?id=developpement:productions:sidus), c'est pas si simple.

Isolation d'un noeud, montage d'un disque et installation d'une Debian Jessie minimale.

C'est là le noeud du problème : Les seuls outils capable de (brûler) mettre à jour un switch Mellanox sont ceux de Mellanox, et ils nécessitent une version particulière de la librairie libibumad (libibumad5 1.3.x, pour être précis), fourni par OpenFabric (façade OpenSource de Mellanox). Et forcément, la version dans Debian Stable est trop ancienne (1.2.x)...

Installation d'un environnement de build + infiniband (l'un des programmes vient en dkms) :

1
2
3
4
5
6
apt-get install build-essential initramfs-tools tmux wget ibutils ibverbs-utils
libibdm1 libibcm1 libibmad5 libibumad3 libibverbs1 libmlx4-1 libmthca1
librdmacm1 opensm rdmacm-utils srptools infiniband-diags libibmad-dev
zlib1g-dev cpp-4.8 dkms gcc-4.8 gcc-4.8-base libasan0 libgcc-4.8-dev
linux-compiler-gcc-4.8-x86 linux-headers-3.14-2-amd64
linux-headers-3.14-2-common linux-headers-amd64 linux-kbuild-3.14 menu tcl

modifications de /etc/modules (ajout) :

1
2
3
4
5
6
7
mlx4_en
mlx4_ib
ib_ipoib
ib_uverbs
ib_umad
ib_ucm
rdma_ucm

reload (ou reboot)

ibv_devices et ibv_devinfo montrent un device infiniband.

Récupérer les outils Mellanox (en partant de là : http://www.mellanox.com/page/firmware_download ) :

1
2
3
4
5
6
7
mft-3.6.0-24.amd64.deb
kernel-mft-dkms_3.6.0_all.deb

dpkg -i mft-3.6.0-24.amd64.deb
(lui, ça va tout seul)
dpkg --force-depends -i kernel-mft-dkms_3.6.0_all.deb
(lui, moins, dépendance sur linux-headers qui n'existe plus)

modifier /var/lib/dpkg/status pour ce paquet, forcer la dépendance sur "linux-headers-amd64" pour éviter sa désinstallation permanente, et ajouter un Hold (ceinture, bretelles)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
mst start
mst ib add
(il trouve du monde, 216 nodes et switchs)
mst status

/dev/mst/SW_MT51000*  # voilà les switchs

flint -d /dev/mst/SW_MT51000_0x2c903008049a0_lid-0x000C -qq q
Image type:      FS2
FW Version:      9.1.5000
Device ID:       51000
Description:     Node             Sys image
GUIDs:           0002c903008049a0 0002c903008049a0
Description:     Base             Switch
MACs:                0002c98049a0     0002c9804a00
VSD:             n/a
PSID:            MT_1010210021

Le modèle de switch précis, c'est PSID, donc MT_1010210021, le firmware correspondant "à jour" : fw-sx-9_2_8000-MSX6025F_Bx.bin.zip

1
flint -d /dev/mst/SW_MT51000_0x2c90300803ba0_lid-0x00E1 -i fw-SX-rel-9_2_8000-MSX6025F_Bx.bin -qq b

30 secondes de reboot du switch, et hop, switch "à jour". Plus que 11...