Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
First Claim
1. A method for striping and un-striping data on a plurality of storage devices, wherein a stripe of data is a set of one or more contiguous data blocks on each storage device, said method for striping and un-striping comprising the steps of:
- (a) dividing data blocks on said plurality of storage devices into a plurality of square portions, wherein a square portion comprises a number of stripes equal to a quantity of said plurality of storage devices; and
(b) exchanging data in sets of blocks of each of said plurality of square portions comprising the steps of(b1) selecting a square portion,(b2) locating a diagonal set of blocks within said square portion selected in step (b1), wherein said diagonal set of blocks starts at a first set of blocks in a first stripe of said square portion selected in step (b1) and said diagonal set of blocks ends at a last set of blocks in a last stripe of said square portion selected in step (b1), and(b3) exchanging all sets of blocks equidistant from said diagonal set of blocks, on opposite sides of said diagonal set of blocks, and in a line perpendicular to said diagonal set of blocks.
15 Assignments
0 Petitions
Accused Products
Abstract
A Redundant Array of Independent Disks (RAID) system that is adaptable to host Input/Output traffic, wherein the RAID configuration is hidden from the host computer, and wherein the system uses various methods for striping and organizing data across the array when disks are added or removed. The system dynamically determines the RAID configuration used to store host data. To maximize response time and avoid a write penalty, small write operations are mapped into RAID 1 configurations, and medium and large write operations are mapped into RAID 3 configurations. The data are migrated into RAID 5 configurations as a background operation, to minimize the disk space lost. The system hides configuration changes necessary for the addition and/or removal of disks to/from the disk array by unstriping data, adding or deleting (removing) a disk and then restriping data over all the disks. The methods may include steps of dividing data blocks into a plurality of square portions, and exchanging data in sets of blocks of each of the square portions, with the exchanging step including locating a diagonal set of blocks within a selected square portion, and exchanging all sets of blocks equidistant from the diagonal, on opposite sides of the diagonal, and in a line perpendicular to the diagonal. While these changes are in progress, the disk array remains on-line and most host data is available for access and modification.
-
Citations
6 Claims
-
1. A method for striping and un-striping data on a plurality of storage devices, wherein a stripe of data is a set of one or more contiguous data blocks on each storage device, said method for striping and un-striping comprising the steps of:
-
(a) dividing data blocks on said plurality of storage devices into a plurality of square portions, wherein a square portion comprises a number of stripes equal to a quantity of said plurality of storage devices; and (b) exchanging data in sets of blocks of each of said plurality of square portions comprising the steps of (b1) selecting a square portion, (b2) locating a diagonal set of blocks within said square portion selected in step (b1), wherein said diagonal set of blocks starts at a first set of blocks in a first stripe of said square portion selected in step (b1) and said diagonal set of blocks ends at a last set of blocks in a last stripe of said square portion selected in step (b1), and (b3) exchanging all sets of blocks equidistant from said diagonal set of blocks, on opposite sides of said diagonal set of blocks, and in a line perpendicular to said diagonal set of blocks. - View Dependent Claims (2, 3)
-
-
4. A method for adding or removing a storage device from an array of storage devices accessible from a host computer system, wherein data stored by said host computer system on each one of said storage devices is distributed across all storage devices in said array, said method comprising the steps of:
-
(a) dividing data blocks on said storage devices into a plurality of square portions, wherein a square portion comprises a number of stripes equal to a quantity of said storage devices in said array, and wherein a stripe is a set of one or more contiguous data blocks on each storage device in said array; (b) exchanging data in sets of blocks of each of said plurality of square portions comprising the steps of (b1) selecting a square portion, (b2) locating a diagonal set of blocks within said square portion selected in step (b1), wherein said diagonal set of blocks within said square portion selected in step (b1) starts at a first set of blocks in a first stripe of said square portion selected in step (b1) and said diagonal set of blocks ends at a last set of blocks in a last stripe of said square portion selected in step (b1), and (b3) exchanging all sets of blocks equidistant from said diagonal set of blocks located in step (b2), on opposite sides of said diagonal set of blocks located in step (b2), and in a line perpendicular to said diagonal set of blocks located in step (b2); (c) adding or removing a storage device; and (d) exchanging data in said sets of blocks of each of said plurality of square portions comprising the steps of (d1) selecting a square portion, (d2) locating a diagonal set of blocks within said square portion selected in step (d1), wherein said diagonal set of blocks within said square portion selected in step (d1) starts at a first set of blocks in a first stripe of said square portion selected in step (d1) and ends at a last set of blocks in a last stripe of said square portion selected in step (d1), and (d3) exchanging all sets of blocks equidistant from said diagonal set of blocks located in step (d2), on opposite sides of said diagonal set of blocks located in step (d2), and in a line perpendicular to said diagonal set of blocks located in step (d2). - View Dependent Claims (5, 6)
-
Specification