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 8

Beitragende mcwhiteside
Änderungen vorschlagen

Folgen Sie diesen Schritten, um Ihren BeeGFS HA-Cluster von BeeGFS 7.4 auf BeeGFS 8 zu aktualisieren.

Überblick

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

Wichtig Vor dem Upgrade auf BeeGFS 8 stellen Sie sicher, dass auf Ihrem System mindestens BeeGFS 7.4 ausgeführt wird. Jeder Cluster, auf dem eine Version älter als BeeGFS 7.4 läuft, muss zuerst "Upgrade auf BeeGFS 7.4" bevor auf BeeGFS 8 aktualisiert wird.

Wichtige Änderungen in BeeGFS 8

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

  • Lizenzbestimmungen: BeeGFS 8 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 8-Evaluierungslizenz von der "BeeGFS License Portal" erhalten.

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

  • TLS-Verschlüsselung: BeeGFS 8 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 8.0.0 Upgrade-Leitfaden".

Wichtig

Für das Upgrade auf BeeGFS 8 ist eine Cluster-Ausfallzeit erforderlich, und BeeGFS 7 Clients können keine Verbindung zu BeeGFS 8 Clustern herstellen. Koordinieren Sie den Upgrade-Zeitpunkt 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 alle Server und Clients "Unterstützte Linux-Distributionen und Kernelversionen" für BeeGFS 8 verwenden.

  2. 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
  3. Erstellen und sichern Sie Ihre Clusterkonfiguration. Die Daten des BeeGFS-Verwaltungsdienstes werden später im Rahmen des Upgrades der Verwaltungsdatenbank gesichert.

    1. Führen Sie die folgenden Befehle auf einem BeeGFS-Client aus und speichern Sie die Ausgabe als Referenz:

      beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint
    2. Wenn Sie die Spiegelung verwenden, erfassen Sie detaillierte Statusinformationen, damit Sie das ursprüngliche primäre Ziel identifizieren können, falls beide Spiegelungsmitglieder in den Status „needs-resync“ wechseln:

      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta
      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage
    3. Wenn Sie die Spiegelung verwenden, überprüfen Sie, ob sich alle Buddy-Gruppen im GOOD Zustand befinden, bevor Sie mit dem Upgrade fortfahren.

  4. Stoppen Sie das BeeGFS-System in der folgenden Reihenfolge:

    1. Auf jedem Client das BeeGFS-Dateisystem aushängen und den beegfs-client Dienst beenden. Für jeden Client ausführen:

      systemctl stop beegfs-client
    2. Deaktivieren Sie für jeden Pacemaker-Cluster STONITH, damit Sie die Clusterintegrität nach dem Upgrade überprüfen können, ohne unnötige Knotenneustarts auszulösen:

      pcs property set stonith-enabled=false
    3. Stoppen Sie bei allen Pacemaker-Clustern den Cluster:

      pcs cluster stop --all

Aktualisieren Sie das BeeGFS management package

Fügen Sie auf allen Dateiknoten im Cluster das BeeGFS 8-Paket-Repository für Ihre Linux-Distribution hinzu. Anweisungen zum Hinzufügen des offiziellen BeeGFS-Repositorys für Ihre Linux-Distribution finden Sie unter "BeeGFS Download-Seite". Andernfalls konfigurieren Sie Ihr lokales BeeGFS-Mirror-Repository entsprechend.

  1. Aktualisieren Sie auf den ersten beiden Dateiknoten Ihres Clusters nur das BeeGFS Management-Daemon-Paket auf BeeGFS 8:

    Führen Sie für RHEL nach der Konfiguration Ihres BeeGFS-Repository die folgenden Befehle aus:

    dnf clean all
    dnf update beegfs-mgmtd

Aktualisieren Sie die Management-Datenbank

Führen Sie auf einem der Dateiknoten, auf dem der BeeGFS-Verwaltungsdienst läuft, diese Schritte aus, um die Verwaltungsdatenbank von BeeGFS 7 zu BeeGFS 8 zu migrieren.

  1. Alle NVMe-Geräte auflisten und das Verwaltungsziel identifizieren:

    nvme netapp smdevices | grep mgmt_tgt

    Beachten Sie den Gerätepfad aus der Ausgabe (zum Beispiel /dev/nvmeXnY).

    1. 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. Führen Sie eine Sicherung des Verwaltungsdatenverzeichnisses durch:

    tar --force-local -cpzf /mnt/mgmt_tgt_mgmt01/data_beegfs_7_backup_$(date +'%F_%T').tar.gz /mnt/mgmt_tgt_mgmt01/data
  3. 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 aufgrund strengerer Validierungsanforderungen in BeeGFS 8 nicht in allen Fällen erfolgreich sein. Wenn beispielsweise Ziele nicht existierenden Speicherpools zugewiesen werden, schlägt der Import fehl. Wenn die Migration fehlschlägt, fahren Sie nicht mit dem Upgrade fort. Wenden Sie sich an den NetApp Support, um Unterstützung bei der Behebung der Datenbankmigration zu erhalten. Sie können die BeeGFS 8 Management-Pakete downgraden und BeeGFS 7 weiterhin verwenden, während das Problem behoben wird.

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

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

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

    Sie bereiten die beegfs-mgmtd.toml Konfigurationsdatei vor, nachdem Sie die Lizenzierungs- und TLS-Konfigurationsschritte in den folgenden Abschnitten abgeschlossen haben.

Verbleibende BeeGFS-Pakete aktualisieren

Nach Abschluss der Management-Datenbankmigration aktualisieren Sie die verbleibenden BeeGFS-Pakete auf allen Dateiknoten im Cluster. Führen Sie unter RHEL nach der Konfiguration Ihres BeeGFS-Repositorys die folgenden Befehle aus:

dnf clean all
dnf update beegfs-storage beegfs-meta libbeegfs-ib

Lizenzierung konfigurieren

  1. Installieren Sie die BeeGFS-Lizenzpakete auf allen Knoten, auf denen der BeeGFS-Verwaltungsdienst ausgeführt wird. Dies sind typischerweise die ersten beiden Dateiknoten Ihres Clusters:

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

    /etc/beegfs/license.pem

TLS-Verschlüsselung konfigurieren

BeeGFS 8 erfordert TLS-Verschlüsselung für die sichere Kommunikation zwischen Verwaltungsdiensten und dem BeeGFS CLI Tool (beegfs). Wählen Sie eine der drei Konfigurationsmethoden: Verwenden Sie Zertifikate, die von einer vertrauenswürdigen Zertifizierungsstelle signiert sind, erstellen Sie Ihre eigene lokale CA zum Signieren von Zertifikaten für Ihren BeeGFS-Cluster, oder deaktivieren Sie TLS vollständig zur Fehlerbehebung (nicht für den Produktivbetrieb empfohlen).

Konfigurieren Sie die TLS-Verschlüsselung für die Management-Services auf Ihren Dateiknoten mithilfe des "TLS-Verschlüsselung für BeeGFS 8 konfigurieren" Implementierungs-Leitfadens.

Hinweis

Die Client-TLS-Konfiguration wird nach dem Upgrade der BeeGFS-Clients abgeschlossen. Konfigurieren Sie in diesem Schritt TLS nur für die Management-Services und beegfs-tool auf den Dateiknoten.

Konfiguration des Update-Management-Dienstes

Bereiten Sie die BeeGFS 8 Management-Service-Konfigurationsdatei vor, indem Sie die Einstellungen manuell aus Ihrer BeeGFS 7 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 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.

  4. Fügen Sie den TCP-Port 8010 zur beegfs zone hinzu:

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

      sudo firewall-cmd --reload

Aktualisieren Sie das BeeGFS-Monitor-Skript

Das Pacemaker beegfs-monitor Open Cluster Framework (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 prüfen. Wenn keine Ausgabe erscheint, ist das Skript syntaktisch korrekt.

      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:

    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. Nachdem Sie alle vorherigen Upgrade-Schritte abgeschlossen haben, bringen Sie den 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

    Wenn Fehler in den Journalprotokollen auftreten, überprüfen Sie die Pfade der Verwaltungskonfigurationsdatei und vergewissern Sie sich, dass Sie alle Werte korrekt aus der BeeGFS 7 Konfigurationsdatei übernommen haben.

  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 zu aktualisieren und die Integrität des Clusters zu überprüfen.

BeeGFS-Clients aktualisieren

Nach dem Upgrade Ihres Clusters auf BeeGFS 8 müssen Sie auch alle BeeGFS Clients aktualisieren.

  1. Falls Sie den BeeGFS Client Service noch nicht gestoppt haben, stoppen Sie ihn jetzt:

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

  3. Aktualisieren Sie die BeeGFS client packages:

    Für Ubuntu/Debian:

    apt-get update
    apt-get install --only-upgrade beegfs-client
  4. Konfigurieren Sie TLS für den Client. TLS ist erforderlich, um die BeeGFS CLI von Clientknoten aus zu verwenden. Beziehen Sie sich auf den "Konfigurieren Sie TLS für BeeGFS 8 clients" Abschnitt im TLS Implementierungs-Leitfaden.

    Hinweis

    TLS ist für den beegfs-client Dienst zum Einbinden des BeeGFS-Dateisystems nicht erforderlich. TLS ist nur für die Verwendung der BeeGFS-CLI-Tools und anderer administrativer Dienste erforderlich.

  5. Starten Sie den BeeGFS Client Service:

    systemctl start beegfs-client

    Falls die Einbindung von BeeGFS fehlschlägt, überprüfen Sie das Systemprotokoll auf Fehler. Wenn Meldungen wie „Vorgang kann ohne funktionierenden Root-Metadatenknoten nicht fortgesetzt werden“ oder „Remote-E/A-Fehler“ angezeigt werden, wurde der BeeGFS 7 Import möglicherweise nicht erfolgreich abgeschlossen. Wenden Sie sich für Unterstützung an den NetApp Support.

  6. (Optional) Installieren und konfigurieren Sie das neue beegfs CLI-Tool auf Clientknoten oder anderen Systemen, auf denen Sie BeeGFS-Verwaltungsbefehle ausführen möchten:

    1. Installieren Sie das beegfs-tools Paket:

      Für Ubuntu/Debian:

    apt-get install beegfs-tools
    1. Konfigurieren Sie TLS für das beegfs Tool. TLS ist erforderlich, um die BeeGFS CLI von einem Clientknoten aus zu verwenden. Siehe den "Konfigurieren Sie TLS für BeeGFS 8 clients" Abschnitt im TLS Implementierungs-Leitfaden.

Überprüfen Sie das Upgrade

Nach Abschluss des Upgrades auf BeeGFS 8 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 einem einwandfreien 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.