Patent ID: 8402213

Claim:
A method for storing data comprising: dividing a first selected block of data to be stored into five data stripes, D 1 , D 2 , D 3 , D 4 , and D 5 ; generating first mirror data stripes M 1 , M 2 , M 3 , M 4 , and M 5 , wherein M 1 is a mirror stripe of D 1 , M 2 is a mirror stripe of D 2 , M 3 is a mirror stripe of D 3 , M 4 is a mirror stripe of D 4 , and M 5 is a mirror stripe of D 5 ; generating second mirror data stripes M 1 ′, M 2 ′, M 3 ′, M 4 ′, and M 5 ′, wherein M 1 ′ is a mirror stripe of D 1 , M 2 ′ is a mirror stripe of D 2 , M 3 ′ is a mirror stripe of D 3 , M 4 ′ is a mirror stripe of D 4 , and M 5 ′ is a mirror stripe of D 5 ; providing a first set of five data storage units, S 1 , S 2 , S 3 , S 4 , and S 5 ; writing D 1 , M 3 and M 4 ′ onto S 1 such that D 1 is written to a first layer of S 1 , M 3 is written to a second layer of S 1 , and M 4 ′ is written to a third layer of S 1 ; writing D 2 , M 4 and M 5 ′ on S 2 such that D 2 is written to a first layer of S 2 , M 4 is written to a second layer of S 2 , and M 5 ′ is written to a third layer of S 2 ; writing D 3 , M 5 and M 1 ′ on S 3 such that D 3 is written to a first layer of S 3 , M 5 is written to a second layer of S 3 , and M 1 ′ is written to a third layer of S 3 ; writing D 4 , M 1 and M 2 ′ on S 4 such that D 4 is written to a first layer of S 4 , M 1 is written to a second layer of S 4 , and M 2 ′ is written to a third layer of S 4 ; and writing D 5 , M 2 and M 3 ′ on S 5 such that D 5 is written to a first layer of S 5 , M 2 is written to a second layer of S 5 , and M 3 ′ is written to a third layer of S 5 , wherein data stripes D 1 , D 2 , D 3 , D 4 , and D 5 are synchronously written onto storage units S 1 , S 2 , S 3 , S 4 , and S 5 , respectively, wherein data stripes M 3 , M 4 , M 5 , M 1 , and M 2 are asynchronously written onto storage units S 1 , S 2 , S 3 , S 4 , and S 5 , respectively, wherein data stripes M 4 ′, M 5 ′, M 1 ′, M 2 ′, and M 3 ′ are asynchronously written onto storage units 51 , S 2 , S 3 , S 4 , and S 5 , respectively, wherein data stripes D 1 , D 2 , D 3 , D 4 , and D 5 , M 3 , M 4 , M 5 , M 1 , and M 2 , and M 4 ′, M 5 ′, M 1 ′, M 2 ′, and M 3 ′, are located using a sequentially-based indexing table, and wherein each of said first, second, and third layers in total for storage units S 1 , S 2 , S 3 , S 4 and S 5 effectively contain a full copy of said first selected block of data such that a single write operation to said first, second, or third layer of said storage units S 1 , S 2 , S 3 , S 4 and S 5 effectively writes said full copy of said first selected block of data in parallel to said storage units S 1 , S 2 , S 3 , S 4 and S 5 for said selected first, second, or third layer of said storage units S 1 , S 2 , S 3 , S 4 and S 5 .