Freigeben über


Überlegungen zur Leistung von Network File System (NFS) 3.0 in Azure Blob Storage

Azure Blob Storage unterstützt jetzt das Network File System (NFS) 3.0-Protokoll. Dieser Artikel enthält Empfehlungen, die Ihnen helfen, die Leistung Ihrer Speicheranforderungen zu optimieren. Weitere Informationen zur NFS 3.0-Unterstützung für Blob Storage finden Sie unter Network File System (NFS) 3.0-Protokollunterstützung für Azure Blob Storage.

Hinzufügen von Clients zum Erhöhen des Durchsatzes

Blob Storage skaliert linear, bis er den maximalen Ausgangs- und Eingangsgrenzwert des Speicherkontos erreicht. Daher können Ihre Anwendungen einen höheren Durchsatz erzielen, indem sie mehr Clients verwenden. Informationen zum Anzeigen von Ausgangs- und Eingangsgrenzwerten für Speicherkonten finden Sie unter Skalierbarkeits- und Leistungsziele für Standardspeicherkonten.

Das folgende Diagramm zeigt, wie die Bandbreite erhöht wird, wenn Sie weitere Clients hinzufügen. In diesem Diagramm ist ein Client ein virtueller Computer (VM) mit einem standardmäßigen allgemeinen v2-Speicherkonto.

Diagramm, das ein Standardleistungsbalkendiagramm zeigt.

Das folgende Diagramm zeigt diesen Effekt, wenn er auf ein Premium-Block-Blob-Speicherkonto angewendet wird.

Diagramm, das ein Premium-Leistungsbalkendiagramm zeigt.

Verwenden von Premium-Block-Blob-Speicherkonten für kleine Anwendungen

Nicht alle Anwendungen können skaliert werden, indem weitere Clients hinzugefügt werden. Für diese Anwendungen bietet das Azure Premium Block Blob Storage-Konto konsistente niedrige Latenz und hohe Transaktionsraten. Das Premium-Blockblob-Speicherkonto kann die maximale Bandbreite mit weniger Threads und Clients erreichen. Mit einem einzelnen Client kann ein Premium-Blockblob-Speicherkonto beispielsweise das 2,3-mal mehr Bandbreite erreichen als dieselbe Einrichtung mit einem Speicherkonto vom Typ „Universell V2“ mit Standardleistung.

Jeder Balken im folgenden Diagramm zeigt den Unterschied bei der erreichten Bandbreite zwischen Premium- und Standardleistungsspeicherkonten. Da sich die Anzahl der Clients erhöht, verringert sich dieser Unterschied.

Diagramm, das ein relatives Leistungsbalkendiagramm zeigt.

Verbessern der Read-Ahead-Größe, um den Durchsatz beim Lesen großer Dateien zu erhöhen.

Der read_ahead_kb Kernelparameter stellt die Menge zusätzlicher Daten dar, die nach der Erfüllung einer bestimmten Leseanforderung gelesen werden sollen. Sie können diesen Parameter auf 16 MiB erhöhen, um den Durchsatz großer Dateien zu verbessern.

export AZMNT=/your/container/mountpoint

echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb

Vermeiden häufiger Überschreibungen von Daten

Es dauert länger, bis ein Überschreibvorgang abgeschlossen ist als ein neuer Schreibvorgang. Ein NFS-Überschreibvorgang, insbesondere eine partielle Datei-Bearbeitung vor Ort, ist eine Kombination aus mehreren zugrunde liegenden Blob-Vorgängen, wie Lese-, Änderungs- und Schreibvorgängen. Daher ist eine Anwendung, die häufige direkte Bearbeitungen erfordert, nicht für NFS-fähige Blob Storage-Konten geeignet.

Bereitstellung des Azure HPC-Caches für latenzempfindliche Anwendungen

Einige Anwendungen erfordern möglicherweise zusätzlich zu hohem Durchsatz eine geringe Latenz. Sie können Azure HPC-Cache bereitstellen, um die Latenz erheblich zu verbessern. Weitere Informationen zur Latenz in Blob Storage.

Erhöhen der Anzahl der TCP-Verbindungen

Sie können die nconnect Bereitstellungsoption verwenden, um eine höhere aggregierte Lese- und Schreibleistung von einem einzelnen virtuellen Computer zu erhalten, aber nur, wenn Ihr Linux-Kernel Über Azure nconnect-Unterstützung verfügt.

Die nconnect Option ist eine clientseitige Linux-Bereitstellungsoption, die Sie für mehrere TCP-Verbindungen (Transmission Control Protocol) zwischen dem Client und dem Blob-Dienstendpunkt verwenden können. Sie können die nconnect Option im Bereitstellungsbefehl verwenden, um die Anzahl der tcp-Verbindungen anzugeben, die Sie erstellen möchten (z. B.: mount -t aznfs -o nconnect=16,sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /nfsdatain).

Von Bedeutung

Obwohl die neuesten Linux-Distributionen nconnect vollständig unterstützen, solltest du diese Option nur verwenden, wenn dein Kernel über Azure nconnect-Unterstützung verfügt. Die Verwendung der nconnect Bereitstellungsoption ohne Azure-nconnect-Unterstützung verringert den Durchsatz, verursacht mehrere Timeouts und bewirkt, dass Befehle wie READDIR und READIRPLUS falsch funktionieren.

Azure-Unterstützung nconnect ist mit den meisten der neuesten Ubuntu-Kernel verfügbar, die Sie mit Azure-VMs verwenden können. Um herauszufinden, ob der Azure-Support nconnect für Ihren Kernel verfügbar ist, führen Sie den folgenden Befehl aus:

[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"

Wenn Azure nconnect-Unterstützung für deinen Kernel verfügbar ist, wird Yes zur Konsole ausgegeben. Andernfalls wird No in der Konsole ausgegeben.

Wenn der Azure-Support nconnect verfügbar ist, führen Sie den folgenden Befehl aus, um ihn zu aktivieren:

echo Y > /sys/module/sunrpc/parameters/enable_azure_nconnect

Weitere bewährte Methoden

  • Verwenden Sie virtuelle Computer mit ausreichender Netzwerkbandbreite.
  • Verwenden Sie mehrere Einhängepunkte, wenn Ihre Workloads es zulassen.
  • Verwenden Sie so viele Threads wie möglich.
  • Verwenden Sie große Blockgrößen.
  • Stellen Sie Speicheranforderungen von einem Client vor, der sich in derselben Region wie das Speicherkonto befindet, um die Netzwerklatenz zu verbessern.