Raid level 5 with free blocks parity cache
AssigneeInternational Business Machines Corporation
InventorsPeter A. Franaszek, John T. Robinson, Alexander Thomasian
Life of this patent
Estimating the term…
Abstract
A system for writing data to a disk array includes a cache memory coupled to the disk array for storing data indicative of locations on the disk array and parity blocks associated with parity groups including the locations. Each of the parity blocks includes an identifier indicative of locations within a particular parity group which are protected by the parity data. Write logic reads the identifier from the parity block, and based thereon, determines whether a disk location is not protected by the parity data. The write logic also writes to the location and updates the parity data and the identifier associated with the parity block to include the location of the data block to indicate that the location is protected.
Claims16
A system for writing data to a disk array, comprising:
- a cache memory coupled to the disk array, the cache memory storing one or more parity blocks associated with stripes of disk data blocks, each parity block including parity data for one or more data blocks in its stripe and an identifier identifying protected data blocks in its stripe;
- and
- write logic coupled to the cache memory and the disk array, the write logic including:
- means for determining whether or not a location is protected by the parity data;
- means for writing data to a selected location;
- means for computing new parity data and updating the identifier associated with the new parity data if necessary to indicate that the selected location is protected.
A method of writing new data to disk in a redundant array of inexpensive disks, comprising:
- storing the new data in a cache memory;
- computing a parity block only for in-use data blocks of a group of data blocks in the disk array;
- attaching to the parity block an identifier indicating which data blocks of the group of data blocks are in use;
- choosing a destination data block for the new data;
- determining whether the destination block belongs to a group of free data blocks, and if so, setting the parity block using only the new data, and writing the set parity block and the new data to disk;
- otherwise, determining from the identifier whether the destination block is protected by the parity block;
- if so, using the new data, the destination block and the parity block to compute a new parity block reflecting the new data and writing the new parity block to cache and disk;
- if not, computing a new parity block reflecting the new data, writing the new parity block to cache and disk and updating the identifier to indicate that the destination block is now protected by the parity block.
A method of accounting for unused data blocks in a redundant array of inexpensive disks, comprising:
- computing a parity block for in-use data blocks in a group of data blocks stored on the disks;
- attaching to the parity block an identifier indicating which blocks of the group are the in-use data blocks;
- when a block is to be reclassified from in-use to unused, computing a new parity block using the parity block and the data in the block to be reclassified, and updating the identifier to indicate that the block to be reclassified is not in use.
Dependencies are inferred from the claim text.