APPARATUS, SYSTEM, AND METHOD FOR REMOTE DIRECT MEMORY ACCESS TO A SOLID-STATE STORAGE DEVICE
An apparatus, system, and method are disclosed for sharing a device between multiple hosts. The apparatus, system, and method include an RDMA setup module and an RDMA execution module. The RDMA setup module prepares a solid-state storage controller for an RDMA operation to transfer data of a file or of an object between the solid-state storage controller and a requesting device in response to a storage request. The storage request may be substantially free of the data, and the solid-state storage controller may control a solid-state storage via a storage input/output (“I/O”) bus. The solid-state controller controls storage of data in the solid-state storage, and the requesting device is connected to the solid-state controller through a computer network. The RDMA execution module executes the RDMA operation to transfer the data between the requesting device and the solid-state storage controller.
1 . An apparatus for remote direct memory access (“rdma”) to a solid-state storage:
device, the apparatus comprising:
an RDMA setup module that prepares a solid-state storage controller for an RDMA operation to transfer data of a file or of an object between the solid-state storage controller and a requesting device in response to a storage request, the storage request being substantially free of the data, the solid-state storage controller controlling a solid-state storage via a storage input/output (“I/O”) bus, the solid-state controller controlling storage of data in the solid-state storage, the requesting device connected to the solid-state controller through a computer network; and
an RDMA execution module that executes the RDMA operation to transfer the data between the requesting device and the solid-state storage controller.
2 . The apparatus of claim 1 , wherein the RDMA execution module executes the RDMA operation using native RDMA.
3 . The apparatus of claim 1 , wherein when the storage request comprises a write request the RDMA operation receives the data directly from memory in the requesting device and wherein when the storage request comprises a read request the RDMA operation transmits the data directly to memory in the requesting device.
4 . The apparatus of claim 3 , wherein for a storage request comprising a write request, the RDMA execution module pulls the data from the memory of the requesting device, and for a storage request comprising a read request the RDMA execution module pushes data to the memory of the requesting device.
5 . The apparatus of claim 1 , wherein the solid-state storage controller manages one or more objects stored in the solid-state storage wherein the managed objects appear to the requesting device as objects in one of an object file system and an object file server.
6 . The apparatus of claim 1 , wherein the solid-state storage controller receiving the storage request comprises a first controller in a group of solid-state storage controllers, the first controller in communication with the other solid-state storage controllers, and further comprising a distributed storage module that associates a data segment of the data with each solid-state storage controller of the group and transmits a storage sub-request to each of the solid-state controllers in the group, each storage sub-request comprising information for the receiving solid-state controller to transfer an associated data segment in a RDMA operation between the solid-state controller receiving the storage sub-request and memory of the requesting device.
7 . The apparatus of claim 6 , wherein the first controller comprises a redundant array of independent drives (“RAID”) controller and the distributed storage module further comprises a RAID module that generates a stripe pattern for the data and divides the data into N data segments per stripe consistent with a RAID level and generates a parity data segment for each stripe from the N data segments of the stripe.
8 . The apparatus of claim 1 , wherein the solid-state storage comprises an array of non-volatile, solid-state data storage elements divided into two or more banks.
9 . The apparatus of claim 8 , wherein the solid-state storage and solid-state storage controller are part of a solid-state storage device configured in a dual-inline memory module (“DIMM”).
10 . The apparatus of claim 8 , wherein the solid-state storage comprises flash memory.
11 . The apparatus of claim 1 , wherein the solid-state storage managed by the solid-state storage controller further acts as a cache for a data storage device, the data storage device comprising one or more of a solid-state storage, a hard disk drive, an optical drive, and a tape storage.
12 . The apparatus of claim 11 , wherein the data storage device is one of connected to the solid-state storage controller and integrated with the solid-state storage controller and the solid-state storage.
13 . The apparatus of claim 1 , further comprising a system bus connection that connects to a system bus connected to a host.
14 . The apparatus of claim 13 , wherein the system bus comprises one or more of a peripheral component interconnect express (“PCI-e”) bus, a Serial Advanced Technology Attachment (“serial ATA”) bus, an Ethernet bus, a universal serial bus (“USB”), and an Institute of Electrical and Electronics Engineers (“IEEE”) 1394 bus.
15 . An system for remote direct memory access (“RDMA”) to a solid-state storage device, the system comprising:
a solid-state storage device comprising a solid-state storage controller and a solid-state storage, the storage request being substantially free of the data, the solid-state storage controller controlling a solid-state storage via a storage input/output (“I/O”) bus, the solid-state controller controlling storage of data in the solid-state storage;
an RDMA setup module that prepares the solid-state storage controller for an RDMA operation to transfer data of a file or of an object between the solid-state storage controller and a requesting device in response to a storage request, the requesting device connected to the solid-state storage device through a computer network, the storage request being substantially free of the data; and
an RDMA execution module that executes the RDMA operation to transfer the data between the requesting device and the solid-state storage controller.
16 . The system of claim 15 , further comprising a network interface collocated with the solid-state storage device connected to the solid-state storage controller and to a computer network.
17 . A computer program product comprising a computer readable medium having computer usable program code executable to perform operations for remote direct memory access (“RDMA”) to a solid-state storage device, the operations of the computer program product comprising:
preparing a solid-state storage controller for an RDMA operation to transfer data of a file or of an object between the solid-state storage controller and a requesting device in response to a storage request, the storage request being substantially free of the data, the solid-state storage controller controlling a solid-state storage via a storage input/output (“I/O”) bus, the solid-state controller controlling storage of data in the solid-state storage, the requesting device connected to the solid-state controller through a computer network; and
executing the RDMA operation to transfer the data between the requesting device and the solid-state storage controller.