Bug#586182:

Vincent.McIntyre at csiro.au Vincent.McIntyre at csiro.au
Thu Jul 8 22:59:11 UTC 2010


>
>The issue on this particular system is that the binding file resides 
>on /var which isn't available early enough for
/etc/init.d/multipath-tools-boot.
>In that case the paths got assigned new names during each boot which
>causes the problem.
>A workaround is to use the multipath-tools-boot package so the path
>discovery happens in the initramfs with the bindings file available.

(a copy is placed in /var/lib/multipath/bindings of the initramfs.)

The workaround works. Whew.

This might also explain why using user-unfriendly names is regarded
as more robust.

The renaming process works correctly, but somehow not all of the 
/dev/mapper/mpathN block special files are created.

Here's an excerpt showing a successful set up for mpath1:
(grep -e rename -e bindings -e mpath[01234] /var/log/syslog)

Jul  7 10:18:58 install multipathd: Found matching wwid [2220e0001558b5168] in bindings file. Setting alias to mpath1
Jul  7 10:18:58 install multipathd: sdb: ownership set to mpath1
Jul  7 10:18:58 install multipathd: sdi: ownership set to mpath1
Jul  7 10:18:58 install multipathd: sdl: ownership set to mpath1
Jul  7 10:18:58 install multipathd: sdo: ownership set to mpath1
Jul  7 10:18:58 install multipathd: mpath1: pgfailback = -2 (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: pgpolicy = multibus (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: selector = round-robin 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: features = 1 queue_if_no_path (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: hwhandler = 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: rr_weight = 1 (internal default)
Jul  7 10:18:58 install multipathd: mpath1: minio = 100 (controller setting)
Jul  7 10:18:58 install multipathd: mpath1: no_path_retry = 20 (controller setting)
Jul  7 10:18:58 install multipathd: 2220e0001558b5168: rename mpath3 to mpath1
Jul  7 10:18:58 install multipathd: mpath1: load table [0 27343744512 multipath 1 queue_if_no_path 0 1 1 round-robin 0 4 1 8:16 100 8:128 100 
8:176 100 8:224 100]
and a little later...
Jul  7 10:18:58 install multipathd: DEVLINKS=/dev/block/254:1 /dev/disk/by-id/dm-name-mpath1 /dev/disk/by-id/dm-uuid-mpath-2220e0001558b5168 /dev/disk/by-id/scsi-m

The same occurs for mpath0.

Something slightly different happens for mpath2:
Jul  7 10:18:58 install multipathd: Found matching wwid [222de000155468f10] in bindings file. Setting alias to mpath2
Jul  7 10:18:58 install multipathd: sdc: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdj: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdm: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdp: ownership set to mpath2
Jul  7 10:18:58 install multipathd: mpath2: pgfailback = -2 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: pgpolicy = multibus (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: selector = round-robin 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: features = 1 queue_if_no_path (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: hwhandler = 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: rr_weight = 1 (internal default)
Jul  7 10:18:58 install multipathd: mpath2: minio = 100 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: no_path_retry = 20 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: set ACT_RELOAD (path group topology change)
Jul  7 10:18:58 install multipathd: mpath2: domap (0) failure for create/reload map

and there's no DEVLINKS output for mpath2.

The domap (0) failure recurs a four times. Each time multipathd goes
back to the "Found matchin wwid..." line and repeats all the steps shown.

The fourth attempt goes like this:
Jul  7 10:18:58 install multipathd: Found matching wwid [222de000155468f10] in bindings file. Setting alias to mpath2
Jul  7 10:18:58 install multipathd: sdc: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdj: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdm: ownership set to mpath2
Jul  7 10:18:58 install multipathd: sdp: ownership set to mpath2
Jul  7 10:18:58 install multipathd: mpath2: pgfailback = -2 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: pgpolicy = multibus (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: selector = round-robin 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: features = 1 queue_if_no_path (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: hwhandler = 0 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: rr_weight = 1 (internal default)
Jul  7 10:18:58 install multipathd: mpath2: minio = 100 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: no_path_retry = 20 (controller setting)
Jul  7 10:18:58 install multipathd: mpath2: set ACT_RELOAD (path group topology change)
Jul  7 10:18:58 install multipathd: mpath2: domap (0) failure for create/reload map
Jul  7 10:18:58 install multipathd: mpath4 devmap removed


Nonetheless, avoiding the need for renaming seems the right way to go.

For those following along at home, for debugging it was useful to:

  * edit /etc/default/multipath-tools to contain:
      # verbosity option for 'multipathd' - default=0
      VERBOSE=3

      if test "0" != "$VERBOSE" ; then
          DAEMON_OPTS="$DAEMON_OPTS -v $VERBOSE"
      fi
    This file is sourced by /etc/init.d/multipath-tools.

  * To see what multipath-tools-boot is doing,
    1. edit /usr/share/initramfs-tools/scripts/local-top/multipath
       (set VERBOSE=3)
    2. update-initramfs -u
    3. reboot, and capture the log from the serial console.

I think we can close this bug.
Thanks, Guido!






More information about the pkg-lvm-maintainers mailing list