IP Library Granted Patent US 8,495,417
Granted Patent B2
US 8,495,417 · App. 12/351,476 · Granted Jul 23, 2013

System and method for redundancy-protected aggregates

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 8,495,417
App. No.
12/351,476
Granted
Jul 23, 2013
Kind
B2
Abstract

The present invention provides a system and a method for utilizing a parity protection module to back up data on striped aggregates. Specifically, the system computes parity data for data stored at a particular location of each of a plurality of constituent aggregates, and stores the parity on one of the constituent aggregates that is a parity owner for that particular location of data. In the event one of the constituent aggregates fails, new data may still be accessed by the system (the striped aggregates), both to write new data, and to read data stored on the failed aggregate. In particular, the parity protection module allows clients to read data from a failed aggregate by running a reverse parity computation, which may also be used to restore the data to the failed aggregate.

Claims (57)

1. A method, comprising:

organizing a plurality of constituent aggregates as striped aggregates, the constituent aggregates implemented across a plurality of nodes operatively connected as a cluster, wherein each constituent aggregate includes a plurality of storage devices organized into one or more Redundant Arrays of Independent Disk (RAID) groups,

wherein each constituent aggregate further includes a first equal number of regions, and wherein each constituent aggregate reserves 1/Nth of storage space capacity to store redundancy information from the other constituent aggregates where N is a number of the plurality of constituent aggregates;

assigning, for a second number of regions across the plurality of constituent aggregates, a single aggregate as a parity owner aggregate;

storing data received from a client at a selected constituent aggregate of the plurality of constituent aggregates;

computing redundancy information for the data stored at the selected constituent aggregate based on a logical operation between the data stored at the selected constituent aggregate with other data stored at other constituent aggregates of the plurality of constituent aggregates; and

storing the computed redundancy information for the data stored at the selected constituent aggregate on the assigned parity owner aggregate.

2. The method of claim 1 , wherein computing the redundancy information comprises:

storing the data, computed redundancy information, and one or more identifiers associated with the data to a non-volatile storage device of a node of the plurality of nodes in the cluster; and

sending a response to the client in response to storing the data to the non-volatile device.

3. The method of claim 1 , wherein storing the computed redundancy information on the parity owner aggregate comprises:

storing one or more parity identifiers associated with the computed redundancy information to a non-volatile storage device of a node of the plurality of nodes in the cluster;

sending a first response to the selected constituent aggregate in response to storing the one or more parity identifiers to the non-volatile storage device; and

in response to storing the computed redundancy information to the parity owner aggregate, sending a second response to the selected constituent aggregate.

4. The method of claim 3 , wherein the data is stored at the selected constituent aggregate at a first offset that is within a physical volume block number (PVBN) space.

5. The method of claim 4 , further comprising: determining that the selected constituent aggregate has failed and is a failed constituent aggregate after receiving a write request directed towards the striped aggregates; and

in response to determining that the selected constituent aggregate has failed, initializing a procedure to read from the parity owner aggregate and one or more other constituent aggregates.

6. The method of claim 5 , further comprising:

sending a read request to the parity owner aggregate;

performing a reverse parity computation by a parity protection module of a node of the plurality of nodes associated with the parity owner aggregate;

utilizing the reverse parity computation to read data from the failed constituent aggregate; and

sending a read response to a broadcasting node of the plurality of nodes.

7. The method of claim 6 , further comprising restoring the failed constituent aggregate utilizing a rebuilding procedure.

8. The method of claim 1 , wherein a RAID implementation of the one or more RAID groups comprises a RAID-4 implementation.

9. The method of claim 1 , wherein the logical operation is an exclusive OR (XOR) operation between the data stored at the selected constituent aggregate and the other data stored at the other constituent aggregates of the plurality of constituent aggregates.

10. The method of claim 1 , wherein the parity owner aggregate stores the redundancy information at physical volume block numbers (PVBNs) for the data stored at equivalent PVBNs in the selected constituent aggregate.

11. A system for utilizing a striped data container to back up a storage system, comprising:

a plurality of storage systems each including a processor, the plurality of storage systems configured to connect as a cluster, the plurality of storage systems further configured to organize a plurality of constituent aggregates as striped aggregates, wherein each constituent aggregate includes a plurality of storage devices organized into one or more Redundant Arrays of Independent Disk (RAID) groups, wherein each constituent aggregate further includes a first equal number of regions, and wherein each constituent aggregate reserves 1/Nth of storage space capacity to store redundancy information from the other constituent aggregates where N is a number of the plurality of constituent aggregates;

a parity owner aggregate assigned for a second number of regions across the plurality of constituent aggregates;

a selected constituent aggregate of the plurality of constituent aggregates configured to store data received from a client;

one or more of the plurality of storage systems further configured to compute redundancy information for the data stored at the selected constituent aggregate based on a logical operation between the data stored at the selected constituent aggregate and other data stored at other constituent aggregates of the plurality of constituent aggregates; and

one of the other constituent aggregates, assigned as the parity owner aggregate, configured to store the computed redundancy information for the data stored at the selected constituent aggregate.

12. The system of claim 11 , wherein computing the redundancy information comprises one or more of the plurality of storage systems further configured to:

store the data, computed redundancy information, and one or more identifiers associated with the data to a non-volatile storage device operatively connected in the cluster; and

send a response to the client in response to storing the data to the non-volatile device.

13. The system of claim 11 , wherein storing the computed redundancy information on the parity owner aggregate comprises one or more of the plurality of storage systems further configured to:

store one or more parity identifiers associated with the computed redundancy information to a non-volatile storage device of a node of the plurality of nodes in the cluster;

send a first response to the selected constituent aggregate in response to storing the one or more parity identifiers to the non-volatile storage device; and

send, in response to storing the computed redundancy information to the parity owner aggregate, a second response to the selected constituent aggregate.

14. The system of claim 13 , wherein the data is stored at the selected constituent aggregate at a first offset that is within a physical volume block number (PVBN) space.

15. The system of claim 14 , wherein one or more of the plurality of storage systems is further configured to:

determine that the selected constituent aggregate has failed and is a failed constituent aggregate after receiving a write request directed towards the striped aggregates; and

initialize, in response to determining that the selected constituent aggregate has failed, a procedure to read from the parity owner aggregate and one or more other constituent aggregates.

16. The system of claim 15 , wherein one or more of the plurality of storage systems is further configured to:

send a read request to the parity owner aggregate;

perform a reverse parity computation by a parity protection module of at least one of the plurality of storage systems associated with the parity owner aggregate;

utilize the reverse parity computation to read data from the failed constituent aggregate; and

send a read response to a broadcasting storage system of the plurality of storage systems.

17. The system of claim 16 , wherein one or more of the plurality of storage systems is further configured to restore the failed constituent aggregate utilizing a rebuilding procedure.

18. The system of claim 11 , wherein a RAID implementation of the one or more RAID groups comprises a RAID-4 implementation.

19. The system of claim 11 , wherein the logical operation is an exclusive OR (XOR) operation between the data stored at the selected constituent aggregate and the other data stored at the other constituent aggregates of the plurality of constituent aggregates.

20. A non-transitory computer-readable medium containing executable program instructions for execution by a processor, the non-transitory computer-readable medium comprising:

program instructions that organize a plurality of constituent aggregates as striped aggregates, the constituent aggregates implemented across a plurality of nodes operatively connected as a cluster, wherein each constituent aggregate includes a plurality of storage devices organized into one or more Redundant Arrays of Independent Disk (RAID) groups, wherein each constituent aggregate includes a first equal number of regions, and wherein each constituent aggregate reserves 1/Nth of storage space capacity to store redundancy information from the other constituent aggregates where N is a number of the plurality of constituent aggregates;

program instructions that assign, for a second number of regions across the plurality of constituent aggregates, only a single aggregate as a parity owner aggregate;

program instructions that store data received from a client at a selected constituent aggregate of the plurality of constituent aggregates;

program instructions that compute redundancy information for the data stored at the selected constituent aggregate based on a logical operation between the data stored at the selected constituent aggregate and other data stored at other constituent aggregates of the plurality of constituent aggregates; and

program instructions that store the computed redundancy information for the data stored at the selected constituent aggregate at one of the other constituent aggregates that is the assigned parity owner aggregate.

Assignments (3)
CHANGE OF NAME Recorded Jun 26, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 067848/0296 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2009
From: KAZAR, MICHAEL L.; NYDICK, DANIEL S.
To: NETAPP, INC.
Reel/Frame 022255/0675 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2009
From: JERNIGAN, RICHARD P., IV; HYER, ROBERT WYCKOFF, JR.
To: NETAPP, INC.
Reel/Frame 022085/0729 →