jan 14 2011
Disques SAN iSCSI et multipath sous Linux
Voici comment configurer des disques iSCSI en quelques pas sur Linux. Même si l’installation a été effectuée sur une Redhat Enterprise 5.5 connectée à une baie HP MSA 2012i, toute la configuration reste générique et reste applicable à n’importe quel SAN.
J’ajouterai un article pour voir si les performances sous Linux et Windows sont au rendez-vous sur une même baie iSCSI, vu qu’il semble y avoir beaucoup de problèmes reportés sur le net.
iSCSI Setup
Tout d’abord, l’installation du package iscsi tools est requise:
# yum install iscsi-initiator-utils
Configurer les paramètres de sécurité s’ils ont été appliqués sur le SAN
# vi /etc/iscsi/iscsid.conf discovery.sendtargets.auth.username = My_ISCSI_USR_NAME discovery.sendtargets.auth.password = MyPassword
Je n’ai pas mis de mot de passe le réseau étant sécurisé avec les vlans ou les switches dédiés. L’authentification ajoute également une couche de complexité lors de dépannage.
Le nom d’hôte apparaîtra sur le SAN en accord avec la configuration sur le serveur. Par défaut InitiatorName= iqn.1994-05.com.redhat:2ea02d8870eb, il peut être changé pour un nom d’hôte plus court pour une config plus simple.
Il est éditable dans /etc/iscsi/initiatorname.iscsi
Vous pouvez maintenant démarrer le service iscsi
# /etc/init.d/iscsi start
Le démarrer automatiquement après chaque reboot
# chkconfig iscsi on

Les cibles peuvent être découvertes grâce à la commande iscsiadm. Je l’ai lancé 2 fois, une fois par contrôleur.
# iscsiadm -m discovery -t sendtargets -p 10.0.0.1 # iscsiadm -m discovery -t sendtargets -p 10.0.0.2
On peut ensuite les afficher
# iscsiadm -m node 10.1.0.1:3260,2 iqn.1986-03.com.hp:storage.msa2012i.0919d81b4b.a 10.0.0.1:3260,1 iqn.1986-03.com.hp:storage.msa2012i.0919d81b4b.a 10.1.0.2:3260,2 iqn.1986-03.com.hp:storage.msa2012i.0919d81b4b.b 10.0.0.2:3260,1 iqn.1986-03.com.hp:storage.msa2012i.0919d81b4b.b
Chaque nouveau disque iscsi devrait être listé en tant que /dev/sd[a-z]. Exécuter « fdisk -l » pour les afficher. Dans un environnement SAN à 2 contrôleurs, Chaque partition est affichée comme 2 disques séparés. Lire la section Multipath pour configurer la partition physique. Si le SAN est équippé d’un seul contrôleur, vous pouvez travailler directement avec vos /dev/sd[a-z].
Multipath
Installer les outils multipath:
# yum install device-mapper-multipath
Selon les recommandations du site HP, j’ai configuré /etc/multipath.conf comme ceci:
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
}
defaults {
user_friendly_names yes
}
devices {
device {
vendor "HP"
product "MSA2[02]12fc|MSA2012i"
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
hardware_handler "0"
path_selector "round-robin 0"
path_grouping_policy multibus
failback immediate
rr_weight uniform
no_path_retry 18
rr_min_io 100
path_checker tur
}
}
Laisser la section device commentée ne semble avoir aucun effet, donc cette configuration devrait fonctionner pour n’importe quel NAS pourvu que le matériel /dev/sd[a-z] n’est pas blacklisté.
Activer le service multipath:
# modprobe dm-multipath # /etc/init.d/multipathd start # chkconfig multipathd on
Multipath device mapper va regrouper les disques avec des wwid (world wide id) identiques automatiquement. Pour afficher la topologie multipath:
# multipath -ll mpath1 (3600c0ff000d8239a6b082b4d01000000) dm-17 HP,MSA2012i [size=9.3G][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=2][active] \_ 8:0:0:30 sde 8:64 [active][ready] \_ 9:0:0:30 sdf 8:80 [active][ready] mpath0 (3600c0ff000d8239a1846274d01000000) dm-15 HP,MSA2012i [size=1.9G][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=2][active] \_ 9:0:0:29 sdb 8:16 [active][ready] \_ 8:0:0:29 sdd 8:48 [active][ready]
Si rien ne s’affiche, exécuter multipath -v3 pour debugguer. Il est probable que les disques sont backlistés.
Les partitions résultantes à utiliser sont les /dev/mapper/mpath[0-9].
J’initialise les disques avec LVM pour des facilités d’utilisation: je n’ai pas besoin d’utiliser fdisk après avoir agrandi un volume sur le SAN.
# pvcreate /dev/mapper/mpath0 # vgcreate myVolumeGroup /dev/mapper/mpath0 # lvcreate -n myVolume -L10G /dev/myVolumeGroup # mke2fs -j /dev/myVolumeGroup/myVolume
Operations sur les LUNs
Ajouter un LUN
Une fois qu’un LUN a été créé sur le SAN, le serveur ne détectera le disque qu’après rafraichissement
# iscsiadm -m node --rescan
Les disques iSCSI maintenant visibles, multipath créera la nouvelle partition automatiquement.
Suppression d’un LUN
Après avoir démonté les systèmes de fichiers relatif au disque, supprimer les LUNs sur le SAN et exécuter « multipath -f mpath? » pour le matériel en question
Agrandir un volume
LVM est remarquable puisque l’on peut retailler un volume physique plutôt que d’en recréer un à chaque fois et de l’ajouter à un volume group. Ainsi, on garde une configuration claire sur le serveur et le SAN.
Rafraichir la taille des disques
# iscsiadm -m node --rescan
Vérifier avec fdisk -l que la taille du disque correspond à la taille sur le SAN
# /etc/init.d/multipathd reload
Vérifier avec multipath -ll que la taille de la partition a bien augmenté
# pvresize /dev/mapper/mpath0
Le nouvel espace disque devrait être disponible
Répartition de charge et bascule
Sous cette configuration, le trafic est réparti sur les 2 NICs. Si une interface tombe, tout le trafic transite via le 2nd lien.
J’ai lancé la copie d’un très gros fichier sur les disques iscsi et arrêté l’une des interfaces. La charge CPU est montée très vite puis redescendue dès que le timeout de la bascule a expiré. La copie en cours a alors repris sur le 2nd lien. Sachant cela, paramétrer la valeur du timeout aussi basse que possible, ex 5 sec.

