Claims
- 1. A computer storage system, comprising:
a plurality of disk drives for storing parity groups, each parity group comprising storage blocks, said storage blocks comprising one or more data blocks and a parity block associated with said one or more data blocks, each of said storage blocks stored on a separate disk drive such that no two storage blocks from a given parity group reside on the same disk drive; and a recovery module to dynamically recover data lost when at least a portion of one disk drive in said plurality of disk drives becomes unavailable, said recovery module configured to produce a reconstructed block by using information in the remaining storage blocks of a parity group corresponding to an unavailable storage block, store said reconstructed block on a functioning drive in said plurality of disk drives, and update file system metadata to indicate where said reconstructed block is stored.
- 2. The computer storage system of claim 1, wherein a size of a first parity group is larger than a size of a second parity group.
- 3. The computer storage system of claim 1, further comprising metadata to specify which disk drive in said plurality of disk drives contains a desired storage block.
- 4. The computer storage system of claim 1, wherein a size of a first parity group is larger than a size of a second parity group of the same file.
- 5. The computer storage system of claim 23, wherein said recovery module runs in a background process during file system operations.
- 6. The computer storage system of claim 1, wherein said recovery module automatically learns of a disk failure and runs in a background process to reconstruct data lost as a result of said disk failure without disrupting normal file system operations.
- 7. A method for storing data in a computer network, comprising:
determining a size of a parity group in response to a write request, said size describing a number of data blocks in said parity group; arranging at least a portion of data from said write request according to said data blocks; computing a parity block for said parity group; storing each of said data blocks on a separate disk drive such that no two data blocks from said parity group reside on the same disk drive; storing said parity block on a separate disk drive that does not contain any of said data blocks; detecting a storage failure that renders a storage block unavailable as an unavailable storage block; reconstructing lost data by using information in the remaining storage blocks of a parity group corresponding to said unavailable storage block to produce a reconstructed parity group.
- 8. The method of claim 7, further comprising storing metadata to describe a disk and logical block location of each of said data blocks and said parity block.
- 9. The method of claim 7, further comprising redistributing parity groups by combining a first parity group having a first size and a second parity group having a second size to produce a combined parity group having a third size, wherein said third size specifies a number of blocks that is, at most, one less than the number of disk drives available to store data from said parity group.
- 10. The method of claim 7, wherein said reconstructing occurs during normal file system operations without disrupting said normal file system operations.
- 11. A computer storage system, comprising:
a plurality of disk drives for storing parity groups, each parity group comprising storage blocks, said storage blocks comprising one or more data blocks and a parity block associated with said one or more data blocks, each of said storage blocks stored on a separate disk drive such that no two storage blocks from a given parity group reside on the same disk drive; and means for detecting a storage failure; means for recovering data lost due to said storage failure by reconstructing a lost storage block of a parity group using information in the available storage blocks of said parity group to produce a reconstructed block, storing said reconstructed block and updating file system metadata to indicate where said reconstructed block is stored.
REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims priority benefit under 35 U.S.C. §119(e) from all of the following U.S. Provisional Applications, the contents of which are hereby incorporated by reference in their entirety:
[0002] U.S. Provisional Application No. 60/264,671, filed Jan. 29, 2001, titled “DYNAMICALLY DISTRIBUTED FILE SYSTEM”;
[0003] U.S. Provisional Application No. 60/264,694, filed Jan. 29, 2001, titled “A DATA PATH ACCELERATOR ASIC FOR HIGH PERFORMANCE STORAGE SYSTEMS”;
[0004] U.S. Provisional Application No. 60/264,672, filed Jan. 29, 2001, titled “INTEGRATED FILE SYSTEM/PARITY DATA PROTECTION”;
[0005] U.S. Provisional Application No. 60/264,673, filed Jan. 29, 2001, titled “DISTRIBUTED PARITY DATA PROTECTION”;
[0006] U.S. Provisional Application No. 60/264,670, filed Jan. 29, 2001, titled “AUTOMATIC IDENTIFICATION AND UTILIZATION OF RESOURCES IN A DISTRIBUTED FILE SERVER”;
[0007] U.S. Provisional Application No. 60/264,669, filed Jan. 29, 2001, titled “DATA FLOW CONTROLLER ARCHITECTURE FOR HIGH PERFORMANCE STORAGE SYSTEMS”;
[0008] U.S. Provisional Application No. 60/264,668, filed Jan. 29, 2001, titled “ADAPTIVE LOAD BALANCING FOR A DISTRIBUTED FILE SERVER”; and
[0009] U.S. Provisional Application No. 60/302,424, filed Jun. 29, 2001, titled “DYNAMICALLY DISTRIBUTED FILE SYSTEM”.
Provisional Applications (8)
|
Number |
Date |
Country |
|
60264671 |
Jan 2001 |
US |
|
60264694 |
Jan 2001 |
US |
|
60264672 |
Jan 2001 |
US |
|
60264673 |
Jan 2001 |
US |
|
60264670 |
Jan 2001 |
US |
|
60264669 |
Jan 2001 |
US |
|
60264668 |
Jan 2001 |
US |
|
60302424 |
Jun 2001 |
US |