One of the benefits of modern SAN design is the ability to create very reliable and fault tolerant storage. It is now possible to have storage with no single point of failure. In the past this was not really possible. One of the things that makes SAN storage so fault tolerant is the possibility of having multiple paths from the host to the storage. This is possible because modern arrays allow access to storage on multiple ports and SAN design usually includes multiple independent fabrics each providing a path from the host to the storage. Even the individual components are fault tolerant. The fibre channel switches have redundant power supplies. The arrays and servers have redundant power supplies. The hosts have multiple HBAs and the storage itself is protected by mirroring or raid-5 with hot standby spares. All this adds up to very reliable storage.
On the host side additional functionality is required to manage the multiple paths to the storage for load balancing and failover. Veritas can provide some of this capability and most of the array vendors provide some sort of value added software to provide load balancing and failover functionality.
If you are going to rely on Veritas for DMP you will likely need an Array Support Library, ASL. Beginning with Veritas Volume Manager v3.2 it has been possible for array vendors to provide DMP through VxVM by providing the array user with an ASL. In Solaris, simply use pkgadd to add the package then run “vxdctl enable”. After vxdctl completes you can verify that veritas is managing the paths by running “vxdmpadm getsubpaths ctrl=c2″ if controller c2 were one of the controllers you’re interested in.
Before you installed the ASL you probably noticed that in the output of “vxdisk list” you could see all the paths to the disks. After installing the ASL vxdisk list will show only one path. To learn more about other paths just run “vxdisk list cxtxdx” on the disk you’re interested in. It will provide additional information, including the paths to the disk and whether they are enabled and which paths are active and passive.
Midrange arrays usually lack active/active capability so load balancing accross controllers doesn’t work. In other words, if you have a LUN on both array controllers with controller 0 being primary and your host has 2 HBAs, one connected to each controller then the HBA connected to array controller 0 will be the active path and the other will be the passive path. The passive path can be used for failover only, not load balancing.
One way to effect load balancing with a midrange array is to simply divide the primary assignment of LUNs accross the 2 controllers, taking usage into account.
Secure Path is a load balancing, failover software package that HP optionally supplies with their array. If you’re not a Veritas customer you may want to consider Secure Path if you purchase an HP array. Secure Path manages the paths via device manipulation at a point before the OS creates disk devices for the user. Because of this, the OS and applications see only one path. On a system running Secure Path, if you did a “ls -l /dev/dsk/cxtxdxs2″ where the cxtxdxs2 disk was a HP array LUN you would see that the device path was an swsp device. That is a storage works secure path.
A convenient utility comes with secure path called spmgr. This utility will allow you to configure notifications, logging and the addition and deletion of luns. You can also use spmgr to get status of the various paths and to configure an appropriate load balancing policy.
ALUA, Asymmetric logical unit access
ALUA is a relatively new multipathing technology for asymmetrical arrays. If the array is ALUA compliant and the host multipathing layer is ALUA aware then virtually no additional configuration is required for proper path management by the host. An Asymmetrical array is one which provides different levels of access per port. For example on a typical Asymmetrical array with 2 controllers it may be that a particular LUN’s paths to controller-0 port-0 are active and optimized while that LUN’s paths to controller-1 port-0 are active non-optimized. The multipathing layer should then use paths to controller-0 port-0 as the primary paths and paths to controller-1 port-0 as the secondary (failover) paths. Sun Solaris 10 MPxIO is an example of an ALUA aware multipathing solution. A IBM N5300 with Data ONTAP 7.2.x is an example of an ALUA compliant array