When using multipathed 3PAR storage with native XenServer storage functionality (LVHD via FC or iSCSI), the multipath driver may not balance the load across all paths properly.  In a multi-host resource pool, it has been experienced that some hosts balance properly while other hosts do not, making the symptoms rather random.  The symptoms were identified by isolating a workload to use specific array-side ports and viewing the performance view in the 3PAR interface.

Background:

By default, XenServer’s multipath driver doesn’t have a specific configuration for a 3PAR array, and rather uses a generic configuration.  This configuration may not properly identify the characteristics of the paths and therefore does not load balance the paths properly.

Notes:

  • The following configuration was employed on XenServer 5.6 FP1, but should be relevant to at least XenServer 5.6 and potentially XenServer 5.5.  The configuration resolved the issue and had positive effect, but was not rigorously tested.
  • This article does not go into detail on how to use the Linux command line to manipulate text files.  Please refer to Linux documentation for further information.
  • On XenServer 5.6, the multipath.conf “file” is a symbolic link to multipath-enabled.conf when multipathing is enabled, and to multipath-disabled.conf when multipathing is disabled.  When following the steps below on 5.6, make sure multipathing is enabled prior to completing the steps, or modify the multipath-enabled.conf instead of multipath.conf.

Procedure:

The following should be completed on each XenServer host:

  • Evacuate VMs from the host, either by migration (Maintenance Mode) or shutdown
  • Connect to the CLI of the host, either through the console tab in XenCenter or through an SSH client (OpenSSH, Putty, etc.)
  • cd to /etc
  • Backup the multipath.conf file
  • Edit multipath.conf, adding the following “device” entry to the “devices” tree:
    multipath.conf
    device {
            vendor <span class="code-quote">"3PARdata"</span>
            product <span class="code-quote">"VV"</span>
            getuid_callout <span class="code-quote">"/sbin/scsi_id -g -u -s /block/%n"</span>
            path_grouping_policy multibus
            path_checker tur
            no_path_retry 60
    }
  • Reboot the XenServer host