De-duplication of client-side data cache for virtual disks
Abstract
A computer receives a write request including an offset within a virtual disk. The computer writes the data block to a remote platform and calculates a hash value of the data. If the hash value does not exist in a first table of a block cache of the computer, the computer adds a pair to the first table: hash value/block cache data offset. Next, the computer adds a pair in a second table of the block cache: virtual disk offset of the data/hash value. A read request uses these tables to find the data in the cache without accessing the storage platform. The read consults the second table to find the hash value corresponding to the virtual disk offset of block. The hash value is used as a key into the first table to find the block cache data offset of the data; the data is read from the block cache at that offset.
Claims
exact text as granted — not AI-modifiedWe claim:
1 . A method of using deduplicated client-side caching for a storage platform, the system comprising:
by a first computer server, intercepting a write request to write a first block of data to a first virtual disk configured on the storage platform,
wherein the write request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
calculating a hash value for the first block of data,
querying first metadata that tracks contents of a client-side cache maintained by the first computer server,
if the first metadata comprises the hash value, refraining by the first computer server from storing the first block of data to the client-side cache, and
if the first metadata does not comprise the hash value, (a) storing the first block of data in the client-side cache at a second offset, and (b) updating the first metadata to indicate that a block of data having the hash value is stored in the client-side cache at the second offset; and
wherein the client-side cache is not used for write requests to a virtual disk administered without client-side caching, wherein the client-side cache is configured in persistent storage of the first computer server, and wherein the persistent storage is distinct from data storage resources configured in the storage platform.
2 . The method of claim 1 , wherein the client-side cache provides global cache deduplication for all virtual disks in the storage platform that are configured with client-side caching enabled.
3 . The method of claim 1 further comprising: if the first metadata comprises the hash value, updating second metadata that tracks virtual disk offsets within the storage platform with a key-value pair that comprises: a first offset for the first block of data within the first virtual disk and the hash value of the first block of data.
4 . The method of claim 1 further comprising:
by the first computer server, intercepting a read request for the first block of data from the first offset within the first virtual disk configured on the storage platform,
wherein the read request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
querying the first metadata for the hash value of the first block of data,
if the first metadata lacks the hash value, issuing a read request to a storage node of the storage platform to read the first data block from the first offset on the first virtual disk, and serving the first data block received from the storage platform in response to the read request, and
if the first metadata comprises the hash value, serving a data block having the hash value from the client-side cache in response to the read request; and
wherein the client-side cache is not used for read requests from a virtual disk administered without client-side caching.
5 . The method of claim 1 , wherein the first offset for the first block of data within the first virtual disk is calculated by the first computer server based on an amount of data in the write request.
6 . The method of claim 1 , wherein the client-side cache is used for all virtual disks in the storage platform that are configured with client-side caching enabled.
7 . The method of claim 1 , wherein the client-side cache is used for all virtual disks in the storage platform that are configured at the application level with client-side caching enabled.
8 . The method of claim 1 further comprising: writing the first block of data to the first virtual disk at the first offset.
9 . The method of claim 1 further comprising: writing the first block of data to the first virtual disk at the first offset regardless of whether client-side caching is enabled for the first virtual disk.
10 . A method of using deduplicated client-side caching for a storage platform, the system comprising:
by a first computer server, intercepting a write request to write a first block of data to a first virtual disk configured on the storage platform,
wherein the write request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
calculating a hash value for the first block of data,
querying first metadata for the hash value, wherein the first metadata tracks contents of a client-side cache configured in persistent storage at the first computing server, and wherein the persistent storage is distinct from data storage resources configured in the storage platform, and
if the first metadata comprises the hash value, refraining from writing the first block of data to the client-side cache, and updating second metadata that tracks virtual disk offsets within the storage platform with a key-value pair comprising a first offset for the first block of data within the first virtual disk and the hash value of the first block of data;
by the first computer server, intercepting a read request for the first block of data from the first offset within the first virtual disk,
wherein the read request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
querying the first metadata for the hash value of the first block of data, and
if the first metadata comprises the hash value, serving from the client-side cache a data block having the hash value of the first block of data in response to the read request.
11 . The method of claim 10 further comprising:
if the first metadata does not comprise the hash value, by the first computer server, storing the first block of data in the client-side cache at a second offset, and updating the first metadata to indicate that a block of data having the hash value is stored in the client-side cache at the second offset.
12 . The method of claim 10 further comprising:
if the second metadata lacks an entry for the first offset, by the first computer server, issuing a read request to a storage node of the storage platform to read the first block of data from the first offset on the first virtual disk, and serving the first block of data received from the storage platform in response to the read request.
13 . The method of claim 10 , wherein the client-side cache is not used for write requests to and read requests from a virtual disk administered without client-side caching.
14 . The method of claim 10 , wherein the client-side cache is used for all virtual disks in the storage platform that are configured with client-side caching enabled.
15 . A method of using deduplicated client-side caching for a storage platform, the system comprising:
by a first computer server, intercepting a write request to write data to a first virtual disk configured on the storage platform,
wherein the write request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
calculating a hash value for a first block of the data in the write request,
querying first metadata for the hash value, wherein the first metadata tracks contents of a client-side cache configured in persistent storage at the first computing server, and
if the first metadata does not comprise the hash value, by the first computer server, storing the first block in the client-side cache at a second offset, and updating the first metadata to indicate that a block of data having the hash value is stored in the client-side cache at the second offset;
by the first computer server, intercepting a read request for data from the first offset within the first virtual disk configured on the storage platform,
wherein the read request is issued by an application executing at one of: the first computer server and one of a plurality of other computer servers that use the storage platform;
by the first computer server, based on determining that the first virtual disk is administered with client-side caching enabled:
identifying the first block in the data in the read request,
calculating the hash value for the first block,
querying the first metadata for the hash value, and
if the first metadata comprises the hash value corresponding to the second offset within the client-side cache, serving from the second offset at the client-side cache a data block having the hash value of the first block in response to the read request.
16 . The method of claim 15 further comprising: if the first metadata comprises the hash value, refraining from writing the first block of data to the client-side cache.
17 . The method of claim 15 further comprising:
if the first metadata comprises the hash value, refraining from writing the first block of data to the client-side cache and updating second metadata that tracks virtual disk offsets within the storage platform with a key-value pair comprising a first offset for the first block of data within the first virtual disk and the hash value of the first block of data; and
if the second metadata lacks an entry for the first offset, by the first computer server, issuing a read request to a storage node of the storage platform to read the first data block from the first offset on the first virtual disk, and serving the first data block received from the storage platform in response to the read request.
18 . The method of claim 15 , wherein the client-side cache provides global cache deduplication for all virtual disks in the storage platform that are configured with client-side caching enabled.
19 . The method of claim 15 , wherein the client-side cache is not used for write requests to and read requests from a virtual disk administered without client-side caching.
20 . The method of claim 15 , wherein the client-side cache is used for all virtual disks in the storage platform that are configured with client-side caching enabled.Join the waitlist — get patent alerts
Track US2020356277A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.