25 NFS Ganesha #
NFS Ganesha ist ein NFS-Server, der in einem Benutzeradressenbereich statt 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. Die Installationsanweisungen finden Sie im Abschnitt 8.3.6, „Bereitstellen von NFS Ganesha“.
Angesichts des erhöhten Protokoll-Overheads und der zusätzlichen Latenz durch zusätzliche Netzwerk-Hops zwischen Client und Speicher kann ein Zugriff auf Ceph über einen NFS-Gateway die Anwendungsleistung im Vergleich zu einem nativen CephFS erheblich senken.
Jeder NFS-Ganesha-Dienst besteht aus einer Konfigurationshierarchie, die Folgendes enthält:
Einen Bootstrap
ganesha.conf
Ein gemeinsames RADOS-Konfigurationsobjekt pro Service
Ein RADOS-Konfigurationsobjekt pro Export
Die Bootstrap-Konfiguration ist die Minimalkonfiguration zum Starten des nfs-ganesha
-Daemons innerhalb eines Containers. Jede Bootstrap-Konfiguration enthält eine %url
-Anweisung, die jede zusätzliche Konfiguration aus dem gemeinsamen RADOS-Konfigurationsobjekt enthält. Das gemeinsame Konfigurationsobjekt kann zusätzliche %url
-Anweisungen für jeden der NFS-Exporte enthalten, die in den RADOS-Konfigurationsobjekten definiert sind.
25.1 Erstellen eines NFS-Service #
Die Spezifikation der Bereitstellung von Ceph-Services erfolgt am besten durch Erstellen einer YAML-formatierten Datei mit der Spezifikation der Services, die Sie bereitstellen möchten. Sie können für jeden Servicetyp eine eigene Spezifikationsdatei erstellen, oder Sie geben mehrere (oder alle) Servicetypen in einer Datei an.
Je nachdem, wofür Sie sich entschieden haben, müssen Sie eine entsprechende YAML-formatierte Datei aktualisieren oder erstellen, um einen NFS-Ganesha-Dienst anzulegen. Weitere Informationen zum Erstellen der Datei finden Sie im Abschnitt 8.2, „Service- und Platzierungsspezifikation“.
Nachdem Sie die Datei aktualisiert oder erstellt haben, erstellen Sie mit folgendem Kommando einen nfs-ganesha
-Dienst:
cephuser@adm >
ceph orch apply -i FILE_NAME
25.2 Starten oder Neustarten von NFS Ganesha #
Durch Starten des NFS-Ganesha-Diensts wird ein CephFS-Dateisystem nicht automatisch exportiert. Erstellen Sie eine Export-Konfigurationsdatei, um ein CephFS-Dateisystem zu exportieren. Weitere Informationen finden Sie in Abschnitt 25.4, „Erstellen eines NFS-Exports“.
Führen Sie zum Starten des NFS-Ganesha-Diensts folgendes Kommando aus:
cephuser@adm >
ceph orch start nfs.SERVICE_ID
Führen Sie für einen Neustart des NFS-Ganesha-Diensts folgendes Kommando aus:
cephuser@adm >
ceph orch restart nfs.SERVICE_ID
Falls Sie nur einen einzelnen NFS-Ganesha-Daemon neu starten möchten, führen Sie folgendes Kommando aus:
cephuser@adm >
ceph orch daemon restart nfs.SERVICE_ID
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 werden die Anforderungen der Clients möglicherweise verzögert, wenn sich NFS im Kulanzzeitraum befindet.
25.3 Auflisten von Objekten im NFS-Wiederherstellungspool #
Listen Sie die Objekte im NFS-Widerherstellungspool mit folgendem Kommando auf:
cephuser@adm >
rados --pool POOL_NAME --namespace NAMESPACE_NAME ls
25.4 Erstellen eines NFS-Exports #
Sie können einen NFS-Export entweder über das Ceph Dashboard oder manuell über die Kommandozeile erstellen. Weitere Informationen zum Exportieren über das Ceph Dashboard finden Sie in Kapitel 7, Verwalten von NFS Ganesha, insbesondere in Abschnitt 7.1, „Erstellen eines NFS-Exports“.
Für einen manuellen NFS-Export erstellen Sie zunächst eine Konfigurationsdatei. Zum Beispiel die Datei /tmp/export-1
mit dem folgenden Inhalt:
EXPORT { export_id = 1; path = "/"; pseudo = "/"; access_type = "RW"; squash = "no_root_squash"; protocols = 3, 4; transports = "TCP", "UDP"; FSAL { name = "CEPH"; user_id = "admin"; filesystem = "a"; secret_access_key = "SECRET_ACCESS_KEY"; } }
Nachdem Sie die Konfigurationsdatei für den neuen Export erstellt und gespeichert haben, führen Sie folgendes Kommando zum Exportieren aus:
rados --pool POOL_NAME --namespace NAMESPACE_NAME put EXPORT_NAME EXPORT_CONFIG_FILE
Beispiel:
cephuser@adm >
rados --pool example_pool --namespace example_namespace put export-1 /tmp/export-1
Der FSAL-Block sollte so geändert werden, dass er die gewünschte cephx
-Benutzer-ID und den geheimen Zugangsschlüssel enthält.
25.5 Überprüfen des NFS-Exports #
NFS v4 erstellt eine Liste von Exporten im Stamm eines Pseudodateisystems. Sie können überprüfen, ob die NFS-Freigaben exportiert werden. Hängen Sie dazu /
des NFS-Ganesha-Serverknotens ein:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint#
ls
/path/to/local/mountpoint cephfs
Standardmäßig konfiguriert cephadm einen NFS-v4-Server. NFS v4 interagiert weder mit rpcbind
noch mit dem mountd
-Daemon. NFS-Client-Tools wie showmount
zeigen keine konfigurierten Exporte an.
25.6 Einhängen des NFS-Exports #
Führen Sie zum Einhängen der exportierten NFS-Freigabe auf einem Client-Host folgendes Kommando aus:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
25.7 Mehrere NFS-Ganesha-Cluster #
Es können mehrere NFS-Ganesha-Cluster definiert werden. Dies ermöglicht:
Getrennte NFS-Ganesha-Cluster für den Zugriff auf CephFS.