Method and system for enhancing a distributed storage system by decoupling computation and network tasks

Information

  • Patent Grant
  • 11379127
  • Patent Number
    11,379,127
  • Date Filed
    Monday, November 2, 2020
    4 years ago
  • Date Issued
    Tuesday, July 5, 2022
    2 years ago
Abstract
One embodiment provides a computer system. The computer system comprises: a plurality of storage devices; and a first component functioning both as a network interface card and as an access switch, wherein the first component is configured to manage connections to the plurality of storage devices. A respective storage device comprises: an Ethernet port coupled to the first component; at least one microprocessor; a plurality of PCIe lanes; and a plurality of storage drives with non-volatile memory.
Description
BACKGROUND
Field

This disclosure is generally related to the field of data storage. More specifically, this disclosure is related to a method and system for enhancing a distributed storage system by decoupling computation and network tasks.


Related Art

The proliferation of the Internet and e-commerce continues to create a vast amount of digital content. Various distributed storage systems have been created to access and store such digital content. In general, a distributed storage system can include computing entities/operations and storage entities/operations. The computing and storage functionality can be separated via a disaggregation or separation of the storage computation. For example, a storage node in a storage cluster of a distributed storage system can be designed to work with entities such as a multi-core powerful central processing unit (CPU), a high-capacity drive, and a high-throughput network. However, as each of these three entities experiences improvement and growth, the issue of synchronization among and between these three entities remains a challenge. For example, there may exist a disorder or mismatch between the evolution and deployment of these three entities in a distributed storage system, which can result in inconsistent behavior and performance in the distributed storage system.


SUMMARY

One embodiment provides a computer system. The computer system comprises: a plurality of storage devices; and a first component configured to manage connections to the plurality of storage devices. A respective storage device comprises: a port coupled to the first component; at least one microprocessor; and a plurality of storage drives with non-volatile memory.


In some embodiments, the computer system further comprises a computing device which includes the first component, a central processing unit, and a volatile memory.


In some embodiments, the computing device comprises a single integrated circuit.


In some embodiments, the central processing unit of the computing device is configured to perform one or more of: managing meta-data; placing data; scrubbing, refreshing, or deleting data; communicating with other computing devices via the first component; and handling multiple replicas of data.


In some embodiments, the computing device is configured to: receive a request to write data to a non-volatile memory of the computer system; and transmit the data, via the first component, to a selected storage device. The selected storage device is configured to write the data to a non-volatile memory of a first storage drive of the selected storage device.


In some embodiments, the computing device is further configured to: perform general computation tasks associated with the computer system; process, by the first component, the data to obtain processed data; and transmit the processed data, by the computing device via the first component, to the selected storage device. In writing the data to the non-volatile memory of the first storage drive of the selected storage device, the selected storage device is further configured to: determine, by a flash translation layer module of the selected storage device, the first storage drive of the selected storage device to which to write the processed data; perform, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data; and write, by the controller of the first storage drive, the further processed data to the non-volatile memory of the first storage drive.


In some embodiments, the computer system further comprises a second component functioning as the network interface card, the access switch, and a central processing unit.


In some embodiments, the first component is further configured to: process data, including operations relating to a cyclic redundancy check, a hash function, and encryption; handle network communication; and handle communication between a pod switch and the plurality of storage devices.


In some embodiments, the first component functions both as a network interface card and as an access switch, the port comprises an Ethernet port, and the respective storage device further comprises a plurality of PCIe lanes via which to access the plurality of storage drives. The at least one microprocessor and the PCIe lanes comprise a storage system on chip (SoC) component of the respective storage drive. The storage SoC component is configured to: manage the plurality of storage drives; and perform operations relating to a file system and a flash translation layer module associated with the storage drives.


In some embodiments, a controller of a respective storage drive is configured to perform one or more of: erasure coding; compression; sorting; and filtering.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 illustrates an exemplary environment for facilitating data access in a computer system, in accordance with the prior art.



FIG. 2A illustrates an exemplary environment for facilitating data access in a computer system, in accordance with an embodiment of the present application.



FIG. 2B illustrates an exemplary environment for facilitating data access in a computer system, in accordance with an embodiment of the present application.



FIG. 3A illustrates an exemplary network topology for facilitating data access in a computer system, in accordance with an embodiment of the present application.



FIG. 3B illustrates an exemplary environment for facilitating data access in a computer system, including the addition of bricks coupled to a FrontTop device, in accordance with an embodiment of the present application.



FIG. 4 illustrates an exemplary task assignment in a computer system, in accordance with an embodiment of the present application.



FIG. 5 illustrates an exemplary converged SoC design for a FrontTop device, in accordance with an embodiment of the present application.



FIG. 6A presents a flowchart illustrating a method for facilitating data access in a computer system, in accordance with an embodiment of the present application.



FIG. 6B presents a flowchart illustrating a method for facilitating data access in a computer system, in accordance with an embodiment of the present application.



FIG. 7 illustrates an exemplary computer system and storage device that facilitates data access, in accordance with an embodiment of the present application.



FIG. 8 illustrates an exemplary apparatus that facilitates data access, in accordance with an embodiment of the present application.





In the figures, like reference numerals refer to the same figure elements.


DETAILED DESCRIPTION

The following description is presented to enable any person skilled in the art to make and use the embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present disclosure. Thus, the embodiments described herein are not limited to the embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.


Overview


The embodiments described herein solve the challenges of performance mismatch between and among the CPU, the storage drive, and networking in a distributed storage system, by providing a system which decouples the computing, capacity, and bandwidth in a storage server. The system can provide the flexibility necessary for a scalable and module distributed system with reduced constraints.


As described above, a distributed storage system can include computing entities/operations and storage entities/operations. The computing and storage functionality can be separated via a disaggregation or separation of the storage computation. For example, a storage node in a storage cluster of a distributed storage system can be designed to work with entities such as a multi-core powerful CPU, a high-capacity drive, and a high-throughput network. However, as each of these three entities has experiences improvement and growth, the issue of synchronization among and between these three entities remains a challenge. For example, there may exist a disorder or mismatch between the evolution and deployment of these three entities in a distributed storage system, which can result in inconsistent behavior and performance in the distributed storage system.


Furthermore, existing distributed storage systems may also suffer from the following constraints. First, the process of adding more storage drives to a storage node is limited by the number of PCIe lanes available and that can be provided by a CPU. Second, if a storage node may only have a fixed number of PCIe lanes, the throughput of the drives in the storage node is limited. As the capacity of one server increases, the input/output per second per gigabyte (IOPS/GB) decreases. Third, as the throughput of a network interface card (NIC) and the network both increase (e.g., from 10 GB to 25 GB to 50 GB and to 100 GB), the network bottleneck is significantly reduced, but the bottleneck may remain or move to the throughput of the drive itself. Fourth, using an open-channel solid state drive (SSD) may result in an advantage or improvement in the Quality of Service (QoS) and performance, but may also increase the utilization of the CPU and the memory on the host side, which can result the CPU to rely on or use more cores, which can lead to an increased cost.


The embodiments described herein address these challenges and constraints by providing a “FrontTop” device which includes a “combination NIC” and is coupled to a plurality of “bricks.” In the conventional distributed storage system, a front-end computing device generally includes a NIC for communicating with an access switch (ASW) (which in turn communicates with a pod switch (PSW), etc.) In the embodiments described herein, the FrontTop device instead includes a combination NIC (or a “combo NIC”), which merges the prior ASW and NIC functionality. The combo NIC can provide Ethernet ports with which to connect to the Ethernet ports of each brick, and each brick can include a storage system on chip (SoC) and multiple storage drives (e.g., SSDs, open-channel SSDs, Alibaba Open-Channel (AOC) SSDs, and the like). An exemplary environment depicting the FrontTop device and the plurality of bricks is described below in relation to FIGS. 2A, 2B, 3A, and 3B, and exemplary task assignments in such an exemplary environment are described below in relation to FIG. 5.


Thus, by decoupling the computation, capacity, and bandwidth in a storage server of a distributed storage system, the embodiments described herein can provide more consistent behavior and performance in the distributed storage system, and can result in a more efficient method for deploying storage in a data center. These can result in an increased QoS, and can also result in a more modular and scalable deployment of the storage capacity in a distributed storage system, which can result in a reduced total cost of operation (TCO).


A “storage server” or a “storage node” refers to a computing device which can include multiple storage drives. A distributed storage system can include multiple storage servers.


A “brick” refers to a storage device which includes a storage SoC controller, Ethernet ports, and PCIe lanes which are coupled to a plurality of storage drives, e.g., SSDs, AOC SSDs, and other open-channel SSDs. Each storage drive can include its own controller, e.g., an SSD controller, an AOC SSD controller, etc.


A “combination NIC” or a “combo NIC” refers to a NIC which merges the functionality of an access switch (ASW) (by communicating with upstream or higher level entities, such as a pod switch (PSW)) and the functionality of a conventional NIC (by communicating with the plurality of downstream storage drives or bricks as described in this disclosure).


The terms “FrontTop” device and “Front-Top” device are used interchangeably in this disclosure, and refer to a computing device which includes a combo NIC, memory, and a CPU. A FrontTop device can communicate with a plurality of bricks via Ethernet ports provided by the combo NIC. In some instances, the term “FrontTop” is used in this disclosure, while in other instances (e.g., the Figures) the term “FRONT-TOP” is used.


A “storage drive” refers to a device or a drive with a non-volatile memory which can provide persistent storage of data, e.g., a solid state drive (SSD) or a hard disk drive (HDD). Examples of SSDs include open-channel SSDs.


Exemplary Environment for Data Access in the Prior Art



FIG. 1 illustrates an exemplary environment 100 for facilitating data access in a computer system, in accordance with the prior art. Environment 100 can comprise a storage system or a storage server, and can include: a network interface card (NIC) 110; central processing units (CPUs) 120 and 130; a plurality of dual in-line memory modules (DIMMs) 122, 124, 126, and 128, and 132, 134, 136, and 138, corresponding in some embodiments respectively to CPUs 120 and 130; and a plurality of non-volatile memory express (NVMe) and Peripheral Component Interconnect Express (PCIe) solid state drives (SSDs), including NVMe SSD 140, NVMe SSD 142, and PCIe SSD 144.


As described above, this conventional environment can result in challenges relating to performance, lifespan, scalability, and cost. First, the process of adding more storage drives to a storage node is limited by the number of PCIe lanes available and that can be provided by a CPU. Second, if a storage node may only have a fixed number of PCIe lanes, the throughput of the drives in the storage node is limited. As the capacity of one server increases, the input/output per second per gigabyte (IOPS/GB) decreases. Third, as the throughput of a NIC and the network both increase (e.g., from 10 GB to 25 GB to 50 GB and to 100 GB), the network bottleneck is significantly reduced, but the bottleneck may remain or move to the throughput of the drive itself. Fourth, using an open-channel SSD may result in an advantage or improvement in the Quality of Service (QoS) and performance, but may also increase the utilization of the CPU and the memory on the host side, which can cause the CPU to rely on or use more cores, which in turn can lead to an increased TCO.


Exemplary Environment for Facilitating Data Access Using a FrontEnd which Includes a Combo NIC Connected to Multiple Bricks



FIG. 2A illustrates an exemplary environment for facilitating data access in a computer system, in accordance with an embodiment of the present application. Environment 200 includes a computing device 220/FrontTop device 220 and a plurality of storage devices/bricks, such as a storage device 240/brick 240 and a storage device 260/brick 260.


Computing device 220 can include: a NIC 222; a CPU 228; and DIMMs 224, 226, 230, and 232. Computing device 220 can communicate with an access switch 210 via NIC 222. Access switch 210 can handle communications to/from a pod switch (via a communication 201). Storage devices 240 and 260 can communicate with access switch 210 via an Ethernet port (e.g., an Ethernet port 242 and an Ethernet port 262, respectively). In environment 200, NIC 222 and access switch 210 are depicted as shaded with left-slanting diagonal lines to indicate that computing device 220 includes a first component which is a combination NIC (“combo NIC”) that merges the functionality of NIC 222 and access switch 210 (as depicted in detail below in FIG. 2B).


Storage device 240 can include: Ethernet port 242 coupled to computing device 220; at least one microprocessor (such as 244, 246, 248, and 250); PCIe lanes 252; and a plurality of storage drives with non-volatile memory (such as SSDs 254 and 256). PCIe lanes 252 can be used for communication with and data transfer to/from SSDs 254-256. Similarly, storage device 260 can include: Ethernet port 262 coupled to computing device 220; at least one microprocessor (such as 264, 266, 268, and 270); PCIe lanes 272; and a plurality of storage drives with non-volatile memory (such as SSDs 280 and 282). PCIe lanes 272 can be used for communication with and data transfer to/from SSDs 274-276. In some embodiments, SSDs 254, 256, 274, and 276 can be open-channel SSDs.



FIG. 2B illustrates an exemplary environment 280 for facilitating data access in a computer system, in accordance with an embodiment of the present application. Environment 280 is similar to environment 200, but more clearly depicts a combo NIC 282 as the first component of computing device 220. Combo NIC 282 of environment 280 functions as both access switch 210 and NIC 222 of environment 200. Specifically: functioning as the access switch, combo NIC 282 handles the communications to/from the pod switch (via a communication 285) and further handles the communications to/from storage devices 240 and 260 (via, respectively, communications 286 and 287); and functioning as the NIC, combo NIC 282 can handle the NIC function for computing device 220.



FIG. 3A illustrates an exemplary network topology 300 for facilitating data access in a computer system, in accordance with an embodiment of the present application. Topology 300 can represent a distributed storage system, and can include: several data center switches (DSWs) 312, 314, and 316, which communicate with, respectively, data center routers 311, 313, and 315; pod switches (PSWs) 322, 324, 326, and 328, which handle communication between a plurality of computing devices (330, 340, and 350) and DSWs (312, 314, and 316); a plurality of computing devices (FrontTop devices) 330, 340, and 350; and a plurality of storage devices (bricks) 334, 344, and 354.


Each FrontTop device can include a combo NIC and can be coupled to a plurality of storage devices (bricks). Each FrontTop device, via its combo NIC, can be coupled or connected to two PSWs for upstream communication, and can be further coupled or connected to a plurality of storage devices (bricks) for downstream communication. Because the combo NIC connects directly to the two PSWs, the overall network path is shortened, which can result in a decrease in latency. At the same time, the system can avoid congestion on the access switch because the functionality of the former ASW can be distributed among multiple combo NICs.


For example, computing device 330/FrontTop device 330 can include a combo NIC 332, can be coupled upstream to PSW 322 and PSW 324, and can further be coupled downstream to storage devices 334/bricks 334. Similarly: computing device 340/FrontTop device 340 can include a combo NIC 342, can be coupled upstream to PSW 324 and PSW 328, and can further be coupled downstream to storage devices 344/bricks 344; and computing device 350/FrontTop device 350 can include a combo NIC 352, can be coupled upstream to PSW 322 and PSW 326, and can further be coupled downstream to storage devices 354/bricks 354.


In topology 300, each FrontTop device is responsible for running software for the distributed storage system and for handling the network connection (via its respective combo NIC), while the storage device (brick) itself is responsible for managing the storage drives. In some embodiments, the FrontTop device is implemented as a powerful SoC in order to realize the functionality and responsibility of the FrontTop device. That is, the whole set of the FrontTop's function may be implemented using one integrated circuit given a sufficient set of CPU cores, bandwidth for the network controller, and physical memory. The embodiments described herein can integrate the memory controller to expand the memory space, which significantly simplifies the storage server, and can result in a more efficient overall distributed storage system.



FIG. 3B illustrates an exemplary environment 360 for facilitating data access in a computer system, including the addition of bricks coupled to a FrontTop device, in accordance with an embodiment of the present application. Environment 360 can include PSWs 322 and 324, which are communicatively coupled to computing device 330 (FrontTop device 330). Computing device 330 can include combo NIC 332, which handles the communication both to PSWs 322 and 324, and to a plurality of storage devices/bricks (362, 364, and 366, which are represented as bricks 334 in FIG. 3A).


Thus, in the embodiments described herein, by placing in a FrontTop computing device a combination NIC which functions both as a NIC and an access switch, the system can add storage devices (bricks) which include multiple storage drives (e.g., SSDs) in a modular and scalable fashion. This allows the system to decouple networking tasks from computation tasks (as described below in relation to FIG. 4), which can result in a distributed storage system with more consistent behavior and performance. The system can also provide an increased QoS and a reduced TCO.


Exemplary Task Assignment in a Computer System



FIG. 4 illustrates an exemplary task assignment 400 in a computer system, in accordance with an embodiment of the present application. Given the environments and network topology of FIGS. 2A, 2B, 3A, and 3B, the embodiments described herein can include modules which handle certain tasks (e.g., task assignment). These tasks can be distributed among a FrontTop CPU 410, a combo NIC 430, a storage SoC 440, and an SSD controller 450. FrontTop CPU 410 can correspond to CPU 228 of computing device 220 of FIG. 2B, and can provide the significant computing resource for the distributed storage system. FrontTop CPU 410 can include modules and functionality for performing: metadata management 412; data placement 414; data scrubbing 416; node communication 418; and handling multiple replicas 420.


Combo NIC 430 can correspond to combo NIC 282 of FIG. 2B, and can serve as the ASW and the NIC for the FrontTop device. Combo NIC 430 can include modules and functionality for: handling network communication, such as a connection to PSW 432 (as well as handling communication between a pod switch and a plurality of storage devices, not shown); processing data, such as a CRC module 434 (as well as other operations, including a hash function or other hash-related operations); and performing encryption/decryption via an encryption/decryption module 436. Some of these functions of combo NIC 430 may be offloaded from various other components of the distributed storage system.


Storage SoC 440 can correspond to storage SoC 241 of FIG. 2B, and can share a high-efficiency data I/O path by working on the management of the storage drives. Storage SoC 440 can include modules and functionality for performing: drive management 442 (e.g., managing the plurality of storage drives); file system management via a file system module 444; operations relating to a flash translation layer (FTL) module 446; and operations associated with various drivers 448. For example, the FTL for an open-channel SSD can run on the storage SoC of the storage device (brick) with a DRAM interface for expanding the physical DRAM capacity.


SSD controller 450 can correspond to an SSD controller (not shown) for storage drive 251 of FIG. 2B, and can provide in-storage processing via a processor through, e.g., a field-programmable gate array (FPGA) packaged with the SSD controller. SSD controller 450 can include various modules with functionality, including but not limited to: an erasure coding module 452; a compression/decompression module 454; a sorting module 456; and a filtering module 458. Using an FPGA with the flexibility of re-programming can provide the freedom to configure and implement the logic based on specific application scenarios. An open-channel SSD, for example, can include in-storage processing which can service a much broader potential range of users, user needs, and specific applications.


Thus, in the embodiments described herein, the system can assign various computational tasks to multiple levels. Offloading the compute operations into the SSD itself can achieve the goal of in-storage computing, and placing the local storage engine in the storage SoC of each storage device (brick) can result in a flexible organization for the storage device as a resource. Furthermore, placing the network efficiency as well as certain computational tasks (such as encryption and parity checks) into the combo NIC can result in a more efficient system. As a result, the system provides a design for a storage server in a distributed storage system or cluster which can result in a more agile and efficient environment, by renovating and balancing the computation, network, and storage tasks within the distributed storage system or cluster. The system can also be configured into a finer-grained granularity to allocate resources with improved flexibility and to reduce the influencing range of online faults.


In another embodiment, the system can merge the stand-alone CPU of the FrontTop device with the combo NIC as a single SoC, as described below in relation to FIG. 5.


Exemplary Converged SoC Design for FrontTop Device



FIG. 5 illustrates an exemplary converged SoC design for a FrontTop device 510 in an environment 500, in accordance with an embodiment of the present application. Environment 500 depicts computing device 220/FrontTop device 220 which includes combo NIC 282, as described above in relation to FIG. 2B. The system can merge standalone CPU 228 of computing device 220 with combo NIC 282 into a smart NIC SoC, resulting in a computing device 510/FrontTop device 510, which includes: a smart NIC SoC 520; various DIMMs 512, 514, 516, and 518; and a set of Ethernet ports 522. As a result, smart NIC SoC 520 is configured to function or operate as the NIC, the access switch, and the CPU for computing device 510.


Exemplary Method for Facilitating Data Access in a Computer System



FIG. 6A presents a flowchart 600 illustrating a method for facilitating data access in a computer system, in accordance with an embodiment of the present application. During operation, the system receives, by a computing device, a request to write data to a non-volatile memory of a computer system, wherein the computer system comprises: a plurality of storage devices; and a first component functioning both as a network interface card and as an access switch, wherein the first component is configured to manage connections to the plurality of storage devices, and wherein a respective storage device comprises: an Ethernet port coupled to the first component; at least one microprocessor; a plurality of PCIe lanes; and a plurality of storage drives with non-volatile memory (operation 602). The system transmits the data, by the computing device via the first component, to a selected storage device (operation 604). The system writes the data to a non-volatile memory of a first storage drive of the selected storage device (operation 606).



FIG. 6B presents a flowchart illustrating a method for facilitating data access in a computer system, in accordance with an embodiment of the present application. During operation, the system receives, by a computing device, a request to write data to a non-volatile memory of a computer system, wherein the computer system comprises: a plurality of storage devices; and a first component functioning both as a network interface card and as an access switch, wherein the first component is configured to manage connections to the plurality of storage devices, and wherein a respective storage device comprises: an Ethernet port coupled to the first component; at least one microprocessor; a plurality of PCIe lanes; and a plurality of storage drives with non-volatile memory (operation 622). The system performs, by the computing device, general computation tasks associated with the computer system, wherein the computer system is part of a distributed storage system (operation 624). These general computation tasks can include, e.g., meta-data management, data placement, data scrubbing/refreshing/deleting, node communication, and handling replicas, as depicted above in relation to FrontTop CPU 410 of FIG. 4.


The system processes, by the first component of the computing device, the data to obtain processed data (operation 626). Processing the data can include, e.g., operations relating to a CRC check, a hash function, and encryption/decryption, as depicted above in relation to combo NIC 430 of FIG. 4. The system transmits the processed data, by the computing device via the first component, to a selected storage device (operation 628).


The system determines, by a flash translation layer module of the selected storage device, a first storage drive of the selected storage device to which to write the processed data (operation 630). The system can determine the first storage drive of the selected storage device based on a mapping table or other data structure maintained by the FTL module of the selected storage device. The FTL module can handle the mapping of logical addresses to physical addresses. The system performs, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data (operation 632). These in-drive computation tasks can include, e.g., erasure coding, compression/decompression, sorting, and filtering/re-filtering, as depicted above in relation to SSD controller 450 of FIG. 4. The system writes, by the controller of the first storage drive, the further processed data to a non-volatile memory of the first storage drive (operation 634).


While the methods and computer systems described in this disclosure for facilitating data access in a computer system depict handling an incoming write request, similar operations and components are employed in handling a read operation. The following describes the “read” version corresponding to a previously described operation of FIGS. 6A and 6B. For example, the system can receive a request to read data from a non-volatile memory of a computer system (read version of operation 602). The system can transmit the read request, by the computing device via the first component, to the selected storage device (or a storage device in which the data or a replica of the data is stored) (read version of operation 604). The system can read the data from the non-volatile memory of a first storage drive of the selected storage device (read version of operation 606).


Similarly, the system can perform the read version of the operations described above in relation to FIG. 6B, including, but not limited to: receiving a read request (read version of operation 622); performing general computation tasks (read version of operation 624); processing data as needed (read version of operation 626); transmitting the read request, by the computing device via the first component, to the selected storage device (or a storage device in which the data or a replica of the data is stored) (read version of operation 628); determining a location from a first storage drive from which to read the requested data (read version of operation 630); retrieving the data from the first storage drive at the determined location (read version of operation 634); and performing specific in-drive computation tasks to obtain decoded/decompressed/sorted/re-filtered data (read version of operation 632).


Exemplary Computer System and Apparatus



FIG. 7 illustrates an exemplary computer system 700 that facilitates data access, in accordance with an embodiment of the present application. Computer system 700 can include a computing device (or a FrontTop device) 701 and a storage device (brick 720). Computing device 701 can include a processor 702, a volatile memory 704, a combo NIC 706, and a storage component 708. Computing device 701 can correspond to computing device 220 (FrontTop device 220) of FIG. 2B. Volatile memory 704 can include, e.g., random access memory (RAM), that serves as a managed memory, and can be used to store one or more memory pools. Combo NIC 706 can correspond to combo NIC 282 of FIG. 2B. Storage component 708 can include persistent storage. Furthermore, computing device 701 can be coupled to peripheral input/output (I/O) user devices 750, e.g., a display device 752, a keyboard 754, and a pointing device 756. Storage component 708 can store an operating system 710, a content-processing system 712, and data 718.


Content-processing system 712 can include instructions, which when executed by computing device 701, can cause computing device 701 to perform methods and/or processes described in this disclosure. Specifically, content-processing system 712 can include instructions for receiving and transmitting data packets, including data to be read or written, an input/output (I/O) request (e.g., a read request or a write request), and data associated with a read request, a write request, or an I/O request (communication module 714). Content-processing system 712 can also include instructions for receiving, by the computing device, a request to write data to a non-volatile memory of the computer system (communication module 714). Content-processing system 712 can include instructions for transmitting the data, by the computing device via the first component, to a selected storage device (communication module 714). Content-processing system 712 can include instructions for writing the data to a non-volatile memory of a first storage drive of the selected storage device (data-managing module 716).


Content-processing system 712 can include instructions for performing, by the computing device, general computation tasks associated with the computer system (data-managing module 716). Content-processing system 712 can include instructions for processing, by the first component, the data to obtain processed data (data-managing module 716). Content-processing system 712 can include instructions for transmitting the processed data, by the computing device via the first component, to the selected storage device (communication module 714).


Furthermore, content-processing system 712 can include instructions for: managing meta-data; placing data; scrubbing, refreshing, or deleting data; communicating with other computing devices via the first component; and handling multiple replicas of data (data-managing module 716). Content-processing system 712 can include instructions for processing data by the first component, including operations relating to a cyclic redundancy check, a hash function, and encryption (data-managing module 716). Content-processing system 712 can include instructions for handling, by the first component, network communication (communication module 714, functioning as part of combo NIC 706). Content-processing system 712 can include instructions for handling, by the first component, communication between a pod switch and the plurality of storage devices (communication module 714, functioning as part of combo NIC 706).


Storage device (brick) 720 can include Ethernet ports 722, processors/controller 724, PCIe lanes 726, a storage component 728, and a non-volatile memory 730. Storage component 728 can store instructions to be performed by processors/controller 724. Non-volatile memory 730 can correspond to or be associated with a storage drive, such as an SSD (e.g., corresponding to storage drive 251 of FIG. 2B).


Storage component 728 can include instructions for determining, by a flash translation layer module of the selected storage device, the first storage drive of the selected storage device to which to write the processed data (FTL-managing module 734). Storage component 728 can include instructions for performing, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data (data-processing module 740). Storage component 728 can include instructions for writing, by the controller of the first storage drive, the further processed data to the non-volatile memory of the first storage drive (communication module 732 and data-writing module 738).


Storage component 728 can include instructions for managing, by the storage SoC, the plurality of storage drives (communication module 732 and drive-managing module 736). Storage component 728 can include instructions for performing, by the storage SoC, operations relating to a file system and a flash translation layer module (communication module 732 and FTL-managing module 734). Storage component 728 can include instructions for performing, by a controller of a respective storage drive, one or more of: erasure coding; compression; sorting; and filtering (data-processing module 740).


Data 718 and data 742 can include any data that is required as input or generated as output by the methods and/or processes described in this disclosure. Specifically, data 718 and data 742 can store at least: data; a request; a read request; a write request; an input/output (I/O) request; data associated with a read request, a write request, or an I/O request; an erasure code (EC); encoded or decoded data; EC-encoded/decoded data; compressed or decompressed data; encrypted or decrypted data; sorted data; filtered or re-filtered data; meta-data; scrubbed, refreshed, or deleted data; a replica; an indicator of a pod switch, an access switch, a port, a PCIe lane, a computing device (or a FrontTop device), a storage device (or a brick), and a storage drive; a CRC verification; a hash function; an encryption algorithm; and a decryption algorithm.



FIG. 8 illustrates an exemplary apparatus 800 that facilitates data access, in accordance with an embodiment of the present application. Apparatus 800 can comprise a plurality of units or apparatuses which may communicate with one another via a wired, wireless, quantum light, or electrical communication channel. Apparatus 800 may be realized using one or more integrated circuits, and may include fewer or more units or apparatuses than those shown in FIG. 8. Further, apparatus 800 may be integrated in a computer system, or realized as a separate device(s) which is/are capable of communicating with other computer systems and/or devices. Specifically, apparatus 800 can comprise units 802-814 which perform functions or operations similar to modules 714, 716, and 732-740 of computer system 700 of FIG. 7, including: a first communication unit 802; a data-managing unit 804; a second communication unit 806; an FTL-managing unit 808; a drive-managing unit 810; a data-writing unit 812; and a data-processing unit 814.


The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.


The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.


Furthermore, the methods and processes described above can be included in hardware modules. For example, the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.


The foregoing embodiments described herein have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the embodiments described herein to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the embodiments described herein. The scope of the embodiments described herein is defined by the appended claims.

Claims
  • 1. A computer system, comprising: a plurality of storage devices; anda first component of a computing device, wherein the first component is configured to function both as a network interface card and as an access switch, by handling communications to and from a plurality of pod switches and by handling communications to and from the plurality of storage devices, which allows the computing device to communicate with the pod switches without a separate layer for the access switch, wherein the first component is coupled to a port on a respective storage device,wherein the respective storage device comprises: the port coupled to the first component; at least one microprocessor; a plurality of storage drives with non-volatile memory; and a plurality of PCIe lanes via which to access the plurality of storage drives, andwherein the port comprises an Ethernet port, wherein the at least one microprocessor and the PCIe lanes comprise a storage system on chip (SoC) component of the respective storage drive, and wherein the storage SoC component is configured to: manage the plurality of storage drives; andperform operations relating to a file system and a flash translation layer module associated with the storage drives.
  • 2. The computer system of claim 1, further comprising: wherein the computing device includes the first component, a central processing unit, and a volatile memory.
  • 3. The computer system of claim 2, wherein the computing device comprises a single integrated circuit.
  • 4. The computer system of claim 2, wherein the central processing unit of the computing device is configured to perform one or more of: managing meta-data;placing data;scrubbing, refreshing, or deleting data;communicating with other computing devices via the first component; andhandling multiple replicas of data.
  • 5. The computer system of claim 2, wherein the computing device is configured to: receive a request to write data to a non-volatile memory of the computer system; andtransmit the data, via the first component, to a selected storage device; andwherein the selected storage device is configured to: write the data to a non-volatile memory of a first storage drive of the selected storage device.
  • 6. The computer system of claim 5, wherein the computing device is further configured to: perform general computation tasks associated with the computer system;process, by the first component, the data to obtain processed data; andtransmit the processed data, by the computing device via the first component, to the selected storage device.
  • 7. The computer system of claim 6, wherein in writing the data to the non-volatile memory of the first storage drive of the selected storage device, the selected storage device is further configured to: determine, by a flash translation layer module of the selected storage device, the first storage drive of the selected storage device to which to write the processed data;perform, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data; andwrite, by the controller of the first storage drive, the further processed data to the non-volatile memory of the first storage drive.
  • 8. The computer system of claim 1, further comprising: a second component functioning as the network interface card, the access switch, and a central processing unit.
  • 9. The computer system of claim 1, wherein the first component is further configured to: process data, including operations relating to a cyclic redundancy check, a hash function, and encryption;handle network communication; andhandle communication between a pod switch and the plurality of storage devices.
  • 10. The computer system of claim 1, wherein a controller of a respective storage drive is configured to perform one or more of: erasure coding; compression; sorting; and filtering.
  • 11. A computer-implemented method for facilitating data access in a computer system, wherein the computer system comprises: a plurality of storage devices;a first component of a computing device, wherein the first component is configured to function both as a network interface card and as an access switch, by handling communications to and from a plurality of pod switches and by handling communications to and from the plurality of storage devices, which allows the computing device to communicate with the pod switches without a separate layer for the access switch, wherein the first component is coupled to a port on a respective storage device,wherein the respective storage device comprises: the port coupled to the first component; at least one microprocessor; a plurality of storage drives with non-volatile memory; and a plurality of PCIe lanes via which to access the plurality of storage drives, andwherein the port comprises an Ethernet port, wherein the at least one microprocessor and the PCIe lanes comprise a storage system on chip (SoC) component of the respective storage drive; andthe computing device which includes the first component,wherein the method comprises: receiving, by the computing device, a request to write data to a non-volatile memory of the computer system;transmitting the data, by the computing device via the first component, to a selected storage device;writing the data to a non-volatile memory of a first storage drive of the selected storage device;managing, by the storage SoC component, the plurality of storage drives; andperforming, by the storage SoC component, operations relating to a file system and a flash translation layer module.
  • 12. The method of claim 11, further comprising: performing, by the computing device, general computation tasks associated with the computer system;processing, by the first component, the data to obtain processed data; andtransmitting the processed data, by the computing device via the first component, to the selected storage device,wherein writing the data to the non-volatile memory of the first storage drive of the selected storage device comprises: determining, by a flash translation layer module of the selected storage device, the first storage drive of the selected storage device to which to write the processed data;performing, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data; andwriting, by the controller of the first storage drive, the further processed data to the non-volatile memory of the first storage drive.
  • 13. The method of claim 11, wherein the computing device includes the first component, a central processing unit, and a volatile memory.
  • 14. The method of claim 13, wherein the computing device comprises a single integrated circuit.
  • 15. The method of claim 13, wherein the central processing unit of the computing device performs one or more of: managing meta-data;placing data;scrubbing, refreshing, or deleting data;communicating with other computing devices via the first component; andhandling multiple replicas of data.
  • 16. The method of claim 11, wherein the computer system further comprises: a second component functioning as the network interface card, the access switch, and a central processing unit.
  • 17. The method of claim 11, further comprising: processing data, by the first component, including operations relating to a cyclic redundancy check, a hash function, and encryption;handling, by the first component, network communication; andhandling, by the first component, communication between a pod switch and the plurality of storage devices.
  • 18. The method of claim 11, further comprising: performing, by a controller of a respective storage drive, one or more of: erasure coding; compression; sorting; and filtering.
  • 19. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, wherein the computer comprises a storage device associated with a computer system, wherein the computer system comprises: a plurality of storage devices;a first component of a computing device, wherein the first component is configured to function both as a network interface card and as an access switch, by handling communications to and from a plurality of pod switches and by handling communications to and from the plurality of storage devices, which allows the computing device to communicate with the pod switches without a separate layer for the access switch, wherein the first component is coupled to a port on a respective storage device,wherein the respective storage device comprises: the port coupled to the first component; at least one microprocessor; a plurality of storage drives with non-volatile memory; and a plurality of PCIe lanes via which to access the plurality of storage drives, andwherein the port comprises an Ethernet port, wherein the at least one microprocessor and the PCIe lanes comprise a storage system on chip (SoC) component of the respective storage drive; andthe computing device which includes the first component,wherein the method comprises: receiving, by the computing device, a request to write data to a non-volatile memory of the computer system;transmitting the data, by the computing device via the first component, to a selected storage device;writing the data to a non-volatile memory of a first storage drive of the selected storage device;managing, by the storage SoC component, the plurality of storage drives; andperforming, by the storage SoC component, operations relating to a file system and a flash translation layer module.
  • 20. The storage medium of claim 19, wherein the method further comprises: performing, by the computing device, general computation tasks associated with the computer system;processing, by the first component, the data to obtain processed data; andtransmitting the processed data, by the computing device via the first component, to the selected storage device,wherein writing the data to the non-volatile memory of the first storage drive of the selected storage device comprises: determining, by a flash translation layer module of the selected storage device, the first storage drive of the selected storage device to which to write the processed data;performing, by a controller of the first storage drive, specific in-drive computation tasks on the processed data to obtain further processed data; andwriting, by the controller of the first storage drive, the further processed data to the non-volatile memory of the first storage drive.
RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No. 16/515,889, titled “Method and System for Enhancing a Distributed Storage System By Decoupling Computation and Network Tasks,” by inventor Shu Li, filed 18 Jul. 2019.

US Referenced Citations (439)
Number Name Date Kind
3893071 Bossen Jul 1975 A
4562494 Bond Dec 1985 A
4718067 Peters Jan 1988 A
4775932 Oxley Oct 1988 A
4858040 Hazebrouck Aug 1989 A
5394382 Hu Feb 1995 A
5602693 Brunnett Feb 1997 A
5715471 Otsuka Feb 1998 A
5732093 Huang Mar 1998 A
5802551 Komatsu Sep 1998 A
5930167 Lee Jul 1999 A
6098185 Wilson Aug 2000 A
6148377 Carter Nov 2000 A
6226650 Mahajan et al. May 2001 B1
6243795 Yang Jun 2001 B1
6457104 Tremaine Sep 2002 B1
6658478 Singhal Dec 2003 B1
6795894 Neufeld Sep 2004 B1
7351072 Muff Apr 2008 B2
7565454 Zuberi Jul 2009 B2
7599139 Bombet Oct 2009 B1
7953899 Hooper May 2011 B1
7958433 Yoon Jun 2011 B1
8085569 Kim Dec 2011 B2
8144512 Huang Mar 2012 B2
8166233 Schibilla Apr 2012 B2
8260924 Koretz Sep 2012 B2
8281061 Radke Oct 2012 B2
8452819 Sorenson, III May 2013 B1
8516284 Chan Aug 2013 B2
8527544 Colgrove Sep 2013 B1
8751763 Ramarao Jun 2014 B1
8819367 Fallone Aug 2014 B1
8825937 Atkisson Sep 2014 B2
8832688 Tang Sep 2014 B2
8868825 Hayes Oct 2014 B1
8904061 O'Brien, III Dec 2014 B1
8949208 Xu Feb 2015 B1
9015561 Hu Apr 2015 B1
9031296 Kaempfer May 2015 B2
9043545 Kimmel May 2015 B2
9088300 Chen Jul 2015 B1
9092223 Pani Jul 2015 B1
9129628 Fallone Sep 2015 B1
9141176 Chen Sep 2015 B1
9208817 Li Dec 2015 B1
9213627 Van Acht Dec 2015 B2
9280472 Dang Mar 2016 B1
9280487 Candelaria Mar 2016 B2
9311939 Malina Apr 2016 B1
9336340 Dong May 2016 B1
9436595 Benitez Sep 2016 B1
9495263 Pang Nov 2016 B2
9529601 Dharmadhikari Dec 2016 B1
9529670 O'Connor Dec 2016 B2
9569454 Ebsen Feb 2017 B2
9575982 Sankara Subramanian Feb 2017 B1
9588698 Karamcheti Mar 2017 B1
9588977 Wang Mar 2017 B1
9607631 Rausch Mar 2017 B2
9671971 Trika Jun 2017 B2
9747202 Shaharabany Aug 2017 B1
9836232 Vasquez Dec 2017 B1
9852076 Garg Dec 2017 B1
9875053 Frid Jan 2018 B2
9912530 Singatwaria Mar 2018 B2
9923562 Vinson Mar 2018 B1
9946596 Hashimoto Apr 2018 B2
10013169 Fisher Jul 2018 B2
10199066 Feldman Feb 2019 B1
10229735 Natarajan Mar 2019 B1
10235198 Qiu Mar 2019 B2
10268390 Warfield Apr 2019 B2
10318467 Barzik Jun 2019 B2
10361722 Lee Jul 2019 B2
10437670 Koltsidas Oct 2019 B1
10459663 Agombar Oct 2019 B2
10642522 Li May 2020 B2
10649657 Zaidman May 2020 B2
10678432 Dreier Jun 2020 B1
10756816 Dreier Aug 2020 B1
10928847 Suresh Feb 2021 B2
10990526 Lam Apr 2021 B1
20010032324 Slaughter Oct 2001 A1
20010046295 Sako Nov 2001 A1
20020010783 Primak Jan 2002 A1
20020039260 Kilmer Apr 2002 A1
20020073358 Atkinson Jun 2002 A1
20020095403 Chandrasekaran Jul 2002 A1
20020112085 Berg Aug 2002 A1
20020161890 Chen Oct 2002 A1
20030074319 Jaquette Apr 2003 A1
20030145274 Hwang Jul 2003 A1
20030163594 Aasheim Aug 2003 A1
20030163633 Aasheim Aug 2003 A1
20030217080 White Nov 2003 A1
20040010545 Pandya Jan 2004 A1
20040066741 Dinker Apr 2004 A1
20040103238 Avraham May 2004 A1
20040143718 Chen Jul 2004 A1
20040255171 Zimmer Dec 2004 A1
20040267752 Wong Dec 2004 A1
20040268278 Hoberman Dec 2004 A1
20050038954 Saliba Feb 2005 A1
20050097126 Cabrera May 2005 A1
20050138325 Hofstee Jun 2005 A1
20050144358 Conley Jun 2005 A1
20050149827 Lambert Jul 2005 A1
20050174670 Dunn Aug 2005 A1
20050177672 Rao Aug 2005 A1
20050177755 Fung Aug 2005 A1
20050195635 Conley Sep 2005 A1
20050235067 Creta Oct 2005 A1
20050235171 Igari Oct 2005 A1
20060031709 Hiraiwa Feb 2006 A1
20060101197 Georgis May 2006 A1
20060156009 Shin Jul 2006 A1
20060156012 Beeson Jul 2006 A1
20060184813 Bui Aug 2006 A1
20070033323 Gorobets Feb 2007 A1
20070061502 Lasser Mar 2007 A1
20070101096 Gorobets May 2007 A1
20070250756 Gower Oct 2007 A1
20070266011 Rohrs Nov 2007 A1
20070283081 Lasser Dec 2007 A1
20070283104 Wellwood Dec 2007 A1
20070285980 Shimizu Dec 2007 A1
20080028223 Rhoads Jan 2008 A1
20080034154 Lee Feb 2008 A1
20080065805 Wu Mar 2008 A1
20080082731 Karamcheti Apr 2008 A1
20080112238 Kim May 2008 A1
20080163033 Yim Jul 2008 A1
20080195829 Wilsey Aug 2008 A1
20080301532 Uchikawa Dec 2008 A1
20090006667 Lin Jan 2009 A1
20090089544 Liu Apr 2009 A1
20090113219 Aharonov Apr 2009 A1
20090125788 Wheeler May 2009 A1
20090183052 Kanno Jul 2009 A1
20090254705 Abali Oct 2009 A1
20090282275 Yermalayeu Nov 2009 A1
20090287956 Flynn Nov 2009 A1
20090307249 Koifman Dec 2009 A1
20090307426 Galloway Dec 2009 A1
20090310412 Jang Dec 2009 A1
20100031000 Flynn Feb 2010 A1
20100169470 Takashige Jul 2010 A1
20100217952 Iyer Aug 2010 A1
20100229224 Etchegoyen Sep 2010 A1
20100241848 Smith Sep 2010 A1
20100281254 Carro Nov 2010 A1
20100321999 Yoo Dec 2010 A1
20100325367 Kornegay Dec 2010 A1
20100332922 Chang Dec 2010 A1
20110031546 Uenaka Feb 2011 A1
20110055458 Kuehne Mar 2011 A1
20110055471 Thatcher Mar 2011 A1
20110060722 Li Mar 2011 A1
20110072204 Chang Mar 2011 A1
20110099418 Chen Apr 2011 A1
20110153903 Hinkle Jun 2011 A1
20110161784 Selinger Jun 2011 A1
20110191525 Hsu Aug 2011 A1
20110218969 Anglin Sep 2011 A1
20110231598 Hatsuda Sep 2011 A1
20110239083 Kanno Sep 2011 A1
20110252188 Weingarten Oct 2011 A1
20110258514 Lasser Oct 2011 A1
20110289263 McWilliams Nov 2011 A1
20110289280 Koseki Nov 2011 A1
20110292538 Haga Dec 2011 A1
20110296411 Tang Dec 2011 A1
20110299317 Shaeffer Dec 2011 A1
20110302353 Confalonieri Dec 2011 A1
20110302408 McDermott Dec 2011 A1
20120017037 Riddle Jan 2012 A1
20120039117 Webb Feb 2012 A1
20120084523 Littlefield Apr 2012 A1
20120089774 Kelkar Apr 2012 A1
20120096330 Przybylski Apr 2012 A1
20120117399 Chan May 2012 A1
20120147021 Cheng Jun 2012 A1
20120151253 Horn Jun 2012 A1
20120159099 Lindamood Jun 2012 A1
20120159289 Piccirillo Jun 2012 A1
20120173792 Lassa Jul 2012 A1
20120203958 Jones Aug 2012 A1
20120210095 Nellans Aug 2012 A1
20120233523 Krishnamoorthy Sep 2012 A1
20120246392 Cheon Sep 2012 A1
20120278579 Goss Nov 2012 A1
20120284587 Yu Nov 2012 A1
20120324312 Moyer Dec 2012 A1
20120331207 Lassa Dec 2012 A1
20130013880 Tashiro Jan 2013 A1
20130016970 Koka Jan 2013 A1
20130018852 Barton Jan 2013 A1
20130024605 Sharon Jan 2013 A1
20130054822 Mordani Feb 2013 A1
20130061029 Huff Mar 2013 A1
20130073798 Kang Mar 2013 A1
20130080391 Raichstein Mar 2013 A1
20130138871 Chiu May 2013 A1
20130145085 Yu Jun 2013 A1
20130145089 Eleftheriou Jun 2013 A1
20130151759 Shim Jun 2013 A1
20130159251 Skrenta Jun 2013 A1
20130159723 Brandt Jun 2013 A1
20130166820 Batwara Jun 2013 A1
20130173845 Aslam Jul 2013 A1
20130179898 Fang Jul 2013 A1
20130191601 Peterson Jul 2013 A1
20130205183 Fillingim Aug 2013 A1
20130219131 Alexandron Aug 2013 A1
20130227347 Cho Aug 2013 A1
20130238955 D Abreu Sep 2013 A1
20130254622 Kanno Sep 2013 A1
20130318283 Small Nov 2013 A1
20130318395 Kalavade Nov 2013 A1
20130329492 Yang Dec 2013 A1
20140006688 Yu Jan 2014 A1
20140019650 Li Jan 2014 A1
20140025638 Hu Jan 2014 A1
20140082273 Segev Mar 2014 A1
20140082412 Matsumura Mar 2014 A1
20140095769 Borkenhagen Apr 2014 A1
20140095827 Wei Apr 2014 A1
20140108414 Stillerman Apr 2014 A1
20140108891 Strasser Apr 2014 A1
20140164447 Tarafdar Jun 2014 A1
20140164879 Tam Jun 2014 A1
20140181532 Camp Jun 2014 A1
20140195564 Talagala Jul 2014 A1
20140215129 Kuzmin Jul 2014 A1
20140223079 Zhang Aug 2014 A1
20140233950 Luo Aug 2014 A1
20140250259 Ke Sep 2014 A1
20140279927 Constantinescu Sep 2014 A1
20140304452 De La Iglesia Oct 2014 A1
20140310574 Yu Oct 2014 A1
20140359229 Cota-Robles Dec 2014 A1
20140365707 Talagala Dec 2014 A1
20140379965 Gole Dec 2014 A1
20150006792 Lee Jan 2015 A1
20150019798 Huang Jan 2015 A1
20150039849 Lewis Feb 2015 A1
20150082317 You Mar 2015 A1
20150106556 Yu Apr 2015 A1
20150106559 Cho Apr 2015 A1
20150121031 Feng Apr 2015 A1
20150142752 Chennamsetty May 2015 A1
20150143030 Gorobets May 2015 A1
20150186657 Nakhjiri Jul 2015 A1
20150199234 Choi Jul 2015 A1
20150227316 Warfield Aug 2015 A1
20150234845 Moore Aug 2015 A1
20150269964 Fallone Sep 2015 A1
20150277937 Swanson Oct 2015 A1
20150286477 Mathur Oct 2015 A1
20150294684 Qjang Oct 2015 A1
20150301964 Brinicombe Oct 2015 A1
20150304108 Obukhov Oct 2015 A1
20150310916 Leem Oct 2015 A1
20150317095 Voigt Nov 2015 A1
20150341123 Nagarajan Nov 2015 A1
20150347025 Law Dec 2015 A1
20150363271 Haustein Dec 2015 A1
20150363328 Candelaria Dec 2015 A1
20150372597 Luo Dec 2015 A1
20160014039 Reddy Jan 2016 A1
20160026575 Samanta Jan 2016 A1
20160041760 Kuang Feb 2016 A1
20160048327 Jayasena Feb 2016 A1
20160048341 Constantinescu Feb 2016 A1
20160054922 Awasthi Feb 2016 A1
20160062885 Ryu Mar 2016 A1
20160077749 Ravimohan Mar 2016 A1
20160077764 Ori Mar 2016 A1
20160077968 Sela Mar 2016 A1
20160098344 Gorobets Apr 2016 A1
20160098350 Tang Apr 2016 A1
20160103631 Ke Apr 2016 A1
20160110254 Cronie Apr 2016 A1
20160124742 Rangasamy May 2016 A1
20160132237 Jeong May 2016 A1
20160141047 Sehgal May 2016 A1
20160154601 Chen Jun 2016 A1
20160155750 Yasuda Jun 2016 A1
20160162187 Lee Jun 2016 A1
20160179399 Melik-Martirosian Jun 2016 A1
20160188223 Camp Jun 2016 A1
20160188890 Naeimi Jun 2016 A1
20160203000 Parmar Jul 2016 A1
20160224267 Yang Aug 2016 A1
20160232103 Schmisseur Aug 2016 A1
20160234297 Ambach Aug 2016 A1
20160239074 Lee Aug 2016 A1
20160239380 Wideman Aug 2016 A1
20160274636 Kim Sep 2016 A1
20160306699 Resch Oct 2016 A1
20160306853 Sabaa Oct 2016 A1
20160321002 Jung Nov 2016 A1
20160335085 Scalabrino Nov 2016 A1
20160342345 Kankani Nov 2016 A1
20160343429 Nieuwejaar Nov 2016 A1
20160350002 Vergis Dec 2016 A1
20160350385 Poder Dec 2016 A1
20160364146 Kuttner Dec 2016 A1
20160381442 Heanue Dec 2016 A1
20170004037 Park Jan 2017 A1
20170010652 Huang Jan 2017 A1
20170075583 Alexander Mar 2017 A1
20170075594 Badam Mar 2017 A1
20170091110 Ash Mar 2017 A1
20170109199 Chen Apr 2017 A1
20170109232 Cha Apr 2017 A1
20170123655 Sinclair May 2017 A1
20170147499 Mohan May 2017 A1
20170161202 Erez Jun 2017 A1
20170162235 De Jun 2017 A1
20170168986 Sajeepa Jun 2017 A1
20170177217 Kanno Jun 2017 A1
20170177259 Motwani Jun 2017 A1
20170185316 Nieuwejaar Jun 2017 A1
20170185498 Gao Jun 2017 A1
20170192848 Pamies-Juarez Jul 2017 A1
20170199823 Hayes Jul 2017 A1
20170212708 Suhas Jul 2017 A1
20170220254 Warfield Aug 2017 A1
20170221519 Matsuo Aug 2017 A1
20170228157 Yang Aug 2017 A1
20170242722 Qiu Aug 2017 A1
20170249162 Tsirkin Aug 2017 A1
20170262176 Kanno Sep 2017 A1
20170262178 Hashimoto Sep 2017 A1
20170262217 Pradhan Sep 2017 A1
20170269998 Jung Sep 2017 A1
20170279460 Camp Sep 2017 A1
20170285976 Durham Oct 2017 A1
20170286311 Juenemann Oct 2017 A1
20170322888 Booth Nov 2017 A1
20170344470 Yang Nov 2017 A1
20170344491 Pandurangan Nov 2017 A1
20170353576 Guim Bernat Dec 2017 A1
20180024772 Madraswala Jan 2018 A1
20180024779 Kojima Jan 2018 A1
20180033491 Marelli Feb 2018 A1
20180052797 Barzik Feb 2018 A1
20180067847 Oh Mar 2018 A1
20180069658 Benisty Mar 2018 A1
20180074730 Inoue Mar 2018 A1
20180076828 Kanno Mar 2018 A1
20180088867 Kaminaga Mar 2018 A1
20180107591 Smith Apr 2018 A1
20180113631 Zhang Apr 2018 A1
20180143780 Cho May 2018 A1
20180150640 Li May 2018 A1
20180165038 Authement Jun 2018 A1
20180165169 Camp Jun 2018 A1
20180165340 Agarwal Jun 2018 A1
20180167268 Liguori Jun 2018 A1
20180173620 Cen Jun 2018 A1
20180188970 Liu Jul 2018 A1
20180189175 Ji Jul 2018 A1
20180189182 Wang Jul 2018 A1
20180212951 Goodrum Jul 2018 A1
20180219561 Litsyn Aug 2018 A1
20180226124 Perner Aug 2018 A1
20180232151 Badam Aug 2018 A1
20180260148 Klein Sep 2018 A1
20180270110 Chugtu Sep 2018 A1
20180293014 Ravimohan Oct 2018 A1
20180300203 Kathpal Oct 2018 A1
20180321864 Benisty Nov 2018 A1
20180322024 Nagao Nov 2018 A1
20180329776 Lai Nov 2018 A1
20180336921 Ryun Nov 2018 A1
20180349396 Blagojevic Dec 2018 A1
20180356992 Lamberts Dec 2018 A1
20180357126 Dhuse Dec 2018 A1
20180373428 Kan Dec 2018 A1
20180373655 Liu Dec 2018 A1
20180373664 Vijayrao Dec 2018 A1
20190012111 Li Jan 2019 A1
20190050327 Li Feb 2019 A1
20190065085 Jean Feb 2019 A1
20190073261 Halbert Mar 2019 A1
20190073262 Chen Mar 2019 A1
20190087089 Yoshida Mar 2019 A1
20190087115 Li Mar 2019 A1
20190087328 Kanno Mar 2019 A1
20190116127 Pismenny Apr 2019 A1
20190171532 Abadi Jun 2019 A1
20190172820 Meyers Jun 2019 A1
20190196748 Badam Jun 2019 A1
20190196907 Khan Jun 2019 A1
20190205206 Hornung Jul 2019 A1
20190212949 Pletka Jul 2019 A1
20190220392 Lin Jul 2019 A1
20190227927 Miao Jul 2019 A1
20190272242 Kachare Sep 2019 A1
20190278654 Kaynak Sep 2019 A1
20190317901 Kachare Oct 2019 A1
20190320020 Lee Oct 2019 A1
20190339998 Momchilov Nov 2019 A1
20190377632 Oh Dec 2019 A1
20190377821 Pleshachkov Dec 2019 A1
20190391748 Li Dec 2019 A1
20200004456 Williams Jan 2020 A1
20200004674 Williams Jan 2020 A1
20200013458 Schreck Jan 2020 A1
20200042223 Li Feb 2020 A1
20200042387 Shani Feb 2020 A1
20200089430 Kanno Mar 2020 A1
20200092209 Chen Mar 2020 A1
20200097189 Tao Mar 2020 A1
20200143885 Kim May 2020 A1
20200159425 Flynn May 2020 A1
20200167091 Haridas May 2020 A1
20200210309 Jung Jul 2020 A1
20200218449 Leitao Jul 2020 A1
20200225875 Oh Jul 2020 A1
20200242021 Gholamipour Jul 2020 A1
20200250032 Goyal Aug 2020 A1
20200257598 Yazovitsky Aug 2020 A1
20200322287 Connor Oct 2020 A1
20200326855 Wu Oct 2020 A1
20200328192 Zaman Oct 2020 A1
20200348888 Kim Nov 2020 A1
20200387327 Hsieh Dec 2020 A1
20200401334 Saxena Dec 2020 A1
20200409791 Devriendt Dec 2020 A1
20210010338 Santos Jan 2021 A1
20210075633 Sen Mar 2021 A1
20210089392 Shirakawa Mar 2021 A1
20210103388 Choi Apr 2021 A1
20210191635 Hu Jun 2021 A1
20210286555 Li Sep 2021 A1
Foreign Referenced Citations (4)
Number Date Country
2003022209 Jan 2003 JP
2011175422 Sep 2011 JP
9418634 Aug 1994 WO
1994018634 Aug 1994 WO
Non-Patent Literature Citations (19)
Entry
https://web.archive.org/web/20071130235034/http://en.wikipedia.org:80/wiki/logical_block_addressing wikipedia screen shot retriefed on wayback Nov. 20, 2007 showing both physical and logical addressing used historically to access data on storage devices (Year: 2007).
Ivan Picoli, Carla Pasco, Bjorn Jonsson, Luc Bouganim, Philippe Bonnet. “uFLIP-OC: Understanding Flash I/O Patterns on Open-Channel Solid-State Drives.” APSys'17, Sep. 2017, Mumbai, India, pp. 1-7, 2017, <10.1145/3124680.3124741>. <hal-01654985>.
EMC Powerpath Load Balancing and Failover Comparison with native MPIO operating system solutions. Feb. 2011.
Tsuchiya, Yoshihiro et al. “DBLK: Deduplication for Primary Block Storage”, MSST 2011, Denver, CO, May 23-27, 2011 pp. 1-5.
Chen Feng, et al. “CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Devices”< FAST'11, San Jose, CA Feb. 15-17, 2011, pp. 1-14.
Wu, Huijun et al. “HPDedup: A Hybrid Prioritized Data Deduplication Mechanism for Primary Storage in the Cloud”, Cornell Univ. arXiv: 1702.08153v2[cs.DC], Apr. 16, 2017, pp. 1-14https://www.syncids.com/#.
WOW: Wise Ordering for Writes—Combining Spatial and Temporal Locality in Non-Volatile Caches by Gill (Year: 2005).
Helen H. W. Chan et al. “HashKV: Enabling Efficient Updated in KV Storage via Hashing”, https://www.usenix.org/conference/atc18/presentation/chan, (Year: 2018).
S. Hong and D. Shin, “NAND Flash-Based Disk Cache Using SLC/MLC Combined Flash Memory,” 2010 International Workshop on Storage Network Architecture and Parallel I/Os, Incline Village, NV, 2010, pp. 21-30.
Arpaci-Dusseau et al. “Operating Systems: Three Easy Pieces”, Originally published 2015; Pertinent: Chapter 44; flash-based SSDs, available at http://pages.cs.wisc.edu/˜remzi/OSTEP/.
Jimenex, X., Novo, D. and P. Ienne, “Pheonix:Reviving MLC Blocks as SLC to Extend NAND Flash Devices Lifetime, ”Design, Automation & Text in Europe Conference & Exhibition (Date), 2013.
Yang, T. Wu, H. and W. Sun, “GD-FTL: Improving the Performance and Lifetime of TLC SSD by Downgrading Worn-out Blocks,” IEEE 37th International Performance Computing and Communications Conference (IPCCC), 2018.
C. Wu, D. Wu, H. Chou and C. Cheng, “Rethink the Design of Flash Translation Layers in a Component-Based View”, in IEEE Acess, vol. 5, pp. 12895-12912, 2017.
Po-Liang Wu, Yuan-Hao Chang and T. Kuo, “A file-system-aware FTL design for flash-memory storage systems,” 2009, pp. 393-398.
S. Choudhuri and T. Givargis, “Preformance improvement of block based NAND flash translation layer”, 2007 5th IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and Systems Synthesis (CODES+ISSS). Saizburg, 2007, pp. 257-262.
A. Zuck, O. Kishon and S. Toledo. “LSDM: Improving the Preformance of Mobile Storage with a Log-Structured Address Remapping Device Driver”, 2014 Eighth International Conference on Next Generation Mobile Apps, Services and Technologies, Oxford, 2014, pp. 221-228.
J. Jung and Y. Won, “nvramdisk: A Transactional Block Device Driver for Non-Volatile RAM”, in IEEE Transactions on Computers, vol. 65, No. 2, pp. 589-600, Feb. 1, 2016.
Te I et al. (Pensieve: a Machine Assisted SSD Layer for Extending the Lifetime: (Year: 2018).
Arm (“Cortex-R5 and Cortex-R5F”, Technical reference Manual, Revision r1p1) (Year:2011).
Related Publications (1)
Number Date Country
20210072907 A1 Mar 2021 US
Continuations (1)
Number Date Country
Parent 16515889 Jul 2019 US
Child 17087101 US