apt-get install multipath-tools multipath-tools-boot
update-initramfs -c -t -k 2.6.18-2-pve
proxmox-ims-1:~# ls -al /dev/mapper
total 0
drwxr-xr-x 2 root root 160 Apr 23 22:38 .
drwxr-xr-x 15 root root 13880 Apr 24 06:25 ..
brw-rw---- 1 root disk 253, 3 Apr 23 22:38 222100001551e1c5c
brw-rw---- 1 root disk 253, 4 Apr 23 22:38 2228e00015529cd2b
crw-rw---- 1 root root 10, 63 Apr 22 16:36 control
brw-rw---- 1 root disk 253, 2 Apr 22 16:36 pve-data
brw-rw---- 1 root disk 253, 1 Apr 22 16:36 pve-root
brw-rw---- 1 root disk 253, 0 Apr 22 16:36 pve-swap
proxmox-ims-1:~# cat /boot/grub/device.map
(hd0) /dev/mapper/2228e00015529cd2b
proxmox-ims-1:~# grub --device-map=/boot/grub/device.map
Unknown partition table signature
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd0)
root (hd0)
Filesystem type unknown, using whole disk
grub> setup (hd0,0)
setup (hd0,0)
Error 17: Cannot mount selected partition
apt-get install build-essential gcc-multilib
./configure
make
make install
proxmox-ims-1:~/grub-legacy# grub --device-map=/boot/grub/device.map
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd0)
root (hd0)
Floating point exception
I used the procedure on Intel's support website for SLES 11 (http://download.intel.com/support/motherboards/server/sb/sles11_mpio_setup_bkm_v2.pdf) as a basis, as well as their MPIO configuration file sample for SUSE 11.
devices {
device {
vendor "Intel"
product "Multi-Flex"
path_grouping_policy group_by_prio
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
#prio_callout "/sbin/mpath_prio_intel /dev/%n"
prio_callout "/sbin/mpath_prio_balance_units %d"
path_checker tur
path_selector "round-robin 0"
# hardware_handler "1 alua"
failback immediate
rr_weight uniform
rr_min_io 100
no_path_retry queue
features "1 queue_if_no_path"
}
}
[SIZE=1]~# multipath -ll -v3
ram0: device node name blacklisted
ram1: device node name blacklisted
ram2: device node name blacklisted
ram3: device node name blacklisted
ram4: device node name blacklisted
ram5: device node name blacklisted
ram6: device node name blacklisted
ram7: device node name blacklisted
ram8: device node name blacklisted
ram9: device node name blacklisted
ram10: device node name blacklisted
ram11: device node name blacklisted
ram12: device node name blacklisted
ram13: device node name blacklisted
ram14: device node name blacklisted
ram15: device node name blacklisted
dm-0: device node name blacklisted
sda: not found in pathvec
sda: mask = 0x5
sda: dev_t = 8:0
sda: size = 524289024
sda: subsystem = scsi
sda: vendor = Intel
sda: product = Multi-Flex
sda: rev = 0302
sda: h:b:t:l = 0:0:0:0
sdb: not found in pathvec
sdb: mask = 0x5
sdb: dev_t = 8:16
sdb: size = 1677723648
sdb: subsystem = scsi
sdb: vendor = Intel
sdb: product = Multi-Flex
sdb: rev = 0302
sdb: h:b:t:l = 0:0:0:1
sdc: not found in pathvec
sdc: mask = 0x5
sdc: dev_t = 8:32
sdc: size = 524289024
sdc: subsystem = scsi
sdc: vendor = Intel
sdc: product = Multi-Flex
sdc: rev = 0302
sdc: h:b:t:l = 0:0:1:0
dm-1: device node name blacklisted
sdd: not found in pathvec
sdd: mask = 0x5
sdd: dev_t = 8:48
sdd: size = 1677723648
sdd: subsystem = scsi
sdd: vendor = Intel
sdd: product = Multi-Flex
sdd: rev = 0302
sdd: h:b:t:l = 0:0:1:1
sr0: device node name blacklisted
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev
0:0:0:0 sda 8:0 -1 [undef][undef] Intel ,Multi-Flex
0:0:0:1 sdb 8:16 -1 [undef][undef] Intel ,Multi-Flex
0:0:1:0 sdc 8:32 -1 [undef][undef] Intel ,Multi-Flex
0:0:1:1 sdd 8:48 -1 [undef][undef] Intel ,Multi-Flex
params = 1 queue_if_no_path 0 1 1 round-robin 0 2 1 8:16 100 8:48 100
status = 2 0 0 0 1 1 A 0 2 0 8:16 F 8 8:48 A 0
sdb: mask = 0x4
sdb: path checker = tur (controller setting)
sdb: state = 2
sdb: mask = 0x8
sdb: getprio = /sbin/mpath_prio_balance_units %d (controller setting)
sdb: prio = 1
sdd: mask = 0x4
sdd: path checker = tur (controller setting)
sdd: state = 2
sdd: mask = 0x8
sdd: getprio = /sbin/mpath_prio_balance_units %d (controller setting)
sdd: prio = 1
database (22209000155faaffa) dm-0 Intel ,Multi-Flex
[size=800G][features=1 queue_if_no_path][hwhandler=0]
\_ round-robin 0 [prio=2][active]
\_ 0:0:0:1 sdb 8:16 [failed][ready]
\_ 0:0:1:1 sdd 8:48 [active][ready][/SIZE]
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^(hd|xvd)[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}
devices {
device {
vendor "Intel"
product "Multi-Flex"
path_grouping_policy "group_by_prio"
getuid_callout "/lib/udev/scsi_id -g -u /dev/%n"
prio_callout "/sbin/mpath_prio_alua /dev/%n"
# prio "intel"
path_checker tur
path_selector "round-robin 0"
hardware_handler "1 alua"
failback immediate
rr_weight uniform
rr_min_io 100
no_path_retry queue
features "1 queue_if_no_path"
}
}
multipaths {
multipath {
wwid 2227d000155e89d48
alias system
}
}
update-initramfs -c -t -k 2.6.18-2-pve
My multipath.conf looked like this:
~# multipath -ll
database (22209000155faaffa) dm-0 Intel ,Multi-Flex
[size=800G][features=1 queue_if_no_path][hwhandler=0]
\_ round-robin 0 [prio=50][active]
\_ 0:0:1:1 sdd 8:48 [active][ready]
\_ round-robin 0 [prio=1][enabled]
\_ 0:0:0:1 sdb 8:16 [active][ready]
[SIZE=1]~# multipath -v3
ram0: device node name blacklisted
ram1: device node name blacklisted
ram2: device node name blacklisted
ram3: device node name blacklisted
ram4: device node name blacklisted
ram5: device node name blacklisted
ram6: device node name blacklisted
ram7: device node name blacklisted
ram8: device node name blacklisted
ram9: device node name blacklisted
ram10: device node name blacklisted
ram11: device node name blacklisted
ram12: device node name blacklisted
ram13: device node name blacklisted
ram14: device node name blacklisted
ram15: device node name blacklisted
dm-0: device node name blacklisted
sda: not found in pathvec
sda: mask = 0x1f
sda: dev_t = 8:0
sda: size = 524289024
sda: subsystem = scsi
sda: vendor = Intel
sda: product = Multi-Flex
sda: rev = 0302
sda: h:b:t:l = 0:0:0:0
sda: serial = 4C20202000000000000000009057BEB30ACB2C88
sda: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sda: prio = 50
sda: getuid = /lib/udev/scsi_id -g -u /dev/%n (controller setting)
sda: uid = 222ef0001555ab385 (callout)
sdb: not found in pathvec
sdb: mask = 0x1f
sdb: dev_t = 8:16
sdb: size = 1677723648
sdb: subsystem = scsi
sdb: vendor = Intel
sdb: product = Multi-Flex
sdb: rev = 0302
sdb: h:b:t:l = 0:0:0:1
sdb: serial = 4C202020000000000000000000B0B8C1B122968F
sdb: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sdb: prio = 1
sdb: getuid = /lib/udev/scsi_id -g -u /dev/%n (controller setting)
sdb: uid = 22209000155faaffa (callout)
sdc: not found in pathvec
sdc: mask = 0x1f
sdc: dev_t = 8:32
sdc: size = 524289024
sdc: subsystem = scsi
sdc: vendor = Intel
sdc: product = Multi-Flex
sdc: rev = 0302
sdc: h:b:t:l = 0:0:1:0
sdc: serial = 4C20202000000000000000009057BEB30ACB2C88
sdc: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sdc: prio = 1
sdc: getuid = /lib/udev/scsi_id -g -u /dev/%n (controller setting)
sdc: uid = 222ef0001555ab385 (callout)
sdd: not found in pathvec
sdd: mask = 0x1f
sdd: dev_t = 8:48
sdd: size = 1677723648
sdd: subsystem = scsi
sdd: vendor = Intel
sdd: product = Multi-Flex
sdd: rev = 0302
sdd: h:b:t:l = 0:0:1:1
sdd: serial = 4C202020000000000000000000B0B8C1B122968F
sdd: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sdd: prio = 50
sdd: getuid = /lib/udev/scsi_id -g -u /dev/%n (controller setting)
sdd: uid = 22209000155faaffa (callout)
dm-1: device node name blacklisted
sr0: device node name blacklisted
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev
222ef0001555ab385 0:0:0:0 sda 8:0 50 [undef][undef] Intel ,Multi-Flex
22209000155faaffa 0:0:0:1 sdb 8:16 1 [undef][undef] Intel ,Multi-Flex
222ef0001555ab385 0:0:1:0 sdc 8:32 1 [undef][undef] Intel ,Multi-Flex
22209000155faaffa 0:0:1:1 sdd 8:48 50 [undef][undef] Intel ,Multi-Flex
params = 1 queue_if_no_path 0 2 1 round-robin 0 1 1 8:48 100 round-robin 0 1 1 8:16 100
status = 2 0 0 0 2 1 A 0 1 0 8:48 A 0 E 0 1 0 8:16 A 0
sdd: mask = 0x4
sdd: path checker = tur (controller setting)
sdd: state = 2
sdb: mask = 0x4
sdb: path checker = tur (controller setting)
sdb: state = 2
sda: ownership set to system
sda: not found in pathvec
sda: mask = 0xc
sda: path checker = tur (controller setting)
sda: state = 2
sda: prio = 50
sdc: ownership set to system
sdc: not found in pathvec
sdc: mask = 0xc
sdc: path checker = tur (controller setting)
sdc: state = 2
sdc: prio = 1
system: pgfailback = -2 (controller setting)
system: pgpolicy = group_by_prio (controller setting)
system: selector = round-robin 0 (controller setting)
system: features = 1 queue_if_no_path (controller setting)
system: hwhandler = 0 (internal default)
system: rr_weight = 1 (internal default)
system: minio = 100 (controller setting)
system: no_path_retry = -2 (controller setting)
pg_timeout = NONE (internal default)
system: set ACT_CREATE (map does not exist)
system: domap (0) failure for create/reload map
sda: ownership set to system
sda: not found in pathvec
sda: mask = 0xc
sda: path checker = tur (controller setting)
sda: state = 2
sda: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sda: prio = 50
sdc: ownership set to system
sdc: not found in pathvec
sdc: mask = 0xc
sdc: path checker = tur (controller setting)
sdc: state = 2
sdc: getprio = /sbin/mpath_prio_alua /dev/%n (controller setting)
sdc: prio = 1
system: pgfailback = -2 (controller setting)
system: pgpolicy = group_by_prio (controller setting)
system: selector = round-robin 0 (controller setting)
system: features = 1 queue_if_no_path (controller setting)
system: hwhandler = 0 (internal default)
system: rr_weight = 1 (internal default)
system: minio = 100 (controller setting)
system: no_path_retry = -2 (controller setting)
pg_timeout = NONE (internal default)
system: set ACT_CREATE (map does not exist)
system: domap (0) failure for create/reload map
[/SIZE]
[SIZE=1][B]~#[/B] multipath -F || echo [I]FAIL[/I] && date
[I]FAIL[/I]
Wed Jul 28 15:24:54 CEST 2010
[B]~#[/B] multipath && echo [I]SUCCESS[/I] && date && tail /var/log/syslog
create: database (22209000155faaffa) Intel ,Multi-Flex
[size=800G][features=1 queue_if_no_path][hwhandler=0]
\_ round-robin 0 [prio=50][undef]
\_ 0:0:1:1 sdd 8:48 [undef][ready]
\_ round-robin 0 [prio=1][undef]
\_ 0:0:0:1 sdb 8:16 [undef][ready]
libdevmapper: libdm-common.c(312): Created /dev/mapper/database
[I]SUCCESS[/I]
Wed Jul 28 15:25:05 CEST 2010
Jul 28 15:24:36 cmn1 kernel: [1927061.414134] device-mapper: ioctl: error adding target to table
Jul 28 15:25:05 cmn1 kernel: [1927105.721377] device-mapper: table: 254:0: multipath: error getting device
Jul 28 15:25:05 cmn1 kernel: [1927105.721377] device-mapper: ioctl: error adding target to table
Jul 28 15:25:05 cmn1 kernel: [1927105.729378] device-mapper: table: 254:1: multipath: error getting device
Jul 28 15:25:05 cmn1 kernel: [1927105.729378] device-mapper: ioctl: error adding target to table
[B]~#[/B] [/SIZE]
Wow, David, you're my hero!
What I still have unsolved is my 'system' disk (= sda+sdc, apparently) which doesn't show up at all with multipath. It is mounted and accessible as /dev/sda, while executing fdisk -l /dev/sdc yields nothing.
What's maybe worth noting too: when I run multipath -F to flush all device maps after changing the configuration file the program's exit status is 1 (FAIL) instead of 0