WO2022017475A1 - 一种数据访问方法及相关设备 - Google Patents
一种数据访问方法及相关设备 Download PDFInfo
- Publication number
- WO2022017475A1 WO2022017475A1 PCT/CN2021/107932 CN2021107932W WO2022017475A1 WO 2022017475 A1 WO2022017475 A1 WO 2022017475A1 CN 2021107932 W CN2021107932 W CN 2021107932W WO 2022017475 A1 WO2022017475 A1 WO 2022017475A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- ssd
- written
- information
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Definitions
- the present invention relates to the technical field of storage, and in particular, to a data access method and related equipment.
- RDMA remote direct memory access
- RDMA is a direct remote memory access technology, that is, data can be directly and quickly migrated from one system to another remote system memory without any impact on the operating system, reducing the consumption of the central processing unit (CPU) involved in the data transmission process, liberating the memory bandwidth, thereby improving the performance of the system for processing services, with high bandwidth and low latency and low CPU usage.
- CPU central processing unit
- the network device of the host when using RDMA to read and write data, the network device of the host first writes the data to the memory of the storage device through the RDMA operation, and the CPU in the storage device needs to store the data in the memory to a persistent storage medium, such as SSD. .
- a persistent storage medium such as SSD.
- storing the data in the memory to the persistent storage medium through the CPU consumes CPU resources, thereby affecting the communication between the host and the storage device.
- the embodiment of the invention discloses a data access method and related equipment, which can directly store data persistently and reduce the CPU occupation of the storage equipment.
- the present application provides a data access method, including: a network device writes data to be written received from a host into a memory of a storage device, wherein the host is connected to the storage device through the network device ; the network device instructs the SSD to which the data to be written in the storage device is to be written to write the data to be written in the memory to the SSD.
- the network device may be a network interface controller RNIC that supports remote direct memory access, a field programmable gate array FPGA, an application specific integrated circuit (ASIC) chip, or the like.
- RNIC network interface controller
- ASIC application specific integrated circuit
- the network device after writing data into the memory of the storage device, the network device directly instructs the SSD to write the data in the memory of the storage device to the SSD for persistent storage, without the CPU of the storage device participating, thereby reducing the need for CPU usage of the storage device.
- the network device stores the information of the data to be written in the SSD, and instructs the SSD to obtain the information from the memory according to the information of the data to be written data to be written, and write the data to be written to the SSD.
- the information of the data to be written may include the start address and data length of the data to be written in the memory of the storage device.
- the network device directly stores the information of the data to be written to the SSD, so that the SSD can complete the persistent storage of the data to be written according to the information of the data to be written, which can avoid the CPU of the storage device. Participate in reducing the CPU usage of storage devices.
- the network device receives the address in the SSD sent by the storage device for storing the information of the data to be written; the network device stores the information of the data to be written to the address in the SSD where the information of the data to be written is stored.
- the network device obtains the address of the data to be written in the SSD in advance, so as to ensure that the information of the data to be written can be accurately stored in the SSD, avoiding the participation of the CPU of the storage device.
- the address of the information of the data to be written is the address of the submission queue SQ of the SSD.
- the network device receives the address in the SSD sent by the storage device for storing the information of the data to be read; the network device sends the data to be read sent by the host
- the information is stored in the SSD at the address where the information of the data to be read is stored, and the SSD is instructed to obtain the data to be read from the SSD according to the information of the data to be read, and write the data to be read into the memory of the storage device.
- the network device obtains the address in the SSD for storing the information of the data to be read in advance, and then stores the information of the data to be read in the address, thereby instructing the SSD to store the information of the data to be read according to the information of the data to be read.
- the data to be read is written into the memory of the storage device, thus ensuring that the CPU of the storage device is bypassed, the data reading process is directly completed, and the CPU occupation of the storage device is reduced.
- the address used to store the information of the data to be read in the SSD is the address of the doorbell.
- the network device receives a data writing completion notification message returned by the SSD .
- the network device after receiving the data writing completion notification message returned by the SSD, the network device can determine that the data has been successfully written to the SSD and stored persistently, and does not need to repeat the data writing operation to ensure data writing. the integrity of the entry process.
- the present application provides a network device, comprising: a receiving unit for receiving data to be written from a host; a writing unit for writing the data to be written into a memory of a storage device; indicating The unit is configured to instruct the solid-state hard disk SSD in the storage device to which the to-be-written data is to be written to write the to-be-written data in the memory to the SSD.
- the instructing unit is specifically configured to: store the information of the data to be written in the SSD, and instruct the SSD according to the The information of the data to be written acquires the data to be written from the memory, and writes the data to be written into the SSD.
- the receiving unit is further configured to receive an address in the SSD sent by the storage device for storing the information of the data to be written ;
- the indicating unit is further configured to store the information of the data to be written to the address in the SSD where the information of the data to be written is stored.
- the address of the information of the data to be written is the address of the submission queue SQ of the SSD.
- the receiving unit is further configured to receive an address in the SSD sent by the storage device for storing the information of the data to be read;
- the instructing unit is further configured to store the information of the data to be read to the address in the SSD where the information of the data to be read is stored, and instruct the SSD to start from the data according to the information of the data to be read.
- the SSD acquires the data to be read, and writes the data to be read into the memory of the storage device.
- the address used for storing the information of the data to be read in the SSD is the address of the doorbell.
- the receiving unit is further configured to receive a data writing completion notification message returned by the SSD.
- the present application provides a computing device, the computing device includes a processor and a memory, the processor and the memory are connected through an internal bus, and instructions are stored in the memory, and the processor calls the The instructions in the memory are used to execute the above-mentioned first aspect and the data access method provided in combination with any one of the implementation manners of the above-mentioned first aspect.
- the present application provides a computer storage medium, where a computer program is stored in the computer storage medium, and when the computer program is executed by a processor, the above-mentioned first aspect and any combination of the above-mentioned first aspect can be implemented.
- the present application provides a computer program product, the computer program includes instructions that, when the computer program is executed by a computer, enables the computer to execute the above-mentioned first aspect and any implementation manner in combination with the above-mentioned first aspect The flow of the provided data access method.
- FIG. 1 is a schematic diagram of writing data into a solid-state hard disk provided by an embodiment of the present application
- FIG. 2 is a schematic diagram of a system architecture provided by an embodiment of the present application.
- connection establishment method provided by an embodiment of the present application
- FIG. 4 is a schematic flowchart of a data writing method provided by an embodiment of the present application.
- FIG. 5 is a schematic flowchart of a data reading method provided by an embodiment of the present application.
- FIG. 6 is a schematic structural diagram of a network device provided by an embodiment of the present application.
- FIG. 7 is a schematic structural diagram of a computing device provided by an embodiment of the present application.
- a host may also be called a client, and may specifically include a physical machine, a virtual machine, a container, etc., for generating or consuming data, such as an application server, a distributed file system server, and the like.
- the network device of the host is a device used by the host for data communication, and may specifically include a network interface controller (NIC), an RNIC, and the like.
- NIC network interface controller
- the storage device may also be called a server, and may specifically include a device capable of storing data in the form of external centralized storage or distributed storage, such as a storage server, a distributed database server, and the like.
- submission queue (SQ) and doorbell of solid-state storage (SSD) In the storage device, the CPU of the storage device communicates with the SSD through the NVMe protocol. During the initialization phase when the storage device is started, the CPU of the storage device will Establish a submission queue (submission queue, SQ) and a completion queue (completion queue) for the SSD in the memory of the storage device through the NVMe protocol, create a doorbell in the SSD, and the CPU stores the command sent to the SSD in the SQ , and write the command in the doorbell at the position of the SQ, and obtain the command execution from the SQ through the SSD. After the SSD executes a command, the The information is stored in the completion queue, and the CPU can determine the completed command by reading the information of the completed command in the completion queue, and delete the completed command from the sending queue.
- SQ submission queue
- completion queue completion queue
- RDMA communication protocol is a set of protocol specifications followed by computing devices for RDMA operations.
- There are currently three communication protocols that support RDMA namely infinite bandwidth (infiniBand, IB) protocol, Ethernet (RDMA over converged ethernet, RoCE) protocol, Internet wide area (RDMA protocal, IWARP) protocol, these three protocols can all use the same set of APIs, but they have different physical layers and link layers.
- a send queue (send queue, SQ) will be created in the network card of the host, and a receive queue corresponding to the send queue will be created in the network card of the storage device accordingly ( receive queue, RQ), the sending queue and the receiving queue form a queue pair (queue pair, QP), map the address of the queue to the virtual address of the application, and the application can directly transmit data to the storage device through the QP
- the data can be stored in the memory of the storage device.
- the host when the host transmits data through RDMA, it will first transmit the data to the memory of the storage device, and then move the data from the memory to the SSD through the CPU of the storage device.
- FIG. 1 which shows a schematic diagram of a data writing scenario
- the network device 1110 in the host 110 first writes data to the network device (that is, the RNIC 1240 ) of the storage device 120 through an RDMA operation, and then the RNIC 1240 writes data to the CPU 1210
- the data is written into the memory 1220 with the assistance of the RNIC driver 1211 of The data is moved from the memory 1220 to the SSD 1230 for persistent storage.
- the SSD 1230 completes the persistent storage of the data, it notifies the storage software 1212 through an interrupt.
- the CPU 1210 returns a write completion notification message to the host 110 through the RNIC 1240.
- the CPU including the RNIC driver, the storage software, and the SSD driver
- the CPU is required to participate in the entire storage process, which will consume a lot of CPU resources.
- the present application provides a data access method. After the data is stored in the memory through RDMA, the SSD moves the data from the memory to the SSD for persistent storage without the participation of the CPU of the storage device, thereby reducing the need for CPU usage of the storage device.
- the technical solutions of the embodiments of the present application can be applied to any system that requires remote access to persistent storage media, especially for scenarios with bandwidth bottlenecks, such as artificial intelligence (artificial intelligence, AI) training systems, video surveillance systems, supercomputing systems Wait.
- AI artificial intelligence
- video surveillance systems For example, a video surveillance system needs to record a large amount of video data, which requires frequent data access and exchange.
- the video surveillance system can use the data access method provided by the embodiments of the present application to solve the problem.
- the bandwidth bottleneck exists when data is read and written, and the efficiency of data read and write is improved.
- FIG. 2 shows a schematic diagram of a system architecture according to an embodiment of the present application.
- the system 200 includes: an application server 210 and a storage server 220, the application server 210 is connected to the storage server 220 through an RDMA network, the application server 210 includes a CPU 211 and a memory 212, and is connected with an RNIC 213; the storage server 220 includes The CPU 221 and the memory 222 are connected to the RNIC 223 and the persistent storage medium.
- the SSD 224 is used as an example for description. It should be understood that the persistent storage medium includes but is not limited to the SSD 224.
- the application server 210 registers the memory 212 required for data communication with the RNIC 213, and the storage server 220 registers the memory 222 required for data communication with the RNIC 223, so that the RNIC 213 and the RNIC 223 can operate the memory 222 and the memory 212 through RDMA, and the storage server 220 stores the SSD 224
- the submission queue (SQ) address and doorbell address are mapped, and the virtual address obtained after mapping is registered to RNIC223, and RNIC223 sends the SQ address and doorbell address to RNIC213 through RDMA connection, so that RNIC213 can directly Remotely operate the SQ address and doorbell address of the SSD224.
- the application server 210 When data is written, the application server 210 generates data through the CPU 211 and stores the generated data in the memory 212, then writes the data into the memory 222 of the storage server 220 through the RNIC 213, and informs the SSD 224 according to the SQ address and doorbell address of the SSD 224 The data in the memory 222 is moved to the SSD 224 for persistent storage.
- the RNIC 213 and the RNIC 223 are both general-purpose RNICs without special customization.
- the application server 210 and the storage server 220 include physical machines, virtual machines, containers and other forms, and can be deployed in one or more of the cloud environment.
- a computing device eg, a central server
- one or more computing devices eg, servers
- the data access system shown in Figure 2 is compared with the data access system shown in Figure 1.
- the application server writes data to the memory of the storage server through the RDMA operation, it no longer depends on the CPU and storage in the storage server.
- the software processes the data and writes the data to the SSD. Instead, it bypasses the storage server's operating system and directly informs the SSD based on the SSD's SQ address and doorbell address, so that the SSD moves the data in memory to the SSD for persistent storage. , which can reduce the CPU usage of the storage server.
- connection establishment and memory registration process before data access is described, as shown in Figure 3.
- the process includes:
- the application server 210 and the storage server 220 may establish an RDMA connection based on any protocol of IB, RoCE or IWARP.
- the application server 210 and the storage server 220 register the memory addresses (which may be contiguous virtual memory or contiguous physical memory spaces) for data communication, and provide them to the network device as a virtual continuous buffer.
- the buffer uses virtual For the address, in order to facilitate understanding and description, in the embodiment of the present application, the network device is an RNIC as an example for description, and no further distinction will be made in the subsequent description.
- the application server 210 registers the memory 212 with the RNIC 213
- the storage server 220 registers the memory 222 with the RNIC 223 .
- the operating systems of the application server 210 and the storage server 220 will check the permission of the registered block, and the registration process will write the mapping table between the virtual address and the physical address of the memory that needs to be registered into the RNIC.
- the permissions of the corresponding memory area will be set, including local write, remote read, and remote write.
- the memory registration process locks the memory page. In order to prevent the memory page from being replaced, the registration process needs to maintain the mapping of physical and virtual memory at the same time.
- the application server 210 and the storage server 220 can register all their own memory, or randomly select part of the memory for registration, and when registering, register the starting address and the memory of the memory to be registered.
- the data length is provided to RNIC so that RNIC can determine which memory needs to be registered.
- each memory registration will generate a remote identifier (key) and a local identifier.
- the remote identifier is used by the remote host to access the local memory
- the local identifier is used by the local host to access the local memory.
- the storage server 220 provides the remote identification generated by the memory registration to the application server 210 so that the application server 210 can remotely access the system memory 222 of the storage server 220 during the RDMA operation.
- the same memory buffer can be registered multiple times (even with different operation permissions), and each registration will generate a different identity.
- the application server and the storage server will negotiate to create a QP during the process of establishing the RDMA connection, and will create the associated send queue SQ and receive queue RQ when creating the QP.
- the application server 210 and the storage server 220 QP can be used for communication.
- the application server 210 can remotely operate the memory 222 of the storage server 220 through RDMA.
- the storage server 220 maps the SQ address and the doorbell address of the SSD 224 and registers them with the RNIC 223.
- the storage server 220 has established an SQ for the SSD 224 in the memory 222, and established a doorbell in the SSD 224 to implement the communication between the CPU 221 in the storage server and the SSD 224.
- the addresses of the SQ and the doorbell can be provided to the RNIC 223, and then provided by the RNIC 223 to the application server 210, so that the application server 210 can directly operate the SQ address of the SSD and doorbell address.
- the SQ address and the doorbell address are addresses in the memory address space of the kernel mode, and cannot be directly registered to the RNIC223. They need to be converted into virtual addresses in the user mode to register.
- the storage server 220 maps the SQ address and the doorbell address of the SSD to a logically continuous user state virtual address, and then the virtual address obtained by the mapping is provided to the RNIC 223 of the storage server for registration, and its registration process is similar to the above-mentioned memory registration process, After the registration is completed, a remote identifier will also be generated, and the RNIC 223 will send the remote identifier to the application server 210, so that the application server 210 can directly remotely operate the SQ address and doorbell address of the SSD 224.
- the storage server 220 may complete the mapping process in a memory mapping (memory mapping, MMAP) manner, so as to map the SQ address and the doorbell address as virtual addresses in user mode to ensure normal communication therewith.
- MMAP memory mapping
- the storage server 220 associates the SQ address with the QP, stores the association in the SSD 224 and sends it to the application server 210 .
- the SSD 224 will be assigned multiple SQ addresses during the initialization phase
- the RNIC 223 of the storage server 220 and the RNIC 213 of the application server 210 will also create multiple QPs when establishing an RDMA connection
- the management software in the storage server 220 will assign the SQ addresses
- One-to-one correspondence is made with the QP, and the corresponding relationship is sent to the application server 210 and stored in the SSD 224, and the application server 210 stores the corresponding relationship after receiving the corresponding relationship.
- the SSD 224 can identify the QP corresponding to each SQ address according to the stored association relationship, and then can distinguish different clients or application servers.
- the storage server 220 sends the registered SQ address and doorbell address to the application server 210 through the RDMA connection for storage.
- the RNIC 223 of the storage server 220 sends the registered SQ virtual address, the doorbell virtual address and the remote ID generated during registration to the RNIC 213 of the application server 210 through the RDMA connection that has been established, and the RNIC 213 of the application server 210 receives the SQ virtual address After matching with the doorbell virtual address and the remote ID, the SQ address and doorbell address of the SSD224 can be directly and remotely operated according to the remote ID.
- the application server 210 may process the data through RDMA operations, for example, read data from the SSD 224 or write data to the SSD 224.
- the application server 210 and the storage server 220 can successfully establish an RDMA connection and perform data transmission, and the application server 210 can remotely operate the memory 222 of the storage server 220 and the SQ address and doorbell address of the SSD 224 , and then directly write data to SSD224 or read data from SSD224.
- the application in the application server 210 generates data that needs to be written to the SSD 224 of the storage server 220 , and then stores the data in the memory of the application server 210 first.
- the application in the application server 210 sends an RDMA request to the RNIC 213 of the application server 210, where the request includes the address of the data to be written in the memory 212 (for example, including the start address and data length), and then the RNIC 213 responds to the request
- the data to be written is retrieved from the memory 212 of the application server 210, and the address of the data to be written in the storage server 220 (including the starting address and the data length) and the remote address sent by the storage server 220 to operate the memory corresponding to the address
- the identifier is encapsulated into a dedicated packet, and the dedicated packet is sent to the RNIC 223 of the storage server 220 through the RDMA connection.
- the RNIC 223 of the storage server 220 After receiving the dedicated message, the RNIC 223 of the storage server 220 confirms whether the application server 210 has the authority to operate the memory 222 of the storage server 220 according to the remote identifier in the message, and after confirmation, writes the data to be written into the message in the memory corresponding to the address.
- the RNIC 213 of the application server 210 writes the information of the data to be written into the SQ address of the SSD 224.
- the RNIC 213 of the application server 210 operates the SQ address of the SSD 224 by using the remote identifier corresponding to the stored SQ address, and writes the information of the data to be written into the SQ address of the SSD 224, wherein the information of the data to be written includes the information to be written
- the RNIC 213 of the application server 210 operates the doorbell address of the SSD 224 using the remote identifier corresponding to the stored doorbell address, and writes the write data notification information into the doorbell address of the SSD 224, wherein the write data notification information includes writing the data to be written
- the write data notification information includes writing the data to be written
- the SQ address of the information the write data notification information is used to notify the SSD 224 to read the information of the data to be written in the SQ address.
- the SSD 224 reads the information of the data to be written in the SQ address according to the write data notification information in the doorbell address, and moves the data to be written from the memory 222 of the storage server 220 to the SSD 224 according to the information of the data to be written .
- the SSD 224 wakes up after receiving the write data notification information written in the doorbell address, and then reads the content in the SQ address included in the write data notification information, determines that it is a data write operation, and then according to the data to be written
- the address in the information finds the data to be written from the memory 222 of the storage server 220, and moves the data to be written to the SSD 224 to complete persistent storage.
- the data to be written is transferred from the memory 222 of the storage server 220 to the SSD 224 without the participation of any software and CPU, and is directly completed by the SSD 224, which reduces the CPU occupation of the storage server 220 and effectively reduces the cost.
- the SSD 224 notifies the RNIC 223 of the storage server 220 that the data writing is complete, and the RNIC 223 of the storage server 220 notifies the application server 210 that the data writing is complete through the RDMA connection.
- the SSD 224 determines the QP corresponding to the SQ address according to the written SQ address and the association relationship obtained and saved through the above step S303, and indicates that the data writing is completed in the CQ corresponding to the QP
- the RNIC 223 of the storage server 220 determines that the data writing is completed, and then the RNIC 223 of the storage server 220 notifies the application server 210 that the data writing is completed through a standard RDMA operation (such as an RDMAsend operation), thereby completing the entire data writing process.
- the method flow shown in FIG. 4 describes in detail the process of writing data from the application server to the SSD.
- the application server can also read data from the SSD.
- the data reading process will be described in detail below, as shown in FIG. 5 .
- the process includes:
- the RNIC 213 of the application server 210 writes the information of the data to be read into the SQ address of the SSD 224.
- the application in the application server 210 generates a data read request, and then sends the data read request to the RNIC 213 of the application server 210, where the read request includes the address of the data to be read in the SSD 224 (including the start address and the data length). ) and the address where the data is stored in the memory 222 of the storage server 220 after being read from the SSD 224 .
- the RNIC213 of the application server 210 operates the SQ address of the SSD224 using the remote identifier corresponding to the saved SQ address, and writes the information of the data to be read into the SQ address of the SSD224, wherein the information of the data to be read includes the information to be read.
- the starting address and address length of the fetched data in the SSD 224, the address of the data to be read need to be stored in the memory 222 of the storage server 220, and the data operation type (ie, data read operation).
- the RNIC 213 of the application server 210 writes the read data notification information into the doorbell address of the SSD 224.
- the RNIC 213 of the application server 210 operates the doorbell address of the SSD 224 by using the remote identifier corresponding to the stored doorbell address, and writes the read data notification information into the doorbell address of the SSD 224, wherein the read data notification information includes writing the data to be read.
- the SQ address of the information, the read data notification information is used to notify the SSD 224 to read the information of the data to be read in the SQ address.
- the SSD224 reads the information of the data to be read in the SQ address according to the read data notification information in the doorbell address, and moves the to-be-read data from the SSD 224 to the memory 222 of the storage server 220 according to the information of the data to be read .
- the SSD224 wakes up after receiving the read data notification information written in the doorbell address, and then reads the content in the SQ address contained in the read data notification information, determines that it is a data read operation, and then according to the data to be read
- the address in the message retrieves the data from the SSD 224 and moves the data to the memory 222 corresponding to the storage server 220 .
- the RNIC 223 in the storage server 220 stores the data to be read, the address of the data to be read in the application server 210 (including the start address and the data length), and the remote identifier sent by the application server 210 to operate the memory corresponding to the address It is encapsulated into a dedicated packet, and the dedicated packet is sent to the RNIC 213 of the application server 210 through the RDMA connection.
- the RNIC 213 of the application server 210 confirms whether the storage server 220 has the authority to operate the memory 212 of the application server 210 according to the remote identifier in the message, and after confirmation, writes the data to be read into the message in the memory corresponding to the address.
- S505 The SSD 224 notifies the RNIC 223 of the storage server 220 that the data read is completed, and the RNIC 223 of the storage server 220 notifies the application server 210 of the completion of the data read through the RDMA connection.
- the SSD 224 determines the QP corresponding to the SQ address according to the written SQ address and the association relationship obtained and saved through the above step S303, and instructs the data read in the CQ corresponding to the QP Completion, after the RNIC 223 of the storage server 220 parses the CQ, it is determined that the data read is completed, and then the RNIC 223 of the storage server 220 notifies the application server 210 of the completion of the data read through a standard RDMA operation (such as an RDMA send operation), thereby completing the entire data read process.
- a standard RDMA operation such as an RDMA send operation
- FIG. 6 is a schematic structural diagram of a network device provided by an embodiment of the present application.
- the network device 600 includes a receiving unit 610 , a writing unit 620 and an indicating unit 630 . in,
- a receiving unit 610 configured to receive data to be written from the host
- a writing unit 620 configured to write the data to be written into the memory of the storage device
- the instructing unit 630 is configured to instruct the solid-state hard disk SSD in the storage device to which the to-be-written data is to be written to write the to-be-written data in the memory to the SSD.
- the instructing unit is specifically configured to: store the information of the data to be written in the SSD, and instruct the SSD to obtain the information from the memory according to the information of the data to be written.
- the to-be-written data is written, and the to-be-written data is written to the SSD.
- the receiving unit is further configured to receive an address in the SSD sent by the storage device for storing the information of the data to be written; the instructing unit is further configured to store the data to be written The information of the written data is stored at the address in the SSD where the information of the to-be-written data is stored.
- the address of the information of the data to be written is the address of the submission queue SQ of the SSD.
- the receiving unit is further configured to receive an address in the SSD sent by the storage device for storing the information of the data to be read;
- the indicating unit is further configured to store the information to be read from the SSD;
- the information of the data is stored at the address in the SSD where the information of the data to be read is stored, and the SSD is instructed to obtain the data to be read from the SSD according to the information of the data to be read, and Write the data to be read into the memory of the storage device.
- the address for storing the information of the data to be read in the SSD is the address of the doorbell.
- the receiving unit is further configured to receive a data writing completion notification message returned by the SSD.
- each unit of the network device may be added, reduced or combined as required.
- the operations and/or functions of each unit in the network device are respectively to implement the corresponding processes of the methods described in FIG. 3 , FIG. 4 , and FIG. 5 , and are not repeated here for brevity.
- FIG. 7 is a schematic structural diagram of a computing device provided by an embodiment of the present application.
- the computing device 700 includes a processor 710 , a communication interface 720 and a memory 730 , and the processor 710 , the communication interface 720 and the memory 730 are connected to each other through an internal bus 740 .
- the computing device 700 may be the application server in FIG. 2 .
- the functions performed by the application server in FIG. 2 are actually performed by the processor 710 of the application server.
- the processor 710 may be composed of one or more general-purpose processors, such as a central processing unit (central processing unit, CPU), or a combination of a CPU and a hardware chip.
- the above-mentioned hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD) or a combination thereof.
- the above-mentioned PLD may be a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a general array logic (generic array logic, GAL) or any combination thereof.
- the bus 740 may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus or the like.
- PCI peripheral component interconnect
- EISA extended industry standard architecture
- the bus 740 can be divided into an address bus, a data bus, a control bus, and the like. For convenience of representation, only one thick line is used in FIG. 7, but it does not mean that there is only one bus or one type of bus.
- the memory 730 may include volatile memory (volatile memory), such as random access memory (RAM); the memory 730 may also include non-volatile memory (non-volatile memory), such as read-only memory (read- only memory, ROM), flash memory (flash memory), hard disk drive (HDD) or solid-state drive (solid-state drive, SSD); the memory 730 may also include a combination of the above types.
- volatile memory volatile memory
- non-volatile memory such as read-only memory (read- only memory, ROM), flash memory (flash memory), hard disk drive (HDD) or solid-state drive (solid-state drive, SSD
- the memory 730 may also include a combination of the above types.
- the program codes may be used to implement the functional units shown in the network device 600, or used to implement the method steps in the method embodiments shown in FIG. 3, FIG. 4 and FIG. 5 with the application server as the execution body.
- Embodiments of the present application further provide a computer-readable storage medium, on which a computer program is stored.
- the program When the program is executed by a processor, it can implement some or all of the steps described in the above method embodiments, and realize the above The function of any one of the functional units described in FIG. 6 .
- Embodiments of the present application also provide a computer program product, which, when run on a computer or a processor, causes the computer or processor to execute one or more steps in any one of the above methods. If each constituent unit of the above-mentioned device is implemented in the form of a software functional unit and sold or used as an independent product, it may be stored in the computer-readable storage medium.
- the size of the sequence numbers of the above-mentioned processes does not mean the sequence of execution, and the execution sequence of each process should be determined by its functions and internal logic, and should not be implemented in the present application.
- the implementation of the examples constitutes no limitation.
- the functions, if implemented in the form of software functional units and sold or used as independent products, may be stored in a computer-readable storage medium.
- the technical solution of the present application can be embodied in the form of a software product in essence, or the part that contributes to the prior art or the part of the technical solution.
- the computer software product is stored in a storage medium, including Several instructions are used to cause a computer device (which may be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of the present application.
- the aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk and other media that can store program codes .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据访问方法及相关设备。其中,该方法包括:网络设备将从主机接收的待写入数据写入存储设备的内存中,其中所述主机通过所述网络设备连接至所述存储设备;该网络设备指示存储设备中所述待写入数据待写入的固态硬盘SSD将内存中的待写入数据写入所述SSD。上述方法能够将数据直接存储至存储设备的内存,并由SSD将数据从内存搬移至SSD进行持久化存储,不需要存储设备的CPU参与,从而减少对存储设备的CPU占用。
Description
本发明涉及存储技术领域,尤其涉及一种数据访问方法及相关设备。
随着近年来大数据、云计算以及人工智能等计算机信息技术的快速发展,全球互联网数据规模呈指数级增长,众多高并发、低时延应用对高性能硬件的需求催生了高性能存储器的出现。对于高性能存储器而言,由于其I/O吞吐能力强大,分布式文件系统需要分配较多的计算资源以完成数据处理与数据交换,从而导致系统的传输时延增加,限制了网络传输能力和系统性能。为了解决这个问题,远程直接内存访问(remote direct memory access,RDMA)应运而生,RDMA是一种直接进行远程内存存取的技术,即可以直接将数据从一个系统快速迁移到另一个远程系统存储器中,而不对操作系统造成任何影响,减少了中央处理器(central processing unit,CPU)参与数据传输过程的消耗,解放了内存带宽,进而提升了系统处理业务的性能,具有高带宽、低时延及低CPU占用率的特点。
目前使用RDMA在读写数据时,主机的网络设备首先通过RDMA操作将数据写入到存储设备的内存,存储设备中的CPU需要将内存中的数据再存储至持久性的存储介质,例如SSD中。而通过CPU将内存中的数据存储至持久性的存储介质需要消耗CPU资源,从而影响主机与存储设备之间的通信。
因此,如何实现主机的网络设备直接将数据存储至持久性的存储介质,减少对存储设备的CPU占用是目前亟待解决的问题。
发明内容
本发明实施例公开了一种数据访问方法及相关设备,能够直接将数据进行持久化存储,减少对存储设备的CPU占用。
第一方面,本申请提供了一种数据访问方法,包括:网络设备将从主机接收的待写入数据写入存储设备的内存中,其中所述主机通过所述网络设备连接至所述存储设备;该网络设备指示所述存储设备中所述待写入数据待写入的SSD将内存中的待写入数据写入所述SSD。
可选的,网络设备可以是支持远程直接内存访问的网络接口控制器RNIC、现场可编程门阵列FPGA、专用集成电路(application specific integrated circuit,ASIC)芯片等。
在本申请提供的方案中,网络设备在将数据写入存储设备的内存之后,直接指示SSD将存储设备内存中的数据写入SSD进行持久化存储,不需要存储设备的CPU参与,从而减少对存储设备的CPU占用。
结合第一方面,在第一方面一种可能的实现方式中,网络设备将待写入数据的信息存储至SSD,并指示SSD根据所述待写入数据的信息从所述内存中获取所述待写入数据,并将所述待写入数据写入所述SSD。
可选的,待写入数据的信息可以包括待写入数据在存储设备内存中的起始地址和数据长 度。
在本申请提供的方案中,网络设备通过直接将待写入数据的信息存储至SSD,以使SSD根据待写入数据的信息完成对待写入数据的持久化存储,这样可以避免存储设备的CPU参与,减少对存储设备的CPU占用。
结合第一方面,在第一方面一种可能的实现方式中,网络设备接收存储设备发送的SSD中用于存储待写入数据的信息的地址;网络设备将所述待写入数据的信息存储至所述SSD中所述存储所述待写入数据的信息的地址处。
在本申请提供的方案中,网络设备通过提前获取SSD中用于存储待写入数据的信息的地址,保证可以将待写入数据的信息准确存储至SSD,避免存储设备的CPU参与。
结合第一方面,在第一方面一种可能的实现方式中,所述待写入数据的信息的地址为SSD的提交队列SQ的地址。
结合第一方面,在第一方面一种可能的实现方式中,网络设备接收存储设备发送的SSD中用于存储待读取数据的信息的地址;网络设备将主机发送的所述待读取数据的信息存储至所述SSD中所述存储所述待读取数据的信息的地址处,并指示所述SSD根据所述待读取数据的信息从所述SSD中获取所述待读取数据,并将所述待读取数据写入所述存储设备的内存中。
在本申请提供的方案中,网络设备提前获取SSD中用于存储待读取数据的信息的地址,然后将待读取数据的信息存储至该地址,从而指示SSD根据待读取数据的信息将待读取数据写入存储设备的内存,这样保证绕开存储设备的CPU,直接完成数据读取过程,减少对存储设备的CPU占用。
结合第一方面,在第一方面一种可能的实现方式中,SSD中用于存储待读取数据的信息的地址为门铃doorbell的地址。
结合第一方面,在第一方面一种可能的实现方式中,SSD在将存储设备的内存中的待写入数据写入所述SSD之后,网络设备接收所述SSD返回的数据写完成通知消息。
在本申请提供的方案中,网络设备在接收到SSD返回的数据写完成通知消息之后,可以确定数据已经成功写入SSD并进行持久化存储,不需要再重复执行数据写入操作,保证数据写入过程的完整性。
第二方面,本申请提供了一种网络设备,包括:接收单元,用于从主机接收待写入数据;写入单元,用于将所述待写入数据写入存储设备的内存中;指示单元,用于指示所述存储设备中所述待写入数据待写入的固态硬盘SSD将所述内存中的待写入数据写入所述SSD。
结合第二方面,在第二方面的一种可能的实现方式中,所述指示单元,具体用于:将所述待写入数据的信息存储至所述SSD,并指示所述SSD根据所述待写入数据的信息从所述内存中获取所述待写入数据,并将所述待写入数据写入所述SSD。
结合第二方面,在第二方面的一种可能的实现方式中,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储所述待写入数据的信息的地址;所述指示单元,还用于将所述待写入数据的信息存储至所述SSD中所述存储所述待写入数据的信息的地址处。
结合第二方面,在第二方面的一种可能的实现方式中,所述待写入数据的信息的地址为SSD的提交队列SQ的地址。
结合第二方面,在第二方面的一种可能的实现方式中,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储待读取数据的信息的地址;所述指示单元,还用于将所 述待读取数据的信息存储至所述SSD中所述存储待读取数据的信息的地址处,并指示所述SSD根据所述待读取数据的信息从所述SSD中获取所述待读取数据,并将所述待读取数据写入所述存储设备的内存中。
结合第二方面,在第二方面的一种可能的实现方式中,所述SSD中用于存储待读取数据的信息的地址为门铃doorbell的地址。
结合第二方面,在第二方面的一种可能的实现方式中,所述接收单元,还用于接收所述SSD返回的数据写完成通知消息。
第三方面,本申请提供了一种计算设备,所述计算设备包括处理器和存储器,所述处理器和所述存储器通过内部总线相连,所述存储器中存储有指令,所述处理器调用所述存储器中的指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据访问的方法。
第四方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据访问方法的流程。
第五方面,本申请提供了一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的数据访问方法的流程。
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据写入固态硬盘的示意图;
图2是本申请实施例提供的一种系统架构的示意图;
图3是本申请实施例提供的一种连接建立方法的流程示意图;
图4是本申请实施例提供的一种数据写入方法的流程示意图;
图5是本申请实施例提供的一种数据读取方法的流程示意图;
图6是本申请实施例提供的一种网络设备的结构示意图;
图7是本申请实施例提供的一种计算设备的结构示意图。
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
主机又可以称为客户端,具体可以包括物理机、虚拟机、容器等,用于产生或消费数据,例如应用服务器、分布式文件系统服务器等。
主机的网络设备为主机用于数据通信的设备,具体可以包括网络接口控制器(network interface controller,NIC)、RNIC等。
存储设备又可以称为服务端,具体可以包括外置集中式存储或分布式存储等形态的能够存储数据的设备,例如存储服务器、分布式数据库服务器等。
固态存储(SSD)的提交队列(submission queue,SQ)和门铃(doorbell):在存储设备中,存储设备的CPU和SSD通过NVMe协议通信,在存储设备启动时的初始化阶段,存储设备的CPU会通过所述NVMe协议在所述存储设备的内存中为所述SSD建立提交队列(submission queue,SQ)和完成队列(completion queue),在SSD中创建门铃,CPU把发送给SSD的命令存储在SQ中,并将所述命令在所述SQ的位置写在所述门铃中,并通过所述SSD从所述SQ中获取命令执行,当所述SSD执行完一个命令后,将执行完的命令的信息存储在所述完成队列中,CPU通过读取所述完成队列中的执行完的命令的信息,即可确定执行完成的命令,并将执行完成的命令从所述发送队列中删除。
RDMA通信协议是一种用于进行RDMA操作的计算设备所遵循的一套协议规范,目前有三种支持RDMA的通信协议,分别是无限带宽(infiniBand,IB)协议、以太网(RDMA over converged ethernet,RoCE)协议、因特网广域(internet wide area RDMA protocal,IWARP)协议,这三种协议都可以使用同一套API来使用,但它们有着不同的物理层和链路层。在主机设备与存储设备之间通过RDMA进行通信时,会在主机的网卡中创建发送队列(send queue,SQ),相应的会在存储设备的网卡中创建与该发送队列相对应的接收队列(receive queue,RQ),发送队列和接收队列形成队列对(queue pair,QP),将所述队列的地址映射给应用的虚拟地址,应用即可直接通过所述QP将数据传输至所述存储设备的网卡中,进而可以将数据存储于存储设备的内存中。
目前在主机通过RDMA传输数据的时候,会首先将数据传输至存储设备的内存中,然后通过存储设备的CPU将数据从内存搬移至SSD。如图1所示,其示出了一种数据写入场景示意图,主机110中的网络设备1110首先通过RDMA操作将数据写入到存储设备120的网络设备(即RNIC1240中),然后RNIC1240在CPU1210中的RNIC驱动1211协助下将数据写入到内存1220中,存储设备120中的存储软件1212通过事件或中断的方式感知到数据被写入到内存1220中,之后CPU1210通过SSD驱动1213控制SSD1230将数据从内存1220搬移至SSD1230中进行持久化存储,SSD1230在完成对数据持久化存储之后,通过中断的方式告知存储软件1212,最后CPU1210通过RNIC1240向主机110返回写完成通知消息。
由于在对数据进行持久化存储时,需要CPU(包括RNIC驱动、存储软件和SSD驱动)的参与才能完成整个存储过程,这样将消耗大量CPU资源。
基于上述,本申请提供了一种数据访问方法,在通过RDMA的方式将数据存储至内存后,由SSD将数据从内存搬移至SSD进行持久化存储,而无需存储设备的CPU参与,从而减少对存储设备的CPU占用。
本申请实施例的技术方案可以应用于任何需要远程访问持久性存储介质的系统中,尤其对存在带宽瓶颈的场景,例如,人工智能(artificial intelligence,AI)训练系统、视频监控系统、超算系统等。例如,视频监控系统需要记录大量的视频数据,需要频繁的进行数据访问和交换,用户在使用视频监控系统进行数据访问时,视频监控系统中可使用本申请实施例提供的数据访问方法,以解决数据在进行读写时存在的带宽瓶颈,提高数据读写效率。
图2示出了本申请实施例的一种系统架构的示意图。如图2所示,该系统200包括:应用服务器210和存储服务器220,应用服务器210通过RDMA网络与存储服务器220进行连接,应用服务器210包括CPU211和内存212,并连接有RNIC213;存储服务器220包括CPU221和内存222,并连接有RNIC223和持久化存储介质,这里以SSD224为例进行说明,应理解,持久化存储介质包括但不限于SSD224。应用服务器210将数据通信需要的内存212注册给RNIC213,存储服务器220将数据通信需要的内存222注册给RNIC223,以使得RNIC213和RNIC223可以通过RDMA方式操作内存222和内存212,同时存储服务器220将SSD224的提交队列(submission queue,SQ)地址和门铃(doorbell)地址进行映射,并将映射后得到的虚拟地址注册给RNIC223,RNIC223将SQ地址和doorbell地址通过RDMA连接发送给RNIC213,以使得RNIC213可以直接远程操作SSD224的SQ地址和doorbell地址。在数据写入时,应用服务器210通过CPU211产生数据并将产生的数据存储至内存212中,然后通过RNIC213将数据写入存储服务器220的内存222中,并根据SSD224的SQ地址和doorbell地址通知SSD224将内存222中的数据搬移至SSD224中进行持久化存储。
在本申请实施例中,RNIC213和RNIC223都是通用的RNIC,没有经过特殊定制,应用服务器210和存储服务器220包括物理机、虚拟机、容器等形态,可以部署在云环境上的一个或多个计算设备(例如中心服务器),或者边缘环境中的一个或多个计算设备(例如服务器)上。
可以看出,图2所示的数据访问系统与图1所示的数据访问系统相比,应用服务器通过RDMA操作将数据写入到存储服务器的内存之后,不再依赖存储服务器中的CPU和存储软件对数据进行处理从而将数据写入到SSD中,而是直接绕过存储服务器的操作系统直接根据SSD的SQ地址和doorbell地址通知SSD,以使得SSD将内存中数据搬移至SSD进行持久化存储,这样可以减少对存储服务器的CPU占用。
结合图2所示的系统架构的示意图,下面将结合图2描述本申请实施例提供的数据访问方法。首先对数据访问之前的连接建立和内存注册过程进行描述,如图3所示,该流程包括:
S301:应用服务器210和存储服务器220建立RDMA连接。
可选的,应用服务器210和存储服务器220可以是基于IB、RoCE或IWARP任一个协议建立RDMA连接。
具体地,应用服务器210和存储服务器220将需要进行数据通信的内存地址(可以是连续的虚拟内存或者连续的物理内存空间)进行注册,提供给网络设备作为虚拟的连续缓冲区,缓冲区使用虚拟地址,为了便于理解和叙述,本申请实施例中以网络设备为RNIC为例进行说明,在后续描述中不再做进一步区分。例如,应用服务器210将内存212注册给RNIC213,存储服务器220将内存222注册给RNIC223。应理解,在注册时,应用服务器210和存储服务器220的操作系统会检查被注册块的许可,注册进程将需要被注册的内存的虚拟地址与物理地址的映射表写入RNIC,此外,在注册内存时,对应内存区域的权限将会被设定,权限包括本地写、远程读、远程写等。注册后内存注册进程锁定了内存页,为了防止内存页被替换出去,注册进程需要同时保持物理和虚拟内存的映射。
可选的,应用服务器210和存储服务器220在进行内存注册时,可以将自身所有的内存进行注册,或者是随机选取部分内存进行注册,在进行注册时,将需要注册的内存的起始地址和数据长度提供给RNIC,以使得RNIC可以确定需要注册的内存。
值得说明的是,每个内存注册都会对应生成一个远程标识(key)和一个本地标识,远程 标识用于远端主机访问本地内存,本地标识用于本地主机访问本地内存。例如,在接收数据操作的期间,存储服务器220将内存注册产生的远程标识提供给应用服务器210,以使得应用服务器210在RDMA操作期间可以远程访问存储服务器220的系统内存222。另外,同一内存缓冲区可以被多次注册(甚至设置不同的操作权限),并且每次注册都会生成不同的标识。
进一步的,应用服务器和存储服务器在建立RDMA连接的过程中将会协商创建QP,在创建QP时将会创建关联的发送队列SQ和接收队列RQ,在创建完成之后,应用服务器210和存储服务器220可以利用QP进行通信。
可以理解,在应用服务器210和存储服务器220建立RDMA连接之后,应用服务器210可以通过RDMA方式远程操作存储服务器220的内存222。
S302:存储服务器220对SSD224的SQ地址和doorbell地址进行映射并将其注册给RNIC223。
具体地,在存储服务器220的初始化阶段,存储服务器220在内存222中已经为SSD224建立了SQ,且在SSD224中建立了doorbell,以实现存储服务器中的CPU221与SSD224进行通信。在本发明实施例中,为了实现SSD224与网络设备的通信,可以将所述SQ和doorbell的地址提供给RNIC223,从而由RNIC223提供给应用服务器210,以使得应用服务器210可以直接操作SSD的SQ地址和doorbell地址。需要说明的是,该SQ地址和doorbell地址是内核态的内存地址空间中的地址,不能直接注册给RNIC223,需要将其转换为用户态的虚拟地址才能进行注册。
进一步的,存储服务器220将SSD的SQ地址和doorbell地址映射为逻辑连续的用户态虚拟地址,然后将映射得到的虚拟地址提供给存储服务器的RNIC223进行注册,其注册过程与上述内存注册过程类似,注册完成后也会生成一个远程标识,RNIC223会将该远程标识发送给应用服务器210,以使得应用服务器210可以直接远程操作SSD224的SQ地址和doorbell地址。可选的,存储服务器220可以是以内存映射(memory mapping,MMAP)的方式完成映射过程,从而将SQ地址和doorbell地址映射为用户态的虚拟地址,保证可以与其进行正常通信。
S303:存储服务器220将SQ地址和QP进行关联,并将关联关系存储于SSD224以及发送给应用服务器210。
具体地,SSD224在初始化阶段将会被分配多个SQ地址,存储服务器220的RNIC223和应用服务器210的RNIC213在建立RDMA连接时也将会创建多个QP,存储服务器220中的管理软件将SQ地址和QP进行一一对应,并将对应关系发送给应用服务器210并将该对应关系存储于SSD224中,应用服务器210接收到该对应关系之后将其进行保存。
可以看出,在存储服务器220将SQ地址和QP进行关联之后,SSD224可以根据存储的关联关系辨别与各个SQ地址对应的QP,进而可以区分不同的客户端或应用服务器。
S304:存储服务器220将注册的SQ地址和doorbell地址通过RDMA连接发送给应用服务器210进行保存。
具体地,存储服务器220的RNIC223将注册的SQ虚拟地址和doorbell虚拟地址以及注册时产生的远程标识通过已经建立完成的RDMA连接发送给应用服务器210的RNIC213,应用服务器210的RNIC213接收到SQ虚拟地址和doorbell虚拟地址以及远程标识之后,后续可以根据远程标识直接远程操作SSD224的SQ地址和doorbell地址。
应用服务器210在接收到存储服务器220发送的SQ虚拟地址和doorbell虚拟地址之后, 可以通过RDMA操作对数据进行处理,例如从SSD224中读取数据或写入数据到SSD224等。
可以理解,通过执行图3所示的方法流程,应用服务器210和存储服务器220可以成功建立RDMA连接并进行数据传输,应用服务器210可以远程操作存储服务器220的内存222以及SSD224的SQ地址和doorbell地址,进而可以实现将数据直接写入SSD224或从SSD224中读取数据。
结合图2所示的系统架构以及图3所示的连接建立方法流程,下面将对数据写流程进行详细描述,如图4所示,该流程包括:
S401:应用服务器210中的应用将待写入数据写入到本地内存中。
具体地,应用服务器210中的应用产生需要写入存储服务器220的SSD224的数据,然后将该数据首先保存在应用服务器210的内存中。
S402:应用服务器210的RNIC213将待写入数据写入到存储服务器220的内存222中。
具体地,应用服务器210中的应用将RDMA请求发送到应用服务器210的RNIC213,该请求中包括待写入数据在内存212中的地址(例如包括起始地址和数据长度),然后RNIC213根据该请求从应用服务器210的内存212中取出待写入数据,并把待写入数据在存储服务器220中的地址(包括起始地址和数据长度)以及存储服务器220发送的操作该地址对应的内存的远程标识封装到专用报文,将该专用报文通过RDMA连接发送至存储服务器220的RNIC223。存储服务器220的RNIC223接收到专用报文之后,根据报文中的远程标识确认应用服务器210是否具备操作存储服务器220的内存222的权限,在确认之后,将待写入数据写入到报文中的地址对应的内存中。
S403:应用服务器210的RNIC213将待写入数据的信息写入到SSD224的SQ地址中。
具体地,应用服务器210的RNIC213利用保存的SQ地址对应的远程标识操作SSD224的SQ地址,将待写入数据的信息写入到SSD224的SQ地址中,其中,待写入数据的信息包括待写入数据在存储服务器210中的起始地址和数据长度以及数据操作类型(即数据写操作)。
S404:应用服务器210的RNIC213将写数据通知信息写入到SSD224的doorbell地址中。
具体地,应用服务器210的RNIC213利用保存的doorbell地址对应的远程标识操作SSD224的doorbell地址,将写数据通知信息写入到SSD224的doorbell地址中,其中,写数据通知信息包括写入待写入数据的信息的SQ地址,写数据通知信息用于通知SSD224去读取该SQ地址中的待写入数据的信息。
S405:SSD224根据doorbell地址中的写数据通知信息,读取SQ地址中的待写入数据的信息,并根据待写入数据的信息将待写入数据从存储服务器220的内存222中搬移至SSD224。
具体地,SSD224在接收到写入doorbell地址中的写数据通知信息后被唤醒,然后读取写数据通知信息中包含的SQ地址中的内容,确定是数据写操作,然后根据待写入数据的信息中的地址从存储服务器220的内存222中找到待写入数据,并将待写入数据搬移至SSD224,完成持久化存储。
可以看出,待写入数据从存储服务器220的内存222搬移至SSD224不需要任何软件和CPU的参与,直接由SSD224完成,减少了对存储服务器220的CPU占用,且有效降低了成本。
S406:SSD224通知存储服务器220的RNIC223数据写完成,存储服务器220的RNIC223通过RDMA连接通知应用服务器210数据写完成。
具体地,SSD224在完成数据搬移之后,根据被写入的SQ地址以及通过上述步骤S303得到并保存的关联关系,确定与该SQ地址对应的QP,并在该QP对应的CQ中指示数据写完成,存储服务器220的RNIC223解析CQ之后,确定数据写完成,然后存储服务器220的RNIC223 通过标准的RDMA操作(例如RDMAsend操作)通知应用服务器210数据写完成,从而完成整个数据写流程。
可以看出,在将待写入数据写入到SSD224的整个过程中,都不需要存储服务器220的软件和CPU参与,仅仅只需要SSD224和存储服务器220的内存222相配合就可以完成数据写入流程,减小了对存储服务器的CPU占用,此外,普通的RNIC即可以支持该方案,有效扩展了应用场景,降低了应用成本。
图4所述的方法流程详细阐述了数据从应用服务器写入SSD的过程,相应的,应用服务器还可以从SSD中读取数据,下面将对数据读流程进行详细描述,如图5所示,该流程包括:
S501:应用服务器210的RNIC213将待读取数据的信息写入到SSD224的SQ地址中。
具体地,应用服务器210中的应用产生数据读请求,然后将该数据读请求发送到应用服务器210的RNIC213,该读请求中包括待读取数据在SSD224中的地址(包括起始地址和数据长度)以及数据从SSD224读出之后存储于存储服务器220的内存222中的地址。
进一步的,应用服务器210的RNIC213利用保存的SQ地址对应的远程标识操作SSD224的SQ地址,将待读取数据的信息写入到SSD224的SQ地址中,其中,待读取数据的信息包括待读取数据在SSD224中的起始地址和地址长度、待读取数据需要存储于存储服务器220的内存222中的地址以及数据操作类型(即数据读操作)。
S502:应用服务器210的RNIC213将读数据通知信息写入到SSD224的doorbell地址中。
具体地,应用服务器210的RNIC213利用保存的doorbell地址对应的远程标识操作SSD224的doorbell地址,将读数据通知信息写入到SSD224的doorbell地址中,其中,读数据通知信息包括写入待读取数据的信息的SQ地址,读数据通知信息用于通知SSD224去读取该SQ地址中的待读取数据的信息。
S503:SSD224根据doorbell地址中的读数据通知信息,读取SQ地址中的待读取数据的信息,并根据待读取数据的信息将待读取数据从SSD224搬移至存储服务器220的内存222中。
具体地,SSD224在接收到写入doorbell地址中的读数据通知信息后被唤醒,然后读取读数据通知信息中包含的SQ地址中的内容,确定是数据读操作,然后根据待读取数据的信息中的地址从SSD224中取出数据,并将该数据搬移至存储服务器220对应的内存222中。
S504:存储服务器220的RNIC223将待读取数据写入到应用服务器210的内存212中。
具体地,存储服务器220中的RNIC223将待读取数据、待读取数据在应用服务器210中的地址(包括起始地址和数据长度)以及应用服务器210发送的操作该地址对应的内存的远程标识封装到专用报文,将该专用报文通过RDMA连接发送至应用服务器210的RNIC213。应用服务器210的RNIC213接收到专用报文之后,根据报文中的远程标识确认存储服务器220是否具备操作应用服务器210的内存212的权限,在确认之后,将待读取数据写入到报文中的地址对应的内存中。
S505:SSD224通知存储服务器220的RNIC223数据读完成,存储服务器220的RNIC223通过RDMA连接通知应用服务器210数据读完成。
具体地,SSD224在完成数据读取之后,根据被写入的SQ地址以及通过上述步骤S303得到并保存的关联关系,确定与该SQ地址对应的QP,并在该QP对应的CQ中指示数据读完成,存储服务器220的RNIC223解析CQ之后,确定数据读完成,然后存储服务器220的RNIC223通过标准的RDMA操作(例如RDMAsend操作)通知应用服务器210数据读完成,从而完成整个数据读流程。
可以看出,在将数据从SSD224读取到应用服务器210的内存212的过程中,同样不需要 软件和CPU参与,仅依赖于SSD224和存储服务器220的内存222配合即可完成数据读流程,这样减小了对存储服务器220的CPU占用,且有效的扩展了适用场景,降低了应用成本。
需要说明的是,图5所示的方法实施例与图4所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图6,图6是本申请实施例提供的一种网络设备的结构示意图。如图6所示,该网络设备600包括接收单元610、写入单元620和指示单元630。其中,
接收单元610,用于从主机接收待写入数据;
写入单元620,用于将所述待写入数据写入存储设备的内存中;
指示单元630,用于指示所述存储设备中所述待写入数据待写入的固态硬盘SSD将所述内存中的待写入数据写入所述SSD。
作为一个实施例,所述指示单元,具体用于:将所述待写入数据的信息存储至所述SSD,并指示所述SSD根据所述待写入数据的信息从所述内存中获取所述待写入数据,并将所述待写入数据写入所述SSD。
作为一个实施例,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储所述待写入数据的信息的地址;所述指示单元,还用于将所述待写入数据的信息存储至所述SSD中所述存储所述待写入数据的信息的地址处。
作为一个实施例,所述待写入数据的信息的地址为SSD的提交队列SQ的地址。
作为一个实施例,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储待读取数据的信息的地址;所述指示单元,还用于将所述待读取数据的信息存储至所述SSD中所述存储待读取数据的信息的地址处,并指示所述SSD根据所述待读取数据的信息从所述SSD中获取所述待读取数据,并将所述待读取数据写入所述存储设备的内存中。
作为一个实施例,所述SSD中用于存储待读取数据的信息的地址为门铃doorbell的地址。
作为一个实施例,所述接收单元,还用于接收所述SSD返回的数据写完成通知消息。
应理解,上述网络设备的结构仅仅作为一种示例,不应构成具体的限定,可以根据需要对网络设备的各个单元进行增加、减少或合并。此外,网络设备中的各个单元的操作和/或功能分别为了实现上述图3、图4、和图5所描述的方法的相应流程,为了简洁,在此不再赘述。
参见图7,图7是本申请实施例提供的一种计算设备的结构示意图。如图7所示,该计算设备700包括:处理器710、通信接口720以及存储器730,所述处理器710、通信接口720以及存储器730通过内部总线740相互连接。
所述计算设备700可以是图2中的应用服务器。图2中的应用服务器所执行的功能实际上是由所述应用服务器的处理器710来执行。
所述处理器710可以由一个或者多个通用处理器构成,例如中央处理器(central processing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
总线740可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线740可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。
存储器730可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器730也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器730还可以包括上述种类的组合。程序代码可以是用来实现网络设备600所示的功能单元,或者用于实现图3、图4和图5所示的方法实施例中以应用服务器为执行主体的方法步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图6所描述的任意一个功能单元的功能。
本申请实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (16)
- 一种数据访问方法,其特征在于,所述方法包括:网络设备将从主机接收的待写入数据写入存储设备的内存中,其中所述主机通过所述网络设备连接至所述存储设备;所述网络设备指示所述存储设备中所述待写入数据待写入的固态硬盘SSD将所述内存中的待写入数据写入所述SSD。
- 如权利要求1所述的方法,其特征在于,所述主机的网络设备指示所述存储设备中所述待写入数据待写入的SSD将所述内存中的待写入数据写入所述SSD包括:所述网络设备将所述待写入数据的信息存储至所述SSD,并指示所述SSD根据所述待写入数据的信息从所述内存中获取所述待写入数据,并将所述待写入数据写入所述SSD。
- 如权利要求2所述的方法,其特征在于,所述方法还包括:所述网络设备接收所述存储设备发送的所述SSD中用于存储所述待写入数据的信息的地址;所述网络设备将所述待写入数据的信息存储至所述SSD包括:所述网络设备将所述待写入数据的信息存储至所述SSD中所述存储所述待写入数据的信息的地址处。
- 如权利要求3所述的方法,其特征在于,所述待写入数据的信息的地址为SSD的提交队列SQ的地址。
- 如权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:所述网络设备接收所述存储设备发送的所述SSD中用于存储待读取数据的信息的地址;所述网络设备将主机发送的所述待读取数据的信息存储至所述SSD中所述存储所述待读取数据的信息的地址处,并指示所述SSD根据所述待读取数据的信息从所述SSD中获取所述待读取数据,并将所述待读取数据写入所述存储设备的内存中。
- 如权利要求5所述的方法,其特征在于,所述SSD中用于存储待读取数据的信息的地址为门铃doorbell的地址。
- 如权利要求1-6任一项所述的方法,其特征在于,在所述网络设备指示所述存储设备中所述待写入数据待写入的SSD将所述内存中的待写入数据写入所述SSD之后,所述方法还包括:所述网络设备接收所述SSD返回的数据写完成通知消息。
- 一种网络设备,其特征在于,包括:接收单元,用于从主机接收待写入数据;写入单元,用于将所述待写入数据写入存储设备的内存中;指示单元,用于指示所述存储设备中所述待写入数据待写入的固态硬盘SSD将所述内存中的待写入数据写入所述SSD。
- 如权利要求8所述的网络设备,其特征在于,所述指示单元,具体用于:将所述待写入数据的信息存储至所述SSD,并指示所述SSD根据所述待写入数据的信息从所述内存中获取所述待写入数据,并将所述待写入数据写入所述SSD。
- 如权利要求9所述的网络设备,其特征在于,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储所述待写入数据的信息的地址;所述指示单元,还用于将所述待写入数据的信息存储至所述SSD中所述存储所述待写入数据的信息的地址处。
- 如权利要求10所述的网络设备,其特征在于,所述待写入数据的信息的地址为SSD的提交队列SQ的地址。
- 如权利要求8-11任一项所述的网络设备,其特征在于,所述接收单元,还用于接收所述存储设备发送的所述SSD中用于存储待读取数据的信息的地址;所述指示单元,还用于将所述待读取数据的信息存储至所述SSD中所述存储待读取数据的信息的地址处,并指示所述SSD根据所述待读取数据的信息从所述SSD中获取所述待读取数据,并将所述待读取数据写入所述存储设备的内存中。
- 如权利要求12所述的网络设备,其特征在于,所述SSD中用于存储待读取数据的信息的地址为门铃doorbell的地址。
- 如权利要求8-13任一项所述的网络设备,其特征在于,所述接收单元,还用于接收所述SSD返回的数据写完成通知消息。
- 一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述处理器执行所述存储器中存储的计算机指令,使得所述计算设备执行权利要求1-7任一项所述的方法。
- 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法的功能。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP21846481.6A EP4177763A4 (en) | 2020-07-24 | 2021-07-22 | Data access method and related device |
| US18/156,838 US20230152978A1 (en) | 2020-07-24 | 2023-01-19 | Data Access Method and Related Device |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010728735.1A CN113971138A (zh) | 2020-07-24 | 2020-07-24 | 一种数据访问方法及相关设备 |
| CN202010728735.1 | 2020-07-24 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US18/156,838 Continuation US20230152978A1 (en) | 2020-07-24 | 2023-01-19 | Data Access Method and Related Device |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2022017475A1 true WO2022017475A1 (zh) | 2022-01-27 |
Family
ID=79586120
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2021/107932 Ceased WO2022017475A1 (zh) | 2020-07-24 | 2021-07-22 | 一种数据访问方法及相关设备 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20230152978A1 (zh) |
| EP (1) | EP4177763A4 (zh) |
| CN (1) | CN113971138A (zh) |
| WO (1) | WO2022017475A1 (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114490463A (zh) * | 2020-11-13 | 2022-05-13 | 华为技术有限公司 | 一种保序执行写请求的方法及网络设备 |
| CN114996172B (zh) * | 2022-08-01 | 2022-11-01 | 北京得瑞领新科技有限公司 | 基于ssd访问主机内存的方法及系统 |
| CN117453117A (zh) * | 2022-08-17 | 2024-01-26 | 北京超弦存储器研究院 | 一种网络存储处理设备、存储服务器、数据存储及读取方法 |
| CN117032570B (zh) * | 2023-08-07 | 2025-08-19 | 北京有竹居网络技术有限公司 | 数据存储方法、数据读取方法、系统、设备和存储介质 |
| CN116775510B (zh) * | 2023-08-22 | 2023-11-24 | 成都泛联智存科技有限公司 | 数据访问方法、装置、服务器和计算机可读存储介质 |
| CN120687382A (zh) * | 2025-08-15 | 2025-09-23 | 苏州元脑智能科技有限公司 | 内存访问方法和电子设备 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090292861A1 (en) * | 2008-05-23 | 2009-11-26 | Netapp, Inc. | Use of rdma to access non-volatile solid-state memory in a network storage system |
| WO2018188084A1 (zh) * | 2017-04-14 | 2018-10-18 | 华为技术有限公司 | 一种数据访问方法及装置 |
| CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
| CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8949486B1 (en) * | 2013-07-17 | 2015-02-03 | Mellanox Technologies Ltd. | Direct memory access to storage devices |
| US10223326B2 (en) * | 2013-07-31 | 2019-03-05 | Oracle International Corporation | Direct access persistent memory shared storage |
| US9727503B2 (en) * | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
| CN109936510B (zh) * | 2017-12-15 | 2022-11-15 | 微软技术许可有限责任公司 | 多路径rdma传输 |
-
2020
- 2020-07-24 CN CN202010728735.1A patent/CN113971138A/zh active Pending
-
2021
- 2021-07-22 WO PCT/CN2021/107932 patent/WO2022017475A1/zh not_active Ceased
- 2021-07-22 EP EP21846481.6A patent/EP4177763A4/en active Pending
-
2023
- 2023-01-19 US US18/156,838 patent/US20230152978A1/en not_active Abandoned
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090292861A1 (en) * | 2008-05-23 | 2009-11-26 | Netapp, Inc. | Use of rdma to access non-volatile solid-state memory in a network storage system |
| WO2018188084A1 (zh) * | 2017-04-14 | 2018-10-18 | 华为技术有限公司 | 一种数据访问方法及装置 |
| CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
| CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP4177763A4 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20230152978A1 (en) | 2023-05-18 |
| CN113971138A (zh) | 2022-01-25 |
| EP4177763A1 (en) | 2023-05-10 |
| EP4177763A4 (en) | 2023-12-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12561094B2 (en) | Data access method and related device | |
| CN113971138A (zh) | 一种数据访问方法及相关设备 | |
| CN107690622B9 (zh) | 实现硬件加速处理的方法、设备和系统 | |
| US10642777B2 (en) | System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection | |
| WO2022007470A1 (zh) | 一种数据传输的方法、芯片和设备 | |
| US20070041383A1 (en) | Third party node initiated remote direct memory access | |
| US12321635B2 (en) | Method for accessing solid state disk and storage device | |
| CN113490927A (zh) | 具有硬件集成和乱序放置的rdma输送 | |
| CN118606079B (zh) | 一种基于socket接口的通信方法和系统 | |
| CN116069262B (zh) | 一种分布式存储卸载方法、装置、电子设备及存储介质 | |
| CN110535811A (zh) | 远端内存管理方法及系统、服务端、客户端、存储介质 | |
| CN114911411A (zh) | 一种数据存储方法、装置及网络设备 | |
| CN114490463A (zh) | 一种保序执行写请求的方法及网络设备 | |
| KR20170116941A (ko) | 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법 | |
| WO2025055979A1 (zh) | 一种数据处理的方法、相应装置及云系统 | |
| CN118708368A (zh) | 一种分布式内存计算引擎集群的数据处理方法及装置 | |
| CN120448308A (zh) | 基于rdma的数据传输方法、设备、存储介质及程序产品 | |
| WO2020119608A1 (zh) | 基于Spark Shuffle的远程直接内存访问系统及方法 | |
| CN116301610A (zh) | 一种数据处理方法以及相关设备 | |
| CN120256154B (zh) | 数据处理方法、装置、计算机设备、存储介质和程序产品 | |
| US20250278195A1 (en) | Data Read/Write Method and Related Apparatus | |
| US20250252067A1 (en) | Remote node control using rdma | |
| WO2025025678A1 (zh) | 基于云存储服务的数据访问方法、卸载卡、系统及设备 | |
| WO2025242085A1 (zh) | 一种基于云服务系统的数据传输方法以及云服务系统 | |
| CN121764670A (zh) | 一种内存访问方法、系统和装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21846481 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2021846481 Country of ref document: EP Effective date: 20230131 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |