Method for writing contiguous arrays of stripes in a RAID storage system
First Claim
1. In a file server having a storage operating system, a method for managing storage of data in a plurality of storage devices, each storage device comprising a plurality of blocks for storing data, the method comprising the steps of:
- generating block layout information in a file system layer of the storage operating system by determining which blocks within the plurality of blocks are allocated for storing data and which are unallocated;
transferring the block layout information from the file system layer to a RAID layer of the storage operating system; and
responsive to the block layout information, the RAID layer controlling the execution of I/O operations by identifying blocks within the plurality of blocks for use by the I/O operations so as to substantially maximize chain lengths of reads for calculation of parity and of writes for data write operations thereof while substantially minimizing cost of calculation of parity, wherein the block identification comprises the steps of examining all the I/O operations, selecting a method for parity calculation which substantially minimizes cost of the parity calculation for the I/O operations, and responsive to the block layout information and the parity calculation method selection, identifying the blocks within the plurality of blocks for use by the I/O operations.
0 Assignments
0 Petitions
Accused Products
Abstract
The invention features a method for controlling storage of data in a plurality of storage devices each including storage blocks, for example, in a RAID array. The method includes receiving a plurality of write requests associated with data, and buffering the write requests. A file system defines a group of storage blocks, responsive to disk topology information. The group includes a plurality of storage blocks in each of the plurality of storage devices. Each data block of the data to be written is associated with a respective one of the storage blocks, for transmitting the association to the plurality of storage devices.
-
Citations
42 Claims
-
1. In a file server having a storage operating system, a method for managing storage of data in a plurality of storage devices, each storage device comprising a plurality of blocks for storing data, the method comprising the steps of:
-
generating block layout information in a file system layer of the storage operating system by determining which blocks within the plurality of blocks are allocated for storing data and which are unallocated;
transferring the block layout information from the file system layer to a RAID layer of the storage operating system; and
responsive to the block layout information, the RAID layer controlling the execution of I/O operations by identifying blocks within the plurality of blocks for use by the I/O operations so as to substantially maximize chain lengths of reads for calculation of parity and of writes for data write operations thereof while substantially minimizing cost of calculation of parity, wherein the block identification comprises the steps of examining all the I/O operations, selecting a method for parity calculation which substantially minimizes cost of the parity calculation for the I/O operations, and responsive to the block layout information and the parity calculation method selection, identifying the blocks within the plurality of blocks for use by the I/O operations.
-
-
2. A method for managing storage of data in a plurality of storage devices, each comprising a plurality of storage blocks, the method comprising the steps of:
-
generating block layout information; and
in response to the block layout information, controlling the execution of an I/O operation by identifying storage blocks for use by the I/O operation so as to substantially minimize cost of calculation of error correction parameters across a stripe. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for managing storage of data in a storage system comprising a plurality of storage devices each comprising a plurality of storage blocks, the method comprising writing data to predetermined storage blocks across a plurality of stripes and to predetermined storage blocks within each storage device so as to substantially maximize chain length of storage blocks within each storage device while substantially minimizing cost of calculation of error correction parameters across each stripe of the plurality of stripes.
-
17-38. -38. (Cancelled)
-
39. A storage system comprising:
-
a plurality of storage devices each comprising;
a plurality of storage blocks; and
a storage manager in communication with the plurality of storage devices, the storage manager writing data to predetermined storage blocks across a plurality of stripes and to predetermined storage blocks within each storage device so as to substantially maximize chain length of storage blocks within a storage device while substantially minimizing the calculation of error correction parameters across each stripe of the plurality of stripes.
-
-
40. A system for managing the storage of data, the system comprising:
-
a plurality of storage devices each having a plurality of storage blocks;
a storage device manager in communication with the plurality of storage blocks;
a block layout information generator in communication with the storage device manager and the plurality of storage blocks; and
an error correction parameter calculator in communication with the plurality of storage blocks and the storage device manager, wherein the storage device manager, in response to the block layout information from the block layout information generator, controls the execution of an I/O operation by identifying storage blocks for use by the I/O operation so as to substantially maximize chain length within the storage device while substantially minimizing the calculation by the error correction parameter calculator of error correction parameters across a stripe.
-
-
41. A method for managing storage of data in storage blocks, the method comprising the steps of:
-
generating block layout information;
dynamically determining a first number of error correction calculations;
dynamically determining a second number corresponding to a chain length; and
in response to the block layout information, controlling the execution of an I/O operation by identifying storage blocks for use by the I/O operation so as to have a chain length of the second number within a storage device while performing the first number of calculations of error correction parameters across a stripe.
-
-
42-44. -44. (Cancelled)
Specification