Erasure code data protection across multiple NVME over fabrics storage devices
A system and method for providing erasure code data protection for an array of solid state drives. The solid state drives are connected to an Ethernet switch which includes a RAID control circuit, or a state machine, to process read or write commands that may be received from a remote host. The RAID control circuit, if present, uses a low-latency cache to execute write commands, and the state machine, if present, uses a local central processing unit, which in turn uses a memory as a low-latency cache, to similar effect.
1. A system for providing protected data storage, the system comprising:
an Ethernet switch;
a plurality of Ethernet storage devices, one or more of the Ethernet storage devices being connected to the Ethernet switch;
a local central processing unit, connected to the Ethernet switch,
wherein the Ethernet switch comprises:
a media access control circuit;
a virtual local area network circuit;
a layer 2 processing circuit;
a layer 3 processing circuit; and
a RAID control circuit, the RAID control circuit being configured to control the Ethernet storage devices as a redundant array of independent disks,
wherein the RAID control circuit is connected to:
the media access control circuit;
the virtual local area network circuit;
the layer 2 processing circuit; and
the layer 3 processing circuit.
2. The system of claim 1 , further comprising a cache device connected to the RAID control circuit.
3. The system of claim 2 , wherein the RAID control circuit is configured, upon receipt of a write command comprising a write address, to:
determine whether data corresponding to the write address are stored in the cache device; and
when data corresponding to the write address are stored in the cache device, to modify the data stored in the cache device in accordance with the write command, and
when data corresponding to the write address are not stored in the cache device:
to allocate a space in the cache device,
to read data from one or more Ethernet storage devices of the plurality of Ethernet storage devices into the space, and to modify the data in the space in accordance with the write command.
4. The system of claim 2 , wherein the cache device has a latency lower than a latency of an Ethernet storage device of the plurality of Ethernet storage devices by at least a factor of 5.
5. The system of claim 2 , wherein the Ethernet switch comprises the cache device.
6. The system of claim 5 , wherein the cache device has a latency lower than a latency of an Ethernet storage device of the plurality of Ethernet storage devices by at least a factor of 5.
7. The system of claim 1 , wherein the Ethernet switch is on a single semiconductor die.
8. The system of claim 1 , wherein the local central processing unit is configured, at system initialization, to configure the Ethernet switch.
9. The system of claim 1 , wherein the Ethernet switch is configured to forward Ethernet packets, received at a host port of the system addressed to a storage Ethernet address of the system, to the RAID control circuit.
10. The system of claim 1 , wherein the Ethernet switch is configured to disregard Ethernet packets received at a host port of the system addressed to an Ethernet address of an Ethernet storage device of the plurality of Ethernet storage devices.
11. The system of claim 1 , further comprising a peripheral component interconnect express (PCIe) switch, connected to one or more of the plurality of Ethernet storage devices and to the local central processing unit.
12. The system of claim 11 , further comprising a baseboard management controller, connected to the PCIe switch.
13. A system for providing protected data storage, the system comprising:
an Ethernet switch;
a plurality of Ethernet storage devices, one or more of the Ethernet storage devices being connected to the Ethernet switch;
a local central processing unit, connected to the Ethernet switch,
wherein the Ethernet switch comprises:
a media access control circuit;
a virtual local area network circuit;
a layer 2 processing circuit;
a layer 3 processing circuit; and
a state machine,
wherein the state machine is connected to:
the media access control circuit;
the virtual local area network circuit;
the layer 2 processing circuit; and
the layer 3 processing circuit, and
wherein the state machine and the local central processing unit are configured to control the Ethernet storage devices as a redundant array of independent disks.
14. The system of claim 13 , further comprising a memory connected to the local central processing unit.
15. The system of claim 14 , wherein the state machine and the local central processing unit are configured, upon receipt of a write command comprising a write address, to:
determine whether data corresponding to the write address are stored in the memory; and
when data corresponding to the write address are stored in the memory, to modify the data stored in the memory in accordance with the write command, and
when data corresponding to the write address are not stored in the memory:
to allocate a space in the memory,
to read data from one or more Ethernet storage devices of the plurality of Ethernet storage devices into the space, and to modify the data in the space in accordance with the write command.
16. The system of claim 14 , wherein the memory has a latency lower than a latency of an Ethernet storage device of the plurality of Ethernet storage devices by at least a factor of 5.
17. The system of claim 13 , wherein the Ethernet switch is on a single semiconductor die.
18. The system of claim 13 , further comprising a peripheral component interconnect express (PCIe) switch, connected to one or more of the plurality of Ethernet storage devices and to the local central processing unit.
19. The system of claim 18 , further comprising a baseboard management controller, connected to the PCIe switch.
20. The system of claim 13 , wherein the state machine includes fewer than 200,000 gates.
21. A method for operating a storage system, the storage system comprising:
an Ethernet switch;
a plurality of Ethernet storage devices, one or more of the Ethernet storage devices being connected to the Ethernet switch;
a local central processing unit, connected to the Ethernet switch,
wherein the Ethernet switch comprises:
a media access control circuit;
a virtual local area network circuit;
a layer 2 processing circuit;
a layer 3 processing circuit; and
a RAID control circuit, the RAID control circuit being configured to control the Ethernet storage devices as a redundant array of independent disks,
wherein the RAID control circuit is connected to:
the media access control circuit;
the virtual local area network circuit;
the layer 2 processing circuit; and
the layer 3 processing circuit,
the storage system further comprising a cache device connected to the RAID control circuit,
the method comprising, upon receipt of a write command comprising a write address:
determining whether data corresponding to the write address are stored in the cache device; and
when data corresponding to the write address are stored in the cache device, modifying the data stored in the cache device in accordance with the write command, and
when data corresponding to the write address are not stored in the cache device:
allocating a space in the cache device,
reading data from one or more Ethernet storage devices of the plurality of Ethernet storage devices into the space, and modifying the data in the space in accordance with the write command.