Skip to main content
NetApp solutions for SAP
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Configurer les interfaces réseau SR-IOV pour SAP HANA sur SUSE KVM

Contributeurs netapp-mschoen

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.

largeur=493,hauteur=409

Avant de commencer

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.

Remarque 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.
Étapes
  1. 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
  2. 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
  3. 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)_
  4. Si nécessaire, activez SR-IOV :

    mlxconfig -d /dev/mst/mt4125_pciconf0 set SRIOV_EN=1
  5. Définir le nombre maximal de VF :

    mlxconfig -d /dev/mst/mt4125_pciconf0 set  NUM_OF_VFS=4
  6. 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.

Étapes
  1. 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)
  2. 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
  3. 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
  4. 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
  5. 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)
  6. 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.

  1. Créer un fichier d'unité systemd /etc/systemd/system/after.local avec 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
  2. 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
  3. 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.

  1. Démarrer virt-manager.

    largeur=601,hauteur=385

  2. Ouvrez la machine virtuelle souhaitée.

    largeur=300,hauteur=385

  3. Sélectionnez Ajouter du matériel. + Virtmanager Ajouter du matériel, largeur=601, hauteur=443

  4. 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.

    largeur=601,hauteur=442

  5. 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.

    largeur=601,hauteur=441

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

É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.

largeur=601,hauteur=335

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.