IP Library › Granted Patent US 10,162,793
Granted Patent B1
US 10,162,793 · App. 14/869,700 · Granted Dec 25, 2018

Storage adapter device for communicating with network storage

Inventors: Nafea Bshara (San Jose, CA); Alexander Matushevsky (Haifa, IL); Georgy Machulsky (San Jose, CA); Leah Shalev (Zichron Yaakov, IL); Saar Gross (Binyamina, IL)
Assignee: Amazon Technologies, Inc.
G06F15/17331G06F12/0238G06F13/4221G06F13/4234G06F13/4282H04L67/1097H04L69/16G06F2212/7201
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 10,162,793
App. No.
14/869,700
Granted
Dec 25, 2018
Kind
B1
Abstract

Provided are systems and methods for a storage adapter device for communicating with network storage. In some implementations, the storage adapter device comprises a host interface. In these implementations, the host interface may be configured to communicate with a host device using a local bus protocol. In some implementations, the storage adapter device also includes a network interface. In these implementations, the network interface may communicate with a network using a network protocol. In some implementations, the storage adapter device may be configured to communicate with a remote storage device. In some implementations, the storage adapter device may also be configured to translate a request from the host interface from the local bus protocol to the network protocol. The storage adapter device may further be configured to transmit the translated request to the remote storage device.

Claims (60)

1. A storage adapter device comprising:

a host interface configured to communicate with a host device using a local bus protocol; and

a network interface configured to communicate with a network using a network protocol, wherein the storage adapter device is configured to use the network interface to communicate with a plurality of storage devices on the network, wherein a first set of storage devices from the plurality of storage devices is located at a first server on the network, and wherein a second set of storage devices from the plurality of storage devices is located at a second server on the network;

wherein the storage adapter device is further configured to:

receive a request using the host interface, wherein the host device configured the request to access a local storage device connected to the host device, wherein the storage adapter device presents the storage adapter device to the host device as the local storage device, wherein the request is associated with data, and wherein the request includes a local memory address of the local storage device for writing the data to or reading the data from;

determine, using an address map stored on the storage adapter device, that the request maps to a plurality of addresses in an address space of a logical disk, wherein the plurality of storage devices are presented to the network as the logical disk;

determine that a first part of the data is associated with a first set of addresses from the plurality of addresses, wherein the first set of addresses correspond to a first set of locations on the first set of storage devices;

determine that a second part of the data is associated with a second set of addresses from the plurality of addresses, wherein the second set of addresses correspond to a second set of locations on the second set of storage devices;

generate a first set of transactions including the first set of addresses, wherein the first set of transactions are formatted according to the network protocol;

generate a second set of transactions including the second set of addresses, wherein the second set of transactions are formatted according to the network protocol;

transmit the first set of transactions to the first server, wherein, when the first set of storage devices receives the first set of transactions, the first set of storage devices access the first set of locations to write the first part of the data to or read the first part of the data from; and

transmit the second set of transactions to the second server, wherein, when the second set of storage devices receive the second set of transactions, the second set of storage devices access the second set of locations to write the second part of the data to or read the second part of the data from.

2. The storage adapter device of claim 1 , wherein the storage adapter device is further configured to:

translate a response from the network interface from the network protocol to the local bus protocol; and

send the translated response to the host device.

3. The storage adapter device of claim 1 , wherein the storage adapter device is further configured to communicate with a local storage device, and wherein the storage adapter device is further configured to:

receive a second request using the host interface; and

send the second request to the local storage device.

4. The storage adapter device of claim 1 , wherein the local bus protocol is a Peripheral Component Interconnect Express (PCIe) protocol.

5. The storage adapter device of claim 4 , wherein the storage adapter device further comprises a Single Root Input/Output Virtualization (SR-IOV) interface.

6. The storage adapter device of claim 4 , wherein the host interface includes more than one Peripheral Component Interconnect (PCI) function.

7. The storage adapter device of claim 1 , wherein the local bus protocol is Non-Volatile Memory Express (NVMe).

8. The storage adapter device of claim 1 , wherein the local bus protocol includes one of Peripheral Component Interconnect Express (PCIe), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Serial Advanced Technology Attachment (SATA), or Parallel Advanced Technology Attachment (PATA).

9. The storage adapter device of claim 1 , wherein the host interface includes a bus interface module and a storage protocol driver module.

10. The storage adapter device of claim 1 , wherein the network protocol includes Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol/Internet Protocol (UDP/IP), Infiniband, Internet Small Computer System Interface (iSCSI) protocol, NVMe (Non-Volatile Memory Express) over fabric (NVMf), Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), or Storage RDMA Protocol (SRP).

11. The storage adapter device of claim 1 , wherein the storage adapter device further comprises:

a translation module, wherein generating the first set of transactions and generating the second set of transactions is conducted by the translation module.

12. The storage adapter device of claim 1 , wherein the storage adapter device further comprises:

a Remote Direct Memory Access (RDMA) module, wherein the RDMA module enables the storage adapter device to access the plurality of storage devices without producing a processor interrupt at the first server or the second server.

13. A method comprising:

receiving, at a storage adapter device, a request from a host device, wherein the host device communicates with the storage adapter device using a local bus protocol, wherein the host device configured the request to access a local storage device connected to the host device, wherein the storage adapter device presents the storage adapter device to the host device as the local storage device, wherein the request includes a local memory address of the local storage device for writing data to or reading data from, wherein the request is associated with data, wherein the storage adapter device is configured to communicate with a plurality of storage devices on a network, wherein a first set of storage devices from the plurality of storage devices is located at a first server on the network, and wherein a second set of storage devices from the plurality of storage devices is located at a second server on the network;

determining, using an address map stored on the storage adapter device, that the request maps to a plurality of addresses in an address space of a logical disk, wherein the plurality of storage devices are presented to the network as the logical disk;

determining that a first part of the data is associated with a first set of addresses from the plurality of addresses, wherein the first set of addresses correspond to a first set of locations on the first set of storage devices;

determining that a second part of the data is associated with a second set of addresses from the plurality of addresses, wherein the second set of addresses correspond to a second set of locations on the second set of storage devices;

generating a first set of transactions including the first set of addresses, wherein the first set of transactions are formatted according to a network protocol;

generating a second set of transactions including the second set of addresses, wherein the second set of transactions are formatted according to the network protocol;

transmitting the first set of transactions to the first server, wherein, when the first server receives the first set of transactions, the first set of storage devices access the first set of locations to write the first part of the data to or read the first part of the data from; and

transmit the second set of transactions to the second server, wherein, when the second set of storage devices receive the second set of transactions, the second set of storage devices access the second set of locations to write the second part of the data to or read the second part of the data from.

14. The method of claim 13 , wherein the network protocol includes Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol/Internet Protocol (UDP/IP), Infiniband, Internet Small Computer System Interface (iSCSI) protocol, NVMe (Non-Volatile Memory Express) over fabric (NVMf), Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), or Storage RDMA Protocol (SRP).

15. The method of claim 13 , wherein the local bus protocol is a Peripheral Component Interconnect Express (PCIe) protocol.

16. The method of claim 15 , wherein the storage adapter device includes a Single Root Input/Output Virtualization (SR-IOV) interface.

17. The method of claim 13 , wherein the local bus protocol is Non-Volatile Memory Express (NVMe).

18. A computing system, comprising:

a host device, wherein the host device a storage device driver that, when executed by the host device, is operable to communicate with local storage devices; and

a storage adapter device configured to communicate with the host device using a local bus protocol, wherein the storage adapter device is configured to communicate with a network using a network protocol, wherein the storage adapter device is configured to communicate with a plurality of storage devices the network, wherein a first set of storage devices from the plurality of storage devices is located at a first server on the network, and wherein a second set of storage devices from the plurality of storage devices is located at a second server on the network, and wherein the storage adapter device is configured to:

receive a request from the host device, wherein the storage device driver configured the request to access a local storage device connected to the host device, wherein the storage adapter device presents the storage adapter device to the host device as the local storage device, wherein the request is associated with data, and wherein the request includes a local memory address of the local storage device for writing the data to or reading the data from;

determine, using an address map stored on the storage adapter device, that the request maps to a plurality of addresses in an address space of a logical disk, wherein the plurality of storage devices are presented to the network as the logical disk;

determine that a first part of the data is associated with a first set of addresses from the plurality of addresses, wherein the first set of addresses correspond to a first set of locations on the first set of storage devices;

determine that a second part of the data is associated with a second set of addresses from the plurality of addresses, wherein the second set of addresses correspond to a second set of locations on the second set of storage devices;

generate a first set of transactions including the first set of addresses, wherein the first set of transactions are formatted according to the network protocol;

generate a second set of transactions including the second set of addresses, wherein the second set of transactions are formatted according to the network protocol;

transmit first set of transactions to the first server, wherein, when the first set of storage devices receives the first set of transactions, the first set of storage devices accesses the first set of locations to write the first part of the data to or read the first part of the data from; and

transmit the second set of transactions to the second server, wherein, when the second set of storage devices receive the second set of transactions, the second set of storage devices access the second set of locations to write the second part of the data to or read the second part of the data from.

19. The computing system of claim 18 , wherein the storage adapter device is further configured to:

receive a response over the network, wherein the response is received from the first server, and wherein the response includes a completion status for the first set of transactions;

translating the response from the network protocol to the local bus protocol; and

transmitting the translated response to the host device, wherein the translated response is received by the storage device driver as a local response.

20. The computing system of claim 18 , wherein the storage adapter device includes a Remote Direct Memory Access (RDMA) module, wherein the RDMA module enables the storage adapter device to access the plurality of storage devices without producing a processor interrupt at the first server or the second server.

21. The computing system of claim 18 , wherein the local bus protocol is Non-Volatile Memory Express (NVMe).

22. The computing system of claim 18 , wherein the local bus protocol includes one of Peripheral Component Interconnect Express (PCIe), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Serial Advanced Technology Attachment (SATA), or Parallel Advanced Technology Attachment (PATA), and wherein the network protocol includes one of Transmission Control Protocol/Internet Protocol (TCP/IP), User Datagram Protocol/Internet Protocol (UDP/IP), Infiniband, Internet Small Computer System Interface (iSCSI) protocol, NVMe (Non-Volatile Memory Express) over fabric (NVMf), Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), or Storage RDMA Protocol (SRP).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2016
From: BSHARA, NAFEA; MATUSHEVSKY, ALEXANDER; MACHULSKV, GEORGY; SHALEV, LEAH; GROSS, SAAR
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 040064/0595 →
Cited By (40)
US 12,189,971 US 12,192,116 US 12,204,779 US 12,229,425 US 12,229,578 US 12,242,402 US 12,265,719 US 12,267,178 US 12,271,740 US 12,299,307 US 12,299,460 US 12,301,372 US 12,314,611 US 12,333,172 US 12,335,054 US 12,335,066 US 12,355,728 US 12,360,802 US 12,367,171 US 12,373,237 US 12,393,432 US 12,399,639 US 12,405,895 US 12,418,429 US 12,422,981 US 12,423,117 US 12,423,184 US 12,430,271 US 12,443,436 US 12,476,832 US 12,481,444 US 12,541,477 US 12,541,480 US 12,547,543 US 12,556,417 US 12,561,266 US 12,561,270 US 12,606,101 US 12,699,671 US 12,705,085