Linux-NFS-Clients optimieren

Auf dieser Seite wird beschrieben, wie Sie Linux-NFS-Clients optimieren, die NetApp Volumes-Exporte einbinden. Bei vielen Arbeitslasten ist keine Optimierung erforderlich. Sofern Sie keinen höheren Durchsatz, mehr IOPS, eine geringere Metadatenlast auf dem Volume oder ein bestimmtes Caching-Verhalten benötigen, verwenden Sie den Mount-Befehl aus derGoogle Cloud -Konsole.

Weitere Informationen zu Verbindungsschritten, Einrichtung der Exportrichtlinie und Bereitstellungsbefehlen finden Sie unter NFS-Clients verbinden.

Clients konfigurieren

Konfigurieren Sie die Linux-NFS-Einstellungen in der folgenden Reihenfolge:

  1. Kernel-Nebenläufigkeit: Legen Sie vor dem Bereitstellen des Dateisystems die Anzahl der NFS-Anforderungsslots (Slottabelleneinträge für NFSv3 oder Sitzungsslots für NFSv4.1) fest. Wenn Sie Einstellungen ändern, müssen Sie das Dateisystem neu einbinden. Weitere Informationen finden Sie unter Linux-NFS-Nebenläufigkeit.

  2. Mount-Optionen: Wählen Sie beim Mounten die Protokollversion, die E/A-Größe, die Anzahl der TCP-Verbindungen, die Sperrung und die Cache-bezogenen Optionen aus. Weitere Informationen finden Sie unter Linux-NFS-Bereitstellungsoptionen.

  3. Read-ahead: Passen Sie das sequenzielle Read-Ahead-Prefetching pro Mount-Point an, nachdem das Volume bereitgestellt wurde. Weitere Informationen finden Sie unter Linux NFS read-ahead.

In der folgenden Tabelle sind diese Konfigurationsschritte zusammengefasst:

Schritt Wann Was wird gesteuert? Konfiguration Leitfaden
1 Vor der ersten Bereitstellung oder vor der erneuten Bereitstellung Ausstehende RPC-Vorgänge pro TCP-Verbindung; NFSv4.1-Befehle pro Sitzung /etc/sysctl.conf,
/etc/modprobe.d/
Linux-NFS-Nebenläufigkeit
2 Bei der Bereitstellung Protokoll, E/A-Übertragungsgröße, Anzahl der Verbindungen, Sperrung und Attributcache mount -o, /etc/fstab Linux-NFS-Bereitstellungsoptionen
3 Nach der Bereitstellung Sequenzielles Lesen von Prefetch /sys/class/bdi/.../read_ahead_kb, udev-Regeln Linux NFS-Read-Ahead

Zusammenwirken der Einstellungen

Der Linux-Kernel definiert die Parallelität pro Verbindung (Schritt 1 in der vorherigen Tabelle). Mit der Mount-Option nconnect (Schritt 2 in der vorherigen Tabelle) können Sie mehrere TCP-Verbindungen von einem Client zur selben Volume-IP-Adresse öffnen.

Die ungefähre Anzahl gleichzeitiger Nutzer für einen Client wird so berechnet:

(slots per connection) × (nconnect value)

Jede TCP-Verbindung zu einem NetApp Volumes-NFS-Endpunkt unterstützt bis zu 128 ausstehende Vorgänge pro Verbindung für NFSv3. Bei NFSv4.1 werden auch Grenzwerte auf Sitzungsebene ausgehandelt. Eine einzelne TCP-Verbindung kann die effektive Parallelität unter das Sitzungsmaximum begrenzen. Weitere Informationen finden Sie unter Linux – NFS-Nebenläufigkeit.

Wenn mehrere Clients dieselbe Volume-IP-Adresse einbinden, verwenden Sie ein niedrigeres Slotlimit pro Client, damit die Gesamtzahl der ausstehenden Vorgänge in der Clientflotte innerhalb der empfohlenen Grenzwerte bleibt.

Sie konfigurieren den Read-Ahead-Wert pro Bereitstellungspunkt (Schritt 3 in der vorherigen Tabelle). Er hängt von der Bereitstellungsoption rsize und den Standardeinstellungen der Linux-Distribution ab. Einige Distributionen verwenden unabhängig von rsize einen festen Read-Ahead-Wert von 128 KiB, was die Leistung beim sequenziellen Lesen beeinträchtigen kann, bis Sie den Wert anpassen.

Mount-Optionen und Kerneleinstellungen ändern nicht die Exportrichtlinien, die Kerberos-Konfiguration, die Firewallanforderungen oder die Durchsatz- und IOPS-Grenzwerte auf Volume-Serviceebene.

Ausgangspunkte für Arbeitslasten

Die folgende Tabelle enthält einige Ausgangspunkte. Prüfen Sie die Einstellungen mit Ihrer Anwendung, Linux-Distribution und Ihrem Netzwerkpfad.

Arbeitslast Kernel-Nebenläufigkeit Bereitstellungsoptionen Read-Ahead
Für allgemeine Zwecke Standardeinstellung des Betriebssystems Anleitung zum Einbinden aus der Google Cloud Console verwenden Standardeinstellung des Betriebssystems
Einzelne VM, hoher Durchsatz/IOPS
  • Tabelle mit Slots pro Verbindung auf maximal 128 Einträge begrenzen
  • Legen Sie für NFSv4.1 max_session_slots auf den maximalen Serverwert fest.
  • Verwenden Sie nconnect=2 oder höher, wenn Sie mehr als 128 ausstehende Vorgänge benötigen.
  • nconnect=8 bis nconnect=16
  • rsize und wsize anpassen
Optimieren, wenn Arbeitslasten durch sequenzielle Lesevorgänge begrenzt werden
Viele Clients (EDA/HPC/Renderfarm)
  • Wenige Slots pro Client (z. B. 8)
  • Gesamtzahl der Slots pro Volume-IP unter den empfohlenen Grenzwerten halten
  • Häufig NFSv3
  • nconnect nicht vorhanden
  • Clients auf mehrere Volume-IPs für Volumes mit großer Kapazität verteilen
Oft höher bei großen, statischen Datasets
Kerberos NFSv4.1
  • Tune max_session_slots
  • nconnect ist nicht leistungsstark
  • sec=krb5, krb5i oder krb5p
  • Nicht mit nconnect kombinieren
Nach Bedarf für sequenzielle Lesevorgänge
NFSv3 ohne Advisory Locks Standardeinstellung des Betriebssystems
  • vers=3, nolock, wenn Sie keinen Schlossmanager verwenden
  • Weitere Informationen finden Sie unter NFS-Clients verbinden.
Nach Bedarf

Feinabstimmung messen und validieren

Führen Sie nach der Aktualisierung der Clienteinstellungen die folgenden Schritte aus:

  • Führen Sie nfsiostat, mountstats und nfsstat auf dem Client aus. Weitere Informationen finden Sie unter Leistung überwachen.

  • Vergleichen Sie Ihre Ergebnisse mit Leistungsbenchmarks. Für diese Benchmarks wurden nconnect=16, rsize=65536 und wsize=65536 für einige NFSv3-Tests unter Red Hat Enterprise Linux 9 verwendet.

Durch die Optimierung des Clients wird die Effizienz der Nutzung des Netzwerkpfads zum Volume für eine VM verbessert. Die Ergebnisse können weiterhin durch die Volume-Kapazität, das Serviceniveau, die Speicherpoollimits und die Größe der Compute Engine-VM eingeschränkt werden.

Nächste Schritte