Methods for accelerating storage operations using computational network and storage components and devices thereof
Abstract
Methods, non-transitory machine readable media, and computing devices that accelerate storage operations are disclosed. With this technology, computational storage devices are assigned by a NIC processor of a computational network interface controller (NIC) to storage locations corresponding to respective partitions of an n-dimensional space. One of the storage locations to which a data location in the n-dimensional space maps is then identified by the NIC processor. The data location is determined based on a hash for data associated with a received storage operation. The NIC processor subsequently communicates via a system bus with a storage processor of one of the computational storage device to service the storage operation. The storage processor is coupled directly to flash media of the one of the computational storage device that is assigned to the one of the storage locations and maintains a key/value store comprising the data.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A method, comprising:
identifying, by a storage processor of a computing device that is separate from a central processing unit (CPU) of the computing device, one of a plurality of seed values in a node seed list that is assigned to a failed one of a plurality of storage devices hosted by the computing device, wherein the seed values are used to partition a first n-dimensional space into a first plurality of partitions and the one of the seed values represents a point within one of the first partitions, wherein the storage processor is coupled to flash media of a first one of the storage devices; determining, by the storage processor, that coordinates for a fragment of an object fall within the one of the first partitions, wherein the coordinates are generated based on a fragment-similarity hash retrieved from a stored object manifest for the object; identifying, by the storage processor, one of a plurality of protection fragments associated with the object fragment based on a match of the fragment-similarity hash with a copy of the fragment-similarity hash in the one of the protection fragments, wherein the one of the protection fragments is stored on the first one of the storage devices; and rebuilding, by the storage processor, the object fragment using the one of the protection fragments and storing, by the storage processor, the rebuilt object fragment on a surviving one of the storage devices.
2 . The method of claim 1 , further comprising generating, by the storage processor, a second n-dimensional space comprising a second plurality of partitions based on an updated node seed list resulting from removal of the one of the seed values from the node seed list.
3 . The method of claim 1 , further comprising receiving, by the storage processor, another fragment for the object via a system bus of the computing device and from a network interface controller (NIC) processor of the computing device that is coupled to a NIC of the computing device and is separate from the CPU.
4 . The method of claim 1 , wherein the first n-dimensional partition comprises a Voronoi tessellation and the method further comprises receiving, by the storage processor, the node seed list from a network interface controller (NIC) processor of the computing device.
5 . The method of claim 1 , wherein the node seed list comprises a correspondence of each of the seed values with a unique identifier for an associated one of the storage devices and the method further comprises generating, by the storage processor, a second n-dimensional space comprising a second plurality of partitions based on an updated node seed list.
6 . The method of claim 5 , further comprising migrating, by the storage processor, the object fragment to a second one of the storage devices upon determining the coordinates fall within one of the second partitions associated with a seed value of the updated node seed list assigned to the second one of the storage devices.
7 . The method of claim 1 , further comprising merging, by the storage processor, a first list of lost object fragments with a second list of lost object fragments received from another storage processor of the computing device that is separate from the CPU and coupled to other flash media of a second one of the storage devices, wherein the first list of lost object fragments comprises a key for the object and a fragment value hash for the object fragment.
8 . A non-transitory machine readable medium having stored thereon instructions comprising executable code that, when executed by a storage processor of a computing device that is separate from a central processing unit (CPU) of the computing device, causes the storage processor to:
identify one of a plurality of seed values in a node seed list that is assigned to a failed one of a plurality of storage devices hosted by the computing device, wherein the seed values are used to partition a first n-dimensional space into a first plurality of partitions and the one of the seed values represents a point within one of the first partitions, wherein the storage processor is coupled to flash media of a first one of the storage devices; determine that coordinates for a fragment of an object fall within the one of the first partitions, wherein the coordinates are generated based on a fragment-similarity hash retrieved from a stored object manifest for the object; identify one of a plurality of protection fragments associated with the object fragment based on a match of the fragment-similarity hash with a copy of the fragment-similarity hash in the one of the protection fragments, wherein the one of the protection fragments is stored on the first one of the storage devices; and rebuild the object fragment using the one of the protection fragments and store the rebuilt object fragment on the failed one of the storage devices upon determining the failed one of the storage device is available after a reboot.
9 . The non-transitory machine readable medium of claim 8 , wherein the executable code, when executed by the storage processor, further causes the storage processor to receive another fragment for the object via a system bus of the computing device and from a network interface controller (NIC) processor of the computing device that is coupled to a NIC of the computing device and is separate from the CPU.
10 . The non-transitory machine readable medium of claim 8 , wherein the first n-dimensional partition comprises a Voronoi tessellation and the executable code, when executed by the storage processor, further causes the storage processor to receive the node seed list from a network interface controller (NIC) processor of the computing device.
11 . The non-transitory machine readable medium of claim 8 , wherein the node seed list comprises a correspondence of each of the seed values with a unique identifier for an associated one of the storage devices and the executable code, when executed by the storage processor, further causes the storage processor to generate a second n-dimensional space comprising a second plurality of partitions based on an updated node seed list.
12 . The non-transitory machine readable medium of claim 11 , wherein the executable code, when executed by the storage processor, further causes the storage processor to migrate the object fragment to a second one of the storage devices upon determining the coordinates fall within one of the second partitions associated with a seed value of the updated node seed list assigned to the second one of the storage devices.
13 . The non-transitory machine readable medium of claim 8 , wherein the executable code, when executed by the storage processor, further causes the storage processor to merge a first list of lost object fragments with a second list of lost object fragments received from another storage processor of the computing device that is separate from the CPU and coupled to other flash media of a second one of the storage devices, wherein the first list of lost object fragments comprises a key for the object and a fragment value hash for the object fragment.
14 . A computing device, comprising:
a memory containing machine readable media comprising executable code having stored thereon instructions; a central processing unit (CPU) coupled to a system bus; and a plurality of storage devices, wherein at least one a first one of the storage devices comprises a storage processor coupled to flash media, separate from the CPU, and configured to execute the stored instructions to:
identify one of a plurality of seed values in a node seed list that is assigned to a failed one of the storage devices, wherein the seed values are used to partition a first n-dimensional space into a first plurality of partitions and the one of the seed values represents a point within one of the first partitions;
determine that coordinates for a fragment of an object fall within the one of the first partitions, wherein the coordinates are generated based on a fragment-similarity hash retrieved from a stored object manifest for the object;
identify one of a plurality of protection fragments associated with the object fragment based on a match of the fragment-similarity hash with a copy of the fragment-similarity hash in the one of the protection fragments, wherein the one of the protection fragments is stored on the first one of the storage devices; and
rebuild the object fragment using the one of the protection fragments and store the rebuilt object fragment on the first one of the storage devices.
15 . The computing device of claim 14 , wherein the storage processor is further configured to execute the stored instructions to generate a second n-dimensional space comprising a second plurality of partitions based on an updated node seed list resulting from removal of the one of the seed values from the node seed list.
16 . The computing device of claim 15 , wherein the storage processor is further configured to execute the stored instructions to migrate the object fragment to a second one of the storage devices upon determining the coordinates fall within one of the second partitions associated with a seed value of the updated node seed list assigned to the second one of the storage devices.
17 . The computing device of claim 14 , wherein the storage processor is further configured to execute the stored instructions to receive another fragment for the object via the system bus and from a network interface controller (NIC) processor of the computing device that is coupled to a NIC of the computing device and is separate from the CPU.
18 . The computing device of claim 14 , wherein the first n-dimensional partition comprises a Voronoi tessellation and the storage processor is further configured to execute the stored instructions to receive the node seed list from a network interface controller (NIC) processor of the computing device.
19 . The computing device of claim 14 , wherein the node seed list comprises a correspondence of each of the seed values with a unique identifier for an associated one of the storage devices.
20 . The computing device of claim 14 , wherein the storage processor is further configured to execute the stored instructions to merge a first list of lost object fragments with a second list of lost object fragments received from another storage processor of the computing device that is separate from the CPU and coupled to other flash media of a second one of the storage devices, wherein the first list of lost object fragments comprises a key for the object and a fragment value hash for the object fragment.Join the waitlist — get patent alerts
Track US2022374173A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.