Comment casser la limite iSCSI 1 Gbit entre ESXi et VNXe

15

J'ai de gros problèmes avec mon réseau iSCSI et je n'arrive pas à le faire fonctionner aussi vite qu'il le pourrait.

J'ai donc essayé à peu près tout pour tirer le meilleur parti de mon SAN, après avoir impliqué des spécialistes de VMware et d'EMC.

Une brève description de mon équipement: 3 cartes réseau intégrées HP DL360 G7 / vSphere 5.5 / 4/4 cartes réseau Intel PCIe pour iSCSI 2 x HP 2510-24G 1 ​​x processeurs de stockage EMC VNXe 3100/2, chacun avec 2 cartes réseau dédiées iSCSI / 24 x 15 RAID SAS 10 / 6x SAS RAID6 7.2k

J'ai suivi les meilleures pratiques et mis les pools de stockage uniformément sur les deux serveurs iSCSI. J'ai créé 2 serveurs iSCSI, un sur chaque processeur de stockage. Veuillez voir l'image pour ma configuration iSCSI.

Configuration iSCSI

Le trafic iSCSI est séparé via VLAN (interdiction définie pour les autres VLAN), je l'ai même essayé avec un autre commutateur HP de la série 29xx. Le contrôle de flux est activé (également essayé désactivé), Jumbo est désactivé. Aucun routage n'est impliqué.

Sur les hôtes ESX, tous les NIC iSCSI sont utilisés car j'ai utilisé le paramètre Round Robin pour chaque magasin de données. Je l'ai également essayé avec une politique de changement de chemin de 1 E / S car tant d'autres semblent avoir gagné en performances de cette façon. J'ai également essayé les cartes réseau internes (Broadcom), mais il n'y a aucune différence. Sur les commutateurs, je peux voir que les ports sont utilisés de manière très uniforme, côté ESX et côté VNXe. J'ai un équilibrage de charge parfait, cependant: je ne peux pas dépasser 1 Gbit au total. Je comprends que le VNXe est optimisé pour plusieurs connexions et Round Robin en a également besoin, mais même lorsque je fais un stockage vMotion entre 2 hôtes et 2 banques de données (en utilisant différents serveurs iSCSI), je peux voir une ligne droite autour de 84 MBit / s via l'interface Web Unisphere. Je peux voir cette ligne si souvent à exactement la même valeur que je ne peux pas croire que mes disques ne le feraient pas t livrer plus ou les tâches ne sont pas assez exigeantes. C'est de mieux en mieux: avec un seul câble sur chaque hôte et chaque processeur de stockage, j'atteins les mêmes performances. J'ai donc eu beaucoup de redondance mais pas de vitesse supplémentaire du tout.

Comme j'ai vu pas mal de gens parler de leurs performances iSCSI, je cherche désespérément ce qui ne va pas avec ma configuration (qui a été testée et vérifiée par des personnes qualifiées de VMware et EMC). Je suis reconnaissant pour chaque opinion!

ÉDITER:

Oui, j'ai configuré vMotion pour utiliser plusieurs cartes réseau. Outre ce stockage, vMotion passe toujours par les adaptateurs iSCSI, et non par les adaptateurs vMotion. J'ai joint des captures d'écran de ma configuration.

Liaison de port iSCSI

Destinations iSCSI

Chemins iSCSI

Je sais que le stockage vMotion n'est pas une référence, mais j'ai dû en faire beaucoup ces derniers jours et la limite supérieure a toujours été d'environ 80 Mo / s. Un pool de 6 disques SAS 15k de 600 Go en RAID 10 devrait facilement pouvoir en faire beaucoup plus, n'est-ce pas? J'ai fait un test IO Meter pour vous - j'en ai essayé certains, le plus rapide était 256 KiB 100% Read. J'ai obtenu 64,45 Mo / s - mon Unisphere affiche également la même vitesse. C'est dans une machine virtuelle qui est stockée sur un pool de disques SAS 6x 15k 300 Go (RAID 10) qui n'a pratiquement aucune autre activité cette heure-ci.

IO Meter

Unisphère

EDIT2:

Désolé pour les noms d'utilisateur en double, mais j'ai écrit cette question au travail et il n'a pas utilisé mon nom d'utilisateur que j'ai déjà obtenu à Stock Overflow. Cependant, voici la capture d'écran montrant mes paramètres Round Robin. C'est la même chose sur tous les hôtes et tous les magasins.

Round Robin

Ryan Hardy
la source
Je ne pense pas que quelque chose cloche. Qu'attendez-vous exactement? Avez-vous configuré vMotion multi-NIC?
ewwhite
3
Faire du stockage vmotion n'est pas une référence pour les systèmes de stockage, car le vmkernel est limité sur les E / S et l'utilisation du processeur. Avez-vous essayé l'analyse comparative à l'aide d'iomètre, etc.? Quel type de disques dans le VNXe et quel type de configuration de pool de stockage / raid?
pauska
De plus, pouvez-vous publier une capture d'écran du "chemin de gestion" des LUN dans vSphere?
pauska
Vous vous êtes connecté avec un utilisateur différent de celui que vous avez utilisé pour poser la question, donc votre modification est restée bloquée dans une file d'attente.
pauska
Merci pour les captures d'écran, mais ce n'est toujours pas celle que j'ai demandée. Cliquez sur l'un de vos hôtes esxi, l'onglet de configuration, les banques de données, sélectionnez la banque de données que vous souhaitez dépanner et cliquez sur le lien "Propriétés" en bas à droite. Cliquez ensuite sur "gérer les chemins" et envoyez-nous une capture d'écran de cette fenêtre.
pauska

Réponses:

1

Il est possible que vous ne génériez pas suffisamment d'E / S par seconde pour que cela démarre vraiment.
Jetez un œil ici sur la façon de changer le paramètre de 1'000 IOPS par défaut à une valeur plus petite. (Ceci est spécifique à Symmetrix, mais vous pouvez faire la même chose pour le fournisseur VMWare Round Robin)

Je ne suis cependant pas encore convaincu s'il est vraiment capable d'utiliser plus d'un lien totalement en parallèle avec un seul magasin de données. Je pense que vous devez faire le test IOMeter sur plusieurs banques de données en parallèle pour voir les avantages. (Pas sûr à 100% cependant)

MichelZ
la source
Comme indiqué dans ma question, j'ai déjà défini la politique de changement de chemin sur 1 au lieu de 1.000 - n'a pas vraiment changé beaucoup.
Ryan Hardy
Aah, je dois avoir oublié cette partie, désolé.
MichelZ
1

Créez une règle SATP pour le fournisseur de stockage nommé EMC, définissez la stratégie de chemin d'accès comme Round Robine et IOPS par défaut de 1000 à 1. Ce sera la persistance lors des redémarrages et chaque fois qu'un nouveau LUN iSCSI EMC est présenté, cette règle sera récupérée. Pour que cela s'applique aux LUN iSCSI EMC existants, redémarrez l'hôte.

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

J'ai joué avec le changement des IOPS entre 1 et 3 et je trouve les meilleures performances sur une seule machine virtuelle. Cela dit, si vous avez beaucoup de VM et beaucoup de banques de données, 1 n'est peut-être pas optimal ...

Assurez-vous que chaque interface du VNXe est définie sur 9000 MTU. En outre, le vSwitch avec vos interfaces iSCSI doit être défini sur 9000 MTU avec chaque VMKernel. Sur votre VNXe, créez deux serveurs iSCSI - un pour SPA et un pour SPB. Associez une adresse IP pour chacun initialement. Affichez ensuite les détails de chaque serveur iSCSI et ajoutez des adresses IP supplémentaires pour chaque interface active par SP. Cela vous donnera la performance de tournoi à la ronde que vous recherchez.

Créez ensuite au minimum deux banques de données. Associez un magasin de données à iSCSIServer-SPA et un à iSCSIServer-SPB. Cela garantira que l'un de vos SP n'est pas assis au ralenti.

Enfin, toutes les interfaces côté ESX qui sont utilisées pour iSCSI doivent aller vers un vSwitch distinct avec toutes les interfaces actives. Cependant, vous souhaiterez un VMkernel pour chaque interface côté ESX dans ce vSwitch désigné. Vous devez remplacer l'ordre de basculement vSwitch pour chaque VMKernel pour avoir un adaptateur actif et tous les autres inutilisés. Il s'agit de mon script de déploiement que j'ai utilisé pour provisionner les hôtes ESX. Chaque hôte dispose d'un total de 8 interfaces, 4 pour le LAN et 4 pour le trafic iSCSI / VMotion.

  1. Effectuer la configuration ci-dessous

une. # 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. # définir la mise à jour du nom d'hôte en conséquence

ensemble de noms d'hôte du système esxcli --host = server1 --domain = mydomain.net

c. # ajouter des liaisons montantes à vSwitch0 réseau esxcli vswitch liaison montante standard ajouter --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

ré. # créer vSwitch1 pour le stockage et définir MTU sur 9000

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

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

e. # ajouter des liaisons montantes à vSwitch1

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. # définir la carte réseau active pour vSwitch0

Ensemble de basculement de stratégie standard vswitch du réseau esxcli --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

g. # définir la carte réseau active pour vSwitch1

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

h. # créer des groupes de ports pour iSCSI et vmkernels pour ESX01 et non ESX02

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

ajout de l'interface IP du réseau esxcli --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk2

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

interface IP du réseau esxcli ajouter --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk3

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

ajout de l'interface IP du réseau esxcli --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 = static

hôtes vim-cmdvc / vmotion / vnic_set vmk6

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

ajout de l'interface IP du réseau esxcli --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk7

je. # créer des groupes de ports pour iSCSI et vmkernels pour ESX02 et non ESX01

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

ajout de l'interface IP du réseau esxcli --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk2

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

interface IP du réseau esxcli ajouter --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk3

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

ajout de l'interface IP du réseau esxcli --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

hôtes vim-cmdvc / vmotion / vnic_set vmk6

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

ajout de l'interface IP du réseau esxcli --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 = static

hôtes vim-cmd vc / vmotion / vnic_set vmk7

j. # définir une carte réseau active pour chaque noyau virtuel iSCSI

esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6

esxcli network vswitch standard portgroup policy failover set --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7

k. # créer des groupes de ports

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. # définir VLAN sur des groupes de ports 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. # supprimer le groupe de ports VM par défaut

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

n. # activer l'adaptateur logiciel iSCSI

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

o. # renommer le magasin de données local

nom d'hôte> $ var =

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

p. #Définissez le plug-in de type tableau de stockage multi-chemins natif pour EMC VNXe 3300 et réglez les IOPS à tour de rôle de 1000 à 1

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

q. # actualiser le réseautage

actualisation du pare-feu du réseau esxcli

vim-cmd hostsvc / net / refresh

  1. Configurer le client NTP à l'aide de vSphere Client pour chaque hôte

une. Configuration -> Configuration de l'heure -> Propriétés -> Options -> Paramètres NTP -> Ajouter -> ntp.mydomain.net -> Cochez "Redémarrer le service NTP pour appliquer les modifications" -> OK -> attendez… -> Sélectionnez «Démarrer et arrêter avec l'hôte» -> OK -> Cochez «Client NTP activé -> OK

  1. Redémarrer l'hôte

  2. Continuez avec EMC VNXe Storage Provisioning, revenez à ce guide une fois terminé

  3. Connectez-vous au client vSphere par hôte

  4. Mettre à niveau chaque banque de données vers VMFS-5

une. Configuration -> Stockage -> Highlight Datastore -> Mettre à niveau vers VMFS-5

Robert Margeson
la source
0

Malheureusement, je pense que rien ne va mal avec votre configuration. Vous ne pouvez tout simplement pas utiliser plus de 1 Go / s pour une seule machine virtuelle.

Le point ici est que vous ne voulez pas simplement utiliser deux (ou plus) NIC, vous voulez les utiliser simultanément , dans une configuration de type RAID-0.

802.3ad, la norme sur l'agrégation au niveau des liens et que je pense que vous avez configurée sur vos commutateurs, ne peut généralement pas être configurée pour répartir une seule connexion sur différentes cartes réseau. Cela est dû au fonctionnement de la sélection d'interface: elle est basée sur les MAC et / ou IP / ports src et dst, et une seule connexion aura toujours les mêmes MAC / IP / ports .

Cela ne signifie pas que votre configuration ne peut pas pousser des nombres plus élevés (à la fois comme tput et IOPS), mais cela met une limite stricte sur les performances qu'une seule machine virtuelle peut extraire. Essayez de charger 2 ou 4 instances IOMeter sur 2/4 machines virtuelles différentes: je parie que le débit agrégé sera bien supérieur à celui de la machine virtuelle unique, mais aucune machine ne passera par la limite de 1 Go / s.

Le pontage Linux et certains commutateurs haut de gamme prennent en charge différentes méthodes d'agrégation de liens et permettent des interfaces réseau agrégées par bandes complètes. Cependant, cela a des ramifications non triviales sur la façon dont les autres commutateurs / systèmes interagissent avec ces méthodes d'agrégation "non standard".

Quoi qu'il en soit, pour le réseau de stockage, vous devez vraiment activer les trames jumbo, si elles sont prises en charge.

shodanshok
la source