IP Library › Granted Patent US 12,253,923
Granted Patent B2
US 12,253,923 · App. 17/731,881 · Granted Mar 18, 2025

Persistent metafile used to cache slot header metadata for improved read performance of objects within an object store

Inventors: Palak Sharma (Haryana, IN); Dibyasri Nandi (Kolkata, IN); Sindhushree K N (Karnataka, IN); Cheryl Marie Thompson (Sunnyvale, CA); Qinghua Zheng (San Jose, CA); Venkateswarlu Tella (Bangalore, IN); Debanjan Paul (West Bengal, IN); Dinakaran Narayanan (Chennai, IN)
Assignee: NetApp, Inc.
G06F11/2094G06F3/0604G06F3/0611G06F3/0619G06F3/064G06F3/0653G06F3/067G06F11/0712G06F11/0718G06F11/0727G06F11/1004G06F11/1453G06F11/1464G06F16/116G06F16/1744G06F2201/84
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 12,253,923
App. No.
17/731,881
Granted
Mar 18, 2025
Kind
B2
Abstract

Techniques are provided for implementing a unified object format. The unified object format is used to format data in a performance tier (e.g., infrequently accessed data, snapshot data, etc.) into objects that are stored into an object store for low cost, scalable, long term storage compared to storage of the performance tier. With the unified object format, compression of the data may be retained when the data is stored as the objects into the object store. Additional compression may also be provided for the data in the objects. The unified object format includes slot header metadata used to track the location of the data within the object notwithstanding the data being compressed and/or stored at non-fixed boundaries. The slot header metadata may be cached at the performance tier for improved read performance and may be repaired by a repair subsystem (a slot header repair subsystem).

Claims (72)

1. A method comprising:

determining that data hosted within a performance tier is to be tiered out to a capacity tier of an object store;

creating an object according to a unified object format, wherein the data is stored within slots of the object;

attaching slot header metadata to the object, wherein the slot header metadata comprises two sections of metadata including a first metadata portion comprising a compression group number of a slot within which a block of the data is stored and a compression group logical index in the compression group number at which the slot is located, and a second metadata portion comprising offset and length location information for the data residing in the object;

storing the object into the capacity tier of the object store;

caching the slot header metadata of the object within a persistent metafile stored within the performance tier, wherein an entry within the persistent metafile for the object maps the slot header metadata of the object to an object identifier of the object, wherein the entry is populated with the compression group number of the slot, the compression group logical index in the compression group, the offset and length location information, and a sequence number of the object;

utilizing the object identifier to identify the object in the object store for accessing a current sequence number specified by the slot header metadata within the object and to identify the entry, within the persistent metafile, for the object for accessing the sequence number specified by the entry;

comparing the sequence number in the entry of the persistent metafile stored within the performance tier with the current sequence number accessed from the object tiered out to the capacity tier of the object store; and

in response to the sequence number in the entry not matching the current sequence number accessed from the object, overwriting the persistent metafile with current slot header metadata read from the object.

2. The method of claim 1 , comprising:

caching the slot header metadata of the object as a 4 kb space optimized metadata entry in the persistent metafile stored within the performance tier.

3. The method of claim 1 , comprising:

receiving a request to read data from the object within the object store; and

utilizing the persistent metafile to process the request.

4. The method of claim 1 , comprising:

receiving a request to read data from the object within the object store; and

utilizing the offset and length location information in the slot header metadata cached within the persistent metafile stored in the performance tier to process the request.

5. The method of claim 1 , comprising:

receiving a request to read data from the object within the object store;

reading the offset and length location information in the slot header metadata from the persistent metafile stored within the performance tier to identify an offset and a length of the data within the object; and

performing an object store read operation using the offset and length to read the data from the object within the object store.

6. The method of claim 1 , comprising:

utilizing the slot header metadata of the object within the persistent metafile to construct and perform a single read operation transmitted to the object store to retrieve data from the object.

7. The method of claim 1 , comprising:

utilizing the slot header metadata of the object within the persistent metafile to construct and perform a single read operation transmitted to the object store to retrieve data from the object.

8. The method of claim 1 , comprising:

maintaining the persistent metafile within local storage attached to a node hosting the performance tier, wherein the node is remote to the object store.

9. A computing device comprising:

a memory comprising machine executable code; and

a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:

determine that data hosted within a performance tier is to be tiered out to a capacity tier of an object store;

create an object according to a unified object format, wherein the data is stored within slots of the object;

attach slot header metadata to the object, wherein the slot header metadata comprises two sections of metadata including a first metadata portion comprising a compression group number of a slot within which a block of the data is stored and a compression group logical index in the compression group number at which the slot is located, and a second metadata portion comprising offset and length location information for the data residing in the object;

store the object into the capacity tier of the object store;

cache the slot header metadata of the object within a persistent metafile stored within the performance tier, wherein an entry within the persistent metafile for the object maps the slot header metadata of the object to an object identifier of the object, wherein the entry is populated with the compression group number of the slot, the compression group logical index in the compression group, the offset and length location information, and a sequence number of the object;

utilize the object identifier to identify the object in the object store for accessing a current sequence number specified by the slot header metadata within the object and to identify the entry, within the persistent metafile, for the object for accessing the sequence number specified by the entry;

compare the sequence number in the entry of the persistent metafile stored within the performance tier with the current sequence number accessed from the object tiered out to the capacity tier of the object store; and

in response to the sequence number in the entry not matching the current sequence number accessed from the object, overwrite the persistent metafile with current slot header metadata read from the object.

10. The computing device of claim 9 , wherein the machine executable code causes the processor to:

cache the slot header metadata of the object as a 4 kb metadata entry in the persistent metafile stored within the performance tier.

11. The computing device of claim 9 , wherein the machine executable code causes the processor to:

receive a request to read data from the object within the object store; and

utilize the persistent metafile to process the request.

12. The computing device of claim 9 , wherein the machine executable code causes the processor to:

receive a request to read data from the object within the object store; and

utilize the offset and length location information in the slot header metadata cached within the persistent metafile stored in the performance tier to process the request.

13. The computing device of claim 9 , wherein the machine executable code causes the processor to:

receive a request to read data from the object within the object store;

read the offset and length location information in the slot header metadata from the persistent metafile stored within the performance tier to identify an offset and a length of the data within the object; and

perform an object store read operation using the offset and length to read the data from the object within the object store.

14. The computing device of claim 9 , wherein the machine executable code causes the processor to:

utilize the slot header metadata of the object within the persistent metafile to construct and perform a single read operation transmitted to the object store to retrieve data from the object.

15. The computing device of claim 9 , wherein the machine executable code causes the processor to:

utilize the slot header metadata of the object within the persistent metafile to construct and perform a single read operation transmitted to the object store to retrieve data from the object.

16. The computing device of claim 9 , wherein the machine executable code causes the processor to:

maintain the persistent metafile within local storage attached to a node hosting the performance tier, wherein the node is remote to the object store.

17. A non-transitory machine readable medium comprising instructions for performing a method, which when executed by a machine, causes the machine to:

determine that data hosted within a performance tier is to be tiered out to a capacity tier of an object store;

create an object according to a unified object format, wherein the data is stored within slots of the object;

attach slot header metadata to the object, wherein the slot header metadata comprises two sections of metadata including a first metadata portion comprising a compression group number of a slot within which a block of the data is stored and a compression group logical index in the compression group number at which the slot is located, and a second metadata portion comprising offset and length location information for the data residing in the object;

store the object into the capacity tier of the object store;

cache the slot header metadata of the object within a persistent metafile stored within the performance tier, wherein an entry within the persistent metafile for the object maps the slot header metadata of the object to an object identifier of the object, wherein the entry is populated with the compression group number of the slot, the compression group logical index in the compression group, the offset and length location information, and a sequence number of the object;

utilize the object identifier to identify the object in the object store for accessing a current sequence number specified by the slot header metadata within the object and to identify the entry, within the persistent metafile, for the object for accessing the sequence number specified by the entry;

compare the sequence number in the entry of the persistent metafile stored within the performance tier with the current sequence number accessed from the object tiered out to the capacity tier of the object store; and

in response to the sequence number in the entry not matching the current sequence number accessed from the object, overwrite the persistent metafile with current slot header metadata read from the object.

18. The non-transitory machine readable medium of claim 17 , wherein the instructions cause the machine to:

cache the slot header metadata of the object as a 4 kb space optimized metadata entry in the persistent metafile stored within the performance tier.

19. The non-transitory machine readable medium of claim 17 , wherein the instructions cause the machine to:

receive a request to read data from the object within the object store; and

utilize the persistent metafile to process the request.

20. The non-transitory machine readable medium of claim 17 , wherein the instructions cause the machine to:

in response to determining that the persistent metafile is corrupt or missing, execute a repair process to repair the persistent metafile.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2022
From: SHARMA, PALAK; NANDI, DIBYASRI; ., SINDHUSHREE K N; THOMPSON, CHERYL MARIE; ZHENG, QINGHUA; TELLA, VENKATESWARLU; PAUL, DEBANJAN; ., DINAKARAN NARAYANAN
To: NETAPP INC.
Reel/Frame 061543/0548 →
Priority Claims (1)
IN 202141049373 · Oct 28, 2021 · national
Continuity (1)
Related Publication 20230135151A1 · May 4, 2023
References Cited (30)
US 5652857A · Shimoi et al. · 1997 [cited by applicant]
US 8745338B1 · Yadav et al. · 2014 [cited by applicant]
US 9959280B1 · Whitehead et al. · 2018 [cited by applicant]
US 11960448B2 · Sharma et al. · 2024 [cited by applicant]
US 20100281004A1 · Kapoor · 2010 [cited by examiner]
US 20140279960A1 · Marwah · 2014 [cited by examiner]
US 20170031940A1 · Subramanian · 2017 [cited by examiner]
US 20170177603A1 · Constantinescu · 2017 [cited by examiner]
US 20170242864A1 · Wolfram · 2017 [cited by examiner]
US 20180217897A1 · Nazari et al. · 2018 [cited by applicant]
US 20180246664A1 · Wu · 2018 [cited by examiner]
US 20180373596A1 · Bhowmik · 2018 [cited by examiner]
US 20190324844A1 · Subramanian · 2019 [cited by examiner]
US 20200201842A1 · Patel et al. · 2020 [cited by applicant]
US 20200285410A1 · George et al. · 2020 [cited by applicant]
US 20200285612A1 · George · 2020 [cited by examiner]
US 20200285614A1 · George et al. · 2020 [cited by applicant]
US 20210124645A1 · Chinthekindi et al. · 2021 [cited by applicant]
US 20210294499A1 · Wang · 2021 [cited by examiner]
US 20220027354A1 · Florendo · 2022 [cited by examiner]
US 20220371498A1 · Sato et al. · 2022 [cited by applicant]
US 20230133433A1 · Sharma et al. · 2023 [cited by applicant]
US 20230135954A1 · Sharma et al. · 2023 [cited by applicant]
Notice of Allowance mailed on Sep. 29, 2023 for U.S. Appl. No. 17/731,858, filed Apr. 28, 2022, 07 pages. [cited by applicant]
Non-Final Office Action mailed on Jun. 7, 2023 for U.S. Appl. No. 17/731,658, filed Apr. 28, 2022, 14 pages. [cited by applicant]
Notice of Allowance mailed on Mar. 7, 2024 for U.S. Appl. No. 17/731,858, filed Apr. 28, 2022, 05 pages. [cited by applicant]
Notice of Allowance mailed on Jan. 19, 2024 for U.S. Appl. No. 17/731,858, filed Apr. 28, 2022, 05 pages. [cited by applicant]
Non-Final Office Action mailed on Nov. 28, 2023 for U.S. Appl. No. 17/731,900, filed Apr. 28, 2022, 29 pages. [cited by applicant]
Final Office Action mailed May 15, 2024 for U.S. Appl. No. 17/731,900, filed Apr. 28, 2022, 26 pages. [cited by applicant]
Notice of Allowance mailed on Sep. 18, 2024 for U.S. Appl. No. 17/731,900, filed Apr. 28, 2022, 08 pages. [cited by applicant]