IP Library Granted Patent US 11,068,299
Granted Patent B1
US 11,068,299 · App. 15/669,364 · Granted Jul 20, 2021

Managing file system metadata using persistent cache

Inventors: Philippe Armangau (Acton, MA); Christopher A. Seibel (Walpole, MA); John Gillono (North Chelmsford, MA); Bruce E. Caram (Hudson, MA); Yubing Wang (Southborough, MA); Jean-Pierre Bono (Westborough, MA)
Assignee: EMC IP Holding Company LLC
G06F9/466G06F3/0619G06F3/0659G06F3/0688G06F9/3004G06F9/30087
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,068,299
App. No.
15/669,364
Granted
Jul 20, 2021
Kind
B1
Abstract

A technique for managing metadata in a data storage system includes receiving a set of data to be stored in a file system of the data storage system and calculating values of metadata blocks that the file system will use to organize the set of data in the file system. The technique aggregates values of the metadata blocks and sends them in a single, atomic transaction to a persistent cache. The transaction either succeeds, in which case the persistent cache stores the values of all of the metadata blocks, or it fails, in which case the persistent cache stores none of the values of the metadata blocks. Over time, the persistent cache flushes the values of the metadata blocks to a set of non-volatile storage devices that back the metadata blocks in the data storage system.

Claims (53)

1. A method of managing metadata in a data storage system, the method comprising:

receiving an I/O (input/output) request that specifies a set of data to be written to a file system in the data storage system, the file system backed by a set of non-volatile storage devices;

computing values of multiple metadata blocks that the file system will use to organize the set of data in the file system, the multiple metadata blocks including at least one of a virtual block map (VBM), an allocation bitmap, and a superblock;

aggregating the computed values of the metadata blocks into a single transaction; and

atomically issuing the transaction to a persistent cache, such that values of all of the metadata blocks are written to the persistent cache or none of them are, the persistent cache thereafter flushing the values of the metadata blocks, or updated versions thereof, to the set of non-volatile storage devices backing the file system,

wherein the persistent cache provides multiple flushing policies, and wherein the method further comprises specifying a delayed flushing policy for pages in the persistent cache that store the values of the multiple metadata blocks, the delayed flushing policy specifying flushing at a slower rate than another flushing policy provided by the persistent cache,

wherein the method further comprises:

receiving a second I/O request specifying a second set of data to be written to the file system;

computing values of a second set of metadata blocks that the file system will use to organize the second set of data in the file system, the second set of metadata blocks including a common metadata block that that is also one of the multiple metadata blocks, a value of the common metadata block stored in a cache page of the persistent cache; and

atomically issuing a second transaction to the persistent cache, such that the values of all of the second set of metadata blocks are written to the persistent cache or none of them are, the persistent cache updating the cache page that stores the value of the common metadata block to reflect a change in the value of common metadata block for incorporating the second set of data,

wherein the data storage system further includes a set of internal volumes operatively disposed between the persistent cache and the set of non-volatile storage devices, and wherein writing the transaction to the persistent cache includes writing the values of the multiple metadata blocks to pages of the persistent cache using an addressing scheme that addresses pages by identifier of one of the set of internal volumes and offset into that internal volume.

2. The method of claim 1 , wherein, when atomically issuing the transaction to the persistent cache, the method further comprises specifying the set of data as part of the transaction, such that both the set of data and all of the metadata blocks are written to the persistent cache or none of them are.

3. The method of claim 1 , wherein the persistent cache provides multiple flushing policies, and wherein the method further comprises specifying a delayed flushing policy for pages in the persistent cache that store the values of the multiple metadata blocks, the delayed flushing policy specifying flushing at a slower rate than another flushing policy provided by the persistent cache.

4. The method of claim 1 , wherein atomically issuing the transaction includes generating a single IRP (I/O request packet) that specifies the computed values of the multiple metadata blocks.

5. The method of claim 4 , wherein the single IRP includes, for each of the multiple metadata blocks, one of (i) a computed value of the metadata block or (ii) a reference to a location where that metadata block value can be found.

6. The method of claim 5 , wherein, the single IRP further includes a reference to the set of data, such that both the set of data and the values of all of the metadata blocks are atomically written to the persistent cache or none of them are.

7. The method of claim 5 , wherein atomically writing the second transaction includes generating a second IRP that specifies the computed values of the second set of metadata blocks, the second IRP including a reference to the cache page in the persistent cache that stores the common metadata block.

8. The method of claim 7 , further comprising:

receiving an acknowledgment from the persistent cache that the set of data and the values of all of the multiple metadata blocks have been stored in the persistent cache; and

upon receiving the acknowledgement from the persistent cache, sending an acknowledgement to a requestor of the I/O request that the I/O request has been completed.

9. The method of claim 1 , wherein atomically issuing the transaction includes generating a single IRP (I/O request packet) that specifies the computed values of the multiple metadata blocks.

10. The method of claim 1 , further comprising updating a particular metadata block of the metadata blocks in the persistent cache after atomically issuing the transaction to the persistent cache, and later flushing the updated particular metadata block to the set of non-volatile storage devices for storage therein.

11. A data storage apparatus, comprising a set of processing units and memory, the memory coupled to the set of processing units and storing executable instructions which, when executed by the set of processing units, cause the set of processing units to:

receive an I/O (input/output) request that specifies a set of data to be written to a file system in the data storage system, the file system backed by a set of non-volatile storage devices;

compute values of multiple metadata blocks that the file system will use to organize the set of data in the file system, the multiple metadata blocks including at least one of a virtual block map (VBM), an allocation bitmap, and a superblock;

aggregate the computed values of the metadata blocks into a single transaction; and

atomically issue the transaction to a persistent cache, such that values of all of the metadata blocks are written to the persistent cache or none of them are, the persistent cache thereafter flushing the values of the metadata blocks, or updated versions thereof, to the set of non-volatile storage devices backing the file system for storage of the all of the metadata blocks, or updated versions thereof, in the set of non-volatile storage devices,

wherein the persistent cache provides multiple flushing policies, and wherein the executable instructions further cause the set of processing units to specify a delayed flushing policy for pages in the persistent cache that store the values of the multiple metadata blocks, the delayed flushing policy specifying flushing at a slower rate than another flushing policy provided by the persistent cache,

wherein the executable instructions further cause the set of processing units to:

receive a second I/O request specifying a second set of data to be written to the file system;

compute values of a second set of metadata blocks that the file system will use to organize the second set of data in the file system, the second set of metadata blocks including a common metadata block that that is also one of the multiple metadata blocks, a value of the common metadata block stored in a cache page of the persistent cache; and

atomically issue a second transaction to the persistent cache, such that the values of all of the second set of metadata blocks are written to the persistent cache or none of them are, the persistent cache updating the cache page that stores the value of the common metadata block to reflect a change in the value of common metadata block for incorporating the second set of data,

wherein the data storage system further includes a set of internal volumes operatively disposed between the persistent cache and the set of non-volatile storage devices, and wherein a writing of the transaction to the persistent cache includes a writing of the values of the multiple metadata blocks to pages of the persistent cache using an addressing scheme that addresses pages by identifier of one of the set of internal volumes and offset into that internal volume.

12. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by a set of processing units of a data storage apparatus, cause the set of processing units to perform a method of storing metadata in a data storage system, the method comprising:

receiving an I/O (input/output) request that specifies a set of data to be written to a file system in the data storage system, the file system backed by a set of non-volatile storage devices;

computing values of multiple metadata blocks that the file system will use to organize the set of data in the file system, the multiple metadata blocks including at least one of a virtual block map (VBM), an allocation bitmap, and a superblock;

aggregating the computed values of the metadata blocks into a single transaction; and

atomically issuing the transaction to a persistent cache, such that values of all of the metadata blocks are written to the persistent cache or none of them are, the persistent cache thereafter flushing the values of the metadata blocks, or updated versions thereof, to the set of non-volatile storage devices backing the file system for storage of the all of the metadata blocks, or updated versions thereof, in the set of non-volatile storage devices,

wherein the persistent cache provides multiple flushing policies, and wherein the method further comprises specifying a delayed flushing policy for pages in the persistent cache that store the values of the multiple metadata blocks, the delayed flushing policy specifying flushing at a slower rate than another flushing policy provided by the persistent cache,

wherein the method further comprises:

receiving a second I/O request specifying a second set of data to be written to the file system;

computing values of a second set of metadata blocks that the file system will use to organize the second set of data in the file system, the second set of metadata blocks including a common metadata block that that is also one of the multiple metadata blocks, a value of the common metadata block stored in a cache page of the persistent cache; and

atomically issuing a second transaction to the persistent cache, such that the values of all of the second set of metadata blocks are written to the persistent cache or none of them are, the persistent cache updating the cache page that stores the value of the common metadata block to reflect a change in the value of common metadata block for incorporating the second set of data,

wherein the data storage system further includes a set of internal volumes operatively disposed between the persistent cache and the set of non-volatile storage devices, and wherein writing the transaction to the persistent cache includes writing the values of the multiple metadata blocks to pages of the persistent cache using an addressing scheme that addresses pages by identifier of one of the set of internal volumes and offset into that internal volume.

13. The computer program product of claim 12 , wherein, when atomically issuing the transaction to the persistent cache, the method further comprises specifying the set of data as part of the transaction, such that both the set of data and all of the metadata blocks are written to the persistent cache or none of them are.

14. The computer program product of claim 12 , wherein the persistent cache provides multiple flushing policies, and wherein the method further comprises specifying a delayed flushing policy for pages in the persistent cache that store the values of the multiple metadata blocks, the delayed flushing policy specifying flushing at a slower rate than another flushing policy provided by the persistent cache.

15. The computer program product of claim 12 , wherein atomically issuing the transaction includes generating a single IRP (I/O request packet) that specifies the computed values of the multiple metadata blocks.

16. The computer program product of claim 15 , wherein the single IRP includes, for each of the multiple metadata blocks, one of (i) a computed value of the metadata block or (ii) a reference to a location where that metadata block value can be found.

17. The computer program product of claim 16 , wherein, the single IRP further includes a reference to the set of data, such that both the set of data and the values of all of the metadata blocks are atomically written to the persistent cache or none of them are.

18. The computer program product of claim 16 , wherein atomically writing the second transaction includes generating a second IRP that specifies the computed values of the second set of metadata blocks, the second IRP including a reference to the cache page in the persistent cache that stores the common metadata block.

19. The computer program product of claim 18 , wherein the method further comprises:

receiving an acknowledgment from the persistent cache that the set of data and the values of all of the multiple metadata blocks have been stored in the persistent cache; and

upon receiving the acknowledgement from the persistent cache, sending an acknowledgement to a requestor of the I/O request that the I/O request has been completed.

Assignments (12)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2018
From: CARAM, BRUCE E.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044654/0013 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: ARMANGAU, PHILIPPE
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044408/0051 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2017
From: GILLONO, JOHN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044265/0357 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2017
From: WANG, YUBING
To: EMC IP HOLDING LLC
Reel/Frame 043665/0556 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2017
From: SEIBEL, CHRISTOPHER A.; BONO, JEAN-PIERRE
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043464/0617 →
Cited By (3)
US 12,223,196 US 12,235,727 US 12,468,688