IP Library Granted Patent US 8,214,591
Granted Patent B2
US 8,214,591 · App. 13/204,436 · Granted Jul 3, 2012

Apparatus, system, and method for a front-end, distributed raid

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,214,591
App. No.
13/204,436
Granted
Jul 3, 2012
Kind
B2
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.

Claims (44)

1. A method for providing high performance, distributed storage, comprising:

receiving a storage request at an autonomous storage device in a storage device set comprising a plurality of storage devices, the storage request identifying one or more data segments of a data stripe pattern assigned to the storage device by a front-end controller; and

the autonomous storage device communicating the identified data segments with a storage client independently of the front-end controller.

2. The method of claim 1 , wherein the autonomous storage device communicates data directly with the storage client by way of one of a bus, direct memory access, remote direct memory access, network broadcast, network multicast, network anycast, and network unicast.

3. The method of claim 1 , wherein the identified data segments comprise parity data of the data stripe pattern.

4. The method of claim 1 , wherein the storage device set comprises a redundant array of independent disks (“RAID”) group, the method further comprising:

maintaining indicators of the storage devices in the RAID group on the autonomous storage device; and

reconstructing the RAID group using the indicators of the autonomous storage device.

5. The method of claim 1 , further comprising:

receiving a second, different storage request at the autonomous storage device pertaining to a client storage request that is independent of the storage device set; and

storing data of the second storage request on the autonomous storage device with the identified data segments.

6. The method of claim 1 , further comprising:

receiving a second storage request at the autonomous storage device referencing a second storage device set comprising a different plurality of storage devices, wherein the second storage request identifies one or more second data segments of a second data stripe pattern assigned to the storage device by the front-end controller; and

the autonomous storage device transferring the second identified data segments with a storage client independently of the front-end controller.

7. The method of claim 1 , further comprising:

storing the identified data segments sequentially by order of processing on a solid-state storage media of the autonomous storage device;

marking storage divisions of the solid-state storage media with respective sequence indicators; and

reconstructing an index of data stored on the autonomous storage device based on the sequence indicators.

8. The method of claim 1 , wherein the autonomous storage device comprises a plurality of solid-state storage elements, each solid-state storage element comprising a plurality of storage divisions, the method further comprising storing the identified data segments on two or more of the solid-state storage elements in parallel.

9. The method of claim 1 , further comprising:

including data of the identified data segments in an error-correcting code (ECC) block that comprises an error-correcting code configured to correct an error in the ECC block; and

storing a first portion of the ECC block on a first one of a plurality of solid-state storage elements; and

storing a second portion of the ECC block on a second one of the plurality of solid-state storage elements.

10. An autonomous storage device in storage device set comprising a plurality of storage devices, the autonomous storage device comprising:

a storage request receiver configured to receive a storage request identifying one or more data segments of a data stripe pattern assigned to the autonomous storage device by a front-end controller; and

a storage controller configured to communicate the identified data segments with a storage client independent of the front-end controller.

11. The autonomous storage device of claim 10 , wherein the autonomous storage device communicates data directly with the storage client by way of one of a bus, direct memory access, remote direct memory access, network broadcast, network multicast, network anycast, and network unicast.

12. The autonomous storage device of claim 10 , wherein the identified data segments comprise parity data of the data stripe pattern.

13. The autonomous storage device of claim 10 , wherein the storage device set comprises a redundant array of independent disks (“RAID”) group, and wherein the autonomous storage device maintains indicators of storage devices in the RAID group and is configured to reconstruct the RAID group using the indicators.

14. The autonomous storage device of claim 10 , further comprising a sequential storage module to store the identified data segments on a non-volatile storage media with data that does not pertain to the storage device set.

15. The autonomous storage device of claim 10 , further comprising a sequential storage module to mark storage divisions of a non-volatile storage media of the autonomous storage device with respective sequence indicators to indicate an order of storage operations performed on the autonomous storage device.

16. The autonomous storage device of claim 10 , further comprising:

a plurality of solid-state storage elements, each solid-state storage element comprising a plurality of storage divisions; and

a sequential storage module configured to store the identified data segments on two or more of the solid-state storage elements in parallel.

17. The autonomous storage device of claim 10 , further comprising:

an ECC generator to generate an error-correcting code (ECC) block comprising data of the identified data segments and an error-correcting code; and

a sequential storage module configured to store a first portion of the ECC block on a first one of a plurality of solid-state storage elements and a second portion of the ECC block on a second one of the plurality of solid-state storage elements.

18. A storage system, comprising:

a front-end controller; and

a plurality of autonomous storage devices in a storage device set, each autonomous storage device comprising:

a storage request receiver to receive a storage request identifying one or more data segments of a data stripe pattern that are assigned to the autonomous storage device by a front-end controller, and

a storage controller configured to communicate the identified data segments assigned to the respective autonomous storage device with a storage client independent of the front-end controller.

19. The storage system of claim 18 , wherein the front-end controller operates on one of the autonomous storage devices in the storage device set.

20. The storage system of claim 18 , wherein each of the autonomous storage devices in the storage device set communicate data directly with the storage client in response to a storage request from the front-end controller by way of one of a bus, direct memory access, remote direct memory access, network broadcast, network multicast, network anycast, and network unicast.

Assignments (12)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2011
From: FLYNN, DAVID; STRASSER, JOHN; THATCHER, JONATHAN; ZAPPE, MICHAEL
To: FUSION-IO, INC.
Reel/Frame 026710/0959 →