IP Library › Granted Patent US 10,282,094
Granted Patent B2
US 10,282,094 · App. 15/618,081 · Granted May 7, 2019

Method for aggregated NVME-over-fabrics ESSD

Inventors: Ramdas P. Kachare (Cupertino, CA); Sompong Paul Olarig (Pleasanton, CA); Fred Worley (San Jose, CA)
Assignee: Samsung Electronics Co., Ltd.
G06F3/0605G06F3/067G06F3/0631G06F3/0632G06F3/0659G06F13/28G06F13/4022G06F13/4282G06F2213/0026
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,282,094
App. No.
15/618,081
Granted
May 7, 2019
Kind
B2
Abstract

In a method of storage aggregation for NVMe Over Fabrics devices, the method includes: identifying an aggregation group as an aggregated Ethernet SSD comprising a plurality of NVMe-oF SSDs; selecting one of the NVMe-oF SSDs of the aggregation group as a primary NVMe-oF SSD; selecting others of the NVMe-oF SSDs of the aggregation group as secondary NVMe-oF SSDs; and initializing a Map Allocation Table in the primary NVMe-oF SSD with a processor for managing the NVMe-oF SSDs.

Claims (77)

1. A method of storage aggregation for NVMe Over Fabrics devices, the method comprising:

identifying an aggregation group as an aggregated Ethernet SSD comprising a plurality of NVMe-oF SSDs;

selecting one of the NVMe-oF SSDs of the aggregation group as a primary NVMe-oF SSD;

selecting others of the NVMe-oF SSDs of the aggregation group as secondary NVMe-oF SSDs; and

initializing a Map Allocation Table in the primary NVMe-oF SSD with a processor for managing the NVMe-oF SSDs,

wherein only the primary NVMe-oF SSD is visible to a host, and

wherein a board management controller is configured to initially determine which of the NVMe-oF SSDs comprises the primary NVMe-oF SSD.

2. The method of claim 1 , wherein initializing the Map Allocation Table with the processor occurs under guidance of a storage administrator connected to the aggregation group.

3. The method of claim 1 , wherein the Map Allocation Table comprises, for each of the NVMe-oF SSDs of the aggregation group, a capacity of the NVMe-oF SSD, an address of the NVMe-oF SSD, and a remaining amount of capacity of the NVMe-oF SSD.

4. The method of claim 3 , the method further comprising providing the address of the primary NVMe-oF SSD to user applications to enable data transfer between the aggregation group and the user applications.

5. The method of claim 1 , the method further comprising:

receiving an Admin command at the primary NVMe-oF SSD from the host connected to the aggregation group;

determining whether data corresponding to the Admin command is stored on only the primary NVMe-oF SSD or on one or more of the secondary NVMe-oF SSDs;

when the data is stored on the one or more of the secondary NVMe-oF SSDs, segmenting the Admin command into one or more Admin sub-commands respectively corresponding to the one or more of the secondary NVMe-oF SSDs;

transferring the data to the host;

receiving sub-command completion entries from the one or more of the secondary NVMe-oF SSDs; and

creating and sending a completion entry from the primary NVMe-oF SSD to the host.

6. The method of claim 5 , the method further comprising:

receiving an Admin sub-command of the one or more Admin sub-commands at a corresponding secondary NVMe-oF SSD of the one or more of the secondary NVMe-oF SSDs;

determining whether to transfer the data from the corresponding secondary NVMe-oF SSD to the primary NVMe-oF SSD in accordance with the Admin sub-command;

creating a completion entry; and

sending the completion entry to the primary NVMe-oF SSD.

7. The method of claim 1 , the method further comprising:

receiving a command to create a Namespace or a command to delete a Namespace at the primary NVMe-oF SSD;

referencing the Map Allocation Table with the primary NVMe-oF SSD;

allocating capacity in the primary NVMe-oF SSD and/or in one or more of the secondary NVMe-oF SSDs when the command is to create the Namespace, or retrieving a corresponding one of the primary NVMe-oF SSD and/or the one or more of the secondary NVMe-oF SSDs wen the command is to delete the Namespace; and

updating the Map Allocation Table.

8. The method of claim 1 , the method further comprising:

receiving a Read/Write command at the primary NVMe-oF SSD;

looking up the Map Allocation Table with the primary NVMe-oF SSD;

creating one or more Read/Write sub-commands;

sending the one or more Read/Write sub-commands to one or more of the secondary NVMe-oF SSDs, respectively;

transferring data between the host and the primary NVMe-oF SSD and/or the one or more of the secondary NVMe-oF SSDs in accordance with the Read/Write command; and

sending a completion to the host following transfer of the data.

9. The method of claim 8 , the method further comprising:

receiving a Read/Write sub-command of the one or more Read/Write sub-commands at a corresponding secondary NVMe-oF SSD of the one or more secondary NVMe-oF SSDs;

extracting transport information corresponding to the Read/Write sub-command;

issuing a Read/Write request from the corresponding secondary NVMe-oF SSD to the host; and

sending a completion entry to the primary NVMe-oF SSD following completion of a data transfer corresponding to the Read/Write sub-command.

10. A method of NVMe-oF SSD capacity aggregation in a group of NVMe-oF Ethernet SSDs, the method comprising:

identifying a plurality of NVMe-oF SSDs of an aggregation group;

assigning one of the NVMe-oF SSDs as a primary NVMe-oF SSD; and

assigning remaining ones of the NVMe-oF SSDs as secondary NVMe-oF SSDs,

wherein the only NVMe-oF SSD that is visible to a host driver of a host is the primary NVMe-oF SSD,

wherein only the primary NVMe-oF SSD is visible to the host, and

wherein a board management controller is configured to initially determine which of the NVMe-oF SSDs comprises the primary NVMe-oF SSD.

11. The method of claim 10 , the method further comprising maintaining a Map Allocation Table with the primary NVMe-oF SSD in accordance with commands received by the primary NVMe-oF SSD from the host,

wherein the Map Allocation Table indicates a logical block address (LBA) space divided among the primary NVMe-oF SSD and one or more of the secondary NVMe-oF SSDs of the aggregation group.

12. The method of claim 11 , the method further comprising initializing a Map Allocation Table with a processor to configure the aggregation group in accordance with assigning one of the NVMe-oF SSDs as the primary NVMe-oF SSD.

13. The method of claim 10 , the method further comprising aggregating capacities of the secondary NVMe-oF SSDs with the primary NVMe-oF SSD in accordance with a command received by the primary NVMe-oF SSD from the host such that the plurality of NVMe-oF SSDs of the aggregation group appear to the host as a single, aggregated logical capacity.

14. The method of claim 10 , the method further comprising:

using the primary NVMe-oF SSD to allocate capacity to one or more of the secondary NVMe-oF SSDs; and

using the primary NVMe-oF SSD to record the allocated capacity and associated mapped logical block address (LBA) ranges in a Map Allocation Table.

15. The method of claim 10 , the method further comprising overprovisioning aggregated capacity of the secondary NVMe-oF SSDs and the primary NVMe-oF SSD with the primary NVMe-oF SSD.

16. The method of claim 10 , the method further comprising:

receiving a command from the host at the primary NVMe-oF SSD;

dividing the command into a plurality of sub-commands each corresponding to a respective one of corresponding ones of the secondary NVMe-oF SSDs; and

sending the sub-commands from the primary NVMe-oF SSD to the corresponding ones of the secondary NVMe-oF SSDs.

17. The method of claim 16 , the method further comprising directly transferring data from the corresponding ones of the secondary NVMe-oF SSDs to the host based on the respective sub-commands.

18. The method of claim 16 , the method further comprising:

receiving the respective sub-commands at the corresponding ones of the secondary NVMe-oF SSDs from the primary NVMe-oF SSD;

performing a task corresponding to the respective sub-commands; and

sending respective sub-command completion entries from the corresponding ones of the secondary NVMe-oF SSDs to the primary NVMe-oF SSD upon completion of the task.

19. The method of claim 18 , the method further comprising:

using the primary NVMe-oF SSD to maintain a sub-command context table;

receiving the sub-command completion entries at the primary NVMe-oF SSD from the secondary NVMe-oF SSDs; and

tracking execution of the sub-commands with the primary NVMe-oF SSD in accordance with the received sub-command completion entries.

20. An aggregated Ethernet SSD group comprising:

an Ethernet SSD chassis;

an Ethernet switch on the Ethernet SSD chassis for enabling communication with a host driver of a host;

a processor coupled to the Ethernet switch;

a PCIe switch coupled to a board management controller;

a plurality of NVMe-oF SSDs comprising:

a primary NVMe-oF SSD; and

a plurality of secondary NVMe-oF SSDs connected to the primary NVMe-oF SSD via a private communication channel comprising the Ethernet switch and the PCIe switch,

wherein only the primary NVMe-oF SSD is visible to the host, and

wherein the board management controller is configured to initially determine which of the NVMe-oF SSDs comprises the primary NVMe-oF SSD.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2017
From: KACHARE, RAMDAS P.; OLARIG, SOMPONG PAUL; WORLEY, FRED
To: SAMSUNG ELECTRONICS CO., LTD
Reel/Frame 042732/0396 →
Continuity (3)
Provisional Application 62480113 · Mar 31, 2017
Provisional Application 62483913 · Apr 10, 2017
Related Publication 20180284990A1 · Oct 4, 2018
Cited By (3)
US 12,204,503 US 12,216,910 US 12,298,827