Adaptive RAID for an SSD environment
First Claim
1. A computer system comprising:
- a client computer configured to send read and write requests over a network; and
a data storage subsystem coupled to the network configured to receive the read and write requests, wherein the subsystem comprises a plurality of data storage locations on a device group including a plurality of storage devices;
wherein the data storage subsystem further comprises a storage controller configured to;
determine a first RAID layout and second RAID layout for use in storing data, wherein the second RAID layout is different from the first RAID layout;
write a first RAID stripe to a first subgroup of devices of the plurality of storage devices according to the first RAID layout; and
write a second RAID stripe to a second subgroup of devices of the plurality of storage devices according to the second layout;
write a third RAID stripe to a third subgroup of devices of the plurality of storage devices according to the second layout, wherein the third subgroup of devices includes one or more devices not included in the second subgroup;
whereby the device group concurrently stores data according to both the first RAID layout and the second RAID layout;
wherein in response to detecting a change in reliability of a given device of the first subgroup of devices, the storage controller is configured to;
maintain a first amount of space in a given device for storing intra-device redundancy data for a given RAID stripe; and
concurrently maintain a second amount of space in a device other than the given device for storing intra-device redundancy data for the given RAID stripe, wherein the second amount is different than the first amount.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method for adaptive 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 determine a first RAID layout for use in storing data, and write a first RAID stripe to the device group according to the first RAID layout. In response to detecting a first condition, the controller is configured to determine a second RAID layout which is different from the first RAID layout, and write a second RAID stripe to the device group according to the second layout, whereby the device group concurrently stores data according to both the first RAID layout and the second RAID layout.
324 Citations
16 Claims
-
1. A computer system comprising:
-
a client computer configured to send read and write requests over a network; and a data storage subsystem coupled to the network configured to receive the read and write requests, wherein the subsystem comprises a plurality of data storage locations on a device group including a plurality of storage devices; wherein the data storage subsystem further comprises a storage controller configured to; determine a first RAID layout and second RAID layout for use in storing data, wherein the second RAID layout is different from the first RAID layout; write a first RAID stripe to a first subgroup of devices of the plurality of storage devices according to the first RAID layout; and write a second RAID stripe to a second subgroup of devices of the plurality of storage devices according to the second layout; write a third RAID stripe to a third subgroup of devices of the plurality of storage devices according to the second layout, wherein the third subgroup of devices includes one or more devices not included in the second subgroup; whereby the device group concurrently stores data according to both the first RAID layout and the second RAID layout; wherein in response to detecting a change in reliability of a given device of the first subgroup of devices, the storage controller is configured to; maintain a first amount of space in a given device for storing intra-device redundancy data for a given RAID stripe; and concurrently maintain a second amount of space in a device other than the given device for storing intra-device redundancy data for the given RAID stripe, wherein the second amount is different than the first amount. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for use in a computer system, the method comprising:
-
receiving read and write requests at a data storage subsystem, wherein the subsystem comprises a plurality of data storage locations on a device group including a plurality of storage devices; determining a first RAID layout for use in storing data; writing a first RAID stripe to a first subgroup of devices of the plurality of storage devices according to the first RAID layout; determining a second RAID layout which is different from the first RAID layout; writing a second RAID stripe to a second subgroup of devices of the plurality of storage devices according to the second layout; writing a third RAID stripe to a third subgroup of devices of the plurality of storage devices according to the second layout, wherein the third subgroup of devices includes one or more devices not included in the second subgroup; whereby the device group concurrently stores data according to both the first RAID layout and the second RAID layout; and writing a fourth RAID stripe to the plurality of storage devices, wherein an amount of intra-device redundancy data maintained on a first device for the fourth RAID stripe is different from an amount of intra-device redundancy data concurrently maintained on a second device for the fourth RAID stripe. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory computer readable storage medium storing program instructions, wherein the program instructions are executable to:
-
receive read and write requests at a data storage subsystem, wherein the subsystem comprises a plurality of data storage locations on a device group including a plurality of storage devices; determine a first RAID layout and second RAID layout for use in storing data, wherein the second RAID layout is different from the first RAID layout; write a first RAID stripe to a first subgroup of devices of the plurality of storage devices according to the first RAID layout; and write a second RAID stripe to a second subgroup of devices of the plurality of storage devices according to the second layout; write a third RAID stripe to a third subgroup of devices of the plurality of storage devices according to the second layout, wherein the third subgroup of devices includes one or more devices not included in the second subgroup; write data according to a given layout, wherein writing said data according to the given layout comprises selecting from any of the plurality of devices for storing the data without regard to devices used in a previous write of data according to the given layout; wherein in response to detecting a change in reliability of a given device of the first subgroup of devices, the program instructions are further executable to; maintain a first amount of space in a given device for storing intra-device redundancy data for a given RAID stripe; and concurrently maintain a second amount of space in a device other than the given device for storing intra-device redundancy data for the given RAID stripe, wherein the second amount is different than the first amount.
-
Specification