Data storage array employing block verification information to invoke initialization procedures
First Claim
1. A data storage subsystem comprising:
- a plurality of storage devices;
a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein each stripe further includes a redundancy data block;
wherein said storage controller is further configured to initialize a given stripe in response to receiving a write request to write a new data block at a particular location of said given stripe and detecting a mismatch in block verification information associated with an existing data block at the particular location of said given stripe to be updated;
wherein, to detect a mismatch in block verification information associated with the existing data block at the particular location of said given stripe to be updated, said storage controller is configured to read the existing data block and a corresponding block verification information, generate a recomputed block verification information from data within the existing data block, and compare the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists;
wherein said storage controller is configured to initialize said given stripe by generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe.
2 Assignments
0 Petitions
Accused Products
Abstract
A data storage array employing block verification information to invoke initialization procedures. In one embodiment, a data storage subsystem includes a plurality of storage devices configured in an array and a storage controller coupled to the storage devices. The storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across the plurality of storage devices. Each of the data blocks is associated with block verification information. Upon certain write operations, the storage controller is configured to initialize a given stripe in response to detecting a mismatch in the block verification information in at least one data block of the given stripe. In one particular implementation, the block verification contained in each of the data blocks includes a logical block address and/or a cyclic redundancy code.
-
Citations
45 Claims
-
1. A data storage subsystem comprising:
-
a plurality of storage devices; a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein each stripe further includes a redundancy data block; wherein said storage controller is further configured to initialize a given stripe in response to receiving a write request to write a new data block at a particular location of said given stripe and detecting a mismatch in block verification information associated with an existing data block at the particular location of said given stripe to be updated; wherein, to detect a mismatch in block verification information associated with the existing data block at the particular location of said given stripe to be updated, said storage controller is configured to read the existing data block and a corresponding block verification information, generate a recomputed block verification information from data within the existing data block, and compare the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists; wherein said storage controller is configured to initialize said given stripe by generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A data storage subsystem comprising:
-
a plurality of storage devices; a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein at least one of the plurality of data blocks is a redundancy data block; wherein said storage controller is further configured to initialize a given stripe in response to receiving a write request to write a new data block at a particular location of said given stripe and detecting a mismatch in block verification information in each of at least two existing data blocks of said given stripe, wherein one of the two existing data blocks is at the particular location of said given stripe to be updated; wherein, to detect a mismatch in block verification information associated with the one existing data block at the particular location of said given stripe to be updated, said storage controller is configured to read the one existing data block and a corresponding block verification information, generate a recomputed block verification information from data within the one existing data block, and compare the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists; wherein said storage controller is configured to initialize said given stripe by generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A computer system comprising:
-
a host; and a data storage subsystem coupled to said host, said data storage subsystem including; a plurality of storage devices; a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store data in the form of stripes where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein each stripe further includes a redundancy data block; wherein said storage controller is further configured to initialize a given stripe in response to receiving a write request to write a new data block at a particular location of said given stripe and detecting a mismatch in block verification information associated with an existing data block at the particular location of said given stripe to be updated; wherein, to detect a mismatch in block verification information associated with the existing data block at the particular location of said given stripe to be updated, said storage controller is configured to read the existing data block and a corresponding block verification information, generate a recomputed block verification information from data within the existing data block, and compare the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists; wherein said storage controller is configured to initialize said given stripe by generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe. - View Dependent Claims (33, 34, 35, 36)
-
-
37. A method of operating a data storage subsystem comprising:
-
storing data in the form of stripes within a plurality of storage devices, where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein each stripe further includes a redundancy data block; and initializing a given stripe in response to receiving a write request to write a new data block at a particular location of said given stripe and detecting a mismatch in block verification information associated with an existing data block at the particular location of said given stripe to be updated; wherein said detecting a mismatch in block verification information associated with the existing data block at the particular location of said given stripe to be updated includes reading the existing data block and a corresponding block verification information, generating a recomputed block verification information from data within the existing data block, and comparing the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists; wherein said initializing said given stripe comprises generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44)
-
-
45. A method of operating a data storage subsystem comprising:
-
storing data in the form of stripes within a plurality of storage devices, where each stripe includes a plurality of data blocks stored across said plurality of storage devices, wherein each stripe further includes a redundancy data block; receiving a write request to write a new data block at a particular location of a given stripe; and initializing said given stripe in response to receiving the write request and detecting a mismatch in block verification information associated with an existing data block at the particular location of said given stripe to be updated; wherein said detecting a mismatch in block verification information associated with the existing data block at the particular location of said given stripe to be updated includes reading the existing data block and a corresponding block verification information, generating a recomputed block verification information from data within the existing data block, and comparing the corresponding block verification information to the recomputed block verification information to determine whether a mismatch exists; wherein said initializing said given stripe comprises generating a corresponding redundancy data block for said given stripe based on at least the new data block to be written to said given stripe.
-
Specification