Automated Recovery from data corruption of data volumes in RAID storage
AssigneeVeritas Operating Corporation
InventorsOleg Kiselev, John A. Colgrove
Life of this patent
Estimating the term…
Abstract
The present invention relates to an apparatus or computer executable method of detecting and repairing corrupt data in a RAID data storage system. In one embodiment, parity and checksum data are stored in the RAID data storage system for each stripe that stores data. The parity data is used to determine whether data in the corresponding stripe is corrupt. If stripe data is determined to be corrupt, the checksum data is used to correct the corruption.
Claims16
In a RAID data storage system comprising a stripe, wherein the stripe comprises stripe units B1–Bmax, a method comprising:
- receiving a request to read data from stripe unit Bx, wherein Bx is one of stripe units B1–Bmax, wherein the request is received from a computer system in data communication with the RAID data storage system;
- reading stripe parity P corresponding to stripe units B1–Bmax in response to receiving the request;
- generating new stripe parity Pnew corresponding to stripe units B1–Bmax as a function of data of each of the stripe units B1–Bmax;
- comparing the new stripe parity Pnew with the stripe parity P;
- returning stripe unit Bx data to the computer system if the stripe parity P compares equally to the new stripe parity Pnew.
In a RAID data storage system comprising a stripe, wherein the stripe comprises stripe units B1–Bmax, a method comprising:
- receiving a request to read data from stripe unit Bx, wherein Bx is one of stripe units B1–Bmax, wherein the request is received from a computer system in data communication with the RAID data storage system;
- reading stripe parity P corresponding to stripe units B1–Bmax in response to receiving the request;
- generating new stripe parity Pnew corresponding to stripe units B1–Bmax as a function of data of each of the stripe units B1–Bmax;
- comparing the new stripe parity Pnew with the stripe parity P;
- if stripe parity P does not compare equally to new stripe parity Pnew:
- reading checksum CS data from memory, wherein the checksum CS data corresponds to stripe units B1–Bmax;
- (a) generating new data for stripe unit By, one of the stripe units B1–Bmax as a function of checksum CS data and data of stripe units B1–Bmax other than stripe unit By;
- (b) generating new checksum CSnew data as a function of the new data for stripe unit By and data of stripe units B1–Bmax other than stripe unit By;
- (c) comparing new checksum CSnew data with checksum CS data;
- (d) overwriting data of stripe unit By with the new data of stripe unit By if new checksum CSnew data compares equally to checksum CS data.
A computer readable medium storing instructions executable by a first computer system in a RAID data storage system, wherein the RAID data storage system comprises a stripe, wherein the stripe comprises stripe units B1–Bmax, wherein the first computer system performs a method in response to executing instructions stored on the computer readable medium, the method comprising:
- reading stripe parity P corresponding to stripe units B1–Bmax in response to receiving a request to read data from stripe unit Bx, wherein Bx is one of B1–Bmax, wherein the request is received from a second computer system in data communication with the first computer system;
- generating new stripe priority Pnew corresponding to stripe units B1–Bmax as a function of data of each of the stripe units B1–Bmax;
- comparing the new stripe parity Pnew with the stripe parity P;
- returning stripe unit Bx data to the second computer system if the stripe parity P compares equally to the new stripe parity Pnew.
A computer readable medium storing instructions executable by a first computer system in a RAID data storage system, wherein the RAID data storage system comprises a stripe, wherein the stripe comprises stripe units B1–Bmax, wherein the first computer system performs a method in response to executing instructions stored on the computer readable medium, the method comprising:
- reading stripe parity P corresponding to stripe units B1–Bmax in response to receiving a request to read data from stripe unit Bx, wherein Bx is one of B1–Bmax, wherein the request is received from a second computer system in data communication with the first computer system;
- generating new stripe priority Pnew corresponding to stripe units B1–Bmax as a function of data of each of the stripe units B1–Bmax;
- comparing the new stripe parity Pnew with the stripe parity P;
- if stripe parity P does not compare equally to new stripe parity Pnew:
- reading checksum CS data corresponding to stripe units B1–Bmax;
- (a) generating new data for By, one of the stripe units B1–Bmax, as a function of checksum CS data and data of stripe units B1-Bmax other than stripe unit By;
- (b) generating new checksum CSnew data as a function of the new data for stripe unit By and data of stripe units B1–Bmax other than stripe unit By;
- (c) comparing new checksum CSnew data with checksum CS data;
- (d) overwriting data of stripe unit By with the new data of stripe unit By if new checksum CSnew data compares equally to checksum CS data.
Dependencies are inferred from the claim text.