IP Library Granted Patent US 11,163,693
Granted Patent B2
US 11,163,693 · App. 16/526,641 · Granted Nov 2, 2021

Hash-based one-level mapping for storage clusters

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Ronen Gazit (Tel Aviv, IL); Uri Shabi (Tel Mond, IL); Tal Ben-Moshe (Kiryat Ono, IL)
Assignee: EMC IP Holding Company LLC
G06F12/1018G06F3/0619G06F3/0653G06F3/0685
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 11,163,693
App. No.
16/526,641
Granted
Nov 2, 2021
Kind
B2
Abstract

A method comprising: storing, in a memory, a mapping tree that is implemented by using an array of mapping pages, the mapping tree having a depth of D, wherein D is an integer greater than or equal to 0; receiving a write request that is associated with a first type-1 address; storing, in a storage device, data associated with the write request, the data associated with the write request being stored in the storage device based on a first type-2 address; generating a map entry that maps the first type-1 address to the first type-2 address; calculating a first hash digest of the first type-1 address; and storing the map entry in a first mapping page.

Claims (70)

1. A method comprising:

storing, in a memory, a mapping tree that is implemented by using an array of mapping pages, the mapping tree having a depth of D, wherein D is an integer greater than or equal to 0;

receiving a write request that is associated with a first type-1 address;

storing, in a storage device, data associated with the write request, the data associated with the write request being stored in the storage device based on a first type-2 address;

generating a map entry that maps the first type-1 address to the first type-2 address;

calculating a first hash digest of the first type-1 address; and

storing the map entry in a first mapping page, the first mapping page being located at a first index in the array, wherein the first index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the first hash digest.

2. The method of claim 1 , further comprising:

receiving a read request that is associated with a second type-1 address

calculating a second hash digest of the second type-1 address;

retrieving a second mapping page that is located at a second index in the array, wherein the second index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the second hash digest

performing search of the second mapping page to identify a second type-2 address that is mapped to the second type-1 address;

retrieving data from the storage device based on the second type-2 address; and

returning the retrieved data to a sender of the read request.

3. The method of claim 1 , wherein storing the map entry includes:

retrieving a mapping page P 1 that is stored at an index I 1 in the array, wherein the index I 1 is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the first hash digest;

detecting whether the mapping page P 1 is full;

when the mapping page P 1 is not full: storing the map entry in the mapping page P 1 ;

when the mapping page P 1 is full; generating a mapping page P 2 , adding the mapping page P 2 at an index I 2 in the array, transferring one or more mapping entries from the mapping page P 1 to the mapping page P 2 , and storing the map entry in one of the mapping page P 1 or the mapping page P 2 .

4. The method of claim 3 , wherein the index I 2 is greater than the index I 1 , and the map entry is stored in the mapping page P 2 only when the index I 2 can be represented by D or fewer least significant bits of the first hash digest.

5. The method of claim 3 , wherein the index I 2 is generated by setting a least significant unset bit of the index I 1 .

6. The method of claim 1 , wherein the first type-1 address is a logical block address (LBA) in a first address space of a data volume and the first type-2 address is an address in a second address space of the storage device.

7. The method of claim 1 , wherein the first type-1 address is a logical block address (LBA) in a first address space of a data volume and the first type-2 address is an address in a second address space of a storage array including the storage device.

8. A system, comprising:

a memory configured to store storing a mapping tree that is implemented by using an array of mapping pages, the mapping tree having a depth of D, wherein D is an integer greater than or equal to 0; and

a processing circuitry operatively coupled to the memory, the processing circuitry being configured to perform the operations of:

receiving a write request that is associated with a first type-1 address;

storing, in a storage device, data associated with the write request, the data associated with the write request being stored in the storage device based on a first type-2 address;

generating a map entry that maps the first type-1 address to the first type-2 address;

calculating a first hash digest of the first type-1 address; and

storing the map entry in a first mapping page, the first mapping page being located at a first index in the array, wherein the first index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the first hash digest.

9. The system of claim 8 , wherein the processing circuitry is further configured to perform the operations of:

receiving a read request that is associated with a second type-1 address

calculating a second hash digest of the second type-1 address;

retrieving a second mapping page that is located at a second index in the array, wherein the second index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the second hash digest,

performing search of the second mapping page to identify a second type-2 address that is mapped to the second type-1 address;

retrieving data from the storage device based on the second type-2 address; and

returning the retrieved data to a sender of the read request.

10. The system of claim 8 , wherein storing the map entry includes:

retrieving a mapping page P 1 that is stored at an index I 1 in the array, wherein the index I 1 is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the first hash digest;

detecting whether the mapping page P 1 is full;

when the mapping page P 1 is not full: storing the map entry in the mapping page P 1 ;

when the mapping page P 1 is full: generating a mapping page P 2 , adding the mapping page P 2 at an index I 2 in the array, transferring one or more mapping entries from the mapping page P 1 to the mapping page P 2 , and storing the map entry in one of the mapping page P 1 or the mapping page P 2 .

11. The system of claim 10 , wherein the index I 2 is greater than the index I 1 , and the map entry is stored in the mapping page P 2 only when the index I 2 can be represented by D or fewer least significant bits of the first hash digest.

12. The system of claim 10 , wherein the index I 2 is generated by setting a least significant unset bit of the index I 1 .

13. The system of claim 8 , wherein the first type-1 address is a logical block address (LBA) in a first address space of a data volume and the first type-2 address is an address in a second address space of the storage device.

14. The system of claim 8 ,

wherein the first type-1 address is a logical block address (LBA) in a first address space of a data volume and the first type-2 address is an address in a second address space of a storage array including the storage device.

15. A non-transitory computer-readable medium storing one or more processor-executable instructions, which when executed by at least one processor, cause the at least one processor to perform the operations of:

storing, in a memory, a mapping tree that is implemented by using an array of mapping pages, the mapping tree having a depth of D, wherein D is an integer greater than or equal to 0;

receiving a write request that is associated with a first type-1 address;

storing, in a storage device, data associated with the write request, the data associated with the write request being stored in the storage device based on a first type-2 address;

generating a map entry that maps the first type-1 address to the first type-2 address;

calculating a first hash digest of the first type-1 address; and

storing the map entry in a first mapping page, the first mapping page being located at a first index in the array, wherein the first index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the first hash digest.

16. The non-transitory computer-readable medium of claim 15 , wherein the processor-executable instructions, when executed by the at least one processor, further cause the at least one processor to perform the operations of:

receiving a read request that is associated with a second type-1 address

calculating a second hash digest of the second type-1 address;

retrieving a second mapping page that is located at a second index in the array, wherein the second index is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant bits of the second hash digest,

performing search of the second mapping page to identify a second type-2 address that is mapped to the second type-1 address;

retrieving data from the storage device based on the second type-2 address; and

returning the retrieved data to a sender of the read request.

17. The non-transitory computer-readable medium of claim 15 , wherein storing the map entry includes:

retrieving a mapping page P 1 that is stored at an index I 1 in the array, wherein the index I 1 is the largest index in the array that contains a mapping page among all indices in the array that can be represented by D or fewer least significant hits of the first hash digest;

detecting whether the mapping page P 1 is full;

when the mapping page P 1 is not full: storing the map entry in the mapping page P 1 ;

when the mapping page P 1 is full: generating a mapping page P 2 , adding the mapping page P 2 at an index I 2 in the array, transferring one or more mapping entries from the mapping page P 1 to the mapping page P 2 , and storing the map entry in one of the mapping page P 1 or the mapping page P 2 .

18. The non-transitory computer-readable medium of claim 17 , Wherein the index I 2 is greater than the index I 1 , and the map entry is stored in the mapping page P 2 only when the index I 2 can be represented by D or fewer least significant bits of the first hash digest.

19. The non-transitory computer-readable medium of claim 17 , wherein the index I 2 is generated by setting a least significant unset bit of the index I 1 .

20. The non-transitory computer-readable readable medium of claim 15 , wherein the first type-1 address is a logical block address (LBA) in a first address space of a data volume and the first type-2 address is an address in a second address space of the storage device.

Assignments (9)
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 (053311/0169) Recorded Jun 23, 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 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 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 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 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 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
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 053311/0169 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2019
From: SHVEIDEL, VLADIMIR; GAZIT, RONEN; SHABI, URI; BEN-MOSHE, TAL
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049997/0552 →