IP Library Granted Patent US 8,103,904
Granted Patent B2
US 8,103,904 · App. 12/710,162 · Granted Jan 24, 2012

Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system

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,103,904
App. No.
12/710,162
Granted
Jan 24, 2012
Kind
B2
Abstract

Data storage reliability is maintained in a write-back distributed data storage system including multiple nodes. Each node comprises a processor and an array of failure independent data storage devices. Information is stored as a set of stripes, each stripe including a collection of at least a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes. A read-other parity update protocol maintains parity coherency. The primary data node for each data strip drives parity coherency with the corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent. A parity value is determined based on data other than a difference between new data and existing data. A new parity value is based on new data and dependent data, wherein with respect to one data value, dependent data comprises other data encoded in a corresponding parity value.

Claims (91)

1. A method of maintaining data storage reliability in a write-back distributed data storage system including multiple nodes, each node comprising an array of failure independent data storage devices, the method comprising:

storing information as a set of stripes, each stripe including a collection of at least a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes;

the primary data node for each data strip maintaining the data strip holding a first copy of data, and each parity node maintaining a parity strip holding a parity for the data strips; and

performing a read-other parity update protocol for maintaining parity coherency, including the primary data node driving parity coherency with the corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent;

wherein performing a read-other parity update protocol further includes determining parity value based on data other than a difference between new data and existing data, such that a new parity value is computed based on new data and dependent data, wherein with respect to one data value, dependent data comprises other data encoded in a corresponding parity value;

during the preparation phase, upon a node failure, the lowest survivor node in the forward sequence driving an abort sequence for the read-other parity update protocol; and

during the commit phase, upon a node failure, the lowest survivor node in the forward sequence driving a restart of the commit phase for the read-other parity update protocol.

2. The method of claim 1 , wherein:

each parity is calculated based on a different parity calculation formula; and

performing a read-other parity update protocol further comprises determining parity by:

in a preparation phase:

the primary data node sending a prepare message to a first parity node, each parity node forwarding the prepare message to a next parity node in a predefined sequence;

each parity node sending request messages to the other data nodes for their dependent data, and computing a new parity from received dependent data and at least one of the new data at the primary data node and parity-integrated data from dependent data nodes;

starting from the last parity node in the sequence, each parity node sending an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sending an acknowledgement message to the primary data node, indicating completion of the preparation phase.

3. The method of claim 2 , wherein performing a read-other parity update protocol further comprises:

in a commit phase:

the primary data node sending a commit message to the first parity node, each parity node forwarding the commit message to a next parity node in a predefined sequence;

each parity node committing its newly computed parity value;

starting from the last parity node in the sequence, each parity node sending an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sending an acknowledgement message to the primary data node, indicating completion of the commit phase.

4. The method of claim 3 further comprising:

the primary data node maintaining at least two versions of the data for a strip, a fast write version and a parity-integrated version, wherein the fast write copy has been written into a write-back distributed data storage system by a host or client and not integrated into a parity strip, and wherein the parity-integrated copy has been incorporated into a process for defining a parity value; and

transitioning the fast write version to the parity-integrated version at completion of a parity update protocol at all relevant parity nodes, whereby the prior parity-integrated version is discarded.

5. The method of claim 4 further comprising, in each parity node:

maintaining a working version of its parity strip value containing a current parity-integrated value for each of the data strips computed into that parity strip; and

at the end of the parity update as viewed by each parity node, the parity node transitioning the working version to the parity-integrated value and discarding the previous parity-integrated value.

6. The method of claim 1 further comprising:

storing information further comprises storing information as a set of stripes, each stripe including a collection of multiple data strips and associated parity strips, the stripes distributed across multiple corresponding primary data nodes and multiple corresponding parity nodes;

the primary data node for each data strip maintaining the data strip holding a first copy of data, and each parity node maintaining a parity strip holding a parity for the multiple data strips;

storing information as plural stripes, each stripe including a collection of a data strip and associated parity strips, distributed across a primary data node and multiple corresponding parity nodes;

providing a specified parity node message forwarding order for each primary data node and corresponding parity nodes; and

each primary data node driving parity coherency with its corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent.

7. A write-back distributed data storage system for maintaining data storage reliability, comprising:

multiple nodes, each node comprising an array of failure independent data storage devices;

the nodes configured for storing information as a set of stripes, each stripe including a collection of at least a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes, the primary data node for each data strip configured for maintaining the data strip holding a first copy of data, and each parity node configured for maintaining a parity strip holding a parity for the data strips;

the primary data node further configured for performing a read-other parity update protocol for maintaining parity coherency, including driving parity coherency with the corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent;

wherein performing a read-other parity update protocol further includes determining parity value based on data other than a difference between new data and existing data, such that a new parity value is computed based on new data and dependent data, wherein with respect to one data value, dependent data comprises other data encoded in a corresponding parity value;

during the preparation phase, upon a node failure, the lowest survivor node in the forward sequence drives an abort sequence for the read-other parity update protocol; and

during the commit phase, upon a node failure, the lowest survivor node in the forward sequence drives a restart of the commit phase for the read-other parity update protocol.

8. The system of claim 7 , wherein:

each parity is calculated based on a different parity calculation formula; and

in a preparation phase:

the primary data node sends a prepare message to a first parity node, each parity node forwarding the prepare message to a next parity node in a predefined sequence;

each parity node sends request messages to the other data nodes for their dependent data, and computes a new parity from received dependent data and at least one of the new data at the primary data node and parity-integrated data from dependent data nodes;

starting from the last parity node in the sequence, each parity node sends an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sends an acknowledgement message to the primary data node, indicating completion of the preparation phase.

9. The system of claim 8 wherein:

in a commit phase:

the primary data node sends a commit message to the first parity node, each parity node forwards the commit message to a next parity node in a predefined sequence;

each parity node commits its newly computed parity value;

starting from the last parity node in the sequence, each parity node sends an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sends an acknowledgement message to the primary data node, indicating completion of the commit phase.

10. The system of claim 9 , wherein:

the primary data node maintains at least two versions of the data for a strip, a fast write version and a parity-integrated version, wherein the fast write copy has been written into a write-back distributed data storage system by a host or client and not integrated into a parity strip, and wherein the parity-integrated copy has been incorporated into a process for defining a parity value.

11. The system of claim 10 , wherein each parity node is further configured for:

maintaining a working version of its parity strip value containing a current parity-integrated value for each of the data strips computed into that parity strip; and

at the end of the parity update as viewed by each parity node, the parity node transitioning the working version to the parity-integrated value and discarding the previous parity-integrated value.

12. The system of claim 7 , wherein:

the nodes are configured for storing information as plural stripes, each stripe including a collection of a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes;

a specified parity node message forwarding order is maintained for each primary data node and corresponding parity nodes; and

each primary data node is configured for driving parity coherency with its corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent.

13. A computer program product for maintaining data storage reliability in a write-back distributed data storage system including multiple nodes, each node comprising an array of failure independent data storage devices, the computer program product comprising:

a non-transitory computer readable storage medium having computer usable program code embodied therewith, the computer usable program code comprising:

computer usable program code configured to store information as a set of stripes, each stripe including a collection of at least a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes;

computer usable program code configured for the primary data node for each data strip to maintain the data strip holding a first copy of data, and each parity node maintain a parity strip holding a parity for the data strips;

computer usable program code configured for performing a read-other parity update protocol for maintaining parity coherency, including the primary data node driving parity coherency with the corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent, wherein performing a read-other parity update protocol further includes determining parity value based on data other than a difference between new data and existing data, such that a new parity value is computed based on new data and dependent data, wherein with respect to one data value, dependent data comprises other data encoded in a corresponding parity value;

computer usable program code configured for, during the preparation phase, upon a node failure, the lowest survivor node in the forward sequence driving an abort sequence for the read-other parity update protocol; and

computer usable program code configured for, during the commit phase, upon a node failure, the lowest survivor node in the forward sequence driving a restart of the commit phase for the read-other parity update protocol.

14. The computer program product of claim 13 further comprising:

computer usable program code configured for calculating each parity based on a different parity calculation formula, in a preparation phase:

the primary data node sending a prepare message to a first parity node, each parity node forwarding the prepare message to a next parity node in a predefined sequence;

each parity node sending request messages to the other data nodes for their dependent data, and computing a new parity from received dependent data and at least one of the new data at the primary data node and parity-integrated data from dependent data nodes;

starting from the last parity node in the sequence, each parity node sending an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sending an acknowledgement message to the primary data node, indicating completion of the preparation phase.

15. The computer program product of claim 14 further comprising:

computer usable program code configured for, in a commit phase:

the primary data node sending a commit message to the first parity node, each parity node forwarding the commit message to a next parity node in a predefined sequence;

each parity node committing its newly computed parity value;

starting from the last parity node in the sequence, each parity node sending an acknowledgement message to an immediately prior parity node in the sequence; and

the first parity node sending an acknowledgement message to the primary data node, indicating completion of the commit phase.

16. The computer program product of claim 15 further comprising:

computer usable program code configured for the primary data node to maintain at least two versions of the data for a strip, a fast write version and a parity-integrated version, wherein the fast write copy has been written into a write-back distributed data storage system by a host or client and not integrated into a parity strip, and wherein the parity-integrated copy has been incorporated into a process for defining a parity value;

computer usable program code configured for transitioning the fast write version to the parity-integrated version at completion of a parity update protocol at all relevant parity nodes, whereby the prior parity-integrated version is discarded;

computer usable program code configured for each parity node to:

maintain a working version of its parity strip value containing a current parity-integrated value for each of the data strips computed into that parity strip; and

at the end of the parity update as viewed by each parity node, transition the working version to the parity-integrated value and discarding the previous parity-integrated value.

17. The computer program product of claim 13 further comprising:

computer usable program code configured for storing information as plural stripes, each stripe including a collection of a data strip and associated parity strips, the stripes distributed across a primary data node and multiple corresponding parity nodes;

computer usable program code configured for providing a specified parity node message forwarding order for each primary data node and corresponding parity nodes; and

computer usable program code configured for each primary data node driving parity coherency with its corresponding parity nodes, independently of other data nodes, in keeping relevant parity strips for the primary data node coherent.

Assignments (7)
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052888 FRAME 0177 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0712 →
SECURITY INTEREST Recorded Jun 9, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052888/0177 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2020
From: HGST NETHERLANDS B.V
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052783/0631 →
CONFIRMATORY ASSIGNMENT Recorded Jan 21, 2016
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: HGST NETHERLANDS B.V.
Reel/Frame 037569/0134 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2010
From: HAFNER, JAMES L.; THAKUR, TARUN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 023971/0829 →