Patent ID: 7418621

Claim:
A method for distributing data among disk drives of a storage array, comprising: receiving a first block b of data as part of a host input/output operation; determining an offset from the beginning of user addressable space, wherein the offset is equal to b mod c, where c is the size of the strips in the disk drives of the storage array as an integer number of blocks; determining a logical strip number across all disks, wherein the logical strip is equal to (b-offset)/c; determining a stripe number, wherein the stripe number is equal to the logical strip divided by n, where n is the number of disk drives in the storage array; determining a physical strip on a storage device, wherein the physical strip is equal to stripe* 2 ; determining a block address for a primary copy of the first block of data, wherein the block address for the primary copy is equal to (physical strip*c)+offset; determining a disk drive for the primary copy of the first block of data, wherein the disk drive for the primary copy is equal to (logical strip number mod n), where a first disk drive is index 0 ; determining a block address for a mirror copy of the first block of data, wherein the block address for the mirror copy is equal to ((physical strip+ 1 )*c)+offset; determining a disk drive for the mirror copy of the first block of data, wherein the disk drive for the mirror copy is equal to the disk drive for the primary copy+ 1 , where the disk drive for the mirror copy is equal to 0 if the mirror device calculation results in a value greater than a total number of disk drive in the storage array; storing the primary copy of first block of data on a first disk drive, wherein the first disk drive is the determined disk drive for the primary copy; storing the mirror copy of said first block of data on a second disk drive, wherein the second disk drive is the determined disk drive for the mirror copy; storing a primary copy of a second block of data on said second disk drive; and storing a mirrored copy of said second block of data on one of said first disk drive and a third disk drive.