So knacken Sie das 1-Gbit-iSCSI-Limit zwischen ESXi und VNXe


15

Ich habe große Probleme mit meinem iSCSI-Netzwerk und kann es scheinbar nicht so schnell zum Laufen bringen, wie es nur geht.

Daher habe ich so ziemlich alles versucht, um die volle Leistung meines SAN zu erzielen, da ich Spezialisten für VMware und EMC mit einbezogen habe.

Eine kurze Beschreibung meiner Ausrüstung: 3x HP DL360 G7 / vSphere 5.5 / 4-integrierte NICs / 4-PCIe-Intel-NICs für iSCSI 2x HP 2510-24G 1x EMC VNXe 3100/2-Speicherprozessoren mit jeweils 2 dedizierten iSCSI-NICs / 24x 15k SAS RAID10 / 6x 7.2k SAS RAID6

Ich habe Best Practices angewendet und die Speicherpools gleichmäßig auf beide iSCSI-Server verteilt. Ich habe zwei iSCSI-Server erstellt, einen auf jedem Speicherprozessor. Das Bild zeigt meine iSCSI-Konfiguration.

iSCSI-Konfiguration

iSCSI-Datenverkehr wird über VLAN getrennt (für andere VLANs nicht zulässig). Ich habe es sogar mit einem anderen HP-Switch der 29xx-Serie versucht. Die Flusskontrolle ist aktiviert (auch versucht, sie zu deaktivieren), Jumbo ist deaktiviert. Es ist kein Routing erforderlich.

Auf den ESX-Hosts werden alle iSCSI-NICs verwendet, da ich die Round Robin-Einstellung für jeden Datenspeicher verwendet habe. Ich habe es auch mit einer Pfadänderungsrichtlinie von 1 IO versucht, da so viele andere auf diese Weise an Leistung gewonnen zu haben scheinen. Ich habe auch die internen Netzwerkkarten (Broadcom) ausprobiert, aber es gibt keinen Unterschied. Auf den Switches kann ich sehen, dass die Ports sehr gleichmäßig genutzt werden, ESX-Seite und VNXe-Seite. Ich habe jedoch einen perfekten Lastenausgleich: Ich komme insgesamt nicht über 1 GBit hinaus. Ich verstehe, dass der VNXe für mehrere Verbindungen optimiert ist und Round Robin dies auch benötigt, aber selbst wenn ich eine Storage VMotion zwischen 2 Hosts und 2 Datenspeichern durchführe (mit verschiedenen iSCSI-Servern), sehe ich eine gerade Linie um 84 MBit / s über das Unisphere-Webinterface. Ich kann diese Zeile so oft mit genau demselben Wert sehen, dass ich nicht glauben kann, dass meine Festplatten dies nicht tun würden. ' t liefern mehr oder die aufgaben sind nicht anspruchsvoll genug. Es wird noch besser: Mit nur einem Kabel auf jedem Host und jedem Speicherprozessor erreiche ich die gleiche Leistung. Also habe ich viel Redundanz, aber überhaupt keine zusätzliche Geschwindigkeit.

Da ich einige Leute über ihre iSCSI-Leistung gesehen habe, bin ich verzweifelt, herauszufinden, was mit meiner Konfiguration nicht stimmt (die von geschulten VMware- und EMC-Mitarbeitern getestet und verifiziert wurde). Ich bin dankbar für jede Meinung!

BEARBEITEN:

Ja, ich habe vMotion so konfiguriert, dass mehrere Netzwerkkarten verwendet werden. Außerdem durchläuft Storage VMotion immer die iSCSI-Adapter, nicht die VMotion-Adapter. Ich habe Screenshots meiner Konfiguration angehängt.

iSCSI-Portbindung

iSCSI-Ziele

iSCSI-Pfade

Ich weiß, dass Storage VMotion kein Benchmark ist, aber ich musste in den letzten Tagen viel tun und die Obergrenze lag immer bei ca. 80 MB / s. Ein Pool von 6x 15k 600 GB SAS-Festplatten in RAID 10 sollte problemlos eine ganze Menge mehr leisten können, finden Sie nicht? Ich habe einen IO-Meter-Test für Sie durchgeführt - einige davon ausprobiert, der schnellste war 256 KiB 100% Read. Ich habe 64,45 MB / s - meine Unisphere zeigt ungefähr die gleiche Geschwindigkeit. Das ist eine VM, die auf einem Pool von 6 x 15.000 300 GB SAS-Laufwerken (RAID 10) gespeichert ist und zu dieser Tageszeit kaum eine andere Aktivität aufweist.

IO-Meter

Unisphere

EDIT2:

Entschuldigen Sie die doppelten Benutzernamen, aber ich habe diese Frage bei der Arbeit geschrieben und nicht meinen Benutzernamen verwendet, den ich bereits bei Stock Overflow erhalten habe. Hier ist jedoch der Screenshot, der meine Round Robin-Einstellungen zeigt. Dies ist auf allen Hosts und in allen Stores gleich.

Round Robin


Ich glaube nicht, dass irgendetwas falsch ist. Was genau erwarten Sie? Haben Sie Multi-NIC vMotion konfiguriert?
ewwhite

3
Das Ausführen von Storage VMotion ist kein Benchmark für Speichersysteme, da der VMkernel auf die E / A- und CPU-Auslastung beschränkt ist. Haben Sie versucht, ein Benchmarking mit einem Iometer usw. durchzuführen? Welche Arten von Festplatten in der VNXe und welche Art von RAID- / Speicherpool-Setup?
Pause

Können Sie auch einen Screenshot der LUN "Pfad verwalten" in vSphere veröffentlichen?
Pause

Sie haben sich mit einem anderen Benutzer angemeldet, als Sie die Frage gestellt haben, sodass Ihre Bearbeitung in einer Warteschlange hängen blieb.
Pause

Danke für die Screenshots, aber es ist immer noch nicht das, wonach ich gefragt habe. Klicken Sie auf einen Ihrer esxi-Hosts, auf die Registerkarte "Konfigurieren" und auf "Datenspeicher", wählen Sie den Datenspeicher aus, für den Sie eine Fehlerbehebung durchführen möchten, und klicken Sie unten rechts auf den Link "Eigenschaften". Klicken Sie dann auf "Pfade verwalten" und senden Sie uns einen Screenshot dieses Fensters.
Pause

Antworten:


1

Es ist möglich, dass Sie nicht genügend IOPS generieren, damit dies wirklich funktioniert.
Sehen Sie sich hier an, wie Sie die Einstellung von 1'000 IOPS auf einen kleineren Wert ändern können. (Dies ist Symmetrix-spezifisch, Sie können dies jedoch auch für den VMWare Round Robin-Anbieter tun.)

Ich bin jedoch noch nicht überzeugt, ob es tatsächlich möglich ist, mehr als einen Link vollständig parallel mit nur einem Datenspeicher zu nutzen. Ich denke, Sie müssen den IOMeter-Test an mehr als einem Datenspeicher parallel durchführen, um die Vorteile zu sehen. (Nicht 100% sicher, obwohl)


Wie in meiner Frage angegeben, habe ich die Pfadänderungsrichtlinie bereits auf 1 anstatt auf 1.000 festgelegt - hat sich nicht wirklich viel geändert.
Ryan Hardy

Aah, ich muss diesen Teil übersehen haben, sorry.
MichelZ

1

Erstellen Sie eine SATP-Regel für den Speicheranbieter EMC, und legen Sie als Pfadrichtlinie Round Robine und IOPS zwischen 1000 und 1 fest. Dies gilt für die Dauer von Neustarts. Diese Regel wird immer dann übernommen, wenn eine neue EMC iSCSI-LUN vorgestellt wird. Starten Sie den Host neu, damit dies auf vorhandene EMC iSCSI-LUNs angewendet wird.

esxcli storage nmp satp rule add --satp="VMW_SATP_DEFAULT_AA" \
  --vendor="EMC" -P "VMW_PSP_RR" -O "iops=1"

Ich habe versucht, die IOPS zwischen 1 und 3 zu ändern und die beste Leistung auf einer einzelnen VM zu erzielen. Das heißt, wenn Sie viele VMs und viele Datenspeicher haben, ist 1 möglicherweise nicht optimal ...

Stellen Sie sicher, dass auf jeder Schnittstelle des VNXe 9000 MTU eingestellt sind. Außerdem sollte der vSwitch mit Ihren iSCSI-Schnittstellen zusammen mit jedem VMKernel auf 9000 MTU eingestellt sein. Erstellen Sie auf Ihrem VNXe zwei iSCSI-Server - einen für SPA und einen für SPB. Verknüpfen Sie zunächst jeweils eine IP. Zeigen Sie dann Details für jeden iSCSI-Server an und fügen Sie zusätzliche IPs für jede aktive Schnittstelle pro SP hinzu. Dies gibt Ihnen die Round-Robin-Leistung, die Sie suchen.

Erstellen Sie dann mindestens zwei Datenspeicher. Ordnen Sie iSCSIServer-SPA einen Datenspeicher und iSCSIServer-SPB einen Datenspeicher zu. Dies stellt sicher, dass einer Ihrer SPs nicht im Leerlauf sitzt.

Zuletzt sollten alle Schnittstellen auf der ESX-Seite, die für iSCSI verwendet werden, zu einem separaten vSwitch geleitet werden, wobei alle Schnittstellen aktiv sind. Sie benötigen jedoch einen VMkernel für jede Schnittstelle auf der ESX-Seite innerhalb des angegebenen vSwitch. Sie müssen die vSwitch-Failover-Reihenfolge außer Kraft setzen, damit für jeden VMKernel ein aktiver Adapter und alle anderen nicht verwendet werden. Dies ist mein Bereitstellungsskript, mit dem ich ESX-Hosts bereitgestellt habe. Jeder Host verfügt über insgesamt 8 Schnittstellen, 4 für LAN und 4 für iSCSI / VMotion-Datenverkehr.

  1. Führen Sie die folgende Konfiguration durch

ein. # DNS esxcli Netzwerk IP DNS Suche add --domain = mydomain.net

esxcli netzwerk ip dns server add --server = XXXX

esxcli netzwerk ip dns server add --server = XXXX

b. # Aktualisiere den Hostnamen entsprechend

Hostname des esxcli-Systems gesetzt --host = server1 --domain = mydomain.net

c. # füge Uplinks zu vSwitch0 hinzu esxcli network vswitch standard Uplink füge hinzu --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli network vswitch standard uplink add --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli network vswitch standard uplink add --uplink-name = vmnic5 --vswitch-name = vSwitch0

d. # Erstellen Sie vSwitch1 für die Speicherung und setzen Sie MTU auf 9000

esxcli network vswitch standard add --vswitch-name = vSwitch1

esxcli network vswitch standard set --vswitch-name = vSwitch1 --mtu = 9000

e. # füge Uplinks zu vSwitch1 hinzu

esxcli network vswitch standard uplink add --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli network vswitch standard uplink add --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli network vswitch standard uplink add --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli network vswitch standard uplink add --uplink-name = vmnic7 --vswitch-name = vSwitch1

f. # Aktivierte Netzwerkkarte für vSwitch0 setzen

Esxcli-Netzwerk-vswitch-Standardrichtlinien-Failover-Satz --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

G. # Aktivierte Netzwerkkarte für vSwitch1 festlegen

Esxcli-Netzwerk-vswitch-Standardrichtlinien-Failover-Satz --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # Portgruppen für iSCSI und vmkernels für ESX01 und nicht für ESX02 erstellen

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

IP-Schnittstelle des esxcli-Netzwerks ipv4 set --interface-name = vmk2 --ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

IP-Schnittstelle des esxcli-Netzwerks ipv4 set --interface-name = vmk3 --ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli network ip interface ipv4 set --schnittstellenname = vmk6 --ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

IP-Schnittstelle des esxcli-Netzwerks ipv4 set --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

ich. # Portgruppen für iSCSI und vmkernels für ESX02 und nicht für ESX01 erstellen

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

IP-Schnittstelle des esxcli-Netzwerks ipv4 set --interface-name = vmk2 --ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli network ip interface ipv4 set --schnittstellenname = vmk3 --ipv4 = 192.168.50.163 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk6 --ipv4 = 192.168.50.166 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli network vswitch standard portgroup add --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

IP-Schnittstelle des esxcli-Netzwerks add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli network ip interface ipv4 set --schnittstellenname = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

j. # Aktivierte Netzwerkkarte für jeden iSCSI-VM-Kernel festlegen

Failover-Satz für die Standard-Portgruppenrichtlinie von esxcli network vswitch --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

Failover-Satz für die Standard-Portgruppenrichtlinie von esxcli network vswitch --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

Failover-Satz für die Standard-Portgruppenrichtlinie von esxcli network vswitch --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6

Failover-Satz für die Standard-Portgruppenrichtlinie von esxcli network vswitch --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7

k. # Portgruppen erstellen

esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0

esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0

esxcli network vswitch standard portgroup add --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0

l. # Setzen Sie VLAN auf VM-Portgruppen

esxcli network vswitch-Standardportgruppensatz -p VMNetwork1 --vlan-id ##

esxcli network vswitch-Standardportgruppensatz -p VMNetwork2 --vlan-id ##

esxcli network vswitch-Standardportgruppensatz -p VMNetwork3 --vlan-id ###

m. # Standard-VM-Portgruppe entfernen

esxcli network vswitch standard portgroup remove --portgroup-name = "VM-Netzwerk" -v = vSwitch0

n # Aktivieren Sie den iSCSI-Softwareadapter

esxcli iscsi software set --enabled = true

esxcli iscsi networkportal add-A vmhba33-n vmk2

esxcli iscsi networkportal add-A vmhba33-n vmk3

esxcli iscsi networkportal add-A vmhba33-n vmk6

esxcli iscsi networkportal add-A vmhba33-n vmk7

Ö. # lokalen Datenspeicher umbenennen

Hostname> $ var =

vim-cmd hostsvc / datastore / datastore1 local- umbenennen$var

p. # Definieren Sie ein natives Multi-Path-Speicherarray-Plug-in für EMC VNXe 3300 und optimieren Sie Round-Robin-IOPS von 1000 auf 1

esxcli storage nmp satp rule add --satp = "VMW_SATP_DEFAULT_AA" --vendor = "EMC" -P "VMW_PSP_RR" -O "

q. # Netzwerk aktualisieren

Aktualisierung der esxcli-Netzwerk-Firewall

vim-cmd hostsvc / net / refresh

  1. Konfigurieren Sie den NTP-Client mit vSphere Client für jeden Host

ein. Konfiguration -> Zeitkonfiguration -> Eigenschaften -> Optionen -> NTP-Einstellungen -> Hinzufügen -> ntp.meinedomain.net -> Aktivieren Sie "NTP-Dienst neu starten, um Änderungen zu übernehmen" -> OK -> Warten Sie ... -> Wählen Sie "Start and Stop with Host" -> OK -> Aktivieren Sie "NTP Client Enabled" -> OK

  1. Starten Sie den Host neu

  2. Fahren Sie mit EMC VNXe Storage Provisioning fort und kehren Sie nach Abschluss dieses Vorgangs zu diesem Handbuch zurück

  3. Melden Sie sich pro Host beim vSphere-Client an

  4. Aktualisieren Sie jeden Datenspeicher auf VMFS-5

ein. Konfiguration -> Speicher -> Markieren Sie Datenspeicher -> Upgrade auf VMFS-5


0

Leider denke ich, dass nichts an Ihrem Setup falsch ist. Sie können einfach nicht mehr als 1 Gbit / s für eine einzelne VM verwenden.

Der Punkt hier ist, dass Sie nicht einfach zwei (oder mehr) NICs verwenden möchten, sondern diese gleichzeitig in einer RAID-0-ähnlichen Konfiguration verwenden möchten .

802.3ad, der Standard für die Aggregation auf Verbindungsebene, und den Sie vermutlich auf Ihren Switches konfiguriert haben, kann normalerweise nicht so konfiguriert werden, dass eine einzelne Verbindung über verschiedene NICs verteilt wird. Dies liegt an der Funktionsweise der Schnittstellenalgorithmus-Auswahl: Sie basiert auf src- und dst-MACs und / oder IP / -Ports, und eine einzelne Verbindung hat immer dieselben MACs / IPs / -Ports .

Dies bedeutet nicht, dass Ihr Setup keine höheren Zahlen (sowohl als Tput als auch als IOPS) übertragen kann. Dies setzt jedoch eine harte Grenze für die Leistung, die eine einzelne VM extrahieren kann. Versuchen Sie, 2 oder 4 IOMeter-Instanzen auf 2/4 verschiedene VMs zu laden: Ich wette, dass der aggregierte Tput weit über dem Einzel-VM-Benchmark liegt, aber kein einzelner Computer das 1-Gbit / s-Limit überschreitet.

Linux-Bridging und einige High-End-Switches unterstützen verschiedene Link-Aggregation-Methoden und ermöglichen vollständig gestreifte, aggregierte Netzwerkschnittstellen. Dies hat jedoch nicht unbedeutende Auswirkungen darauf, wie andere Switches / Systeme mit diesen "nicht standardmäßigen" Aggregationsmethoden interagieren.

Auf jeden Fall sollten Sie für das Speichernetzwerk wirklich Jumbo-Frames aktivieren, sofern dies unterstützt wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.