[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Re: [dm-devel] Problems with multipathd



Hi,

> Also know the 0.4.5 snapshots are largely better suited to the task.
> Consider upgrading.

Now, I use multipath-tools-0.4.5, udev-068 and device-mapper-1.01.03.


> Lower the timeouts in your Qlogic driver.

===> I found some settings in /sys/module/qla2xxx/parameters/...,
but most of them are read-only values. I have changed ql2xretrycount
and ql2xsuspendcount but without success. Any suggestions for
this driver?


I.) --- udev and udevstart ---


> Default udev.rules file has a directive to ignore dm-* > Something like : > KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device" > > /etc/udev/rules.d/20-multipath.rules is useless unless you you comment > out this rule.

I have commented this line, but udev still has difficulties to create this
links. Therefore I have changed /etc/dev.d/block/multipath.dev (the script
is attached at the end of this post) and added debug messages. The most
important modification is that kpartx uses the block-device-files in
/dev/mapper/... instead of /dev/...
===> Why isn't that the default? Are there any disadvantages?


testhalde2 ~ # multipath /dev/sda create: 150gb (3600508b40010079d0001900000460000) [size=150 GB][features="0"][hwhandler="0"] \_ round-robin 0 \_ 0:0:0:1 sda 8:0 [ready] \_ 1:0:0:1 sdb 8:16 [ready]

testhalde2 ~ # multipath -ll
150gb (3600508b40010079d0001900000460000)
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
 \_ 0:0:0:1 sda 8:0  [active][ready]
 \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # dmsetup table
150gb1: 0 64197 linear 254:0 63
150gb: 0 314572800 multipath 0 0 1 1 round-robin 0 2 1 8:0 1000 8:16 1000
150gb2: 0 314504505 linear 254:0 64260

testhalde2 ~ # ls -lF /dev/mapper/
total 0
brw-------  1 root root 254,  0 Sep  6 15:04 150gb
brw-------  1 root root 254,  1 Sep  6 15:04 150gb1
brw-------  1 root root 254,  2 Sep  6 15:04 150gb2
crw-rw----  1 root root  10, 63 Sep  6  2005 control

testhalde2 ~ # ls -lF /dev/1*
ls: /dev/1*: No such file or directory

testhalde2 ~ # udevstart

testhalde2 ~ # ls -lF /dev/1*
lrwxrwxrwx  1 root root 4 Sep  6 15:10 /dev/150gb -> dm-0
lrwxrwxrwx  1 root root 4 Sep  6 15:11 /dev/150gb1 -> dm-1
lrwxrwxrwx  1 root root 4 Sep  6 15:11 /dev/150gb2 -> dm-2


===> Without "udevstart" udev doesn't create the /dev/150gb* links! Is this a udev bug?



II.) --- Using multipathd ---



testhalde2 ~ # multipathd -v4
testhalde2 ~ # ps ax | fgrep multipathd
11024 pts/1    SL     0:00 multipathd -v4
11025 pts/1    SL     0:00 multipathd -v4
11026 pts/1    SL     0:00 multipathd -v4
11029 pts/1    SL     0:00 multipathd -v4
11030 pts/1    SL     0:00 multipathd -v4
11031 pts/1    SL     0:00 multipathd -v4
11032 pts/1    SL     0:00 multipathd -v4
11071 pts/1    S+     0:00 fgrep multipathd
testhalde2 ~ # cat /var/run/multipathd.pid
11024

Yeah! Version 0.4.5 creates a pid and a socket file :-)
It's important that I start "multipath /dev/sda" _before_
multipathd! If I change this order, multipathd does nothing.
/var/log/messages shows "tick", "map garbage collection"
etc. and nothing about /dev/sda or /dev/sdb. It seems that
multipathd doesn't read the device-mapper table at startup.
===> Is this behavior ok?


testhalde2 ~ # less /var/log/messages ... /etc/dev.d/multipath.dev (10904): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/dm-0, $ACTION=add, $ =block /etc/dev.d/multipath.dev (10904): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (10904): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (10904): Getting /block/dm-0 major and minor number /etc/dev.d/multipath.dev (10904): /block/dm-0 major:minor = 254:0 /etc/dev.d/multipath.dev (10904): Getting /block/dm-0 alias /etc/dev.d/multipath.dev (10904): /block/dm-0 alias = /dev/mapper/150gb /etc/dev.d/multipath.dev (10904): /sbin/kpartx -v -a /dev/mapper/150gb /etc/dev.d/multipath.dev (10935): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/dm-1, $ACTION=add, $ =block /etc/dev.d/multipath.dev (10935): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (10935): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (10935): Getting /block/dm-1 major and minor number /etc/dev.d/multipath.dev (10935): /block/dm-1 major:minor = 254:1 /etc/dev.d/multipath.dev (10935): Getting /block/dm-1 alias /etc/dev.d/multipath.dev (10963): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/dm-2, $ACTION=add, $ =block /etc/dev.d/multipath.dev (10963): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (10963): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (10963): Getting /block/dm-2 major and minor number /etc/dev.d/multipath.dev (10963): /block/dm-2 major:minor = 254:2 /etc/dev.d/multipath.dev (10963): Getting /block/dm-2 alias /etc/dev.d/multipath.dev (10935): /block/dm-1 alias = /dev/mapper/150gb1 /etc/dev.d/multipath.dev (10935): /sbin/kpartx -v -a /dev/mapper/150gb1 /etc/dev.d/multipath.dev (10963): /block/dm-2 alias = /dev/mapper/150gb2 /etc/dev.d/multipath.dev (10963): /sbin/kpartx -v -a /dev/mapper/150gb2 multipathd: --------start up-------- multipathd: read /etc/multipath.conf multipathd: fd0 blacklisted ... multipathd: hda blacklisted multipathd: path sda not found in pathvec multipathd: ===== path sda ===== multipathd: bus = 1 multipathd: dev_t = 8:0 multipathd: size = 314572800 multipathd: vendor = HP multipathd: product = HSV100 multipathd: rev = 3025 multipathd: h:b:t:l = 0:0:0:1 multipathd: tgt_node_name = 0x50001fe150051d20 multipathd: getuid = /sbin/scsi_id -g -u -s /block/%n (controler setting) multipathd: uid = 3600508b40010079d0001900000460000 (callout) multipathd: path sdb not found in pathvec multipathd: ===== path sdb ===== multipathd: bus = 1 multipathd: dev_t = 8:16 multipathd: size = 314572800 multipathd: vendor = HP multipathd: product = HSV100 multipathd: rev = 3025 multipathd: h:b:t:l = 1:0:0:1 multipathd: tgt_node_name = 0x50001fe150051d20 multipathd: getuid = /sbin/scsi_id -g -u -s /block/%n (controler setting) multipathd: uid = 3600508b40010079d0001900000460000 (callout) multipathd: dm-0 blacklisted multipathd: dm-1 blacklisted multipathd: dm-2 blacklisted multipathd: discovered map 150gb multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: 8:0 ownership set multipathd: 8:16 ownership set multipathd: pgfailback = -2 (LUN setting) multipathd: 150gb: event checker started multipathd: path checkers start up multipathd: tick multipathd: ===== path sda ===== multipathd: bus = 1 multipathd: dev_t = 8:0 multipathd: size = 314572800 multipathd: vendor = HP multipathd: product = HSV100 multipathd: rev = 3025 multipathd: h:b:t:l = 0:0:0:1 multipathd: tgt_node_name = 0x50001fe150051d20 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: path checker = tur (controler setting) multipathd: 8:0: tur checker reports path is up multipathd: 8:0: reinstated multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: ===== path sda ===== multipathd: getprio = /bin/true (internal default) multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: ===== path sdb ===== multipathd: getprio = /bin/true (internal default) multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: ===== path sdb ===== multipathd: bus = 1 multipathd: dev_t = 8:16 multipathd: size = 314572800 multipathd: vendor = HP multipathd: product = HSV100 multipathd: rev = 3025 multipathd: h:b:t:l = 1:0:0:1 multipathd: tgt_node_name = 0x50001fe150051d20 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: path checker = tur (controler setting) multipathd: 8:16: tur checker reports path is up multipathd: 8:16: reinstated multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: path prio refresh multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick last message repeated 4 times multipathd: 8:0: tur checker reports path is up multipathd: 8:0: delay next check 20s multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: 8:16: tur checker reports path is up multipathd: 8:16: delay next check 20s multipathd: path prio refresh multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: tick multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick multipathd: tick multipathd: 8:0: tur checker reports path is up multipathd: 8:0: delay next check 40s multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: 8:16: tur checker reports path is up multipathd: 8:16: delay next check 40s multipathd: path prio refresh multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: tick ...



*** Disabling san-port from HBA-1... ***


testhalde2 ~ # multipath -ll [ sleeping 35 seconds ] 150gb (3600508b40010079d0001900000460000) [size=150 GB][features="0"][hwhandler="0"] \_ round-robin 0 [active] \_ 0:0:0:1 sda 8:0 [active][faulty] \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # multipath -ll
[ sleeping 10 seconds ]
failed to open /dev/sda
150gb (3600508b40010079d0001900000460000)
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
 \_ 0:0:0:1 sda 8:0  [failed][faulty]
 \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # multipath -ll
[ sleeping 10 seconds ]
failed to open /dev/sda
150gb (3600508b40010079d0001900000460000)
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
 \_ 0:0:0:1 sda 8:0  [active][ready]
 \_ 1:0:0:1 sdb 8:16 [active][ready]


testhalde2 ~ # ls /sys/block/ dm-0 fd0 loop1 loop4 loop7 ram10 ram13 ram2 ram5 ram8 dm-1 hda loop2 loop5 ram0 ram11 ram14 ram3 ram6 ram9 dm-2 loop0 loop3 loop6 ram1 ram12 ram15 ram4 ram7 sdb


testhalde2 ~ # dmsetup table 150gb1: 0 64197 linear 254:0 63 150gb: 0 314572800 multipath 0 0 1 1 round-robin 0 2 1 8:0 1000 8:16 1000 150gb2: 0 314504505 linear 254:0 64260


testhalde2 ~ # less /var/log/messages ... kernel: qla2300 0000:03:01.0: LOOP DOWN detected. multipathd: tick ... kernel: rport-0:0-3: blocked FC remote port time out: removing target multipathd: 8:0: tur checker reports path is down multipathd: checker failed path 8:0 in map 150gb kernel: device-mapper: dm-multipath: Failing path 8:0. multipathd: 150gb: devmap event #2 multipathd: 8:16: tur checker reports path is up multipathd: 8:16: delay next check 40s multipathd: path prio refresh multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: discovered map 150gb multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = F, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: 8:0 ownership set multipathd: 8:16 ownership set multipathd: pgfailback = -2 (LUN setting) /etc/dev.d/multipath.dev (11579): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda/sda1, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11579): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11579): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11579): Exiting: $ACTION != "add" /etc/dev.d/multipath.dev (11571): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda/sda2, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11571): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11571): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11571): Exiting: $ACTION != "add" /etc/dev.d/multipath.dev (11604): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11604): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11604): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11604): Exiting: $ACTION != "add" multipathd: tick multipathd: map garbage collection multipathd: tick multipathd: tick multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick last message repeated 3 times multipathd: map garbage collection multipathd: tick last message repeated 3 times multipathd: 8:0: tur checker reports path is up multipathd: 8:0: reinstated multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: 150gb: devmap event #3 multipathd: discovered map 150gb multipathd: *word = 0, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = round-robin, len = 11 multipathd: *word = 0, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = 8:0, len = 3 multipathd: *word = 8:16, len = 4 multipathd: *word = 1, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 2, len = 1 multipathd: *word = 0, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 1, len = 1 multipathd: *word = A, len = 1 multipathd: *word = 0, len = 1 multipathd: 8:0 ownership set multipathd: 8:16 ownership set multipathd: pgfailback = -2 (LUN setting) kernel: scsi0 (0:1): rejecting I/O to dead device multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick multipathd: tick multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick last message repeated 2 times multipathd: 8:0: tur checker reports path is up multipathd: 8:0: delay next check 20s multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) kernel: scsi0 (0:1): rejecting I/O to dead device multipathd: tick last message repeated 2 times multipathd: map garbage collection multipathd: tick multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick last message repeated 4 times multipathd: map garbage collection multipathd: tick last message repeated 5 times multipathd: map garbage collection multipathd: tick last message repeated 3 times multipathd: 8:16: tur checker reports path is up multipathd: 8:16: delay next check 40s multipathd: path prio refresh multipathd: ===== path sdb ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: tick multipathd: tick multipathd: 8:0: tur checker reports path is up multipathd: 8:0: delay next check 40s multipathd: path prio refresh multipathd: ===== path sda ===== multipathd: prio = 0 multipathd: uid = 3600508b40010079d0001900000460000 (cache) multipathd: map garbage collection kernel: scsi0 (0:1): rejecting I/O to dead device multipathd: tick ...


===> First multipathd says "8:0: tur checker reports path is down" and multipath prints sda "failed" (ok). After a few seconds sda is "ready" and multipathd says "8:0: tur checker reports path is up"?! I have changed nothing during this time.




*** Enabling san-switch port from HBA-1 ***


testhalde2 ~ # multipath -ll testhalde2 ~ # dmsetup table 150gb1: 0 64197 linear 254:0 63 150gb2: 0 314504505 linear 254:0 64260


testhalde2 ~ # less /var/log/messages ... multipathd: tick kernel: qla2300 0000:03:01.0: LIP reset occured (f7f7). kernel: qla2300 0000:03:01.0: LOOP UP detected (2 Gbps). ... kernel: SCSI device sdc: drive cache: write through kernel: sdc: sdc1 sdc2 kernel: Attached scsi disk sdc at scsi0, channel 0, id 0, lun 1 kernel: Attached scsi generic sg1 at scsi0, channel 0, id 0, lun 1, type 0 scsi.agent[11856]: disk at /devices/pci0000:03/0000:03:01.0/host0/rport-0:0-3/target0:0:0/0:0:0:1 /etc/dev.d/multipath.dev (11909): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11909): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11909): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11909): Checking/Creating multipath device-mapper table with multipath-tool /etc/dev.d/multipath.dev (11909): multipath -v0 /dev/sdc multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick multipathd: tick multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick last message repeated 2 times multipathd: map garbage collection kernel: device-mapper: dm-multipath: error getting device kernel: device-mapper: error adding target to table /etc/dev.d/multipath.dev (11944): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc/sdc2, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11944): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11944): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11959): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc/sdc1, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11959): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11959): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11959): Checking/Creating multipath device-mapper table with multipath-tool /etc/dev.d/multipath.dev (11959): multipath -v0 /dev/sdc1 multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 logger: /etc/dev.d/multipath.dev (11944): Checking/Creating multipath device-mapper table with multipath-tool logger: /etc/dev.d/multipath.dev (11944): multipath -v0 /dev/sdc2 multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick last message repeated 2 times multipathd: Got request [dump pathvec] multipathd: *word = dump, len = 4 multipathd: *word = pathvec, len = 7 multipathd: tick multipathd: tick kernel: device-mapper: dm-multipath: error getting device kernel: device-mapper: error adding target to table kernel: device-mapper: device doesn't appear to be in the dev hash table. multipathd: tick multipathd: map garbage collection multipathd: 150gb: remove dead map multipathd: 150gb: reap event checker multipathd: 8:0 is orphaned multipathd: 8:16 is orphaned multipathd: SIGHUP received multipathd: tick multipathd: tick /etc/dev.d/multipath.dev (12002): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/dm-3, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (12002): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (12002): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (12002): Exiting: $ACTION != "add" /etc/dev.d/multipath.dev (12018): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/dm-4, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (12018): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (12018): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (12018): Exiting: $ACTION != "add" multipathd: tick ...


===> An error occurs while device-mapper tries to update the dm-table and deletes the "150gb" entry.



III.) --- Using multipath-tools without multipath ---



Now, I try the same _without_ starting multipathd...


testhalde2 ~ # ps ax | fgrep multipathd testhalde2 ~ #

testhalde2 ~ # multipath /dev/sda
create: 150gb (3600508b40010079d0001900000460000)
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0
 \_ 0:0:0:1 sda 8:0  [ready]
 \_ 1:0:0:1 sdb 8:16 [ready]

testhalde2 ~ # multipath -ll
150gb ()
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
 \_ 0:0:0:1 sda 8:0  [active][ready]
 \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # dmsetup table
150gb1: 0 64197 linear 254:0 63
150gb: 0 314572800 multipath 0 0 1 1 round-robin 0 2 1 8:0 1000 8:16 1000
150gb2: 0 314504505 linear 254:0 64260

testhalde2 ~ # ls /dev/mapper/
150gb  150gb1  150gb2  control


*** Disabling san-switch port from HBA-1 ***


testhalde2 ~ # multipath -ll [ sleeping 35 seconds ] 150gb () [size=150 GB][features="0"][hwhandler="0"] \_ round-robin 0 [active] \_ 0:0:0:1 sda 8:0 [active][faulty] \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # multipath -ll
[ sleeping 10 seconds ]
150gb ()
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
 \_ #:#:#:#      8:0 [active]
 \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # ls /sys/block/
dm-0  fd0    loop1  loop4  loop7  ram10  ram13  ram2  ram5  ram8
dm-1  hda    loop2  loop5  ram0   ram11  ram14  ram3  ram6  ram9
dm-2  loop0  loop3  loop6  ram1   ram12  ram15  ram4  ram7  sdb

testhalde2 ~ # dmsetup table
150gb1: 0 64197 linear 254:0 63
150gb: 0 314572800 multipath 0 0 1 1 round-robin 0 2 1 8:0 1000 8:16 1000
150gb2: 0 314504505 linear 254:0 64260


testhalde2 ~ # less /var/log/messages ... kernel: qla2300 0000:03:01.0: LOOP DOWN detected. kernel: rport-0:0-3: blocked FC remote port time out: removing target /etc/dev.d/multipath.dev (11186): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda/sda1, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11186): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11186): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11186): Exiting: $ACTION != "add" /etc/dev.d/multipath.dev (11200): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda/sda2, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11200): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11200): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11200): Exiting: $ACTION != "add" /etc/dev.d/multipath.dev (11217): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sda, $ACTION=remove, $ =block /etc/dev.d/multipath.dev (11217): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11217): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11217): Exiting: $ACTION != "add" ...



*** Enabling san-switch port from HBA-1 ***


testhalde2 ~ # multipath -ll [ sleeping 5 seconds ] 150gb () [size=150 GB][features="0"][hwhandler="0"] \_ round-robin 0 [active] \_ #:#:#:# 8:0 [active] \_ 1:0:0:1 sdb 8:16 [active][ready]

testhalde2 ~ # multipath -ll
150gb ()
[size=150 GB][features="0"][hwhandler="0"]
\_ round-robin 0 [enabled]
 \_ 1:0:0:1 sdb 8:16 [active][ready]
 \_ 0:0:0:1 sdc 8:32 [active][ready]

testhalde2 ~ # dmsetup table
150gb1: 0 64197 linear 254:0 63
150gb: 0 314572800 multipath 0 0 1 1 round-robin 0 2 1 8:16 1000 8:32 1000
150gb2: 0 314504505 linear 254:0 64260

testhalde2 ~ # ls /dev/mapper/
150gb  150gb1  150gb2  control


testhalde2 ~ # less /var/log/messages ... kernel: sdc: sdc1 sdc2 kernel: Attached scsi disk sdc at scsi0, channel 0, id 0, lun 1 kernel: Attached scsi generic sg1 at scsi0, channel 0, id 0, lun 1, type 0 scsi.agent[11271]: disk at /devices/pci0000:03/0000:03:01.0/host0/rport-0:0-3/target0:0:0/0:0:0:1 /etc/dev.d/multipath.dev (11325): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11325): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11325): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11325): Checking/Creating multipath device-mapper table with multipath-tool /etc/dev.d/multipath.dev (11325): multipath -v0 /dev/sdc /etc/dev.d/multipath.dev (11356): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc/sdc2, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11356): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11356): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11356): Checking/Creating multipath device-mapper table with multipath-tool /etc/dev.d/multipath.dev (11356): multipath -v0 /dev/sdc2 /etc/dev.d/multipath.dev (11377): Parameters: $0=/etc/dev.d/block/multipath.dev, $DEVPATH=/block/sdc/sdc1, $ACTION=add, $ =block /etc/dev.d/multipath.dev (11377): Logging to local file is enabled: log file is /root/multipath.dev.log /etc/dev.d/multipath.dev (11377): Logging to syslog ist enabled: facility.priority is daemon.info /etc/dev.d/multipath.dev (11377): Checking/Creating multipath device-mapper table with multipath-tool /etc/dev.d/multipath.dev (11377): multipath -v0 /dev/sdc1 ...


VI.) --- Summary ---


===> Multipathing seems to work without but not with multipathd. It's very slow, but Christophe Varoqui wrote that I have to lower the HBA timeouts (unfortunately, I don't know how to do this, see above). Does I really need multipathd? I suppose so :-)



> And consider updating the wiki FAQ with the response you found to be
> enlightening :/

As soon as I have running multipath I will write a step-by-step
documentation.


Thanks again for your help, Simon



#--- My /etc/dev.d/block/multipath.dev - Begin ---

#!/bin/sh

# log to local file? (0 or 1)
# (print log file with "sort $logFile [| less]")
logToFile=1

# log to syslog? (0 or 1)
logToSyslog=1

# path to log file
# (only used if $logToFile==1)
logFile="/root/multipath.dev.log"

# syslog facility.priority (man syslog.conf)
# (only used if $logToSyslog==1)
syslogFacPrio="daemon.info"

# timeout for getting ${DEVPATH} alias in seconds
timeout=10

# be verbose in log file and/or syslog?
# (only used if $logToFile==1 and/or $logToSyslog==1)
verbose=1

# Don't touch
pid=$$
logCount=1;

log()
{
  if [ ${logToFile} -eq 1 ]
  then
    msg="PID ${pid} - $(date +%Y%m%d-%H%M%S) -"
    msg="${msg} Log entry ${logCount}: ${1}"
    echo "${msg}" >> $logFile
    logCount=$(($logCount + 1))
  fi

  if [ ${logToSyslog} -eq 1 ]
  then
    logger -p ${syslogFacPrio} "/etc/dev.d/multipath.dev (${pid}): ${1}"
  fi
}

 die()
{
  log "DIED WITH ERROR: ${1}"
  exit 1
}

exe()
{
  log "${1}"
  if ! ${1}
  then
    die "\"${1}\" failed (device blacklisted?)"
  fi
}

end()
{
  if [ ! -z ${1} ]
  then
    log "${1}"
  fi
  exit 0
}

if [ ${verbose} -eq 1 ]
then
  msg="Parameters: \$0=${0}, \$DEVPATH=${DEVPATH},"
  msg="${msg} \$ACTION=${ACTION}, \$ =${@}"
  log "${msg}"

  if [ ${logToFile} -eq 1 ]
  then
    log "Logging to local file is enabled: log file is ${logFile}"
  fi

  if [ ${logToSyslog} -eq 1 ]
  then
    msg="Logging to syslog is enabled:"
    msg="${msg} facility.priority is ${syslogFacPrio}"
    log "${msg}"
  fi
fi

if [ ! "${ACTION}" = add ]
then
  if [ ${verbose} -eq 1 ]
  then
    log "Exiting: \$ACTION != \"add\""
  fi
  end
fi

if [ "${DEVPATH:7:3}" = "dm-" ]
then
  log "Getting ${DEVPATH} major and minor number"
  devMajorMinor=$(</sys${DEVPATH}/dev)
  if [ -z ${devMajorMinor} ]
  then
    die "Getting ${DEVPATH} major and minor number failed"
  else
    log "${DEVPATH} major:minor = ${devMajorMinor}"
  fi

  log "Getting ${DEVPATH} alias"
  count=0
  devAlias="none"
  while [ ! -b ${devAlias} ] && [ ${count} -le ${timeout} ]
  do
    devAlias="/dev/mapper/$(devmap_name ${devMajorMinor})"
    if [ ${count} -ne 0 ]
    then
      sleep 1
    fi
    count=$(($count + 1))
  done

  if [ ${count} -gt ${timeout} ]
  then
    msg="Getting ${DEVPATH} alias failed (Found ${devAlias}, but"
    msg="${msg} this isn't a block device)"
    die "${msg}"
  else
    log "${DEVPATH} alias = ${devAlias}"
  fi

  exe "/sbin/kpartx -v -a ${devAlias}"

else
  log "Checking/Creating multipath device-mapper table with multipath-tool"
  exe "multipath -v0 ${DEVNAME}"
fi

#--- /etc/dev.d/block/multipath.dev - End ---

--

Simon
gistolero gmx de


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]