Jak złamać limit 1 Gbit iSCSI między ESXi i VNXe


15

Mam duże problemy z siecią iSCSI i nie mogę sprawić, by działała tak szybko, jak to możliwe.

Próbowałem więc prawie wszystkiego, aby uzyskać pełną wydajność z mojej sieci SAN, angażując specjalistów VMware i EMC.

Krótki opis mojego sprzętu: 3x HP DL360 G7 / vSphere 5.5 / 4 NIC na płycie / 4 PCIe Intel NIC dla iSCSI 2x HP 2510-24G 1x EMC VNXe 3100/2, każdy z 2 dedykowanymi kartami iSCSI NIC / 24x 15k SAS RAID10 / 6x 7,2k SAS RAID6

Przeszedłem najlepsze praktyki i równomiernie rozłożyłem pule pamięci na obu serwerach iSCSI. Utworzyłem 2 serwery iSCSI, po jednym na każdym procesorze pamięci. Zobacz obraz mojej konfiguracji iSCSI.

Konfiguracja iSCSI

Ruch iSCSI jest oddzielany przez VLAN (zestaw zabroniony dla innych VLAN), próbowałem nawet z innym przełącznikiem HP z serii 29xx. Kontrola przepływu jest włączona (próbowałem też ją wyłączyć), Jumbo jest wyłączone. Nie wymaga routingu.

Na hostach ESX używane są wszystkie karty sieciowe iSCSI, ponieważ korzystałem z ustawienia Round Robin dla każdego magazynu danych. Próbowałem też z polityką zmiany ścieżki 1 IO, ponieważ wydaje się, że wielu innych osiągnęło w ten sposób wydajność. Próbowałem też wewnętrznych kart sieciowych (Broadcom), ale nie ma różnicy. Na przełącznikach widzę, że porty są używane bardzo równomiernie, po stronie ESX i po stronie VNXe. Mam idealne równoważenie obciążenia, JEDNAK: Nie mogę w sumie przekroczyć 1 Gbita. Rozumiem, że VNXe jest zoptymalizowany do wielu połączeń i Round Robin również tego potrzebuje, ale nawet gdy robię pamięć vMotion między 2 hostami i 2 magazynami danych (używając różnych serwerów iSCSI), widzę linię prostą wokół 84 MBit / s przez interfejs sieciowy Unisphere. Widzę tę linię tak często przy dokładnie tej samej wartości, że nie mogę uwierzyć, że moje dyski t dostarczyć więcej lub zadania nie są wystarczająco wymagające. Jest jeszcze lepiej: dzięki tylko jednemu kablowi na każdym hoście i każdym procesorze pamięci osiągam SAMĄ wydajność. Dostałem więc dużo redundancji, ale żadnej dodatkowej prędkości.

Ponieważ widziałem sporo osób mówiących o wydajności iSCSI, desperacko chcę dowiedzieć się, co jest nie tak z moją konfiguracją (która została przetestowana i zweryfikowana przez przeszkolone osoby z VMware i EMC). Jestem wdzięczny za każdą opinię!

EDYTOWAĆ:

Tak, skonfigurowałem vMotion do używania wielu kart sieciowych. Poza tym pamięć vMotion zawsze przechodzi przez adaptery iSCSI, a nie adaptery vMotion. Dołączyłem zrzuty ekranu z mojej konfiguracji.

Powiązanie portu iSCSI

Miejsca docelowe iSCSI

Ścieżki iSCSI

Wiem, że pamięć masowa vMotion nie jest testem porównawczym, ale musiałem to zrobić dużo w ciągu ostatnich kilku dni, a górny limit zawsze wynosił około 80 MB / s. Pula 6 dysków SAS o pojemności 15 000 600 GB w macierzy RAID 10 powinna z łatwością dać o wiele więcej, nie sądzisz? Zrobiłem dla ciebie test IO Meter - wypróbowałem niektóre z nich, najszybszy był 256 KiB 100% odczytu. Mam 64,45 MB / s - mój Unisphere pokazuje również tę samą prędkość. To jest na maszynie wirtualnej, która jest przechowywana na puli 6 dysków SAS 15 GB o pojemności 300 GB (RAID 10), które prawie nie wykonują żadnej innej aktywności o tej porze dnia.

Licznik IO

Unisphere

EDYCJA 2:

Przepraszam za zduplikowane nazwy użytkowników, ale napisałem to pytanie w pracy i nie użyłem mojej nazwy użytkownika, którą już otrzymałem w magazynie Przepełnienie. Oto zrzut ekranu z moimi ustawieniami Round Robin. To samo dotyczy wszystkich hostów i wszystkich sklepów.

Round Robin


Nie sądzę, żeby coś było nie tak. Czego dokładnie oczekujesz? Czy skonfigurowałeś multi-NIC vMotion?
ewwhite

3
Wykonywanie pamięci masowej vmotion nie jest punktem odniesienia dla systemów pamięci masowej, ponieważ vmkernel jest ograniczony do operacji we / wy i procesora. Czy próbowałeś już przeprowadzać testy porównawcze za pomocą iometru itp? Jakie dyski w VNXe i jaki rodzaj konfiguracji RAID / puli pamięci?
Pauska

Czy możesz również opublikować zrzut ekranu „jednostki zarządzającej ścieżką” LUN w vSphere?
Pauska

Zalogowałeś się z innym użytkownikiem niż ten, który zadał pytanie, więc Twoja edycja utknęła w kolejce.
Pauska

Dzięki za zrzuty ekranu, ale wciąż nie o to prosiłem. Kliknij jeden z hostów esxi, kartę konfiguracji, magazyny danych, wybierz magazyn danych, który chcesz rozwiązać, i kliknij link „Właściwości” w prawym dolnym rogu. Następnie kliknij „zarządzaj ścieżkami” i wyślij nam zrzut ekranu tego okna.
pauska

Odpowiedzi:


1

Możliwe, że nie wygenerujesz wystarczającej ilości IOPS, aby to naprawdę uruchomić.
Spójrz tutaj o tym, jak zmienić ustawienie z domyślnie 1'000 IOPS do mniejszej wartości. (Jest to specyficzne dla symetryczności, ale możesz zrobić to samo dla VMWare Round Robin Provider)

Nie jestem jednak jeszcze przekonany, czy naprawdę jest w stanie wykorzystać więcej niż jedno łącze całkowicie równolegle z jednym magazynem danych. Myślę, że musisz wykonać test IOMeter na więcej niż jednym magazynie danych, aby zobaczyć korzyści. (Nie jestem jednak w 100% pewien)


Jak stwierdzono w moim pytaniu, ustawiłem już zasadę zmiany ścieżki na 1 zamiast 1.000 - tak naprawdę niewiele się zmieniłem.
Ryan Hardy

Ach, musiałem przeoczyć tę część, przepraszam.
MichelZ

1

Utwórz regułę SATP dla dostawcy pamięci masowej o nazwie EMC, ustaw zasadę ścieżki jako Round Robine i IOPS z domyślnej wartości 1000 na 1. Będzie to utrzymywać się po ponownym uruchomieniu komputera i za każdym razem, gdy zostanie przedstawiona nowa jednostka LMC iSCSI LMC EMC, ta reguła zostanie podniesiona. Aby zastosować to do istniejących jednostek LUN EMC iSCSI LUN, zrestartuj host.

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

Bawiłem się zmieniając IOPS w zakresie od 1 do 3 i znajdowałem najlepsze wyniki na pojedynczej maszynie wirtualnej. To powiedziawszy, jeśli masz dużo maszyn wirtualnych i wiele magazynów danych, 1 może nie być optymalny ...

Upewnij się, że każdy interfejs VNXe jest ustawiony na 9000 MTU. Ponadto przełącznik vSwitch z interfejsami iSCSI powinien być ustawiony na 9000 MTU wraz z każdym VMKernel. Na swoim VNXe utwórz dwa serwery iSCSI - jeden dla SPA i jeden dla SPB. Powiąż początkowo jeden adres IP dla każdego. Następnie wyświetl szczegóły dla każdego serwera iSCSI i dodaj dodatkowe adresy IP dla każdego aktywnego interfejsu dla każdego SP. Zapewni to wydajność, której szukasz.

Następnie utwórz co najmniej dwa magazyny danych. Skojarz jeden magazyn danych z iSCSIServer-SPA, a drugi z iSCSIServer-SPB. To zapewni, że jeden z twoich SP nie będzie siedział bezczynnie.

Na koniec wszystkie interfejsy po stronie ESX używane dla iSCSI powinny przejść do osobnego przełącznika vSwitch z aktywnymi wszystkimi interfejsami. Będziesz jednak potrzebował VMkernel dla każdego interfejsu po stronie ESX w ramach tego wyznaczonego przełącznika vSwitch. Musisz zastąpić kolejność przełączania awaryjnego vSwitch dla każdego VMKernel, aby mieć jeden aktywny adapter i wszystkie inne nieużywane. To jest mój skrypt wdrażania używany do obsługi administracyjnej hostów ESX. Każdy host ma w sumie 8 interfejsów, 4 dla LAN i 4 dla ruchu iSCSI / VMotion.

  1. Wykonaj poniższą konfigurację

za. # DNS esxcli sieć ip dns szukaj dodaj --domain = mojadomena.net

esxcli sieć ip dns serwer dodaj --server = XXXX

esxcli sieć ip dns serwer dodaj --server = XXXX

b. # ustaw odpowiednio aktualizację nazwy hosta

systemowa nazwa hosta systemu esxcli --host = serwer1 - domena = mojadomena.net

do. # dodaj łącza nadrzędne do sieci vSwitch0 esxcli vswitch standardowe łącze nadrzędne dodaj --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic5 --vswitch-name = vSwitch0

re. # utwórz vSwitch1 do przechowywania i ustaw MTU na 9000

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

zestaw standardowy vswitch sieci esxcli --vswitch-name = vSwitch1 --mtu = 9000

mi. # dodaj łącza wysyłające do vSwitch1

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli sieć vswitch standardowe łącze w górę dodaj --uplink-name = vmnic7 --vswitch-name = vSwitch1

fa. # ustaw aktywną kartę sieciową dla vSwitch0

esxcli network vswitch standardowy zestaw przełączania awaryjnego zasad --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

sol. # ustaw aktywną kartę sieciową dla vSwitch1

esxcli network vswitch standardowy zestaw przełączania awaryjnego zasad --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # utwórz grupy portów dla iSCSI i vmkernels dla ESX01, a nie ESX02

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

sieciowy interfejs ip esxcli dodaj --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli sieć ip interfejs ipv4 zestaw --interface-name = vmk2 --ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

Interfejs IP sieci esxcli dodaj --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli sieciowy interfejs ip zestaw ipv4 --interface-name = vmk3 --ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

Interfejs sieciowy esxcli ip dodaj --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli sieciowy interfejs ip ustawiony na ipv4 --interface-name = vmk6 --ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

Interfejs IP sieci esxcli dodaj --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli sieciowy interfejs ip ustawiono ipv4 --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

ja. # utwórz grupy portów dla iSCSI i vmkernels dla ESX02, a nie ESX01

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

sieciowy interfejs ip esxcli dodaj --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli sieciowy interfejs ip zestaw ipv4 --interface-name = vmk2 --ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

Interfejs IP sieci esxcli dodaj --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli sieć ip interfejs ipv4 zestaw --interface-name = vmk3 --ipv4 = 192.168.50.163 - maska ​​sieci = 255.255.255.0 --typ = statyczny

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

Interfejs sieciowy esxcli ip dodaj --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli sieciowy interfejs ip zestaw ipv4 --interface-name = vmk6 --ipv4 = 192.168.50.166 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

Interfejs IP sieci esxcli dodaj --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli sieć ip interfejs ipv4 zestaw --interface-name = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

jot. # ustaw aktywną kartę sieciową dla każdego vmkernel iSCSI

esxcli sieć vswitch standardowy zestaw przełączania awaryjnego zasad grupy portów --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

esxcli sieć vswitch standardowy zestaw przełączania awaryjnego zasad grupy portów --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

esxcli sieć vswitch standardowy zestaw przełączania awaryjnego zasad grupy portów --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6

esxcli sieć vswitch standardowy zestaw przełączania awaryjnego zasad grupy portów --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7

k. # utwórz grupy portów

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0

esxcli sieć vswitch standardowa portgroup dodaj --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0

l. # ustaw VLAN na grupy portów VM

esxcli sieć vswitch standardowy zestaw portgroup -p VMNetwork1 --vlan-id ##

esxcli sieć vswitch standardowy zestaw portgroup -p VMNetwork2 --vlan-id ##

esxcli sieć vswitch standardowy zestaw portgroup -p VMNetwork3 --vlan-id ###

m. # usuń domyślną grupę portów VM

esxcli network vswitch standardowa portgroup remove --portgroup-name = "VM Network" -v = vSwitch0

n. # Włącz adapter oprogramowania iSCSI

Zestaw oprogramowania esxcli iscsi --enabled = true

esxcli iscsi networkportal dodaj -A vmhba33 -n vmk2

esxcli iscsi networkportal dodaj -A vmhba33 -n vmk3

esxcli iscsi networkportal add -A vmhba33 -n vmk6

esxcli iscsi networkportal dodaj -A vmhba33 -n vmk7

o. # zmień nazwę lokalnego magazynu danych

nazwa hosta> $ var =

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

p. # Zdefiniuj natywną wielościeżkową wtyczkę macierzy pamięci masowej dla EMC VNXe 3300 i dostrój okrągły IOPS od 1000 do 1

Pamięć esxcli nmp satp reguła dodaj --satp = "VMW_SATP_DEFAULT_AA" --vendor = "EMC" -P "VMW_PSP_RR" -O "iops = 1"

q. # odśwież sieć

Odśwież zaporę sieciową esxcli

vim-cmd hostsvc / net / refresh

  1. Skonfiguruj klienta NTP za pomocą klienta vSphere dla każdego hosta

za. Konfiguracja -> Konfiguracja czasu -> Właściwości -> Opcje -> Ustawienia NTP -> Dodaj -> ntp.moja_domena.net -> Zaznacz „Uruchom ponownie usługę NTP, aby zastosować zmiany” -> OK -> poczekaj… -> Wybierz „Uruchom i zatrzymaj z hostem” -> OK -> Zaznacz „Klient NTP włączony -> OK

  1. Uruchom ponownie hosta

  2. Przejdź do EMC VNXe Storage Provisioning, wróć do tego przewodnika po zakończeniu

  3. Zaloguj się do klienta vSphere na hoście

  4. Uaktualnij każdy magazyn danych do VMFS-5

za. Konfiguracja -> Pamięć -> Podświetl magazyn danych -> Uaktualnij do VMFS-5


0

Niestety myślę, że nic nie jest w twojej konfiguracji. Po prostu nie można użyć więcej niż 1 Gb / s dla jednej maszyny wirtualnej.

Chodzi o to, że nie chcesz po prostu używać dwóch (lub więcej) kart sieciowych, chcesz używać ich jednocześnie , w konfiguracji podobnej do RAID-0.

802.3ad, standard dotyczący agregacji na poziomie łącza i który, jak myślę, skonfigurowałeś na swoich przełącznikach, zwykle nie może być skonfigurowany do rozłączania pojedynczego połączenia między różnymi kartami sieciowymi. Wynika to z tego, jak działa wybór interfejsu alg: jest on oparty na src i dst MAC i / lub IP / portach, a pojedyncze połączenie zawsze będzie miało takie same adresy MAC / IP / porty .

Nie oznacza to, że twoja konfiguracja nie może wypychać wyższych liczb (zarówno jako tput, jak i IOPS), ale to twarde ograniczenie, ile wydajności może wyodrębnić pojedyncza maszyna wirtualna. Spróbuj załadować 2 lub 4 instancje IOMeter na 2/4 różnych maszynach wirtualnych: Założę się, że zagregowana przepustowość będzie znacznie wyższa niż pojedynczy test maszyn wirtualnych, ale żadna maszyna nie przekroczy limitu 1 Gb / s.

Mostkowanie w systemie Linux i niektóre przełączniki wysokiej klasy obsługują różne metody agregacji łączy i umożliwiają pełne, zagregowane interfejsy sieciowe. Ma to jednak nietrywialne konsekwencje dla interakcji innych przełączników / systemów z tymi „niestandardowymi” metodami agregacji.

W każdym razie, w przypadku sieci pamięci, naprawdę powinieneś włączyć duże ramki, jeśli są obsługiwane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.