UsMan's WoRkSpAce

Friday, November 19, 2010

Symantec DMP in-depth

Effective multi-pathing driver should meet throughput performance, failover performance and scalability requirements as well as business requirements of TCO and data centre agility. DMP provides full integrated support of SCSI-3 persistent reservation and I/O fencing. It can be managed from Veritas storage foundation manager.

* Below are the type of storage array in terms of multipathing:

Active-Active:

If disk array accepts and executes I/O requests to a single LUN on both controllers. No concept of primary and secondary paths.


Active-Passive:

Array accepts and executes I/O requests on one or more ports of one controller only (primary) but is able to switch to the other controller in case of failure. A typical AP array will trigger failover (LUN trespass) for a LUN if I/O is received on secondary path

Active-passive concurrent array (A/P-C) accepts and executes I/O requests to a LUN on two or more ports of the same controller.

Explicit failover (A/PF) array: Active passive array that does a LUN trespass only when it receives model specific SCSi commands from the hosts.

LUN group failover (A/PG) array: Active passive array that has a group of LUNs that are failed over simultaneously.

Active-Active asymmetric (A/A-A) array: Comply with ALUA method in SCSI-3 standards. LUN in this array can be accessed through both controller without dramatic consequences. One of the two paths provide sub-optimal performance. No concept of primary and secondary paths. This array behaves more like AP arrays during normal operation and AA arrays during failover.

VxVM shows type field for each path for AP arrays since they have a concept of primary and secondary paths. Accessing a LUN through its secondary controller/path can result in LUN trespass or I/O failure.

General:
For single-path devices, VxVM virtualization layer directly sends I/O requests to OS SCSI driver without passing them to DMP. This is called 'fast path' access. For complex arrays, DMP requires the use of array-specific array support libraries (ASLs) possibly coupled with array policy modules (APMs). ASL and APM allows DMP to claim devices during device discovery, correlate paths to same devices, gather device attributes, identify the array and the set of commands to manage multi-paths to that array. I/O software stack has file system or raw device access at the top followed by VxVM virtualization layer, DMP path management, OS SCSI driver and OS HBA driver at the bottom. DMP maximises throughput by performing load balancing. DMP offers six I/O load balancing policies, balanced path , round robin (default for AP array), minimum queue length (default for AA array), adaptive, priority, single active path. DMP manages failover time independently of the number of LUNs. In version 5.0, DMP has a fully multi-threaded, concurrent and non-blocking core design comprising of a pool of worker threads in kernel. DMP bypass SCSI layer and sends queries directly to HBA once an I/O is not returned to it. A restore task is created every 300 seconds (dmp_restore_interval). This task can restore previously failed paths. Path analysis is done by issuing one or more SCSI inquiry command. When a DMP I/O request to SCSI driver fails within dmp_failed_io_threshold interval, DMP begins error recovery by issuing SCSI inquiry commands on the suspect path. HBA transforms data between memory and I/O bus or storage format. HBA card and SAN switch parameters may impact DMP operations. Link-down timeouts and link retry count are specific to HBA driver. SAN switch specifics are interoperatability mode, buffer credits,

Below device discovery commands are supported by DMP.

devfsadm (Solaris): Performs subsystem scan, updates the device tree and loads drivers if necessary
cfgmgr (AIX), ioscan and insf -e (HP-UX) and makedev (Linux)

Terms:

Veritas DMP node name: is the meta device name which represents multiple paths to a disk. DMP node name is generated from device name according to VxVM naming scheme.
vxdmpadm: Command line interface to VxVM DMP feature
Veritas metanode: Structures created by VxVM in /dev file system for each storage device that it detects. Each node represents a metadevice.
vxconfigd: Daemon that identifies multiple paths to a device by issuing a SCSI inquiry command to each OS detected device. Daemon also rescans the storage configuration and updates in-memory data structures to reflect changes since last scan. Builds a VxVM version of device tree. For each device, each DDL calls each installed ASL in turn until an ASL claims the device based on vendor and product identifiers.
Disk access name (DANAME):
Disk media name (DMNAME):
ASL & APM: ASL tuning or disabling unused ASLs are not required in version 5 and above. APM are dynamically loadable kernel modules invoked by vxdmp driver. APM implements functions such as I/O request handling, error handling, get path state, LUN group failover, explicit failover and failover path selection.
vxesd: Event source daemon monitors event on the system to trigger appropriate DMP config updates. Gathers fabric topology information.
dual port disk drives:
DMP subpath failover groups: Set of LUN paths that are supported by the same two HBA and controller ports.
DMP suspect path and pro-active failure handling:
SNIA HBA API provided by modern HBA drivers

Useful commands:

vxdmpadm getdmpnode dmpnodename=[]
vxdmpadm getdmpnode encosure=[]
vxdisk path (Displays information about VxVM metadevices and the paths to which they correspond)
vxddladm listsupport (ASLs and the devices that they support)
vxdmpadm iostat show all (shows the effect of load balancing policies)
vxdmpadm gettune all

Veritas detected 2540 as A/P-C array
Veritas detected 3510 as A/A array

Tunable DMP variables:

dmp_restore_policy: values check_all and check_disabled
dmp_restore_interval
dmp_daemon_count
dmp_retry_count, No of times SCSI inquiry command is resent before failing a path


Reference:
http://sfdoccentral.symantec.com/sf/5.0MP3/solaris/html/vxvm_admin/ch03s01.htm
http://www.symantec.com/connect/articles/veritas-storage-foundation-50-dynamic-multi-pathing-optimizing-availability-and-performance

Examples:

root@mail2 # /etc/vx/diag.d/vxdmpinq /dev/vx/rdmp/disk_5s2

Inquiry for /dev/vx/rdmp/disk_5s2, evpd 0x0, page code 0x0
Vendor id : SEAGATE
Product id : ST373207LSUN72G
Revision : 045A
Serial Number : 054332W230