# US 8,874,746 B1 · Collaboration between discrete systems and a shared system to consolidate shared storage-related services

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,874,746 B1
- Document ID: US8874746B1
- Status: Granted
- Kind: B1
- Application number: 12/926,307
- Filed: 2010-11-09
- Granted: 2014-10-28
- Earliest claimed: 2010-05-24
- Assignees: DataCore Software Corporation
- Applicants: Agustin Gonzalez
- Inventors: Agustin Gonzalez
- Web page: https://patentgrep.com/patent/US8874746B1

## CPC

- G06F 3/0617: {in relation to availability}
- G06F 3/061: {Improving I/O performance}
- G06F 3/064: {Management of blocks}
- G06F 3/0646: {Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/201: {between storage system components}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- G06F 11/2071: {using a plurality of controllers}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Collaboration between discrete systems and a shared system to consolidate shared storage-related services. In one example, shared, consolidated storage-related services and high-availability are provided by pairing each of a plurality of discrete block storage virtualization modules residing on each discrete computer system to a shared block storage virtualization module residing on a shared computer system, and maintaining logical volume coherency locally by each of the plurality of discrete block storage virtualization modules, and globally by the shared block storage virtualization module. Additionally, allocation of a set of block storage virtualization functions to be performed by at least one of the plurality of discrete block storage virtualization modules or the shared block storage virtualization module can be made according to the pairing.

## Claims

### Claim 1

A method for providing shared, consolidated storage-related services and high-availability, the method comprising:
pairing each of a plurality of discrete block storage virtualization modules to a shared block storage virtualization module, each of the discrete block storage virtualization modules and the shared block storage virtualization module respectively residing on separate application servers, each of the discrete block storage virtualization modules and the shared block storage virtualization modules performing block storage virtualization functions that include presentation of a given virtual disk, the plurality of discrete block storage virtualization modules and the shared block storage virtualization module being distinct from dedicated physical storage resources;
maintaining logical volume coherency locally by and among each of the plurality of discrete block storage virtualization modules, and globally by the shared block storage virtualization module; and
allocating a set of the block storage virtualization functions to be performed between one of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module according to the pairing,
wherein the set of the block storage virtualization functions includes sharing the given virtual disk while maintaining logical volume coherency between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules, using the shared block storage virtualization module as an intermediary.

### Claim 2 (depends on 1)

The method of claim 1, wherein the allocation of the set of the block storage virtualization functions is performed dynamically.

### Claim 3 (depends on 1)

The method of claim 1, wherein the allocation of the set of the block storage virtualization functions is performed under centralized control.

### Claim 4 (depends on 1)

The method of claim 1, wherein said maintaining logical volume coherency comprises maintaining the logical volume coherency of the given virtual disk across each of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module.

### Claim 5 (depends on 1)

The method of claim 1, wherein virtual disks are synchronously mirrored between any of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module to achieve high-availability across physically separate systems.

### Claim 6 (depends on 4)

The method of claim 4, wherein the shared block storage virtualization module offloads a subset of the functions from one or more of the plurality of application servers by performing the subset of the functions on at least one virtual disk mirrored to the shared block virtualization module.

### Claim 7 (depends on 6)

The method of claim 6, wherein the subset of the functions comprises asynchronously replicating at least one virtual disk to a remote site on behalf of the plurality of discrete block storage virtualization modules.

### Claim 8 (depends on 1)

The method of claim 1, wherein the set of the block storage virtualization module functions includes virtual disk migration between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules.

### Claim 9 (depends on 1)

The method of claim 1, wherein one of the plurality of application servers implementing a discrete block storage virtualization module has corresponding local physical storage resources storing data corresponding to the given virtual disk, and wherein loss of access to the local physical storage resources prompts an automatic, non-disruptive failover to the given virtual disk as presented from the shared block storage virtualization module.

### Claim 10

A computer program product for providing shared, consolidated storage-related services and high-availability, the computer program product comprising a non-transitory computer readable medium having program code stored thereon, which when executed performs operations comprising:
pairing each of a plurality of discrete block storage virtualization modules to a shared block storage virtualization module, each of the discrete block storage virtualization modules and the shared block storage virtualization module respectively residing on separate application servers, each of the discrete block storage virtualization modules and the shared block storage virtualization module performing block storage virtualization functions that include presentation of a given virtual disk, the plurality of discrete block storage virtualization modules and the shared block storage virtualization module being distinct from dedicated physical storage resources;
maintaining logical volume coherency locally by and among each of the plurality of discrete block storage virtualization modules, and globally by the shared block storage virtualization module; and
allocating a set of the block storage virtualization functions to be performed between one of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module according to the pairing,
wherein the set of the block storage virtualization functions includes sharing the given virtual disk while maintaining logical volume coherency between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules, using the shared block storage virtualization module as an intermediary.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein said maintaining logical volume coherency comprises maintaining the logical volume coherency of the given virtual disk across each of the plurality of discrete block storage virtualization module and the shared block storage virtualization module.

### Claim 12 (depends on 10)

The computer program product of claim 10, wherein virtual disks are synchronously mirrored between any of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module to achieve high-availability across physically separate systems.

### Claim 13 (depends on 10)

The computer program product o claim 10, wherein the shared block storage virtualization module offloads a subset of the functions from one or more of the plurality of application servers by performing the subset of the functions on at least one virtual disk mirrored to the shared block virtualization module.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the subset of the functions comprises asynchronously replicating at least one virtual disk to a remote site on behalf of the plurality of discrete block storage virtualization modules.

### Claim 15 (depends on 10)

The computer program product o claim 10, wherein the set of the block storage virtualization module functions includes migrating a virtual disk between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules.

### Claim 16 (depends on 10)

The computer program product of claim 10, wherein one of the plurality of application servers implementing a discrete block storage virtualization module has corresponding local physical storage resources storing data corresponding to the given virtual disk, and wherein loss of access to the local physical storage resources prompts an automatic, non-disruptive failover to the given virtual disk as presented from the shared block storage virtualization module.

### Claim 17

An apparatus for providing shared, consolidated storage-related services and high-availability, the apparatus comprising:
a processor; and
a memory, the memory storing program code executable to perform operations comprising:
pairing each of a plurality of discrete block storage virtualization modules to a shared block storage virtualization module, each of the discrete block storage virtualization modules and the shared block storage virtualization module respectively residing on separate application servers, each of the discrete block storage virtualization modules and the shared block storage virtualization module performing block storage virtualization functions that include presentation of a given virtual disk, the plurality of discrete block storage virtualization modules and the shared block storage virtualization module being distinct from dedicated physical storage resources;
maintaining logical volume coherency locally by and among each of the plurality of discrete block storage virtualization modules, and globally by the shared block storage virtualization module; and
allocating a set of the block storage virtualization functions to be performed between one of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module according to the pairing,
wherein the set of the block storage virtualization functions includes sharing the given virtual disk while maintaining logical volume coherency between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules, using the shared block storage virtualization module as an intermediary.

### Claim 18

A system for hardware-independent storage virtualization and centralized storage management, the system comprising:
a plurality of application servers that host one or more application programs, each application server respectively including a discrete block storage virtualization module; and
a shared computer system hosting another application server that is separate from the plurality of application servers and including a shared block storage virtualization module, paired to each of the plurality of discrete block storage virtualization modules,
each of the discrete block storage virtualization modules and the shared block storage virtualization module performing block storage virtualization functions that include presentation of a given virtual disk,
the plurality of discrete block storage virtualization modules and the shared block storage virtualization module being distinct from dedicated physical storage resources,
wherein logical volume coherency for each of the plurality of application servers is maintained locally by and among the respective discrete block storage virtualization modules, and is maintained globally by the shared block storage virtualization module,
a set of the block storage virtualization functions to be performed is allocated between one of the plurality of discrete block storage virtualization modules and the shared block storage virtualization module according to the pairing, and
the set of the block storage virtualization functions includes sharing the given virtual disk while maintaining logical volume coherency between a first discrete block storage virtualization module and a second discrete block storage virtualization module of the plurality of discrete block storage virtualization modules, using the shared block storage virtualization module as an intermediary.

### Claim 19 (depends on 1)

The method of claim 1, wherein the separate application servers respectively of at least the discrete block storage virtualization modules respectively host one or more application programs that are enclosed in virtual machines residing on the plurality of application servers, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.

### Claim 20 (depends on 10)

The computer program product of claim 10, wherein the separate application servers of at least the discrete block storage virtualization modules respectively host one or more application programs that are enclosed in virtual machines residing on the application servers, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.

### Claim 21 (depends on 17)

The apparatus of claim 17, wherein the separate application servers of at least the discrete block storage virtualization modules respectively host one or more application programs that are enclosed in virtual machines residing on the of application servers, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.

### Claim 22 (depends on 1)

The method of claim 1, wherein the shared computer system comprises a server that provides a computing platform.

### Claim 23 (depends on 10)

The computer program product of claim 10, wherein the shared computer system comprises a server that provides a computing platform.

### Claim 24 (depends on 18)

The system of claim 18, wherein the shared computer system comprises a server that provides a computing platform.

### Claim 25 (depends on 1)

The method of claim 1, wherein the separate application servers of at least the discrete block storage virtualization modules respectively host one or more application programs, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.

### Claim 26 (depends on 10)

The computer program product of claim 10, wherein the separate application servers of at least the discrete block storage virtualization modules respectively host one or more application programs, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.

### Claim 27 (depends on 17)

The apparatus of claim 17, wherein the separate application servers of at least the discrete block storage virtualization modules respectively host one or more application programs, such that each discrete block storage virtualization module respectively presents virtual disks to the application programs on the same application server in which the corresponding discrete block storage virtualization module resides.
