IP Library Granted Patent US 11,520,527
Granted Patent B1
US 11,520,527 · App. 17/345,828 · Granted Dec 6, 2022

Persistent metadata storage in a storage system

Inventors: Amitai Alkalay (Kadima, IL); Vladimir Shveidel (Pardes-Hana, IL); Lior Kamran (Rishon LeZion, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0604G06F3/0631G06F3/0644G06F3/0665G06F3/0679
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,520,527
App. No.
17/345,828
Granted
Dec 6, 2022
Kind
B1
Abstract

An apparatus comprises a processing device. The processing device is configured to persistently store metadata pages on a plurality of storage devices. The metadata pages are organized into buckets. The processing device is configured to access a given metadata page based at least in part on a bucket identifier where the given metadata page corresponds to a given logical volume. The bucket identifier comprises a first portion comprising an indication of a given bucket range that corresponds to the given logical volume and a second portion comprising an indication of an offset into the given bucket range that corresponds to a grouping of buckets that correspond to the given logical volume. The grouping of buckets corresponds to the given logical volume. The bucket identifier further comprises a third portion comprising an indication of an offset into the grouping of buckets that corresponds to the bucket comprising the given metadata page.

Claims (86)

1. An apparatus comprising:

a storage system comprising a plurality of storage devices and at least one processing device comprising a processor coupled to a memory, the at least one processing device being configured:

to persistently store a plurality of metadata pages of the storage system on the plurality of storage devices, the metadata pages being organized into a plurality of buckets; and

to access a given metadata page of the plurality of metadata pages based at least in part on a bucket identifier, the given metadata page corresponding to a given logical volume of a plurality of logical volumes of the storage system, the bucket identifier comprising:

a first portion comprising an indication of a given bucket range of a plurality of bucket ranges that corresponds to the given logical volume;

a second portion comprising an indication of an offset into the given bucket range that corresponds to a first grouping of buckets that correspond to the given logical volume; and

a third portion comprising an indication of an offset into the first grouping of buckets that corresponds to the bucket comprising the given metadata page.

2. The apparatus of claim 1 wherein the plurality of bucket ranges comprises at least a first bucket range and one or more additional bucket ranges, and wherein the at least one processing device is further configured:

to receive a command to allocate a first new logical volume of the storage system;

to determine that a second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

to determine that a second grouping of buckets corresponding to the first new logical volume has not been allocated for the second bucket range; and

to allocate a portion of the storage devices to the second grouping of buckets for the second bucket range.

3. The apparatus of claim 2 wherein:

the at least one processing device is configured to maintain a dynamic pool of unallocated memory; and

allocating the second grouping of buckets comprises allocating a portion of the dynamic pool to the second grouping of buckets.

4. The apparatus of claim 3 wherein the at least one processing device is configured to allocate at least another portion of the dynamic pool for use by a mapping data structure entry corresponding to the first new logical volume.

5. The apparatus of claim 3 wherein the at least one processing device is further configured:

to receive a command to allocate a second new logical volume of the storage system;

to determine that a third bucket range of the plurality of bucket ranges corresponds to the second new logical volume;

to determine that a third grouping of buckets corresponding to the second new logical volume has not been allocated for the third bucket range;

to determine that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets; and

to fail the allocation of the second new logical volume based at least in part on the determination that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets.

6. The apparatus of claim 3 wherein the at least one processing device is further configured:

to receive a command to deallocate the first new logical volume;

to determine that the second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

to determine that the second grouping of buckets of the second bucket range corresponds to the first new logical volume; and

to deallocate the second grouping of buckets, the deallocating comprising making the portion of the dynamic pool that was allocated to the second grouping of buckets available for use by at least one other component of the storage system.

7. The apparatus of claim 1 wherein:

the first portion of the bucket identifier and the second portion of the bucket identifier collectively comprise a volume identifier of the storage system that corresponds to the given metadata page; and

the volume identifier comprises a plurality of bytes, the first portion of the bucket identifier corresponds to a designated number of bits of the plurality of bytes of the volume identifier and the second portion of the bucket identifier corresponds to the remaining bits of the plurality of bytes of the volume identifier.

8. A method comprising:

persistently storing a plurality of metadata pages of a storage system on a plurality of storage devices of the storage system, the metadata pages being organized into a plurality of buckets; and

accessing a given metadata page of the plurality of metadata pages based at least in part on a bucket identifier, the given metadata page corresponding to a given logical volume of a plurality of logical volumes of the storage system, the bucket identifier comprising:

a first portion comprising an indication of a given bucket range of a plurality of bucket ranges that corresponds to the given logical volume;

a second portion comprising an indication of an offset into the given bucket range that corresponds to a first grouping of buckets that correspond to the given logical volume; and

a third portion comprising an indication of an offset into the first grouping of buckets that corresponds to the bucket comprising the given metadata page;

wherein the method is performed by at least one processing device of the storage system, the at least one processing device comprising a processor coupled to a memory.

9. The method of claim 8 wherein the plurality of bucket ranges comprises at least a first bucket range and one or more additional bucket ranges, and wherein the method further comprises:

receiving a command to allocate a first new logical volume of the storage system;

determining that a second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

determining that a second grouping of buckets corresponding to the first new logical volume has not been allocated for the second bucket range; and

allocating a portion of the storage devices to the second grouping of buckets for the second bucket range.

10. The method of claim 9 wherein:

the method further comprises maintaining a dynamic pool of unallocated memory; and

allocating the second grouping of buckets comprises allocating a portion of the dynamic pool to the second grouping of buckets.

11. The method of claim 10 wherein the method further comprises allocating at least another portion of the dynamic pool for use by a mapping data structure entry corresponding to the first new logical volume.

12. The method of claim 10 wherein the method further comprises:

receiving a command to allocate a second new logical volume of the storage system;

determining that a third bucket range of the plurality of bucket ranges corresponds to the second new logical volume;

determining that a third grouping of buckets corresponding to the second new logical volume has not been allocated for the third bucket range;

determining that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets; and

failing the allocation of the second new logical volume based at least in part on the determination that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets.

13. The method of claim 10 wherein the method further comprises:

receiving a command to deallocate the first new logical volume;

determining that the second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

determining that the second grouping of buckets of the second bucket range corresponds to the first new logical volume; and

deallocating the second grouping of buckets, the deallocating comprising making the portion of the dynamic pool that was allocated to the second grouping of buckets available for use by at least one other component of the storage system.

14. The method of claim 8 wherein:

the first portion of the bucket identifier and the second portion of the bucket identifier collectively comprise a volume identifier of the storage system that corresponds to the given metadata page; and

the volume identifier comprises a plurality of bytes, the first portion of the bucket identifier corresponds to a designated number of bits of the plurality of bytes of the volume identifier and the second portion of the bucket identifier corresponds to the remaining bits of the plurality of bytes of the volume identifier.

15. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device of a storage system, the storage system comprising a plurality of storage devices and the at least one processing device comprising a processor coupled to a memory, causes the at least one processing device:

to persistently store a plurality of metadata pages of the storage system on the plurality of storage devices, the metadata pages being organized into a plurality of buckets; and

to access a given metadata page of the plurality of metadata pages based at least in part on a bucket identifier, the given metadata page corresponding to a given logical volume of a plurality of logical volumes of the storage system, the bucket identifier comprising:

a first portion comprising an indication of a given bucket range of a plurality of bucket ranges that corresponds to the given logical volume;

a second portion comprising an indication of an offset into the given bucket range that corresponds to a first grouping of buckets that correspond to the given logical volume; and

a third portion comprising an indication of an offset into the first grouping of buckets that corresponds to the bucket comprising the given metadata page.

16. The computer program product of claim 15 wherein the plurality of bucket ranges comprises at least a first bucket range and one or more additional bucket ranges, and wherein the program code causes the at least one processing device:

to receive a command to allocate a first new logical volume of the storage system;

to determine that a second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

to determine that a second grouping of buckets corresponding to the first new logical volume has not been allocated for the second bucket range; and

to allocate a portion of the storage devices to the second grouping of buckets for the second bucket range.

17. The computer program product of claim 16 wherein:

wherein the program code causes the at least one processing device to maintain a dynamic pool of unallocated memory; and

allocating the second grouping of buckets comprises allocating a portion of the dynamic pool to the second grouping of buckets.

18. The computer program product of claim 17 wherein the program code causes the at least one processing device to allocate at least another portion of the dynamic pool for use by a mapping data structure entry corresponding to the first new logical volume.

19. The computer program product of claim 17 wherein the program code causes the at least one processing device:

to receive a command to allocate a second new logical volume of the storage system;

to determine that a third bucket range of the plurality of bucket ranges corresponds to the second new logical volume;

to determine that a third grouping of buckets corresponding to the second new logical volume has not been allocated for the third bucket range;

to determine that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets; and

to fail the allocation of the second new logical volume based at least in part on the determination that the dynamic pool does not have sufficient memory available to allocate to the third grouping of buckets.

20. The computer program product of claim 17 wherein the program code causes the at least one processing device:

to receive a command to deallocate the first new logical volume;

to determine that the second bucket range of the plurality of bucket ranges corresponds to the first new logical volume;

to determine that the second grouping of buckets of the second bucket range corresponds to the first new logical volume; and

to deallocate the second grouping of buckets, the deallocating comprising making the portion of the dynamic pool that was allocated to the second grouping of buckets available for use by at least one other component of the storage system.

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 11, 2021
From: ALKALAY, AMITAI; SHVEIDEL, VLADIMIR; KAMRAN, LIOR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 056517/0172 →
Cited By (2)
US 12,346,258 US 12,542,828