1. Field of the Invention
This application relates generally to the virtualization of storage across multiple computer systems. More particularly, this invention relates to the collaboration between block storage virtualization modules executing inside one or more “discrete” computer systems and a block storage virtualization module executing on a separate “shared” computer system.
2. Description of the Related Art
Many computer systems, particularly server-class machines, come equipped with very powerful processors, large capacity direct-attached storage (DAS) and private logical volume management (LVM) functions. IT organizations divide workloads among multiples of these self-contained servers to independently scale throughput. This arrangement also helps to isolate applications from each other, making upgrades and troubleshooting easier. However, these “nothing shared” configurations suffer from poor capacity utilization and a duplication of storage management effort. Furthermore, each server is a single point of failure and disruption.
FIG. 1 is a block diagram illustrating an example of Servers 102a-c. Each server may be hosting several virtual machines (VM) with corresponding data storage provided via Direct-Attached Storage (DAS) 106a-c. 
The shortcomings discussed above may be partially mitigated by connecting those multiple computer systems to a common set of external disks using a Storage Area Network (SAN). SAN-capable storage systems promote resource sharing and centralized storage management among the group of servers. Clustered systems may also depend on SANs to dynamically migrate and failover workloads between each other by transferring the running state of programs over shared storage.
However, relying on one shared storage system to provide all the storage resources and functions to multiple computer systems creates a serious single point of failure, even when the storage device is composed of internally redundant parts.
FIG. 2 is a schematic diagram illustrating an example of a single point of failure wherein Servers 202a-c depend on a single Internally Redundant External Storage Array 204. The Servers 202a-c may similarly implement VMs, and may further implement LVM to access virtual disks A1-Zn. Access to the Array 204 may be provided through a multipath IO (MPIO) driver using preferred and alternative paths.
Whenever the entire external storage system is taken out-of-service for planned or unplanned reasons, all computer systems 202a-c dependent on Array 204 lose access to their data and concurrently suffer downtime. In contrast, component failures in discrete computer systems with DAS impact only the physical machine on which they reside. For example, in FIG. 1, loss of access to disks 106b only affects server 102b. 
Some storage virtualization products provide shared “virtual disk” access among multiple computer systems while eliminating storage as a single point of failure. They simultaneously mirror virtual disks between two or more physically-separated, external storage subsystems. When one storage subsystem is taken out-of-service, the surviving subsystem(s) continue to provide shared storage services over an alternate path.
FIG. 3 is a block diagram illustrating a configuration where all shared virtual disk resources and storage management functions are supplied to the computer systems 302a-c exclusively by two redundant external nodes 304a, 304b. The two nodes coordinate block storage virtualization functions in order to represent virtual disks in a consistent manner.
There are several concerns that are sometimes raised in connection with using such an implementation. One is concern with keeping all storage on the SAN with no local server resources to fall back upon. Second, organizations may not want to migrate all local data to new disks on the SAN or replace their existing DAS with new SAN-capable devices. Still others may be discouraged by the cost and complexity of the redundant equipment, cable paths and switching infrastructure necessary to eliminate single points of failure.
A solution that combines existing DAS and SAN storage resources could help overcome some of those impediments. For example, physical storage redundancy can be achieved by having each computer system independently mirror blocks of its logical volumes from DAS to a common external SAN storage system. However, only the LVM on the originating computer system can makes sense of the disk blocks stored on the SAN. Consequently, neither the external storage device nor any of the other computer systems can do anything useful with the mirrored blocks, even when given shared access to them. Therefore, this arrangement fails to address the requirement for coherent sharing of logical disks among the various computer systems and fails to eliminate the duplication of storage management.
Alternative approaches are needed to meet the requirements for physically-separate redundancy, as well as shared access to disk resources and centralized advanced functions.