# US 10,481,808 B1 · Block caching in a shared storage environment

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

- Number: US 10,481,808 B1
- Document ID: US10481808B1
- Status: Granted
- Kind: B1
- Application number: 15/585,771
- Filed: 2017-05-03
- Granted: 2019-11-19
- Earliest claimed: 2012-12-17
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Gang Ma; Sorin Faibish; Percy Tzelnic; James M. Pedone, Jr.
- Web page: https://patentgrep.com/patent/US10481808B1

## CPC

- G06F 12/0815: Cache consistency protocols
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 12/0808: with cache invalidating means (G06F12/0815 takes precedence)
- G06F 12/084: with a shared cache
- G06F 12/0871: Allocation or management of cache space
- G06F 12/0888: using selective caching, e.g. bypass
- G06F 12/12: Replacement control
- G06F 2212/1016: Performance improvement
- G06F 2212/283: Plural cache memories
- G06F 2212/311: In host system
- G06F 2212/314: In storage network, e.g. network attached cache
- G06F 2212/6046: Using a specific cache allocation policy other than replacement policy
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A storage system comprises a shared storage environment that includes a storage array having at least one storage volume shared between first and second host devices. The storage system further comprises a server associated with the storage array, at least first and second clients associated with the respective first and second host devices, and a first block cache arranged between the first client and the storage array. The server is configured to coordinate operations of the first and second clients relating to the storage volume shared between the first and second host devices in a manner that ensures coherency of data stored in the first block cache. The server may comprise a storage block mapping protocol (SBMP) server and the first and second clients may comprise respective SBMP clients. The block cache is illustratively implemented using a VFCache or other type of server flash cache.

## Claims

### Claim 1

An apparatus comprising:
a shared storage environment comprising a storage array having at least one storage volume shared between first and second host devices;
a server associated with the storage array and external to the first and second host devices;
at least first and second clients implemented on the respective first and second host devices; and
a first block cache located between the first client and the storage array, wherein the first block cache is implemented externally to the storage array;
wherein the first client communicates with the storage array over at least first and second distinct paths, the first path connecting the first client to the storage array via the server and bypassing the first block cache, and the second path connecting the first client to the storage array via the first block cache and bypassing the server;
wherein the server is configured to coordinate operations of the first and second clients relating to the storage volume shared between the first and second host devices in a manner that ensures coherency of data blocks stored in the first block cache;
wherein a given set of data blocks of the storage volume shared between the first and second host devices is stored in the first block cache;
wherein the server is configured, responsive to the second client writing to the given set of data blocks in the storage volume shared between the first and second host devices, to provide a notification to the first client over the first path;
wherein the first client is configured to invalidate the given set of data blocks stored in the first block cache responsive to receiving the notification;
wherein the first block cache comprises a read-enabled write-through cache;
wherein the first client performs input/output operations with the storage array over the second path, the input/output operations comprising at least one of a read operation and a write operation;
wherein the read operation comprises attempting to read one or more data blocks of the one or more files from the first block cache and reading the one or more data blocks from the storage array responsive to the one or more data blocks not being available in the first block cache;
wherein the write operation comprises writing one or more data blocks to the storage array and caching the one or more data blocks in the first block cache;
wherein the first block cache is an internal block cache of the first host device;
wherein the first client comprises a storage block mapping protocol (SBMP) client implemented on the first host device;
wherein the server comprises a SBMP server implemented on an array controller of the storage array; and
wherein the SBMP client and the SBMP server are configured for communication using a file mapping protocol (FMP).

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein the first block cache is not configured to grant or revoke locks on data blocks in the shared storage volume.

### Claim 3 (depends on 2)

The apparatus of claim 2 wherein the server is configured to coordinate the operations of the first and second clients relating to the storage volume shared between the first and second host devices by granting locks to respective ones of the first and second clients on data blocks in the shared storage volume.

### Claim 4 (depends on 1)

The apparatus of claim 1 wherein the first client performs file operations with the storage array over the first path.

### Claim 5 (depends on 4)

The apparatus of claim 4 wherein the file operations comprise obtaining file layout information for the shared storage volume.

### Claim 6 (depends on 4)

The apparatus of claim 4 wherein the file operations comprise obtaining at least one of file names, directory structure and access permissions for the shared storage volume.

### Claim 7 (depends on 1)

The apparatus of claim 1 wherein the second client comprises an additional SBMP client implemented on the second host device.

### Claim 8 (depends on 1)

The apparatus of claim 1 further comprising a second block cache arranged between the second client and the storage array.

### Claim 9 (depends on 8)

The apparatus of claim 8 wherein the server is configured to coordinate operations of the first and second clients relating to the storage volume shared between the first and second host devices in a manner that ensures coherency of data stored in the first block cache and ensures coherency of data stored in the second block cache.

### Claim 10 (depends on 1)

The apparatus of claim 1 wherein the block cache comprise a server flash cache.

### Claim 11 (depends on 1)

A processing platform that incorporate the apparatus of claim 1.

### Claim 12 (depends on 1)

The apparatus of claim 1 wherein:
the SBMP client is coupled to the internal block cache; and
the internal block cache is coupled to the storage array via one or more block input/output (TO) drivers.

### Claim 13 (depends on 1)

The apparatus of claim 1 wherein the internal block cache comprises a designated portion of an internal memory of the first host device.

### Claim 14 (depends on 1)

The apparatus of claim 1 wherein the SBMP client is configured to invalidate data blocks stored in the internal block cache responsive to detecting one or more designated failure conditions.

### Claim 15 (depends on 1)

The apparatus of claim 1 wherein the internal block cache is configured to automatically repush data blocks stored therein to the storage volume shared between the first and second host devices responsive to detecting a restart of the SBMP client.

### Claim 16

A method comprising:
configuring a storage array of a shared storage environment to include at least one storage volume shared between first and second host devices having respective first and second clients implemented thereon; and
coordinating operations of the first and second clients relating to the storage volume shared between the first and second host devices in a manner that ensures coherency of data stored in a first block cache located between the first client and the storage array;
wherein the first block cache is implemented externally to the storage array;
wherein the first client communicates with the storage array over at least first and second distinct paths, the first path connecting the first client to the storage array via a server and bypassing the first block cache, and the second path connecting the first client to the storage array via the first block cache and bypassing the server;
wherein the server is associated with the storage array and external to the first and second host devices;
wherein a given set of data blocks of the storage volume shared between the first and second host devices is stored in the first block cache;
wherein the server is configured, responsive to the second client writing to the given set of data blocks in the storage volume shared between the first and second host devices, to provide a notification to the first client over the first path;
wherein the first client is configured to invalidate the given set of data blocks stored in the first block cache responsive to receiving the notification;
wherein the first block cache comprises a read-enabled write-through cache;
wherein the first client performs input/output operations with the storage array over the second path, the input/output operations comprising at least one of a read operation and a write operation;
wherein the read operation comprises attempting to read one or more data blocks of the one or more files from the first block cache and reading the one or more data blocks from the storage array responsive to the one or more data blocks not being available in the first block cache;
wherein the write operation comprises writing one or more data blocks to the storage array and caching the one or more data blocks in the first block cache;
wherein the first block cache is an internal block cache of the first host device;
wherein the first client comprises a storage block mapping protocol (SBMP) client implemented on the first host device;
wherein the server comprises a SBMP server implemented on an array controller of the storage array; and
wherein the SBMP client and the SBMP server are configured for communication using a file mapping protocol (FMP).

### Claim 17 (depends on 16)

The method of claim 16 wherein the first block cache is not configured to grant or revoke locks on data blocks in the shared storage volume, and wherein coordinating the operations of the first and second clients relating to the storage volume shared between the first and second host devices comprises granting locks to respective ones of the first and second clients on data blocks in the shared storage volume.

### Claim 18 (depends on 16)

The method of claim 16 wherein the first client performs file operations with the storage array over the first path.

### Claim 19

A computer program product comprising a non-transitory processor-readable storage medium having encoded therein executable code of one or more software programs, wherein the one or more software programs when executed cause a processing platform:
to configure a storage array of a shared storage environment to include at least one storage volume shared between first and second host devices having respective first and second clients implemented thereon; and
to coordinate operations of the first and second clients relating to the storage volume shared between the first and second host devices in a manner that ensures coherency of data stored in a first block cache located between the first client and the storage array;
wherein the first block cache is implemented externally to the storage array;
wherein the first client communicates with the storage array over at least first and second distinct paths, the first path connecting the first client to the storage array via a server and bypassing the first block cache, and the second path connecting the first client to the storage array via the first block cache and bypassing the server;
wherein the server is associated with the storage array and external to the first and second host devices;
wherein a given set of data blocks of the storage volume shared between the first and second host devices is stored in the first block cache;
wherein the server is configured, responsive to the second client writing to the given set of data blocks in the storage volume shared between the first and second host devices, to provide a notification to the first client over the first path;
wherein the first client is configured to invalidate the given set of data blocks stored in the first block cache responsive to receiving the notification;
wherein the first block cache comprises a read-enabled write-through cache;
wherein the first client performs input/output operations with the storage array over the second path, the input/output operations comprising at least one of a read operation and a write operation;
wherein the read operation comprises attempting to read one or more data blocks of the one or more files from the first block cache and reading the one or more data blocks from the storage array responsive to the one or more data blocks not being available in the first block cache;
wherein the write operation comprises writing one or more data blocks to the storage array and caching the one or more data blocks in the first block cache;
wherein the first block cache is an internal block cache of the first host device;
wherein the first client comprises a storage block mapping protocol (SBMP) client implemented on the first host device;
wherein the server comprises a SBMP server implemented on an array controller of the storage array; and
wherein the SBMP client and the SBMP server are configured for communication using a file mapping protocol (FMP).

### Claim 20 (depends on 19)

The computer program product of claim 19 wherein the first block cache is not configured to grant or revoke locks on data blocks in the shared storage volume, and wherein coordinating the operations of the first and second clients relating to the storage volume shared between the first and second host devices comprises granting locks to respective ones of the first and second clients on data blocks in the shared storage volume.
