MPIO on Linux

http://christophe.varoqui.free.fr/

UPDATE 2012-09-30:
URL changed to top level. This is the home to multipath-tools. No longer in the wiki.
Copying page here for reference.

multipath-tools

Homepage of the upstream project used to drive the Device Mapper multipathing driver.
As multipathing rhymes with clustering, you might be interested in opensvc GPL clustering stack.

Contacts :

  • christophe.varoqui@opensvc.com
  • dm-devel@redhat.com

Contribute :

You can contribute code, editorial work and testing.
If you are in such position, you can also contribute hardware or hardware access.

git repository :


mkdir -p ~/scm/multipath-tools.upstream
cd ~/scm/multipath-tools.upstream
git-clone http://kernel.org/pub/scm/linux/storage/multipath-tools/.git

build :

On debian based systems :

apt-get install libreadline-dev libaio-dev libdevmapper-dev
make

Documentation :




Latest release :

multipath-tools-0.4.9.tar.bz2

incremental bugfixes :

None for now.

Announce :

2010-05-22 multipath-tools-0.4.9 shortlog :

  • Changes that may require your altering your config file :
    • rename hp_sw hwhandler
    • directio is now the default checker (async)
    • deprecated prio_callout keyword: now use prio/prio_args
    • move bindings file location to /etc
    • add ‘max_fds’ keyword
    • add ‘verbosity’ keyword
    • add ‘queue_without_daemon’ keyword
    • add ‘mode’, ‘uid’ and ‘gid’ keywords
    • add ‘fast_io_fail’ and ‘dev_loss_tmo’ keywords
    • add ‘checker’ keyword as alias to ‘path_checker’
  • Features
    • make kpartx deal with more than 256 minor numbers
    • fail/reinstate CLI commands disable/enable path checker
    • support multipath-capable cciss hardware, add cciss_tur checker
    • ‘show config’ output usable as a config file replacement
    • create read-only multipath if rw try failed
    • care about offlined paths
    • support resizing of multipath maps
    • kpartx removes its loop devices
    • support other load-balancing policies
    • add datacore prioritizer
    • add ‘-r’ multipath arg to force maps reload
    • add ‘show paths format’ cli command
    • add ‘show maps format’ cli command
    • add ‘show status’ cli command
    • add ‘show wildcards’ cli command
    • add ‘quit’ cli command
    • add ‘enablequeueing’ and ‘disablequeueing’ cli commands
  • Fixes
    • leaks plugged (virtualiron, suse, redhat work)
    • honour ALUA preference indicator
  • Developers changes :
    • no more prioritizer callouts. replaced by mem-pinned .so to avoid having to cache the callouts.
    • move checkers to mem-pinned .so too
    • allow arguments passing to prioritizers
  • Contributors :
    • Alex Zeffertt < ...@eu.citrix.com>
    • Andrey Panin < ...@pazke.donpac.ru>
    • Babu Moger < ...@lsi.com>
    • Benjamin Marzinski < ...@redhat.com>
    • Brian King < ...@linux.vnet.ibm.com>
    • Bryn M.Reeves < ...@redhat.com>
    • Chandra Seetharaman < ...@us.ibm.com>
    • Charlie Brady < ...@budge.apana.org.au>
    • Chauhan, Vijay < ...@lsi.com>
    • Christophe Varoqui < ...@opensvc.com>
    • Colin Watson < ...@canonical.com>
    • Dave Wysochanski < ...@redhat.com>
    • Guido Guenther < ...@sigxcpu.org>
    • Guido Günther < ...@sigxcpu.org>
    • Hannes Reinecke < ...@suse.de>
    • Jim Lester < ...@compellent.com>
    • Kiyoshi Ueda < ...@ct.jp.nec.com>
    • Konrad Rzeszutek < ...@virtualiron.com>
    • Martin Petermann < ...@linux.vnet.ibm.com>
    • Matthew Kent < ...@bravenet.com>
    • Mike Anderson < ...@linux.vnet.ibm.com>
    • Mike Snitzer < ...@redhat.com>
    • Moger, Babu < ...@lsi.com>
    • Nikanth Karthikesan < ...@suse.de>
    • Ritesh Raj Sarraf < ...@researchut.com>
    • Rumko < ...@gmail.com>
    • Stefan Bader < ...@de.ibm.com>
    • Stefan Haberland < ...@de.ibm.com>
    • Stefan Weinhuber < ...@de.ibm.com>
    • Yanqing Liu < ...@dell.com>

Dependencies :

Linux kernel

  • 2.6.10-rc*-udm2 or later
  • 2.6.11-mm* or later
  • 2.6.12-rc1 or later

udev 050+
libdevmapper 1.2.38+

Known issues :

  • Update your config file : selector = ’round-robin 0′ (since 0.3.9)
  • If you relied on the ‘-D’ multipath command flag, please adapt (since 0.4.0).
  • The kernel feature ‘queue_if_no_path’ is known to have bugs (up to 2.6.10rc?-udm2).
  • The EMC checker has a known bug, fixed in the next release (up to 0.4.1).
  • The tools exits if /sys/fc_transport/target$h:$b:$t does not exists : not fair, fixed in next release (0.4.1 only).
  • failback doesn’t work (up to 0.4.5 included)
  • make rpm doesn’t work (0.4.5 only)

Previous releases :

repository

Change logs :

full pre-0.4.5 ChangeLog
0.4.5+ changes are tracked through the git repository : here

2007-08-02 multipath-tools-0.4.8 shortlog :

  • Changes that may require your altering your config file :
    • seed cciss multipathing support for recent MSA hardware : warning, the cciss blacklist is not hardcoded anymore. Proliant owners should add it to your config file if you don’t want surprises.
    • pp_sgi renamed to pp_rdac : no behaviour change otherwise
    • Add ‘^dcssblk[0-9]*’ to default blacklist
    • Directio is now the default checker
    • Move id callouts to standardized /lib/udev
    • Adopt Suse udev rules
    • Add path group timeout handling (pg_timeout keyword)
    • Add blacklist exceptions
    • Almost every vendor updated the internal defaults for their hardware (‘show config’ cli command is your friend)
    • We support matching by SCSI revision now, in addition to Vendor and Product. No rev specified means all rev matches.
    • Blacklist entries and other strings in the config file are true regular expressions, not shell expansion syntax
  • Features
    • prio: add a prioritizer for HP storageworks arrays
    • prio: add a prioritizer for HDS modular arrays
    • checkers: asynchronous checker framework. Directio is the first and only user. Means no more checking loop blocking (while holding lock the cli tries to acquire for example).
    • checkers: EMC checker support for ALUA EMC arrays
    • checkers: add RDAC path checker
    • lib: pick up existing alias (if any) from current dm config
    • cli: add syntax auto-completion
    • cli: new command, show blacklist
    • doc: More man pages
    • kpartx: handling for SUN partition tables
    • kpartx: c-slice handling for BSD partition tables
    • kpartx: handling for extended partitions
    • kpartx: accept /dev/dm-* as arg
  • Fixes
    • checkers: add a timeout to SG_IO ioctls
    • checkers: read buffer size bumped to 4096 bytes (Infiniband)
    • checkers: handling CLARiiON I/O to inactive snapshot logical units
    • lib: support newer kernels sysfs layout (remove libsysfs dependency)
    • lib: we keep stale paths in multipaths in case they get back online, but multipathd had trouble dealing with device name change in this situation : fixed
    • lib: listen events from udev socket instead of netlink : proper serialization allows to remove wait_for_devnode_appearance() hacks
    • lib: fix user_friendly_names race leading to a mpathX being served multiple times
    • lib: fix bug limiting to <8 paths luns
    • lib: don’t discard paths with large uuid
    • lib: don’t segfault when no config file
    • kpartx: large file support
    • kpartx: fix partition calculations of DASD partitions
    • prio: fix ALUA for minor >256
  • Developers changes :
    • checkers: Checkers attached to different paths of a same multipath can share information through a context pointer in ‘struct multipath’
    • lib: use DM uuid ‘mpath-‘ prefix
    • kpartx: use DM uuid ‘part%d-‘ prefix

2006-03-13 multipath-tools-0.4.7 shortlog :

  • multipathd empowering
    • DM driving directly from the daemon, without resorting to multipath(8)
    • udev rules deprecation, as events are acted upon directly through uevent in the daemon. The kpartx rule remains though
  • multipathd CLI commands
    • enh : the CLI parser now accept unambiguous shortcuts, like ‘sho topo’ for ‘show topology’
    • new : ‘show config’ drops a config file as seen by the live daemon
    • new : ‘show maps stats’ drops some statistics about multipaths events
    • new : ‘show topology’, mimics the ‘multipath -ll’ output
    • new : ‘show map $map topology’, mimics the ‘multipath -ll $map’ output
    • enh : ‘reconfigure’ correctness issues fixed, scope extended
    • enh : ‘add/del map’ now apply to the DM live configuration too (!!caution, maps are really removed!!)
    • rem : ‘dump pathvec’, deprecated
  • prioritizers
    • new : netapp prioritizer
    • new : tpc prioritizer (SGI, …)
  • netlink uevent robustness
    • bigger receive buffer
    • uevent queueing and async dequeueing
  • configuration
    • rr_min_io can be put in ‘device’ and ‘multipath’ config blocks
    • internal defaults are now exhaustive
    • tweak defaults for HP, SGI, IBM, EMC, …
  • multipaths renaming through DM renames rather than remove/add cycles
  • logging
    • ‘multipathd -d’ now prints the date
    • overall output beautifying
  • drop the ‘path cache’ framework
  • kpartx
    • fixes to dos partition handler
    • new mac partition handler
  • make the tools work with DASD
  • blacklist
    • add per-device product-string blacklist
    • add a device blacklist
    • add a wwid blacklist
    • deprecate the ‘devnode_blacklist’ keyword ub favor of ‘blacklist’
  • adapt to libsysfs2 api, without breaking compat with libsysfs1
  • checkers
    • API rewrite
    • reduce allocation on the directio checking code path

2005-11-11 multipath-tools-0.4.6 shortlog :

  • fixes
  • add/del cli commands accept map names as param
  • new add ‘reinstate/fail’ cli commands
  • new add ‘suspend/resume’ cli commands
  • extended information display in ‘show map/paths’ cli commands
  • fix thread reaping logic
  • user friendly map names (mpath[0..n]) without alias defines
  • option to disable io queueing if no valid path after a delay
  • vendor/product as regexp in config file
  • set devmap uuid as multipath wwid
  • move hotplug logic to udev’s rules.d/
  • configlets now adds up or replace the hardcoded ones
  • ALUA prioritizer update
  • option to use priorities as weights in the round-robin scheduler
  • add the directio checker

2005-09-02 multipath-tools-0.4.5 shortlog :

  • multipathd keeps Device Mapper path status in sync with path checker status : proactive fail_path and reinstate_path
  • proactive path group re-enable, as soon as one path goes up
  • multipathd is now fully event driven :
    • NetLink uevents for kernels/distro that enables the feature
    • Hotplug
    • Unix socket messages
  • a Command Line Interface to drive and inspect the daemon
  • remove the multipath(8) cache file logic in favour of a multipathd<->multipath unix socket request/reply design
  • split multipath(8) listing option into
    • short-list (-l) : don’t fetch wwid, path checker status, priorities … fast
    • detailed-list (-ll) : refetch all info
  • the daemon asynchronous logger is now solid and avoid sending critical messages
  • daemon CLI command to reload the config file
  • path checking interval gets longer when the path is reliably up, resets to short as soon as a problem occur
  • daemon implements 3 path group failback methods :
    • manual
    • immediate : failback as soon as an (enabled && !active) PG gets the highest priority
    • defered : failback to the highest priority (enabled && !active) PG n seconds after the last PG priority order change
  • remove over-complicated and thread-confusing daemon initial clone() w/ private namespace
  • prioritizers official prefix is now mpath_prio_
  • multipath(8) displays PG priorities when available
  • new hp_sw checker. It’s a tri-state UP/DOWN/GHOST
  • new directio checker. Useful with DASD devices. May suplant readsector0 in the long run ?
  • stricter default blacklist regexps
  • new ‘-f’ multipath(8) flag to selectively suppress a multipath map, and its device-mapped partitions
  • alua prioritizer update, should work on x86
  • support for >2TB multipaths
  • claimed device detection : no more warning/error messages with paths pinned by mounted FS
  • option to use priorities as weights in the round-robin scheduler : for people who can’t wait for a qlen-based scheduler

2005-04-24 multipath-tools-0.4.4 shortlog :

  • 2 new path prioritizers : pp_alua and pp_emc
  • devmap_name can now filter by target_type (-t flag).
  • For example, no output if not ‘multipath’ type.
  • the daemon sets /proc/self/oom_adj to -17, hence is
  • protected from the oom killer. Watch out for leaks.
  • libdevmapper 1.01.01 or newer is now recquired
  • blacklist synthax is now regex based. Update your config files. The packaged templates are up to date.
  • you can now set wwid in the blacklist
  • multipathd gained a ‘-v’ flag to tune verbosity
  • daemon logging is now staged and asynchronous to avoid syslogd possible hangs
  • droped local klibc, libsysfs and libdevmapper
  • multipath caches path info. Cache expire in 5sec.
  • ‘multipath -l’ accepts a devname or dev_t filter


Comments are closed.