Method, apparatus and computer program product for transmitting data

By sharing the shared hash set of pattern data between the protocol layer and the IO path layer, using the client's pattern detection results, the problems of resource waste and IO response time in the prior art are solved, and the effects of resource saving and response time improvement are achieved.

CN119862139APending Publication Date: 2025-04-22DELL PROD LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311370506.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-10-20
Publication Date
2025-04-22

AI Technical Summary

Technical Problem

The prior art does not share mode detection results between the protocol layer and the IO path layer, resulting in wasted memory and CPU resources and the IO response time is extended.

Method used

Share a shared hash set of pattern data between the protocol layer and the IO path layer, using the client's pattern detection results to avoid redundant pattern expansion or pattern detection in the server.

Benefits of technology

Save memory resources and CPU resources for mode IO, reduce the required operations, and improve IO response time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119862139A_ABST
    Figure CN119862139A_ABST
Patent Text Reader

Abstract

The invention relates to a method, a device and a computer program product for transmitting mode data. The method includes creating a shared hash set that shares mode data between a protocol layer and an input output (IO) path layer, wherein the shared hash set stores mode keys and mode content for mode detection. The method also includes receiving, by the protocol layer, a schema data block from the client, wherein the schema data block includes schema data and non-schema data. The method further comprises the steps that the protocol layer transmits the mode data blocks to the IO path layer, and the mode data blocks are written into a common block file system (CBFS) layer. In this manner, by sharing mode data between the protocol layer and the IO path layer, redundant mode extension or mode detection within the memory is avoided, thereby reducing data transfer time.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of data storage, and more particularly, to methods, devices and computer program products for transmitting data. Background Art

[0002] Inline Pattern Detection (ILPD) is a feature used in many storage systems to improve data reduction. When a storage system performs ILPD, it first performs a hash lookup to find a match with an input output (IO) data unit. If the hash lookup finds a match, a full bit-by-bit comparison of the entire data unit is required. If all matches, valid pattern data has been found.

[0003] To support protocol layer transmission of mode data, SMB mode IO has been designed specifically for Server Message Block (SMB) compression as a new feature. Similar to data compression, mode data IO can save the amount of data that must be transmitted over the wire, and it consumes significantly less bandwidth, so the transmission time is also less. Summary of the invention

[0004] Embodiments of the present application provide a method, device and computer program product for transmitting pattern data. In embodiments of the present disclosure, pattern data information is shared between protocol layer IO path layers. When a client writes pattern data to a server, the server can utilize the pattern detection result from the client. In this way, the memory used for pattern IO buffers will be saved for pattern IO, and CPU resources for redundant pattern detection will also be saved. In addition, IO response time can be improved because fewer operations are required.

[0005] According to a first aspect of an embodiment of the present application, a method for transmitting data is provided, the method comprising: creating a shared hash set for sharing pattern data between a protocol layer and an IO path layer, wherein the shared hash set stores a pattern key and a pattern content for pattern detection; receiving a pattern data block from a client by the protocol layer, wherein the pattern data block includes pattern data and non-pattern data; transmitting the pattern data block from the protocol layer to the IO path layer; and writing the pattern data block into a common block file system (CBFS) layer.

[0006] According to a second aspect of an embodiment of the present application, an electronic device is provided, comprising: at least one processor; and instructions coupled to the at least one processor and having stored thereon, which, when executed by the at least one processor, cause the electronic device to perform an action, the action comprising: creating a shared hash set for sharing pattern data between a protocol layer and an IO path layer, wherein the shared hash set stores a pattern key and a pattern content for pattern detection; receiving a pattern data block from a client by the protocol layer, wherein the pattern data block includes pattern data and non-pattern data; transmitting the pattern data block to the IO path layer by the protocol layer; and writing the pattern data block to a common block file system (CBFS) layer.

[0007] According to a third aspect of an embodiment of the present application, a computer program product is provided, which is tangibly stored on a non-volatile computer-readable medium and includes machine-executable instructions, which, when executed, cause a machine to perform actions, the actions including: creating a shared hash set for sharing pattern data between a protocol layer and an IO path layer, wherein the shared hash set stores pattern keys and pattern contents for pattern detection; receiving a pattern data block from a client by the protocol layer, wherein the pattern data block includes pattern data and non-pattern data; transmitting the pattern data block to the IO path layer by the protocol layer; and writing the pattern data block to a common block file system (CBFS) layer.

[0008] It should be understood that the contents described in the summary of the invention are not intended to limit the key or important features of the embodiments of the present disclosure, nor are they intended to limit the scope of the present disclosure. Other features of the present disclosure will become easily understood through the following description. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The above and other features, advantages and aspects of the embodiments of the present disclosure will become more apparent with reference to the following detailed description in conjunction with the accompanying drawings. In the accompanying drawings, the same or similar reference numerals always represent the same or similar elements. In the accompanying drawings:

[0010] Figure 1 A schematic diagram showing the overall design of the mode data IO in the protocol layer and the IO path layer according to some embodiments of the present disclosure;

[0011] Figure 2 A schematic diagram showing a description of a skeleton data structure according to some embodiments of the present disclosure;

[0012] Figure 3 A schematic diagram showing an example of an IO list using a skeleton data structure to carry mode data and non-mode data according to some embodiments of the present disclosure;

[0013] Figure 4A schematic diagram showing an example of writing path IO list processing of pattern data according to some embodiments of the present disclosure;

[0014] Figure 5 A schematic diagram showing an example of read path IO list processing of pattern data according to some embodiments of the present disclosure;

[0015] Figure 6 A flowchart showing a method for transmitting data according to some embodiments of the present disclosure; and

[0016] Figure 7 A block diagram of a device in which various embodiments of the present disclosure may be implemented is shown. DETAILED DESCRIPTION

[0017] Embodiments of the present disclosure will be described in more detail below with reference to the accompanying drawings. Although certain embodiments of the present disclosure are shown in the accompanying drawings, it should be understood that the present disclosure can be implemented in various forms and should not be construed as being limited to the embodiments described herein, which are instead provided for a more thorough and complete understanding of the present disclosure. It should be understood that the drawings and embodiments of the present disclosure are only for exemplary purposes and are not intended to limit the scope of protection of the present disclosure.

[0018] In the description of the embodiments of the present disclosure, the terms "including", "having" and similar terms should be understood as open inclusion, that is, "including but not limited to". The term "based on" should be understood as "based at least in part on". The terms "embodiment", "one embodiment" or "the embodiment" should be understood as "at least one embodiment".

[0019] Online Pattern Detection (ILPD) is a capability that can recognize a set of static predefined patterns as they are written to objects that have been set. For example, if an input / output (IO) stream consists of sections that are all 0s or all 1s, these patterns should not be written to disk. The system should detect the predefined patterns in memory and should not allocate any space on disk for the pattern data, only update the metadata of the pattern data.

[0020] In order to support the protocol layer transmission of pattern data, SMB mode IO has been designed as a new function for server message block (SMB) compression. Introducing the SMB compression function in the server's operating system can reduce the amount of data during file transmission over the network. However, it is currently done at the protocol layer. Pattern IO in the data path is supported in many storage products. However, currently the protocol layer and the IO path layer do not consider each other's pattern detection results, and the pattern data needs to be expanded in the memory and undergo the pattern detection process again. This causes the CPU and storage resources in the memory to be wasted on unnecessary pattern detection and pattern filling. In addition, the time spent on these tasks also leads to longer IO response times.

[0021] To this end, the present disclosure provides a scheme for transmitting data. In an embodiment of the present disclosure, pattern data information is shared between the protocol layer and the IO path layer. For read and write paths, allocation unit aligned pattern data is transmitted with the same pattern identifier throughout the IO stack without the need for intra-server pattern extension or pattern detection. In this way, storage resources for pattern IO buffers will be saved for pattern IO, and CPU resources for redundant pattern detection will also be saved. In addition, IO response time can also be improved because fewer operations are required.

[0022] Figure 1 FIG. 1 is a schematic diagram showing the overall design of the mode data IO in the protocol layer 130 and the IO path layer 140 according to some embodiments of the present disclosure. Figure 1 As shown, environment 100 includes client 102 and server 104. Mode data blocks (110, 120) are transmitted between client 102 and server 104, wherein the mode data blocks (110, 120) include mode data and non-mode data.

[0023] use Figure 1 The architecture, according to an embodiment of the present application, by creating a shared hash set of shared pattern data in the input and output IO path, the client 102 and the server 104 can perform data transmission in the read path as described below. First, the pattern data block 110 is subjected to pattern detection 112 in the client 102. The pattern detection 112 currently supports 8-byte repeatable patterns. Its working method is to first select several 8-byte samples with different offsets in the user data of an allocation unit (currently an 8KB unit). If the selected samples all have the same content, a hash search is performed to see whether the selected 8 bytes are a valid pattern. If the hash search finds a predefined pattern, a full bit-by-bit comparison is performed on the entire 8KB data. If all match, valid pattern data is found.

[0024] After the pattern detection 112 is performed, the pattern data is compressed. In an embodiment of the present disclosure, both the client 102 and the server 104 support the SMB2 compression function using the PATTERN_V1 algorithm, so the pattern data is transmitted using the pattern identifier 114 and its repetition count. The Pattern_V1 algorithm is a new SMB compression algorithm designed to enable pattern IO. The algorithm is used by the client or server when used to compress data with consecutive, equivalent patterns that repeat a specific count.

[0025] In some embodiments, the following SMB compression algorithm is supported in the server and client, and its workflow for constructing a compressed message according to a compression message chain is generally as follows: 1. Receive the original data from the storage device and construct a read response. It must be decided whether to compress the response. 2. Compress the data in 256K blocks. 3. When deciding to compress the original data, scan the data for any forward and backward pattern repetitions. 4. If there are no forward and backward pattern repetitions, and the size of the uncompressed data is less than 1K, then the response will not be compressed and the uncompressed message will be sent to the client. 5. If there are forward and backward pattern repetitions, and the size of the remaining uncompressed data (after forward or backward pattern repetition reduction) is less than 1K, then the compression payload header should contain NONE for the remaining uncompressed data. 6. If there are forward or backward pattern repetitions, and the size of the remaining uncompressed data is greater than 1K, then send the data segment associated with the compression instruction to the client. 7. Repeat step 3 for the next 256K block until the remaining uncompressed data = 0. 8. If compressed data is sent, the SMB header and read response structure should be uncompressed. For this data portion, the Compression Payload Header should not contain NONE. 9. Finally, if the total compressed data + 8 (transformation header size) > uncompressed SMB message, then the response should be sent without any compression.

[0026] When the server 104 receives the compressed mode data block 110 from the client 102 through the protocol layer 130, by means of a double linked list having a skeleton data structure (hereinafter referred to as Figure 2 and Figure 3 The protocol layer 130 is used to transfer the datagrams (hereinafter referred to as “datagrams”) to a common block file system (CBFS) (not shown in the figure) via the IO path layer 140 , wherein online mode filling is not performed in the protocol layer 130 , and ILPD is not performed in the IO path layer 140 .

[0027] use Figure 1According to the embodiment of the present application, by creating a shared hash set of shared pattern data in the input and output IO path, the client 102 and the server 104 can perform data transmission in the write path as described below. In response to the data read request supporting pattern IO from the client 102, the server 104 first reads the mapping pointer indicator of the compressed pattern data block 120 in the CBFS layer, and then transmits it to the protocol layer 130 via the IO path layer 140 with the help of a double linked list with a skeleton data structure, wherein online pattern filling is not performed in the IO path layer 140, and ILPD is not performed in the protocol layer 130. Then, the protocol layer 130 sends the compressed pattern data block 120 to the client 102, and the compressed pattern data 120 is pattern filled 122 using the pattern identifier 124 and its count in the client 102, and finally the pattern data block 120 is obtained.

[0028] In this way, when the client writes pattern data to the storage server, the server can utilize the pattern detection results from the client. Similarly, when the client reads data from the storage server, the online pattern detection (ILPD) results in the IO path layer can also be used to reduce redundant pattern detection at the protocol layer.

[0029] Figure 2 FIG. 2 is a schematic diagram showing a description of a skeleton data structure 200 according to some embodiments of the present disclosure. Figure 2 As shown, the skeleton data structure 200 includes both the mode content ( Figure 2 ) and pattern keys ( Figure 2 In the patternKey), it also includes the data buffer ( Figure 2 104). Note that in order to comply with currently commonly used server codes, the pattern content patternContent is an 8-byte repeatable pattern here. Since SMB currently supports 256 patterns with a 1-byte pattern identifier field, the corresponding patterns are selected in ILPD and marked as known to SMB. In addition, for pattern data, Buffer_Cached*buffer will be NULL because the pattern data is represented by the pattern key and the pattern content so that the pattern data is transmitted through the IO path in the server 104 without occupying the data buffer. In addition, the skeleton data structure 200 also includes a Boolean variable indicating whether the pattern is known in SMB (in Figure 2 It is represented by Boolean_t in SMB, and its value is true when the mode is known in SMB, otherwise it is false.

[0030] Figure 3 A schematic diagram of an example 300 of using a skeleton data structure 200 to carry an IO list 304 of schema data and non-schema data according to some embodiments of the present disclosure is shown. Figure 3 As shown, for data with known patterns, the IO list 304 carries the pattern key and pattern content, such as Figure 3 As shown in table 306, it is used to identify the mode and extend the mode to the IO buffer. For non-pattern data, the IO list 304 carries the data buffer, such as Figure 3 As shown in the dashed box 302. The above-mentioned pattern recognition requires the creation of a shared hash set for known patterns in the IO path, which stores pattern keys and pattern contents for pattern detection (recognition), and acts like a dictionary, so that pattern data can be shared between the protocol layer 130 and the IO path layer 140.

[0031] In an embodiment of the present disclosure, the IO list 304 is a double linked list including pattern data and non-pattern data. In other embodiments, the IO list 304 may also be other types of tables including pattern data and non-pattern data. The IO list 304 is used in the server 104 to transmit pattern data blocks (110, 120). In the write path, it carries the pattern key, which is ultimately converted into the corresponding special metadata in the indirect block. In the read path, it carries the pattern content, which is used as the pattern identifier in the message reply of the client 102 read request.

[0032] Figure 4 FIG. 4 is a schematic diagram showing an example 400 of processing the write path IO list 304 of pattern data according to some embodiments of the present disclosure. Figure 4 In response to a write request from client 102, server 104 performs client 102 write IO operation 402. The write IO operation 402 includes using allocation unit aligned IO in protocol layer 404, checking the length of pattern data, and performing conversion from protocol mode to IO path.

[0033] In an embodiment of the present disclosure, the conversion operation in the above-mentioned write path specifically includes, in response to the pattern data being able to fill at least one allocation unit, marking the pattern data as a known pattern (i.e., assigning a true value to the Boolean_t in the IO list 304). In addition, it also includes setting the corresponding pattern content to represent the data using a pattern identifier corresponding to the known pattern. In addition, it also includes adding the pattern content to the IO list 304 so that the lower layer writes it to the CBFS layer 412, wherein the non-pattern data 408 in the IO list 304 is transmitted through the buffer, and the pattern data 410 is transmitted through the IO path. These data reach the layered drive layer via the logical unit number (LUN) pool and are copied therein, and then a snapshot of these data is created in the file system layer to back up and protect these data. In addition, the conversion operation in the write path also includes that when the CBFS layer 412 refreshes the data, the CBFS layer 412 recognizes the known pattern and skips the ILPD 414. And it also includes that when the core 416 of the CBFS layer 412 commits the change of metadata, the known pattern (pattern key) is finally converted into the corresponding special metadata in the indirect block.

[0034] Figure 5 FIG. 5 is a schematic diagram showing an example 500 of processing the read path IO list 304 of pattern data according to some embodiments of the present disclosure. Figure 5 In the embodiment, in response to a data read request from a client 102 supporting mode IO, the server 104 performs a client 102 read IO operation 502. The read IO operation 502 includes using allocation unit aligned IO in the core 516 of the CBFS layer 512, reading a mapping pointer indicator of mode data, and performing a conversion from an IO path to a protocol mode.

[0035] In an embodiment of the present disclosure, the conversion operation in the above-mentioned read path specifically includes determining in the CBFS layer 512 whether the mode indicated by the mapping pointer indicator of the mode data is a known mode in the IO path. In addition, it also includes marking the mode as a known mode (i.e., assigning a true value to the Boolean_t in the IO list 304) in response to the mode being a known mode in the IO path. In addition, it also includes setting the corresponding mode content using the mode identifier corresponding to the known mode to represent the data. In addition, it also includes adding the mode content to the IO list 304 for upper layer transmission to the protocol layer 504, wherein the non-mode data 508 in the IO list 304 is transmitted through the buffer, and the mode data 510 is transmitted through the IO path. These data arrive at the layered drive layer via the logical unit number (LUN) pool and are copied therein, and then a snapshot of these data is created in the file system layer to back up and protect these data. And the conversion operation in the read path also includes, in response to the protocol layer 504, packaging a data packet for a message reply for a read request, filling the mode identifier and the length of the mode data into the mode IO header and skipping the mode detection 506 in the SMB layer.

[0036] Figure 6 FIG. 6 is a flow chart showing a method 600 for transmitting data according to some embodiments of the present disclosure. Figure 6 As shown, at block 602, method 600 includes creating a shared hash set for sharing pattern data between a protocol layer and an input / output IO path layer, wherein the shared hash set stores a pattern key and a pattern content for pattern detection. Figure 1 In the environment 100 shown, the shared hash set is created in the IO path in the server 104. Using the shared hash set, pattern detection (identification) can be performed on the transmitted pattern data blocks (110, 120) in the read path and the write path, so that the pattern data can be shared between the protocol layer 130 and the IO path layer 140, and the same pattern data can be transmitted with the same pattern identifier, avoiding redundant pattern extension or pattern detection in the server 104.

[0037] At block 604, method 600 includes receiving, by the protocol layer, a pattern data block from a client, wherein the pattern data block includes pattern data and non-pattern data. Figure 1 In the illustrated environment 100 , the protocol layer 130 in the server 104 receives a compressed pattern data block 110 from the client 102 , the compressed pattern data block 110 including both pattern data identified by the pattern identifier 114 and uncompressed non-pattern data.

[0038] At block 606, method 600 includes transmitting the mode data block from the protocol layer to the IO path layer. Figure 1In the illustrated environment 100 , the protocol layer 130 in the server 104 directly transmits the received compressed pattern data block 110 to the IO path layer 140 without performing online pattern filling, and the IO path layer 140 can utilize the pattern detection result from the client without performing pattern detection.

[0039] At block 608, method 600 includes writing the pattern data block to the common block file system CBFS layer. Figure 1 In the illustrated environment 100, the mode identifier 114 and non-mode data are transmitted via the IO path layer 140 to the Figure 4 In CBFS as shown in , the mode identifier is stored as corresponding special metadata within the indirect block.

[0040] In this way, the pattern data can be shared between the protocol layer 130 and the IO path layer 140, thereby avoiding redundant pattern extension or pattern detection in the server 104 and reducing the IO response time.

[0041] Figure 7 A schematic block diagram of an example device 700 that can be used to implement an embodiment of the present disclosure is shown. As shown, the device 700 includes a computing unit 701, which can perform various appropriate actions and processes according to computer program instructions stored in a read-only memory (ROM) 702 or loaded from a storage unit 708 into a random access memory (RAM) 703. In the RAM 703, various programs and data required for the operation of the device 700 can also be stored. The computing unit 701, the ROM 702, and the RAM 703 are connected to each other via a bus 704. An input / output (I / O) interface 705 is also connected to the bus 704.

[0042] A number of components in the device 700 are connected to the I / O interface 705, including: an input unit 706, such as a keyboard, a mouse, etc.; an output unit 707, such as various types of displays, speakers, etc.; a storage unit 708, such as a disk, an optical disk, etc.; and a communication unit 709, such as a network card, a modem, a wireless communication transceiver, etc. The communication unit 709 allows the device 700 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks.

[0043] The computing unit 701 may be a variety of general and / or special processing components with processing and computing capabilities. Some examples of the computing unit 701 include, but are not limited to, a central processing unit (CPU), a graphics processing unit (GPU), various dedicated artificial intelligence (AI) computing chips, various computing units running machine learning model algorithms, digital signal processors (DSPs), and any appropriate processors, controllers, microcontrollers, etc. The computing unit 701 performs the various methods and processes described above, such as method 600. For example, in some embodiments, the method 600 may be implemented as a computer software program, which is tangibly contained in a machine-readable medium, such as a storage unit 708. In some embodiments, part or all of the computer program may be loaded and / or installed on the device 700 via ROM 702 and / or communication unit 709. When the computer program is loaded into RAM 703 and executed by the computing unit 701, one or more steps of the method 600 described above may be performed. Alternatively, in other embodiments, the computing unit 701 may be configured to perform the method 600 in any other appropriate manner (e.g., by means of firmware).

[0044] The functions described above herein may be performed at least in part by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that may be used include: field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chip systems (SOCs), load programmable logic devices (CPLDs), and the like.

[0045] The program code for implementing the method of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general-purpose computer, a special-purpose computer, or other programmable data processing device, so that the program code, when executed by the processor or controller, enables the functions / operations specified in the flow chart and / or block diagram to be implemented. The program code may be executed entirely on the machine, partially on the machine, partially on the machine and partially on a remote machine as a stand-alone software package, or entirely on a remote machine or server.

[0046] In the context of the present disclosure, a machine-readable medium may be a tangible medium that may contain or store a program for use by or in conjunction with an instruction execution system, device, or equipment. A machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or equipment, or any suitable combination of the foregoing. A more specific example of a machine-readable storage medium may include an electrical connection based on one or more lines, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In addition, although each operation is depicted in a specific order, this should be understood as requiring such operations to be performed in the specific order shown or in a sequential order, or requiring that all illustrated operations should be performed to obtain the desired result. In certain environments, multitasking and parallel processing may be advantageous. Similarly, although several specific implementation details are included in the above discussion, these should not be interpreted as limiting the scope of the present disclosure. Certain features described in the context of separate embodiments can also be implemented in a single implementation in combination. On the contrary, the various features described in the context of a single implementation can also be implemented in multiple implementations individually or in any suitable sub-combination.

[0047] Although the subject matter has been described in language specific to structural features and / or methodological logical actions, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or actions described above. On the contrary, the specific features and actions described above are merely example forms of implementing the claims.

Claims

1. A method for transmitting data, the method comprising: Creating a shared hash set for sharing pattern data between the protocol layer and the input / output (IO) path layer, wherein the shared hash set stores pattern keys and pattern contents for pattern detection; receiving, by the protocol layer, a mode data block from a client, wherein the mode data block includes the mode data and non-mode data; Transmitting the mode data block from the protocol layer to the IO path layer; as well as The mode data block is written into the common block file system CBFS layer.

2. The method according to claim 1, further comprising: Reading the mode data block from the CBFS layer to the IO path layer; Transmitting the mode data block from the IO path layer to the protocol layer; as well as The mode data block is sent to the client by the protocol layer.

3. The method according to claim 1, wherein transmitting the mode data block from the protocol layer to the IO path layer comprises: The pattern data block is transmitted using an IO list, wherein: For the pattern data, the IO list carries the pattern key and the pattern content, so as to identify the pattern and extend the pattern to the IO buffer; For the non-pattern data, the IO list carries a data buffer. The method according to claim 3 , wherein the IO list is a double-linked list including the pattern data and the non-pattern data.

5. The method of claim 3, wherein the IO list carries the mode key in a write path, the mode key being converted to corresponding metadata in an indirect block. 6 . The method according to claim 3 , wherein the IO list carries the mode content in a read path, and the mode content is used as a mode identifier in a message reply of a read request.

7. The method according to claim 5, further comprising: In the write path, in response to a data write request supporting pattern IO from the client, using allocation unit aligned IO in the protocol layer, checking the length of the pattern data; as well as Performs conversion from protocol mode to IO path.

8. The method of claim 7, wherein performing the conversion from the protocol mode to the IO path comprises: In response to the pattern data being able to fill at least one allocation unit, marking the pattern data as a known pattern; Using a schema identifier corresponding to the known schema, setting corresponding schema content to represent data; Adding the pattern content to the IO list to be written to the CBFS layer; In case the CBFS layer refreshes data, the CBFS recognizes the known pattern and skips the pattern detection; as well as In the event that the CBFS layer commits changes to the metadata, the known pattern is converted to corresponding metadata within indirect blocks.

9. The method according to claim 6, further comprising: In the read path, in response to a data read request from the client supporting the mode IO, a mapping pointer indicator of the mode data is read using allocation unit aligned IO in the CBFS layer; as well as Performs the conversion from IO path to protocol mode.

10. The method of claim 9, wherein performing a conversion from the IO path to the protocol mode comprises: determining whether the mode indicated by the mapping pointer indicator of the mode data is a known mode in the IO path layer; In response to the pattern being the known pattern in the IO path layer, marking the pattern as the known pattern; Using a schema identifier corresponding to the known schema, setting corresponding schema content to represent data; Adding the mode content to the IO list for transmission to the protocol layer; as well as In response to the protocol layer packaging a data packet for the message reply of the read request, the mode identifier and the length of the mode data are filled into the mode IO header and the mode detection is skipped.

11. An electronic device, comprising: at least one processor; as well as coupled to the at least one processor and having instructions stored thereon, the instructions, when executed by the at least one processor, causing the electronic device to perform actions, the actions comprising: Creating a shared hash set for sharing pattern data between the protocol layer and the input / output (IO) path layer, wherein the shared hash set stores pattern keys and pattern contents for pattern detection; receiving, by the protocol layer, a mode data block from a client, wherein the mode data block includes the mode data and non-mode data; Transmitting the mode data block from the protocol layer to the IO path layer; and The mode data block is written into the common block file system CBFS layer.

12. The device according to claim 11, further comprising: Reading the mode data block from the CBFS layer to the IO path layer; Transmitting the mode data block from the IO path layer to the protocol layer; as well as The mode data block is sent to the client by the protocol layer.

13. The device according to claim 11, wherein transmitting the mode data block from the protocol layer to the IO path layer comprises: The pattern data block is transmitted using an IO list, wherein: For the pattern data, the IO list carries the pattern key and the pattern content, so as to identify the pattern and extend the pattern to the IO buffer; For the non-pattern data, the IO list carries a data buffer.

14. The apparatus of claim 13, wherein the IO list carries the mode key in a write path, the mode key being converted to corresponding metadata in an indirect block.

15. The apparatus of claim 13, wherein the IO list carries the mode content in a read path, the mode content being used as a mode identifier in a message reply of a read request.

16. The apparatus of claim 14, further comprising: In the write path, in response to a data write request supporting pattern IO from the client, using allocation unit aligned IO in the protocol layer, checking the length of the pattern data; as well as Performs conversion from protocol mode to IO path.

17. The apparatus of claim 16, wherein performing the conversion from the protocol mode to the IO path comprises: In response to the pattern data being able to fill at least one allocation unit, marking the pattern data as a known pattern; Using a schema identifier corresponding to the known schema, setting corresponding schema content to represent data; Adding the pattern content to the IO list to be written to the CBFS layer; In case the CBFS layer refreshes data, the CBFS recognizes the known pattern and skips the pattern detection; as well as In the event that the CBFS layer commits changes to the metadata, the known pattern is converted to corresponding metadata within indirect blocks.

18. The apparatus of claim 15, further comprising: In the read path, in response to a data read request from the client supporting the mode IO, a mapping pointer indicator of the mode data is read using allocation unit aligned IO in the CBFS layer; as well as Performs the conversion from IO path to protocol mode.

19. The apparatus of claim 18, wherein performing a conversion from the IO path to the protocol mode comprises: determining whether the mode indicated by the mode data mapping pointer indicator is a known mode in the IO path layer; In response to the pattern being the known pattern in the IO path layer, marking the pattern as the known pattern; Using a schema identifier corresponding to the known schema, setting corresponding schema content to represent data; Adding the mode content to the IO list for transmission to the protocol layer; as well as In response to the protocol layer packaging a data packet for the message reply of the read request, the mode identifier and the length of the mode data are filled into the mode IO header and the mode detection is skipped.

20. A computer program product tangibly stored on a non-transitory computer readable medium and comprising machine executable instructions that when executed cause a machine to perform actions comprising: Creating a shared hash set for sharing pattern data between the protocol layer and the input / output (IO) path layer, wherein the shared hash set stores pattern keys and pattern contents for pattern detection; receiving, by the protocol layer, a mode data block from a client, wherein the mode data block includes the mode data and non-mode data; Transmitting the mode data block from the protocol layer to the IO path layer; as well as The mode data block is written into the common block file system CBFS layer.