Best Practices für leistungsfähiges SMB in Azure NetApp Files

Dieser Artikel enthält Informationen und Best Practices bezüglich der Leistung von SMB für Azure NetApp Files.

SMB Multichannel

SMB Multichannel ist in SMB-Freigaben standardmäßig aktiviert. Bei allen SMB-Freigaben, die vor vorhandenen SMB-Volumes erstellt wurden, wurde das Feature aktiviert, und bei allen neu erstellten Volumes ist das Feature zum Zeitpunkt der Erstellung ebenfalls aktiviert.

Alle SMB-Verbindungen, die vor der Featureaktivierung erstellt wurden, müssen zurückgesetzt werden, um die Vorteile der SMB Multichannel-Funktionalität nutzen zu können. Zum Zurücksetzen können Sie die Verbindung mit der SMB-Freigabe trennen und wiederherstellen.

Windows unterstützt SMB Multichannel seit Windows 2012, um eine optimale Leistung zu erzielen. Weitere Informationen finden Sie unter Bereitstellen von SMB Multichannel und Grundlagen von SMB Multichannel.

Vorteile von SMB Multichannel

Das SMB Multichannel-Feature ermöglicht einem SMB3-Client das Einrichten eines Pools von Verbindungen über eine einzelne Netzwerkschnittstellenkarte (NIC) oder über mehrere NICs und deren Verwendung zum Senden von Anforderungen für eine einzelne SMB-Sitzung. Im Gegensatz dazu erfordern SMB1 und SMB2, dass der Client eine Verbindung herstellt und den gesamten SMB-Datenverkehr für eine Sitzung über diese Verbindung sendet. Diese Einzelverbindung schränkt die allgemeine Protokollleistung ein, die mit einem einzelnen Client erreicht werden kann.

Leistung von SMB Multichannel

Die folgenden Tests und Diagramme veranschaulichen die Leistung von SMB Multichannel bei Einzelinstanzworkloads.

Zufällige E/A

Auf dem Client war SMB Multichannel deaktiviert, während die reinen 4-KiB-Lese- und -Schreibtests mit FIO und einem 40-GiB-Arbeitssatz durchgeführt wurden. Die SMB-Freigabe wurde zwischen den einzelnen Tests getrennt, wobei die Anzahl der SMB-Clientverbindungen pro RSS-Netzwerkschnittstellen in Schritten zwischen den Einstellungen 1, 4, 8, 16 und set-SmbClientConfiguration -ConnectionCountPerRSSNetworkInterface <count> erhöht wurde. Die Tests zeigen, dass die Standardeinstellung 4 für E/A-intensive Workloads ausreichend ist. Die Auswirkungen der Erhöhung auf 8 und 16 sind vernachlässigbar.

Der Befehl netstat -na | findstr 445 belegte, dass bei den Schritten von 1 auf 4 auf 8 und auf 16 zusätzliche Verbindungen hergestellt wurden. Bei jedem Test wurden vier CPU-Kerne vollständig für SMB genutzt, was auch von der Statistik Per Processor Network Activity Cycles von perfmon bestätigt wurde (nicht in diesem Artikel enthalten).

Chart that shows random I/O comparison of SMB Multichannel.

Der virtuelle Azure-Computer wirkt sich nicht auf die Speicher-E/A-Limits von SMB (und NFS) aus. Wie im folgenden Diagramm dargestellt, ist beim Instanztyp „D32ds“ die Rate für Speicher-IOPS mit Zwischenspeicherung auf 308.000 und für Speicher-IOPS ohne Zwischenspeicherung auf 51.200 beschränkt. Das obige Diagramm zeigt jedoch deutlich mehr E/A-Vorgänge über SMB.

Chart that shows random I/O comparison test.

Sequenzielle E/A

Auch mit sequenziellen 64-KiB-E/A-Zugriffen wurden Tests durchgeführt, die den zuvor beschriebenen Tests mit zufälligen E/A-Zugriffen ähneln. Obwohl die Zunahme der Anzahl der Clientverbindungen pro RSS-Netzwerkschnittstelle über 4 hinaus keine merkliche Auswirkung auf zufällige E/A hatte, gilt dies nicht für die sequenzielle E/A. Wie im folgenden Diagramm dargestellt, führt jede Erhöhung zu einer entsprechenden Steigerung des Lesedurchsatzes. Der Schreibdurchsatz blieb aufgrund der Einschränkungen der Netzwerkbandbreite durch Azure für jeden Instanztyp und jede Instanzgröße gleich.

Chart that shows throughput test comparison.

Azure legt für jeden Typ/jede Größe von virtuellen Computern Limits für die Netzwerkrate fest. Das Ratenlimit wird nur auf ausgehenden Datenverkehr angewandt. Die Anzahl der auf einem virtuellen Computer vorhandenen NICs hat keinen Einfluss auf die Gesamtbandbreite, die für den Computer verfügbar ist. Für den Instanztyp D32ds wird beispielsweise ein Netzwerklimit von 16.000 MBit/s (2.000 MiB/s) erzwungen. Wie das Diagramm für sequenzielle E/A oben zeigt, wirkt sich das Limit auf den ausgehenden Datenverkehr (Schreibvorgänge), aber nicht auf Multichannel-Lesevorgänge aus.

Chart that shows sequential I/O comparison test.

SMB-Signierung

Das SMB-Protokoll stellt die Grundlage für die Datei- und Druckfreigabe sowie andere Netzwerkvorgänge wie die Windows-Remoteverwaltung dar. Um Man-in-the-Middle-Angriffe zu verhindern, die SMB-Pakete während der Übertragung ändern, unterstützt das SMB-Protokoll das digitale Signieren von SMB-Paketen.

SMB Signing wird für alle SMB-Protokollversionen unterstützt, die von Azure NetApp Files unterstützt werden.

Leistungsauswirkungen der SMB-Signierung

SMB Signing wirkt sich negativ auf die SMB-Leistung aus. Neben anderen möglichen Ursachen von Leistungsminderungen beansprucht das digitale Signieren jedes Pakets eine zusätzliche clientseitige CPU, wie die folgende perfmon-Ausgabe zeigt. In diesem Fall ist Kern 0 für SMB verantwortlich, also auch für SMB Signing. Ein Vergleich mit den Zahlen für sequenzielle Lesevorgänge ohne Multichannel im vorherigen Abschnitt zeigt, dass SMB Signing den Gesamtdurchsatz von 875 MiB/s auf ungefähr 250 MiB/s senkt.

Chart that shows SMB Signing performance impact.

Leistung für eine einzelne Instanz mit einem 1-TB-Dataset

Um Ihnen einen ausführlicheren Einblick in Workloads mit einer Mischung aus Lese- und Schreibvorgängen zu geben, ist in den folgenden beiden Diagrammen die Leistung eines einzelnen Cloudvolumes (50 TB) mit dem Servicelevel „Ultra“ und einem Dataset von 1 TB und SMB Multichannel (4) dargestellt. Es wurde eine optimale E/A-Tiefe (IODepth) von 16 verwendet. Zudem wurden Parameter für flexible E/A-Zugriffe (Flexible IO, FIO) genutzt, um die vollständige Verwendung der Netzwerkbandbreite (numjobs=16) sicherzustellen.

Im folgenden Diagramm sind die Ergebnisse für 4.000 zufällige E/A-Zugriffe bei einer einzelnen VM-Instanz und einer Mischung aus Lese- und Schreibvorgängen in 10-Prozent-Intervallen dargestellt:

Chart that shows Windows 2019 standard _D32ds_v4 4K random IO test.

Im folgenden Diagramm sind die Ergebnisse für sequenzielle E/A-Zugriffe dargestellt:

Chart that shows Windows 2019 standard _D32ds_v4 64K sequential throughput.

Leistung beim horizontalen Aufskalieren mit fünf VMs bei einem 1-TB-Dataset

Bei diesen Tests mit fünf virtuellen Computern wird dieselbe Testumgebung wie bei der einzelnen VM verwendet, und jeder Prozess schreibt in seine eigene Datei.

Im folgenden Diagramm sind die Ergebnisse für zufällige E/A-Zugriffe dargestellt:

Chart that shows Windows 2019 standard _D32ds_v4 4K 5-instance randio IO test.

Im folgenden Diagramm sind die Ergebnisse für sequenzielle E/A-Zugriffe dargestellt:

Chart that shows Windows 2019 standard _D32ds_v4 64K 5-instance sequential throughput.

Überwachen von Hyper-V-Ethernet-Adaptern

Eine Strategie beim Testen mit FIO ist das Festlegen von numjobs=16. Hierbei wird für jeden Auftrag das Forken in 16 spezifische Instanzen durchgeführt, um für den Microsoft Hyper-V-Netzwerkadapter eine Maximierung zu erzielen.

Sie können die einzelnen Adapter im Windows-Systemmonitor auf Aktivitäten überprüfen, indem Sie auf Systemmonitor > Leistungsindikatoren hinzufügen > Netzwerkschnittstelle > Microsoft Hyper-V-Netzwerkadapter klicken.

Screenshot that shows Performance Monitor Add Counter interface.

Wenn auf Ihren Volumes Datenverkehr verarbeitet wird, können Sie in Windows-Systemmonitor Ihre Adapter überwachen. Wenn Sie nicht alle 16 virtuellen Adapter verwenden, erzielen Sie ggf. keine Maximierung Ihrer Netzwerkbandbreitenkapazität.

Screenshot that shows Performance Monitor output.

SMB-Verschlüsselung

Dieser Abschnitt erklärt die SMB-Verschlüsselung (SMB 3.0 und SMB 3.1.1).

SMB-Verschlüsselung sorgt für End-to-End-Verschlüsselung von SMB-Daten und schützt Daten vor Lauschangriffen in nicht vertrauenswürdigen Netzwerken. Die SMB-Verschlüsselung wird ab SMB 3.0 unterstützt.

Wenn eine Anforderung an den Speicher gesendet wird, verschlüsselt der Client die Anforderung, und der Speicher entschlüsselt sie wieder. Antworten werden analog dazu vom Server verschlüsselt und vom Client entschlüsselt.

Die SMB-Verschlüsselung wird von Windows 10, Windows 2012 und höheren Versionen unterstützt.

SMB-Verschlüsselung und Azure NetApp Files

Die SMB-Verschlüsselung wird bei Azure NetApp Files auf Freigabeebene aktiviert. Von SMB 3.0 wird der AES-CCM-Algorithmus eingesetzt, von SMB 3.1.1 der AES-GCM-Algorithmus.

Die SMB-Verschlüsselung ist nicht erforderlich. Sie wird daher nur für eine bestimmte Freigabe aktiviert, wenn der Benutzer dies bei Azure NetApp Files anfordert. Azure NetApp Files-Freigaben werden niemals für das Internet verfügbar gemacht. Der Zugriff ist nur innerhalb eines bestimmten VNET per VPN oder ExpressRoute möglich. Dadurch sind Azure NetApp Files-Freigaben von Natur aus sicher. Die Entscheidung, die SMB-Verschlüsselung zu aktivieren, liegt allein beim Benutzer. Beachten Sie die zu erwartenden Leistungseinbußen, bevor Sie dieses Feature aktivieren.

Auswirkungen der SMB-Verschlüsselung auf Clientworkloads

Die SMB-Verschlüsselung wirkt sich zwar sowohl auf den Client (CPU-Mehraufwand für das Verschlüsseln und Entschlüsseln von Nachrichten) als auch auf den Speicher (Verringerung des Durchsatzes) aus, in der folgenden Tabelle werden allerdings nur die Auswirkungen auf den Speicher veranschaulicht. Es empfiehlt sich, die verschlüsselungsbedingten Leistungsauswirkungen mit Ihren eigenen Anwendungen zu testen, bevor Sie Workloads in der Produktion bereitstellen.

E/A-Profil Auswirkung
Lese- und Schreibworkloads 10 bis 15 Prozent
Metadatenintensiv 5 %

Beschleunigter Netzwerkbetrieb

Um die maximale Leistung zu erzielen, empfiehlt es sich, nach Möglichkeit Beschleunigter Netzwerkbetrieb auf Ihren VMs zu konfigurieren. Beachten Sie dabei Folgendes:

  • Das Azure-Portal aktiviert „Beschleunigter Netzwerkbetrieb“ standardmäßig für virtuelle Computer, die dieses Feature unterstützen. Bei anderen Bereitstellungsmethoden, wie z. B. Ansible und ähnliche Konfigurationstools, erfolgt dies jedoch möglicherweise nicht. Wenn „Beschleunigter Netzwerkbetrieb“ nicht aktiviert wird, kann die Leistung eines Computers beeinträchtigt werden.
  • Wenn „Beschleunigter Netzwerkbetrieb“ für die Netzwerkschnittstelle eines virtuellen Computers nicht aktiviert ist (aufgrund des Instanztyps oder der Größe), bleibt dieses Feature auch bei größeren Instanztypen deaktiviert. In diesen Fällen ist ein manueller Eingriff erforderlich.
  • Es ist nicht notwendig, den beschleunigten Netzwerkbetrieb für die NICs im dedizierten Subnetz von Azure NetApp Files festzulegen. Beschleunigter Netzwerkbetrieb ist eine Funktion, die nur für Azure-VMs gilt. Azure NetApp Files-NICs sind per Design optimiert.

RSS

Azure NetApp Files unterstützt die empfangsseitige Skalierung (Receive-Side Scaling, RSS).

Wenn SMB Multichannel aktiviert ist, stellt ein SMB3-Client mehrere TCP-Verbindungen mit dem SMB-Server von Azure NetApp Files über eine Netzwerkschnittstellenkarte (Network Interface Card, NIC) her, die Einzel-RSS-fähig ist.

Wenn Sie wissen möchten, ob die NICs Ihres virtuellen Azure-Computers RSS unterstützen, führen Sie den Befehl Get-SmbClientNetworkInterface wie folgt aus, und überprüfen Sie das Feld RSS Capable:

Screenshot that shows RSS output for Azure virtual machine.

Mehrere NICs auf SMB-Clients

Sie sollten nicht mehrere NICs auf Ihrem Client für SMB konfigurieren. Der SMB-Client passt die Anzahl der NICs an die vom SMB-Server zurückgegebene Anzahl an. Auf jedes Speichervolume kann nur von genau einem einzigen Speicherendpunkt aus zugegriffen werden. Das bedeutet, dass für jede SMB-Beziehung nur eine NIC verwendet wird.

Wie die Ausgabe von Get-SmbClientNetworkInterace unten zeigt, verfügt der virtuelle Computer über zwei Netzwerkschnittstellen: 15 und 12. Wie unter dem folgenden Befehl Get-SmbMultichannelConnection zu sehen ist, wird trotz zweier RSS-fähiger NICs nur die Schnittstelle 12 in Verbindung mit der SMB-Freigabe verwendet. Schnittstelle 15 wird nicht verwendet.

Screeshot that shows output for RSS-capable NICS.

Nächste Schritte