Skip to main content
BeeGFS on NetApp with E-Series Storage
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Mise à jour vers BeeGFS v8

Contributeurs mcwhiteside

Suivez ces étapes pour mettre à niveau votre cluster BeeGFS HA de la version 7.4.6 à BeeGFS v8.

Présentation

BeeGFS v8 introduit plusieurs changements importants qui nécessitent une configuration supplémentaire avant la mise à niveau depuis BeeGFS v7. Ce document vous guide dans la préparation de votre cluster aux nouvelles exigences de BeeGFS v8, puis dans la mise à niveau vers BeeGFS v8.

Important Avant de procéder à la mise à niveau vers BeeGFS v8, assurez-vous que votre système exécute au moins BeeGFS 7.4.6. Tout cluster exécutant une version antérieure à BeeGFS 7.4.6 doit d'abord "Mise à jour vers la version 7.4.6" avant de poursuivre cette procédure de mise à niveau vers BeeGFS v8.

Principaux changements dans BeeGFS v8

BeeGFS v8 introduit les changements majeurs suivants :

  • Application des licences : BeeGFS v8 requiert une licence pour utiliser les fonctionnalités premium telles que les pools de stockage, les cibles de stockage distantes, BeeOND, et plus encore. Procurez-vous une licence valide pour votre cluster BeeGFS avant la mise à niveau. Si nécessaire, vous pouvez obtenir une licence d’évaluation temporaire de BeeGFS v8 auprès du "Portail de licences BeeGFS".

  • Migration de la base de données du service de gestion : Pour activer la configuration avec le nouveau format basé sur TOML dans BeeGFS v8, vous devez migrer manuellement votre base de données du service de gestion BeeGFS v7 vers le format BeeGFS v8 mis à jour.

  • Chiffrement TLS : BeeGFS v8 introduit TLS pour sécuriser la communication entre les services. Vous devrez générer et distribuer des certificats TLS pour le service de gestion BeeGFS et l' `beegfs`utilitaire en ligne de commande dans le cadre de la mise à niveau.

Pour plus de détails et les modifications supplémentaires apportées à BeeGFS 8, consultez le "Guide de mise à niveau BeeGFS v8.0.0".

Important

La mise à niveau vers BeeGFS v8 nécessite une interruption du cluster. De plus, les clients BeeGFS v7 ne peuvent pas se connecter aux clusters BeeGFS v8. Coordonnez soigneusement le calendrier de mise à niveau entre le cluster et les clients afin de minimiser l'impact sur les opérations.

Préparez votre cluster BeeGFS pour la mise à niveau

Avant de commencer la mise à niveau, préparez soigneusement votre environnement afin d'assurer une transition en douceur et de minimiser l'interruption.

  1. Assurez-vous que votre cluster est dans un état sain, avec tous les services BeeGFS exécutés sur leurs nœuds préférés. À partir d'un nœud de fichiers exécutant les services BeeGFS, vérifiez que toutes les ressources Pacemaker sont exécutées sur leurs nœuds préférés :

    pcs status
  2. Enregistrez et sauvegardez la configuration de votre cluster.

    1. Consultez le "Documentation de sauvegarde BeeGFS" pour obtenir des instructions sur la sauvegarde de la configuration de votre cluster.

    2. Sauvegardez le répertoire de données de gestion existant :

      cp -r /mnt/mgmt_tgt_mgmt01/data /mnt/mgmt_tgt_mgmt01/data_beegfs_v7_backup_$(date +%Y%m%d)
    3. Exécutez les commandes suivantes depuis un client beegfs et enregistrez leur sortie pour référence :

      beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint
    4. Si vous utilisez la mise en miroir, recueillez des informations détaillées sur l'état :

      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta
      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage
  3. Préparez vos clients à l'interruption beegfs-client des services. Pour chaque client, exécutez :

    systemctl stop beegfs-client
  4. Pour chaque cluster Pacemaker, désactivez STONITH. Cela vous permettra de vérifier l'intégrité du cluster après la mise à niveau sans provoquer de redémarrages inutiles des nœuds.

    pcs property set stonith-enabled=false
  5. Pour tous les clusters Pacemaker dans l'espace de noms BeeGFS, utilisez PCS pour arrêter le cluster :

    pcs cluster stop --all

Mettez à niveau les packages BeeGFS

Sur tous les nœuds de fichiers du cluster, ajoutez le dépôt de paquets BeeGFS v8 correspondant à votre distribution Linux. Des instructions pour utiliser les dépôts officiels BeeGFS sont disponibles à "page de téléchargement BeeGFS". Sinon, configurez votre dépôt miroir local BeeGFS en conséquence.

La procédure suivante décrit comment procéder à l'aide du dépôt officiel BeeGFS 8.2 sur des nœuds de fichiers RHEL 9. Effectuez les étapes suivantes sur tous les nœuds de fichiers du cluster :

  1. Importez la clé GPG de BeeGFS :

    rpm --import https://www.beegfs.io/release/beegfs_8.2/gpg/GPG-KEY-beegfs
  2. Importez le dépôt BeeGFS :

    curl -L -o /etc/yum.repos.d/beegfs-rhel9.repo https://www.beegfs.io/release/beegfs_8.2/dists/beegfs-rhel9.repo
    Remarque

    Supprimez tous les dépôts BeeGFS précédemment configurés pour éviter les conflits avec le nouveau dépôt BeeGFS v8.

  3. Videz le cache de votre gestionnaire de paquets :

    dnf clean all
  4. Sur tous les nœuds de fichiers, mettez à jour les paquets BeeGFS vers BeeGFS 8.2.

    dnf update beegfs-mgmtd beegfs-storage beegfs-meta libbeegfs-ib
Remarque

Dans un cluster standard, le beegfs-mgmtd package ne sera mis à jour que sur les deux premiers nœuds de fichiers.

Mettre à niveau la base de données de gestion

Sur l'un des nœuds de fichiers exécutant le service de gestion BeeGFS, effectuez les étapes suivantes pour migrer la base de données de gestion de BeeGFS v7 vers v8.

  1. Lister tous les périphériques NVMe et filtrer selon la cible de gestion :

    nvme netapp smdevices | grep mgmt_tgt
    1. Notez le chemin d'accès au périphérique dans la sortie.

    2. Montez le périphérique cible de gestion sur le point de montage cible de gestion existant (remplacez /dev/nvmeXnY par le chemin d'accès à votre périphérique) :

      mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
  2. Importez vos données de gestion BeeGFS 7 dans le nouveau format de base de données en exécutant :

    /opt/beegfs/sbin/beegfs-mgmtd --import-from-v7=/mnt/mgmt_tgt_mgmt01/data/

    Résultat attendu:

    Created new database version 3 at "/var/lib/beegfs/mgmtd.sqlite". Successfully imported v7 management data from "/mnt/mgmt_tgt_mgmt01/data/".
    Important

    L'importation automatique peut échouer dans certains cas en raison des exigences de validation plus strictes dans BeeGFS v8. Par exemple, si des cibles sont affectées à des pools de stockage inexistants, l'importation échouera. Si la migration de la base de données échoue, ne procédez pas à la mise à niveau. Contactez le support NetApp pour obtenir de l'aide concernant la résolution des problèmes de migration de la base de données. À titre de solution temporaire, vous pouvez rétrograder les packages BeeGFS v8 et continuer à utiliser BeeGFS v7 pendant que le problème est résolu.

  3. Déplacez le fichier SQLite généré vers le point de montage du service de gestion :

    mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/
  4. Déplacez le fichier généré beegfs-mgmtd.toml vers le point de montage du service de gestion :

    mv /etc/beegfs/beegfs-mgmtd.toml /mnt/mgmt_tgt_mgmt01/mgmt_config/

    La préparation du fichier de configuration beegfs-mgmtd.toml sera effectuée après avoir terminé les étapes de configuration de la licence et du chiffrement TLS dans les sections suivantes.

Configurer les licences

  1. Installez les packages de licence beegfs sur tous les nœuds qui exécutent le service de gestion beegfs. Il s'agit généralement des deux premiers nœuds du cluster :

    dnf install libbeegfs-license
  2. Téléchargez votre fichier de licence BeeGFS v8 sur les nœuds de gestion et placez-le à :

    /etc/beegfs/license.pem

Configurer le chiffrement TLS

BeeGFS v8 requiert le chiffrement TLS pour sécuriser les communications entre les services de gestion et les clients. Il existe trois options pour configurer le chiffrement TLS sur les communications réseau entre les services de gestion et les services clients. La méthode recommandée et la plus sécurisée consiste à utiliser des certificats signés par une autorité de certification de confiance. Vous pouvez également créer votre propre autorité de certification locale pour signer les certificats de votre cluster BeeGFS. Pour les environnements où le chiffrement n'est pas requis ou pour le dépannage, TLS peut être entièrement désactivé, bien que cela soit déconseillé car cela expose des informations sensibles au réseau.

Avant de continuer, suivez les instructions du "Configurer le chiffrement TLS pour BeeGFS 8" guide pour configurer le chiffrement pour votre environnement.

Configuration du service de gestion des mises à jour

Préparez le fichier de configuration du service de gestion BeeGFS v8 en transférant manuellement les paramètres de votre fichier de configuration BeeGFS v7 dans le fichier /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml.

  1. Sur le nœud de gestion où la cible de gestion est montée, référencez le /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.conf fichier de service de gestion pour BeeGFS 7, puis transférez tous les paramètres dans le fichier /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml. Pour une configuration de base, votre beegfs-mgmtd.toml pourrait ressembler à ce qui suit :

    beemsg-port = 8008
    grpc-port = 8010
    log-level = "info"
    node-offline-timeout = "900s"
    quota-enable = false
    auth-disable = false
    auth-file = "/etc/beegfs/<mgmt_service_ip>_connAuthFile"
    db-file = "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    license-disable = false
    license-cert-file = "/etc/beegfs/license.pem"
    tls-disable = false
    tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem"
    tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem"
    interfaces = ['i1b:mgmt_1', 'i2b:mgmt_2']

    Adaptez tous les chemins selon les besoins pour correspondre à votre environnement et à votre configuration TLS.

  2. Sur chaque nœud de fichiers exécutant des services de gestion, modifiez votre fichier de service systemd pour qu'il pointe vers le nouvel emplacement du fichier de configuration.

    sudo sed -i 's|ExecStart=.*|ExecStart=nice -n -3 /opt/beegfs/sbin/beegfs-mgmtd --config-file /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml|' /etc/systemd/system/beegfs-mgmtd.service
    1. Recharger systemd :

      systemctl daemon-reload
  3. Pour chaque nœud de fichier exécutant des services de gestion, ouvrez le port 8010 pour la communication gRPC du service de gestion.

    1. Ajoutez le port 8010/tcp à la zone beegfs :

      sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp
    2. Rechargez le pare-feu pour appliquer la modification :

      sudo firewall-cmd --reload

Mettre à jour le script de surveillance BeeGFS

Le script OCF de `beegfs-monitor`Pacemaker nécessite des mises à jour pour prendre en charge le nouveau format de configuration TOML et la gestion des services systemd. Mettez à jour le script sur un nœud du cluster, puis copiez le script mis à jour sur tous les autres nœuds.

  1. Créez une sauvegarde du script actuel :

    cp /usr/lib/ocf/resource.d/eseries/beegfs-monitor /usr/lib/ocf/resource.d/eseries/beegfs-monitor.bak.$(date +%F)
  2. Mettez à jour le chemin du fichier de configuration de gestion de .conf à .toml :

    sed -i 's|mgmt_config/beegfs-mgmtd\.conf|mgmt_config/beegfs-mgmtd.toml|' /usr/lib/ocf/resource.d/eseries/beegfs-monitor

    Sinon, localisez manuellement le bloc suivant dans le script :

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.conf"
        ;;

    Et remplacez-le par :

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.toml"
        ;;
  3. Mettez à jour les get_interfaces() et get_subnet_ips() fonctions pour prendre en charge la configuration TOML :

    1. Ouvrez le script dans un éditeur de texte :

      vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor
    2. Localisez les deux fonctions : get_interfaces() et get_subnet_ips().

    3. Supprimez les deux fonctions complètes, en commençant à get_interfaces() jusqu'à la fin de get_subnet_ips().

    4. Copiez et collez les fonctions mises à jour suivantes à leur place :

      # Return network communication interface name(s) from the BeeGFS resource's connInterfaceFile
      get_interfaces() {
        # Determine BeeGFS service network IP interfaces.
        if [ "$type" = "management" ]; then
          interfaces_line=$(grep "^interfaces =" "$conf_path")
          interfaces_list=$(echo "$interfaces_line" | sed "s/.*= \[\(.*\)\]/\1/")
          interfaces=$(echo "$interfaces_list" | tr -d "'" | tr -d " " | tr ',' '\n')
      
          for entry in $interfaces; do
            echo "$entry" | cut -d ':' -f 1
          done
        else
          connInterfacesFile_path=$(grep "^connInterfacesFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          if [ -f "$connInterfacesFile_path" ]; then
            while read -r entry; do
              echo "$entry" | cut -f 1 -d ':'
            done < "$connInterfacesFile_path"
          fi
        fi
      }
      
      # Return list containing all the BeeGFS resource's usable IP addresses. *Note that these are filtered by the connNetFilterFile entries.
      get_subnet_ips() {
        # Determine all possible BeeGFS service network IP addresses.
        if [ "$type" != "management" ]; then
          connNetFilterFile_path=$(grep "^connNetFilterFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          filter_ips=""
          if [ -n "$connNetFilterFile_path" ] && [ -e $connNetFilterFile_path ]; then
            while read -r filter; do
              filter_ips="$filter_ips $(get_ipv4_subnet_addresses $filter)"
            done < $connNetFilterFile_path
          fi
      
          echo "$filter_ips"
        fi
      }
    5. Enregistrez et quittez l'éditeur de texte.

    6. Exécutez la commande suivante pour vérifier le script pour des erreurs de syntaxe avant de poursuivre. L'absence de résultat indique que le script est syntaxiquement correct.

      bash -n /usr/lib/ocf/resource.d/eseries/beegfs-monitor
  4. Copiez le script OCF mis à jour beegfs-monitor sur tous les autres nœuds du cluster pour garantir la cohérence :

    scp /usr/lib/ocf/resource.d/eseries/beegfs-monitor user@node:/usr/lib/ocf/resource.d/eseries/beegfs-monitor

Remettre le cluster en ligne

  1. Une fois toutes les étapes de mise à niveau précédentes terminées, remettez le cluster en ligne en démarrant les services BeeGFS sur tous les nœuds.

    pcs cluster start --all
  2. Vérifiez que le beegfs-mgmtd service a démarré correctement :

    journalctl -xeu beegfs-mgmtd

    Le résultat attendu comprend des lignes telles que :

    Started Cluster Controlled beegfs-mgmtd.
    Loaded config file from "/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml"
    Successfully initialized certificate verification library.
    Successfully loaded license certificate: TMP-113489268
    Opened database at "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    Listening for BeeGFS connections on [::]:8008
    Serving gRPC requests on [::]:8010
    Remarque

    Si des erreurs apparaissent dans les journaux, vérifiez les chemins d'accès au fichier de configuration de gestion et assurez-vous que toutes les valeurs ont été correctement transférées depuis le fichier de configuration BeeGFS 7.

  3. Exécutez pcs status et vérifiez que le cluster est sain et que les services sont démarrés sur leurs nœuds préférés.

  4. Une fois que le cluster est vérifié comme étant sain, réactivez STONITH :

    pcs property set stonith-enabled=true
  5. Passez à la section suivante pour mettre à niveau les clients BeeGFS dans le cluster et vérifier l'état de santé du cluster BeeGFS.

Mise à niveau des clients BeeGFS

Après avoir réussi la mise à niveau de votre cluster vers BeeGFS v8, vous devez également mettre à niveau tous les clients BeeGFS.

Les étapes suivantes décrivent le processus de mise à niveau des clients BeeGFS sur un système basé sur Ubuntu.

  1. Si ce n'est pas déjà fait, arrêtez le service client BeeGFS :

    systemctl stop beegfs-client
  2. Ajoutez le dépôt de paquets BeeGFS v8 pour votre distribution Linux. Des instructions pour utiliser les dépôts officiels BeeGFS se trouvent à "^Page de téléchargement BeeGFS". Sinon, configurez votre dépôt miroir BeeGFS local en conséquence.

    Les étapes suivantes utilisent le dépôt officiel BeeGFS 8.2 sur un système basé sur Ubuntu :

  3. Importez la clé GPG de BeeGFS :

    wget https://www.beegfs.io/release/beegfs_8.2/gpg/GPG-KEY-beegfs -O /etc/apt/trusted.gpg.d/beegfs.asc
  4. Téléchargez le fichier du dépôt :

    wget https://www.beegfs.io/release/beegfs_8.2/dists/beegfs-noble.list -O /etc/apt/sources.list.d/beegfs.list
    Remarque

    Supprimez tous les dépôts BeeGFS précédemment configurés pour éviter les conflits avec le nouveau dépôt BeeGFS v8.

  5. Mettez à jour les packages clients BeeGFS :

    apt-get update
    apt-get install --only-upgrade beegfs-client
  6. Configurez TLS pour le client. TLS est requis pour utiliser la CLI BeeGFS. Consultez la "Configurer le chiffrement TLS pour BeeGFS 8" procédure pour configurer TLS sur le client.

  7. Démarrez le service client BeeGFS :

    systemctl start beegfs-client

Vérifier la mise à jour

Après avoir terminé la mise à niveau vers BeeGFS v8, exécutez les commandes suivantes pour vérifier que la mise à niveau a réussi.

  1. Vérifiez que l'inode racine appartient bien au même nœud de métadonnées qu'auparavant. Cela devrait se faire automatiquement si vous avez utilisé la import-from-v7 fonctionnalité dans le service de gestion :

    beegfs entry info /mnt/beegfs
  2. Vérifiez que tous les nœuds et cibles sont en ligne et en bon état :

    beegfs health check
    Remarque

    Si la vérification de la « capacité disponible » signale que les cibles manquent d'espace libre, vous pouvez ajuster les seuils du « pool de capacité » définis dans le beegfs-mgmtd.toml fichier afin qu'ils soient mieux adaptés à votre environnement.