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-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.
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.
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.
quelle
Antworten:
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)
quelle
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.
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.
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
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
Starten Sie den Host neu
Fahren Sie mit EMC VNXe Storage Provisioning fort und kehren Sie nach Abschluss dieses Vorgangs zu diesem Handbuch zurück
Melden Sie sich pro Host beim vSphere-Client an
Aktualisieren Sie jeden Datenspeicher auf VMFS-5
ein. Konfiguration -> Speicher -> Markieren Sie Datenspeicher -> Upgrade auf VMFS-5
quelle
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.
quelle