Ask Your Question
0

os_brick multipath liberty

asked 2015-10-26 12:45:53 -0500

jkilborn gravatar image

I have been working with liberty and a san FC driver in cinder, and while is does seem to be better at adding/remove the mpath devices and corresponding /dev/sd device names, it seems to be using the wrong path in the instance that is being created using that backend cinder volume. I created a cinder backed instance on our fiberchannel san.

In the libvirt.xml file, it shows the following for the device: <disk type="block" device="disk"> <driver name="qemu" type="raw" cache="none"/> <source dev="/dev/disk/by-path/pci-0000:42:00.0-fc-0x5000d3100314f623-lun-1"/> <target bus="virtio" dev="vda"/> <serial>55ba0cef-b6cb-4be0-be92-cd53bcacaae9</serial> </disk>

That source dev path is a link to /dev/sdd (in this case)

It seems that using this path will break the whole multipath failover capabilities, as that device does not handle a path failure. The instance should use a multipath device name (I think)

You can see below, the multipath device and the corresponding /dev/sd devices that are found under that multipath device

multipath -l

multipath -l mpathaf (36000d3100314f6000000000000000056) dm-2 COMPELNT,Compellent Vol size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=0 status=active

|- 1:0:0:1 sdc 8:32 active undef running

|- 1:0:3:1 sdd 8:48 active undef running

|- 8:0:3:1 sdf 8:80 active undef running

|- 8:0:0:1 sde 8:64 active undef running

Shouldn't the instance.xml provide the /dev/mapper/mpathaf device to the instance rather than /dev/sdd?

Is this something that the san driver controls, or is do I need to look more at the os_brick code?

Thanks for any insight you might be able to provide

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted
0

answered 2015-10-27 09:26:49 -0500

jkilborn gravatar image

I have resolved this myself, so want to pass along the solution for liberty.

Turns out there is a file that uses a nova configuration setting that is rather ambiguous. Looking at .../nova/virt/libvirt/volume/fibrechannel.py there is an init function

class LibvirtFibreChannelVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver):

"""Driver to attach Fibre Channel Network volumes to libvirt."""
def __init__(self, connection):
    super(LibvirtFibreChannelVolumeDriver,self).__init__(connection, is_block_dev=False)
    # Call the factory here so we can support
    # more than x86 architectures.
    self.connector = connector.InitiatorConnector.factory('FIBRE_CHANNEL', utils.get_root_helper(),
         use_multipath=CONF.libvirt.iscsi_use_multipath, 
         device_scan_attempts=CONF.libvirt.num_iscsi_scan_tries)

The interesting thing is that this Fibre Channlel volume driver init function(above) is using an iscsi_use_multipath conf settting.

So, edit nova.conf, and in the [libvirt] section, add iscsi_use_multipath = True

This sets the driver to try to use multipath.

Seems that his needs to be clarified, or the setting should be changed from iscsi_use_multipath to just use_multipath

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Get to know Ask OpenStack

Resources for moderators

Question Tools

1 follower

Stats

Asked: 2015-10-26 12:45:53 -0500

Seen: 4,266 times

Last updated: Oct 27 '15