https://blueprints.launchpad.net/fuel/+spec/support-for-multipath-disk
Many of real OpenStack production systems use external devices - which provide storage solutions. Most of them provide possibility to connect block devices using FC (Fiber Channel) HBA (Host Based Adapter) with multipath support.
FC HBA is an useful technology that can enable OpenStack to run more virtual machines (due high inputoutput productivity) and applications per server, reduce management time and server power draw and protect data from silent data corruption (usually, external data storage solution take care about data integrity and safety). FC HBA with multipath architect also increase high availability and stability of whole system.
The field analysis showed that FC HBA multipath is more frequent use case than iSCSI, so this proposal is to implement support for FC HBA multipath disks in Fuel 9.0, which means at least the following:
- enable of FC HBA multipath devices support in bootstraptarget system. Multipath support should be enabled in Fuel by default
- change fuel-nailgun-agent to send discovered multipath topology in Nailgun
- export of multipath device info into UI as a single block device
- extend fuel-agent to enable provisioning nodes with multipath devices. It requires to fix issue with naming of partitions on multipath devices.
Recognized multipath configuration will be available on Web UI, for each node, in the node information dialog. Each multipath device will be exported as a single block device.
Disk configuration reported by fuel-nailgun-agent will be stored, as it works now, as a part of Node DB instance metadata. Disk configuration will be displayed in Web UI as is.
We propose to extend fuel-nailgun-agent with support for multipath devices. That means, that fuel-nailgun-agent will be able to handle not only physical block devices, but also /dev/mapper/* and /dev/mpath/* devices - which will be populated by multipath service.
For example, a node with two HBAs attached to a storage controller with two ports via a single unzoned FC HBA switch sees four devices: /dev/sda, /dev/sdb, /dev/sdc, and /dev/sdd. DM-Multipath creates a single device with a unique WWID (WWN) that reroutes I/O to those four underlying devices according to the multipath configuration.
We suggest adding logic in fuel-nailgun-agent to discover and report multipath topology in following format:
{'disks': [{'name': 'dm-42', 'model': '', 'removable': '0', 'size': 53687091200, 'extra': ['disk/by-id/dm-uuid-mpath-42'] 'multipaths':['sda', 'sdb']},... ]}
Underlying devices (in current sample - sda and sdb) will not be reported into nailgun as a separate block device. Metadata for not multipatch devices will not be changed.
We propose to extend default fuel-bootstrap build with new packages and parameters needed for multipath support.
Support for HBA card will be provided by Ubuntu distribution or driver delivered by user to bootstrap during build process. User can manually rebuild bootstrap with required driver package.
We propose to extend fuel-agent to enable provisioning nodes with multipath devices. It requires to fix issue with naming of partitions on multipath devices.
None
None
None
None
None
Alternative solution is following fuel-nailgun-agent should be extended to provide parsed output from commands
`dmsetup info -c --nameprefixes --noheadings --rows -o name,uuid,blkdevname,blkdevs_used` `udevadm info --query=property --export --name=#{device_name}`
as for discovered block devices. It should be enough to determingite the multipath configuration on server side.
New version of fuel-nailgun-agent report will look this:
{ "meta":{ ... "disks":{ "blocks":[ { "removable": "0", "size": 53687091200, "udev_info":{ "DEVLINKS":"/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_35e53b2cb5114d80b28b /dev/disk/by-path/pci-0000:00:09.0-scsi-0:0:0:0", "DEVPATH":"/devices/pci0000:00/0000:00:09.0/host2/target2:0:0/2:0:0:0/block/sda", "MAJOR":"8", "MINOR":"0", "ID_BUS": "scis", "ID_MODEL": "Toshiba", ... }, },... ], "dmsetup_info": { "DM_NAME":"0QEMU QEMU HARDDISK 35e53b2cb5114d80b28b", "DM_UUID":"mpath-0QEMU QEMU HARDDISK 35e53b2cb5114d80b28b", "DM_BLKDEVS_USED":"sdb,sda" "DM_SUBSYSTEM":"mpath" } } } }
Reports in new format will be handled by url “/api/v1/nodes/agent/”. To handle new report format API microversion v1.1 will be pointed in HTTP handlers, like OpenStack components do. New API handler should be available to receive and process data about nodes disks from the fuel-nailgun-agent.
Only disk part of report will be changed. Received data will be processed and stored as part of Node DB instance metadata in the format compatible with current Nailgun UI. Output of REST API will not be changed.
None
None
None
None
We are not expecting any problems related with default installation (wo FC HBA multipath system). All others impact can be related only with FC HBA multipath system itself.
We propose to add possibility to attach disk via multipath and FC HBA for nodes. Disks will be available on fuel ui, and normally processed like physical disks. This feature don’t have any impact on previous installations, only extend disks support.
None
None
None
Proper functional tests should be implemented.