What is the difference between an active-passive array and an active-active array? To answer this question it helps to think of the storage array as a number of disks whose configuration and processing are executed by a set of clustered 'servers' (often called storage controllers, storage processors or directors). The way in which controllers are clustered determines how I/O is directed to the disks, and also how the host failover software deals with a path failure to its allocated disks.
In the case of an active-passive disk array, when a LUN is created it is presented to a host server via a preferred controller and all data I/O for that individual LUN is transmitted and received via that controller. The alternate (standby) controller awaits instructions to take ownership of the LUN in the eventuality that path failover is invoked. Once failover is invoked, the alternate controller assumes control of the LUN and facilitates reads and writes until control is passed back to the original controller.
Active-passive arrays do not allow true load balancing, although administrators should ensure that both controllers in an active-passive array have an even number of LUNs allocated to them so that an equal amount of processing is carried out between them. In this respect, regular monitoring for LUNs that have failed over is recommended, to ensure that the even spread is maintained through the lifetime of the array.
Active-active arrays service I/O rather differently. Often found on high-end enterprise systems, active-active arrays use a number of controllers (from a minimum of two, but with capacity for many more) to service read/write requests to the same LUN. The use of multiple active controllers gives a number of benefits, the primary being the ability to load balance I/O to the array -- using host-based software -- although with more controllers available to service I/O comes an increased tolerance for path failure. It is important to note that whilst active-active arrays allow for increased performance during operation, a failure will reduce the available bandwidth for I/O and could negatively impact performance. As always, a good knowledge of the requirements and a carefully executed design is key to mitigating this risk.
This was first published in June 2009