USRE48222EActiveUtility

Reconstruct reads in a raid array with dynamic geometries

95
Assignee: PURE STORAGE INCPriority: Oct 1, 2010Filed: Jan 5, 2018Granted: Sep 22, 2020
Est. expiryOct 1, 2030(~4.2 yrs left)· nominal 20-yr term from priority
G06F 12/00G06F 3/06G06F 11/10G06F 2211/1057G06F 11/1076G06F 2211/1059G06F 11/3034G06F 11/3055
95
PatentIndex Score
13
Cited by
47
References
29
Claims

Abstract

A system and method for dynamic RAID geometries. A computer system comprises client computers and data storage arrays coupled to one another via a network. A data storage array utilizes solid-state drives and Flash memory cells for data storage. A storage controller within a data storage array is configured to configure a first subset of the storage devices for use in a first RAID layout, the first RAID layout including a first set of redundant data. The controller further configures a second subset of the storage devices for use in a second RAID layout, the second RAID layout including a second set of redundant data. Additionally, the controller configure an additional device not included in either the first subset or the second subset to store redundant data for both the first RAID layout and the second RAID layout. The controller is further configured to initiate a reconstruct read corresponding to a given read request directed to a particular storage device of the plurality of storage devices, in response to determining the particular storage device is exhibiting a non-error related relatively slow read response.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A computer system comprising:
 a data storage subsystem comprising a plurality of storage devices in a redundant array of independent disks (RAID) configuration; and   a storage controller configured to:
 write a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first RAID data of the first RAID stripe stored on the particular storage device; 
 select a subset of storage devices of the plurality of storage devices for writing a second RAID stripe, wherein the amount of storage devices in the subset is less than the amount of storage devices in the plurality of storage devices, wherein the subset includes the particular storage device; and 
 write the second RAID stripe to the subset including allocating in the particular storage device, a second amount of intra-device protection data for protecting second RAID data of the second RAID stripe stored on the particular storage device; wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data. 
   
     
     
       2. The computer system as recited in  claim 1 , wherein the plurality of storage devices are solid state storage devices. 
     
     
       3. The computer system as recited in  claim 1 , wherein the first RAID stripe has a first RAID layout that is an L+x layout, and the second RAID stripe has a second RAID layout that is an M+y layout, wherein L, x, M, and y are integers, and wherein either or both (1) L is not equal to M, and (2) x is not equal to y. 
     
     
       4. The computer system as recited in  claim 1 , wherein
 at least one other storage device in the plurality of storage devices has a different amount of intra-device protection data than the first amount of intra-device protection data of the particular storage.   
     
     
       5. The computer system as recited in  claim 1 , wherein
 at least one other storage device in the subset of storage devices has a different amount of intra-device protection data than the second amount of intra-device protection data of the particular storage.   
     
     
       6. A method for configuring a plurality of storage devices in a redundant array of independent disks (RAID) configuration, the method comprising:
 writing a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first RAID data of the first RAID stripe stored on the particular storage device; and   writing a second RAID stripe to the plurality of storage devices including:
 predicting an increasing error rate for the particular storage device; and 
 in response to predicting the increasing error rate for the particular storage device, allocating in the particular storage device, a second amount of intra-device protection data for protecting second RAID data of the second RAID stripe stored on the particular storage device; wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data wherein the second amount of intra-device protection data is different than a third amount of intra-device protection data used for protecting third RAID data of the second RAID stripe stored on at least one other storage device in the plurality of storage devices. 
   
     
     
       7. The method as recited in  claim 6 , wherein the plurality of storage devices are solid state storage devices. 
     
     
       8. The method as recited in  claim 6 , wherein the first RAID stripe has a first RAID layout that is an L+x layout, and the second RAID stripe has a second RAID layout that is an M+y layout, wherein L, x, M, and y are integers, and wherein either or both (1) L is not equal to M, and (2) x is not equal to y. 
     
     
       9. The method as recited in  claim 6 ,
 wherein at least one other storage device in the plurality of storage devices has a different amount of intra-device protection data than the first amount of intra-device protection data of the particular storage.   
     
     
       10. A non-transitory computer readable storage medium storing program instructions for configuring a plurality of storage devices in a redundant array of independent disks (RAID) configuration, wherein the program instructions are executable to:
 write a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first RAID data of the first RAID stripe stored on the particular storage device; and   write a second RAID stripe to the plurality of storage devices including:
 predict an increasing error rate for the particular storage device; and 
 in response to predicting the increasing error rate for the particular storage device, allocate in the particular storage device, a second amount of intra-device protection data for protecting second RAID data of the second RAID stripe stored on the particular storage device; wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data wherein the second amount of intra-device protection data is different than a third amount of intra-device protection data used for protecting third RAID data of the second RAID stripe stored on at least one other storage device in the plurality of storage devices. 
   
     
     
       11. The non-transitory computer readable storage medium as recited in  claim 10 , wherein the plurality of storage devices are solid state storage devices. 
     
     
       12. The non-transitory computer readable storage medium as recited in  claim 10 , wherein the first RAID stripe has a first RAID layout that is an L+x layout, and the second RAID stripe has a second RAID layout that is an M+y layout, wherein L, x, M, and y are integers, and wherein either or both (1) L is not equal to M, and (2) x is not equal to y. 
     
     
       13. A data storage array comprising:
 a data storage subsystem comprising a plurality of storage devices in a redundant array of independent disks (RAID) configuration; and   a storage controller configured to:
 write a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first RAID data of the first RAID stripe stored on the particular storage device; 
 select a subset of storage devices of the plurality of storage devices for writing a second RAID stripe, wherein the amount of storage devices in the subset is less than the amount of storage devices in the plurality of storage devices, wherein the subset includes the particular storage device; and 
 write the second RAID stripe to the subset including allocating in the particular storage device, a second amount of intra-device protection data for protecting second RAID data of the second RAID stripe stored on the particular storage device; 
 wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data.  
   
     
     
       14. The data storage array as recited in claim 13, wherein the plurality of storage devices are solid-state storage devices.  
     
     
       15. The data storage array as recited in claim 13, wherein the first RAID stripe has a first RAID layout that is an L+x layout, and the second RAID stripe has a second RAID layout that is an M+y layout, wherein L, x, M, and y are positive integers, and wherein either or both (1) L is not equal to M, and (2) x is not equal to y.  
     
     
       16. The data storage array as recited in claim 13, wherein the plurality of storage devices comprises flash memory chips.  
     
     
       17. The data storage array as recited in claim 13, wherein the storage controller is further to perform garbage collection.  
     
     
       18. The data storage array as recited in claim 13, wherein the storage controller is further to perform wear leveling.  
     
     
       19. The data storage array as recited in claim 13, wherein a particular storage device in the plurality of storage devices has a different amount of intra-device protection data than at least one other storage device in the plurality of storage devices.  
     
     
       20. A method for configuring a plurality of storage devices, the method comprising:
 writing a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first user data of the first RAID stripe stored on the particular storage device;   writing a second RAID stripe to the plurality of storage devices including:
 predicting an increasing error rate for the particular storage device; and 
 in response to predicting the increasing error rate for the particular storage device, allocating in the particular storage device, a second amount of intra-device protection data for protecting second user data of the second RAID stripe stored on the particular storage device; wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data; wherein the second amount of intra-device protection data is different than a third amount of intra-device protection data used for protecting third user data of the second RAID stripe stored on at least one other storage device in the plurality of storage devices.  
   
     
     
       21. The method as recited in claim 20, wherein the plurality of storage devices are solid state storage devices.  
     
     
       22. The method as recited in claim 20, wherein the first RAID stripe has a first RAID layout that is an L+x layout, and the second RAID stripe has a second RAID layout that is an M+y layout, wherein L, x, M, and y are positive integers, and wherein either or both (1) L is not equal to M, and (2) x is not equal to y.  
     
     
       23. The method as recited in claim 20, wherein the plurality of storage devices comprises flash memory chips.  
     
     
       24. The method as recited in claim 20, further comprising performing garbage collection by the storage controller.  
     
     
       25. The method as recited in claim 20, further comprising performing wear leveling by the storage controller.  
     
     
       26. The method as recited in claim 20, wherein a particular storage device in the plurality of storage devices has a different amount of intra-device protection data than at least one other storage device in the plurality of storage devices.  
     
     
       27. A non-transitory computer readable storage medium storing program instructions for configuring a plurality of storage devices, wherein the program instructions are executable by a storage controller to:
 write a first RAID stripe to the plurality of storage devices including allocating in a particular storage device of the plurality of storage devices, a first amount of intra-device protection data for protecting first user data of the first RAID stripe stored on the particular storage device,   write a second RAID stripe to the plurality of storage devices including:
 predict an increasing error rate for the particular storage device; and 
 in response to predicting the increasing error rate for the particular storage device, allocate in the particular storage device, a second amount of intra-device protection data for protecting second user data of the second RAID stripe stored on the particular storage device; wherein the second amount of intra-device protection data is larger than the first amount of intra-device protection data; wherein the second amount of intra-device protection data is different than a third amount of intra-device protection data used for protecting third user data of the second RAID stripe stored on at least one other storage device in the plurality of storage devices.  
   
     
     
       28. The non-transitory computer readable storage medium as recited in claim 27, wherein the plurality of storage devices comprises flash memory chips.  
     
     
       29. The non-transitory computer readable storage medium as recited in claim 27, wherein the instructions are further executable by the storage controller to perform garbage collection or wear leveling.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.