IP Library Granted Patent US 10,466,913
Granted Patent B2
US 10,466,913 · App. 14/699,594 · Granted Nov 5, 2019

Method and system for replicating and using grid level metadata in a storage system

Inventor: Jeffrey S. Bonwick (Santa Clara, CA)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/0644G06F3/0688G06F3/0689G06F11/10G06F2003/0692
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 10,466,913
App. No.
14/699,594
Filed
Apr 29, 2015
Granted
Nov 5, 2019
Kind
B2
Art Unit
2131
USPC
711/114
Abstract

In general, embodiments of the technology relate to a method and system protecting data in persistent storage. More specifically, various embodiments of the technology relate to using different replication schemes to protect different types of data within the persistent storage.

Claims (60)

1. A method for storing data comprising:

(a) generating a first plurality of labels each comprising a first program/erase (P/E) count for a first zone in a RAID grid and first bad location information for the first zone, wherein the first zone comprises a first set of RAID grid locations and a second set of RAID grid locations, wherein the first zone is divided into a first side and a second side, wherein the first side comprises the first set of RAID grid locations and the second side comprises the second set of RAID grid locations, wherein the first set of RAID grid locations corresponds to at least a page in a first storage device of a storage array and a second page in a second storage device of the storage array;

(b) erasing each of the first set of RAID grid locations;

(c) writing one of the first plurality of labels to at least one page in each of the first set of RAID grid locations;

(d) erasing each of the second set of RAID grid locations, wherein (b) and (c) are performed before (d);

(e) generating a second plurality of labels each comprising a second program/erase (P/E) count for the first zone in the RAID grid and second bad location information for the first zone, wherein content in the second plurality of labels is based, at least in part, on (b) and (d);

(f) writing one of the second plurality of labels to at least one page in each of the second set of RAID grid locations; and

(g) writing user data to each of the first set of RAID grid locations and each of the second set of RAID grid locations, wherein the user data comprises client data, block-level metadata, and parity data, wherein after (g), at least one of the first set of RAID grid locations comprises a block, wherein at least one page in the block comprises user data and at least one page in the block comprises one of the first plurality of labels.

2. The method of claim 1 , further comprising:

(h) generating a third plurality of labels each comprising a third P/E count for a second zone in the RAID grid and third bad location information for the second zone;

(i) erasing each of a third set of RAID grid locations, wherein each of the third set of RAID grid locations comprises a block associated with a first side of the second zone;

(j) writing one of the third plurality of labels to each of the third set of RAID grid locations;

(k) erasing each of a fourth set of RAID grid locations, wherein each of the fourth set of RAID grid locations comprises a block associated with a second side of the second zone;

(l) generating a fourth plurality of labels each comprising a fourth P/E count for the second zone in the RAID grid and fourth bad location information for the second zone;

(m) writing one of the fourth plurality of labels to each of the fourth set of RAID grid locations; and

(n) writing user data to each of the third set of RAID grid location and each of the fourth set of RAID grid locations.

3. The method of claim 2 , wherein each of the first plurality of labels further comprises a timestamp and wherein each of the third plurality of labels further comprises the timestamp.

4. The method of claim 1 , wherein the parity value comprises at least one selected from a group consisting of a P parity value, a Q parity value, and an intersection parity value.

5. The method of claim 1 , wherein the user data in the RAID grid is protected by a RAID-scheme, wherein the first plurality of labels in the RAID grid are protected by a replication-scheme.

6. The method of claim 1 , wherein the second bad location information for the first zone comprises at least one selected from a group consisting of bad storage module information, bad block information, and bad page information.

7. The method of claim 1 , wherein the second bad location information is different than the first bad location information.

8. The method of claim 1 , wherein (c) and (f) are performed before (g).

9. The method of claim 1 , wherein each of the first plurality of labels comprises a grid geometry for the RAID grid and wherein the grid geometry comprises a parity location in the RAID grid.

10. The method of claim 9 , wherein each of the second plurality of labels comprises the grid geometry for the RAID grid.

11. The method of claim 1 , wherein the first set of RAID grid locations are a portion of a RAID grid and the second set of RAID grid locations are a portion of the RAID grid.

12. The method of claim 1 , wherein the second set of RAID grid locations correspond to at least a page in a third storage device of the storage array and a page in a fourth storage device of the storage array.

13. A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to:

(a) generate a first plurality of labels each comprising a first program/erase (P/E) count for a first zone in a RAID grid and first bad location information for the first zone, wherein the first zone comprises a first set of RAID grid locations and a second set of RAID grid locations, wherein the first zone is divided into a first side and a second side, wherein the first side comprises the first set of RAID grid locations and the second side comprises the second set of RAID grid locations, wherein the first set of RAID grid locations corresponds to at least a page in a first storage device of a storage array and a second page in a second storage device of the storage array;

(b) erase each of the first set of RAID grid locations;

(c) write one of the first plurality of labels to at least one page in each of the first set of RAID grid locations;

(d) erase each of the second set of RAID grid locations, wherein (b) and (c) are performed before (d);

(e) generate a second plurality of labels each comprising a second program/erase (P/E) count for the first zone in the RAID grid and second bad location information for the first zone, wherein content in the second plurality of labels is based, at least in part, on (b) and (d);

(f) write one of the second plurality of labels to at least one page in each of the second set of RAID grid locations; and

(g) write user data to each of the first set of RAID grid locations and each of the second set of RAID grid locations, wherein the user data comprises client data, block-level metadata, and parity data, wherein after (g), at least one of the first set of RAID grid locations comprises a block, wherein at least one page in the block comprises user data and at least one page in the block comprises one of the first plurality of labels.

14. The non-transitory computer readable medium of claim 13 , further comprising computer readable program code, which when executed by the computer processor enables the computer processor to:

(h) generate a third plurality of labels each comprising a third P/E count for a second zone in the RAID grid and third bad location information for the second zone;

(i) erase each of a third set of RAID grid locations, wherein each of the third set of RAID grid locations comprises a block associated with a first side of the second zone;

(j) write one of the third plurality of labels to each of the third set of RAID grid locations;

(k) erase each of a fourth set of RAID grid locations, wherein each of the fourth set of RAID grid locations comprises a block associated with a second side of the second zone;

(l) generate a fourth plurality of labels each comprising a fourth P/E count for the second zone in the RAID grid and fourth bad location information for the second zone;

(m) write one of the fourth plurality of labels to each of the fourth set of RAID grid locations; and

(n) write second user data to each of the third set of RAID grid location and each of the fourth set of RAID grid locations.

15. The non-transitory computer readable medium of claim 13 , wherein each of the first plurality of labels further comprises a timestamp and wherein each of the third plurality of labels further comprise the timestamp.

16. The non-transitory computer readable medium of claim 13 , wherein the parity value comprises at least one selected from a group consisting of a P parity value, a Q parity value, and an intersection parity value.

17. The non-transitory computer readable medium of claim 13 , wherein the second bad location information is determined, at least in part, using a result of (b) and (d) and wherein the second bad location information for the first zone comprises at least one selected from a group consisting of bad storage module information, bad block information, and bad page information.

18. The non-transitory computer readable medium of claim 13 , wherein (c) and (f) are performed before (g).

19. The non-transitory computer readable medium of claim 13 , wherein each of the first plurality of labels comprises a grid geometry for the RAID grid, wherein each of the second plurality of labels comprises the grid geometry for the RAID grid, and wherein the grid geometry comprises a parity location in the RAID grid.

20. A system, comprising:

a controller;

a non-transitory medium operatively connected to the controller;

persistent storage operatively connected to the controller and comprising a plurality of storage modules, wherein each of the plurality of storage modules comprises solid state memory;

wherein the non-transitory computer readable medium comprises instructions which when executed by the controller performs a method, the method comprising:

(a) generating a first plurality of labels each comprising a first program/erase (P/E) count for a first zone in a RAID grid and first bad location information for the first zone,

wherein the first zone comprises a first set of RAID grid locations and a second set of RAID grid locations, wherein the first zone is divided into a first side and a second side, wherein the first side comprises the first set of RAID grid locations and the second side comprises the second set of RAID grid locations, wherein the first set of RAID grid locations corresponds to at least a page in a first storage device of a storage array and a second page in a second storage device of the storage array;

(b) erasing each of the first set of RAID grid locations;

(c) writing one of the first plurality of labels to at least one of each of the first set of RAID grid locations;

(d) erasing each of a second set of RAID grid locations, wherein (b) and (c) are performed before (d);

(e) generating a second plurality of labels each comprising a second program/erase (P/E) count for the first zone in the RAID grid and second bad location information for the first zone, wherein content in the second plurality of labels is based, at least in part, on (b) and (d);

(f) writing one of the second plurality of labels to at least one page in each of the second set of RAID grid locations; and

(g) writing user data to each of the first set of RAID grid locations and each of the second set of RAID grid locations, wherein the user data comprises client data, block-level metadata, and parity data, wherein after (g), at least one of the first set of RAID grid locations comprises a block, wherein at least one page in the block comprises user data and at least one page in the block comprises one of the first plurality of labels, and wherein each of the blocks is located on one of the plurality of storage modules.

Assignments (10)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2015
From: BONWICK, JEFFREY S.
To: EMC CORPORATION
Reel/Frame 036815/0627 →
Continuity (1)
Related Publication 20160320986A1 · Nov 3, 2016
Cited By (1)
US 12,393,485