IP Library Granted Patent US 12,079,521
Granted Patent B2
US 12,079,521 · App. 18/174,487 · Granted Sep 3, 2024

Direct memory access data path for RAID storage

Inventors: Guo-Fu Tseng (New Taipei, TW); Tsung-Lin Yu (Luodong, TW); Cheng-Yue Chang (New Taipei, TW)
Assignee: GRAID Technology Inc.
G06F3/0689G06F3/0619G06F3/0659G06F11/1076G06F15/17331
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 12,079,521
App. No.
18/174,487
Granted
Sep 3, 2024
Kind
B2
Abstract

Direct memory access data path for RAID storage is disclosed, including: receiving, at a Redundant Array of Independent Disks (RAID) controller, a request to write data to be distributed among a plurality of storage devices; computing parity information based at least in part on the data associated with the request; causing the parity information to be stored on a first subset of the plurality of storage devices; and causing the data associated with the request to be stored on a second subset of the plurality of storage devices, wherein the plurality of storage devices is configured to obtain the data associated with the request directly from a memory that is remote to the RAID controller, and wherein the data associated with the request does not pass through the RAID controller.

Claims (55)

1. A system, comprising;

a plurality of storage devices; and

a Redundant Array of Independent Disks (RAID) controller configured to:

receive a request to read data distributed among the plurality of storage devices;

identify a first subset of the plurality of storage devices to which data associated with the request was written based at least in part on a RAID mode implemented by the RAID controller;

cause the first subset of the plurality of storage devices to:

locally read the data associated with the request from the first subset of the plurality of storage devices; and

directly write the read data associated with the request to a memory that is remote to the RAID controller;

determine that a storage device in the first subset of the plurality of storage devices has become unavailable based on;

sending a read command to the storage device in the first subset of the plurality of storage devices, wherein the read command includes a respective designated location at the memory that is remote to the RAID controller at which the storage device is to write read data, wherein the respective designated location was prescribed within the request to read data that was received by the RAID controller; and

capturing a direct memory access (DMA) error from polling a completion queue associated with the storage device;

identify a second subset of the plurality of storage devices to which parity information was written based at least in part on the RAID mode; and

cause the second subset of the plurality of storage devices to:

locally read the parity information; and

directly write the parity information to the memory that is remote to the RAID controller.

2. The system of claim 1 , wherein the RAID controller is implemented using a graphics processing unit (GPU).

3. The system of claim 1 , wherein the request is received from a central processing unit (CPU) associated with a host and where the memory that is remote to the RAID controller is a host memory associated with the CPU.

4. The system of claim 1 , wherein to cause the first subset of the plurality of storage devices to directly write the data associated with the request to the memory that is remote to the RAID controller comprises to send read commands to the first subset of the plurality of storage devices.

5. The system of claim 1 , wherein to directly write the read data associated with the request to the memory that is remote to the RAID controller comprises to use direct memory (DMA) to write the read data at the respective designated location at the memory that is determined from the request.

6. The system of claim 1 , wherein the RAID controller is further configured to:

read the parity information and the read data associated with the request from the memory that is remote to the RAID controller;

generate reconstructed data based on the parity information and the read data associated with the request; and

write the reconstructed data to the memory that is remote to the RAID controller.

7. The system of claim 1 , wherein the request comprises a first request, and further comprising:

an RDMA network interface card (RNIC) configured to:

receive a second request, from a remote host, to read data from the plurality of storage devices;

send the second request to the RAID controller, wherein in response to the second request, the RAID controller is further configured to send commands to a third subset of the plurality of storage devices to cause the third subset of the plurality of storage devices to copy data associated with the second request to their local controller memory buffers (CMBs);

directly access the third subset of the plurality of storage devices to read the data associated with the second request; and

send the data associated with the second request to the remote host.

8. A method, comprising;

receiving, at a Redundant Array of Independent Disks (RAID) controller, a request to read data distributed among a plurality of storage devices;

identifying a first subset of the plurality of storage devices to which data associated with the request was written based at least in part on a RAID mode implemented by the RAID controller;

causing the first subset of the plurality of storage devices to:

locally read the data associated with the request from the first subset of the plurality of storage devices; and

directly write the read data associated with the request to a memory that is remote to the RAID controller;

determining that a storage device in the first subset of the plurality of storage devices has become unavailable based on;

sending a read command to the storage device in the first subset of the plurality of storage devices, wherein the read command includes a respective designated location at the memory that is remote to the RAID controller at which the storage device is to write read data, wherein the respective designated location was prescribed within the request to read data that was received by the RAID controller; and

capturing a direct memory access (DMA) error from polling a completion queue associated with the storage device;

identifying a second subset of the plurality of storage devices to which parity information was written based at least in part on the RAID mode; and

causing the second subset of the plurality of storage devices to:

locally read the parity information; and

directly write the parity information to the memory that is remote to the RAID controller.

9. The method of claim 8 , wherein the RAID controller is implemented using a graphics processing unit (GPU).

10. The method of claim 8 , wherein the request is received from a central processing unit (CPU) associated with a host and where the memory that is remote to the RAID controller is a host memory associated with the CPU.

11. The method of claim 8 , wherein causing the first subset of the plurality of storage devices to directly write the data associated with the request to the memory that is remote to the RAID controller comprises sending read commands to the first subset of the plurality of storage devices.

12. The method of claim 8 , wherein to directly write the read data associated with the request to the memory that is remote to the RAID controller comprises to use direct memory (DMA) to write the read data at the respective designated location at the memory that is determined from the request.

13. The method of claim 8 , further comprising:

reading the parity information and the read data associated with the request from the memory that is remote to the RAID controller;

generating reconstructed data based on the parity information and the read data associated with the request; and

writing the reconstructed data to the memory that is remote to the RAID controller.

14. The method of claim 8 , wherein the request comprises a first request, and further comprising:

receiving, at an RDMA network interface card (RNIC), a second request, from a remote host, to read data from the plurality of storage devices;

sending, from the RNIC, the second request to the RAID controller, wherein in response to the second request, the RAID controller is further configured to send commands to a third subset of the plurality of storage devices to cause the third subset of the plurality of storage devices to copy data associated with the second request to their local controller memory buffers (CMBs);

directly accessing, by the RNIC, the third subset of the plurality of storage devices to read the data associated with the second request; and

sending, from the RNIC, the data associated with the second request to the remote host.

Continuity (2)
Continuation 17486643 · Sep 27, 2021
Related Publication 20230221899A1 · Jul 13, 2023