Skip to main content
BeeGFS on NetApp with E-Series Storage
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Upgrade auf BeeGFS v8

Beitragende mcwhiteside
Änderungen vorschlagen

Führen Sie diese Schritte aus, um Ihren BeeGFS HA Cluster von Version 7.4.6 auf BeeGFS v8 zu aktualisieren.

Überblick

BeeGFS v8 führt mehrere bedeutende Änderungen ein, die vor dem Upgrade von BeeGFS v7 zusätzliche Konfigurationen erfordern. Dieses Dokument führt Sie durch die Vorbereitung Ihres Clusters auf die neuen Anforderungen von BeeGFS v8 und anschließend durch das Upgrade auf BeeGFS v8.

Wichtig Vor dem Upgrade auf BeeGFS v8 stellen Sie sicher, dass auf Ihrem System mindestens BeeGFS 7.4.6 ausgeführt wird. Jeder Cluster, auf dem eine Version vor BeeGFS 7.4.6 ausgeführt wird, muss zuerst "Upgrade auf Version 7.4.6" bevor Sie mit diesem Upgrade-Verfahren für BeeGFS v8 fortfahren.

Wichtige Änderungen in BeeGFS v8

BeeGFS v8 führt die folgenden wesentlichen Änderungen ein:

  • Lizenzbestimmungen: BeeGFS v8 erfordert eine Lizenz für die Nutzung von Premium-Funktionen wie Speicherpools, Remote-Speicherzielen, BeeOND und mehr. Erwerben Sie vor dem Upgrade eine gültige Lizenz für Ihren BeeGFS-Cluster. Bei Bedarf können Sie eine temporäre BeeGFS v8-Evaluierungslizenz von dem "BeeGFS License Portal" erhalten.

  • Migration der Management-Service-Datenbank: Um die Konfiguration mit dem neuen TOML-basierten Format in BeeGFS v8 zu ermöglichen, müssen Sie Ihre BeeGFS v7 Management-Service-Datenbank in das aktualisierte BeeGFS v8-Format migrieren.

  • TLS-Verschlüsselung: BeeGFS v8 führt TLS für die sichere Kommunikation zwischen Diensten ein. Sie müssen TLS-Zertifikate für den BeeGFS-Verwaltungsdienst und das beegfs Befehlszeilenprogramm im Rahmen des Upgrades generieren und verteilen.

Weitere Details und zusätzliche Änderungen in BeeGFS 8 finden Sie in der "BeeGFS v8.0.0 Upgrade-Leitfaden".

Wichtig

Für das Upgrade auf BeeGFS v8 ist eine Ausfallzeit des Clusters erforderlich. Darüber hinaus können BeeGFS v7 Clients keine Verbindung zu BeeGFS v8 Clustern herstellen. Koordinieren Sie die Upgrade-Zeitpunkte zwischen dem Cluster und den Clients sorgfältig, um die Auswirkungen auf den Betrieb zu minimieren.

Bereiten Sie Ihren BeeGFS Cluster auf das Upgrade vor

Bereiten Sie Ihre Umgebung sorgfältig vor, bevor Sie mit dem Upgrade beginnen, um einen reibungslosen Übergang zu gewährleisten und Ausfallzeiten zu minimieren.

  1. Stellen Sie sicher, dass sich Ihr Cluster in einem fehlerfreien Zustand befindet und alle BeeGFS-Dienste auf ihren bevorzugten Knoten ausgeführt werden. Überprüfen Sie von einem Dateiknoten, auf dem BeeGFS-Dienste ausgeführt werden, ob alle Pacemaker-Ressourcen auf ihren bevorzugten Knoten ausgeführt werden.

    pcs status
  2. Zeichnen Sie Ihre Clusterkonfiguration auf und sichern Sie sie.

    1. Siehe die "BeeGFS Backup-Dokumentation" für Anweisungen zum Sichern Ihrer Clusterkonfiguration.

    2. Sichern Sie das bestehende Verwaltungsdatenverzeichnis:

      cp -r /mnt/mgmt_tgt_mgmt01/data /mnt/mgmt_tgt_mgmt01/data_beegfs_v7_backup_$(date +%Y%m%d)
    3. Führen Sie die folgenden Befehle von einem beegfs client aus und speichern Sie deren Ausgabe zur Referenz:

      beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint
    4. Wenn Sie die Spiegelung verwenden, erfassen Sie detaillierte Statusinformationen:

      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta
      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage
  3. Bereiten Sie Ihre Kunden auf Ausfallzeiten vor und stoppen Sie beegfs-client Dienste. Führen Sie für jeden Kunden aus:

    systemctl stop beegfs-client
  4. Deaktivieren Sie für jeden Pacemaker-Cluster STONITH. Dadurch können Sie die Integrität des Clusters nach dem Upgrade überprüfen, ohne unnötige Knotenneustarts auszulösen.

    pcs property set stonith-enabled=false
  5. Für alle Pacemaker-Cluster im BeeGFS-Namespace verwenden Sie PCS, um den Cluster zu stoppen:

    pcs cluster stop --all

Aktualisieren Sie die BeeGFS-Pakete

Fügen Sie auf allen Dateiknoten im Cluster das BeeGFS v8-Paket-Repository für Ihre Linux-Distribution hinzu. Anweisungen zur Verwendung der offiziellen BeeGFS-Repositories finden Sie unter "BeeGFS Download-Seite". Andernfalls konfigurieren Sie Ihr lokales BeeGFS-Mirror-Repository entsprechend.

Die folgenden Schritte beschreiben die Vorgehensweise anhand des offiziellen BeeGFS 8.2 Repository auf RHEL 9 Dateiknoten. Führen Sie die folgenden Schritte auf allen Dateiknoten im Cluster aus:

  1. Importieren Sie den BeeGFS GPG-Schlüssel:

    rpm --import https://www.beegfs.io/release/beegfs_8.2/gpg/GPG-KEY-beegfs
  2. Importieren Sie das BeeGFS repository:

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

    Entfernen Sie alle zuvor konfigurierten BeeGFS-Repositories, um Konflikte mit dem neuen BeeGFS v8-Repository zu vermeiden.

  3. Leeren Sie den Cache Ihres Paketmanagers:

    dnf clean all
  4. Aktualisieren Sie auf allen Dateiknoten die BeeGFS-Pakete auf BeeGFS 8.2.

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

In einem Standardcluster wird das beegfs-mgmtd Paket nur auf den ersten beiden Dateiknoten aktualisiert.

Aktualisieren Sie die Management-Datenbank

Führen Sie auf einem der Dateiknoten, auf denen der BeeGFS-Managementdienst ausgeführt wird, die folgenden Schritte durch, um die Management-Datenbank von BeeGFS v7 auf v8 zu migrieren.

  1. Alle NVMe-Geräte auflisten und nach dem Verwaltungsziel filtern:

    nvme netapp smdevices | grep mgmt_tgt
    1. Beachten Sie den Gerätepfad aus der Ausgabe.

    2. Binden Sie das Management-Zielgerät an den vorhandenen Management-Ziel-Mountpunkt ein (ersetzen Sie /dev/nvmeXnY durch Ihren Gerätepfad):

      mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
  2. Importieren Sie Ihre BeeGFS 7-Verwaltungsdaten in das neue Datenbankformat, indem Sie Folgendes ausführen:

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

    Erwartete Ausgabe:

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

    Der automatische Import kann in einigen Fällen aufgrund strengerer Validierungsanforderungen in BeeGFS v8 fehlschlagen. Wenn beispielsweise Ziele nicht existierenden Speicherpools zugewiesen werden, schlägt der Import fehl. Wenn die Migration fehlschlägt, führen Sie das Upgrade nicht durch. Wenden Sie sich an den NetApp Support, um Unterstützung bei der Behebung der Datenbankmigration-Probleme zu erhalten. Als Übergangslösung können Sie die BeeGFS v8 Pakete downgraden und BeeGFS v7 weiterhin verwenden, während das Problem behoben wird.

  3. Verschieben Sie die generierte SQLite-Datei auf den Management-Service-Mount:

    mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/
  4. Verschieben Sie die generierte beegfs-mgmtd.toml auf den Mountpunkt des Verwaltungsdienstes:

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

    Die Vorbereitung der beegfs-mgmtd.toml Konfigurationsdatei erfolgt nach Abschluss der Lizenzierungs- und TLS-Konfigurationsschritte in den nächsten Abschnitten.

Lizenzierung konfigurieren

  1. Installieren Sie die beegfs-Lizenzpakete auf allen Knoten, auf denen der beegfs-Managementdienst ausgeführt wird. Dies sind typischerweise die ersten beiden Knoten des Clusters:

    dnf install libbeegfs-license
  2. Laden Sie Ihre BeeGFS v8-Lizenzdatei auf die Management-Knoten herunter und platzieren Sie sie unter:

    /etc/beegfs/license.pem

TLS-Verschlüsselung konfigurieren

BeeGFS v8 erfordert TLS-Verschlüsselung für die sichere Kommunikation zwischen Verwaltungsdiensten und Clients. Es gibt drei Optionen, die TLS-Verschlüsselung für die Netzwerkkommunikation zwischen Verwaltungsdiensten und Clientdiensten zu konfigurieren. Die empfohlene und sicherste Methode ist die Verwendung von Zertifikaten, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurden. Alternativ können Sie eine eigene lokale Zertifizierungsstelle erstellen, um Zertifikate für Ihren BeeGFS-Cluster zu signieren. Für Umgebungen, in denen keine Verschlüsselung erforderlich ist, oder zur Fehlerbehebung kann TLS vollständig deaktiviert werden, obwohl dies nicht empfohlen wird, da dadurch sensible Informationen im Netzwerk offengelegt werden.

Bevor Sie fortfahren, befolgen Sie die Anweisungen im "TLS-Verschlüsselung für BeeGFS 8 konfigurieren" guide, um die TLS-Verschlüsselung für Ihre Umgebung einzurichten.

Konfiguration des Update-Management-Dienstes

Bereiten Sie die BeeGFS v8 Management-Service-Konfigurationsdatei vor, indem Sie die Einstellungen manuell aus Ihrer BeeGFS v7 Konfigurationsdatei in die /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml Datei übertragen.

  1. Auf dem Management-Knoten, auf dem das Management-Ziel eingebunden ist, referenzieren Sie die /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.conf Management-Service-Datei für BeeGFS 7 und übertragen Sie anschließend alle Einstellungen in die /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml Datei. Für eine grundlegende Einrichtung könnte Ihre beegfs-mgmtd.toml wie folgt aussehen:

    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']

    Passen Sie alle Pfade nach Bedarf an Ihre Umgebung und TLS-Konfiguration an.

  2. Ändern Sie auf jedem Dateiknoten, auf dem Verwaltungsdienste ausgeführt werden, Ihre systemd-Dienstdatei so, dass sie auf den neuen Speicherort der Konfigurationsdatei verweist.

    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. Systemd neu laden:

      systemctl daemon-reload
  3. Für jeden Dateiknoten, auf dem Verwaltungsdienste ausgeführt werden, öffnen Sie Port 8010 für die gRPC-Kommunikation des Verwaltungsdienstes.

    1. Fügen Sie Port 8010/tcp zur beegfs zone hinzu:

      sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp
    2. Laden Sie die Firewall neu, um die Änderung anzuwenden:

      sudo firewall-cmd --reload

Aktualisieren Sie das BeeGFS-Monitor-Skript

Das Pacemaker beegfs-monitor OCF-Skript muss aktualisiert werden, um das neue TOML-Konfigurationsformat und die systemd-Dienstverwaltung zu unterstützen. Aktualisieren Sie das Skript auf einem Knoten im Cluster und kopieren Sie das aktualisierte Skript dann auf alle anderen Knoten.

  1. Erstellen Sie eine Sicherungskopie des aktuellen Skripts:

    cp /usr/lib/ocf/resource.d/eseries/beegfs-monitor /usr/lib/ocf/resource.d/eseries/beegfs-monitor.bak.$(date +%F)
  2. Aktualisieren Sie den Pfad der Management-Konfigurationsdatei von .conf zu .toml:

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

    Alternativ suchen Sie den folgenden Block im Skript manuell:

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

    Und ersetzen Sie es durch:

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.toml"
        ;;
  3. Aktualisieren Sie die get_interfaces() und get_subnet_ips() Funktionen, um die TOML-Konfiguration zu unterstützen:

    1. Öffnen Sie das Skript in einem Texteditor:

      vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor
    2. Finden Sie die beiden Funktionen: get_interfaces() und get_subnet_ips().

    3. Löschen Sie beide gesamten Funktionen, beginnend bei get_interfaces() bis zum Ende von get_subnet_ips().

    4. Kopieren Sie die folgenden aktualisierten Funktionen und fügen Sie sie an ihrer Stelle ein:

      # 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. Speichern und beenden Sie den Texteditor.

    6. Führen Sie den folgenden Befehl aus, um das Skript vor der Fortsetzung auf Syntaxfehler zu überprüfen. Keine Ausgabe zeigt an, dass das Skript syntaktisch korrekt ist.

      bash -n /usr/lib/ocf/resource.d/eseries/beegfs-monitor
  4. Kopieren Sie das aktualisierte beegfs-monitor OCF-Skript auf alle anderen Knoten im Cluster, um die Konsistenz zu gewährleisten:

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

Den Cluster wieder online bringen

  1. Sobald alle vorherigen Upgrade-Schritte abgeschlossen sind, bringen Sie das Cluster wieder online, indem Sie die BeeGFS-Dienste auf allen Knoten starten.

    pcs cluster start --all
  2. Überprüfen Sie, ob der beegfs-mgmtd Service erfolgreich gestartet wurde:

    journalctl -xeu beegfs-mgmtd

    Die erwartete Ausgabe umfasst Zeilen wie:

    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
    Hinweis

    Falls Fehler in den Journalprotokollen auftreten, überprüfen Sie die Pfade der Verwaltungskonfigurationsdatei und stellen Sie sicher, dass alle Werte korrekt aus der BeeGFS 7 Konfigurationsdatei übernommen wurden.

  3. Führen Sie pcs status aus und überprüfen Sie, ob der Cluster fehlerfrei ist und die Dienste auf den bevorzugten Knoten gestartet wurden.

  4. Sobald die einwandfreie Funktion des Clusters bestätigt ist, aktivieren Sie STONITH wieder:

    pcs property set stonith-enabled=true
  5. Fahren Sie mit dem nächsten Abschnitt fort, um die BeeGFS-Clients im Cluster zu aktualisieren und die Gesundheit des BeeGFS-Clusters zu überprüfen.

BeeGFS-Clients aktualisieren

Nach erfolgreichem Upgrade Ihres Clusters auf BeeGFS v8 müssen Sie auch alle BeeGFS Clients aktualisieren.

Die folgenden Schritte beschreiben den Prozess zum Upgrade von BeeGFS Clients auf einem Ubuntu-basierten System.

  1. Falls noch nicht geschehen, stoppen Sie den BeeGFS client service:

    systemctl stop beegfs-client
  2. Fügen Sie das BeeGFS v8-Paket-Repository für Ihre Linux-Distribution hinzu. Anweisungen zur Verwendung der offiziellen BeeGFS-Repositories finden Sie unter "^BeeGFS Download-Seite". Andernfalls konfigurieren Sie Ihr lokales BeeGFS-Mirror-Repository entsprechend.

    Die folgenden Schritte verwenden das offizielle BeeGFS 8.2 Repository auf einem Ubuntu-basierten System:

  3. Importieren Sie den BeeGFS GPG-Schlüssel:

    wget https://www.beegfs.io/release/beegfs_8.2/gpg/GPG-KEY-beegfs -O /etc/apt/trusted.gpg.d/beegfs.asc
  4. Laden Sie die Repository-Datei herunter:

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

    Entfernen Sie alle zuvor konfigurierten BeeGFS-Repositories, um Konflikte mit dem neuen BeeGFS v8-Repository zu vermeiden.

  5. Aktualisieren Sie die BeeGFS client packages:

    apt-get update
    apt-get install --only-upgrade beegfs-client
  6. Konfigurieren Sie TLS für den Client. TLS ist für die Verwendung der BeeGFS CLI erforderlich. Beziehen Sie sich auf das "TLS-Verschlüsselung für BeeGFS 8 konfigurieren" Verfahren, um TLS auf dem Client zu konfigurieren.

  7. Starten Sie den BeeGFS Client Service:

    systemctl start beegfs-client

Überprüfen Sie das Upgrade

Nach Abschluss des Upgrades auf BeeGFS v8 führen Sie die folgenden Befehle aus, um zu überprüfen, ob das Upgrade erfolgreich war.

  1. Überprüfen Sie, ob der Root-Inode demselben Metadatenknoten wie zuvor gehört. Dies sollte automatisch erfolgen, wenn Sie die import-from-v7 Funktionalität im Verwaltungsdienst verwendet haben:

    beegfs entry info /mnt/beegfs
  2. Überprüfen Sie, ob alle Knoten und Ziele online und in einwandfreiem Zustand sind:

    beegfs health check
    Hinweis

    Wenn die Überprüfung „Verfügbare Kapazität“ darauf hinweist, dass auf den Zielen nur noch wenig freier Speicherplatz vorhanden ist, können Sie die in der beegfs-mgmtd.toml Konfigurationsdatei definierten Schwellenwerte für den „Kapazitätspool“ so anpassen, dass sie besser zu Ihrer Umgebung passen.