IP Library Granted Patent US 8,209,587
Granted Patent B1
US 8,209,587 · App. 11/734,314 · Granted Jun 26, 2012

System and method for eliminating zeroing of disk drives in RAID arrays

Assignee: NetApp, Inc.
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,209,587
App. No.
11/734,314
Granted
Jun 26, 2012
Kind
B1
Abstract

Embodiments of the present invention disclose a technique for providing an indication whether data stored on a disk drive are invalid. As used herein, invalid data are data written prior to the disk drive being added to an array of the disk drives or data in a block that has become free and which has been removed from the corresponding parity block of the stripe. Knowing that the disk drive was written prior to the drive being added to the existing array or having data which has become invalid allows a storage server to ignore the invalid data and not to use it when computing parity (i.e., a data protection value computed as a result of a logical operation on data blocks in a stripe in the array of disk drives). This, in turn, eliminates the need to zero disk drives or to perform parity re-computation prior to using the disk drives.

Claims (37)

1. A method performed by a computer connected to a storage array having a plurality of storage devices, comprising:

determining by a processor of the computer whether a block in a stripe is to be included in a parity block for the stripe;

in response to determining that the block in the stripe is to be included in the parity block, determining whether the block is valid;

in response to determining that the block is invalid, ignoring the block to update the parity block for the stripe; and

in response to determining that the block is valid, updating the parity block using the block in the stripe.

2. The method of claim 1 , further comprising assigning a first mask to each storage device of the plurality of storage devices in the storage array.

3. The method of claim 2 , further comprising updating a second mask of a particular storage device to which new data are written that stores parity for the stripe in the array.

4. The method of claim 1 , wherein each storage device of the plurality of storage devices comprises a disk drive.

5. The method of claim 1 , further comprising:

inserting, into a checksum block of a new data block of the stripe, a unique storage device identification (ID) of a storage device of the plurality of storage devices where the new data block will be written; and

writing the new data block and an associated checksum block to the storage device identified by the unique storage device ID.

6. The method of claim 1 , further comprising:

inserting, into a checksum block associated with the parity block, a unique storage device identification (ID) of a storage device of the plurality of storage devices where the parity block will be written; and

writing the parity block and the checksum block to the storage device where the parity block will be written.

7. The method of claim 1 wherein determining whether the block is valid comprises:

storing a unique storage device identification (ID) on a storage device of the plurality of storage devices in the storage array storing the block;

responsive to receiving an access request that comprises a write operation and associated data, reading a data block in the stripe that is not to be modified and an associated checksum block; and

comparing the unique storage device ID to the data stored in the checksum block.

8. A computer configured to perform input/output (I/O) operations for a storage array having a plurality of storage devices, comprising:

a processor configured to execute one or more processes, the one or more processes, when executed, configured to:

determine whether a block in a stripe is to be included in a parity block for the stripe;

determine, in response to determining that the block in the stripe is to be included in the parity block, whether the block is valid;

ignore, in response to determining that the block is invalid, the block to update the parity block for the stripe; and

update, in response to determining that the block is valid, the parity block using the block in the stripe.

9. The method of claim 7 , wherein the unique storage device ID is read from a memory of the computer.

10. The computer of claim 8 , further comprising a storage module coupled to the processor, the storage module configured to insert, in a checksum block associated with a data block that stores data in an access request, a unique identification (ID) of a storage device of the plurality of storage devices in the storage array where the data in the access request will be written.

11. The computer of claim 8 , further comprising a storage module coupled to the processor, the storage module configured to insert, in a checksum block associated with the parity block, a unique identification (ID) of a storage device of the plurality of storage devices where the parity block will be written.

12. The computer of claim 8 , further comprising a memory coupled to the processor for storing a mask of each storage device of the plurality of storage devices in the storage array.

13. The computer of claim 8 , wherein each storage device of the plurality of storage devices comprises a disk drive.

14. The computer of claim 8 further comprising:

a storage module coupled to the processor and configured to store a unique storage device identification (ID) on a storage device of the plurality of storage devices in the storage array; and

responsive to receiving an access request that comprises a write operation and associated data, the storage module further configured to read a data block in the stripe that is not to be modified and an associated checksum block, and further configured to compare the unique storage device ID to the data stored in the checksum block.

15. A computer-readable storage medium stored with program instructions for execution by a processor, the computer-readable storage medium comprising:

program instructions that determine whether a block in a stripe is to be included in a parity block for the stripe;

program instructions that determine, in response to determining that the block in the stripe is to be included in the parity block, whether the block is valid;

program instructions that ignore, in response to determining that the block is invalid, the block to update the parity block for the stripe; and

program instructions that update, in response to determining that the block is valid, the parity block using the block.

Assignments (3)
CHANGE OF NAME Recorded Jun 26, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 067846/0174 →
CHANGE OF NAME Recorded May 9, 2012
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 028180/0846 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2007
From: TAYLOR, JAMES; GOEL, ATUL; LEONG, JAMES
To: NETWORK APPLIANCE, INC.
Reel/Frame 019150/0988 →