Multipath Support on Ubuntu Server
Multipath is supported on ppc64el with Ubuntu Server 14.04.3 LTS and later, and Ubuntu Server 15.04 and later.
It can be enabled at installation time with the following boot parameter: disk-detect/multipath/enable=true
For more information and details, refer to the Ubuntu Server Guide's Device Mapper Multipathing page.
Limit on the number of paths with the directio path checker
The directio path checker (e.g., used by default on IBM FlashSystem 840) requests one AIO context per path. The actual number of AIO contexts that are allocated per path may be much greater (8 times the number of possible CPUs), specially on non-virtualized/bare-metal systems, and exceed the maximum number of available AIO contexts. This may cause some of the paths monitored by the directio path checker not be set up correctly by multipath due to an allocation failure for AIO contexts (error message io_setup failed), and thus not be used by multipath.
The solution for this problem has been submitted upstream and is currently under review.
The workaround is to increase the maximum number of available AIO contexts (e.g., increasingly double it until all paths are correctly set up):
# cat /proc/sys/fs/aio-max-nr 65536 # echo $(( 2 * $(cat /proc/sys/fs/aio-max-nr) )) > /proc/sys/fs/aio-max-nr # cat /proc/sys/fs/aio-max-nr 131072 # multipath -v3 | grep 'io_setup failed' # (repeat if required / error messages still present)
Ubuntu Server 14.04.4 LTS - LVM on Multipath
On Ubuntu Server 14.04.4 LTS, installations using LVM on Multipath devices may fail to mount the /boot partition during boot and request manual intervention, with the following message:
The disk drive for /boot is not ready yet or not present. keys:Continue to wait, or Press S to skip mounting or M for manual recovery
The problem affects the ISO (installation media); the netboot installation should work correctly after the release of the fix in LP #1540401.
The work-around procedure is to boot the system with the break=pre-multipath boot option (in the kernel command line), which provides an initramfs shell during the boot process (before execution of multipath scripts), and perform the following steps:
1) Check the LVM Physical Volume is detected at an individual path (not on multipath device):
(initramfs) lvm pvdisplay | grep Name Found duplicate PV B8AXbnmH7pTMYzMlStVAbMhVRelNgY7K: using /dev/sdb3 not /dev/sda3 PV Name /dev/sdb3 VG Name trusty-vg
2) Deactivate the LVM volumes:
(initramfs) lvm vgchange -an Found duplicate PV B8AXbnmH7pTMYzMlStVAbMhVRelNgY7K: using /dev/sdb3 not /dev/sda3 0 logical volume(s) in volume group "trusty-vg" now active
3) Discover the multipath device(s):
(initramfs) multipath create: mpath0 (<...>) undef <...> size=32G features='0' hwhandler='0' wp=undef |-+- policy='round-robin 0' prio=1 status=undef | `- 0:0:0:0 sda 8:0 undef ready running `-+- policy='round-robin 0' prio=1 status=undef `- 0:0:1:0 sdb 8:16 undef ready running
4) Activate partitions on multipath device(s):
(initramfs) kpartx -a -p -part /dev/mapper/mpath0
5) Check the LVM Physical Volume is detected at a multipath device (not an individual path)
(initramfs) lvm pvdisplay | grep Name PV Name /dev/mapper/mpath0-part3 VG Name trusty-vg
6) Activate the LVM volumes:
(initramfs) lvm vgchange -ay 2 logical volume(s) in volume group "trusty-vg" now active
7) Exit the initramfs prompts (two)
(initramfs) exit ... (initramfs) exit ...
The system should boot correctly, with the /boot partition mounted.