WO2018032510A1 - 应用于存储设备中的访问请求的处理方法和装置 - Google Patents
应用于存储设备中的访问请求的处理方法和装置 Download PDFInfo
- Publication number
- WO2018032510A1 WO2018032510A1 PCT/CN2016/096089 CN2016096089W WO2018032510A1 WO 2018032510 A1 WO2018032510 A1 WO 2018032510A1 CN 2016096089 W CN2016096089 W CN 2016096089W WO 2018032510 A1 WO2018032510 A1 WO 2018032510A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- request
- storage device
- data packet
- data
- access request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Definitions
- the present invention relates to the field of communications, and in particular, to a method and apparatus for processing an access request applied to a storage device.
- the distributed storage system distributes data in a plurality of independent storage devices in a distributed manner, and uses a scalable system structure to share storage load by using multiple storage devices.
- the distributed storage system can interconnect multiple storage devices through the network for unified management.
- Storage clients access storage devices, or storage devices can transfer data over a high-speed network.
- Distributed storage systems are not only reliable, available, and efficient, but are also easy to scale.
- a storage client accesses a storage device
- the storage client when the storage client sends a data packet to the storage device, it is first received by a network interface card (NIC) in the storage device at the receiving end, and is cached in the data buffer of the network card.
- NIC network interface card
- the unpacking and network protocol stack processing is performed in the data buffer of the network card, after which the processor in the storage device copies the data in the data packet from the data buffer of the network card to the dynamic random access of the storage device.
- the memory Dynamic Random Access Memory, DRAM
- the processor of the storage device may copy the data from the DRAM to a corresponding location of the storage medium, which may be a storage class memory (SCM) or a flash memory. (flash).
- the network card generally includes one or more request queues, and each request queue corresponds to one data buffer for buffering the received data packets.
- the copy operation of the data in the data buffer refers to copying the data in the data packet from the request queue of the network card to the memory, such as DRAM, for processing.
- the data copy operation requires a central processing unit (CPU) and memory resources of the storage device. Therefore, if the amount of data contained in the data packet is large, the overhead of the data copy operation will occupy a large proportion in the network transmission. .
- memory bandwidth is a bottleneck in the system, and multiple data copies are bound to consume a large amount of memory bandwidth. Therefore, how to reduce or eliminate the copy of buffer data in a distributed storage system is of great value for optimizing the performance of network requests.
- the present application provides a processing method and apparatus for an access request applied to a storage device, which can reduce the memory bandwidth occupation and data copy time overhead when the storage device processes the data request.
- a first aspect provides a processing method for an access request applied to a storage device, where the storage device includes a network card, a volatile memory, and a non-volatile memory, and the method includes: the network card receiving data sent by another storage device a packet, the data packet includes at least one access request, the data packet carrying request type information of the at least one access request; the network card determining, according to the request type information, whether the at least one access request is performing a modification operation on the storage device a request, when the at least one access request is a request to perform a modification operation on the storage device, the network card stores the data domain portion in the data packet in the non-volatile memory, the data domain portion including the at least one Accessing the requested content of the request; when the at least one access request is a request to perform a non-modifying operation on the storage device, the network card stores the data domain portion of the data packet in the volatile memory.
- the network card determines, according to the request type information included in the received data packet, whether at least one access request in the data packet is a modification operation performed on the storage device. Requesting, when at least one access request is a request to perform a modification operation on the storage device, the network card stores the data domain portion of the data packet in the non-volatile memory; otherwise, the network card stores the data domain portion of the data packet to the In the cryptographic memory, the NIC buffer in the prior art can be integrated with the buffer of the storage system, thereby reducing the copying cost of the data between the two, and is flexibly applied to various application scenarios, avoiding the prior art. Limitation on the performance of the network card; at the same time, reduce the storage request for the storage device to perform the modification operation in the non-volatile memory SCM, reduce the demand for the large capacity of the SCM, and improve the read and write life of the SCM.
- the network card receives a data packet sent by another device, the data packet includes at least one access request, the at least one access request has the same request type, and the at least one access request may be indicated by the request type information in the data packet. Request type.
- the method further includes: the network card is in the header field part of the data packet Stored in the non-volatile memory or the volatile memory, the header field portion contains information indicating an address of the data packet.
- the data packet can include a packet header field and a data domain, and the packet can be The header field and the data domain are both stored in non-volatile memory, wherein the header in the packet can be stored in the persistent request queue in the non-volatile memory; in contrast, when determining the packet When at least one access request is not performing a modification operation on the storage device, for example, when performing a read operation, the data domain portion of the data packet is stored in the volatile memory, and the header field portion and the data domain portion are both stored in the nonvolatile state.
- the header can be stored in a non-persistent request queue in the volatile memory.
- the access requests with different request types are respectively stored in different memories.
- the packet headers in the data packets may be separately stored in different memories, and the type of the access request is to modify the storage device.
- the header field portion of the packet is stored in the persistent request queue of the non-volatile memory, and the header field portion of the packet whose access request type is non-modified for the storage device is stored in the non-persistent memory of the volatile memory.
- each request queue only supports the header of the data packet whose access request type is a modification operation on the storage device, or only the header of the data packet whose access request type is a read operation on the storage device.
- the non-volatile memory may be an SCM, and the data may be performed when at least one access request in the data packet is a modification operation performed on the storage device.
- the packet header field portion of the packet is stored in volatile memory, such as DRAM, but the data domain portion of the packet is still stored in the SCM, and then the header domain portion and the data region can be scatter-gathered. Partially stitched together to get a complete packet.
- the response packet corresponding to the data packet needs to be sent to the sending end of the sending data packet, for example, the data packet is a write request in the key-value system, and the response packet is
- the header field part of the packet can be reused, and the header field part can be reconstructed even if it is lost. Therefore, the header field part of the write request can also be stored in volatile memory, such as DRAM, instead of In SCM. That is, the type of the access request is the header field portion of the packet that performs the modification operation on the storage device, such as the header field of the write request, but is stored in the DRAM, but the data field portion of the packet is still stored in the packet domain. In SCM.
- the header field portion of the data packet whose access request type is a modification operation to the storage device is stored in a volatile memory, such as DRAM, in which the persistent request queue and the non-persistent request are still classified.
- the queue that is, the header field portion of the data packet whose access request type is the modification operation of the storage device is stored in the persistent request queue in the DRAM, and the type of the access request is the packet header of the data packet that performs non-modification operation on the storage device.
- the domain portion is stored in a non-persistent request queue in DRAM.
- the part of the header field of the data packet whose access request type is the modification operation of the storage device is stored in the volatile memory, which can reduce the usage rate of the non-volatile memory SCM, so that the SCM has enough space to store the target data. .
- the network card stores the data packet in the non-volatile memory, including: the network card is in the form of a log Stored in this non-volatile memory.
- storing in the form of a log in a non-volatile memory means storing the address, length, and data content of the data in the packet.
- the data packet is stored in the form of a log, so that the area in which the data packet is stored is the Log storage area in the prior art, and the process of copying data from the storage unit DRAM to the Log storage area in the prior art can be avoided. , further reducing the overhead of data copying.
- the non-volatile memory may be a storage-level memory SCM, and the volatile memory may be a dynamic random access memory (DRAM).
- DRAM dynamic random access memory
- the modifying operation includes at least one of: a write operation, an update operation, and a delete operation; the non-modification operation includes a read operation .
- the request type of the data packet can be determined to be a type of performing a modification operation on the storage device; when the data packet is used to request read data, the data packet The request type can be determined to perform a non-modifying operation on the storage device, that is, perform a read operation.
- the at least one request included in the data packet has the same request type, and the data packet includes request quantity information, where the request quantity information is used by Indicates the number of the at least one access request.
- the sender device may send the same type of request to the storage device through the same data packet, and one or more access requests are included in the data packet, and the data in the data packet corresponds to the data processed by the at least one access request request.
- the at least one access request has the same request type, and the number of the at least one access request may be indicated by the request quantity information, so that the same type of request is avoided to send multiple data packets, thereby reducing system overhead.
- a method for transmitting an access request in a storage device comprising: generating a data packet, the data packet including at least one access request, the data packet carrying the At least one request type information of the access request; sending the data packet to the storage device, so that the storage device determines, according to the request type information, whether the at least one access request is a request to perform a modification operation on the storage device, and when the at least When an access request is a request to perform a modify operation on the storage device, the network card stores the data packet in the non-volatile memory; when the at least one access request is a request to perform a read operation on the storage device, The network card stores the data packet in the volatile memory.
- the method for sending an access request applied to the storage device in the embodiment of the present application generates different data packets according to the request type of the access request, so that the storage device at the receiving end stores the storage device according to the request type of the data packet.
- the data packet of the device performing the modification operation is stored in the non-volatile memory of the storage system, and the data packet for performing the read operation on the storage device is stored in the volatile memory, so that the network card buffer and the storage system in the prior art can be used.
- the cache area is unified, thereby reducing the copying overhead of data between the two; at the same time reducing the storage of non-modifying operations on the storage device in the non-volatile memory SCM, reducing the need for large capacity of the SCM, and improving the SCM Read and write life.
- the generating the data packet includes: aggregating the at least one access request, the data packet, the data packet including the at least one access request, the at least one access request having The same request type, the data packet includes request quantity information, and the request quantity information is used to indicate the number of the at least one access request.
- the sender device sends the same type of request to the storage device through the same data packet, and indicates the number of the at least one access request by using the request quantity information, so as to prevent the same type of access request from sending multiple data packets, thereby reducing System overhead.
- a network card in a storage device for performing the method of any of the first aspect or the first aspect of the first aspect.
- the network card comprises means for performing the method of any of the above-described first aspect or any of the possible implementations of the first aspect.
- a fourth aspect provides an apparatus for transmitting an access request in a storage device, for performing the method in any of the foregoing second aspect or the second aspect of the second aspect.
- the apparatus comprises means for performing the method of any of the possible implementations of the second aspect or the second aspect described above.
- a fifth aspect provides a network card in a storage device, including: a storage unit and a processor, the storage unit is configured to store an instruction, the processor is configured to execute an instruction stored by the memory, and when the processor executes the memory storage The execution causes the processor to perform the method of the first aspect or any of the possible implementations of the first aspect.
- a sixth aspect provides an apparatus for transmitting an access request in a storage device, comprising: a storage unit and a processor, the storage unit is configured to store an instruction, the processor is configured to execute the instruction stored by the memory, and when the processor executes The execution of the memory causes the processor to perform the method of any of the possible implementations of the second aspect or the second aspect.
- a storage device includes a network card, a volatile memory, and a non-volatile memory, wherein the network card is configured to: receive a data packet sent by another storage device, where the data packet includes at least An access request, the data packet carries request type information of the at least one access request; determining, according to the request type information, whether the at least one access request is a request to perform a modification operation on the storage device; when the at least one access request is And storing the data packet in the non-volatile memory when the request for the modification operation is performed on the storage device; storing the data packet in the at least one access request when the request is performed on the storage device Volatile memory.
- the network card in conjunction with the seventh aspect, is the network card in the first aspect or the first implementation manner of any one of the first aspects.
- the eighth aspect provides a distributed storage system, where the distributed storage system includes a first storage device and a second storage device, where the first storage device is configured to: send a data packet to the second storage device,
- the data packet includes at least one access request, the data packet carries request type information of the at least one access request;
- the second storage device is configured to: receive the data packet sent by the first storage device; and according to the request type information Determining whether the at least one access request is a request to perform a modify operation on the storage device; and when the at least one access request is a request to perform a modify operation on the storage device, storing the data packet in the non-volatile memory
- the at least one access request is a request to perform a read operation on the storage device, storing the data packet in the volatile memory.
- the first storage device is further configured to: when the at least one access request is a request for performing a modification operation on the storage device, The form is stored in the non-volatile memory.
- the modifying operation comprises at least one of the following operations: a write operation, an update operation, and a delete operation.
- a ninth aspect a computer readable medium for storing a computer program, the computer program comprising instructions for performing the method of the first aspect or any of the possible implementations of the first aspect.
- a computer readable medium for storing a computer program comprising instructions for performing the method of any of the second aspect or any of the possible implementations of the second aspect.
- FIG. 1 is a schematic diagram of a distributed storage system in accordance with an embodiment of the present invention.
- FIG. 2 is a schematic block diagram of a memory device in accordance with an embodiment of the present invention.
- FIG. 3 is a schematic flowchart of a processing method applied to an access request in a storage device according to an embodiment of the present invention.
- FIG. 4 is a schematic diagram of a data packet format in accordance with an embodiment of the present invention.
- FIG. 5 is another schematic flowchart of a processing method applied to an access request in a storage device according to an embodiment of the present invention.
- FIG. 6 is a schematic block diagram of a network card in a storage device according to an embodiment of the present invention.
- FIG. 1 shows a schematic diagram of a distributed storage system 100.
- the distributed storage system 100 can connect multiple storage devices through a network for unified management.
- the storage device 102 and the storage device 103 can transmit data through the switch; in addition, the storage client 101 can also pass through the switch.
- the storage client 101, the storage device 102, and the storage device 103 each include a network card, and the data packet is received by the network card, and the data packet may include a packet header field and a data domain.
- the storage client 101 sends a data packet to the storage device 102
- the data packet of the storage client 101 is sent to the storage device 102 through the switch, and the network card of the storage device 102 receives the data packet.
- FIG. 2 shows a schematic block diagram of a storage device 200 according to an embodiment of the present invention.
- the device 200 corresponds to the storage device 102 or the storage device 103 in FIG.
- the storage device 200 includes a network card 201, a non-volatile memory 202, a volatile memory 203, a processor 204, an I/O bus 205, and a memory bus 206.
- the processor 204 is connected to the non-volatile memory 202 and the volatile memory 203 via the memory bus 206.
- the processor 204 can access the non-volatile memory 202 and the volatile memory 203 through the memory bus 206.
- the network card 201 is connected to the nonvolatile memory 202 and the volatile memory 203 via the I/O bus 205.
- the network card 201 can access the non-volatile memory 202 and the volatile memory 203 through the I/O bus 205.
- a direct memory access (DMA) engine may be included in the network card 201 through which the network card 201 can directly access the non-volatile memory 202 and the volatile memory 203.
- DMA direct memory access
- the DMA engine can directly control the bus.
- the processor 204 can transfer the bus control to the DMA engine and end the DMA engine to transmit data. The DMA engine then passes the bus control back to the processor 204.
- a complete DMA transfer data process can be divided into four parts: DMA request, DMA response, DMA transfer, and DMA end.
- the DMA can be initialized by the processor 204 and an operational command is issued to the I/O bus 205, which issues a DMA request.
- the DMA controller discriminates the priority and masking of the DMA request and issues a bus request to the bus arbitration logic unit. Bus control is released when processor 204 executes the current bus cycle. At this time, the bus arbitration logic unit outputs a bus response indicating that the DMA has responded, and the DMA controller notifies the I/O bus 205 to start the DMA transfer.
- the processor 204 In the DMA transfer phase, after the DMA engine obtains the bus control, the processor 204 immediately suspends or performs only internal operations, and the DMA controller outputs read and write commands to directly control the memory and the I/O bus 205 for DMA transfer. Therefore, under the control of the DMA engine, data transfer is directly performed between the memory and the external device, and the central processor may not be involved in the transfer process.
- FIG. 3 shows a schematic flowchart of a processing method 300 applied to an access request in a storage device, which may be applied to the storage device 102 in the distributed storage system as shown in FIG. 1 according to an embodiment of the present invention.
- the storage device 103. 2 is a schematic structural diagram of the storage device 102 or the storage device 103.
- the storage device 200 in FIG. 2 will be described in the following embodiments.
- the storage device of the embodiment of the present invention may include a network card, a volatile memory, and a non-volatile memory.
- the method 300 provided by the embodiment of the present invention may be performed by a network card in the storage device 200. 201 execution.
- the method 300 includes:
- the network card receives a data packet sent by another storage device, where the data packet includes at least one access request, where the data packet carries request type information of the at least one access request.
- the storage device 200 can receive a data packet sent by a client or other storage device through the network card 201.
- the storage client 101 can send a data packet to the storage device 102 through the network card, or
- the storage device 103 transmits a data packet to the storage device 102 through the network card, and the storage device 102 can receive the data packet sent by the storage client 101 or the storage device 103 through the network card.
- the data packet may include at least one access request, and the data packet further includes request type information, where the request type information is used to indicate a request type of the at least one access request, for example, the request type information may indicate the
- the at least one access request is a read data request, or a write data request, or an update data request, or a delete data request.
- S320 Determine, according to the request type information, whether the at least one access request is a request to perform a modification operation on the storage device.
- the network card only parses the content of the packet header to the data packet by default, for example, a distributed storage system supporting a key value (Key-Value), and the header content of the data packet includes an Ethernet header and a network.
- the protocol (Internet Protocol, IP) header and the User Datagram Protocol (UDP) header are used to route and determine whether the requested address belongs to the current storage device, but is generally not processed for the data region.
- IP Internet Protocol
- UDP User Datagram Protocol
- the network card 201 of the storage device 200 determines the request type of the at least one access request in the data packet according to the request type information in the data packet, and determines the Whether at least one access request is a request to perform a modification operation on the storage device.
- the other device may augment or modify the format of the existing data packet, for example, filling a specific packet header field, thereby indicating at least the packet in the packet by using the request type information included in the data packet.
- the type of request for an access request For example, a request type field is added in the data field of the data packet, and the request type field indicates the request type of at least one access request in the data.
- the request types of the at least one access request in the data packet may be divided into two categories, one is a request for performing a modification operation on the storage device; and the other is to perform non-modification on the storage device.
- a request for a class operation such as a request to perform a read operation on a storage device.
- the request type can be generally distinguished according to read/write. After the data in the read request packet is lost, the correctness of the system data is not affected, so the request type of the read request is a non-modified operation on the storage device, or It is called to perform a read operation on the storage device; when the data in the write request packet is lost, the system data is inconsistent, so the request type of the write request is to perform a modification class operation on the storage device.
- updating a data request or deleting a data request changes the data in the system when the data is lost in the data packet. Therefore, updating the data request or deleting the data request belongs to the storage.
- the device performs the request type that modifies the class operation.
- a get request similar to a read request, is used to read data from a storage node, and the data in the corresponding data packet may be retransmitted after an error, without affecting data consistency.
- the get request belongs to the type of request that performs a read operation on the storage device.
- the put request similar to the write request, needs to ensure that the data in the data packet is correctly written into the storage system, thereby ensuring the consistency of the system data, and the put request belongs to the request type for performing the modification operation on the storage device.
- the request type information included in the data packet may be extended or modified by the format of the request packet, for example, filling a specific header field, or modifying a data field in the data packet, thereby indicating the data by carrying the request type information.
- a request type field may be included in the data packet, the request type field being used to indicate a request type of at least one access request included in the data packet.
- the following takes the distributed storage system supporting Key-Value as an example, and adds a request type field in the data domain part of the data packet, and the format of the data packet can be as shown in FIG. 4 .
- the data packet may be divided into two parts: a packet header field and a data domain in which the data to be processed is located, where the data field includes a request content of at least one access request in the data packet; the header field includes Information indicating the indicated address of the data packet.
- the header field part of the embodiment of the present invention is similar to the packet header of the traditional data packet, and includes an Ethernet header, an IP header, and a UDP header, and is used to indicate address information of the network.
- the part of the data field in the data packet is different from the traditional data packet, and includes not only the data to be transmitted but also further divided into multiple regions.
- the data field part may include a request type field, where the request type field carries request type information, and is used to indicate a request type of at least one access request included in the data, that is, to identify the at least one access request to store Whether the device performs the modification operation.
- the request type field may identify, by a predetermined value, whether at least one access request in the data packet performs a modification operation on the storage device. For example, the request type of the access request included in the data packet is 0 to perform a modification operation on the storage device, and the request type to identify the access request by 1 is to perform a non-modification operation on the storage device, that is, perform a read operation.
- the request type field may also represent a specific request content of the data packet, and according to the content of the request, determine whether the access request of the data packet performs a modification operation on the storage device, for example, for the Key-Value system, the access in the data packet.
- the request may be a get request, that is, the request type field indicates that the access request in the data packet is a get request, and the get request is similar to the read request, and the type of the access request may be determined to perform a non-modification operation on the storage system;
- a request similar to a write request, can determine that the type of the access request is to perform a modify operation on the storage system.
- the request quantity information may be further included in the data packet, where the request quantity information is used to indicate the total number of at least one access request in the data packet.
- the data packet generated and sent by the sending end may include one or more access requests, and when the data packet includes multiple access requests, the multiple access requests belong to the same request type, and may request the quantity information. Indicates the number of multiple access requests in this packet.
- the data field portion of the data packet may further include a request quantity field by which the number of at least one access request in the data packet is indicated.
- the data field part may further include a request header field, where the request header is used to indicate information such as the size of the data requested to be processed in the data packet, for example, as shown in FIG. 4, the request quantity field of the data packet.
- the data packet is instructed to include n access requests corresponding to the request headers 1 to n, and the request header of each data corresponds to the size of the partial request data.
- the request header field in the data field may further include information indicating a specific type of operation of the access request in the data packet.
- the specific operation type of the access request is determined according to the request field in the data packet.
- the access request is determined to be a write request according to the request field, or the access request is determined to be a read request.
- the processor 204 in the storage device 200 can parse the request header field of the data domain part when the data packet needs to be processed, and determine the access request of the data according to the request header field, for example, Determining, according to the request header field, that the access request is a write request, writing data in the data packet to the phase Should be in the storage unit.
- the data field portion may further include a data field, where the data field is used to carry data processed by the data packet request.
- the data field carries data that the data packet needs to be written; for example, for a read request, the data field may carry address information of the data that the data packet requests to read, and the like.
- the data field portion in the data packet may specifically include a key attribute field, and may also include a value attribute field.
- the data domain part when the data packet is a get request, the data domain part includes a key attribute domain, and does not include a value attribute domain; when the data packet is a put request, for example, as shown in FIG. 4, the data domain part includes a key attribute domain. And the value attribute field.
- the data field portion of the data packet includes at least one request content of the access request
- the request content may refer to data carried in the data field in the data packet.
- the request content may include a request header.
- the field and the key attribute field can also include the value attribute field.
- the data field of the data packet may also be consistent with the content of the request of the at least one access request, that is, the content of the request of the at least one access request includes all data domain parts.
- the sending end of the sending data packet may aggregate multiple access requests belonging to the same request type into one data packet for transmission.
- the sending end may be a storage client.
- the storage client may first add the multiple access requests to the storage client's cache queue, taking the read request as an example.
- the plurality of read requests in the current cache queue may be aggregated into one large read request data packet, and the size of the aggregated read request data packet may not exceed the maximum limit of the payload, according to the format of the data packet, A header of IP, DUP, or the like is added to the read request packet after the aggregation, and a packet including a plurality of access requests in the above format is formed, and the packet is transmitted to the storage device.
- a plurality of write requests in the current cache queue can be aggregated into one large write request data packet, and the Key and the Value are sequentially stored.
- the size of the aggregated data packet does not exceed the limit of the payload. , plus IP, DUP and other headers to form a packet in the above format.
- the same type of access request such as Update, delete, etc., in the same way, the same type of access request can be combined into one data packet for transmission.
- the network card stores the data domain portion in the data packet in the non-volatile memory, where the data domain portion includes the at least one access. The requested content of the request.
- the network card 201 of the storage device 200 stores the data domain portion in the data packet to In the non-volatile memory 202, optionally, the header field portion of the data packet may also be stored in a corresponding persistent request queue in the non-volatile memory 202, and the persistent request queue is also non-volatile.
- the portion of the data field stored in the memory 202 corresponds to the portion of the header field of the packet containing information indicating the address of the packet.
- the network card stores the data domain portion in the data packet in the volatile memory.
- the network card 201 of the storage device 200 is in the data packet.
- the data field portion is stored in the volatile memory 203.
- the header field portion of the data packet can also be stored in a non-persistent request queue in the volatile memory 203, the non-persistent request queue and The data field portion stored in the volatile memory 203 corresponds to each other.
- the network card of the storage device after receiving the data packet, includes the data cached in the request queue of the network, that is, the data buffer, and the data buffer of the network card may be a portion occupying the volatile memory DRAM. a region, after which the data is unpacked and processed by a network protocol stack, etc., and the data is copied from the data buffer of the network card to the DRAM of the storage device for further processing by the storage device, for example, for a write request, The data in the data packet is then written from the DRAM to the corresponding memory unit to complete the write operation.
- the performance bottleneck of the network mainly consists of two parts: the processing of the network protocol stack and the copy operation of the buffer data.
- Existing data packets are generally divided into two parts: the header and the data.
- the header contains information such as the request packet type and network address, such as Ethernet header, IP header, and UDP header.
- the processing of the network protocol stack mainly includes parsing, identifying, and processing the packet header of the data packet, and performing functions such as corresponding network forwarding and request extraction.
- DPDK Data Plane Development Kit
- ODP Open Data Plane
- the data copy operation requires CPU and internal Save resources. If the amount of data contained in the network request is large, the overhead of the data copy operation will occupy a large proportion in the network transmission.
- the network card may include two types of request queues, which are a persistent request queue and a non-persistent request queue.
- Each type of the two types of request queues may include multiple request queues, and each request queue is used for each request queue.
- the packet header field part of the data packet is stored, and each queue only supports the packet header field corresponding to the same request type. For example, for any queue, only the data packet of the request type whose request type is a modification operation for the storage device can be stored.
- the persistent request queue can be in non-volatile memory, while the non-persistent request queue is in volatile memory.
- the persistent request queue is used to store a header included in the data whose request type is a modification operation on the storage device
- the non-persistent request queue is used to store a header included in the data whose request type is a read operation on the storage device.
- the network card when parsing the request data type of the at least one access request included in the data packet, the network card may analyze the request type to determine whether the packet header in the data packet corresponds to the persistent request queue or non-persistent Request queue.
- the sending end of the sending data packet for example, a storage client or other storage device, encapsulates the data packet according to the request type of the data packet to the access request. After that, the receiving end storage device stores the packet header of the data packet into a different request queue according to the type of the access request in the data packet.
- each request queue may also adopt a cyclic data queue.
- the data domain part in the data packet is also directly stored in the non-volatile memory, and the type of the access request is performed on the storage device.
- Non-modifying operations such as read operations, also store the data field portion of the data packet directly into volatile memory without the need to cache data in the data packet in the NIC's data in the DRAM as in the prior art.
- the buffer is copied to the storage area of the DRAM, and then the data is rewritten into different storage units according to the content of the data packet to the access request, thereby reducing the overhead of copying the data buffer of the network card to the storage unit. .
- the data domain portion in the data packet is partially stored in the non-volatile memory, and the non-volatile memory has a memory characteristic, and the network card can pass
- the DMA engine directly accesses the non-volatile memory and writes the data domain portion of the packet to the non-volatile memory.
- the non-volatile memory can be storage level memory (Storage Class Memory, SCM).
- SCM Storage Class Memory
- SCM has performance and storage capacity between DRAM and flash memory, and has a memory access interface to maintain the persistence of data stored in the SCM.
- SCM is about to become an important storage medium in high-performance storage systems.
- a data buffer can be included, which is used to store portions of the data fields in the data packet.
- the network card includes a data buffer, and the data buffer may be located in the DRAM, and the network card stores the data in the data buffer, and then copies the data into the storage unit DRAM, and the embodiment of the present invention
- the data is directly stored in the data buffer of the non-volatile memory, and there is no need to copy the data from the buffer of the network card to the storage unit as in the prior art.
- each data buffer may be the same as the maximum transmission unit (MTU) of the network card.
- MTU maximum transmission unit
- the data buffer in the SCM can also be used to store the header of the corresponding data packet, that is, the data buffer can be used to store the persistent request queue.
- the data buffer in the SCM can also serve as the log area of the storage device.
- the storage device can first write data to the Log area when receiving a data request that needs to be persisted, such as a write request.
- the Log area of the storage device is generally a continuous physical area, and the data write mode of the Log area is sequentially written.
- the Log area may also be located in the SCM, or other storage unit, the network card writes data into the data buffer of the network card, and then copies the data to the storage unit, for example, from the data buffer to the DRAM. in.
- the processor in the storage device processes the write request, the data needs to be copied from the DRAM to the storage area of the corresponding storage unit, for example, in the storage area of the SCM, and executed in the processor.
- the processor of the storage device may first write related information of the data, such as a data address and a data content, to the Log area, so that an error occurs in subsequently writing the data corresponding to the write request to the corresponding storage area.
- the rewrite or undo write can be performed according to the information recorded in the Log area.
- the data buffer in the SCM can also be used as a Log area, that is, the network card directly writes the data in the data packet of the type of the access request to the storage device to the non-volatile memory SCM.
- the data buffer of the SCM is equivalent to the NIC data buffer, the DRAM area and the Log area in the prior art.
- the data buffer of the SCM is used as a Log area, and in the process of storing data in the data packet, the data is stored in a log form, that is, the address, the length, and the data content of the data in the data packet are stored, where the data
- the address indicates the information of the address finally stored in the data. For example, if the access request in the data packet is a write request, when storing in the form of a log, the address information of the final write location of the write data needs to be stored; the length of the data Is the size of the data.
- the read operation is performed on the storage device, and the data in the data packet is directly stored in the volatile memory, and the volatile memory can be stored in the DRAM.
- the DRAM can also include a data buffer for storing data in the data packet.
- the network card directly stores the data of the access request in the data packet for the read operation of the storage device into the data buffer of the volatile memory, without buffering to storing as in the prior art. A copy of the data for the unit.
- the data buffer in the DRAM can also be used to store a header of a data packet whose access request type is a read operation on the storage device, that is, the data buffer is used to store a non-persistent request queue.
- the storage device network card may store the packet header of the data packet in non-volatile memory or volatile memory according to different types of access requests.
- the access request may be The header of the type of packet that performs the modification operation on the storage device is stored in the persistent request queue in the SCM.
- the header of the data packet whose access request is of a type that performs a modification operation on the storage device may also be stored in a volatile memory, such as DRAM,
- the data field portion of the type of packet is stored in the SCM, and then the header and data items can be stitched together by scatter-gather to obtain a complete packet.
- the header and the data item of the data packet of the write request may be stored in the SCM.
- the storage device processes each request packet, it needs to send a response packet to the data packet to the sender that sends the data packet, and the packet header portion of the response packet is reusable, and the packet header is Even if it is lost, it can be reconstructed and is non-persistent. Therefore, the header of the write request can also be stored in DRAM instead of SCM. That is, the type of the access request is the header of the packet that performs the modification operation on the storage device, for example, the header of the write request, which can be stored in the DRAM, but still stores the data field portion of the packet in the SCM.
- the packet of the type of the access request is a packet that performs a modification operation on the storage device.
- Header can also store the header in volatile memory, such as DRAM.
- DRAM volatile memory
- the access request type is a header of a data packet that performs a modification operation on the storage device, and is stored in a persistent request queue in the DRAM, and the access request is accessed.
- the header of the type of packet that performs a read operation on the storage device is stored in a non-persistent request queue in DRAM.
- the processor 204 in the storage device 200 can call the data in the data packet from the non-volatile memory 202 for processing.
- the data in the data packet can also be called from the volatile memory 203 for processing.
- the type of the access request corresponding to the data is a modification operation performed on the storage device, and when the storage device needs to process the data packet of the type, for example, receiving an instruction to process the data packet
- the storage device 200 can obtain basic information of the data in the data packet and storage location information according to the packet management and metadata management of the data packet by the processor 204 in advance, thereby implementing the non-volatile memory.
- the data buffer corresponding to 202 for example, in the corresponding data buffer in the SCM, the storage location of the data domain corresponding to the data packet is found, and the data is called for processing.
- the basic information of the data in the data packet and the storage location information may be stored in a corresponding persistent request queue.
- the data of the data packet of the write request is stored in the non-volatile memory, and the processor can directly according to the information of the data in the data packet, such as the request address.
- the Key value corresponding to the data in the Key-Value storage system the location of the Key corresponding to the Value data, the data is found in the non-volatile memory, the data is written, and the data is stored in the designated storage area.
- the SCM the SCM
- flash flash
- the type of the access request corresponding to the data is a read operation on the storage device, and when the storage device needs to process the data packet of the type, for example, when receiving an instruction to process the data packet, As shown in FIG. 2, the storage device 200 can obtain basic information of the data in the data packet and storage location information according to the packet management and metadata management of the data packet in advance by the processor 204, so as to correspond to the volatile memory 203.
- the data buffer for example, in the corresponding data buffer in the DRAM, the storage location of the data corresponding to the data packet is found, and the data is called for processing.
- the network card determines, according to the request type information included in the data packet, whether at least one access request in the data packet is a request to perform a modification operation on the storage device, When at least one access request is a request to perform a modification operation on the storage device, the network card stores the data packet in a non-volatile memory; otherwise, the network card stores the data packet in a volatile memory, so that the existing In the technology, the NIC buffer is integrated with the cache area of the storage system, thereby reducing the copying overhead of data between the two; and reducing the storage request for the storage device not performing the modification operation in the SCM, reducing the demand for the SCM large capacity. Improve the read and write life of SCM.
- FIG. 5 shows a schematic flow diagram of a processing method 400 applied to an access request in a storage device in accordance with an embodiment of the present invention.
- the method 400 can be performed by a storage device, such as a storage device in the distributed storage system shown in FIG. 1, which is the storage device 102 or the storage device 103 in FIG. It is also the storage device 200 as shown in FIG. 2.
- the method 400 includes:
- the storage device receives the data packet.
- the storage device may receive the data packet by using a network card, where the data packet includes at least one access request, and the data packet includes request type information, for example, the data packet includes a request type field, and is carried by the request type field.
- Request type information the request type field is used to indicate the type of request for at least one access request in the data packet.
- the storage device parses the request type information in the data packet, and determines a request type of the at least one access request.
- the network card parsing data packet of the storage device determines, according to the request type field in the data packet, a request type of at least one access request in the data packet, and determines that the request type of the at least one access request is a modification to the storage device. Operation, or to perform a non-modifying operation on the storage device, for example, to perform a read operation.
- the storage device determines that the type of the request for the at least one access request in the data packet is When the storage device performs the modification operation, executing S404; when the storage device determines that the request type of the at least one access request in the data packet is a read operation on the storage device, executing S405.
- the storage device determines that the request type of the at least one access request in the data packet is to perform a modification operation on the storage device, and the data packet is stored in the non-volatile memory, so that the data in the data packet can be persistently cached, and Continue to execute S405.
- the storage device's network card stores the data packet in the non-volatile memory, including writing the data in the data packet and the packet header into the non-volatile memory.
- the non-volatile storage can be an SCM.
- the SCM may include a data buffer for storing data in the data packet, and may also be used to store the header of the data packet. It should be understood that the SCM can also be stored in the form of a log, that is, the SCM also stores data as a Log area, thereby ensuring data consistency.
- the processor of the storage device acquires basic information of the data in the data packet and storage location information according to the packet management and metadata management of the data packet, thereby buffering the data corresponding to the SCM.
- the storage location of the data corresponding to the data packet is found in the area, and the data is called for processing.
- the storage device determines that the request type of the at least one access request in the data packet is to perform a read operation on the storage device, store the data packet in a volatile memory, such as a DRAM, and continue to execute S407.
- the network card determines, according to the request type information included in the data packet, whether at least one access request in the data packet is a request to perform a modification operation on the storage device, When at least one access request is a request to perform a modification operation on the storage device, the network card stores the data packet in a non-volatile memory; otherwise, the network card stores the data packet in a volatile memory, so that the existing In the technology, the NIC buffer is integrated with the buffer area of the storage system, thereby reducing the copying overhead of data between the two; and reducing the storage request for the storage device not performing the modification operation in the non-volatile memory SCM, reducing the pair SCM's large capacity needs to improve the read and write life of SCM.
- the size of the sequence numbers of the above processes does not mean the order of execution, and the order of execution of each process should be determined by its function and internal logic, and should not be taken to the embodiments of the present invention.
- the implementation process constitutes any limitation.
- FIG. 6 shows a schematic block diagram of a network card 500 in a storage device, which may include the network card 500, volatile memory, and non-volatile memory, in accordance with an embodiment of the present invention.
- the storage device may be the storage devices 102 and 103 of the distributed storage system as shown in FIG. 1, or may also be the storage device 200 shown in FIG. 2.
- the network card 500 includes:
- the receiving module 510 is configured to receive a data packet sent by another storage device, where the data packet includes at least one access request, where the data packet carries request type information of the at least one access request;
- the determining module 520 is configured to determine, according to the request type information, whether the at least one access request is a request to perform a modification operation on the storage device;
- the processing module 530 is configured to: when the at least one access request is a request to perform a modify operation on the storage device, store the data domain portion in the data packet in the non-volatile memory, where the data domain portion includes the at least The content of a request for an access request;
- the processing module 530 is further configured to: when the at least one access request is a request to perform a non-modification operation on the storage device, store the data domain portion in the data packet in the volatile memory.
- the network card in the storage device of the embodiment of the present invention determines, according to the request type information included in the data packet, whether at least one access request in the data packet is a request to perform a modification operation on the storage device, when at least one access request is When the storage device performs the request for the modification operation, the network card stores the data packet in the non-volatile memory. Otherwise, the network card stores the data packet in the volatile memory, so that the network card buffer and the storage in the prior art can be stored.
- the cache area of the system is unified, thereby reducing the copying overhead of data between the two; at the same time, reducing the storage request of the storage device without performing the modification operation in the SCM, reducing the demand for the large capacity of the SCM, and improving the read and write life of the SCM .
- the processing module 530 is specifically configured to: when the at least one access request is a request to perform a modification operation on the storage device, store the data packet in the non-volatile memory in a log form.
- the modifying operation includes at least one of the following operations: a write operation, an update operation, and a delete operation; the non-modification operation includes a read operation.
- the non-volatile memory is a storage level memory SCM
- the volatile memory is a dynamic random access memory DRAM.
- the method further includes: the network card storing the header field in the data packet in the non-volatile memory or the volatile In the sexual memory, the header field portion contains information indicating the address of the data packet.
- the network card 500 in the storage device may correspond to the method 300 and the method 400 in the embodiments of the present invention, and the above and other operations and/or functions of the respective modules in the network card 500 are respectively implemented.
- the corresponding processes performed by the network card of the storage device in the respective methods in FIG. 1 to FIG. 5 are not described herein again for brevity.
- the network card in the storage device of the embodiment of the present invention determines, according to the request type information included in the data packet, whether at least one access request in the data packet is a request to perform a modification operation on the storage device, when at least one access request is When the storage device performs the request for the modification operation, the network card stores the data packet in the non-volatile memory. Otherwise, the network card stores the data packet in the volatile memory, so that the network card buffer and the storage in the prior art can be stored.
- the cache area of the system is unified, thereby reducing the copying overhead of data between the two; at the same time, reducing the storage request of the storage device without performing the modification operation in the SCM, reducing the demand for the large capacity of the SCM, and improving the read and write life of the SCM .
- each functional module in each embodiment of the present invention may be integrated into one processing module, or each module may exist physically separately, or two or more modules may be integrated into one module.
- the functions may be stored in a computer readable storage medium if implemented in the form of a software functional unit and sold or used as a standalone product. Based on such understanding, the technical solution of the present invention, which is essential or contributes to the prior art, or a part of the technical solution, may be embodied in the form of a software product stored in a storage medium. A number of instructions are included to cause a computer device (which may be a personal computer, server, or network device, etc.) to perform all or part of the steps of the methods described in various embodiments of the present invention.
- the foregoing storage medium includes: a U disk, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk, and the like. .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及应用于存储设备中的访问请求的处理方法和装置。该方法包括:网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该网卡根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包存储于该非易失性内存中;否则,该网卡将该数据包存储于该易失性内存中。本发明实施例的应用于存储设备中的访问请求的处理方法和装置,可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销。
Description
本发明涉及通信领域,尤其涉及应用于存储设备中的访问请求的处理方法和装置。
分布式存储系统是将数据分散地存储在多个独立的存储设备上,采用可扩展的系统结构,利用多台存储设备分担存储负荷。具体地,分布式存储系统可以通过网络将多个存储设备互连起来,统一进行管理。存储客户端访问存储设备,或是存储设备之间均可以通过高速网络来传输数据。分布式存储系统不但具有可靠性、可用性和存取效率,还易于扩展。
以存储客户端访问存储设备为例,当存储客户端向存储设备发送数据包时,首先由接收端存储设备中的网卡(Network Interface Card,NIC)进行接收,并缓存在网卡的数据缓冲区中,同时在网卡的数据缓冲区中进行解包和网络协议栈处理,之后,存储设备中的处理器再将该数据包中的数据从网卡的数据缓冲区中拷贝到存储设备的动态随机存取存储器(Dynamic Random Access Memory,DRAM)中以供存储设备的处理器进行处理。例如,若该数据包请求写入数据,则存储设备的处理器可以将该数据从DRAM中拷贝到存储介质的相应位置中,该存储介质可以为存储级内存(Storage Class Memory,SCM)或闪存(flash)。
在上述存储设备中,网卡一般包含一个或多个请求队列,每个请求队列对应一个数据缓冲区,用于缓存接收到的数据包。而数据缓冲区中数据的拷贝操作是指将数据包中的数据从网卡的请求队列拷贝到存储器,如DRAM,进行处理。数据拷贝操作需要耗费存储设备的中央处理器(Central Processing Unit,CPU)和内存资源,因此,如果数据包中包含的数据量较大,数据拷贝操作的开销会在网络传输中占据较大的比重。然而,内存带宽是系统的一个瓶颈,多次的数据拷贝势必会消耗大量的内存带宽。因此,如何在分布式存储系统中减少或消除缓冲区数据的拷贝,对优化网络请求的性能具有很大的价值。
发明内容
本申请提供了一种应用于存储设备中的访问请求的处理方法和装置,能够减少存储设备处理数据请求时的内存带宽的占用和数据拷贝时间开销。
第一方面,提供了一种应用于存储设备中的访问请求的处理方法,该存储设备包括网卡、易失性内存和非易失性内存,该方法包括:该网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该网卡根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容;当该至少一个访问请求为对该存储设备执行非修改操作的请求时,该网卡将该数据包中的数据域部分存储于该易失性内存中。
因此,本申请实施例的应用于存储设备中的访问请求的处理方法,网卡根据接收的数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包的数据域部分存储到非易失性内存中,否则,网卡将数据包的数据域部分存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销,并且灵活应用于各种应用场景中,避免现有技术中对网卡性能的局限;同时减少对存储设备不执行修改操作的访问请求在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
应理解,网卡接收其它设备发送的数据包,该数据包中包括至少一个访问请求,该至少一个访问请求具有相同的请求类型,并且可以通过该数据包中的请求类型信息指示该至少一个访问请求的请求类型。
结合第一方面,在第一方面的一种实现方式中,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该方法还包括:该网卡将该数据包中的包头域部分存储于该非易失性内存或该易失性内存中,该包头域部分包含有指示所述数据包的地址的信息。
应理解,当网卡根据数据包中包括的请求类型信息,确定数据包中的至少一个访问请求是对存储设备执行修改操作时,将数据包的数据域部分存储到非易失性内存中,该数据包可以包括包头域和数据域两部分,则可以将包
头域和数据域均存储到非易失性内存中,其中,可以将该数据包中的包头存储到该非易失性内存中的持久化请求队列中;相对的,当确定数据包中的至少一个访问请求不是对存储设备执行修改操作时,例如执行读操作时,将数据包的数据域部分存储到易失性内存中,还可以将包头域部分和数据域部分均存储到非易失性内存中,其中,可以将该包头存储到该易失性内存中的非持久化请求队列中。
应理解,将请求类型不同的访问请求分别存储到不同的内存中,对应的,对于数据包中的包头也可以分别存储到不同的内存中,即将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到非易失性内存的持久化请求队列中,而将访问请求的类型为对存储设备进行非修改操作的数据包的包头域部分存储到易失性内存的非持久化请求队列中,使得每个请求队列只支持存放访问请求类型为对存储设备执行修改操作的数据包的包头,或者,只支持存放访问请求类型为对存储设备执行读操作的数据包的包头。
可选地,为了进一步减少非易失性内存的使用率,例如该非易失性内存可以为SCM,还可以在数据包中的至少一个访问请求是对存储设备执行修改操作时,将该数据包的包头域部分存储在易失性内存中,例如DRAM中,但仍然将数据包中的数据域部分存储在SCM中,之后可以通过分散-收集(scatter-gather)将包头域部分和数据域部分拼接在一起得到完整数据包。
具体地,在存储服务器处理完每个请求包后,需要向发送数据包的发送端发送该数据包对应的响应包,例如,该数据包为键-值系统中的写请求,则该响应包中的包头域部分是可以重复利用的,而且该包头域部分即使丢失也可以重新构造出来,因此,还可以将该写请求的包头域部分也存放在易失性内存,例如DRAM中,而不是SCM中。也就是说,访问请求的类型为对存储设备进行修改操作的数据包的包头域部分,例如该写请求的包头域,而已存储到DRAM中,但仍将该数据包中的数据域部分存储在SCM中。
应理解,将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到易失性内存,例如DRAM中,在该DRAM中,仍然分为持久化请求队列和非持久化请求队列,即访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到DRAM中的持久化请求队列中,将访问请求的类型为对存储设备进行非修改操作的数据包的包头域部分存储到DRAM中的非持久化请求队列中。
将访问请求的类型为对存储设备进行修改操作的数据包的包头域部分存储到易失性内存中,可以减少对非易失性内存SCM的使用率,使得该SCM有足够的空间存储目标数据。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该网卡将该数据包存储于该非易失性内存中,包括:该网卡将该数据包以日志的形式存储于该非易失性内存中。
应理解,以日志的形式存储于非易失性内存中,是指存储该数据包中的数据的地址、长度以及数据内容。
这样,将数据包以日志的形式进行存储,使得该数据包存储的区域即为现有技术中的Log存储区域,可以避免现有技术中将数据从存储单元DRAM中拷贝到Log存储区域的过程,进一步减少数据拷贝的开销。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该非易失性内存可以为存储级内存SCM,该易失性内存可以为动态随机存取存储器DRAM。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;该非修改操作包括读操作。
应理解,不同数据包可以具有不同的请求类型。例如,当数据包用于请求写数据,或者更新数据,或者删除数据,该数据包的请求类型均可以确定为对存储设备执行修改操作的类型;当数据包用于请求读数据,该数据包的的请求类型可以确定为对存储设备执行非修改操作,即执行读操作。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,该数据包中包括的至少一个请求,具有相同请求类型,该数据包包括请求数量信息,该请求数量信息用于指示该至少一个访问请求的个数。
应理解,发送端设备可以将相同类型的请求通过同一数据包发送至存储设备,在该数据包中包括一个或多个访问请求,则数据包中的数据对应该至少一个访问请求请求处理的数据,且该至少一个访问请求具有相同请求类型,并可以通过该请求数量信息指示该至少一个访问请求的个数,避免相同类型的请求发送多个数据包,从而减少系统开销。
第二方面,提供了一种应用于存储设备中的发送访问请求的方法,该方法包括:生成数据包,该数据包包括至少一个访问请求,该数据包携带有该
至少一个访问请求的请求类型信息;向存储设备发送该数据包,以便于该存储设备根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求,并且当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,该网卡将该数据包存储于该易失性内存中。
因此,本申请实施例的应用于存储设备中的发送访问请求的方法,根据访问请求的请求类型的不同,生成不同的数据包,以便于接收端的存储设备根据数据包的请求类型,将对存储设备执行修改操作的数据包存放到存储系统的非易失性内存中,将对存储设备执行读操作的数据包存放到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备执行非修改操作的数据包在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
结合第二方面,在第二方面的一种实现方式中,该生成数据包包括:将至少一个访问请求聚合,生成该数据包,该数据包包括该至少一个访问请求,该至少一个访问请求具有相同请求类型,该数据包包括请求数量信息,该请求数量信息用于指示该至少一个访问请求的个数。
应理解,发送端设备将相同类型的请求通过同一数据包发送至存储设备,并通过该请求数量信息指示该至少一个访问请求的个数,避免相同类型的访问请求发送多个数据包,从而减少系统开销。
第三方面,提供了一种存储设备中的网卡,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该网卡包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的模块。
第四方面,提供了一种存储设备中发送访问请求的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块。
第五方面,提供了一种存储设备中的网卡,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第六方面,提供了一种存储设备中发送访问请求的装置,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
第七方面,提供了一种存储设备,该存储设备包括网卡、易失性内存和非易失性内存,其中,该网卡用于:接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,将该数据包存储于该易失性内存中。
结合第七方面,在第七方面的一种实现方式中,该网卡为第一方面或第一方面中任意一种可能实现方式中的网卡。
第八方面,提供了一种分布式存储系统,其特征在于,该分布式存储系统包括第一存储设备和第二存储设备,该第一存储设备用于:向第二存储设备发送数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;该第二存储设备用于:接收该第一存储设备发送的该数据包;根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包存储于该非易失性内存中;当该至少一个访问请求为对该存储设备执行读操作的请求时,将该数据包存储于该易失性内存中。
结合第八方面,在第八方面的一种实现方式中,该第一存储设备还用于:当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包以日志的形式存储于该非易失性内存中。
结合第八方面及其上述实现方式,在第八方面的另一种实现方式中,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作。
第九方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第十方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例的附图。
图1是根据本发明实施例的分布式存储系统的示意图。
图2是根据本发明实施例的存储设备的示意性框图。
图3是根据本发明实施例的应用于存储设备中的访问请求的处理方法的示意性流程图。
图4是根据本发明实施例的数据包格式的示意图。
图5是根据本发明实施例的应用于存储设备中的访问请求的处理方法的另一示意性流程图。
图6是根据本发明实施例的存储设备中的网卡的示意性框图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。
图1示出了分布式存储系统100的示意图。该分布式存储系统100可以通过网络将多个存储设备连接起来,进行统一管理。具体地,如图1所示,对于该分布式存储系统100中任意两个存储设备之间,存储设备102和存储设备103,可以通过交换机传输数据;另外,对于存储客户端101同样可以通过交换机访问存储设备102或存储设备103。其中,存储客户端101、存储设备102和存储设备103均包括网卡,通过该网卡接收数据包,该数据包可以包括包头域和数据域两部分。例如,当存储客户端101向存储设备102发送数据包时,由该存储客户端101的网卡将该数据包通过交换机发送至存储设备102,该存储设备102的网卡接收该数据包。
图2示出了根据本发明实施例的存储设备200的示意性框图,该存储设
备200相应于图1中的存储设备102或者存储设备103。具体地,如图2所示,该存储设备200包括:网卡201、非易失性内存202、易失性内存203、处理器204、I/O总线205以及内存总线206。其中,处理器204通过内存总线206与非易失性内存202以及易失性内存203相连。处理器204可以通过该内存总线206访问非易失性内存202以及易失性内存203。网卡201通过I/O总线205与非易失性内存202以及易失性内存203相连。网卡201可以通过I/O总线205访问非易失性内存202以及易失性内存203。
应理解,在网卡201中可以包括直接内存存取(Direct Memory Access,DMA)引擎,网卡201可以通过该DMA引擎实现对非易失性内存202以及易失性内存203的直接访问。
具体地,DMA引擎可以直接掌管总线,例如,对于图2中的网卡201中的DMA,在DMA引擎传输数据之前,处理器204可以将总线控制权交给DMA引擎,而在结束DMA引擎传输数据之后,DMA引擎再将总线控制权交回给处理器204。
具体地,以图2为例,一个完整的DMA传输数据过程可以分为DMA请求、DMA响应、DMA传输、DMA结束四个部分。在DMA请求阶段,可以由处理器204对该DMA初始化,并向I/O总线205发出操作命令,I/O总线205提出DMA请求。在DMA响应阶段,DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑单元提出总线请求。当处理器204执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑单元输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O总线205开始DMA传输。在DMA传输阶段,DMA引擎获得总线控制权后,处理器204即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制内存与I/O总线205进行DMA传输。因此,在DMA引擎的控制下,在内存和外部设备之间直接进行数据传送,在传送过程中可以不需要中央处理器的参与。
图3示出了根据本发明实施例的应用于存储设备中的访问请求的处理方法300的示意性流程图,该方法300可以应用于如图1所示的分布式存储系统中的存储设备102或存储设备103中。由于图2为存储设备102或存储设备103的结构示意图,在下面的实施例中将以图2中的存储设备200进行说明。如图2所示,本发明实施例的存储设备可以包括网卡、易失性内存和非易失性内存。本发明实施例提供的方法300可以由该存储设备200中的网卡
201执行。如图3所示,该方法300包括:
S310,该网卡接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息。
具体地,如图2所示,存储设备200可以通过网卡201接收客户端或其它存储设备发送的数据包,例如图1所示,存储客户端101可以通过网卡向存储设备102发送数据包,或者存储设备103通过网卡向存储设备102发送数据包,而存储设备102可以通过网卡接收存储客户端101或存储设备103发送的数据包。
可选地,该数据包至可以包括至少一个访问请求,且该数据包还包括请求类型信息,该请求类型信息用于指示该至少一个访问请求的请求类型,例如,该请求类型信息可以指示该至少一个访问请求为读数据请求,或者为写数据请求,或者为更新数据请求,或者为删除数据请求等,本发明实施例并不限于此。
S320,根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求。
应理解,在现有技术中,网卡默认仅解析数据包至的包头的内容,例如支持键值(Key-Value)的分布式存储系统,数据包中包头内容包括以太网包头、网络之间互连的协议(Internet Protocol,IP)包头和用户数据报协议(User Datagram Protocol,UDP)包头,用于路由和判断请求的地址是否是属于当前存储设备,而对于数据区域一般是不处理的。在本发明实施例中,需要扩展网卡的处理功能,增加网卡对数据包的请求类型的解析处理。
在本发明实施例中,如图2所示,存储设备200的网卡201接收数据包括后,网卡201根据数据包中的请求类型信息,确定该数据包中至少一个访问请求的请求类型,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求。可选地,其它设备在向存储设备发送数据包时,可以扩充或修改现有数据包的格式,例如填充特定的包头域,从而通过该数据包包括的请求类型信息,指示该数据包中至少一个访问请求的请求类型。例如,在数据包的数据域增加请求类型字段,通过该请求类型字段指示该数据中的至少一个访问请求的请求类型。
具体地,可以将数据包中的至少一个访问请求的请求类型分为两大类,一类为对该存储设备执行修改操作的请求;一类为对该存储设备执行非修改
类操作的请求,例如对存储设备执行读操作的请求。其中,当数据包中的至少一个访问请求的请求类型为对存储设备执行修改操作时,若该数据包中的数据丢失,能够导致系统中的数据出现不一致的特性;而当数据包中的至少一个访问请求的请求类型为对存储设备执行非修改类操作时,数据包中的数据丢失不会影响系统中的数据。
可选地,一般可以根据读/写来区分请求类型,读请求的数据包中数据丢失后,不影响系统数据的正确性,因此读请求的请求类型为对存储设备执行非修改类操作,或者称作对存储设备执行读操作;而写请求的数据包中数据丢失后,会导致系统数据不一致,因此写请求的请求类型为对存储设备执行修改类操作。
类似地,更新(update)数据请求或者删除(delete)数据请求,在数据包中数据丢失时都会改变系统中的数据,因此,更新(update)数据请求或者删除(delete)数据请求都属于对存储设备执行修改类操作的请求类型。
类似的,例如对于Key-Value系统,get请求,类似于读请求,用于从存储节点中读取数据,对应数据包中的数据出错后重传即可,不影响数据的一致性,因此,get请求属于对存储设备执行读操作的请求类型。而put请求,类似于写请求,需要保证数据包中的数据被正确写入到存储系统中,从而保证系统数据的一致性,则put请求属于对存储设备执行修改操作的请求类型。
在本发明实施例中,数据包包括的请求类型信息,可以通过扩充或修改请求包的格式,例如填充特定的包头域,或者修改数据包中的数据域,从而通过携带请求类型信息指示该数据包中至少一个访问请求的请求类型。具体地,在数据包中可以包括请求类型字段,该请求类型字段用于指示数据包中包括的至少一个访问请求的请求类型。下面以支持Key-Value的分布式存储系统为例,在数据包的数据域部分增加请求类型字段,该数据包的格式可以如图4所示。
具体地,如图4所示,数据包可以分为包头域和请求处理的数据所在的数据域两个部分,其中,数据域包括数据包中的至少一个访问请求的请求内容;包头域包含有指示所述数据包的指示地址的信息。具体地,本发明实施例中的包头域部分与传统数据包的包头类似,包括以太网包头、IP包头和UDP包头等,用于指示网络的地址信息等。而数据包中的数据域的部分,与传统的数据包不同,不仅包括要传输的数据,还可以进一步划分为多个区域。
具体地,在该数据域部分可以包括请求类型字段,该请求类型字段携带请求类型信息,用于指示该数据中包括的至少一个访问请求的请求类型,即用于标识该至少一个访问请求对存储设备是否执行修改操作。具体地,请求类型字段可以通过预定的数值来标识数据包中的至少一个访问请求是否对存储设备执行修改操作。例如,用0标识该数据包包含的访问请求的请求类型为对存储设备执行修改操作,而用1标识访问请求的请求类型为对存储设备执行非修改操作,即执行读操作。或者,该请求类型字段也可以表示该数据包的具体请求内容,根据该请求内容,确定该数据包的访问请求是否对存储设备执行修改操作,例如,对于Key-Value系统,数据包中的访问请求可以为get请求,即请求类型字段指示该数据包中的访问请求为get请求,则该get请求类似于读请求,可以确定该访问请求的类型为对存储系统执行非修改操作;而对于put请求,类似于写请求,则可以确定该访问请求的类型为对存储系统执行修改操作。
可选地,在数据包中还可以包括请求数量信息,该请求数量信息用于指示该数据包中至少一个访问请求的总个数。具体地,发送端生成并发送的数据包可以包括一个或多个访问请求,且当该数据包包括多个访问请求时,该多个访问请求均属于同一请求类型,并可以通过请求数量信息,指示该数据包中多个访问请求的个数。例如,在该数据包的的数据域部分还可以包括请求数量字段,通过该请求数量字段指示该数据包中至少一个访问请求的数量。
可选地,在该数据域部分还可以包括请求头字段,该请求头用于指示该数据包中请求处理的数据的大小等信息,例如,如图4所示,该数据包的请求数量字段指示该数据包包括n个访问请求,对应请求头1至n,每个数据的请求头对应指示该部分请求数据的大小。
可选地,该数据域中的请求头字段还可以包括用于指示该数据包中的访问请求的具体操作类型的信息。在存储设备中的处理器处理该数据包时,根据该数据包中请求字段确定访问请求的具体操作类型。例如,根据该请求字段确定该访问请求为写请求,或者确定该访问请求为读请求。具体地,以图2为例,存储设备200中的处理器204在需要处理该数据包时,可以解析该数据域部分的请求头字段,根据该请求头字段确定该数据的访问请求,例如,根据该请求头字段确定该访问请求为写请求,则将该数据包中的数据写入相
应的存储单元中。
可选地,在该数据域部分还可以包括数据字段,该数据字段用于承载该数据包请求处理的数据。具体地,例如,对于写请求,该数据字段承载该数据包需要写入的数据;再例如,对于读请求,该数据字段可以承载该数据包请求读取的数据的地址信息等。
再例如,对于Key-Value系统,在该数据包中的数据域部分具体可以包括键(key)属性域,也可以包括值(value)属性域。具体地,当数据包为get请求,则该数据域部分包括key属性域,而不包括value属性域;当数据包为put请求时,例如图4所示,则该数据域部分包括key属性域和value属性域。
应理解,该数据包的数据域部分包括的至少一个访问请求的请求内容,该请求内容可以指该数据包中数据字段承载的数据,例如,对于Key-Value系统,该请求内容可以包括请求头字段以及key属性域,也可以包括value属性域。可选地,该数据包的数据域也可以与至少一个访问请求的请求内容一致,即该至少一个访问请求的请求内容包括全部数据域部分。
在本发明实施例中,发送数据包的发送端可以将属于同一请求类型的多个访问请求聚合成一个数据包进行发送。例如,发送端可以为存储客户端,存储客户端在接收到多个对存储设备端的访问请求时,可以先将该多个访问请求加入到该存储客户端的缓存队列中,以读请求为例,可以将当前缓存队列中的多个读请求聚合成一个大的读请求数据包,该聚合后的读请求数据包的大小不能超过载荷(payload)的最大限制,依据上述数据包的格式,在该聚合后的读请求数据包上加上IP、DUP等包头,形成上述格式的包括多个访问请求的数据包,向存储设备发送该数据包。再以写请求为例,可以将当前缓存队列中的多个写请求聚合成一个大的写请求数据包,并将Key以及Value依次存放,同样,聚合后的数据包的大小不超过payload的限制,再加上IP、DUP等包头形成上述格式的数据包。类似地,对于同一请求类型的访问请求,例如Update、delete等请求,依据同样的方式,均可以将相同类型的访问请求组成一个数据包进行发送。
S330,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该网卡将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容。
可选地,如图2所示,当该数据包中的至少一个访问请求的请求类型为对该存储设备执行修改操作时,存储设备200的网卡201将该数据包中的数据域部分存储到非易失性内存202中,可选地,还可以将该数据包的包头域部分存储到非易失性内存202中对应的持久化请求队列中,该持久化请求队列也与非易失性内存202中存储的数据域部分相对应,其中,该数据包的包头域部分包含有指示所述数据包的地址的信息。
S340,当该至少一个访问请求为对该存储设备执行非修改操作的请求时,该网卡将该数据包中的数据域部分存储于该易失性内存中。
可选地,如图2所示,当数据包中的至少一个访问请求的请求类型为对该存储设备执行非修改操作时,例如执行读操作时,存储设备200的网卡201将该数据包中的数据域部分存储到易失性内存203中,可选地,还可以将该数据包的包头域部分存储到易失性内存203中的非持久化请求队列中,该非持久化请求队列与易失性内存203中存储的数据域部分相对应。
具体地,对于方法300中的S330和S340,为具有不同访问请求类型的数据包中的数据域部分分配了不同的内存,其中,针对访问请求的类型为对存储设备进行修改操作的数据包,采用非易失性内存进行存储,可以使得数据包中需要写入存储设备中的数据能够持久的缓存。
在现有技术中,存储设备的网卡接收到数据包后,将该数据包括缓存在网络的请求队列中,即数据缓冲区中,该网卡的数据缓冲区可以为占用易失性内存DRAM的部分区域,之后将该数据进行解包和网络协议栈等处理,将该数据从网卡的数据缓冲区中拷贝到存储设备的DRAM中以供存储设备的进一步处理,例如,对于写请求,会将该数据包中的数据再从DRAM中写入到对应的存储单元中完成写操作。
因此,在现有技术中,网络的性能瓶颈主要由两个部分组成:网络协议栈的处理以及缓冲区数据的拷贝操作。现有的数据包一般分为包头和数据两部分组成。其中,包头包含了请求包类型、网络地址等信息,如以太网包头、IP包头和UDP包头。对于网络协议栈的处理,主要包括解析、识别、和处理数据包的包头,执行对应的网络转发、请求提取等功能。目前,网络协议栈的优化常通过数据面开发工具(Data Plane Development Kit,DPDK)、开源包(Open Data Plane,ODP)等新技术手段来提高协议栈的处理效率。
另外,对于缓冲区数据的拷贝操作,数据拷贝操作需要耗费CPU和内
存资源。如果网络请求中包含的数据量较大,数据拷贝操作的开销会在网络传输中占据较大的比重。
在本发明实施例中,网卡可以包括两类请求队列,分别为持久化请求队列和非持久化请求队列,该两类请求队列中每类队列可以包括多个请求队列,每个请求队列用于存储数据包的包头域部分,并且每个队列仅支持存放具有相同请求类型对应的数据包包头域,例如对于任意队列,可以仅支持存放请求类型为对存储设备执行修改操作的访问请求的数据包的包头,或者仅支持存放请求类型为对存储设备执行读操作的访问请求的数据包的包头。可选地,该持久化请求队列可以位于非易失性内存中,而非持久化请求队列位于易失性内存中。具体地,持久化请求队列用于存储请求类型为对存储设备执行修改操作的数据包括的包头,非持久化请求队列用于存储请求类型为对存储设备执行读操作的数据包括的包头。
在本发明实施例中,网卡在解析出数据包中包括的至少一个访问请求的请求据类型时,可以通过对请求类型进行分析,以确定数据包中的包头对应持久化请求队列或非持久化请求队列。对应的,发送数据包的发送端,例如存储客户端或其它存储设备,根据数据包至访问请求的请求类型,对数据包进行封装。之后,接收端存储设备会根据数据包中的访问请求的类型,将数据包的包头存放到不同的请求队列中。
可选地,对于持久化请求队列以及非持久化请求队列,为了有效的利用资源,各个请求队列也可以采用循环数据队列。
对应地,对于访问请求的类型为对存储设备执行修改操作的数据包,还将该数据包中的数据域部分直接存储到非易失性内存中,而对于访问请求的类型为对存储设备执行非修改操作,例如读操作,还将该数据包中的数据域部分直接存储到易失性内存中,而无需像现有技术中,将该数据包中的数据缓存在网卡在DRAM中的数据缓冲区中,再拷贝到DRAM的存储区域中,再根据数据包至访问请求的内容,将数据再写入不同的存储单元中,减少了网卡的数据缓冲区到存储单元之间的拷贝的开销。
具体地,对于访问请求的类型为对存储设备执行修改操作的数据包,将该数据包中的数据域部分存储到非易失性内存中,该非易失性内存具有内存特性,网卡可以通过DMA引擎直接访问该非易失性内存,将数据包的数据域部分写入该非易失性内存中。可选地,该非易失性内存可以为存储级内存
(Storage Class Memory,SCM)。SCM作为一类新型的存储介质,其性能和存储容量介于DRAM和闪存(flash)之间,具备内存的访问接口,能够保持存储在SCM中的数据的持久性。SCM即将作为高性能存储系统中的重要存储介质。
在该SCM中,可以包括数据缓冲区,该数据缓冲区用于存储数据包中的数据域部分。而在现有技术中,网卡中包括数据缓冲区,该数据缓冲区可以位于DRAM中,网卡将数据存储在该数据缓冲区中,再将该数据拷贝到存储单元DRAM中,而本发明实施例中,网卡将数据直接存储到非易失性内存的数据缓冲区,无需像现有技术中进行从网卡的缓冲区到存储单元的数据拷贝。
应理解,SCM中的数据缓冲区可以有多个且物理地址连续,每个数据缓冲区的长度域可以与网卡的最大传输单元(Maximum Transmission Unit,MTU)相同。
应理解,该SCM中的数据缓冲区还可以用于存储对应的数据包的包头,即该数据缓冲区可以用于存储持久化请求队列。
此外,该SCM中的数据缓冲区也可以作为该存储设备的日志(Log)区域。存储设备为了保证数据的一致性,当接收到需要持久化的数据请求,如写请求时,可以先将数据写入到Log区域。存储设备的Log区域一般是一块连续的物理区域,而且Log区域的数据写入模式是顺序写入的。
在现有技术中,该Log区域也可以位于SCM中,或其它存储单元中,网卡将数据写入网卡的数据缓冲区中,再将该数据拷贝到存储单元,例如从数据缓冲区拷贝到DRAM中。以写请求为例,存储设备中的处理器处理该写请求时,需要将该数据再从DRAM中拷贝到相应的存储单元的存储区域,例如写入SCM的存储区域中,而在处理器执行写请求之前,存储设备的处理器可以先将数据的相关信息,例如数据地址、数据内容等,写入到Log区域,这样,在后续将该写请求对应的数据写入到相应存储区域发生错误时,可以根据Log区域记录的信息,执行重新写入或者撤销写入。
但在本发明实施例中,该SCM中的数据缓冲区也可以作为Log区域,即网卡将访问请求的类型为对存储设备执行修改操作的数据包中的数据直接写入非易失性内存SCM的数据缓冲区中,该SCM的数据缓冲区相当于现有技术中的网卡数据缓冲区、DRAM区域和Log区域。
具体地,将该SCM的数据缓冲区作为Log区域,则在存储数据包中的数据过程中,以日志形式进行存储,即存储该数据包中的数据的地址、长度以及数据内容,其中,数据的地址表示该数据最终存储的地址的信息,例如,数据包中的访问请求为写请求,则以日志形式进行存储时,需要存储该写数据的最终写入位置的地址信息;该数据的长度,即为该数据的大小。
类似地,对于数据包中的访问请求的类型为对存储设备执行读操作,将该数据包中的数据直接存储到易失性内存中,该易失性内存可以为DRAM,与将数据存储到SCM中类似,该DRAM中也可以包括数据缓冲区,该数据缓冲区用于存储数据包中的数据。在本发明实施例中,网卡将数据包中的访问请求的类型为对存储设备执行读操作的数据直接存储到易失性内存的数据缓冲区,无需像现有技术中进行由缓冲区到存储单元的数据拷贝。
应理解,该DRAM中的该数据缓冲区还可以用于存储访问请求类型为对存储设备执行读操作的数据包的包头,即该数据缓冲区用于存储非持久化请求队列。
应理解,存储设备网卡在确定请求类型后,可以根据访问请求的不同类型,将数据包的包头存储在非易失性内存或易失性内存中,例如,一种情况下,可以将访问请求的类型为对存储设备执行修改操作的数据包的包头存储至SCM中的持久化请求队列中。在另一种情况下,为了进一步减少对SCM区域的使用率,还可以将访问请求的类型为对存储设备执行修改操作的数据包的包头存储在易失性内存中,例如DRAM中,将该类型的数据包的数据域部分存储在SCM中,之后可以通过分散-收集(scatter-gather)将包头和数据项拼接在一起得到完整数据包。
具体地,以Key-Value系统的写请求的操作为例,可以将该写请求的数据包的包头和数据项都存在SCM中。而实际上,在存储设备处理完每个请求包后,需要向发送该数据包的发送端,发送对于数据包的响应包,该响应包中的数据包头部分是可以重复利用的,而且数据包头即使丢失也可以重新构造出来,属于非持久化的,因此,还可以将该写请求的数据包头也存放在DRAM中,而不是SCM中。也就是说,访问请求的类型为对存储设备执行修改操作的数据包的包头,例如该写请求的包头,可以存储到DRAM中,但仍将该数据包中的数据域部分存储在SCM中。
应理解,对于访问请求的类型为对存储设备执行修改操作的数据包的包
头,也可以将该包头存储到易失性内存,例如DRAM中。在该DRAM中,可以分为持久化请求队列和非持久化请求队列,即访问请求的类型为对存储设备执行修改操作的数据包的包头存储到DRAM中的持久化请求队列中,将访问请求的类型为对存储设备执行读操作的数据包的包头存储到DRAM中的非持久化请求队列中。
在本发明实施例中,进一步的,当存储设备需要处理数据包时,如图2所示,存储设备200中的处理器204可以从非易失性内存202中调用数据包中的数据进行处理;类似地,也可以从易失性内存203中调用数据包中的数据进行处理。
具体地,对于非易失性内存中的数据,该数据对应的访问请求的类型为对存储设备执行修改操作,当存储设备需要处理该类型的数据包时,例如接收到处理该数据包的指示时,如图2所示,存储设备200可以根据处理器204事先对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在非易失性内存202对应的数据缓冲区中,例如SCM中的对应的数据缓冲区中,查找到该数据包对应的数据域的存储位置,并调用该数据进行处理。可选地,该数据包中数据的基本信息以及存储位置信息可以存储在对应的持久化请求队列中。
例如,存储设备的处理器需要读取并处理写请求的数据时,该写请求的数据包的数据存储在非易失性内存中,处理器可以直接根据数据包中数据的信息,例如请求地址或者是Key-Value存储系统中数据对应的Key值,查询Key对应Value数据的位置,在非易失性内存中找到该数据,对该数据进行写操作,将该数据存储到指定的存储区域,例如存储到SCM中,或者闪存(flash)中。
同样,对于易失性内存中的数据,该数据对应的访问请求的类型为对存储设备执行读操作,当存储设备需要处理该类型的数据包时,例如接收到处理该数据包的指示时,如图2所示,存储设备200可以根据处理器204事先对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在易失性内存203对应的数据缓冲区中,例如DRAM中的对应的数据缓冲区中,查找到该数据包对应的数据的存储位置,并调用该数据进行处理。
应理解,当非易失性内存202的数据缓冲区的缓存空间不足时,例如
SCM的数据缓冲区存储空间不足,可以将数据缓冲区中的部分数据淘汰到其它存储单元中,或者对SCM的空间进行垃圾回收处理,使得SCM有足够空间来缓存数据。
因此,本发明实施例的应用于存储设备中的访问请求的处理方法,网卡根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
上文中结合图1至图4,从接收端存储设备的角度详细描述了根据本发明实施例的分布式存储系统中处理数据请求的方法,下面将结合图5,结合具体实施例描述本发明实施例的方法。
图5示出了根据本发明实施例的应用于存储设备中的访问请求的处理方法400的示意性流程图。如图5所示,该方法400可以由存储设备执行,例如图1所示的分布式存储系统中的存储设备执行,该存储设备为图1中的存储设备102或存储设备103,该存储设备也是如图2所示的存储设备200。具体地,该方法400包括:
S401,存储设备接收数据包。
应理解,存储设备可以通过网卡接收该数据包,该数据包中包括至少一个访问请求,且该数据包中包括请求类型信息,例如,该数据包中包括请求类型字段,通过该请求类型字段携带请求类型信息,该请求类型字段用于指示该数据包中至少一个访问请求的请求类型。
S402,存储设备解析该数据包中的请求类型信息,判断该至少一个访问请求的请求类型。
具体地,该存储设备的网卡解析数据包,根据该数据包中的请求类型字段,确定该数据包中至少一个访问请求的请求类型,判断该至少一个访问请求的请求类型为对存储设备执行修改操作,或者为对存储设备执行非修改操作,例如,执行读操作。
S403,存储设备确定该数据包中的至少一个访问请求的请求类型为对存
储设备执行修改操作时,执行S404;存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行读操作时,执行S405。
S404,存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行修改操作,将该数据包存储到非易失性内存中,使得该数据包中的数据能够持久缓存,并继续执行S405。
可选地,存储设备的网卡将数据包存储到非易失性内存中,包括将该数据包中的数据以及包头均写入该非易失性内存中。
可选地,该非易失性存储可以为SCM。
应理解,该SCM中可以包括数据缓冲区,用于存储该数据包中的数据,还可以用于存储数据包的包头。应理解,该SCM还可以采用日志的形式存储,即该SCM也作为Log区域存储数据,从而保证数据一致性。
S405,存储设备处理该数据包时,从非易失性内存中调用该数据包中的数据进行处理,处理后执行S408。
应理解,存储设备需要处理数据包时,存储设备的处理器根据对该数据包的包管理以及元数据管理,获取该数据包中数据的基本信息以及存储位置信息,从而在SCM对应的数据缓冲区中查找到该数据包对应的数据的存储位置,并调用该数据进行处理。
S406,存储设备确定该数据包中的至少一个访问请求的请求类型为对存储设备执行读操作,将该数据包存储到易失性内存中,例如DRAM,并继续执行S407。
S407,当存储设备处理该数据包时,从易失性内存中调用该数据进行处理,处理后执行S408。
S408,数据包处理流程结束。
因此,本发明实施例的应用于存储设备中的访问请求的处理方法,网卡根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在非易失性内存SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中结合图1至图5,详细描述了根据本发明实施例的应用于存储设备中的访问请求的处理方法,下面将结合图6,描述根据本发明实施例的应用于存储设备中的访问请求的处理装置。
图6示出了根据本发明实施例的存储设备中的网卡500的示意性框图,该存储设备可以包括该网卡500、易失性内存和非易失性内存。例如,该存储设备可以为如图1所示的分布式存储系统的中存储设备102和103,或者也可以为图2所示的存储设备200,如图6所示,该网卡500包括:
接收模块510,用于接收其他存储设备发送的数据包,该数据包中包括至少一个访问请求,该数据包携带有该至少一个访问请求的请求类型信息;
确定模块520,用于根据该请求类型信息,判断该至少一个访问请求是否为对该存储设备执行修改操作的请求;
处理模块530,用于当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包中的数据域部分存储于该非易失性内存中,该数据域部分包括该至少一个访问请求的请求内容;
该处理模块530还用于:当该至少一个访问请求为对该存储设备执行非修改操作的请求时,将该数据包中的数据域部分存储于该易失性内存中。
因此,本发明实施例的存储设备中的网卡,根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
可选地,该处理模块530具体用于:当该至少一个访问请求为对该存储设备执行修改操作的请求时,将该数据包以日志的形式存储于该非易失性内存中。
可选地,该修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;该非修改操作包括读操作。
可选地,该非易失性内存为存储级内存SCM,该易失性内存为动态随机存取存储器DRAM。
可选地,当该至少一个访问请求为对该存储设备执行修改操作的请求时,该方法还包括:该网卡将该数据包中的包头域部分存储于该非易失性内存或该易失性内存中,该包头域部分包含有指示所述数据包的地址的信息。
应理解,根据本发明实施例的存储设备中的网卡500可对应于执行本发明实施例中的方法300和方法400,并且网卡500中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5中的各个方法中存储设备的网卡执行的相应流程,为了简洁,在此不再赘述。
因此,本发明实施例的存储设备中的网卡,根据数据包中包括的请求类型信息,确定该数据包中至少一个访问请求是否为对存储设备执行修改操作的请求,当至少一个访问请求为对该存储设备执行修改操作的请求时,网卡将该数据包存储到非易失性内存中,否则,网卡将数据包存储到易失性内存中,这样可以将现有技术中网卡缓冲区与存储系统的缓存区合一,从而减少数据在两者间的拷贝开销;同时减少对存储设备不执行修改操作的访问请求在SCM中的存放,降低对SCM大容量的需求,提高SCM的读写寿命。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (16)
- 一种应用于存储设备中的访问请求的处理方法,其特征在于,所述存储设备包括网卡、易失性内存和非易失性内存,所述方法包括:所述网卡接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;所述网卡根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,所述网卡将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,所述网卡将所述数据包中的所述数据域部分存储于所述易失性内存中。
- 根据权利要求1所述的方法,其特征在于,所述网卡将所述数据包存储于所述非易失性内存中,包括:所述网卡将所述数据包以日志的形式存储于所述非易失性内存中。
- 根据权利要求1或2所述的方法,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;所述非修改操作包括读操作。
- 根据权利要求1至3中任一项所述的方法,其特征在于,当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,所述方法还包括:所述网卡将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
- 一种存储设备中的网卡,其特征在于,所述存储设备包括所述网卡、易失性内存和非易失性内存,所述网卡包括:接收模块,用于接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;确定模块,用于根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;处理模块,用于当所述至少一个访问请求为对所述存储设备执行修改操 作的请求时,将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;所述处理模块还用于:当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于所述易失性内存中。
- 根据权利要求5所述的网卡,其特征在于,所述处理模块具体用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
- 根据权利要求5或6所述的网卡,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;所述非修改操作包括读操作。
- 根据权利要求5至7中任一项所述的网卡,其特征在于,所述处理模块具体用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
- 一种存储设备,其特征在于,所述存储设备包括网卡、易失性内存和非易失性内存,所述网卡用于:接收其他存储设备发送的数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于所述易失性内存中。
- 根据权利要求9所述的存储设备,其特征在于,所述网卡还用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
- 根据权利要求9或10所述的存储设备,其特征在于,所述修改操 作包括下述操作中的至少一个:写操作、更新操作和删除操作;所述非修改操作包括读操作。
- 根据权利要求9至11中任一项所述的存储设备,其特征在于,所述网卡还用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
- 一种分布式存储系系统,其特征在于,所述分布式存储系统包括第一存储设备和第二存储设备,所述第一存储设备用于:向第二存储设备发送数据包,所述数据包中包括至少一个访问请求,所述数据包携带有所述至少一个访问请求的请求类型信息;所述第二存储设备用于:接收所述第一存储设备发送的所述数据包;根据所述请求类型信息,判断所述至少一个访问请求是否为对所述存储设备执行修改操作的请求;当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包中的数据域部分存储于所述非易失性内存中,所述数据域部分包括所述至少一个访问请求的请求内容;当所述至少一个访问请求为对所述存储设备执行非修改操作的请求时,将所述数据包中的数据域部分存储于所述易失性内存中。
- 根据权利要求13所述的分布式存储系系统,其特征在于,所述第二存储设备还用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将所述数据包以日志的形式存储于所述非易失性内存中。
- 根据权利要求13或14所述的分布式存储系系统,其特征在于,所述修改操作包括下述操作中的至少一个:写操作、更新操作和删除操作;所述非修改操作包括读操作。
- 根据权利要求13至15中任一项所述的分布式存储系统,其特征在于,所述第一存储设备还用于:当所述至少一个访问请求为对所述存储设备执行修改操作的请求时,将 所述数据包中的包头域部分存储于所述非易失性内存或所述易失性内存中,所述包头域部分包含有指示所述数据包的地址的信息。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201680088376.XA CN109564502B (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
PCT/CN2016/096089 WO2018032510A1 (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/096089 WO2018032510A1 (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018032510A1 true WO2018032510A1 (zh) | 2018-02-22 |
Family
ID=61196160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2016/096089 WO2018032510A1 (zh) | 2016-08-19 | 2016-08-19 | 应用于存储设备中的访问请求的处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109564502B (zh) |
WO (1) | WO2018032510A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688072A (zh) * | 2020-05-19 | 2021-11-23 | 华为技术有限公司 | 数据处理方法及设备 |
EP4202696A1 (en) * | 2021-12-23 | 2023-06-28 | INTEL Corporation | Storage class memory device including a network |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831306B (zh) * | 2020-03-26 | 2021-07-20 | 成都万创科技股份有限公司 | 一种基于网卡NVM的串号和ProjectName读写方法 |
CN113157628B (zh) * | 2021-04-20 | 2024-09-20 | 北京达佳互联信息技术有限公司 | 存储系统、数据处理方法、装置、存储系统及电子设备 |
CN114125081B (zh) * | 2021-10-27 | 2023-09-22 | 桂林长海发展有限责任公司 | 一种接收数据的处理方法、装置及存储介质 |
CN114285676B (zh) * | 2021-11-24 | 2023-10-20 | 中科驭数(北京)科技有限公司 | 智能网卡、智能网卡的网络存储方法和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063344A (zh) * | 2014-06-20 | 2014-09-24 | 华为技术有限公司 | 一种存储数据的方法及网络接口卡 |
WO2015084471A1 (en) * | 2013-12-05 | 2015-06-11 | Google Inc. | Distributing data on distributed storage systems |
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
CN105260136A (zh) * | 2015-09-24 | 2016-01-20 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0750666A (ja) * | 1993-08-05 | 1995-02-21 | Hitachi Ltd | ルーティング方式 |
CN101707590B (zh) * | 2009-09-25 | 2015-03-11 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的tcp/ip协议报文发送方法和装置 |
WO2012169032A1 (ja) * | 2011-06-09 | 2012-12-13 | 富士通株式会社 | バッファ装置,バッファ制御装置,及びバッファ制御方法 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
CN103631532B (zh) * | 2012-08-29 | 2016-06-15 | 国际商业机器公司 | 用于在数据存储系统中访问数据的方法和设备 |
US9185057B2 (en) * | 2012-12-05 | 2015-11-10 | The Intellisis Corporation | Smart memory |
CN103441948B (zh) * | 2013-07-03 | 2017-09-05 | 华为技术有限公司 | 一种数据访问方法、网卡及存储系统 |
-
2016
- 2016-08-19 CN CN201680088376.XA patent/CN109564502B/zh active Active
- 2016-08-19 WO PCT/CN2016/096089 patent/WO2018032510A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015084471A1 (en) * | 2013-12-05 | 2015-06-11 | Google Inc. | Distributing data on distributed storage systems |
CN105224240A (zh) * | 2014-05-30 | 2016-01-06 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
CN104063344A (zh) * | 2014-06-20 | 2014-09-24 | 华为技术有限公司 | 一种存储数据的方法及网络接口卡 |
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN105260136A (zh) * | 2015-09-24 | 2016-01-20 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688072A (zh) * | 2020-05-19 | 2021-11-23 | 华为技术有限公司 | 数据处理方法及设备 |
US11755513B2 (en) | 2020-05-19 | 2023-09-12 | Huawei Technologies Co., Ltd. | Data processing and writing method based on virtual machine memory identification field and devise |
CN113688072B (zh) * | 2020-05-19 | 2024-03-26 | 华为技术有限公司 | 数据处理方法及设备 |
EP4202696A1 (en) * | 2021-12-23 | 2023-06-28 | INTEL Corporation | Storage class memory device including a network |
Also Published As
Publication number | Publication date |
---|---|
CN109564502B (zh) | 2020-12-08 |
CN109564502A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018032510A1 (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
US11023411B2 (en) | Programmed input/output mode | |
US6799200B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system | |
WO2015078219A1 (zh) | 一种信息缓存方法、装置和通信设备 | |
US20210326270A1 (en) | Address translation at a target network interface device | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
EP4318251A1 (en) | Data access system and method, and device and network card | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
JP6299266B2 (ja) | データ格納方法、ストレージシステム、プログラム及びストレージ装置 | |
US9690713B1 (en) | Systems and methods for effectively interacting with a flash memory | |
CN112118167B (zh) | 一种跨网隧道数据快速传输方法 | |
JP2017537404A (ja) | メモリアクセス方法、スイッチ、およびマルチプロセッサシステム | |
US20240348686A1 (en) | Remote Data Access Method and Apparatus | |
CN111831596B (zh) | 一种rtos串口网络传输方法及装置 | |
US11176064B2 (en) | Methods and apparatus for reduced overhead data transfer with a shared ring buffer | |
US10255213B1 (en) | Adapter device for large address spaces | |
WO2017177400A1 (zh) | 一种数据处理方法及系统 | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
US11429595B2 (en) | Persistence of write requests in a database proxy | |
WO2016065613A1 (zh) | 访问文件的方法、分布式存储系统和网络设备 | |
US20140359062A1 (en) | Data transferring apparatus, data transferring system and non-transitory computer readable medium | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface | |
WO2024152588A1 (zh) | 内存访问的页错误处理方法及装置 | |
WO2024114645A1 (zh) | 一种虚拟化网络功能vnf的实例化方法及装置 | |
US20230315683A1 (en) | File Access Method, Storage Node, and Network Interface Card |
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: 16913266 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16913266 Country of ref document: EP Kind code of ref document: A1 |