Redundant arrays of independent libraries of dismountable media with parity logging
First Claim
1. A data storage library system for storing data to and retrieving data from media units, the system comprising:
- a computer;
a plurality of data storage drives coupled to the computer;
a plurality of media units greater in number than the number of drives and mountable to and dismountable from the drives, the media units being arranged into redundancy groups;
a nonvolatile computer-readable memory;
a computer-readable memory encoded with a computer program for causing the computer to (a) organize the data to be stored into data sets, each data set including data blocks and an associated parity block, the number of data blocks plus the parity block in a set being equal to the number of media units in a redundancy group;
(b) write the data by striping the data blocks and the parity block in a set across all of the media units in the redundancy group, and by distributing the parity blocks for different sets among different media units in the redundancy group;
(c) log into the nonvolatile memory parity updates computed when the data blocks previously written to the media units in the redundancy group are to be modified;
(d) write modified data blocks onto the media units without writing a corresponding new parity block if the media unit containing the corresponding parity block to be updated is not mounted on a drive;
(e) retrieve the parity update from the log; and
(f) write a new parity block based on the retrieved parity update to the media unit containing the parity block to be updated when the media unit containing the parity block to be updated is later mounted on a drive.
1 Assignment
0 Petitions
Accused Products
Abstract
A redundant array of independent data storage libraries of dismountable media units includes parity logging and unique parity update reintegration techniques to improve system performance by reducing the number of media mounts. The media units are arranged into redundancy groups that store the data as sets or parity groups of data blocks and a corresponding parity block. When new data is to be written parity updates are computed and stored in a parity log in nonvolatile storage, such as a magnetic fixed disk drive. The new data blocks are then written onto the media units, but the corresponding new parity blocks are not written if the media units containing the old parity blocks are not mounted at the time the parity updates are computed. If a media unit containing an old parity block is already mounted at the time the parity update is computed, then a new parity block is computed based on the parity update and the new parity block is written to the media unit without logging the parity update. When the media unit containing the old parity block is later mounted on a drive for doing a read or write operation, then the parity update is retrieved from the parity log and the new parity block computed and written to that media unit. The reintegration of parity updates is enhanced by parity pursuit striping wherein successive striping increments of data blocks are mapped across the media units such that a striping increment is located on the same media unit that contains the parity block corresponding to the prior striping increment.
-
Citations
16 Claims
-
1. A data storage library system for storing data to and retrieving data from media units, the system comprising:
-
a computer; a plurality of data storage drives coupled to the computer; a plurality of media units greater in number than the number of drives and mountable to and dismountable from the drives, the media units being arranged into redundancy groups; a nonvolatile computer-readable memory; a computer-readable memory encoded with a computer program for causing the computer to (a) organize the data to be stored into data sets, each data set including data blocks and an associated parity block, the number of data blocks plus the parity block in a set being equal to the number of media units in a redundancy group;
(b) write the data by striping the data blocks and the parity block in a set across all of the media units in the redundancy group, and by distributing the parity blocks for different sets among different media units in the redundancy group;
(c) log into the nonvolatile memory parity updates computed when the data blocks previously written to the media units in the redundancy group are to be modified;
(d) write modified data blocks onto the media units without writing a corresponding new parity block if the media unit containing the corresponding parity block to be updated is not mounted on a drive;
(e) retrieve the parity update from the log; and
(f) write a new parity block based on the retrieved parity update to the media unit containing the parity block to be updated when the media unit containing the parity block to be updated is later mounted on a drive. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An array of independent optical disk libraries for connection to a computer having a nonvolatile memory and a computer-readable memory, the libraries enabling data to be stored to and retrieved from a plurality of dismountable optical disks, the array comprising:
-
a plurality of optical disk libraries, each library including at least one optical disk drive, at least two disks associated with each drive and a picker for mounting the disks to and dismounting the disks from the drives;
wherein the disks in the plurality of libraries are arranged into redundancy groups, each disk in a redundancy group being associated with a unique drive; anda computer program encoded into the computer-readable memory, the computer program comprising; (a) computer program code for organizing the data to be stored into parity groups assigned to redundancy groups, each parity group including data striping increments and an associated parity stripe, the number of data striping increments plus the parity stripe in a parity group being equal to the number of disks in a redundancy group; (b) computer program code for causing the data to be written by striping the data striping increments and the parity stripe in a parity group across all of the disks in the assigned redundancy group, and by distributing the parity stripes for different parity groups among different disks in the assigned redundancy group; (c) computer program code for causing to be logged into the nonvolatile memory parity updates computed when the data striping increments previously written to the disks in any of the redundancy groups are to be modified; (d) computer program code for causing modified data striping increments to be written onto the disks in any of the redundancy groups without writing a corresponding new parity stripe when the disk containing the corresponding parity stripe to be updated is not mounted on a drive; (e) computer program code for causing the parity update to be retrieved from the log and a new parity stripe based on the retrieved parity update to be written to the disk containing the parity stripe to be updated when the disk containing the parity stripe to be updated is mounted on a drive; and (f) computer program code for causing a new parity stripe to be written to the disk containing the parity stripe to be updated without logging the parity update if the disk containing the parity stripe to be updated is already mounted at the time the parity update is computed. - View Dependent Claims (10, 11, 12)
-
-
13. In a data storage library system of the type having a nonvolatile storage, a plurality of data storage drives and a plurality of media units mountable to and dismountable from the drives, the media units being arranged into redundancy groups, a method for managing the writing of data and redundant parity information to the media units in the redundancy groups comprising the steps of:
-
organizing the data to be written into data sets, each data set including data blocks and a corresponding parity block, the number of data blocks plus the parity block in a set being equal to the number of media units in a redundancy group; writing the data blocks by striping the data blocks and the parity block in a set across all of the media units in the redundancy group, including distributing the parity blocks for different sets among different media units in the redundancy group; prior to writing a new data block over a previously written data block, computing a parity update by exclusive or'"'"'ing the previously written data block with the new data block not yet written; if the media unit containing the corresponding previously written parity block is mounted on a drive when the parity update is computed, reading the previously written parity block, exclusive or'"'"'ing the computed parity update with the previously written parity block to compute a new parity block, and then writing the new data block over the previously written data block and the computed new parity block over the previously written parity block; if the media unit containing the corresponding previously written parity block is not mounted on a drive when the parity update is computed, writing the new data block over the previously written data block without writing a corresponding new parity block and logging the computed parity update in a parity log in the nonvolatile storage; and when the media unit containing the corresponding previously written parity block later becomes mounted on a drive, retrieving the parity update from the parity log, reading the previously written parity block, exclusive or'"'"'ing the retrieved parity update with the previously written parity block to compute a new parity block, and then writing the computed new parity block over the previously written parity block. - View Dependent Claims (14, 15, 16)
-
Specification