Apparatus, system, and method for a front-end, distributed raid
First Claim
1. An apparatus for high performance, distributed storage, the apparatus comprising:
- a front-end controller executed on a processor, the front-end controller comprising;
a storage request receiver module that receives a storage request to store data in a storage device set, comprising a plurality of autonomous storage devices configured to independently receive and service storage requests from a client;
a striping association module that calculates a stripe pattern for the data, the stripe pattern comprising one or more stripes, each stripe comprising a set of N data segments, and associates each of the N data segments with one of N storage devices in the storage device set; and
a storage request transmitter module that transmits one or more storage requests to each of the N storage devices associated with a data segment, each storage request to configure a storage device to access data segments of the set of N data segments directly, independent of the front-end controller.
12 Assignments
0 Petitions
Accused Products
Abstract
An apparatus, system, and method are disclosed for a front-end, distributed redundant array of independent drives (“RAID”). A storage request receiver module receives a storage request to store object or file data in a set of autonomous storage devices forming a RAID group. The storage devices independently receive storage requests from a client over a network, and one or more of the storage devices are designated as parity-mirror storage devices for a stripe. The striping association module calculates a stripe pattern for the data. Each stripe includes N data segments, each associated with N storage devices. The parity-mirror association module associates a set of the N data segments with one or more parity-mirror storage devices. The storage request transmitter module transmits storage requests to each storage device. Each storage request is sufficient to store onto the storage device the associated data segments. The storage requests are substantially free of data.
-
Citations
42 Claims
-
1. An apparatus for high performance, distributed storage, the apparatus comprising:
-
a front-end controller executed on a processor, the front-end controller comprising; a storage request receiver module that receives a storage request to store data in a storage device set, comprising a plurality of autonomous storage devices configured to independently receive and service storage requests from a client; a striping association module that calculates a stripe pattern for the data, the stripe pattern comprising one or more stripes, each stripe comprising a set of N data segments, and associates each of the N data segments with one of N storage devices in the storage device set; and a storage request transmitter module that transmits one or more storage requests to each of the N storage devices associated with a data segment, each storage request to configure a storage device to access data segments of the set of N data segments directly, independent of the front-end controller. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. An apparatus for high performance, distributed storage, the apparatus comprising:
-
a front-end controller, comprising; a storage request receiver module that receives a storage request to store data in a storage device set comprising a plurality of autonomous storage devices, wherein each storage device in the storage device set is configured to communicate with storage clients and to receive storage requests from the storage clients independent of the front-end controller; a striping association module that calculates a stripe pattern for data of the storage request, the stripe pattern comprising one or more stripes, each stripe comprising a set of N data segments, and associates each of the N data segments with one of N storage devices in the storage device set; and a storage request transmitter module that transmits one or more storage requests to each storage device assigned a data segment, each storage request to configure a storage device to access data of a data segment associated with the storage device.
-
-
24. A computer program product comprising a non-transitory computer readable storage medium having computer usable program code executable to perform operations for high performance, distributed redundant array of independent drives (“
- RAID”
), the operations of the computer program product comprising;receiving at a front-end controller a storage request to store data in a storage device set comprising autonomous storage devices forming a RAID group, the storage devices communicatively coupled to storage clients independent of the front-end controller, and configured to independently receive storage requests from the storage clients; calculating a stripe pattern for data of the storage request, the stripe pattern comprising one or more stripes, each stripe comprising a set of N data segments; associating each of the N data segments with a storage device in the storage device set; and transmitting one or more storage requests to each storage device in the storage device set, each storage request to configure a storage device to access data segments associated with the storage device. - View Dependent Claims (25)
- RAID”
-
26. A method for providing front-end distributed storage services, the method comprising:
-
receiving a storage request at a front-end controller, the storage request comprising a request to store data on a storage device set comprising a plurality of autonomous storage devices; associating each of N data segments of the data with a respective storage device in the storage device set; and transmitting storage requests to storage devices in the storage device set assigned data segments, the storage requests to configure a storage device to access data pertaining to a data segment assigned to the storage device, wherein transmitting comprises one of broadcasting and multicasting a storage request to two or more of the storage devices in the storage device set, the two or more storage devices performing portions of the storage request pertaining to data segments associated with the storage device and ignoring portions of the storage request pertaining to data segments not associated with the storage device.
-
-
27. A method for providing front-end distributed storage services, the method comprising:
-
receiving a storage request at a front-end controller, the storage request comprising a request to store data on a storage device set comprising a plurality of autonomous storage devices; associating each of N data segments in a stripe pattern of the data with a respective storage device in the storage device set; and transmitting storage requests to storage devices associated with data segments of the stripe pattern, the storage requests to configure a storage device to store data of the segment, wherein transmitting comprises one of broadcasting and multicasting a storage request comprising the data to two or more of the storage devices in the storage device set, and wherein each storage device receiving the storage request stores data of the storage request pertaining to data segments associated with the storage device without storing data pertaining to data segments not associated with the storage device.
-
-
28. A method for high performance, distributed storage, the method comprising:
-
receiving a storage request at a front-end controller device; associating each of a plurality of N data segments of the storage request with respective autonomous storage devices in a storage device set; transmitting a plurality of storage requests, each to configure an autonomous storage device in the storage device set to perform a storage operation pertaining to the storage request; and storage devices in the storage device set accessing data pertaining to the storage request autonomously, independent of the front-end controller. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A method for high performance, distributed storage, the method comprising:
-
receiving a plurality of client storage requests at a front-end controller of a storage device set comprising a plurality of autonomous storage devices;
P1 determining a different redundant array of independent disks (“
RAID”
) group for each of the client storage requests, each RAID group comprising a plurality of autonomous storage devices in the storage device set;calculating a stripe pattern for a first one of the client storage requests, the stripe pattern associating each of N data segments of the first client storage request with an autonomous storage device in the RAID group determined for the first client storage request; and transmitting a plurality of storage requests to the autonomous storage devices in the RAID group of the first client storage request, each to configure an autonomous storage device to perform a storage operation according to the stripe pattern, independent of the front-end controller. - View Dependent Claims (38, 39, 40, 41)
-
-
42. A product comprising a non-transitory machine readable storage medium comprising executable code to perform operations for providing high performance, distributed storage, the operations comprising:
-
receiving a plurality of storage requests from respective clients at a front-end controller of a storage set comprising a plurality of autonomous storage devices, each storage device configured to communicate with the clients directly, independent of the front-end controller; determining a different redundant array of independent disks (“
RAID”
) group for each of the client storage requests, each RAID group comprising a plurality of autonomous storage devices in the storage device set;calculating a first stripe pattern for a first one of the client storage requests, the first stripe pattern associating data of the first client storage request with autonomous storage devices in a first RAID group determined for the first client storage request; calculating a second, different stripe pattern for a second one of the client storage requests, the second stripe pattern associating data of the second storage request with autonomous storage devices in a second RAID group determined for the second client storage request; and transmitting a plurality of storage requests to the autonomous storage devices in the first RAID group, each to configure an autonomous storage device to perform a storage operation independent of the front-end controller.
-
Specification