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, ist das Feature aktiviert. 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 mit Einstellungen für die Inkremente der SMB-Clientverbindungsanzahl pro RSS-Netzwerkschnittstelle von 1, 4, 8, 16 und set-SmbClientConfiguration -ConnectionCountPerRSSNetworkInterface <count> zwischen den einzelnen Tests getrennt. 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 mit Inkrementen von 1 zu 4, 4 zu 8 und 8 zu 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).

Diagramm: Vergleich mit zufälligen E/A-Zugriffen für SMB Multichannel

Der virtuelle Azure-Computer wirkt sich nicht auf die Speicher-E/A-Limits von SMB oder 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.

Diagramm: Vergleichstest mit zufälligen E/A-Zugriffen

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 für jeden Instanztyp und jede Instanzgröße durch Azure gleich.

Diagramm: Testvergleich zum Durchsatz

Azure legt Netzwerkratenbeschränkungen für jeden VM-Typ und jede VM-Größe 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.

Diagramm: Vergleichstest mit sequenziellen E/A-Zugriffen

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.

Diagramm: Auswirkung von SMB Signing auf die Leistung

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 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:

Diagramm: Windows 2019-Standardversion – _D32ds_v4 4K: Test mit zufälligen E/A-Zugriffen

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

Diagramm: Windows 2019-Standardversion – _D32ds_v4 64K: Sequenzieller Durchsatz

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:

Diagramm: Windows 2019-Standardversion – _D32ds_v4 4K: Test mit zufälligen E/A-Zugriffen bei fünf Instanzen

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

Diagramm: Windows 2019-Standardversion – _D32ds_v4 64K: Sequenzieller Durchsatz bei fünf Instanzen

Ü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: Oberfläche zum Hinzufügen von Leistungsindikatoren für Systemmonitor

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 Kapazitätsmaximierung Ihrer Netzwerkbandbreite.

Screenshot: Systemmonitor-Ausgabe

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.

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 beschleunigten Netzwerkbetrieb für Ihre VMs zu konfigurieren. Beachten Sie dabei Folgendes:

  • Das Azure-Portal aktiviert den beschleunigten Netzwerkbetrieb standardmäßig für virtuelle Computer, die dieses Feature unterstützen. Bei anderen Bereitstellungsmethoden, wie z. B. Ansible und ähnlichen Konfigurationstools, ist dies jedoch nicht möglich. Wenn „Beschleunigter Netzwerkbetrieb“ nicht aktiviert wird, kann die Leistung eines Computers beeinträchtigt werden.
  • Wenn der beschleunigte Netzwerkbetrieb für die Netzwerkschnittstelle eines virtuellen Computers nicht aktiviert ist, da Instanztyp oder Instanzgröße nicht unterstützt werden, 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. Der beschleunigte Netzwerkbetrieb ist eine Funktion, die es nur für Azure-VMs gibt. Azure NetApp Files-NICs sind per Design optimiert.

Empfangsseitige Skalierung

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: RSS-Ausgabe für virtuellen Azure-Computer

Mehrere NICs auf SMB-Clients

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

Wie die Ausgabe von Get-SmbClientNetworkInterace unten zeigt, verfügt die VM ü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 beim Herstellen einer Verbindung mit der SMB-Freigabe verwendet. Schnittstelle 15 wird nicht verwendet.

Screenshot: Ausgabe für RSS-fähige NICs

Nächste Schritte