Storage system, method and hardware offload card

By connecting the hardware offload card to the storage device in a peer-to-peer manner, combined with dedicated hardware and programmable on-chip systems, the problem of high CPU resource usage in traditional storage technology is solved, and efficient storage task processing and low latency are achieved.

CN115421854BActive Publication Date: 2025-10-10ALIBABA (CHINA) CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211021514.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-08-24
Publication Date
2025-10-10
Estimated Expiration
2042-08-24

AI Technical Summary

Technical Problem

In traditional local storage technology, virtual machines and background IO task processing occupy a large amount of CPU resources, resulting in the inability to achieve high-performance IO and low latency.

Method used

A hardware offload card is used to connect to the storage device in a peer-to-peer manner. Storage tasks are executed through the hardware offload card, and dedicated hardware and programmable on-chip system are used for collaborative processing to achieve software and hardware collaboration of storage tasks, reduce the occupancy of host CPU resources, and implement a processing strategy of CNC separation.

Benefits of technology

It improves the processing efficiency of storage tasks, achieves performance close to the physical hardware level, and achieves higher performance IO and low latency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115421854B_ABST
    Figure CN115421854B_ABST
Patent Text Reader

Abstract

The embodiments of the present specification provide a storage system, a method and a hardware offload card, wherein the storage system comprises: a hardware offload card and a storage device, the hardware offload card and the storage device are connected on a host in a peer-to-peer manner; the hardware offload card is configured to receive a storage task from the host, execute the storage task, and send a data access request corresponding to the storage task to the storage device; and the storage device is configured to transmit storage data corresponding to the data access request based on a transmission channel between the host and the storage device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of this specification relate to the field of computer technology, and in particular to a storage system. Background Art

[0002] With the rapid development of technologies such as big data analysis and artificial intelligence, customers require higher-performance, highly available, scalable, and flexible storage capabilities. However, traditional local storage technologies consume a significant amount of CPU resources for virtual machines and background I / O processing on the host, making it difficult to achieve high-performance I / O and minimize latency.

[0003] Currently, some solutions use pure software, which offers greater flexibility. By standardizing software interfaces, they can unify hardware and software interactions across different device types. However, this standardization neglects the unique data transmission characteristics of different device types, resulting in low efficiency in scenarios involving large data transfer volumes. Summary of the Invention

[0004] In view of this, embodiments of this specification provide a storage system. One or more embodiments of this specification also relate to a storage method, a hardware offload card, a computer-readable storage medium, and a computer program to address technical deficiencies in the prior art.

[0005] According to the first aspect of the embodiments of this specification, a storage system is provided, comprising: a hardware offload card and a storage device, wherein the hardware offload card and the storage device are connected to a host in an equitable manner; the hardware offload card is configured to receive a storage task from the host, execute the storage task, and send a data access request corresponding to the storage task to the storage device; the storage device is configured to transmit storage data corresponding to the data access request based on a transmission channel between the host and the storage device.

[0006] Optionally, the hardware offload card includes a programmable system-on-chip and dedicated hardware; the programmable system-on-chip is configured to identify the software subtasks in the storage task and call the software processing logic running on the programmable system-on-chip to process the software subtasks; the dedicated hardware is configured to execute the hardware subtasks in the storage task.

[0007] Optionally, the programmable system on chip is further configured to identify a medium type of the storage device, configure corresponding interaction rules according to the medium type, and generate the data access request according to the interaction rules.

[0008] Optionally, the dedicated hardware is further configured to establish a virtual device based on virtual device emulation technology, wherein the virtual device is used to abstract the physical storage resources of the storage device and provide virtualized storage resources to the host.

[0009] Optionally, the virtual device is configured to obtain the storage task from the memory address according to the memory address negotiated with the virtual machine of the host.

[0010] Optionally, the dedicated hardware includes a storage protocol processing module, which is configured to parse the communication protocol format of the virtual machine that sends the storage task, convert the communication protocol format of the storage task into a universal communication protocol format, and make the task entering the programmable system on chip in a universal communication protocol format.

[0011] Optionally, a single storage device is abstracted into multiple virtual devices, wherein different virtual devices correspond to different virtual machines in the host, and multiple virtual machines share the storage resources of the single storage device; the programmable system on chip includes a multi-tenant shared task processing module, which is configured to allocate the storage tasks of the multiple virtual machines to different storage areas of the single storage device respectively, and to perform permission verification and access address isolation on the storage tasks.

[0012] Optionally, the host includes a virtual machine, which is provided with a memory; the transmission channel between the memory of the virtual machine and the storage device is a DMA transmission channel; the storage device is configured to directly access the memory of the virtual machine through DMA to transmit the storage data corresponding to the data access request.

[0013] Optionally, the hardware offload card is configured to store the data access request in a memory of the hardware offload card; and the storage device is configured to directly access the memory of the hardware offload card through DMA to obtain the data access request.

[0014] Optionally, the software processing logic run by the programmable system on chip includes: storage resource pooling processing, cache acceleration processing, access request error processing and / or hardware operation and maintenance processing logic.

[0015] According to the second aspect of the embodiments of this specification, a storage method is provided, which is applied to a hardware offload card, wherein the hardware offload card and the storage device are connected to the host in an equal manner, and the method includes: receiving a storage task from the host; executing the storage task; and sending a data access request corresponding to the storage task to the storage device, so that the storage device transmits the storage data corresponding to the data access request based on the transmission channel between the host and the storage device.

[0016] According to the third aspect of the embodiments of this specification, a hardware unloading card is provided, comprising: a memory and a processor; the memory is used to store computer-executable instructions, and the processor is used to execute the computer-executable instructions, which, when executed by the processor, implement the steps of the storage method described in any embodiment of this specification.

[0017] According to a fourth aspect of the embodiments of this specification, a computer-readable storage medium is provided, which stores computer-executable instructions. When the computer-executable instructions are executed by a processor, the steps of the storage method described in any embodiment of this specification are implemented.

[0018] One embodiment of the present specification provides a storage system, which includes a hardware offload card and a storage device, wherein the hardware offload card and the storage device are connected to the host in a peer-to-peer manner, the hardware offload card is configured to receive a storage task from the host, execute the storage task, and send a data access request corresponding to the storage task to the storage device, and the storage device is configured to transmit the storage data corresponding to the data access request based on the transmission channel between the host and the storage device. It can be seen that in this storage system, the storage task is offloaded to the hardware offload card, and the hardware is used to accelerate the execution, reducing the occupation of the host CPU resources, and the task processing efficiency is higher. Moreover, since the storage device obtains the data access request from the hardware offload card in a peer-to-peer manner, it is equivalent to separating the transmission of storage data from the processing of the storage task by the hardware offload card. The storage task that the hardware offload card is responsible for executing is a control-related task and does not carry storage data. The transmission of storage data does not need to pass through the hardware offload card. The storage device directly transmits the storage data corresponding to the data access request to the host, realizing a processing strategy of digital control separation, achieving performance close to the physical hardware level, and achieving higher performance IO and latency. BRIEF DESCRIPTION OF THE DRAWINGS

[0019] Figure 1 This is a structural block diagram of a storage system provided by an embodiment of this specification;

[0020] Figure 2 is a structural block diagram of a storage system provided by another embodiment of this specification;

[0021] Figure 3 This is a structural block diagram of a host provided by another embodiment of this specification;

[0022] Figure 4 This is a schematic diagram of a multi-tenant application scenario on the cloud of a storage system provided by an embodiment of this specification.

[0023] Figure 5 This is a flowchart of a storage method provided by an embodiment of this specification;

[0024] Figure 6 This is a structural block diagram of a computing device provided by one embodiment of this specification. DETAILED DESCRIPTION

[0025] The following description sets forth many specific details to facilitate a thorough understanding of this specification. However, this specification can be implemented in many other ways than those described herein, and those skilled in the art can make similar generalizations without violating the scope of this specification. Therefore, this specification is not limited to the specific implementations disclosed below.

[0026] The terms used in one or more embodiments of this specification are for the purpose of describing specific embodiments only and are not intended to limit one or more embodiments of this specification. The singular forms "a," "the," and "the" used in one or more embodiments of this specification and the appended claims are also intended to include plural forms unless the context clearly indicates otherwise. It should also be understood that the term "and / or" used in one or more embodiments of this specification refers to and includes any or all possible combinations of one or more associated listed items.

[0027] It should be understood that although the terms first, second, etc. may be used to describe various information in one or more embodiments of this specification, such information should not be limited to these terms. These terms are only used to distinguish the same type of information from each other. For example, without departing from the scope of one or more embodiments of this specification, the first may also be referred to as the second, and similarly, the second may also be referred to as the first. Depending on the context, the word "if" as used herein may be interpreted as "at the time of" or "when" or "in response to determining".

[0028] First, the terms involved in one or more embodiments of this specification are explained.

[0029] Local disk: A local disk device based on the physical machine where the virtual machine resides, providing storage access capabilities with high storage IOPS (Input / Output Operations Per Second) and low read and write latency.

[0030] A hardware offload card is a processing card that executes tasks independently of the host CPU. Hardware offload cards can be implemented based on heterogeneous hardware, such as a GPU (graphics processing unit), an FPGA (field programmable gate array), an ASIC (application specific integrated circuit), or a SOC (system on a programmable chip), transferring tasks to hardware processing. In this application, hardware offload cards can include capabilities such as virtualization offload, algorithm acceleration, and protocol stack offload.

[0031] PCIe bus: A high-speed serial computer expansion bus that supports large bandwidth, high performance, low I / O pin count, and small physical footprint.

[0032] SSD: An electronic storage drive built on solid-state architecture. SSD has built-in NAND and NOR flash memory for storing non-volatile data.

[0033] HDD: is a non-volatile computer storage device that contains a high-speed rotating disk or platters used as a secondary storage device for permanent storage of data.

[0034] With the rapid development of technologies such as big data analytics and artificial intelligence, customers demand higher-performance, high-availability, scalable, and flexible storage capabilities. For example, one storage task processing solution is a pure software solution based on virtio / vhost / vhost-user. Virtio is the abstraction layer above devices in a paravirtualized virtual machine monitor. Vhost is a virtual host. vhost-user is the virtio backend. The virtio / vhost / vhost-user solution is essentially a software-defined virtual device, offering flexible implementation. By standardizing software interfaces, it unifies hardware and software interactions across different device types. However, this standardized solution ignores the data transmission characteristics of different device types, resulting in low efficiency in some scenarios involving large data transfers. Furthermore, because virtualization emulation and I / O processing in pure software solutions consume a significant amount of CPU resources, performance cannot match that of physical storage devices.

[0035] Therefore, in this specification, a storage system is provided. This specification also relates to a storage method, a hardware offload card, and a computer-readable storage medium, which are described in detail one by one in the following embodiments.

[0036] See also Figure 1 ,Figure 1 The structure block diagram of a storage system according to one embodiment of the present specification is shown, wherein the storage system 100 includes a hardware offload card 102 and a storage device 104. The hardware offload card 102 and the storage device 104 are connected to a host 110 in an equivalent manner.

[0037] Here, "peer-to-peer connection" means that the hardware offload card 102 and the storage device 104 are at the same layer of the transmission protocol. The implementation of the peer-to-peer connection is not limited. For example, in actual applications, to support peer-to-peer connection of the hardware offload card and the storage device on the host, the hardware offload card and the storage device can be mounted as peer hardware entities under the same PCIe converter of the host.

[0038] The hardware offload card 102 is configured to receive a storage task from the host 110 , execute the storage task, and send a data access request corresponding to the storage task to the storage device 104 .

[0039] The storage task refers to a task related to the operation, use, and / or access to stored data of a storage device. For example, it may include health monitoring, operation and maintenance, data reading / writing, data encryption / decryption, data compression, cyclic redundancy check, database operators, etc. of the storage device. The data access request may be the information carried in the storage task when the virtual machine sends the storage task, or it may be the information generated when the hardware offload card executes the storage task. The storage task may be described by metadata, which is used to carry information representing the content of the storage task. In the case where the data access request corresponding to the storage task is a write request, the data to be written will not be directly placed in the metadata, but will carry the location information of the data to be written. Accordingly, the corresponding generated data access request will carry the location information. In this way, the storage device can initiate a request to the host based on the data access request to obtain the data to be written from the corresponding location.

[0040] The data access request may include a read and / or write request for the stored data in the storage device. In the case where the data access request is a write request, in order to achieve numerical control separation, the data access request does not carry the data to be written, but may carry the location information of the data to be written on the host, so that the storage device can directly obtain the stored data stored in the storage location from the host. The implementation method of the hardware unloading card sending the data access request to the storage device is not limited. For example, in order to speed up access, the hardware unloading card may write the data access request into the memory of the hardware unloading card, and the storage device obtains the data access request from the memory. Specifically, the hardware unloading card 102 may be configured to save the data access request in the memory of the hardware unloading card. The storage device is configured to directly access the memory of the hardware unloading card through DMA to obtain the data access request. The data access request carries the address of the data to be accessed.

[0041] The storage device 104 is configured to transmit the storage data corresponding to the data access request based on a transmission channel between the host 110 and the storage device 104 .

[0042] The transmission channel between the host 110 and the storage device 104 may be connected based on a PCIe (Peripheral Component Interconnect express) physical link. The storage device may be understood as one or more physical hard disks of any one or more media types.

[0043] The hardware offload card 102 can communicate with the storage device 104 via a bus channel. For example, when the hardware offload card performs a storage task, in some scenarios, it is necessary to read and write data stored in the storage device. In this case, the hardware offload card 102 can be configured to access the data stored in the storage device via the bus channel.

[0044] In this storage system, storage tasks are offloaded (this offloading can be understood as transfer) to a hardware offload card, which uses hardware to accelerate the execution of storage tasks, reducing the occupancy of the host CPU resources and improving task processing efficiency. Furthermore, since the storage device obtains data access requests from the hardware offload card in a peer-to-peer manner, the data access requests do not carry storage data, which is equivalent to separating the transmission of storage data from the hardware offload card's processing of storage tasks. For the transmission of storage data to the storage device, the hardware offload card is bypassed, allowing the storage device to directly transmit the storage data corresponding to the data access request to the host, implementing a digital control separation processing strategy, and data does not need to be forwarded through the hardware offload card. Since the transmission of large amounts of storage data does not require multiple copies and transfers from the host to the hardware offload card and then to the physical storage device, excessive demands on the hardware offload card's task processing capabilities and resource processing capabilities are avoided, reducing the hardware offload card's bus traffic burden, thereby achieving performance close to the physical hardware level, enabling acceleration of the storage control and data planes, and achieving higher performance IO and latency.

[0045] In the storage system provided in the embodiments of this specification, in order to prevent storage tasks from consuming host CPU resources, storage tasks are processed through hardware offloading to achieve acceleration. Since not all storage tasks are suitable for hardware acceleration, such as control plane tasks and processing required for specific scenarios, more flexibility is required. However, fixed-execution computing instructions and memory access instructions, large-scale data processing, etc. are suitable for hardware acceleration. Therefore, in order to improve system performance and make the delay index meet system requirements, in the embodiments of this specification, the hardware offload card is implemented through software and hardware collaboration.

[0046] Specifically, see Figure 2 , Figure 2 1 shows a structural block diagram of a storage system provided according to another embodiment of the present specification. The hardware offload card 102 includes a programmable system on chip 1022 and dedicated hardware 1024 .

[0047] The programmable system on chip 1022 may be configured to identify the software subtask in the storage task and call the software processing logic running on the programmable system on chip to process the software subtask.

[0048] The programmable system on chip 1022 (i.e., programmable SOC) can run control logic to identify a software subtask in a storage task, and in the case of identifying the software subtask, call corresponding software processing logic to execute the software subtask. The control logic can be implemented as program software in the programmable system on chip. The software processing logic can be flexibly set according to the actual application scenario of the software subtask. For example, the software processing logic running on the programmable system on chip includes access request error processing logic and / or hardware operation and maintenance processing logic.

[0049] In addition, in actual applications, in order to support the hardware offload card and the storage device to be connected on the host in a peer-to-peer manner, the hardware offload card and the storage device are hung under the same PCIe converter of the host as peer hardware entities. Accordingly, as shown in the structure block diagram, the programmable system on chip can include storage device point-to-point driver software. The storage device point-to-point driver software can also be understood as PCIe point-to-point driver software. Through the storage device point-to-point driver software, the storage device can access the memory address space of the hardware offload card through DMA. Further, the storage device can access the data access request saved in the memory after being processed by the hardware offload card. After obtaining the data access request, the storage device can obtain the address of the data to be written in the host memory or the address of the data to be read in the storage device through format analysis of the data access request, so as to achieve direct access of the storage device to the address space where the data is located, and achieve acceleration of the data plane. Figure 2

[0050] The special hardware 1024 can be configured to execute a hardware subtask in the storage task.

[0051] The hardware processing logic of the special hardware 1024 can be set according to the actual application scenario of the hardware subtask. The special hardware 1024 can be implemented by using any special acceleration hardware according to the scene needs. For example, the special hardware 1024 can be implemented by using ASIC / FPGA and the like.

[0052] In actual applications, the special hardware 1024 can be used to provide acceleration processing capabilities of various types of hardware subtasks. For example, as shown in the structure block diagram, the special hardware 1024 can include a storage acceleration processing module configured to accelerate data read / write tasks, accelerate security verification (such as password verification and the like), and the like. Figure 2

[0053] ​​In this embodiment, software subtasks in storage tasks are identified, and parts that are not suitable for hardware acceleration are correspondingly identified as software subtasks. Hardware subtasks that are suitable for hardware acceleration are offloaded to dedicated hardware for processing, and parts that are not suitable for hardware acceleration are offloaded to programmable on-chip systems for processing by software, thereby realizing a general software-hardware interactive collaboration framework that can flexibly configure storage tasks for pure software processing or dedicated accelerated hardware processing.

[0054] In the embodiments of this specification, the specific implementation of the software processing logic running in the programmable system-on-chip and the hardware processing logic running in the dedicated hardware is not limited, and can be set according to the tasks suitable for the software or hardware to perform. For example, the software processing logic may include: storage resource pooling processing, cache acceleration processing, access request error processing and / or hardware operation and maintenance processing logic. Accordingly, if Figure 2 As shown in the structural block diagram, the programmable system on chip 1022 may include an IO error processing & hardware operation and maintenance processing module.

[0055] Specifically, the access request error handling task may include a processing strategy for abnormal access requests (such as timed IO, erroneous IO, and invalid IO). For example, the access request error handling task may intercept access requests to the storage device when an abnormality or failure occurs in the back-end storage device hardware, to prevent access to invalid address space from causing abnormal downtime of the virtual machine. The hardware operation and maintenance processing task may include an operation and maintenance strategy for abnormal physical hardware (such as storage device storage failure, storage device transmission failure, and other abnormalities). For example, the hardware operation and maintenance processing task module can be connected to the cloud operation and maintenance center to report abnormal physical hardware to the operation and maintenance center and the computer room, thereby realizing offline maintenance and online processing of the abnormal physical hardware. Pooling refers to the pooling and fusion of the storage resources of the underlying storage devices to form a storage resource pool, which is then divided or combined according to the storage capacity required by the user after pooling. Cache acceleration refers to using high-speed media as a cache disk for low-speed media to provide accelerated access capabilities for low-speed media. For example, if SSD has fast access speed, while HDD has large storage space and slow access speed, SSD can be used as cache and HDD as data storage disk to solve the problem of slow HDD access speed.

[0056] Because software subtasks are executed by the programmable SoC, the corresponding software processing logic can be flexibly configured within the SoC's software program. For example, parameters and policies for software processing logic such as health monitoring and operation and maintenance strategies can be customized within the program. Furthermore, the SoC can access physical disk data via the PCIe channel to meet local disk operation and maintenance requirements.

[0057] In actual applications, the media types of storage devices can be diverse. In order to support storage systems with multiple media types, in one or more embodiments of this specification, combined with the above-mentioned software and hardware collaboration ideas, a storage system that supports multiple media and CNC separation can be implemented through the following embodiments to achieve more efficient local disk hardware acceleration. Specifically, the programmable on-chip system 1022 can also be configured to identify the media type of the storage device, configure corresponding interaction rules according to the media type, and generate the data access request according to the interaction rules. Specifically, for example, the dedicated hardware such as Figure 2 As shown, a storage initiator may be included. The storage initiator may be configured to dock with the programmable system-on-chip 1022. After the hardware unloading card is started, the storage initiator will automatically negotiate with the storage target inside the programmable system-on-chip 1022 to determine the communication protocol with the back-end storage device. The storage target inside the programmable system-on-chip 1022 can identify and manage the back-end storage device (including identifying the media type of the storage device). When the storage initiator detects the back-end storage device, it automatically negotiates with the storage initiator to determine the communication protocol to be used for interacting with the storage device. After confirming the communication protocol, a transmission channel from the storage initiator to the storage target is created accordingly.

[0058] For example, the media type of the storage device may include any one or more media types such as SCM persistent media, solid-state storage media, and mechanical hard disk storage media. For example, the interaction rules may include any one or more rules related to interaction with the storage device, such as communication protocols and device drivers. The hardware offload card may load the protocol or software corresponding to the interaction rules, so that the hardware offload card can interact with the corresponding storage device.

[0059] The storage system provided by the above embodiment can simultaneously support multiple types of local disk scenarios and future local disk form innovations, while sinking protocol processing and IO processing to dedicated acceleration hardware chips to achieve hardware-level performance and latency.

[0060] It should be noted that storage devices with different storage media types may use different communication protocols for interaction. According to the above embodiment, the software running on the programmable system-on-chip in the hardware offload card can flexibly configure the interaction rules, allowing the hardware offload card to interact with different types of storage media. However, the data to be read and written is not restricted by the communication protocol and can be directly transmitted between the storage device and the host.

[0061] According to the above embodiment, although different storage media may follow different protocols and have different message formats, the embodiment of this specification uses software running on a programmable system-on-chip to identify interaction rules and write the interaction rules into the configuration of the hardware offload card. After that, the hardware offload card interacts with the storage medium according to the configured rules. In this way, it is possible to support local disks of various forms, and hard disks of different forms can be mounted on the PCIe bus of the host. On the one hand, it can realize the dynamic scalability of hard disk mounting, and on the other hand, it can realize the independence of disk iteration and hardware offload card iteration. For example, storage tasks such as storage virtualization, storage protocol processing, and background management tasks can be offloaded to the hardware offload card for processing. The hardware and software collaboration of the hardware offload card provides processing capabilities to realize linear expansion and scalability of storage devices and more advanced storage functions. It is not limited to a specific storage medium and can simultaneously support multiple media types such as NVMe SSD, HDD, etc., with high versatility.

[0062] In order to flexibly adapt to application scenarios such as multi-tenancy, the dedicated hardware 1024 can also be configured to establish a virtual device based on virtual device simulation technology, which is used to abstract the physical storage resources of the storage device and provide virtualized storage resources to the host. Figure 2 The structural block diagram of the storage system shown in the figure shows that based on the virtual device emulation of the dedicated hardware 1024, the hardware offload card 102 may also include multiple virtual devices established based on virtual device emulation technology. Because virtual devices are virtual hardware simulated based on the IO virtualization capabilities of the hardware offload card, a single physical storage device can be virtualized into multiple virtual devices, which can be mounted to multiple virtual machines on the host, enabling shared access to physical devices by multiple tenants on the cloud.

[0063] In this embodiment, while achieving hardware IO performance, the physical storage resources of the storage device are abstracted within the hardware offload card, providing virtualized storage resources to the host. This allows for the separation and decoupling of the front-end virtual disk and back-end physical disk, supporting various innovations in the back-end physical disk form factor. For example, while the underlying storage device is an HDD, the virtual device presents an NVMe disk to the upper layer. Multiple virtual devices based on virtualization can meet multi-tenant scenarios in cloud computing services, greatly facilitating operations, maintenance, and migration within cloud computing scenarios. For example, virtual device emulation can be implemented based on SR-IOV (Single Root I / O Virtualization) technology. SR-IOV technology is a hardware-based virtualization solution that improves performance and scalability. The SR-IOV standard allows for efficient sharing of PCIe (Peripheral Component Interconnect Express) devices between virtual machines, and because it is implemented in hardware, it can achieve I / O performance comparable to native performance.

[0064] Considering that when the host sends a storage task to the hardware offload card, if it is sent through the host software stack, it is difficult to avoid some processing of the host software stack, resulting in low processing efficiency, therefore, in one or more embodiments of this specification, such as Figure 2 The structural block diagram of the storage system shown in FIG. 1 shows a host 110 including a virtual machine. The virtual device is configured to retrieve the storage task from a memory address negotiated with the host's virtual machine. For example, the virtual device and the virtual machine may pre-negotiate a memory address for storing storage tasks, and the storage task described by metadata may be stored in the area corresponding to the memory address. Because the virtual machine sends the storage task to the memory storage area pre-negotiated with the hardware offload card, the hardware offload card can directly retrieve the storage task from this area, bypassing the host software stack and improving processing efficiency.

[0065] For the virtual machines in the host, the access protocol of the virtual machines to the storage devices is completely separated and decoupled from the back-end physical storage devices. The IO protocol formats of different virtual machines can be different. In order to enable the dedicated hardware and / or programmable chip system in the hardware offload card to identify the protocol formats of the storage tasks of different virtual machines, such as Figure 3 As shown, the dedicated hardware 1024 includes a storage protocol processing module. The storage protocol processing module is configured to parse the communication protocol format of the virtual machine that sends the storage task, convert the communication protocol format of the storage task into a universal communication protocol format, and ensure that the task entering the programmable system on chip is in the universal communication protocol format.

[0066] It should be noted that any module in the dedicated hardware, such as the storage protocol processing module, may be integrated into other modules of the dedicated hardware or may be provided separately from other modules, and this specification does not limit this. For example, the storage protocol processing module may be provided separately from other modules and receive storage tasks from each virtual device for protocol processing.

[0067] Based on the embodiment of setting up a virtual device inside the hardware offload card, in actual application, in order to meet the needs of multiple tenants sharing the storage resources of a single storage device, the single storage device can be abstracted into multiple virtual devices as needed, wherein different virtual devices correspond to different virtual machines in the host, and multiple virtual machines share the storage resources of the single storage device. Accordingly, in order to enable the virtual machines of the host to access only the specified hardware resources and prevent malicious IO access from invading the entire storage system, the programmable system on chip 1022 includes a multi-tenant shared task processing module, which is configured to allocate the storage tasks of the different virtual machines that share the storage resources to different storage areas of the single storage device, and to perform permission verification and access address isolation on the storage tasks.

[0068] The permission check may be a check of the tenant's permissions, such as access permissions, data processing permissions, etc. The access address isolation refers to isolating the access addresses of different storage areas corresponding to different virtual machines to avoid malicious IO access.

[0069] In addition, in order to improve the efficiency of data transmission between the storage device and the host, in one or more embodiments of this specification, the data transmission between the host and the storage device is performed by directly accessing the virtual machine memory through DMA to avoid overhead such as memory copying. Specifically, the host includes a virtual machine, and the virtual machine is provided with a memory. The data transmitted between the host and the storage device can be placed in the memory of the virtual machine. The transmission channel between the host and the storage device is a DMA transmission channel. The storage device is configured to directly access the memory of the virtual machine through DMA to transmit the storage data corresponding to the data access request.

[0070] The following combined Figure 3 , taking the application of internal components of the host as an example, the implementation method of the storage system is further explained. Figure 3 FIG. 1 shows a structural block diagram of a host provided according to another embodiment of the present specification. Figure 4 As shown, the internal components of the host may include:

[0071] The host basic operating environment is configured to provide an environment for basic physical server operations.

[0072] The virtual machine manager is configured to manage resource allocation, life cycle, etc. of the virtual machine. For example, through the virtual machine manager, multiple virtual machines can be set to share host hardware resources.

[0073] The virtual machine memory mapping management is configured to manage the mapping relationship between the memory addresses inside the virtual machine and the memory addresses on the host, so that the application software inside the virtual machine does not need to be aware of the virtualization layer during operation.

[0074] A virtual machine includes storage device driver software and a storage virtualization driver engine. The storage device driver software is a hardware device driver program running within the virtual machine, providing access to storage hardware for applications within the virtual machine. The storage virtualization driver engine connects to the virtual emulated device provided by the hardware offload card, allowing the virtual machine to access the storage hardware without having to identify the underlying hardware as virtual or real.

[0075] In order to make the storage system provided by the embodiment of this specification easier to understand, the following Figure 4 The following is a schematic diagram of a multi-tenant application scenario of a storage system on the cloud provided in combination with multiple embodiments of this specification. Figure 5 As shown, host 110 is any cloud host on the cloud computing platform. Virtual device C in hardware offload card 102 is abstracted from hard disk "Disk 2" of the SCM persistent medium. Virtual device C is mounted in virtual machine A to support tenants on virtual machine A in using the storage resources of hard disk "Disk 2". When hardware offload card 102 is started, the storage initiator in hardware offload card 102 detects "Disk 2" and automatically negotiates with the storage target inside the programmable system on chip 1022 to determine the communication protocol with "Disk 2". By configuring the communication protocol of the SCM persistent medium, a transmission channel between the hardware offload card and "Disk 2" is established.

[0076] The tenant uses the virtual machine A to issue a storage task of "writing storage data B to the underlying storage of the virtual machine". The virtual machine A carries the address of the storage data B in the virtual machine memory in the storage task, and writes the storage task to a memory space agreed in advance by the virtual machine and the virtual device C. After the virtual device C obtains the storage task from the memory of the virtual machine, the virtual device C sends the storage task to the storage protocol processing module. Since the message format of the storage task complies with the communication protocol used by the virtual machine A, the storage protocol processing module converts the storage task into a general communication protocol format. The storage protocol processing module sends the storage task in the general communication protocol format to the programmable system on a chip. The programmable system on a chip identifies that there is a software subtask "multi-tenant shared task" in the storage task, calls the multi-tenant shared task processing module to perform permission verification and access address isolation on the storage task, and determines that the storage data B needs to be written to the storage area XX of the disk 2. Thus, the data access request corresponding to the storage task is a write request of "writing the storage data B to the storage area XX of the disk 2", and the write request carries the address of the storage data B in the virtual machine memory of the host. The write request is generated according to the communication protocol of the "disk 2" and is saved in the hardware offload card memory address space. The disk 2 accesses the hardware offload card memory address space through DMA to obtain the write request. The disk 2 directly accesses the virtual machine A memory to obtain the storage data B through DMA according to the memory address of the storage data B carried by the write request, and writes the storage data B to the disk 2.

[0077] Corresponding to the above-mentioned storage system embodiments, the present specification also provides a storage method embodiment applied to a hardware offload card, Figure 5 A flowchart of a storage method provided by one embodiment of the present specification is shown. As shown in Figure 6 The method comprises the following steps:

[0078] Step 502: receiving a storage task from the host.

[0079] Step 504: executing the storage task.

[0080] Step 506: sending a data access request corresponding to the storage task to the storage device, so that the storage device transmits storage data corresponding to the data access request based on a transmission channel between the host and the storage device.

[0081] According to this method, storage tasks are offloaded to the hardware offload card, and hardware is used to accelerate execution, reducing the occupancy of the host CPU resources and improving task processing efficiency. In addition, since the storage device obtains data access requests from the hardware offload card in a peer-to-peer manner, it is equivalent to separating the transmission of storage data from the processing of the control logic of the storage task by the hardware offload card. The storage device directly transmits the storage data corresponding to the data access request to the host, realizing a digital control separation processing strategy. Data does not need to be forwarded through the hardware offload card, achieving performance close to the physical hardware level, and can achieve higher performance IO and latency.

[0082] The above is a schematic solution of a storage method of this embodiment. It should be noted that the technical solution of this storage method and the technical solution of the above storage system are of the same concept. For details not described in detail in the technical solution of the storage method, please refer to the description of the technical solution of the above storage system.

[0083] For example, the storage method may include a software processing part and a hardware processing part. The software processing part corresponds to the processing of the programmable on-chip system of the storage system, and the hardware processing part corresponds to the processing of the dedicated hardware of the storage system. For details, please refer to the description of the technical solution of the above-mentioned storage system, which will not be repeated here.

[0084] Figure 6 The following is a block diagram of a hardware offload card 600 according to one embodiment of the present disclosure. Components of the hardware offload card 600 include, but are not limited to, a memory 610 and a processor 620. The processor 620 is connected to the memory 610 via a bus 630, and a database 650 is used to store data.

[0085] The hardware offload card 600 also includes an access device 640 that enables the hardware offload card 600 to communicate via one or more networks 660. Examples of such networks include a public switched telephone network (PSTN), a local area network (LAN), a wide area network (WAN), a personal area network (PAN), or a combination of communication networks such as the Internet. The access device 640 may include one or more of any type of network interface (e.g., a network interface card (NIC)), whether wired or wireless, such as an IEEE 802.11 wireless local area network (WLAN) wireless interface, a Worldwide Interoperability for Microwave Access (Wi-MAX) interface, an Ethernet interface, a universal serial bus (USB) interface, a cellular network interface, a Bluetooth interface, a near field communication (NFC) interface, and the like.

[0086] In one embodiment of the present specification, the above components of the hardware offload card 600 and Figure 6 Other components not shown in the figure may also be connected to each other, for example, via a bus. ​The hardware offload card structure block diagram shown is for illustrative purposes only and is not intended to limit the scope of this specification. Those skilled in the art can add or replace other components as needed.

[0087] The processor 620 is configured to execute the following computer-executable instructions, which implement the steps of the above-mentioned storage method when executed by the processor.

[0088] The above is a schematic solution of a computing device of this embodiment. It should be noted that the technical solution of the computing device and the technical solution of the above storage method are of the same concept. For details not described in detail in the technical solution of the computing device, please refer to the description of the technical solution of the above storage method.

[0089] An embodiment of the present specification further provides a computer-readable storage medium storing computer-executable instructions, which implement the steps of the above-mentioned storage method when executed by a processor.

[0090] The above is a schematic solution of a computer-readable storage medium of this embodiment. It should be noted that the technical solution of the storage medium and the technical solution of the above storage method are of the same concept. For details not described in detail in the technical solution of the storage medium, please refer to the description of the technical solution of the above storage method.

[0091] An embodiment of the present specification further provides a computer program, wherein when the computer program is executed in a computer, the computer is caused to execute the steps of the above-mentioned storage method.

[0092] The above is an illustrative solution of a computer program of this embodiment. It should be noted that the technical solution of the computer program and the technical solution of the above storage method are of the same concept. For details not described in detail in the technical solution of the computer program, please refer to the description of the technical solution of the above storage method.

[0093] The foregoing description of this specification describes specific embodiments. Other embodiments are within the scope of the appended claims. In some cases, the actions or steps recited in the claims can be performed in an order different from that described in the embodiments and still achieve the desired results. Furthermore, the processes depicted in the accompanying drawings do not necessarily require the specific order shown or the sequential order to achieve the desired results. In certain embodiments, multitasking and parallel processing are also possible or may be advantageous.

[0094] The computer readable medium can include any entity or apparatus capable of carrying the computer program code, recording medium, U disk, mobile hard disk, magnetic disk, optical disk, computer memory, read-only memory (ROM), random access memory (RAM), electrical carrier signal, telecommunication signal, software distribution medium, etc. It should be noted that the computer readable medium can include appropriate additions or subtractions according to the requirements of legislation and patent practice in the jurisdiction, for example, in some jurisdictions, according to legislation and patent practice, the computer readable medium does not include electrical carrier signals and telecommunication signals.

[0095] It should be noted that for the foregoing method embodiments, the descriptions are expressed as a combination of a series of actions for the sake of simplicity, but those skilled in the art should know that the embodiments of the present specification are not limited by the order of the described actions, because according to the embodiments of the present specification, certain steps can be performed in other orders or simultaneously. Secondly, those skilled in the art should know that the embodiments described in the specification are all preferred embodiments, and the actions and modules involved are not necessarily essential to the embodiments of the present specification.

[0096] In the above embodiments, the description of each embodiment has its own focus, and the parts not described in detail in a certain embodiment can be referred to the related description of other embodiments.

[0097] The preferred embodiments of the present specification disclosed above are only used to help explain the present specification. The alternative embodiments do not describe all the details and limit the invention to the specific embodiments described. Obviously, according to the content of the embodiments of the present specification, many modifications and changes can be made. The present specification selects and specifically describes these embodiments in order to better explain the principles and practical applications of the embodiments of the present specification, so that those skilled in the art can well understand and use the present specification. The present specification is limited only by the claims and their full scope and equivalents.

Claims

1. A storage system comprising: A hardware offload card and a storage device, wherein the hardware offload card and the storage device are connected to the host in an equitable manner; The hardware offload card is configured to receive a storage task from the host, execute the storage task, and send a data access request corresponding to the storage task to the storage device; The storage device is configured to transmit storage data corresponding to the data access request based on a transmission channel between the host and the storage device.

2. The storage system according to claim 1, wherein the hardware offload card comprises a programmable system on chip and dedicated hardware; The programmable system on chip is configured to identify the software subtask in the storage task and call the software processing logic running on the programmable system on chip to process the software subtask; The dedicated hardware is configured to execute the hardware subtasks in the storage task.

3. According to the system of claim 2, the programmable system on chip is further configured to identify the media type of the storage device, configure corresponding interaction rules according to the media type, and generate the data access request according to the interaction rules.

4. According to the system of claim 2, the dedicated hardware is further configured to establish a virtual device based on virtual device emulation technology, and the virtual device is used to abstract the physical storage resources of the storage device and provide virtualized storage resources to the host. 5 . The system according to claim 4 , wherein the virtual device is configured to obtain the storage task from the memory address negotiated with the virtual machine of the host.

6. According to the system of claim 5, the dedicated hardware includes a storage protocol processing module, which is configured to parse the communication protocol format of the virtual machine that sends the storage task, convert the communication protocol format of the storage task into a universal communication protocol format, and make the task entering the programmable system on chip in a universal communication protocol format.

7. The system according to claim 4, wherein a single storage device is abstracted into multiple virtual devices, wherein: Different virtual devices correspond to different virtual machines in the host, and multiple virtual machines share the storage resources of the single storage device; The programmable system on chip includes a multi-tenant shared task processing module, which is configured to allocate the storage tasks of the multiple virtual machines to different storage areas of the single storage device respectively, and to perform permission verification and access address isolation on the storage tasks.

8. The system according to claim 1, wherein the host includes a virtual machine, and the virtual machine is provided with a memory; the transmission channel between the memory of the virtual machine and the storage device is a DMA transmission channel; The storage device is configured to directly access the memory of the virtual machine through DMA to transmit the storage data corresponding to the data access request.

9. The system according to claim 1, wherein the hardware offload card is configured to store the data access request in a memory of the hardware offload card; The storage device is configured to directly access the memory of the hardware offload card through DMA to obtain the data access request.

10. The system according to claim 2, wherein the software processing logic executed by the programmable system on chip comprises: Logic for storage resource pooling, cache acceleration, access request error handling, and / or hardware operation and maintenance.

11. A storage method, applied to a hardware offload card, wherein the hardware offload card and a storage device are connected to a host in a peer-to-peer manner, the method comprising: receiving a storage task from the host; executing the storage task; A data access request corresponding to the storage task is sent to the storage device, so that the storage device transmits the storage data corresponding to the data access request based on a transmission channel between the host and the storage device.

12. A hardware offload card, comprising: memory and processor; The memory is used to store computer-executable instructions, and the processor is used to execute the computer-executable instructions. When the computer-executable instructions are executed by the processor, the steps of the storage method according to claim 11 are implemented.

13. A computer-readable storage medium storing computer-executable instructions, wherein the computer-executable instructions, when executed by a processor, implement the steps of the storage method according to claim 11.

Citation Information

Patent Citations

  • Signal transmitting, storing and controlling system

    CN107562206A

  • Performance variability reduction using an opportunistic hypervisor

    US20180004561A1