1 votes

Configuration de Dell PowerVault MD3200i dm-multipath et problèmes de performances dans Debian 6.0 (squeeze)

J'utiliserai cette cible iSCSI pour un couple de machines virtuelles KVM basées sur Debian. Chacun des contrôleurs redondants de la cible dispose de 4 ports Ethernet, de même pour les initiateurs. J'utilise deux commutateurs (ZyXEL GS-2200-24) avec un trunk entre eux, et des VLAN isolent chaque chemin. J'ai également activé les trames jumbo et le contrôle de flux.

Le système MPIO de cette version de Debian est fabuleux : tant que dm-multipath est chargé avant de se connecter à la cible iSCSI, tout fonctionne simplement. TM sans aucun fichier de configuration, à condition que je charge scsi_dh_rdac au préalable.

C'est le premier hic : je peux modifier certaines des valeurs par défaut si je fournis un fichier /etc/multipath.conf fichier. J'ai testé avec use_friendly_names yes qui crée avec succès un mpath0 lien dans /dev/mapper/ - au lieu d'utiliser le WWID, qui n'a rien de sympathique. Mais si j'essaie de changer rr_min_io de la valeur par défaut de 1000 à 8, je suis ignoré ; alors je fais cette jolie danse :

dmsetup suspend mpath0
dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0
dmsetup resume mpath0

Cela change le nombre de requêtes envoyées sur l'un des liens quadruples avant que le round-robin n'intervienne et les envoie sur le lien suivant, de 1000 par défaut à 8. Cela modifie en fait la table multipath (selon la règle multipath -v3 | grep params ). Comment configurer cette valeur par défaut dans le nouveau code multipath ? Je suppose que cela fonctionnait avant que multipath ne devienne dynamique et auto-configurable... En tout cas, toutes les documentations des fournisseurs que j'ai lues, et d'autres discussions sur le web supposent que cela fonctionnait.

Une simple écriture séquentielle utilisant dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync passe de ~135MB/s à ~260MB/s avec ce changement. Et c'est là le deuxième problème : cela représente environ 2 Gbps au lieu des 4 Gbps dont je dispose réellement entre l'initiateur et la cible. Exécution de iostat -kd 1 pendant 1 seconde, les mises à jour montrent que seulement 2 des 4 chemins sont remplis.

Ce LUN est court : ses 16 Go se trouvent au début d'une matrice RAID10 à 12 broches composée de 600 disques SAS 6Gbps tournant à 15 000 tr/min. Je m'attendais à ce que cela soit suffisant pour saturer les 4 Gbps dont je dispose ; ai-je raison ?

0 votes

Avez-vous essayé de lancer plusieurs dd commandes en parallèle ? Vous pourriez obtenir des résultats différents et mieux simuler les charges réelles de la VM. Et si vous voulez être encore plus proche, vous pouvez utiliser les benchmarks de SpecVIRT.

0 votes

Bonne idée ; j'en ai fait tourner deux en parallèle et j'ai obtenu une forte augmentation des performances pour l'un d'entre eux, alors que le second avait approximativement le même temps de fonctionnement. Je suppose que l'un d'eux bénéficiait du cache en écriture.

0 votes

Le plus drôle, c'est que iostat -kd 1 ne montre toujours que 2 des 4 tuyaux qui sont proches de 100MB/s. J'ajoute qu'à ce stade, je veux saturer les liens : tant que je ne me rapproche pas de la barre des 500MB/s, il n'y a pas grand intérêt à bidouiller le reste. Pour autant que je puisse voir, la meilleure façon de remplir tous les liens est de réduire le round-robin à un très petit nombre comme 1, 3 ou 5. Et je n'ai toujours pas trouvé le moyen de faire persister ces changements de configuration de manière à ce qu'un rechargement de la configuration via multipath -r ne revient pas à round-robin avec un rr_min_io de 1000 !

2voto

clrhs Points 1

Reconfiguration en ligne

La technique que vous avez utilisée pour changer le rr_min_io est ce que multipathd fait pour vous sous les couvertures. La manière conviviale d'ajuster les valeurs dans une carte en cours d'exécution est la suivante echo reconfigure | multipathd -k

Par exemple : Voici un NetApp qui est rr_min_io est actuellement de 128

\# dmsetup table
360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 128 8:32 128 round-robin 0 2 1 8:64 128 8:48 128 
360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64

/etc/multipath.conf a été modifié de sorte que rr_min_io était maintenant 1000 . Alors,

\# echo reconfigure | multipathd -k
multipathd> reconfigure
ok

Pour vérifier le changement :

\# dmsetup table
360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 1000 8:32 1000 round-robin 0 2 1 8:48 1000 8:64 1000 
360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64

Je suis d'accord que multipathd pourrait faire un meilleur travail de publicité et de rapport sur les variables supplémentaires qu'il utilise. Quel que soit le delta que multipathd ne rapporte pas, dmsetup le fait, mais cela ne signifie pas nécessairement que l'utilisation directe de dmsetup est la meilleure idée pour reconfigurer ces paramètres. Reconfigurer fonctionne pour à peu près tout.

Équilibrage de charge actif-actif

Le guide de déploiement indique que votre SAN est actif-actif, mais ce terme est mal utilisé dans le secteur. En pratique, il peut être "dual active", ce qui signifie qu'un LUN ne peut être accessible que par un seul processeur de stockage à la fois, mais les deux contrôleurs peuvent être actifs et piloter des LUN distincts, ils ne peuvent simplement pas équilibrer la charge vers le même lun.

Ici, à la page 79 dans la section sur l'équilibrage de la charge.

Two sessions with one TCP connection are configured from the host to each controller (one
 session per port), for a total of four sessions. The multi-path failover driver balances 
I/O access across the sessions to the ports on the same controller. In a duplex 
configuration, with virtual disks on each controller, creating sessions using each of the 
iSCSI data ports of both controllers increases bandwidth and provides load balancing

Notez l'utilisation du pluriel disques virtuels dans le cadre de configuration duplex il ne s'agit pas du même disque. Il semble s'agir d'un déploiement bi-actif. Les véritables SAN actifs-actif sont généralement réservés aux déploiements Fibre Channel. Il existe peut-être des SAN iSCSI qui accomplissent cette tâche, mais je n'en ai jamais rencontré, bien que je ne déploie pas beaucoup d'iSCSI non plus.

0 votes

Je peux confirmer que "actif-actif" signifie ici ALUA. En ce qui concerne la reconfiguration dans multipathd, voir ci-dessous. Veuillez ajouter les valeurs qui vous ont donné le plus de performance ; j'ai été surpris de voir que je devais descendre à 3 (là où vous avez 128) pour obtenir une utilisation quadruple complète.

0 votes

ALUA n'est pas tout ce qu'il y a de plus simple, vous utilisez une interconnexion de bus entre les deux processeurs de stockage pour obtenir un accès asymétrique au LUN, ce qui pourrait évincer les IO des LUN assignés à l'autre contrôleur pour commencer.

0 votes

Il n'y a pas de valeur magique pour la profondeur de la file d'attente, elle est définie de concert avec la file d'attente de stockage et le réglage des paramètres pour l'ensemble de la pile de stockage. Vous devez d'abord décider ce qui est le plus important pour vous, le temps de réponse ou le débit. Vous êtes le seul à savoir à quoi ressemblent les charges de vos machines virtuelles, créez un modèle de stimulation, par exemple des benchmarks d'invités, puis mesurez et réglez systématiquement chaque paramètre en conséquence. Il existe de nombreux articles du SAN sur le réglage de la profondeur des files d'attente, par exemple : sqlblog.com/blogs/joe_chang/archive/2010/10/18/ Oui, c'est spécifique à Windows, mais les concepts généraux restent valables. Bonne chance !

0voto

OmegaDestroy Points 31

Le vrai problème derrière la valeur ignorée rr_min_io est un simple et silencieux décalage ABI entre le noyau en cours d'exécution et les outils multipath-tools.

1 votes

Pouvez-vous nous en dire plus ? Vu que vous utilisez Debian, je pense qu'il est difficile d'installer les mauvais paquets avec apt-get, ce qui implique que vous avez trouvé un bogue. En avez-vous déjà déposé un ?

0 votes

Je pense que c'est dû au fait que l'initiateur était installé avec une Debian Squeeze, puis mis à niveau vers Wheezy, et que j'avais Squeeze comme distribution préférée. Je vais devoir trouver les versions exactes de Wheezy qui ont cassé l'ABI.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X