Today's enterprise data centers store ever-larger amounts of business critical data that must be immediately and continuously available. Ever larger and more complex storage systems are used for storage of the data. Many different hosts and applications access data on these storage systems. In order to provide security and prevent data corruption, it is often necessary to ensure that the applications and hosts have exclusive access to particular areas of storage in the system.
One mechanism for partitioning storage systems employs the concept of “virtual arrays”. Accordingly, software is provided within a storage array to logically partition the array into separate storage groups. Each storage group includes at least one host and a set of logical units of storage. The logical units of storage in the group are accessible only to the hosts in the group. Other hosts cannot access a storage group to which they have not been granted access. Unfortunately, the current methods for partitioning storage arrays into virtual arrays are highly complex and expensive, and operate only at the storage array level. It is desirable to provide a simpler, inexpensive means of presenting virtual arrays to host systems, and to provide a way of centralizing array partitioning from another part of the system—for example, the fabric. It is also desirable to be able to migrate data from one such presented virtual array to another. It would be further advantageous to provide a failover mechanism between such virtual arrays.