IP Library Granted Patent US 11,675,789
Granted Patent B2
US 11,675,789 · App. 17/361,666 · Granted Jun 13, 2023

Tracking utilization of data blocks in a storage system

Inventors: Yosef Shatsky (Karnei Shomron, IL); Doron Tal (Geva Carmel, IL)
Assignee: EMC IP Holding Company LLC
G06F16/24552G06F12/0253G06F16/215G06F16/2246G06F16/278
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,675,789
App. No.
17/361,666
Granted
Jun 13, 2023
Kind
B2
Abstract

A storage control system manages a utilization of data blocks of a storage volume which is partitioned into data blocks having a unique block identifier (ID) and a same block size. The storage control system receives data items and assigns a respective unique data ID to each data item, which include consecutive data IDs. The data items are written to a free data block as a whole, and a record for the written data block is inserted into a node of a first tree structure. The record includes the unique block ID of the written data block, a first data ID of the data items, and a bitmap which maps the consecutive data IDs of the data items in the written data block, starting from the first data ID, to a respective bit whose value indicates whether the data item associated with the data ID is valid or invalid.

Claims (72)

1. A method, comprising:

managing, by a storage control system, a utilization of data blocks of a storage volume, wherein at least a portion of the storage volume is partitioned into data blocks, wherein each data block comprises a unique block identifier (ID) and has a same block size, wherein managing the utilization of data blocks of the storage volume comprises:

receiving data items to be stored in the storage volume;

assigning a respective unique data ID value to each data item, wherein the assigned unique data ID values comprise consecutive numerical ID values;

writing a data block in the storage volume by writing the data items to a free data block in the storage volume such that the free data block is written as a whole data block; and

updating a metadata structure which comprises a first tree data structure and a second tree data structure, wherein updating the metadata structure comprises:

inserting a record for the written data block into a node of the first tree data structure, wherein the record comprises (i) the unique block ID of the written data block, (ii) a first unique data ID value of the consecutive numerical ID values of the data items in the written data block, and (iii) a bitmap which maps each of the consecutive numerical ID values of the data items in the written data block, starting from the first unique data ID value, to a respective bit whose value is set to indicate whether the data item associated with the unique data ID value is valid or invalid; and

inserting a record into a node of the second tree data structure, wherein the record comprises a given unique block ID and unique data ID value associated with an existing data item that is deemed invalid.

2. The method of claim 1 , wherein the first tree data structure comprises a B+ tree data structure having nodes that are indexed and sorted according to the unique block IDs of used data blocks of the storage volume.

3. The method of claim 1 , wherein:

receiving the data items to be stored in the storage volume comprises storing the received data items in a cache memory; and

writing the data items to the free data block in the storage volume comprises writing the cached data items to the free data block when a total size of the cached data items in the cache memory accumulates to the size of the free data block.

4. The method of claim 1 , wherein when a given data item written to the free data block comprises an updated data item of an existing data item stored in a given data block of the storage volume, inserting the record into the node of the second tree data structure comprises:

invalidating the existing data item; and

inserting a record for the invalidated data item in the second tree data structure, wherein the record comprises (i) the unique block ID assigned to the given data block which comprises the invalidated data item, and (ii) the unique data ID value assigned to the invalidated data item;

wherein the second tree data structure is configured to provide an index of records associated with invalidated and deleted data items.

5. The method of claim 4 , wherein the second tree data structure comprises a log-structured merge (LSM) tree data structure, wherein the records in the LSM tree data structure are indexed and sorted according to the unique block IDs and unique data ID values.

6. The method of claim 4 , wherein managing the utilization of data blocks of the storage volume further comprises:

deleting a data item stored in a data block in the storage volume; and

inserting a record for the deleted data item in the second tree data structure, wherein the record comprises (i) the unique block ID assigned to the data block which comprises the deleted data item, and (ii) the unique data ID value assigned to the deleted data item.

7. The method of claim 4 , wherein managing the utilization of data blocks of the storage volume further comprises:

accessing a plurality of records in the second tree data structure for a given data block in the storage volume, wherein the plurality of records are associated with data items of the given data block which have been invalidated or deleted; and

updating the bitmap of the associated record for the given data block in the first tree data structure using the accessed records of the given data block in the second tree data structure.

8. The method of claim 4 , wherein managing the utilization of data blocks of the storage volume further comprises:

performing a garbage collection process to reclaim a selected data block in the storage volume, wherein performing the garbage collection process comprises:

searching the first tree data structure using the unique block ID of the selected data block to access a record associated with the selected data block;

utilizing the bitmap of the accessed record to determine which data items in the selected data block are valid data items;

moving the valid data items of the selected data block to a free data block of the storage volume; and

reclaiming the selected data block as a free data block for reuse.

9. The method of claim 8 , wherein performing the garbage collection process further comprises searching records in the second tree data structure using the unique block ID of the selected data block to determine if any of the data items determined to be valid as a result of the search of the first tree data structure, have been invalidated or deleted subsequent to a last update of the bitmap associated with the selected data block.

10. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement a method which comprises:

managing, by a storage control system, a utilization of data blocks of a storage volume, wherein at least a portion of the storage volume is partitioned into data blocks, wherein each data block comprises a unique block identifier (ID) and has a same block size, wherein managing the utilization of data blocks of the storage volume comprises:

receiving data items to be stored in the storage volume;

assigning a respective unique data ID value to each data item, wherein the assigned unique data ID values comprise consecutive numerical ID values;

writing a data block in the storage volume by writing the data items to a free data block in the storage volume such that the free data block is written as a whole data block; and

updating a metadata structure which comprises a first tree data structure and a second tree data structure, wherein updating the metadata structure comprises:

inserting a record for the written data block into a node of the first tree data structure, wherein the record comprises (i) the unique block ID of the written data block, (ii) a first unique data ID value of the consecutive numerical ID values of the data items in the written data block, and (iii) a bitmap which maps each of the consecutive numerical ID values of the data items in the written data block, starting from the first unique data ID value, to a respective bit whose value is set to indicate whether the data item associated with the unique data ID value is valid or invalid; and

inserting a record into a node of the second tree data structure, wherein the record comprises a given unique block ID and unique data ID value associated with an existing data item that is deemed invalid.

11. The article of manufacture of claim 10 , wherein the first tree data structure comprises a B+ tree data structure having nodes that are indexed and sorted according to the unique block IDs of used data blocks of the storage volume.

12. The article of manufacture of claim 10 , wherein:

the program code for receiving the data items to be stored in the storage volume comprises program code for storing the received data items in a cache memory; and

the program code for writing the data items to the free data block in the storage volume comprises program code for writing the cached data items to the free data block when a total size of the cached data items in the cache memory accumulates to the size of the free data block.

13. The article of manufacture of claim 10 , wherein when a given data item written to the free data block comprises an updated data item of an existing data item stored in a given data block of the storage volume, the program code for inserting the record into the node of the second tree data structure comprises program code for:

invalidating the existing data item; and

inserting a record for the invalidated data item in the second tree data structure, wherein the record comprises (i) the unique block ID assigned to the given data block which comprises the invalidated data item, and (ii) the unique data ID value assigned to the invalidated data item;

wherein the second tree data structure is configured to provide an index of records associated with invalidated and deleted data items.

14. The article of manufacture of claim 13 , wherein the second tree data structure comprises a log-structured merge (LSM) tree data structure, wherein the records in the LSM tree data structure are indexed and sorted according to the unique block IDs and unique data ID values.

15. The article of manufacture of claim 13 , wherein the program code for managing the utilization of data blocks of the storage volume further comprises program code for:

deleting a data item stored in a data block in the storage volume; and

inserting a record for the deleted data item in the second tree data structure, wherein the record comprises (i) the unique block ID assigned to the data block which comprises the deleted data item, and (ii) the unique data ID value assigned to the deleted data item.

16. The article of manufacture of claim 13 , wherein the program code for managing the utilization of data blocks of the storage volume further comprises program code for:

accessing a plurality of records in the second tree data structure for a given data block in the storage volume, wherein the plurality of records are associated with data items of the given data block which have been invalidated or deleted; and

updating the bitmap of the associated record for the given data block in the first tree data structure using the accessed records of the given data block in the second tree data structure.

17. The article of manufacture of claim 13 , wherein the program code for managing the utilization of data blocks of the storage volume further comprises program code for:

performing a garbage collection process to reclaim a selected data block in the storage volume, wherein the program code for performing the garbage collection process comprises program code for:

searching the first tree data structure using the unique block ID of the selected data block to access a record associated with the selected data block;

utilizing the bitmap of the accessed record to determine which data items in the selected data block are valid data items;

moving the valid data items of the selected data block to a free data block of the storage volume; and

reclaiming the selected data block as a free data block for reuse.

18. The article of manufacture of claim 17 , wherein the program code for performing the garbage collection process further comprises program code for searching records in the second tree data structure using the unique block ID of the selected data block to determine if any of the data items determined to be valid as a result of the search of the first tree data structure, have been invalidated or deleted subsequent to a last update of the bitmap associated with the selected data block.

19. An apparatus, comprising:

a data storage node comprising at least one processor, and memory configured to store program code, wherein the program code is executable by the at least one processor to instantiate a storage control system, wherein the storage control system is configured to manage a utilization of data blocks of a storage volume, wherein at least a portion of the storage volume is partitioned into data blocks, wherein each data block comprises a unique block identifier (ID) and has a same block size, wherein in managing the utilization of data blocks of the storage volume, the storage control system is configured to:

receive data items to be stored in the storage volume;

assign a respective unique data ID value to each data item, wherein the assigned unique data ID values comprise consecutive numerical ID values;

write a data block in the storage volume by writing the data items to a free data block in the storage volume such that the free data block is written as a whole data block; and

update a metadata structure which comprises a first tree data structure and a second tree data structure, wherein in updating the metadata structure, the storage control system is configured to:

insert a record for the written data block into a node of the first tree data structure, wherein the record comprises (i) the unique block ID of the written data block, (ii) a first unique data ID value of the consecutive numerical ID values of the data items in the written data block, and (iii) a bitmap which maps each of the consecutive numerical ID values of the data items in the written data block, starting from the first unique data ID value, to a respective bit whose value is set to indicate whether the data item associated with the unique data ID value is valid or invalid; and

insert a record into a node of the second tree data structure, wherein the record comprises a given unique block ID and unique data ID value associated with an existing data item that is deemed invalid.

20. The apparatus of claim 19 , wherein when a given data item written to the free data block comprises an updated data item of an existing data item stored in a given data block of the storage volume, the storage control system, in inserting the record into the node of the second tree data structure, is further configured to:

invalidate the existing data item; and

insert a record for the invalidated data item in the second tree data structure, wherein the record comprises (i) the unique block ID assigned to the given data block which comprises the invalidated data item, and (ii) the unique data ID value assigned to the invalidated data item;

wherein the second tree data structure is configured to provide an index of records associated with invalidated and deleted data items.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2021
From: SHATSKY, YOSEF; TAL, DORON
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 056702/0460 →
Continuity (1)
Related Publication 20220414102A1 · Dec 29, 2022
Cited By (5)
US 12,339,805 US 12,367,216 US 12,436,704 US 12,579,125 US 12,625,855