Überlegungen zur NFS 3.0-Leistung (Network File System) in Azure Blob Storage
Blob Storage unterstützt jetzt das NFS 3.0-Protokoll (Network File System). Dieser Artikel enthält Empfehlungen, mit deren Hilfe Sie die Leistung Ihrer Speicheranforderungen optimieren können. Weitere Informationen zur Unterstützung von NFS 3.0 für Azure Blob Storage finden Sie unter Unterstützung des NFS-Protokolls (Network File System 3.0) 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 durch Verwenden von mehr Clients einen höheren Durchsatz erzielen. Die Maximalwerte für eingehende und ausgehende Daten für das Speicherkonto finden Sie unter Skalierbarkeits- und Leistungsziele für Standardspeicherkonten.
Das folgende Diagramm zeigt, wie die Bandbreite zunimmt, wenn Sie mehr Clients hinzufügen. In diesem Diagramm handelt es sich bei einem Client um einen virtuellen Computer (VM) mit einem Speicherkonto vom Standardspeicher vom Typ „Standard, Universell V2“.
Das folgende Diagramm zeigt denselben Effekt bei Anwendung auf ein Premium-Blockblobspeicherkonto.
Verwenden von Premium-Blockblobspeicherkonten für kleine Anwendungen
Nicht alle Anwendungen lassen sich durch Hinzufügen von mehr Clients hochskalieren. Für solche Anwendungen bietet das Azure-Premium-Blockblob-Speicherkonto konsistente hohe Transaktionsraten mit niedriger Latenz. Das Premium-Blockblob-Speicherkonto kann die maximale Bandbreite mit weniger Threads und Clients erreichen. Ein 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 in der erreichten Bandbreite zwischen Speicherkonten mit der Leistungsstufe „Premium“ und „Standard“. In dem Maß, in dem die Anzahl von Clients steigt, verringert sich der Unterschied.
Optimieren der Vorauslesegröße zur Verbesserung des Lesedurchsatzes bei großen Dateien
Mit dem Kernelparameter „read_ahead_kb“ wird die Menge der zusätzlichen Daten angegeben, die nach Erfüllung einer bestimmten Leseanforderung gelesen werden sollen. Sie können den Wert für diesen Parameter auf 16 MiB erhöhen, um den Lesedurchsatz bei großen Dateien zu verbessern.
export AZMNT=/your/container/mountpoint
echo 16384 > /sys/class/bdi/0:$(stat -c "%d" $AZMNT)/read_ahead_kb
Vermeiden von häufigem Überschreiben der Daten
Ein Überschreibungsvorgang dauert länger als ein neuer Schreibvorgang. Das liegt daran, dass ein NFS-Überschreibungsvorgang – insbesondere eine direkte Dateiteilbearbeitung – eine Kombination aus mehreren zugrunde liegenden Blobvorgängen ist: ein Lesevorgang, ein Änderungsvorgang und ein Schreibvorgang. Aus diesem Grund ist eine Anwendung, die häufige direkte Bearbeitungen erfordert, für NFS-fähige Blobspeicherkonten nicht geeignet.
Bereitstellen von Azure HPC Cache für Anwendungen, bei denen die Latenz eine wichtige Rolle spielt
Einige Anwendungen erfordern möglicherweise zusätzlich zu hohem Durchsatz eine niedrige Latenz. Sie können Azure HPC Cache bereitstellen, um die Latenz erheblich zu verbessern. Weitere Informationen finden Sie unter Latenz im Blobspeicher.
Erhöhen der Anzahl von TCP-Verbindungen
Sie können mithilfe der Bereitstellungsoption nconnect
eine höhere aggregierte Lese- und Schreibleistung aus einer einzelnen VM erzielen – 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 nutzen können. Sie können mithilfe der Option nconnect
im Bereitstellungsbefehl die Anzahl der TCP-Verbindungen angeben, 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
).
Wichtig
Obwohl die neuesten Linux-Distributionen nconnect vollständig unterstützen, sollten Sie diese Option nur verwenden, wenn es für Ihren Kernel Azure nconnect-Unterstützung gibt. Die Verwendung der Bereitstellungsoption nconnect
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 für die meisten der neuesten Ubuntu-Kernels verfügbar, die bei virtuellen Azure-Computern verwendet werden können. Führen Sie den folgenden Befehl aus, um herauszufinden, ob Azure nconnect-Unterstützung für Ihren Kernel verfügbar ist.
[ -e /sys/module/sunrpc/parameters/enable_azure_nconnect ] && echo "Yes" || echo "No"
Wenn Azure nconnect-Unterstützung für Ihren Kernel verfügbar ist, wird Yes
in der Konsole ausgegeben. Andernfalls wird 'No
in der Konsole ausgegeben.
Wenn 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 zu Best Practices
Verwenden Sie VMs mit ausreichender Netzwerkbandbreite.
Verwenden Sie mehrere Bereitstellungspunkte, wenn Ihre Workloads dies zulassen.
Verwenden Sie so viele Threads wie möglich.
Verwenden Sie große Blöcke.
Führen Sie Speicheranforderungen von einem Client aus, der sich in derselben Region befindet wie das Speicherkonto. Damit lässt sich die Netzwerklatenz verbessern.
Nächste Schritte
Weitere Informationen zur Unterstützung von NFS 3.0 für Azure Blob Storage finden Sie unter Unterstützung des NFS-Protokolls (Network File System 3.0) für Azure Blob Storage.
Informationen zu den ersten Schritten finden Sie unter Einbinden von Blob-Speicher mithilfe des NFS 3.0-Protokolls (Network File System).