IP Library Granted Patent US 10,585,594
Granted Patent B1
US 10,585,594 · App. 15/668,307 · Granted Mar 10, 2020

Content-based caching using digests

Inventors: Philippe Armangau (Acton, MA); Maher Kachmar (Marlborough, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0611G06F3/065G06F3/067G06F3/0638G06F16/14G06F12/0292G06F12/0802G06F12/0864G06F2212/6022
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,585,594
App. No.
15/668,307
Granted
Mar 10, 2020
Kind
B1
Abstract

A method of responding to requests to read data from a computerized data storage system is disclosed. The method includes (a) receiving a request to access a set of data stored in an extent of persistent storage of the computerized data storage system, (b) obtaining, from mapping metadata provided for locating the requested extent, a hash digest of the set of data, the hash digest identifying contents of the set of data, (c) indexing into a content-based cache within memory of the computerized data storage system with a key based on the hash digest to locate a cached copy of the set of data within the memory, and (d) returning the cached copy of the set of data from the memory without accessing the extent of data from persistent storage. An apparatus, system, and computer program product for performing a similar method are also provided.

Claims (49)

1. A method of responding to requests to read data from a computerized data storage system, the method comprising:

receiving a request to access a set of data stored in an extent of persistent storage of the computerized data storage system, wherein the request is directed to data of a filesystem element;

obtaining, from mapping metadata provided for locating the requested extent, a hash digest of the set of data, the hash digest identifying contents of the set of data, wherein obtaining the hash digest from the mapping metadata includes:

obtaining a mapping pointer from a pointer tree used for mapping the filesystem element, the mapping pointer pointing to a mapping metadata entry; and

obtaining the hash digest from the mapping metadata entry, the mapping metadata entry including the hash digest and a data pointer to a location of the extent in the persistent storage;

indexing into a content-based cache within memory of the computerized data storage system with a key based on the hash digest to locate a cached copy of the set of data within the memory; and

returning the cached copy of the set of data from the memory without accessing the extent of data from persistent storage.

2. The method of claim 1 ,

wherein the filesystem element is a first storage object;

wherein the contents of the set of data are included within the first storage object as well as within a second storage object; and

wherein the method further comprises, prior to receiving the request, storing the cached copy of the set of data in the content-based cache within memory in response to a previous data storage command directed at the second storage object.

3. The method of claim 2 ,

wherein another mapping pointer from another pointer tree used for mapping the second storage object also points to the mapping metadata entry; and

wherein the method further comprises, prior to receiving the request, storing the cached copy of the set of data in the content-based cache within memory in response to a read request directed to the location of the extent in the persistent storage.

4. The method of claim 3 wherein the method further comprises, prior to receiving the request, storing the hash digest of the set of data and the data pointer to the location of the extent in the mapping metadata entry in response to a previous write request directed at the second storage object.

5. The method of claim 2 ,

wherein another mapping pointer from another pointer tree used for mapping the second storage object points to another mapping metadata entry, the other mapping metadata entry including the hash digest and another data pointer to another location in the persistent storage where another copy of the set of data is stored; and

wherein the method further comprises, prior to receiving the request, storing the cached copy of the set of data in the content-based cache within memory in response to a read request directed to the other location in the persistent storage.

6. The method of claim 5 wherein the first storage object is located within a first filesystem and the second storage object is located within a second filesystem different from the first filesystem.

7. The method of claim 6 wherein one of the first filesystem and the second filesystem supports de-duplication, while another one of the first filesystem and the second filesystem does not support de-duplication.

8. The method of claim 1 further comprising, prior to receiving the request, storing the hash digest of the set of data and the data pointer to the location of the extent in the mapping metadata entry in response to a write request directed at the filesystem element.

9. The method of claim 1 , wherein the extent is a block of persistent storage that stores the set of data in uncompressed form.

10. The method of claim 1 ,

wherein the location of the extent on the persistent storage pointed to by the data pointer is offset within a set of blocks of persistent storage that stores the extent in compressed form together with other compressed extents;

wherein the cached copy of the set of data is stored in uncompressed form within the memory; and

wherein, when returning the cached copy, the uncompressed cached copy of the extent of data is returned without performing a decompression operation.

11. The method of claim 1 wherein the method further comprises:

promoting the cached copy of the set of data towards a head of a least-recently used (LRU) list; and

evicting, from the content-based cache within the memory, a cached set of other data from a tail of the LRU list.

12. The method of claim 1 wherein indexing into the content-based cache includes searching for the hash digest within the content-based cache.

13. The method of claim 1 wherein indexing into the content-based cache includes deriving the key from the hash digest and accessing a memory location within the content-based cache, the memory location defined by the key.

14. The method of claim 1 wherein the pointer tree includes an inode and a set of indirect blocks, the inode and each of the indirect blocks including a respective set of mapping pointers that each point to a mapping metadata entry.

15. An apparatus for responding to requests to read data, the apparatus comprising:

network interface circuitry for connecting to a network;

persistent storage; and

processing circuitry coupled to memory configured to:

receive a request, via the network interface circuitry, to access a set of data stored in an extent of the persistent storage, wherein the request is directed to data of a filesystem element;

obtain, from mapping metadata provided for locating the requested extent, a hash digest of the set of data, the hash digest identifying contents of the set of data, wherein obtaining the hash digest from the mapping metadata includes:

obtaining a mapping pointer from a pointer tree used for mapping the filesystem element, the mapping pointer pointing to a mapping metadata entry; and

obtaining the hash digest from the mapping metadata entry, the mapping metadata entry including the hash digest and a data pointer to a location of the extent in the persistent storage;

index into a content-based cache within the memory with a key based on the hash digest to locate a cached copy of the set of data within the memory; and

return, via the network interface circuitry, the cached copy of the set of data from the memory without accessing the extent of data from persistent storage.

16. A computer program product comprising a non-transitory computer-readable storage medium storing instructions, which when executed by a computerized data storage system cause the computerized data storage system to respond to requests to read data from the computerized data storage system by:

receiving a request to access a set of data stored in an extent of persistent storage of the computerized data storage system, wherein the request is directed to data of a filesystem element;

obtaining, from mapping metadata provided for locating the requested extent, a hash digest of the set of data, the hash digest identifying contents of the set of data, wherein obtaining the hash digest from the mapping metadata includes:

obtaining a mapping pointer from a pointer tree used for mapping the filesystem element, the mapping pointer pointing to a mapping metadata entry; and

obtaining the hash digest from the mapping metadata entry, the mapping metadata entry including the hash digest and a data pointer to a location of the extent in the persistent storage;

indexing into a content-based cache within memory of the computerized data storage system with a key based on the hash digest to locate a cached copy of the set of data within the memory; and

returning the cached copy of the set of data from the memory without accessing the extent of data from persistent storage.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (043775/0082) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060958/0468 →
RELEASE OF SECURITY INTEREST AT REEL 043772 FRAME 0750 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0606 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043772/0750 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Sep 6, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 043775/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2017
From: ARMANGAU, PHILIPPE; KACHMAR, MAHER
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043374/0286 →