System, method, and computer program for selectable or programmable data consistency checking methodology
First Claim
1. In a data storage system that includes a host computer coupled to a disk array controller that is in turn coupled to a plurality of data storage devices, a method providing improved data consistency checking and correction of user data stored in one or more data sectors on a data stripe, each data sector including a respective data header, the data stripe including a parity sector that in turn includes a parity header, the data stripe being distributed across the data storage devices, the method comprising:
- for each data header, storing a respective first code into the data header that represents the user data stored in the data header'"'"'s respective data segment;
storing a second code into the parity header, the second code representing a set of parity data stored in the parity sector; and
, storing a third code into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data without performing respective operations on each byte of data in both the data sectors and the parity sector.
2 Assignments
0 Petitions
Accused Products
Abstract
A data storage system that includes computer coupled to disk array controller which is coupled to data storage devices. First procedure provides a method to perform data consistency checking and correction of user data stored in data sectors on a data stripe. Each data sector includes data header and data stripe includes a parity sector, and parity sector includes a parity header. Data stripe is distributed across storage devices. Provides each data header with first code to provide a check for the user data stored in the data header'"'"'s data segment, provides the parity header with second code to provide a check for a set of parity data stored in parity sector, and provides the parity header with third code by encoding each respective first code with second code. Third code enables user to check consistency of user data and parity data without respective operations on each byte of data in both data sectors and parity sector.
47 Citations
29 Claims
-
1. In a data storage system that includes a host computer coupled to a disk array controller that is in turn coupled to a plurality of data storage devices, a method providing improved data consistency checking and correction of user data stored in one or more data sectors on a data stripe, each data sector including a respective data header, the data stripe including a parity sector that in turn includes a parity header, the data stripe being distributed across the data storage devices, the method comprising:
-
for each data header, storing a respective first code into the data header that represents the user data stored in the data header'"'"'s respective data segment;
storing a second code into the parity header, the second code representing a set of parity data stored in the parity sector; and
,storing a third code into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data without performing respective operations on each byte of data in both the data sectors and the parity sector. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer program product for use in conjunction with a processor, the computer program product comprising a first computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising a data consistency checking procedure to determine inconsistencies between parity data and user data stored in a stripe of data distributed across a plurality of data storage devices in a data storage system, the parity data being stored in a parity sector, the parity sector including a parity header, the user data being stored in one or more data sectors, each respective data sector of the data sectors including a data header, the data consistency checking procedure including instructions for:
-
for each data header, storing a respective first code into the data header that represents the user data stored in the data header'"'"'s respective data segment;
caching a second code into the parity header, the second code representing a set of parity data stored in the parity sector; and
,putting a third code into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data without performing respective operations on each byte of data in both the data sectors and the parity sector. - View Dependent Claims (13)
-
-
14. An apparatus for performing data consistency checking operations, the apparatus comprising:
-
a first communications link coupling the apparatus to a computer;
a second communications link coupling the apparatus to a plurality of data storage devices;
a processor for fetching data and executing computer program instructions stored in a memory, the computer program instructions comprising a data consistency checking procedure for;
storing a respective first code of one or more first codes into a set of data headers in one or more data segments, the data segments being located in a data stripe distributed across the plurality of data storage devices, the first code representing a set of user data stored in the data header'"'"'s respective data segment;
providing a parity header with a second code to represent a set of parity data stored in a parity sector in the data stripe, the parity header being part of the parity sector; and
providing the parity header with a third code by encoding each respective first code with the second code;
such that the third code can be used to check the consistency of a set of user data and a set of parity data without the need to respective operations on each byte of data in both the data sectors and the parity sector, the user data being stored in the one or more data sectors, the parity data being stored in the parity sector.
-
-
15. A system for performing data consistency checking, the system comprising:
-
a computer for sending a data consistency check request to a controller, the computer being coupled to the controller, the controller being responsive to the receipt of the request, the request pertaining to checking for differences between a set of parity data and a set of user data stored in a data stripe distributed across a plurality of data storage devices coupled to the controller;
a procedure stored in a memory coupled to the controller, the procedure for;
storing a respective first code of one or more first codes into a set of data headers in one or more data segments, the data segments being part of the data stripe, the first code representing at least a subset of the user data stored in the data header'"'"'s respective data segment;
caching a second code into a parity header, the first code representing a set of parity data stored in a parity sector in the data stripe, the parity header being part of the parity sector; and
putting a third code into the parity header, the third code being obtained by encoding the first code with the second code, the third code being used to check the consistency of a set of user data and a set of parity data without the need to respective operations on each byte of data in both the data sectors and the parity sector, the user data being stored in the one or more data sectors, the parity data being stored in the parity sector. - View Dependent Claims (16)
-
-
17. In a data storage system that includes a host computer coupled to a disk array controller that is in turn coupled to a plurality of data storage devices, a method providing a user with a number of different levels of data consistency checking techniques, the data checking techniques to be performed on user data stored in one or more data sectors on a data stripe, each data sector including a respective data header, the data stripe including a parity sector that in turn includes a parity header, the data stripe being distributed across the data storage devices, the method comprising:
-
providing a number of different types of data consistency checking levels to a user;
receiving an indication of a selected type of the number of different types of data consistency checking levels; and
,performing a particular data consistency checking technique between the parity data and the user data based on the selected type. - View Dependent Claims (18, 19, 20)
-
-
21. A computer program product for use in conjunction with a processor, the computer program product comprising a first computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising a data consistency checking procedure to determine inconsistencies between parity data and user data stored in a stripe of data distributed across a plurality of data storage devices in a data storage system, the parity data being stored in a parity sector, the parity sector including a parity header, the user data being stored in one or more data sectors, each respective data sector of the data sectors including a data header, the data consistency checking procedure including instructions for:
-
providing a number of different types of data consistency checking levels to a user;
receiving an indication from the user of a selected type of the number of different types of data consistency checking levels; and
,performing a particular data consistency checking technique between the parity data and the user data based on the selected type.
-
-
22. An apparatus for providing a user with a number of different levels of data consistency checking techniques, the apparatus comprising:
-
a first communications channel for coupling the apparatus to a computer;
a second communications channel coupling the apparatus to a plurality of data storage devices;
a processor for fetching data and executing computer program instructions stored in a memory, the computer program instructions comprising a data consistency checking procedure for;
providing a number of different types of data consistency checking levels to a user;
receiving an indication of a selected type of the number of different types of data consistency checking levels; and
,performing a particular data consistency checking technique between the parity data and the user data based on the selected type.
-
-
23. A method for checking data consistency of data stored in one or more data sectors of a data stripe, each data sector including a respective data header, the data stripe including a parity sector that includes a parity header, the method comprising:
-
for each data header, storing a respective first code in the data header that represents the user data stored in the data header'"'"'s respective data segment;
storing a second code into a parity header, the second code representing a set of parity data stored in a parity sector; and
,storing a third code into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data. - View Dependent Claims (24, 25, 26, 27)
-
-
28. A method for checking data consistency of data stored in one or more data sectors of a data stripe, each data sector including a respective data header, the data stripe including a parity sector that includes a parity header, the method comprising:
-
for each data header, storing a respective first code comprises a data check code sub-data sector code in the data header that represents the user data stored in the data header'"'"'s respective data segment;
storing a second code comprises a data check code sub-parity sector code into a parity header, the second code representing a set of parity data stored in a parity sector; and
,storing a third code a data check code sub-sector into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data without performing respective operations on each byte of data in both the data sectors and the parity sector;
determining if the user data is corrupt, the determining comprising;
reading the parity data and the user data; and
for each respective data segment;
(a) providing a calculated first code based on the user data stored in the respective data segment;
(b) comparing the calculated first code to the first code to determine if the stored user data is corrupt;
(c) if the user data is corrupt, regenerating the corrupt user data using certain other data sectors of the data sectors and the parity data; and
, (d) storing the regenerated user data in the respective data segment, the regenerated user data replacing the corrupt user data; and
for each respective data sector;
(a) if the user data in the respective data sector is corrupt, generating a new first code from the regenerated user data; and
, (b) storing the new first code to the respective data sector'"'"'s respective data header, the new first code replacing the first code.
-
-
29. A computer program product for use in conjunction with a processor, the computer program product comprising a first computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising a data consistency checking procedure to determine inconsistencies between parity data and user data stored in a stripe of data distributed across a plurality of data storage devices in a data storage system, the parity data being stored in a parity sector, the parity sector including a parity header, the user data being stored in one or more data sectors, each respective data sector of the data sectors including a data header, the data consistency checking procedure including instructions for:
-
for each data header, storing a respective first code comprises a data check code sub-data sector code in the data header that represents the user data stored in the data header'"'"'s respective data segment;
storing a second code comprises a data check code sub-parity sector code into a parity header, the second code representing a set of parity data stored in a parity sector; and
,storing a third code a data check code sub-sector into the parity header, the third code representing a value obtained by encoding the first code and the second code, the third code being used to check the consistency of the user data and the parity data without performing respective operations on each byte of data in both the data sectors and the parity sector;
determining if the user data is corrupt, the determining comprising;
reading the parity data and the user data; and
for each respective data segment;
(a) providing a calculated first code based on the user data stored in the respective data segment;
(b) comparing the calculated first code to the first code to determine if the stored user data is corrupt;
(c) if the user data is corrupt, regenerating the corrupt user data using certain other data sectors of the data sectors and the parity data; and
, (d) storing the regenerated user data in the respective data segment, the regenerated user data replacing the corrupt user data; and
for each respective data sector;
(a) if the user data in the respective data sector is corrupt, generating a new first code from the regenerated user data; and
, (b) storing the new first code to the respective data sector'"'"'s respective data header, the new first code replacing the first code.
-
Specification