Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
Bezieht sich auf SUSE Enterprise Storage 5

14 NFS Ganesha: Exportieren von Ceph-Daten über NFS

NFS Ganesha ist ein NFS-Server (weitere Informationen hierzu finden Sie unter Sharing File Systems with NFS (Freigabe von Dateisystemen mit NFS) ), der in einem Benutzeradressenbereich anstatt als Teil des Betriebssystem-Kernels ausgeführt wird. Mit NFS Ganesha binden Sie Ihren eigenen Speichermechanismus ein, wie zum Beispiel Ceph, und greifen von einem beliebigen NFS Client darauf zu.

S3 Buckets werden pro Benutzer zu NFS exportiert, beispielsweise über den Pfad GANESHA_NODE:/USERNAME/BUCKETNAME.

Ein CephFS wird standardmäßig über den Pfad GANESHA_NODE:/cephfs exportiert.

14.1 Installation

Die Installationsanweisungen finden Sie unter Kapitel 12, Installation von NFS Ganesha.

14.2 Konfiguration

Eine Liste aller Parameter, die in der Konfigurationsdatei verfügbar sind, finden Sie unter:

  • man ganesha-config

  • man ganesha-ceph-config für Optionen zur Dateisystem-Abstraktionsschicht (File System Abstraction Layer, FSAL) zu CephFS.

  • man ganesha-rgw-config für FSAL-Optionen zu Object Gateway.

Dieser Abschnitt enthält Informationen, die Ihnen beim Konfigurieren des NFS Ganesha-Servers für den Export der Cluster-Daten über Object Gateway und CephFS helfen.

Die Konfiguration von NFS Ganesha wird gesteuert durch /etc/ganesha/ganesha.conf. Beachten Sie, dass Änderungen an dieser Datei überschrieben werden, wenn DeepSea-Phase 4 ausgeführt wird. Bearbeiten Sie zum dauerhaften Ändern der Einstellungen die Datei /srv/salt/ceph/ganesha/files/ganesha.conf.j2, die sich am Salt Master befindet.

14.2.1 Export-Abschnitte

In diesem Abschnitt wird erläutert, wie die EXPORT-Abschnitte in ganesha.conf konfiguriert werden.

EXPORT
{
  Export_Id = 1;
  Path = "/";
  Pseudo = "/";
  Access_Type = RW;
  Squash = No_Root_Squash;
  [...]
  FSAL {
    Name = CEPH;
  }
}

14.2.1.1 Export-Hauptabschnitt

Export_Id

Jeder Export benötigt eine eindeutige "Export_Id" (obligatorisch).

Path

Exportpfad im entsprechenden CephFS Pool (obligatorisch). Damit können Unterverzeichnisse vom CephFS exportiert werden.

Pseudo

Pfad für das NFS-Exportziel (obligatorisch für NFSv4). Damit wird definiert, unter welchem NFS-Exportpfad die exportierten Daten verfügbar sind.

Beispiel: Mit dem Wert /cephfs/ und nach dem Ausführen von

root # mount GANESHA_IP:/cephfs/ /mnt/

Die CephFS-Daten sind im Verzeichnis /mnt/cephfs/ am Client verfügbar.

Access_Type

"RO" für schreibgeschützten Zugriff. Die Standardeinstellung ist "None".

Squash

NFS Squash-Option.

FSAL

Exportieren der Dateisystem-Abstraktionsschicht (File System Abstraction Layer, FSAL). Weitere Informationen hierzu finden Sie in Abschnitt 14.2.1.2, „FSAL-Unterabschnitt“.

14.2.1.2 FSAL-Unterabschnitt

EXPORT
{
  [...]
  FSAL {
    Name = CEPH;
  }
}
Name

Definiert, welches Back-End NFS Ganesha verwendet. Zulässige Werte sind CEPH für CephFS oder RGW für Object Gateway. Je nach Auswahl muss eine role-mds oder role-rgw in der policy.cfg definiert werden.

14.2.2 RGW-Abschnitt

RGW {
  ceph_conf = "/etc/ceph/ceph.conf";
  name = "name";
  cluster = "ceph";
}
ceph_conf

Zeigt auf die Datei ceph.conf. Bei der Bereitstellung mit DeepSea ist es nicht erforderlich, diesen Wert zu ändern.

name

Der Name des Ceph Client-Benutzers. der von NFS Ganesha verwendet wird.

cluster

Der Name des Ceph Clusters. SUSE Enterprise Storage 5 unterstützt derzeit nur einen Cluster-Namen, nämlich standardmäßig ceph.

14.2.3 Ändern der standardmäßigen NFS Ganesha Ports

NFS Ganesha verwendet standardmäßig Port 2049 für NFS und 875 für die Unterstützung von "rquota". Die standardmäßigen Portnummern ändern Sie mit den Optionen NFS_Port und RQUOTA_Port im Abschnitt NFS_CORE_PARAM. Beispiel:

NFS_CORE_PARAM
{
 NFS_Port = 2060;
 RQUOTA_Port = 876;
}

14.3 Benutzerdefinierte NFS Ganesha-Rollen

Sie können NFS Ganesha-Rollen für Cluster Nodes definieren. Diese Rollen werden dann den Nodes in der policy.cfg zugewiesen. Die Rollen ermöglichen Folgendes:

  • Getrennte NFS Ganesha Nodes für den Zugriff auf Object Gateway und CephFS.

  • Zuweisen verschiedener Object Gateway-Benutzer zu NFS Ganesha Nodes.

Mit verschiedenen Object Gateway-Benutzern können NFS Ganesha Nodes auf verschiedene S3 Buckets zugreifen. S3 Buckets werden für die Zugriffskontrolle verwendet. Hinweis: S3 Buckets dürfen nicht mit Ceph Buckets verwechselt werden, die in der CRUSH Map verwendet werden.

14.3.1 Verschiedene Object Gateway-Benutzer für NFS Ganesha

Im folgenden Verfahrensbeispiel für den Salt Master sehen Sie, wie zwei NFS Ganesha-Rollen mit verschiedenen Object Gateway-Benutzern erstellt werden. In diesem Beispiel werden die Rollen gold und silver verwendet, für die DeepSea bereits Beispiele zu Konfigurationsdateien bereitstellt.

  1. Öffnen Sie die Datei /srv/pillar/ceph/stack/global.yml mit einem Editor Ihrer Wahl. Erstellen Sie die Datei, falls noch nicht vorhanden.

  2. Die Datei muss folgende Zeilen enthalten:

    rgw_configurations:
      - rgw
      - silver
      - gold
    ganesha_configurations:
      - silver
      - gold

    Diese Rollen werden später in der policy.cfg zugewiesen.

  3. Erstellen Sie eine Datei /srv/salt/ceph/rgw/users/users.d/gold.yml und fügen Sie folgenden Inhalt hinzu:

    - { uid: "gold1", name: "gold1", email: "gold1@demo.nil" }

    Erstellen sie eine Datei /srv/salt/ceph/rgw/users/users.d/silver.yml und fügen Sie folgenden Inhalt hinzu:

    - { uid: "silver1", name: "silver1", email: "silver1@demo.nil" }
  4. Nun müssen für jede Rolle Schablonen für die ganesha.conf erstellt werden. Die Originalschablone von DeepSea ist ein guter Anfang. Erstellen Sie zwei Kopien:

    root # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 silver.conf.j2
    root # cp ganesha.conf.j2 gold.conf.j2
  5. Für die neuen Rollen sind Schlüsselbunde für den Zugriff auf den Cluster erforderlich. Kopieren Sie ganesha.j2, um den Zugriff zu gewähren:

    root # cp ganesha.j2 silver.j2
    root # cp ganesha.j2 gold.j2
  6. Kopieren Sie den Schlüsselbund für das Object Gateway:

    root # cd /srv/salt/ceph/rgw/files/
    root # cp rgw.j2 silver.j2
    root # cp rgw.j2 gold.j2
  7. Object Gateway benötigt auch die Konfiguration für die verschiedenen Rollen:

    root # cd /srv/salt/ceph/configuration/files/
    root # cp ceph.conf.rgw silver.conf
    root # cp ceph.conf.rgw gold.conf
  8. Weisen Sie die neu erstellten Rollen zu den Cluster Nodes in der Datei /srv/pillar/ceph/proposals/policy.cfg zu:

    role-silver/cluster/NODE1.sls
    role-gold/cluster/NODE2.sls

    Ersetzen Sie NODE1 und NODE2 durch die Namen der Nodes, denen Sie die Rollen zuweisen möchten.

  9. Führen Sie die DeepSea-Phasen 0 bis 4 aus.

14.3.2 Trennen der CephFS- und Object Gateway-FSAL

Im folgenden Verfahrensbeispiel für den Salt Master sehen Sie, wie zwei neue verschiedene Rollen erstellt werden, die CephFS und Object Gateway verwenden:

  1. Öffnen Sie die Datei /srv/pillar/ceph/rgw.sls mit einem Editor Ihrer Wahl. Erstellen Sie die Datei, falls noch nicht vorhanden.

  2. Die Datei muss folgende Zeilen enthalten:

    rgw_configurations:
      ganesha_cfs:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
      ganesha_rgw:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
    
    ganesha_configurations:
      - ganesha_cfs
      - ganesha_rgw

    Diese Rollen werden später in der policy.cfg zugewiesen.

  3. Nun müssen für jede Rolle Schablonen für die ganesha.conf erstellt werden. Die Originalschablone von DeepSea ist ein guter Anfang. Erstellen Sie zwei Kopien:

    root # cd /srv/salt/ceph/ganesha/files/
    root # cp ganesha.conf.j2 ganesha_rgw.conf.j2
    root # cp ganesha.conf.j2 ganesha_cfs.conf.j2
  4. Bearbeiten Sie die Datei ganesha_rgw.conf.j2 und entfernen Sie den Abschnitt:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles='mds') != [] %}
            [...]
    {% endif %}
  5. Bearbeiten Sie die Datei ganesha_cfs.conf.j2 und entfernen Sie den Abschnitt:

    {% if salt.saltutil.runner('select.minions', cluster='ceph', roles=role) != [] %}
            [...]
    {% endif %}
  6. Für die neuen Rollen sind Schlüsselbunde für den Zugriff auf den Cluster erforderlich. Kopieren Sie ganesha.j2, um den Zugriff zu gewähren:

    root # cp ganesha.j2 ganesha_rgw.j2
    root # cp ganesha.j2 ganesha_cfs.j2

    Die Zeile caps mds = "allow *" kann aus der Datei ganesha_rgw.j2 entfernt werden.

  7. Kopieren Sie den Schlüsselbund für das Object Gateway:

    root # cp /srv/salt/ceph/rgw/files/rgw.j2 \
    /srv/salt/ceph/rgw/files/ganesha_rgw.j2
  8. Object Gateway benötigt die Konfiguration für die neue Rolle:

    root # cp /srv/salt/ceph/configuration/files/ceph.conf.rgw \
    /srv/salt/ceph/configuration/files/ceph.conf.ganesha_rgw
  9. Weisen Sie die neu erstellten Rollen zu den Cluster Nodes in der Datei /srv/pillar/ceph/proposals/policy.cfg zu:

    role-ganesha_rgw/cluster/NODE1.sls
    role-ganesha_cfs/cluster/NODE1.sls

    Ersetzen Sie NODE1 und NODE2 durch die Namen der Nodes, denen Sie die Rollen zuweisen möchten.

  10. Führen Sie die DeepSea-Phasen 0 bis 4 aus.

14.4 Starten oder Neustarten von NFS Ganesha

Führen Sie zum Aktivieren und Starten des NFS Ganesha Service folgende Kommandos aus:

root # systemctl enable nfs-ganesha
root # systemctl start nfs-ganesha

Starten Sie NFS Ganesha neu mit:

root # systemctl restart nfs-ganesha

Wenn NFS Ganesha gestartet oder neu gestartet wird, hat es eine Kulanzzeitüberschreitung von 90 Sekunden für NFS v4. Während des Kulanzzeitraums werden neue Anforderungen von Clients aktiv abgelehnt. Somit erfahren Clients möglicherweise eine Verlangsamung ihrer Anforderungen, wenn sich NFS im Kulanzzustand befindet.

14.5 Festlegen des Protokollierumfangs

Sie ändern die standardmäßige Fehlersuchestufe NIV_EVENT durch Bearbeiten der Datei /etc/sysconfig/nfs-ganesha. Ersetzen Sie NIV_EVENT durch NIV_DEBUG oder NIV_FULL_DEBUG. Durch Erhöhen der Protokollausführlichkeit können in den Protokolldateien große Datenmengen produziert werden.

OPTIONS="-L /var/log/ganesha/ganesha.log -f /etc/ganesha/ganesha.conf -N NIV_EVENT"

Nach dem Ändern des Protokollierumfangs ist ein Neustart des Service erforderlich.

14.6 Verifizieren der exportierten NFS-Freigabe

In NFS v3 können Sie überprüfen, ob die NFS-Freigaben im NFS Ganesha Server Node exportiert werden:

root # showmount -e
/ (everything)

14.7 Einhängen der exportierten NFS-Freigabe

Führen Sie zum Einhängen der exportierten NFS-Freigabe (wie in Abschnitt 14.2, „Konfiguration“ konfiguriert) auf einem Client-Host folgendes Kommando aus:

root # mount -t nfs -o rw,noatime,sync \
 nfs_ganesha_server_hostname:/ /path/to/local/mountpoint

14.8 Zusätzliche Ressourcen

Die Originaldokumentation zu NFS Ganesha finden Sie unter https://github.com/nfs-ganesha/nfs-ganesha/wiki/Docs.

Diese Seite drucken