Configurer les interfaces réseau SR-IOV pour SAP HANA sur SUSE KVM
Configurer les interfaces réseau SR-IOV sur SUSE KVM pour SAP HANA. Configurez des fonctions virtuelles (VF), assignez-les à des machines virtuelles et configurez des connexions réseau redondantes pour des performances et un accès au stockage optimaux.
Étape 1 : Configuration du SR-IOV
Activez et configurez la fonctionnalité SR-IOV dans le firmware de l'adaptateur pour permettre la création de fonctions virtuelles.
Cette procédure est basée sur "Portail d'assistance NVIDIA pour entreprises | Comment configurer SR-IOV pour ConnectX-4/ConnectX-5/ConnectX-6 avec KVM (Ethernet)" . Le guide SUSE SAP HANA KVM décrit cela en se basant sur une carte réseau INTEL.
Il est recommandé d'utiliser des connexions Ethernet redondantes en combinant deux ports physiques en mode trunk/bond. Les ports virtuels (VF) attribués à la VM doivent également être agrégés en trunk au sein de la VM.

Assurez-vous que les conditions préalables suivantes sont remplies :
-
KVM est installé
-
SR-IOV est activé dans le BIOS des serveurs
-
Le PCI Passthrough est activé en ajoutant « intel_iommu=on » et « iommu=pt » comme option au niveau du chargeur de démarrage.
-
Les pilotes MLNX_OFED les plus récents sont installés sur les hôtes KVM et la machine virtuelle.
|
|
Chaque VF attribuée à une VM nécessite une bande passante d'au moins 10 Gbit/s. Ne créez et n'attribuez pas plus de deux VF pour un port physique 25GbE. |
-
Exécuter MFT (Mellanox Firmware Tools) :
# mst start Starting MST (Mellanox Software Tools) driver set Loading MST PCI module – Success Loading MST PCI configuration module – Success Create devices Unloading MST PCI module (unused) – Success
-
Localisez l'appareil :
# mst status MST modules: ------------ MST PCI module is not loaded MST PCI configuration module loaded MST devices: ------------ /dev/mst/mt4125_pciconf0 - PCI configuration cycles access. domain:bus:dev.fn=0000:ab:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1 Chip revision is: 00
-
Vérifiez l'état de l'appareil :
mlxconfig -d /dev/mst/mt4125_pciconf0 q |grep -e SRIOV_EN -e NUM_OF_VFS NUM_OF_VFS 8 SRIOV_EN True(1)_
-
Si nécessaire, activez SR-IOV :
mlxconfig -d /dev/mst/mt4125_pciconf0 set SRIOV_EN=1
-
Définir le nombre maximal de VF :
mlxconfig -d /dev/mst/mt4125_pciconf0 set NUM_OF_VFS=4
-
Redémarrez le serveur si la fonctionnalité devait être activée ou si le nombre maximal de VF a été modifié.
Étape 2 : Créer les interfaces virtuelles
Créez des fonctions virtuelles (VF) sur les ports réseau physiques pour activer la fonctionnalité SR-IOV. Dans cette étape, quatre VF sont créées par port physique.
-
Trouvez l'appareil :
# ibstat CA 'mlx5_0' CA type: MT4125 Number of ports: 1 Firmware version: 22.36.1010 Hardware version: 0 Node GUID: 0xa088c20300a6f6fc System image GUID: 0xa088c20300a6f6fc Port 1: State: Active Physical state: LinkUp Rate: 100 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x00010000 Port GUID: 0xa288c2fffea6f6fd Link layer: Ethernet CA 'mlx5_1' CA type: MT4125 Number of ports: 1 Firmware version: 22.36.1010 Hardware version: 0 Node GUID: 0xa088c20300a6f6fd System image GUID: 0xa088c20300a6f6fc Port 1: State: Active Physical state: LinkUp Rate: 100 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x00010000 Port GUID: 0xa288c2fffea6f6fd Link layer: Ethernet
Si une liaison a été créée, le résultat ressemblera à ceci :
# ibstat CA 'mlx5_bond_0' CA type: MT4125 Number of ports: 1 Firmware version: 22.36.1010 Hardware version: 0 Node GUID: 0xa088c20300a6f6fc System image GUID: 0xa088c20300a6f6fc Port 1: State: Active Physical state: LinkUp Rate: 100 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x00010000 Port GUID: 0xa288c2fffea6f6fc Link layer: Ethernet #:/etc/sysconfig/network # cat /sys/class/infiniband/mlx5_bond_0/device/ aerdevcorrectable iommugroup/ resetmethod aerdevfatal irq resource aerdevnonfatal link/ resource0 arienabled localcpulist resource0wc brokenparitystatus localcpus revision class maxlinkspeed rom config maxlinkwidth sriovdriversautoprobe consistentdmamaskbits mlx5_core.eth.0/ sriovnumvfs urrentlinkspeed mlx5_core.rdma.0/ sriovoffset currentlinkwidth modalias sriovstride d3coldallowed msibus sriovtotalvfs device msiirqs/ sriovvfdevice dmamaskbits net/ sriovvftotalmsix driver/ numanode subsystem/ driveroverride pools subsystemdevice enable power/ subsystemvendor firmwarenode/ powerstate uevent infiniband/ ptp/ vendor infinibandmad/ remove vpd infinibandverbs/ rescan iommu/ reset
# ibdev2netdev mlx5_0 port 1 ==> eth4 (Up) mlx5_1 port 1 ==> eth5 (Up)
-
Obtenez le nombre total de VF autorisées et configurées dans le firmware :
# cat /sys/class/net/eth4/device/sriov_totalvfs 4 # cat /sys/class/net/eth5/device/sriov_totalvfs 4
-
Obtenez le nombre actuel de champs visuels sur cet appareil :
# cat /sys/class/infiniband/mlx5_0/device/sriov_numvfs 0 # cat /sys/class/infiniband/mlx5_1/device/sriov_numvfs 0
-
Définissez le nombre de VF souhaité :
# echo 4 > /sys/class/infiniband/mlx5_0/device/sriov_numvfs # echo 4 > /sys/class/infiniband/mlx5_1/device/sriov_numvfs
Si vous avez déjà configuré une agrégation de liens utilisant ces deux ports, la première commande doit être exécutée sur cette agrégation :
# echo 4 > /sys/class/infiniband/mlx5_bond_0/device/sriov_numvfs
-
Vérifiez le bus PCI :
# lspci -D | grep Mellanox 0000:ab:00.0 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx] 0000:ab:00.1 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx] 0000:ab:00.2 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:00.3 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:00.4 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:00.5 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:01.2 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:01.3 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:01.4 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function 0000:ab:01.5 Ethernet controller: Mellanox Technologies ConnectX Family mlx5Gen Virtual Function
# ibdev2netdev -v 0000:ab:00.0 mlx5_0 (MT4125 - 51TF3A5000XV3) Mellanox ConnectX-6 Dx 100GbE QSFP56 2-port PCIe 4 Ethernet Adapter fw 22.36.1010 port 1 (ACTIVE) ==> eth4 (Up) 0000:ab:00.1 mlx5_1 (MT4125 - 51TF3A5000XV3) Mellanox ConnectX-6 Dx 100GbE QSFP56 2-port PCIe 4 Ethernet Adapter fw 22.36.1010 port 1 (ACTIVE) ==> eth6 (Up) 0000:ab:00.2 mlx523 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth6 (Down) 0000:ab:00.3 mlx5_3 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth7 (Down) 0000:ab:00.4 mlx5_4 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth8 (Down) 0000:ab:00.5 mlx5_5 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth9 (Down) 0000:ab:01.2 mlx5_6 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth10 (Down) 0000:ab:01.3 mlx5_7 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth11 (Down) 0000:ab:01.4 mlx5_8 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth12 (Down) 0000:ab:01.5 mlx5_9 (MT4126 - NA) fw 22.36.1010 port 1 (DOWN ) ==> eth13 (Down)
-
Vérifiez la configuration des VF via l'outil IP :
# ip link show … 6: eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 link/ether a0:88:c2:a6:f6:fd brd ff:ff:ff:ff:ff:ff permaddr a0:88:c2:a6:f6:fc vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off altname enp171s0f0np0 altname ens3f0np0 7: eth5: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000 link/ether a0:88:c2:a6:f6:fd brd ff:ff:ff:ff:ff:ff vf 0 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 1 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 2 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off vf 3 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state auto, trust off, query_rss off altname enp171s0f1np1 altname ens3f1np1 …
Étape 3 : Activer les VF au démarrage
Configurez les paramètres VF pour qu'ils persistent après un redémarrage du système en créant des services systemd et des scripts de démarrage.
-
Créer un fichier d'unité systemd
/etc/systemd/system/after.localavec le contenu suivant :[Unit] Description=/etc/init.d/after.local Compatibility After=libvirtd.service Requires=libvirtd.service [Service] Type=oneshot ExecStart=/etc/init.d/after.local RemainAfterExit=true [Install] WantedBy=multi-user.target
-
Créez le script /etc/init.d/after.local :
#! /bin/sh # # # ... echo 4 > /sys/class/infiniband/mlx5_bond_0/device/sriov_numvfs echo 4 > /sys/class/infiniband/mlx5_1/device/sriov_numvfs
-
Assurez-vous que le fichier peut être exécuté :
# cd /etc/init.d/ # chmod 750 after.local
Étape 4 : Attribuer les interfaces virtuelles à la machine virtuelle
Attribuez les fonctions virtuelles créées à la machine virtuelle SAP HANA en tant que périphériques hôtes PCI à l'aide de virt-manager.
-
Démarrer virt-manager.

-
Ouvrez la machine virtuelle souhaitée.

-
Sélectionnez Ajouter du matériel. +

-
Choisissez la carte réseau virtuelle souhaitée parmi le premier port physique de la liste des périphériques hôtes PCI et appuyez sur Terminer.
Dans cet exemple, 0000.AB:00:2 - 0000.AB:00:4 appartiennent au premier port physique et 0000.AB:01:2 - 0000.AB:01:4 appartiennent au deuxième port physique.

-
Choisissez le prochain port NIC virtuel dans la liste des périphériques hôtes PCI, utilisez un port virtuel du deuxième port physique et sélectionnez Terminer.

-
Ensuite, les interfaces virtuelles sont attribuées à la machine virtuelle et celle-ci peut être démarrée. +

Étape 5 : Configurer les interfaces réseau au sein de la machine virtuelle
Connectez-vous à la VM et configurez les deux VF en tant que liaison. Choisissez le mode 0 ou le mode 2. N'utilisez pas LACP car LACP ne peut être utilisé que sur des ports physiques. La figure ci-dessous illustre une configuration en mode 2 utilisant YAST.

Quelle est la prochaine étape ?
Après avoir configuré les interfaces réseau SR-IOV,"configurer le réseau Fibre Channel" si FCP doit être utilisé comme protocole de stockage.