Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system
First Claim
1. In a storage system having n+1 disks organized in a RAID array, a plurality of data blocks, a plurality of parity blocks, each parity block associated with n data blocks and a plurality of status bits, each status bit having a first and second state, said status bit associated with one of said data blocks or parity blocks, said status bit in said first state indicates that said associated data or parity block may contain invalid information and said status bit in said second state indicates that said associated data or parity block contains valid information, a method of identifying data or parity blocks which contain invalid information and preventing said invalid information from being sent to a user application or used in any computations internal to the functioning of the array, comprising the steps of:
- receiving from a user application a read request targeting at least one of said data blocks;
identifying said targeted data block and determining if said identified targeted data block is readable;
if said identified targeted data block is readable, identifying and interrogating the status bit associated therewith;
if said identified status bit is in said second state, reading said targeted data block;
determining if said read is successful;
if said read is successful, sending said read data to said user application; and
if said targeted data block is unavailable for said read, then further comprising the steps of;
determining if all data and parity block necessary for regeneration are available;
determining if the status bits for all said data and parity blocks necessary for regeneration are in the said second state;
if all necessary blocks are available and all associated status bits are in said second state, regenerating the unavailable data, repairing the unavailable data block by writing the regenerated data;
if said write is successful, setting said status bit to said second state and sending the regenerated data to said user application; and
if said write is unsuccessful, sending said regenerated data to said user application.
2 Assignments
0 Petitions
Accused Products
Abstract
A storage system having a plurality of disks arranged into a RAID array and a logging process and apparatus that identifies corrupt or invalid data and which prevents the corrupt or invalid data from being sent to a user application or used in any computations internal to the functioning of the array. In the preferred embodiment, a plurality of status bits, each having a first and second state are associated with each data block and parity block. If the status bit indicates that the block may contain corrupt or invalid information then that block is not used in regenerating data for an unavailable block or sent to a user application upon a read request.
-
Citations
8 Claims
-
1. In a storage system having n+1 disks organized in a RAID array, a plurality of data blocks, a plurality of parity blocks, each parity block associated with n data blocks and a plurality of status bits, each status bit having a first and second state, said status bit associated with one of said data blocks or parity blocks, said status bit in said first state indicates that said associated data or parity block may contain invalid information and said status bit in said second state indicates that said associated data or parity block contains valid information, a method of identifying data or parity blocks which contain invalid information and preventing said invalid information from being sent to a user application or used in any computations internal to the functioning of the array, comprising the steps of:
-
receiving from a user application a read request targeting at least one of said data blocks; identifying said targeted data block and determining if said identified targeted data block is readable; if said identified targeted data block is readable, identifying and interrogating the status bit associated therewith; if said identified status bit is in said second state, reading said targeted data block; determining if said read is successful; if said read is successful, sending said read data to said user application; and if said targeted data block is unavailable for said read, then further comprising the steps of; determining if all data and parity block necessary for regeneration are available; determining if the status bits for all said data and parity blocks necessary for regeneration are in the said second state; if all necessary blocks are available and all associated status bits are in said second state, regenerating the unavailable data, repairing the unavailable data block by writing the regenerated data; if said write is successful, setting said status bit to said second state and sending the regenerated data to said user application; and if said write is unsuccessful, sending said regenerated data to said user application. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. In a storage system having n+1 disks arranged in a RAID array, a plurality of data blocks, a plurality of parity blocks, each parity block associated with n data blocks and a plurality of status bits, each status bit associated with one of said data blocks or said parity blocks, each status bit having a first state indicating that said associated block contains invalid information and a second state indicating that said associated block contains valid information, a method of preventing invalid information from being sent to a user application or used in any computations internal to the functioning of the array, comprising the steps of:
-
receiving from a user application a write request to at least one of said data blocks; identifying the data block targeted by said write request; determining the state of said status bit for said targeted data block; if said status bit is in said second state indicating that the information is valid, writing the new data to said targeted data block; if said write is successful, sending a write success signal to said user application, and if said write is unsuccessful, setting said status bit to said first state and sending a write failure signal to said user application; if said status bit is in said first state indicating that the information is invalid, writing the new data to said targeted data block; if said write is successful, clearing said status bit to said second state; if said status bit is cleared to said second state, sending a write success signal to said user application; and if said status bit is not cleared to said second state, sending a write failure signal to said user application.
-
-
8. A storage system having n+1 disks organized in a RAID array, a plurality of data blocks, a plurality of parity blocks, each parity block associated with n data blocks and a plurality of status bits, each status bit having a first and second state, said bit associated with one of said data blocks or parity blocks, said status bit in said first state indicates that said associated data or parity block may contain invalid information and said status bit in said second state indicates that said associated data or parity block contains valid information, apparatus for identifying data or parity blocks which contain invalid information and preventing said invalid information from being sent to a user application or used in any computations internal to the functioning of the array, comprising:
-
means for receiving from a user application a read request to a last one of said data blocks and providing an output signal identifying said data block targeted by said read request; read/write control logic means for identifying said target data block and providing a status output signal; memory means containing said plurality of status bits; status control logic means receiving said status output signal and connected to said memory for identifying the status bit state of said target block; set control logic means connected to said memory means for providing a valid output signal when said status bit associated with said target data block is in said second state and an invalid output signal when said status bit associated with said target block is in said first state; said read/write control logic means receiving said output signals from said set control logic means and connected to said disks, said read/write control logic means reading said target data block and sending said read data to said user application when said output signal is valid, said read/write control logic means determining if any data blocks and parity block necessary for regeneration are unavailable or any associated status bits are in said first state when said output signal is invalid, said read/write control logic means providing a regenerate error signal when any data blocks and parity block necessary for regeneration are unavailable or any associated status bits are in said first state, said read/write control logic means providing a regenerate signal when said data blocks and said parity block necessary for regeneration are available and said associated status bits are in said second state; generator means responsive to said regenerate error signal for sending a read failure to said user application; means for regenerating unavailable data blocks connected to said read/write control logic means, said regenerating means responsive to said regenerate signal for providing regenerated data to said read/write control logic means; said read/write control logic means in response to said regenerated data writing said regenerated data to said target data block, sending said regenerated data to said user application and providing a clear control signal; and clear control logic means for receiving said clear control signal and connected to said memory means for setting the status bit associated with said target data block to said second state.
-
Specification