LOAD BALANCING CONFIGURATION FOR STORAGE ARRAYS EMPLOYING MIRRORING AND STRIPING

Abstract: An array of storage devices may be provided in which data is both striped and mirrored across the array. Data may be organized in stripes in which each stripe is divided into a plurality of stripe units. The stripe units may be mapped sequentially to consecutive storage devices in the array for each data stripe. Each data stripe is also mirrored within the array as a mirrored data stripe. Each mirrored data stripe is also divided into a plurality of stripe units. The stripe units of the mirrored stripes are distributed throughout the array according to a mapping that provides for load balancing during a reconstruction operation. According to one embodiment, stripe units for mirrored stripes are distributed according to a rotational group such that each mirrored stripe is rotated on the array by one more position than the previous mirrored stripe and wherein the rotational group is repeated as necessary. Alternatively, the mirrored stripe units may be distributed according to other permutations to improve load balancing during reconstruction of a failed device. In other embodiments, in addition to mapping mirrored stripe units to balance read operations during reconstruction, one or more spare storage devices may be striped throughout the array to improve load balancing for write operations during reconstruction.

Description: TITLE: LOAD BALANCING CONFIGURATION FOR STORAGE ARRAYS EMPLOYING MIRRORING AND STRIPING BACKGROUND OF THE INVENTION 1 Field of the Invention This mvention relates to computer data storage systems, and more particularly to arrays of storage devices that employ mirroring and striping of data, such as certain Redundant Array of Independent Disks (RAID) systems, and to mechanisms for load balancmg m such storage systems when operatmg m a degraded mode such as when reconstructing a failed storage device 2 Description of the Related Art A continuing desire exists m the computer industry to consistently improve the performance of computer systems over time For the most part this desire has been achieved for the processing or microprocessor components of computer systems Microprocessor performance has steadily improved over the years However, the performance of the microprocessor or processors in a computer system is only one component of the overall performance of the computer system For example, the computer memory system must be able to keep up with the demands of the processor or the processor will become stalled waitmg for data from the memory system Generally computer memory systems have been able to keep up with processor performance through increased capacities, lower access times, new memory architectures, caching, interleaving and other techniques Another critical component to the overall performance of a computer system is the I/O system performance For most applications the performance of the mass storage system or disk storage system is the cntical performance component of a computer's I/O system For example, when an application requires access to more data or information than it has room m allocated system memory, the data may be paged in/out of disk storage to/from the system memory Typically the computer system's operatmg system copies a certain number of pages from the disk storage system to mam memory When a program needs a page that is not in mam memory, the operatmg system copies the required page mto mam memory and copies another page back to the disk system Processmg may be stalled while the program is waitmg for the page to be copied If storage system performance does not keep pace with performance gams m other components of a computer system, then delays m storage system accesses may overshadow performance gams elsewhere One method that has been employed to mcrease the capacity and performance of disk storage systems is to employ an array of storage devices An example of such an array of storage devices is a Redundant Array of Independent (or Inexpensive) Disks, RAID A RAID system improves storage performance by providing parallel data paths to read and write information over an array of disks By readmg and writing multiple disks simultaneously the storage system performance may be greatly improved For example, an array of four disks that can be read and written simultaneously may provide a data rate almost four times that of a smgle disk However, usmg arrays of multiple disks comes with the disadvantage of mcreasmg failure rates In the example of a four disk array above, the mean time between failure (MTBF) for one of the four disks of the array will be one-fourth that of a smgle disk It is not uncommon for storage device arrays to mclude many more than four disks, shortening the mean time between failure from years to months or even weeks RAID systems address this reliability issue by employmg panty or redundancy so that data lost from a device failure may be recovered One common RAID technique or algoπthm is referred to as RAID 1 In a RAID 1 system all data is mirrored within the storage system In other words, a duplicate copy of all data is mamtamed within the storage system Typically, a RAID 1 system performs mirroring by copymg data onto two separate disks Thus a typical RAID 1 system requires twice the number of disks In general, one disadvantage of RAID 1 systems is that they may not provide for load balancmg over multiple disks within the system For example, the data used by a given application may be located all on one disk of the RAID 1 system If the bulk of storage system accesses are being generated by that one application, then the storage system load will be concentrated on a smgle device, thus negating the performance advantage of havmg an array of disks RAID 0 is an example of a RAID algoπthm used to improve performance by attempting to balance the storage system load over as many of the disks as possible RAID 0 implements a stπped disk array m which data is broken down mto blocks and each block is wπtten to a separate disk drive Thus technique may be referred to as striping Typically, I/O performance is improved by spreadmg the I O load across multiple dπves since blocks of data will not be concentrated on any one particular dπve However, a disadvantage of RAID 0 systems is that they do not provide for any data redundancy and are thus not fault tolerant RAID 5 is an example of a RAID algoπthm that provides some fault tolerance and load balancmg In RAID 5 systems both data and panty information are stπped across the storage device array RAID 5 systems can withstand a smgle device failure by usmg panty information to rebuild a failed disk However, wπte performance may suffer m RAID 5 systems due to the overhead of calculating panty information However, only one additional disk is required to store panty information as opposed to the 2X number of disks required for typical RAID 1 systems Another RAID technique refeπed to as RAID 10 or RAID 0+1 attempts to combme the advantages of both mirrormg and stπping Figure 1 illustrates how data is stored m a typical RAID 10 system Data is stored m stπpes across the devices of the aπay Figure 1 shows data stπpes A, B, X stored across n storage devices Each stπpe is broken mto stπpe units, where a stπpe unit is the portion of a stπpe stored on each device Figure 1 also illustrates how data is mrrrored on the aπay For example, stπpe unit A(l) is stored on devices 1 and 2, stπpe unit A(2) is stored on devices 3 and 4, and so on Thus, devices 1 and 2 form a rmπored pair, as do devices 3 and 4, etc As can be seen from Figure 1 , this type of system will always require an even number of storage devices (2X the number of dπves with no mnroπng) This may a disadvantage for some users who have a system containmg an odd number of disks The user may be required to either not use one of his disks or buy an additional disk A storage aπay is said to enter a degraded mode when a disk m the aπay fails This is because both the performance and reliability of the system (e g RAID) may become degraded Performance may be degraded because the remammg copy (minor copy) may become a bottleneck To reconstruct a failed disk onto a replacement disk may require a copy operation of the complete contents of the minor disk for the failed disk The process of reconstructing a failed disk imposes an additional burden on the storage system Also, reliability is degraded smce if the second disk fails before the failed disk is replaced and reconstructed the array may unrecoverably lose data Thus it is desirable to shorten the amount of time it takes to reconstruct a failed disk m order to shorten the time that the system operates m a degraded mode In the example of Figure 1, if device 1 fails and is replaced with a new device, the data that was stored on device 1 is reconstructed by copymg the contents of device 2 (the minor of device 1) to the new device. During the tune the new device is bemg reconstructed, if device 2 fails, data may be completely lost Also, the load of the reconstruction operation is unbalanced. In other words, the load of the reconstruction operanon mvolves read and wnte operations between only device 2 and the new device. Turning now to Figure 2, an example of a storage anay is shown that attempts to overcome some of the disadvantages associated with the anay of Figure 1. In the anay of Figure 2, data is also stπped across the devices of the anay. Data stπpes A through X are shown, where X may be any number of data stπpes within the capacity of the anay Each stπpe each divided mto stripe units with each device storing a different stπpe unit of a data stπpe The "oπgmal" stπpe umts are mapped sequentially to consecutive devices. Each data stπpe is also rmnored across the array. However, instead of minoπng the data stπpes by duplicating each disk as m Figure 1, the rmnored data stπpes are stored on the anay skewed by one device position from the oπgmal data stπpe. Note that the terms "oπgmal" and "minored" are simply used to provide a frame of reference but m normal operation there is no difference between an "oπgmal" data stπpe "minored" data stπpe. As shown m Figure 2, the minored data stπpes are all skewed together by one device. For example, oπgmal stπpe unit A(l) is stored on device 1 and the minored copy of stnpe unit A(l) is stored on device 2. Likewise, oπgmal stπpe unit B(l) is stored on device 1 and the rmnored copy of stπp unit B(l) is stored on device 2. Thus, all rmnored stπpe units are skewed by one device position. By skewmg the minored data several improvements over the system of Figure 1 are achieved. Although the system of Figure 2 still requires double the amount of storage capacity smce all data is minored, the miπoπng of data may be accomplished over an even or odd number of dπves. In the system of Figure 2 each half of a device is rmnored m half of one other device. For example, for device 2, oπginal stnpe umts A(2), B(2) ... X(2) are minored m device 3 (not shown), and device 2 also contains the "minor" copies of stπpe umts A(l), B(l) ... X(l) from device 1. If device 2 fails the replacement for device 2 may be reconstructed by readmg data from both device 3 and device 1 and wnting that data to the replacement device 2. Thus, the system of Figure 2 provides some load balancmg improvement over the system of Figure 1 m that reconstruction reads are now spread over two devices, although reconstruction writes are still focused on one device For large anays of storage devices, the MTBF for any one of the devices may be fairly short. Thus large aπays may spend a significant amount of time operatmg m a degraded mode. To improve degraded mode operation, it would be desirable to improve the load balancmg of the reconstruction operation SUMMARY OF THE INVENTION An array f storage devices may be provided in which data is both stπped and rmnored across the anay Data may be organized m stπpes in which each stπpe is divided mto a plurality of stπpe umts The stπpe umts may be mapped sequentially to consecutive storage devices m the anay for each data stπpe. Each data stπpe is also rmnored within the anay as a minored data stπpe. Each minored data stπpe is also divided mto a plurality of stπpe units. The stπpe units of the minored stπpes are distπbuted throughout the anay according to a mapping that provides for load balancmg during a reconstruction operation. Accordmg to one embodiment, stπpe umts for rmnored stπpes are distπbuted accordmg to a rotational group such that each minored stnpe is rotated on the array by one more position than the previous rmnored stπpe and wherein the rotational group is repeated as necessary Alternatively, the minored stπpe units may be distπbuted accordmg to other permutations to improve load balancmg during reconstruction of a failed device In other embodiments, in addition to mappmg minored stπpe units to balance read operations during reconstruction, one or more spare storage devices may be stπped throughout the anay to improve load balancmg for wπte operations during reconstruction In one embodiment, an anay of storage devices havmg at least three storage devices is configured to store stπpes of data A first stπpe of data is stored as a plurality of stπpe umts stored consecutively across consecutive ones of the storage devices One or more additional stπpes of data are also stored as pluralities of stπpe umts m the same consecutive order as the first stnpe of data across consecutive storage devices A copy of the first stnpe of date is stored as copies of the first stπpe umts Each one of the copies of the stπpe umts from the first stπpe of data is stored on a different one of the storage devices than the one of the stπpe umts of which it is a copy A copy of each of the one or more additional stπpes of data are also stored Each one of the stπpe unit copies for the copies of additional data stπpes are stored on a different one of the storage devices than the stπpe umt of which it is a copy The copied or minored stπpe units of the first data stπpe are stored on the storage devices m a first order The copied, or rmnored, stπpe umts for a second data stπpe are stored on the storage devices m a second order Wherein the first order is different than the second order In one embodiment, the order m which the copied or rmnored stπpe umts from the first data stπpe are stored is the order by which the first data stπpe is stored rotated by one storage device and the second order is that order rotated by two storage devices For additional copied data stπpes, the stπpe units are stored m mcreasmg rotational order until the rotational group is repeated The rotational group may be repeated as often as necessary for additional data stπpe copies (minor copies) One embodiment of a storage system may mclude an anay of at least four storage devices and a storage controller coupled to the storage devices A storage controller may be configured to store data m stπpes across the storage devices The storage controller may further be configured to minor each stπpe of data on the storage devices Additionally, the storage controller may be configured to perform a reconstruction operation to reconstruct lost data from a failed storage device The reconstruction operation may mclude readmg different portions of the lost data from at least three of the remaining storage devices of the anay In a prefened embodiment, the reconstruction operation mcludes readmg different portions of the lost data from all of the remaining storage devices of the anay The anay may mclude an even or odd number of storage devices The reconstruction operation may also mclude wnting different portions of the lost data to two or more remaining storage devices of the anay Alternatively, lost data may be wπtten to a smgle replacement device A storage system may mclude an anay of n storage devices where n is greater than 2 The storage system may also include a storage controller coupled to the storage devices The storage controller may be configured to store a group of data stπpes across the storage anay Each data stπpe may have a plurality of stripe umts with each stπpe unit stored on different ones of the storage devices The storage controller may be further configured to store a copy of the group of data stπpes on the storage devices The copy of the group of data stπpes may mclude a seπes of data stπpe copies Each data stπpe copy mcludes stπpe umts stored on the storage devices m a rotated position from the stnpe units of which they are copies The stπpe units of a first one of the seπes of data stπpe copies is rotated by one storage device position and the stπpe units of each one of the other data stπpe copies for the group is rotated by one more position than the previous data stπpe copy Additional groups of data stπpes and data stπpe copies may be mcluded m which this rotational positioning is repeated. The order of the group of data stπpes is the same for each data stπpe whereas the order for the group of data stπpe copies follows the rotational group. The group of data stπpes may have n-1 data stπpes Each data stπpe may mclude n stπpe umts Alternatively, each data stπpe may mclude n-1 stnpe units and a spare stπpe unit. Also, embodiments may be mcluded m which fewer stπpe units and more spare umts are mcluded The spare stπpe unit for each data stπpe m a group is stored on a different storage device m one embodiment A method for distnbuting copies of data m an anay of storage devices may mclude storing a first data stπpe across the storage devices The first data stπpe may have a plurality of first stπpe units with each one of the first stπpe units stored on different ones of the storage devices The method also may mclude storing a copy of the first stπpe unit on the storage devices Stπpe units of the copy of the stπpe are rotated by one position from the first stπpe The method further may include storing a seπes of additional data stπpes and copies of the additional data stπpes where the copies of the additional data stπpes are rotated by one more storage device position than a previous additional data stπpe copy so that the ordering of the data stπpe copies follows a rotational group A method for stoπng data m an anay of storage devices may mclude storing data m stπpes across the storage devices and miπoπng each stπpe of data on the storage devices The method may further mclude reconstructing lost data from a failed one of the storage devices. The reconstructing may mclude readmg different portions of the lost data from at least three of the remaining storage devices of the anay The reconstructing may also mclude wnting different portions of the lost data to two or more devices of the anay. Generally speaking, a method for stoπng data on an anay of storage devices m which data is stπped across the storage devices may mclude minoπng the ongmal data stπpes m which minored data stπpes are stored on the storage devices m a different position than other minored data stπpes of a same group of rmnored data stπpes and m a different position from the oπgmal data stπpe of which it is a minor copy. Each group may have at least three minored data stπpes and the muτoπng may be repeated for additional groups The method may also mclude stoπng a spare data stπpe across the storage devices for each group of oπgmal and rmnored data stπpes. BRTEF DESCRIPTION OF THE DRAWINGS Other objects and advantages of the invention will become apparent upon readmg the following detailed descnption and upon reference to the accompanymg drawings m which Figure 1 is an illustration of a storage anay employmg conventional data stπping and mrnoπng; Figure 2 is an illustration of a storage anay employmg conventional data stnping and one position skewed miπoπng, Figure 3 is an illustration of a computer and storage system mcludmg a storage system m which unproved load balancmg for reconstruction operations may be employed, Figure 4A is an illustration of one embodiment of a storage anay employmg data stnping and distπbuted rotational minoπng for improved load balancmg, Figure 4B is an illustration of another embodiment of a storage anay employmg data stnping and distπbuted rotational mirroring for improved load balancmg, Figure 5 illustrates a reconstruction operation for the anay of Figure 4A, Figure 6 is an illustration of a storage anay employmg data stnping, distπbuted rotational πnnoπng and spare stnping for unproved load balancmg, Figure 7 a reconstruction operation for the anay of Figure 6, and Figure 8 illustrates a mechanism to improve load balancmg for storage device reconstruction employmg distπbuted minored and spare stπpe units While the invention is susceptible to vaπous modifications and alternative forms, specific embodiments thereof are shown by way of example m the drawings and will herem be descπbed m detail It should be understood, however, that the drawings and detailed descnption thereto are not mtended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present mvention as defined by the appended claims DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION Turning now to Figure 3, an example of a computer storage system m which embodiments of the mvention may be emploved is illustrated A storage system anay 102, such a RAID system, may be coupled to a computer system 100 by an I O bus 110 The computer system 100 may mclude one or more processors and vaπous I O devices such as a monitor, keyboard, mouse, etc The storage anay system 102 may mclude a storage controller 104 and an anay of storage devices 106 The storage controller 104 controls the mappmg, accessmg, reconstructing, etc of data on the anay of storage devices 106 The anay of storage devices 106 may be coupled to the storage controller 104 by storage channels or buses 108 Buses 110 and 108 may be implemented accordmg to vanous standards such as fiber channel arbitrated loop (FC-AL), SCSI, HIPPI, ATA, etc Also, bus 110 may be an I/O bus such as the peπpheral component interconnect (PCI) bus Storage controller 104 operates to perform both stnping and minoπng of data on the anay of storage devices 106 accordmg to the mechanism descπbed below Note that each element of the anay of storage devices 106 may be a separate disk or any other logical division of storage devices For example, each element of the array may be a cylmder of a hard disk It is also noted that the system may mclude multiple ones of storage system 102 Also each storage system 102 may mclude multiple anays of multiple disks and/or multiple storage controllers 104 In a prefened embodiment each anay includes at least three storage devices and typically would include more than three storage devices such as four, five or more devices Turning now to Figure 4A, a mechanism accordmg to one embodiment for storing data on devices of a storage anay is illustrated For ease of illustration, an anay of only four devices is illustrated However, the number of devices is not limited to four For example, an anay employmg the mechanism illustrated m Figure 4A may mclude only three storage devices or many more than four storage devices Also, for ease of illustration, only three different stπpes of data are shown However, the mechanism may clearly be applied to more than three data stripes As shown m Figure 4 A, data stnpes are divided m stπpe units mapped sequentially to consecutive devices Each stπpe unit may be an entire block of data or any other subdivision of data down to the bit level For the example of Figure 4A, each data stripe A, B and C is divided mto four stπpe units across the four storage devices Device 1 mcludes stπpe units A(l), B(l) and C(l) Device 2 mcludes stnpe units A(2), B(2) and C(2), and so on Each data stπpe is also minored within the anay The mrrrored data is stπped m a way to improve load balancmg during reconstruction operations The minored data is stπped across the anay accordmg to a mechanism that balances reconstruction operations across three or more devices of the anay In the example of Figure 4A, the rmnored data is stnped accordmg to the rotational group of the stπped umts A rotational group is a mathematical structure which may be calculated accordmg to a mathematical function A rotational group may be expressed as follows for a set of n objects the rotational group is the different orders of the objects obtamed by rotating a beginning order by one position for each subsequent order until the order is repeated For example, for the set of four objects { 1, 2, 3, 4} one rotational group is as follows 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 The first function of a rotational group is the identity function (1 e rotated by zero positions) The identity function is not applied to the minored data smce it would result m repeating copies of each stπpe unit on the same device as the oπgmal copy and thus not providmg for fault tolerance m case of device failure Thus, only the rotational functions beyond identity are applied The first rmnored data stπpe is rotated by one position In the example of Figure 4A, the minored data stπpe A is rotated to the left by one position from oπgmal data stπpe A Note that rotations to the πght are used m alternate embodiments The next minored data stπpe is rotated by two positions, as shown for minored data stπpe B This may be continued until the rotational group is repeated (after three stπpes m this example) The entire rotational group may then be repeated as often as necessary for additional data stnpes Thus, accordmg to the embodiment of Figure 4A, each minored data stπpe is rotated by one more device position than the previous minored data stπpe for a group of data stπpes In one embodiment the rotations are repeated after every n- 1 consecutive data stπpes for an anay of n storage devices Figure 4B illustrates an embodiment similar to that m Fig 4A m which the rmnored data stπpes are stπped accordmg to the rotational group of the stπped units However, m the embodiment of Figure 4B, the "minor" stπpe units for each stπpe are stored following the "oπgmal" stπpe unit on each storage device, mstead of stoπng the minor stπpe units on the other half of each storage device This embodiment may be prefened m order to allow more flexibility smce each storage device does not need to be pre-allocated mto a "oπgmal" stπpe unit half and a "minor" stπpe unit half Note also that additional mino copies may be stored accordmg to a rotational group or other mathematical structure or permutation For example, the mappmgs of Figures 4A or 4B could easily be expanded to mclude two, three, four, or more "minor" stnpe umt copies for each "ongmal" stπpe umt Providmg additional minor copies may provide extra data protection at the expense of storage space The mechanism of miπoπng data stripes accordmg to a mathematical structure such as a rotational group allows parallelization of reconstruction read operations during a degraded mode of operation Turning now to Figure 5, an anay m which data has been stπped and minored accordmg to the mechanism of Figure 4A is illustrated in which device 3 has failed and has been replaced with a new device The data that was contained on failed device 3 may be reconstructed onto the new device 3 by accessmg the other devices of the anay As graphically illustrated m Figure 5, it can be seen that the data for reconstruction is equally disrπbuted between the remammg devices of the anay For example, device 3 "oπgmal" copy of stπpe umt B(3) may be obtamed from the "minored" copy of stπpe unit B(3) on device 1 Similarly, device 3's minored copy of stπpe umt B(l) may be obtamed from device l 's "ongmal" copy of stπpe umt B(l) In a similar fashion, stπpe umts C(2) and A(3) are obtamed from device 2 and stπpe umts A(4) and C(3) are obtamed from device 4 Thus, the read operations for reconstructing device 3 are now distπbuted amongst the remainmg devices of the anay. Reconstruction reads and writes may simultaneously occur at multiple devices. Note that it is not necessary for the reconstruction load to be balanced evenly m all embodiments In a prefened embodiment, reconstruction reads are at least partially parallelized among at least three storage devices. While the mechanism has been illustrated usmg a rotational group m Figures 4 and 5, many other permutations of stπp umts may be used for miπonng data across the anay that will achieve improved load balancmg m degraded modes of operation Preferably, to ease the computational overhead of tracking storage umt mappmgs, the minored data is stπped accordmg to a mathematical structure, such as a rotational group Other mathematical structures, such as structures determined by other conical section type functions, may be employed m other embodiments. Essentially any permutation of minored stπpe units may be employed However, the oπgmal and minored copy of each stπpe umt should be stored on different devices. In other words, the stπpe umt order of a rmnored stπpe should be different from the stπpe unit order of the oπgmal stπpe so that stπpe umts are not repeated on the same device Also m a prefened embodiment, the stπpe umt order between different minored data stπpes of a group of minored data stnpes is different so that reconstruction read operations are balanced between three or more devices of the anay and preferably balanced between all remainmg devices of the anay. Thus, amongst groups of minored stπpes, the order of stπpe umts may be different for each stπpe umt of the group. However, the ordering may be repeated amongst different groups of minored data stnpes For example, m the rotational stnping of Figure 4, the rotational groupmg may be repeated every n- 1 minored data stπpes for an anay of n devices As seen m the example of Figure 5, read operations during reconstruction of a drive are well balanced, but vvTite operations are still concentrated on one device (e.g. the replacement device m Figure 5) Turning now to Figure 6, a mechanism is illustrated in which improved balancmg of both read and wnte operations may be achieved. Data is stπped across the devices of the anay and minored data is also stπped accordmg to a function that distπbutes minored stπpe units across the anay so that reconstruction reads may be balanced among three or more devices A rotational distnbution similar to that descπbed for Figure 4 may be employed A spare device is also striped across the anay In the embodiment of Figure 6 the spare device is stπped cyclically and cross diagonally amongst the storage devices of the anay In the embodiment of Figure 6 the spare stnpe umts are stπped cyclically and cross diagonally for each group of data stπpes, where a group of data stπpes conesponds to the number of data stπpes m which the data stπpe miπoπng order is repeated (e.g. three m this embodiment). Each data stπpe mcludes n-1 data stπpe units plus one spare stπpe unit It is understood that the spare device may be stπped across the anay m many different ways m which the spare stπpe units are distπbuted in different orders than that shown m Figure 6 as long as wnte operations are paralyzed as discussed below Note that m the example shown m Figure 6, devices 1 and 2 do not mclude spare stπpe umts This is merely because of the size of the anay and rotational groupings shown m this example. In a larger anay spare stπpe umts may be located on all devices. Turning now to Figure 7 it can be seen how reconstruction wπtes may be balanced amongst multiple devices if one of the devices fails In this embodiment, mstead of reconstructing the failed device on a replacement device, the data from the failed device may be reconstructed on the spare stπpe umts of remainmg devices The spare stπpes provide a logical hot stand-by device For example, if device 2 fails, data stπpes A(2), B(2) and C(2) may be reconstructed onto devices 5, 4 and 3 respectively Minored stπpe units A(3), B(4) and C(l) may similarly be reconstructed By examining Figure 7 it can been seen that reconstruction wπtes have now been distπbuted amongst three different devices and reconstructions reads distnbuted amongst four different devices Unlike m the embodiment of Figures 4 and 5 where the reconstructed anay retains the same mappmg of stnpe units, the reconstructed anay of Figure 7 has a different mappmg of stπpe umts than the anay shown m Figure 6 before the device failure occuned The storage controller tracks the different mappmg after reconstruction The mappmg differences may be simplified by choosing different granulanties between the spare stnping and data stnping Also note that when a replacement dnve is added, such as during a maintenance peπod, the oπgmal mappmg may be restored if desired Note that for the embodiment of Figure 6 and 7 when a spare device is stπped amongst the anay, data from a failed device may be restored immediately to the spare stπpe umts without waitmg for a replacement device to be installed Also note that for other embodiments multiple spare devices may be stπped throughout the anay so that if one failure occurs an additional spare may still be present m case of a further failure Turning now to Figure 8, a mechanism for improving the balancmg of read and/or wnte operations m a storage anay for normal and degraded operation is illustrated During normal operation (200) data is stπped across the anay of storage devices as mdicated at 202 Each data stnpe is also minored across the anay accordmg to a mathematical structure such as a rotational group so that copies of stπpe umts for any given device are distπbuted amongst numerous (e g more than three) devices of the anay, as mdicated at 204 The stπpe umt copies are distπbuted so as to load balance reconstruction operations throughout the anay The minoπng stπpe umt distπbution (e g rotational group) may be repeated as necessary as often for multiple groups of data stπpes Additionally, one or more spare devices may be stπped across the anay, such as m a cyclical and diagonal or cross diagonal manner or other manner, as indicated at 206 Spare stπpe units are distπbuted so as to load balance reconstruction wnte operations amongst multiple devices During degraded operation (210) lost data is read from a plurality of the remainmg storage devices as mdicated at 212 In a prefened embodiment, reads of lost data are distπbuted amongst three or more devices and even more preferably all the devices of the anay Also, wnte operations of the lost data may be performed to spare stπpe units on a plurality of the remammg storage devices, as mdicated at 214 Reads and wπtes may be performed simultaneous among multiple devices Note that the diagrams of Figure 8 do not imply any particular order of operation but merely illustrate the ongomg mechanisms that are applied durmg normal and degraded operations By distributing minored stπpe umts amongst the dπves in a manner so that data to reconstruct any dnve of the anay is distπbuted across numerous ones of the remammg devices, the efficiency of a reconstruction operation after a device failure may be greatly improved Similarly, by use of spare striping m combmation with the distπbuted minor stnping (e g rotational minor stnping) wnte operations during reconstruction after a device failure may also be better balanced throughout the anay The load balancmg mechanism descπbed herem may also be used to improve load balancmg m normal operation, as well as degraded operation During normal operation, one of the storage devices may become a bottleneck, e g , a large number of access requests may be queued for that device while other devices are idle Access requests for the bottleneck device may be shifted to other devices that have a copy of the requested data on the bottleneck device Such requests may be shifted to devices that have a lighter load or are idle The load balancmg mechanism descπbed herem, m which a rotational or other structure has been used to distnbute minor stπpes across the anay, makes many more of the devices m the anay available for such shifting This is because the mechamsm descnbed herem distπbutes copies of the stπpe units on each device across up to all the other devices of the anay In contrast, for techniques of Figures 1 and 2 data copies for each device are located on only one or two other devices Thus, for the techmques of Figures 1 and 2, bottlenecked requests could only be shifted to one or two other devices, which may result m those devices becoming bottlenecked Vaπous modifications and changes may be made as would be obvious to a person skilled m the art having the benefit of this disclosure It is intended that the following claims be interpreted to embrace all such modifications and changes and, accordmgly, the specifications and drawings are to be regarded m an illustrative rather than a restπctive sense

Claims: WHAT IS CLAIMED IS: 1 An array of storage devices, compnsmg at least three storage devices configured to store stπpes of data. a first stπpe of data stored as a plurality of first stπpe units stored consecutively across consecutive ones of said storage devices, a second stπpe of data stored as a plurality of second stnpe umts stored m the same consecutive order as said first stnpe units across consecutive ones of said storage devices, a copy of said first stπpe of data stored as copies of said first stπpe umts, wherem each one of the copies of said first stπpe umts is stored on a different one of said storage devices than the one of the first stπpe units of which it is a copy, and a copy of said second stπpe of data stored as copies of said second stπpe units, wherem each one of the copies of said second stπpe umts is stored on a different one of said storage devices than the one of the second stπpe units of which it is a copy, and wherem said copies of said first stπpe umts are stored on said storage devices m a first order, and wherem said copies of said second stπpe umts are stored on said storage devices m a second order, wherem said first order is different than said second order 2 The array as recited m claim 1, wherem said first order is the order m which said first stπpe umts are stored across said storage devices rotated by one storage device, and wherem said second order is the order m which said second stπpe umts are stored across said storage devices rotated by two storage devices 3 The array as recited m claim 1, wherem said storage devices are disk dnves 4 The array as recited m claim 1 , wherem each one of said storage devices is a different disk dnve cylmder 5 The aπay as recited m claim 1 , wherem each one of said first and second stnpe umts compπses a block of data 6 The anay as recited m claim 1, wherem each one of said first and second stπpe umts compπses at least one bit of data 7 The anay as recited m claim 1, wherem said storage devices compπse at least four storage devices 8 A storage system, compnsmg an anay of at least four storage devices, and a storage controller coupled to said storage devices, wherem said storage controller is configured to store data m stπpes across said storage devices, wherem said storage controller is further configured to minor each stripe of data on said storage devices, and wherem said storage controller is further configured to perform a reconstruction operation to reconstruct lost data from a failed one of said storage devices, wherem said reconstruction operation compπses readmg different portions of the lost data from at least three remainmg storage devices of the anay 9 The storage system as recited m claim 8, wherem said reconstruction operation compπses readmg different portions of the lost data from all of the remainmg storage devices of the anay 10 The storage system as recited m claim 8, wherem said anay has an odd number of storage devices 11 The storage system as recited m claim 8, wherem said storage devices are disk dπves 12 The storage system as recited m claim 8, wherem each one of said storage devices is a different disk dnve cylmder 13 The storage system as recited m claim 8, wherem said reconstruction operation compnses wnting different portions of the lost data to at least two remainmg storage devices of said anay 14. The storage system as recited m claim 8, wherem said reconstruction operation compπses wnting different portions of the lost data to all of the remammg storage devices of said anay. 15. A storage system, compnsmg an anay of n storage devices, where n is greater than two; and a storage controller coupled to said storage devices, wherem said storage controller is configured to store a group of data stnpes across said storage devices, wherem each data stπpe has a plurality of stπpe units with each stπpe unit stored on different ones of said storage devices. wherem said storage controller is further configured to store a copy of said group of data stπpes on said storage devices, wherem said copy of said group of data stπpes compπses a seπes of data stπpe copies, each data stripe copy compnsmg stπpe units stored on said storage devices m a rotated position from the stπpe units of which they are copies, wherem the stπpe units of a first one of the seπes of data stπpe copies is rotated by one storage device position, and wherem the stπpe units of each one of the other data stπpe copies is rotated by one more position than the previous data stripe copy 16 The storage system as recited m claim 15, wherem said group of data stripes has n-1 data stπpes 17 The storage system as recited m claim 16, wherem said storage controller is configured to store additional groups of data stπpes, wherem the stπpe umt rotations of said data stnpe copies are repeated for each group 18 The storage system as recited m claim 15, wherem each data stnpe has n stπpe umts 19 The storage system as recited m claim 15, wherem each data stnpe has n-1 stπpe umts and a spare stπpe umt 20 The storage system as recited in claim 19, wherem the spare stπpe umt for each data stπpe of the group of data stπpes is stored on a different device 21 A method for distπbuting copies of data m an anay of storage devices, the method compnsmg storing a first data stπpe across the storage devices, wherem said first data stπpe has a plurality of first stπpe units with each one of said first stnpe umts stored on different ones of the storage devices, stoπng a copy of the first data stπpe on the storage devices, wherem said copy of said first data stπpe compπses first stπpe unit copies stored on the storage devices rotated by one position from said first stπpe units, stoπng a senes of additional data stπpes across the storage devices, wherem each additional data stπpe has a plurality of additional stπpe umts with each one of said additional stπpe umts stored on different ones of the storage devices, and stoπng copies of the additional data stπpes on the storage devices, wherem the stπpe umts of a first one of the copies of the additional data stπpes is rotated by one more storage device position than said first stπp umt copies, and wherem the stπpe units of each additional data stπpe copies is rotated by one more position than the previous additional data stπpe copy 22 The method as recited m claim 21 , further compnsmg for each of said first data stπpe, said additional data stπpes, said copy of the first data stπpe, and said copies of the additional data stπpes, stoπng a spare stπpe umt on one of the storage devices, wherem the spare stπpe umts are stπped across the storage devices 23 A method for stormg data m an anay of storage devices, the method compnsmg stoπng data m stπpes across the storage devices, mrπoring each stπpe of data on the storage devices, reconstructing lost data from a failed one of the storage devices, wherem said reconstructing compnses readmg different portions of the lost data from at least three remammg storage devices of the anay 24 The method as recited in claim 23, wherein said reconstructing compnses readmg different portions of the lost data from all of the remammg storage devices of the anay 25 The method as recited in claim 23, wherem the anay has an odd number of storage devices 26 The method as recited m claim 23, wherem the storage devices are disk dπves 27 The method as recited m claim 23, wherem each one of the storage devices is a different disk dnve cylmder 28 The method as recited m claim 23, wherem said reconstructing compπses wπtmg different portions of the lost data to at least two remainmg storage devices of the anay 29 The method as recited m claim 23, wherem said reconstructmg compnses wπtmg different portions of the lost data to all of the remammg storage devices of the anay 30 A method for stoπng data on an anay of storage device, the method compnsmg stoπng a group of ongmal data stnpes across the storage devices, rmnonng the group of oπgmal data stπpes on the storage devices, wherem each minored data stnpe for the group of rmnored data stπpes is stored on the storage devices m a different position than the other minored data stπpes of the group and m a different position from the data stπpe which it minors, wherem the group of minored data stnpes has at least three minored data stπpes, and repeating said stormg and minoπng for additional groups of data stnpes 31 The method as recited m claim 30, wherem the different positions for the group of minored stnpes are determined accordmg to a mathematical function 32 The method as recited m claim 30, wherem the different positions for the group of rmnored stπpes is the set of rotations form the position of the oπgmal data stπpes excludmg the identity rotation 33 The method as recited m claim 30, further compnsmg storing a spare data stπpe across the storage devices for each group of oπgmal and minored data stπpes

Inventors: HASHEMI EBRAHIM, HASHEMI, EBRAHIM
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 2000
Main classification: G06F11
IPC codes: G06F3, G06F11, G06F12