IP Library › Granted Patent US 8,880,981
Granted Patent B2
US 8,880,981 · App. 14/087,319 · Granted Nov 4, 2014

Identifying lost write errors in a raid array

Inventors: Tomislav Grcanac (San Jose, CA); Atul Goel (San Jose, CA); Jagadish Vasudeva (Sunnyvale, CA); Gururaj Mj (Sunnyvale, CA)
Assignee: NetApp, Inc.
G06F11/1088G06F11/1092G06F2211/104G06F2211/1088
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,880,981
App. No.
14/087,319
Granted
Nov 4, 2014
Kind
B2
Abstract

A data access request is received specifying a data block stored in a stripe of a parity group that includes a plurality of data storage devices to store data blocks and a parity storage device to store parity information for the data. The stripe includes a data block from each of the plurality of data storage devices and the stripe includes a parity block from the parity storage device. An error is detected in the data block specified by the data access request. The error is identified as a lost write error for the data block or a lost write error for the parity block. Identifying the error includes comparing a first storage device signature stored in a metadata field associated with the data block to a second storage device signature stored in a label block identifying a data storage device where the data block is stored.

Claims (56)

1. A method comprising:

detecting an error in a data block specified by a data access request, wherein the data block is stored in a stripe of a parity group that includes a plurality of data storage devices to store data blocks and a parity storage device to store parity information for the data, wherein the stripe includes a data block from each of the plurality of data storage devices and the stripe includes a parity block from the parity storage device; and

identifying the error as a lost write error for the data block or a lost write error for the parity block, wherein the identifying comprises,

comparing a first storage device signature stored in a metadata field associated with the data block to a second storage device signature stored in a label block identifying a data storage device of the plurality of data storage devices where the data block is stored; and

in response to the first storage device signature not matching the second storage device signature, identifying the error as the lost error for the data block.

2. The method of claim 1 , wherein identifying the error as the lost write error for the data block or the lost write error for the parity block comprises:

comparing a third storage device signature stored in a metadata field associated with the parity block to a fourth storage device signature stored in a label block identifying the parity storage device; and

in response to the third storage device signature not matching the fourth storage device signature, identifying the error as the lost error for the parity block.

3. The method of claim 1 , wherein identifying the error as the lost write error for the data block or the lost write error for the parity block comprises:

in response to the first storage device signature matching the second storage device signature, comparing a consistency point count stored in the metadata field to a reconstructed consistency point count, wherein the reconstructed consistency point count is reconstructed from data in each data block in the stripe using parity techniques; and

in response to the reconstructed consistency point count being greater than the consistency point count stored in the metadata field, identifying the error as the lost write error for the data block.

4. The method of claim 3 , wherein identifying the error as the lost write error for the data block or the lost write error for the parity block comprises:

in response to the reconstructed consistency point count not being greater than the consistency point count stored in the metadata field, identifying the error as the lost write error for the parity block.

5. The method of claim 1 , wherein detecting the error in the data block specified by the data access request comprises:

comparing a generation count stored in the metadata field to a generation value stored in the parity storage device; and

if the generation count stored in the metadata field does not match the generation value, determining that an error has occurred.

6. The method of claim 1 , wherein the second storage device signature is written to the metadata field upon a write operation being performed on the data block.

7. The method of claim 1 , wherein the second storage device signature comprises a random number written to a global field of the data storage device where the data block is stored when the data storage device is added to the parity group.

8. An apparatus comprising:

a processor; and

one or more computer readable storage media having program instructions embodied therewith, the program instructions executable by the processor to cause the apparatus to,

detect an error in a data block specified by a data access request, wherein the data block is stored in a stripe of a parity group that includes a plurality of data storage devices to store data blocks and a parity storage device to store parity information for the data, wherein the stripe includes a data block from each of the plurality of data storage devices and the stripe includes a parity block from the parity storage device; and

identify the error as a lost write error for the data block or a lost write error for the parity block, wherein the program instructions executable by the processor to cause the apparatus to identify the error as a lost write error for the data block or for the parity block comprises program instructions executable by the processor to cause the apparatus to,

compare a first storage device signature stored in a metadata field associated with the data block to a second storage device signature stored in a label block identifying a data storage device of the plurality of data storage devices where the data block is stored; and

if the first storage device signature does not match the second storage device signature, identify the error as the lost error for the data block.

9. The apparatus of claim 8 , wherein the program instructions executable by the processor to cause the apparatus to identify the error as the lost write error for the data block or the lost write error for the parity block comprise program instructions executable by the processor to cause the apparatus to:

compare a third storage device signature stored in a metadata field associated with the parity block to a fourth storage device signature stored in a label block identifying the parity storage device; and

if the third storage device signature does not match the fourth storage device signature, identify the error as the lost error for the parity block.

10. The apparatus of claim 8 , wherein the program instructions executable by the processor to cause the apparatus toto identify the error as the lost write error for the data block or the lost write error for the parity block comprise program instructions executable by the processor to cause the apparatus to:

if the first storage device signature does match the second storage device signature, compare a consistency point count stored in the metadata field to a reconstructed consistency point count, wherein the reconstructed consistency point count is reconstructed from data in each data block in the stripe using parity techniques; and

if the reconstructed consistency point count is greater than the consistency point count stored in the metadata field, identify the error as the lost write error for the data block.

11. The apparatus of claim 10 , wherein the program instructions executable by the processor to cause the apparatus to identify the error as the lost write error for the data block or the lost write error for the parity block comprise program instructions executable by the processor to cause the apparatus to:

if the reconstructed consistency point count is not greater than the consistency point count stored in the metadata field, identify the error as the lost write error for the parity block.

12. The apparatus of claim 8 , wherein the program instructions executable by the processor to cause the apparatus to detect the error in the data block specified by the data access request comprise program instructions executable by the processor to cause the apparatus to:

compare a generation count stored in the metadata field to a generation value stored in the parity storage device; and

if the generation count stored in the metadata field does not match the generation value, determine that an error has occurred.

13. The apparatus of claim 8 , wherein the second storage device signature is written to the metadata field upon a write operation being performed on the data block.

14. The apparatus of claim 8 , wherein the second storage device signature comprises a random number written to a global field of the data storage device where the data block is stored when the data storage device is added to the parity group.

15. A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions comprising program instructions to:

detect an error in a data block specified by a data access request, wherein the data block is stored in a stripe of a parity group that includes a plurality of data storage devices to store data blocks and a parity storage device to store parity information for the data, wherein the stripe includes a data block from each of the plurality of data storage devices and the stripe includes a parity block from the parity storage device; and

identify the error as a lost write error for the data block or a lost write error for the parity block, wherein the program instructions to identify the error as a lost write error for the data block or for the parity block comprises program instructions to,

compare a first storage device signature stored in a metadata field associated with the data block to a second storage device signature stored in a label block identifying a data storage device of the plurality of data storage devices where the data block is stored; and

if the first storage device signature does not match the second storage device signature, identify the error as the lost error for the data block.

16. The computer program product of claim 15 , wherein the program instructions to identify the error as the lost write error for the data block or the lost write error for the parity block comprise programs instructions to:

compare a third storage device signature stored in a metadata field associated with the parity block to a fourth storage device signature stored in a label block identifying the parity storage device; and

if the third storage device signature does not match the fourth storage device signature, identify the error as the lost error for the parity block.

17. The computer program product of claim 15 , wherein the program instructions to identify the error as the lost write error for the data block or the lost write error for the parity block comprise program instructions to:

if the first storage device signature does match the second storage device signature, compare a consistency point count stored in the metadata field to a reconstructed consistency point count, wherein the reconstructed consistency point count is reconstructed from data in each data block in the stripe using parity techniques; and

if the reconstructed consistency point count is greater than the consistency point count stored in the metadata field, identify the error as the lost write error for the data block.

18. The computer program product of claim 17 , wherein the program instructions to identify the error as the lost write error for the data block or the lost write error for the parity block comprise program instructions are to:

if the reconstructed consistency point count is not greater than the consistency point count stored in the metadata field, identify the error as the lost write error for the parity block.

19. The computer program product of claim 15 , wherein the program instructions to detect the error in the data block specified by the data access request comprise program instructions to:

compare a generation count stored in the metadata field to a generation value stored in the parity storage device; and

if the generation count stored in the metadata field does not match the generation value, determine that an error has occurred.

20. The computer program product of claim 15 , wherein the second storage device signature is written to the metadata field upon a write operation being performed on the data block.

21. The computer program product of claim 15 , wherein the second storage device signature comprises a random number written to a global field of the data storage device where the data block is stored when the data storage device is added to the parity group.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2014
From: GRCANAC, TOMISLAV; GOEL, ATUL; VASUDEVA, JAGADISH; MJ, GURURAJ
To: NETAPP, INC.
Reel/Frame 033758/0361 →
Continuity (2)
Continuation 12979130 · Dec 27, 2010
Related Publication 20140164825A1 · Jun 12, 2014