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.
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.
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.
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.
źródło
Odpowiedzi:
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)
źródło
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.
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.
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
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
Uruchom ponownie hosta
Przejdź do EMC VNXe Storage Provisioning, wróć do tego przewodnika po zakończeniu
Zaloguj się do klienta vSphere na hoście
Uaktualnij każdy magazyn danych do VMFS-5
za. Konfiguracja -> Pamięć -> Podświetl magazyn danych -> Uaktualnij do VMFS-5
źródło
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.
źródło