J'ai des problèmes pour configurer le multipath en utilisant Emulex (lpfc). Bien que je ne détecte pas de corruption de données, l'administrateur du SAN dispose d'un outil qui montre que les chemins sont changés toutes les 20 secondes environ. Voici les détails :
# multipath -l
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
\_ 3:0:0:0 sdb 8:16 [active][undef]
\_ round-robin 0 [prio=0][enabled]
\_ 4:0:0:0 sdc 8:32 [active][undef]
Les chemins multiples sont connectés au même LUN.
# /lib/udev/scsi_id -g -u -d /dev/sdb
3600a0b80002a042200002cb44a9a29ca
# /lib/udev/scsi_id -g -u -d /dev/sdc
3600a0b80002a042200002cb44a9a29ca
Voici le fichier /etc/multipath.conf
defaults {
udev_dir /dev
polling_interval 5
selector "round-robin 0"
path_grouping_policy failover
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
path_checker readsector
failback immediate
user_friendly_names yes
}
multipaths {
multipath {
wwid 3600a0b80002a042200002cb44a9a29ca
alias san01
}
}
fdisk -l
Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95
Device Boot Start End Blocks Id System
/dev/sdb1 1 13054 104856223+ 83 Linux
Disk /dev/sdc: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95
Device Boot Start End Blocks Id System
/dev/sdc1 1 13054 104856223+ 83 Linux
J'ai augmenté la verbosité pour lpfc et maintenant j'obtiens ce qui suit sur dmesg :
[ 2519.241119] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a120c0 x0 x0 xeb x0 x1b108db xa29b16
[ 2519.241124] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xeb Data: x1b1 x8db
[ 2519.241127] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xeb x0 x0 x0
[ 2519.241130] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 235 Data: xeb x12 x0
[ 2519.241275] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a14c48 x0 x0 xd2 x0 x1b208e6 xa29b16
[ 2519.241279] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xd2 Data: x1b2 x8e6
[ 2519.241283] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xd2 x0 x0 x0
[ 2519.241286] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 210 Data: xd2 x12 x0
Quelqu'un peut-il voir quelque chose d'anormal dans cette configuration ? Merci.
En me basant sur les commentaires de janneb, j'ai changé la configuration dans multipath.conf en :
defaults {
udev_dir /dev
polling_interval 5
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
failback immediate
user_friendly_names yes
}
Ce qui donne maintenant :
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready]
Mais il passe toujours à [active][undef] après un certain temps, puis revient à [ready].
Oh, je viens de remarquer quelque chose, lorsque je lance 'multipath -l', j'obtiens [undef], mais si je lance 'multipath -ll', j'obtiens [ready].
-l show the current multipath topology from information fetched in sysfs and the device mapper
-ll show the current multipath topology from all available information (sysfs, the device mapper, path checkers ...)
La configuration est-elle mauvaise ? Comment puis-je déboguer ? Merci.
Merci à janneb et zerolagtime pour leur aide.
C'est là que ça se complique, je pensais ne pas avoir besoin d'expliquer tout ça, et je penche actuellement pour un mélange de configuration matérielle.
Il y a en fait deux serveurs connectés au même LUN en utilisant FC. Au niveau du système d'exploitation, un seul serveur accède au système de fichiers (bien que le même LUN soit exposé aux deux), puisqu'il s'agit d'un système de fichiers ext3 (et non d'un système de fichiers en grappe). Si le serveur 1 tombe en panne, le serveur 2 prend le relais (linux-ha) et monte le système de fichiers.
Serveur 1 (multipath -ll) :
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready]
Serveur 2 (multipath -ll) :
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM ,1815 FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 3:0:0:0 sdb 8:16 [active][ready]
\_ 4:0:0:0 sdc 8:32 [active][ready
Noms des ports du serveur 1 :
# cat /sys/class/fc_host/host3/port_name
0x10000000c96c5fdb
# cat /sys/class/fc_host/host4/port_name
0x10000000c96c5df5
root@web-db-1:~#
Noms des ports du serveur 2 :
#cat /sys/class/fc_host/host3/port_name
0x10000000c97b0917
# cat /sys/class/fc_host/host4/port_name
0x10000000c980a2d8
Cette configuration est-elle mauvaise ? La manière dont le LUN est exposé aux deux serveurs est-elle incorrecte ? Je pense que la connexion matérielle est incorrecte, qu'est-ce qui pourrait être mauvais ? Le path_checker du serveur 1 pourrait-il interférer avec le fonctionnement du serveur 2 ? Merci.