Freigeben über


Überlegungen zur Leistung des Netzwerkdateisystems (NETWORK File System, NFS) 3.0 im Azure Blob Storage

Blob Storage unterstützt jetzt das NFS 3.0-Protokoll (Network File System). Dieser Artikel enthält Empfehlungen, die Ihnen helfen, die Leistung Ihrer Speicheranforderungen zu optimieren. Weitere Informationen zur NFS 3.0-Unterstützung für Azure 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

Azure Blob Storage wird linear skaliert, bis der Maximalwert für eingehende und ausgehende Daten für das Speicherkonto erreicht ist. 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) und mit einem standardmäßigen allgemeinen v2-Speicherkonto.

Standardleistung

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

Premium-Leistung

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. Beispiel: Mit einem einzelnen Client kann ein Premium-Blockblob-Speicherkonto 2,3-mal so viel Bandbreite erreichen wie dasselbe Setup 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.

Relative Leistungsfähigkeit

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. Der Grund dafür ist, dass ein NFS-Überschreibvorgang, insbesondere eine partielle Bearbeitung der Datei an Ort und Stelle, eine Kombination aus mehreren zugrunde liegenden blob-Vorgängen ist: Lese-, Änderungs- und Schreibvorgang. Daher ist eine Anwendung, die häufige direkte Bearbeitungen erfordert, nicht für NFS-aktivierte BLOB-Speicherkonten 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 im BLOB-Speicher.

Erhöhen der Anzahl der TCP-Verbindungen

Sie können die nconnect Bereitstellungsoption verwenden, um eine höhere aggregierte Lese- und Schreibleistung von einer einzelnen VM zu erhalten, aber nur, wenn Ihr Linux-Kernel Azure nconnect-Unterstützung hat.

nconnect ist eine clientseitige Linux-Bereitstellungsoption, mit der Sie mehrere TCP-Verbindungen 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

Während die neuesten Linux-Distributionen nconnect vollständig unterstützen, sollten Sie diese Option nur verwenden, wenn Ihr Kernel Über Azure nconnect-Unterstützung verfügt. Die Verwendung der nconnect-Option ohne Azure nconnect-Unterstützung verringert den Durchsatz, verursacht mehrere Timeouts und führt dazu, dass Befehle wie READDIR und READIRPLUS falsch funktionieren.

Azure nconnect-Unterstützung ist mit den meisten der neuesten Ubuntu-Kernel verfügbar, die mit virtuellen Azure-Computern verwendet werden können. Um herauszufinden, ob die Azure nconnect-Unterstützung 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 die Azure nconnect-Unterstützung für Ihren Kernel verfügbar ist, wird Yes in die Konsole gedruckt. Andernfalls wird 'No in der Konsole ausgegeben.

Wenn die Azure nconnect-Unterstützung verfügbar ist, aktivieren Sie sie, indem Sie den folgenden Befehl ausführen.

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

Weitere Empfehlungen für 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. Dies kann die Netzwerklatenz verbessern.

Nächste Schritte