Différences entre les versions de « Multipath & Lun »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 31 : Ligne 31 :
Avant de configurer le multipath il faut s'assurer que multipathd est démarré (et qu'il se lancera au démarrage) et que le module dm_multipath soit chargé (depmod && modprobe  
Avant de configurer le multipath il faut s'assurer que multipathd est démarré (et qu'il se lancera au démarrage) et que le module dm_multipath soit chargé (depmod && modprobe  
dm_multipath).
dm_multipath).
Faire une conf multipath sans mettre la partie "multipaths" (celle ou l alias et le wwwid sont définis).


Le wwwid qui est dans la partie multipaths correspond à ce que ressort un multipath -l, en l'occurence 20016971202cb0005, si il n y a pas d'alias (ici VM), le wwwid est indiqué en  
Le wwwid qui est dans la partie multipaths correspond à ce que ressort un multipath -l, en l'occurence 20016971202cb0005, si il n y a pas d'alias (ici VM), le wwwid est indiqué en  
premier sur la premiere ligne. Nec correspond au vendor, et iStorage 1000 au product.
premier sur la premiere ligne. Nec correspond au vendor, et iStorage 1000 au product.


Si le multipath -l ne retourne aucune informations (ni message d erreur ou autres), il faut juste executer multipath, et cela va creer le wwwid et l afficher.
Si le multipath -l ne retourne aucune informations (ni message d erreur ou autres), il faut juste executer multipath, et cela va creer le wwwid et l afficher. On pourra alors remodifier le multipath.conf pour mettre la partie "multipaths" avec l'alias et le wwwid
<pre>
<pre>
[root@~]# multipath -l
[root@~]# multipath -l

Version du 7 août 2014 à 13:51

Doc Multipath (pris ici)

Préconisation

Il est préférable de partir sur une configuration des disques durs locaux en UUID au niveau du fstab, grub.conf. Il m'est arrivé que l'un des lun vu par le multipath prennait la "lettre" du disque local (en l'occurence /dev/sda) et donc le disque local passait en /dev/sdc et le serveur ne bootait plus (car il y avait /dev/sda3 dans le grub.conf qui n'existait pas car c'était un lun). Le cas ou un des lun est vu / déclaré par le system avant un disque local est rare, mais cela peut arriver

Commande FC

Voir cette page

Configuration du multipath

Installer le logiciel device-mapper-multipath ou similaire, démarrer le démon multipathd, et charger le modules (modprobe dm_multipath) Installer le package sysfs-utils (qui donne le binaire systool)

Installez l'utilitaire de la carte fibre sur le serveur (ocmanager en générale), une fois ceci fait. Les commandes diffères pour chaque carte hba, mais elles sont relativement simples. Il peut etre utile de désactiver le module de la carte fibre (modprobe -r nomdumoduledela carte) puis de le réactiver (modrobe nomdumoduledela carte); dans le dmesg on doit voir les ports de la carte passer en disabled.

Démarrez-le et relevez pour configurer chaque zone :

 * Le WWPN ('''W'''orld '''W'''ild '''P'''ort '''N'''ame) du connecteur, commençant généralement par 10:00:00.
 * Le WWN ('''W'''orld '''W'''ild '''N'''ame) du connecteur, commençant généralement par 20:00:00.

Il sera aussi nécessaire de configurer le multipath sous le serveur afin de ne voir qu'un seul chemin dans le cas où l'on a 2 fibres et donc 2 chemins qui partent vers le SAN.

Avant de configurer le multipath il faut s'assurer que multipathd est démarré (et qu'il se lancera au démarrage) et que le module dm_multipath soit chargé (depmod && modprobe dm_multipath).

Faire une conf multipath sans mettre la partie "multipaths" (celle ou l alias et le wwwid sont définis).

Le wwwid qui est dans la partie multipaths correspond à ce que ressort un multipath -l, en l'occurence 20016971202cb0005, si il n y a pas d'alias (ici VM), le wwwid est indiqué en premier sur la premiere ligne. Nec correspond au vendor, et iStorage 1000 au product.

Si le multipath -l ne retourne aucune informations (ni message d erreur ou autres), il faut juste executer multipath, et cela va creer le wwwid et l afficher. On pourra alors remodifier le multipath.conf pour mettre la partie "multipaths" avec l'alias et le wwwid

[root@~]# multipath -l
VM (20016971202cb0005) dm-0 NEC,iStorage 1000

Il est possible de générer un multipath.conf à l'aide de la commande mpathconf : mpathconf --enable --with_multipathd y --with_chkconfig y

/!\ On peut aussi lancer la commande multipathd -k pour avoir un shell multipath interactif

Connexion 1 port fibre + 1 switch fibre

Dans ce cas, notre serveur a un seul port fibre connecté à un switch San fibre.

Résultat multipath -l

lunkvm1 (360a98000503443744e4a68307064324a) dm-0 NETAPP,LUN
size=1.9T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=-1 status=active
| `- 1:0:0:0 sdb 8:16 active undef running
`-+- policy='round-robin 0' prio=-1 status=enabled
  `- 1:0:1:0 sdd 8:48 active undef running

lun2kvm1 (360a98000503443744e4a747841707a30) dm-1 NETAPP,LUN
size=295G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=-1 status=active
| `- 1:0:0:3 sdc 8:32 active undef running
`-+- policy='round-robin 0' prio=-1 status=enabled
  `- 1:0:1:3 sde 8:64 active undef running


/etc/multipath.conf

Configuration du multipath qui retourne les infos multipath -l ci dessus

blacklist {
devnode "sda"   # ici le disque local que j'exclue, à adapter suivant les disques locaux présents sur le serveur
devnode "sdb" # il faut bien mettre une ligne par device sinon ca ne fonctionne pas
}


defaults {
        udev_dir                /dev
        polling_interval        5
        path_selector           "round-robin 0"
        path_grouping_policy    failover
        #getuid_callout          "/sbin/scsi_id -g -u -s /block/%n"
        #getuid_callout         "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
        prio                    const
        #path_checker           readsector0
        rr_min_io               100
        rr_weight               uniform
        #max_fds                        8192
        failback                immediate
        no_path_retry           fail
        user_friendly_names     no
}
devices {
        device {
                vendor                  "NETAPP"
                product                 "7350"
                path_grouping_policy    failover
                path_checker            tur
                failback                immediate
        }
}

multipaths {
        multipath {
        wwid                    360a98000503443744e4a68307064324a
        alias                   lunkvm1
        }
        multipath {
        wwid                    360a98000503443744e4a747841707a30
        alias                   lun2kvm1
        }
}

Connexion 2 port fibre + 2 switch fibre

Dans ce cas, notre serveur a une carte fibre qui comporte 2 ports, de chaque port part une fibre qui est reliée à un switch San fibre différents (donc 2 switch), cela nous fait donc en tout 4 chemins

Résultat multipath -l

Ici le nom / alias "vm_netapp" apparait car il a été défini dans le multipath.conf

[root@hv1.ent-bourgogne.tetra ~]# multipath -l
vm_netapp (360a9800042597977713f45502d4c6270) dm-0 NETAPP,LUN
size=2.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=active
| `- 0:0:1:1 sdb 8:16 active undef running
|-+- policy='round-robin 0' prio=0 status=enabled
| `- 1:0:1:1 sde 8:64 active undef running
|-+- policy='round-robin 0' prio=0 status=enabled
| `- 0:0:0:1 sda 8:0  active undef running
`-+- policy='round-robin 0' prio=0 status=enabled
  `- 1:0:0:1 sdd 8:48 active undef running

/etc/multipath.conf

Configuration du multipath qui retourne les infos multipath -l ci dessus

#blacklist {
#       devnode "^sdc[0-9]*"
#}

defaults {
        udev_dir                /dev
        polling_interval        5
        path_selector           "round-robin 0"
        path_grouping_policy    failover
        prio                    const
        rr_min_io               100
        rr_weight               uniform
        failback                immediate
        no_path_retry           fail
        user_friendly_names     no
}

devices {
        device {
                vendor "NETAPP"
                product "LUN"
                path_grouping_policy    failover
                path_checker            tur
                failback                immediate
        }
}


multipaths {
        multipath {
                wwid                    360a9800042597977713f45502d4c6270
                alias                   vm_netapp
        }
}

Rescan des lun / FC

Si l'on branche à chaud les fibres ou qu'il y a une modif de conf coté netapp ou switch fibre, on peut relancer un scan en faisant :

"- - -" in the above means C T L["Channel on HBA" "Target SCSI id" "Lun"]
"- - -" is a wild card instead of specifying the C T L.

Il est toute fois préférable de trouver le bon numéro d'host grace à la commande 
for i in 0 1 2 3 4 5 6 7 8 ; do echo "- - -" > /sys/class/scsi_host/host$i/scan ;done
echo "1" > /sys/class/fc_host/host$i/issue_lip

Suppression du multipath

On peut supprimer un lien multipath directement avec la commande multipath -f  $nomalias (ici multipath -f VM), il faudra apres bien sur nettoyer le fichier multipath.conf à la main

Montage des disques

 - /etc/init.d/multipath restart => Prise en compte des alias créés dans le fichier de configuration
 - Les alias doivent apparaître dans le répertoire /dev/mapper/
 - Faire un fdisk sur chaque /dev/mapper/ALIAS
 - Faire un mkfs sur chaque /dev/mapper/ALIAS

[root@~]# ll /dev/mapper/
total 0
crw-rw---- 1 root root 10, 58 Dec 16  2011 control
lrwxrwxrwx 1 root root      7 Dec 16 12:38 lunkvm2 -> ../dm-0
lrwxrwxrwx 1 root root      7 Dec 16 12:38 lunkvm2p1 -> ../dm-1

lunkvm2 correspond à notre alias définit dans le multipath.conf (c est en quelque sorte sda) et lunkvm2p1 correspond à la premiere partition de lunkvm2 qui a été créé en faisant un 
fdisk /dev/mapper/lunkvm2 (c est comme sda1). Apres la création de la partition avec fdisk, si dans /dev/mapper on a tj uniquement l alias et pas la partition (donc que lunkvm2 et pas 
lunkvm2p1), il faut faire un /etc/init.d/multipathd restart

Modifier le fichier /etc/fstab puis monter les partitions comme une partition classique en mettant /dev/mapper/lunkvm2p1