Come violare il limite iSCSI da 1 Gbit tra ESXi e VNXe


15

Sto avendo grossi problemi con la mia rete iSCSI e non riesco a farlo funzionare il più velocemente possibile.

Quindi ho provato praticamente tutto per ottenere le massime prestazioni dalla mia SAN, avendo coinvolto specialisti di VMware ed EMC.

Una breve descrizione della mia attrezzatura: 3 NIC HP DL360 G7 / vSphere 5.5 / 4 onboard integrate / 4 NIC Intel PCIe per iSCSI 2x HP 2510-24G 1x processori di storage EMC VNXe 3100/2, ciascuno con 2 NIC dedicate iSCSI / 24x 15k SAS RAID10 / 6x 7.2k SAS RAID6

Ho seguito le migliori pratiche e ho distribuito i pool di archiviazione in modo uniforme su entrambi i server iSCSI. Ho creato 2 server iSCSI, uno su ciascun processore di archiviazione. Si prega di vedere l'immagine per la mia configurazione iSCSI.

configurazione iSCSI

Il traffico iSCSI è separato tramite VLAN (vietato impostare per altre VLAN), l'ho persino provato con un altro switch HP della serie 29xx. Il controllo del flusso è abilitato (anche provato a disabilitato), Jumbo è disabilitato. Non è previsto alcun routing.

Sugli host ESX vengono utilizzate tutte le schede di rete iSCSI mentre ho usato l'impostazione Round Robin per ogni archivio dati. L'ho provato anche con una politica di cambio di percorso di 1 I / O poiché molti altri sembrano aver ottenuto prestazioni in quel modo. Ho provato anche le schede di rete interne (Broadcom), ma non c'è differenza. Sugli switch vedo che le porte vengono utilizzate in modo molto uniforme, lato ESX e lato VNXe. Ho un perfetto bilanciamento del carico, TUTTAVIA: non riesco a superare 1 Gbit in totale. Capisco che VNXe è ottimizzato per connessioni multiple e anche Round Robin ne ha bisogno, ma anche quando eseguo un vMotion di archiviazione tra 2 host e 2 datastore (usando diversi server iSCSI), posso vedere una linea retta intorno a 84 MBit / tramite l'interfaccia web di Unisphere. Riesco a vedere quella linea così spesso allo stesso valore che non riesco a credere che i miei dischi non consegnare di più o le attività non sono abbastanza impegnative. Sta migliorando ancora di più: con un solo cavo su ogni host e ciascun processore di archiviazione, riesco a ottenere le stesse prestazioni. Quindi ho ottenuto molta ridondanza ma nessuna velocità extra.

Dato che ho visto alcune persone parlare delle loro prestazioni iSCSI, desidero disperatamente scoprire cosa non va nella mia configurazione (che è stata testata e verificata da personale qualificato di VMware ed EMC). Sono grato per ogni opinione!

MODIFICARE:

Sì, ho configurato vMotion per utilizzare più schede di rete. Oltre a ciò, vMotion passa sempre attraverso gli adattatori iSCSI, non gli adattatori vMotion. Ho allegato schermate della mia configurazione.

Binding porta iSCSI

Destinazioni iSCSI

Percorsi iSCSI

So che lo storage vMotion non è un punto di riferimento, tuttavia negli ultimi giorni ho dovuto fare molto di questo e il limite superiore è sempre stato di circa 80 MB / s. Un pool di 6 dischi SAS da 15k 600 GB in RAID 10 dovrebbe essere in grado di fare molto di più, non credi? Ho fatto un test IO Meter per te - ne ho provato alcuni, il più veloce è stato di 256 KiB 100% letto. Ho 64,45 MB / s - anche il mio Unisphere mostra circa la stessa velocità. È in una macchina virtuale archiviata su un pool di dischi SAS da 6x 15k 300 GB (RAID 10) che quasi nessun'altra attività in questo momento della giornata.

IO Meter

Unisphere

EDIT2:

Ci scusiamo per i nomi utente duplicati, ma ho scritto questa domanda al lavoro e non ho usato il mio nome utente che ho già ricevuto in Stock Overflow. Comunque ecco lo screenshot che mostra le mie impostazioni di Round Robin. È lo stesso su tutti gli host e tutti i negozi.

Round Robin


Non penso che qualcosa sia sbagliato. Cosa ti aspetti esattamente? Hai configurato multi-NIC vMotion?
ewwhite,

3
Fare vmotion di archiviazione non è un punto di riferimento per i sistemi di archiviazione, in quanto vmkernel è limitato all'I / O e all'utilizzo della CPU. Hai provato il benchmarking usando iometer ecc? Che tipo di dischi nel VNXe e che tipo di configurazione del raid / pool di archiviazione?
pauska,

Inoltre, è possibile pubblicare uno screenshot del LUN "percorso di gestione" all'interno di vSphere?
pauska,

Hai effettuato l'accesso con un utente diverso da quello che hai usato per porre la domanda, quindi la modifica è rimasta bloccata in una coda.
pauska,

Grazie per gli screenshot, ma non è ancora quello che ho chiesto. Fai clic su uno dei tuoi host esxi, la scheda configura, i datastore, seleziona il datastore che desideri risolvere e fai clic sul link "Proprietà" in basso a destra. Quindi fai clic su "gestisci percorsi" e inviaci uno screenshot di quella finestra.
pauska,

Risposte:


1

È possibile che non si generino abbastanza IOPS affinché questo possa davvero iniziare.
Dai un'occhiata qui su come modificare l'impostazione da 1'000 IOPS predefiniti a un valore inferiore. (Questo è specifico per simmetrix, ma puoi fare lo stesso per il provider di Robin Round di VMWare)

Tuttavia, non sono ancora convinto che sia davvero in grado di utilizzare più di un collegamento in parallelo con un solo archivio dati. Penso che devi fare il test IOMeter su più di un archivio dati in parallelo per vedere i vantaggi. (Non sicuro al 100% però)


Come indicato nella mia domanda, ho già impostato la politica di modifica del percorso su 1 anziché su 1.000 - non è cambiato molto.
Ryan Hardy,

Aah, devo aver ignorato quella parte, scusa.
MichelZ,

1

Creare una regola SATP per il fornitore di storage denominato EMC, impostare la policy del percorso come Round Robine e IOPS da 1000 a 1. Questa sarà la persistenza tra i riavvii e ogni volta che viene presentato un nuovo LUN EMC iSCSI, questa regola verrà raccolta. Affinché ciò si applichi ai LUN EMC iSCSI esistenti, riavviare l'host.

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

Ho giocato con il cambio degli IOPS tra 1 e 3 e ho trovato le prestazioni migliori su una singola VM. Detto questo, se hai molte macchine virtuali e molti archivi dati, 1 potrebbe non essere ottimale ...

Assicurati di avere ciascuna interfaccia sul VNXe impostata su 9000 MTU. Inoltre, vSwitch con le interfacce iSCSI deve essere impostato su 9000 MTU insieme a ciascun VMKernel. Sul VNXe, creare due server iSCSI: uno per SPA e uno per SPB. Associare inizialmente un IP per ciascuno. Quindi visualizzare i dettagli per ciascun server iSCSI e aggiungere altri IP per ciascuna interfaccia attiva per SP. Questo ti darà le prestazioni round robin che stai cercando.

Quindi creare almeno due datastore. Associare un archivio dati a iSCSIServer-SPA e uno a iSCSIServer-SPB. Questo assicurerà che uno dei tuoi SP non sia seduto lì al minimo.

Infine, tutte le interfacce sul lato ESX utilizzate per iSCSI dovrebbero passare a un vSwitch separato con tutte le interfacce attive. Tuttavia, sarà necessario un VMkernel per ogni interfaccia sul lato ESX all'interno di quel vSwitch designato. È necessario sovrascrivere l'ordine di failover vSwitch per ogni VMKernel per avere un adattatore attivo e tutti gli altri inutilizzati. Questo è il mio script di distribuzione che ho usato per il provisioning degli host ESX. Ogni host ha un totale di 8 interfacce, 4 per LAN e 4 per traffico iSCSI / VMotion.

  1. Eseguire sotto la configurazione

un. # DNS esxcli network ip dns search add --domain = mydomain.net

esxcli network ip dns server add --server = XXXX

esxcli network ip dns server add --server = XXXX

b. # imposta l'aggiornamento del nome host di conseguenza

set nome host di sistema esxcli --host = server1 --dominio = miodominio.net

c. # aggiungi uplink a vSwitch0 esxcli network vswitch uplink standard aggiungi --uplink-name = vmnic1 --vswitch-name = vSwitch0

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

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

d. # crea vSwitch1 per l'archiviazione e imposta MTU su 9000

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

set standard switch di rete esxcli --vswitch-name = vSwitch1 --mtu = 9000

e. # aggiungi uplink a vSwitch1

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

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

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

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

f. # imposta la NIC attiva per vSwitch0

set di failover dei criteri standard di esxcli network vswitch --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

g. # imposta la NIC attiva per vSwitch1

set di failover dei criteri standard di esxcli network vswitch --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # crea gruppi di porte per iSCSI e vmkernels per ESX01 non ESX02

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

esxcli network ip interface add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk2 --ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk2

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

esxcli network ip interface add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk3 --ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk3

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

esxcli network ip interface add --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk6 --ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk6

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

esxcli network ip interface add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk7

io. # crea gruppi di porte per iSCSI e vmkernels per ESX02 non ESX01

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

esxcli network ip interface add --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk2 --ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk2

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

esxcli network ip interface add --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk3 --ipv4 = 192.168.50.163 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk3

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

esxcli network ip interface 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 = statico

vim-cmd hostsvc / vmotion / vnic_set vmk6

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

esxcli network ip interface add --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli network ip interface ipv4 set --interface-name = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = statico

vim-cmd hostsvc / vmotion / vnic_set vmk7

j. # imposta la NIC attiva per ogni vmkernel iSCSI

set di failover di criteri portgroup standard vswitch di rete esxcli --portgroup-name = iSCSI-vmnic2 --active-uplink = vmnic2

set di failover di criteri portgroup standard vswitch di rete esxcli --portgroup-name = iSCSI-vmnic3 --active-uplink = vmnic3

set di failover criteri portgroup standard vswitch di rete esxcli --portgroup-name = iSCSI-vmnic6 --active-uplink = vmnic6

set di failover di criteri portgroup standard vswitch di rete esxcli --portgroup-name = iSCSI-vmnic7 --active-uplink = vmnic7

K. # crea gruppi di porte

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. # imposta VLAN su gruppi di porte VM

esxcli network vswitch standard portgroup set -p VMNetwork1 --vlan-id ##

esxcli network vswitch standard portgroup set -p VMNetwork2 --vlan-id ##

esxcli network vswitch standard portgroup set -p VMNetwork3 --vlan-id ###

m. # rimuove il portgroup VM predefinito

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

n. # abilita Adattatore software iSCSI

set di software iscsi esxcli --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

o. # rinomina archivio dati locale

nome host> $ var =

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

p. #Definire il plug-in nativo per array di storage a più percorsi per EMC VNXe 3300 e ottimizzare gli IOPS round robin da 1000 a 1

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

q. # aggiorna rete

aggiornamento del firewall di rete esxcli

vim-cmd hostsvc / net / refresh

  1. Configurare il client NTP utilizzando vSphere Client per ciascun host

un. Configurazione -> Configurazione ora -> Proprietà -> Opzioni -> Impostazioni NTP -> Aggiungi -> ntp.mydomain.net -> Seleziona "Riavvia servizio NTP per applicare le modifiche" -> OK -> attendere ... -> Selezionare "Avvia e interrompi con host" -> OK -> Seleziona "Client NTP abilitato -> OK

  1. Riavvia l'host

  2. Procedere con il provisioning dello storage EMC VNXe, tornare a questa guida al termine

  3. Accedi al client vSphere per host

  4. Aggiornare ciascun archivio dati su VMFS-5

un. Configurazione -> Archiviazione -> Evidenzia archivio dati -> Aggiorna a VMFS-5


0

Sfortunatamente, penso che nulla sia sbagliato nella tua configurazione. Semplicemente non è possibile utilizzare più di 1 Gb / s per una singola macchina virtuale.

Il punto qui è che non vuoi semplicemente usare due (o più) schede NIC, vuoi usarle contemporaneamente , in una configurazione simile a RAID-0.

802.3ad, lo standard sull'aggregazione a livello di collegamento e che ritengo sia stata configurata sugli switch, in genere non può essere configurato per eseguire lo striping di una singola connessione su schede NIC diverse. Ciò è dovuto al modo in cui funziona la selezione dell'interfaccia: si basa su MAC e / o IP / src e dst e una singola connessione avrà sempre gli stessi MAC / IP / porte .

Ciò non significa che il tuo setup non possa spingere numeri più alti (sia come tput che IOPS), ma questo pone un limite duro a quante prestazioni può estrarre una singola VM. Prova a caricare 2 o 4 istanze di IOMeter su 2/4 VM diverse: scommetto che il tput aggregato sarà molto più alto rispetto al benchmark della singola VM, ma nessuna macchina singola supererà il limite di 1 Gb / s.

Il bridging di Linux e alcuni switch di fascia alta supportano diversi metodi di aggregazione dei collegamenti e consentono interfacce di rete aggregate a strisce complete. Tuttavia, ciò ha ramificazioni non banali su come altri switch / sistemi interagiscono con questi metodi di aggregazione "non standard".

Ad ogni modo, per la rete di archiviazione, dovresti abilitare davvero i jumbo frame, se supportati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.