Method, apparatus and computer program product for storage

By receiving I/O requests for different types of storage media in the object storage system, determining the namespace and mapping, unified operation of different types of storage media is achieved, and the problem of inconsistent storage media in the prior art is solved, and storage is improved System adaptability and flexibility.

CN119225623APending Publication Date: 2024-12-31DELL PROD LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202310797464.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-06-30
Publication Date
2024-12-31

AI Technical Summary

Technical Problem

There is inconsistent underlying storage implementations between different types of storage media, resulting in high maintenance costs and deployment restrictions, making it difficult to meet the needs of multiple platforms and scenarios.

Method used

By receiving I/O requests related to different types of storage media, determining the corresponding namespace, and determining binary files based on mapping relationships, it realizes unified reading and writing of different types of storage media, and provides a unified underlying storage implementation with software-defined capabilities. .

Benefits of technology

It reduces the difficulty of deploying the storage system, adapts to more platforms and scenarios, meets customer needs, and reduces the difficulty of updates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119225623A_ABST
    Figure CN119225623A_ABST
Patent Text Reader

Abstract

The embodiment of the invention relates to a storage method, equipment and a computer program product. The method includes receiving an input / output (I / O) request based on a first type of storage medium related protocol. The method also includes determining a namespace of a plurality of namespaces associated with the I / O request. The method further comprises the step of determining a binary file corresponding to the determined namespace based on the mapping relation. The method further includes reading and / or writing a second type of storage medium based on the determined binary file, the second type being different from the first type. In this manner, a unified underlying storage implementation with software-defined capabilities is provided, enabling different types of storage media to operate as namespaces, thereby adapting the deployment of the storage system to more platforms and scenarios.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present disclosure relate generally to the field of storage, and more particularly to methods, devices, and computer program products for storage. Background Art

[0002] Object storage is a data storage and management method that organizes, stores, and accesses data in the form of objects. Object storage treats data and metadata associated with it as objects, and uses a unique identifier to distinguish each object. These objects can be various types of files, multimedia content, database backups, etc.

[0003] Object storage has been widely used in data-intensive scenarios such as cloud storage, big data analysis, backup, and archiving, and is advantageous in storing and managing massive amounts of unstructured data. Summary of the invention

[0004] Embodiments of the present disclosure provide a storage solution, through which different types of storage media can be accessed with a unified underlying storage.

[0005] In a first aspect of the present disclosure, a method for storage is provided, the method comprising receiving an input / output I / O request based on a protocol associated with a first type of storage medium. The method also comprises determining a namespace associated with the I / O request from a plurality of namespaces. The method also comprises determining a binary file corresponding to the determined namespace based on a mapping relationship. The method also comprises reading and / or writing a second type of storage medium based on the determined binary file, the second type being different from the first type.

[0006] In another aspect of the present disclosure, a device for storage is provided, the device comprising a processor and a memory, the memory being coupled to the processor and having instructions stored thereon, which, when executed by the processor, cause the device to perform actions, the actions comprising receiving an input / output I / O request based on a protocol associated with a first type of storage medium. The actions also include determining a namespace associated with the I / O request in a plurality of namespaces. The actions also include determining a binary file corresponding to the determined namespace based on a mapping relationship. The actions also include reading and / or writing a second type of storage medium based on the determined binary file, the second type being different from the first type.

[0007] In another aspect of the present disclosure, a computer program product is provided, which is tangibly stored on a non-transitory computer-readable storage medium and includes computer-executable instructions, which, when executed, cause a computer to perform a method or process according to an embodiment of the present disclosure.

[0008] According to the storage solution of the embodiment of the present disclosure, a unified underlying storage implementation with software-defined capabilities is provided, which enables different types of storage media to be operated as namespaces, thereby adapting the deployment of the storage system to more platforms and scenarios.

[0009] Please note that the invention summary is provided to introduce a series of concepts in a simplified form, which will be further described in the detailed description below. The invention summary is not intended to identify key features or essential features of the present disclosure, nor is it intended to limit the scope of the present disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] The above and other purposes, features and advantages of the present disclosure will become more clearly understood by describing the embodiments of the present disclosure in more detail in conjunction with the accompanying drawings, in which:

[0011] Figure 1 A schematic diagram illustrating an example environment in which methods and / or processes according to embodiments of the present disclosure may be implemented;

[0012] Figure 2 A flowchart of a method for storing according to an embodiment of the present disclosure is illustrated;

[0013] Figure 3 is a schematic diagram illustrating a process of block-like storage access according to an embodiment of the present disclosure;

[0014] Figure 4 A diagram illustrating the interaction of a unified block storage container group according to an embodiment of the present disclosure;

[0015] Figure 5 is a flowchart illustrating a process of responding to an I / O request from a native service according to an embodiment of the present disclosure;

[0016] Figure 6 is a flowchart 600 illustrating the process of a polling mechanism according to an embodiment of the present disclosure;

[0017] Figure 7 illustrates the interaction between a plurality of unified block-like storage container groups according to an embodiment of the present disclosure; and

[0018] Figure 8 is a schematic block diagram of an example device that may be used to implement embodiments according to the present disclosure.

[0019] Throughout the drawings, same or similar reference numbers generally refer to same or similar elements. Specific embodiments

[0020] 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 set forth herein. On the contrary, these embodiments are provided to provide 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.

[0021] In the description of the embodiments of the present disclosure, the term "including" and its variations 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 term "one embodiment" or "the embodiment" should be understood as "at least one embodiment". The terms "first", "second", etc. may refer to different or the same objects, unless explicitly indicated to be different.

[0022] As described above, object storage provides many advantages to adapt to data-intensive scenarios. Some object storage systems can be deployed on platforms with different types of storage media, such as hard disk drives (HDDs) and solid-state drives (SSDs) (such as fast non-volatile memory SSDs, i.e., NVMe SSDs), etc. For different types of storage media, the underlying storage interface or underlying storage implementation is often implemented in different ways. For example, in the case of HDD, the storage server (SS) is configured to persist data to the disk based on boost ASIO. For another example, in the case of NVMe, an Nvme engine with structurally fast non-volatile memory (NVMe-oF) is used. Different underlying storage implementations make the product maintenance cost higher, and in some cases, it is difficult to meet customer needs.

[0023] In these exemplary underlying storage implementations, SS is configured to access HDD based on the file system, and NVMe-oF is block layer access. Therefore, in a layered cluster, HDD and NVMe SSD need to be connected to different nodes, which also increases the deployment restrictions.

[0024] In the current object storage system, SS stores data in HDD based on the file system. When the system is enabled, each HDD is formatted and several files (such as binary files) are created with fixed sizes. In addition, in the current object storage system, the Nvme engine adopts a user space initiator and a kernel target. The NVMe-oF target is a kernel module in Linux, which is located on the block layer of the kernel storage system and below the file system layer. In this way, the existing HDD deployment and NVMe deployment cannot be unified with the current underlying storage implementation (SS and Nvme engine).

[0025] In order to solve at least some of the above and other potential problems, an embodiment of the present disclosure proposes a solution for storage. The solution includes receiving an input / output I / O request based on a protocol related to a first type of storage medium. The solution also includes determining a namespace associated with the I / O request in multiple namespaces. The solution also includes determining a binary file corresponding to the determined namespace based on a mapping relationship. The solution also includes reading and / or writing a second type of storage medium based on the determined binary file, the second type being different from the first type. In this way, a unified underlying storage implementation with software-defined capabilities is provided, which enables different types of storage media to be operated as namespaces, thereby adapting the deployment of the storage system to more platforms and scenarios.

[0026] Reference below Figures 1 to 8 It should be understood that these exemplary embodiments are provided only to enable those skilled in the art to better understand and implement the embodiments of the present disclosure, and are not intended to limit the scope of the present disclosure in any way.

[0027] Figure 1 1 is a schematic diagram of an example environment 100 in which the method and / or process according to an embodiment of the present disclosure may be implemented. The example environment 100 exemplarily shows a hierarchical storage system including multiple nodes. Figure 1 As shown in , the hierarchical storage system includes four nodes, namely node 110, node 120, node 130 and node 140. It should be understood that four nodes are shown here only for the purpose of facilitating understanding and illustration, and the embodiments of the present disclosure are not limited thereto. For example, the storage system according to the embodiments of the present disclosure may include a greater or lesser number of nodes.

[0028] Figure 1 The hierarchical storage system shown in may be an object storage system. According to an embodiment of the present disclosure, each of the multiple nodes included in the storage system may include a client for a user to initiate a read operation and / or a write operation. Figure 1As shown in , node 110 may include client 111, node 120 may include client 121, node 130 may include client 131, and node 140 may include client 141. In some embodiments, the client of each node may be a client based on S3. It should be understood that the client of each node may also be other different clients, and the present disclosure does not limit this.

[0029] According to an embodiment of the present disclosure, each of the multiple nodes included in the storage system may include an underlying storage implementation (also referred to as an underlying storage interface) for accessing a storage medium on the corresponding node. The underlying storage implementation of each node may be configured to perform a read operation and / or a write operation on the storage medium on the node. In addition, the underlying storage implementation of each node may be used to access a storage medium on a node different from the node. For example, the underlying storage implementation of each node may be configured to perform a read operation and / or a write operation on a storage medium on a node different from the node.

[0030] like Figure 1 As shown in , node 110 may include an underlying storage implementation 112, node 120 may include an underlying storage implementation 122, node 130 may include an underlying storage implementation 132, and node 140 may include an underlying storage implementation 142. By way of example and not limitation, the underlying storage implementation 112 of node 110 may be configured to perform a read operation and / or a write operation on a storage medium 113 on node 110, and may be configured to perform a read operation and / or a write operation on storage media 123, 133, and 143 on nodes 120, 130, and 140. According to an embodiment of the present disclosure, the underlying storage implementations of multiple nodes may be the same underlying storage implementation, regardless of whether the storage media on the multiple nodes are the same type of storage media. This will be further described in detail hereinafter.

[0031] According to an embodiment of the present disclosure, each of the multiple nodes included in the storage system may include one or more storage media. These storage media may be block device-based storage media, such as HDD or SSD. These storage media may also include network attached storage (NAS) and storage area network (SAN). Figure 1 In the figure, two storage media are schematically shown for each node, which is exemplary and non-restrictive. It should be understood that each node may include more or fewer storage media, the storage media included in each node may be different types of storage media or the same type of storage media, and the number of storage media included in different nodes may be different.

[0032] like Figure 1As shown in , node 110 may include storage medium 113, node 120 may include storage medium 123, node 130 may include storage medium 133, and node 140 may include storage medium 143. Storage media 113, 123, 133, and 143 may be different types of storage media, such as different types of block device-based storage media, but the underlying storage implementations 112, 122, 132, and 142 corresponding to storage media 113, 123, 133, and 143, respectively, may be the same. In the following, a more detailed description will be given.

[0033] Combined with the above Figure 1 A schematic diagram of an example environment 100 is depicted in which methods and / or processes according to embodiments of the present disclosure may be implemented. Figure 2 A flowchart of a method 200 for storage according to an embodiment of the present disclosure is described. In order to provide a unified underlying storage implementation across different types of storage media, a method 200 for storage according to an embodiment of the present disclosure is proposed.

[0034] At box 210, an input / output I / O request based on a protocol associated with a first type of storage medium is received. Upon receiving the I / O request, the underlying storage implementation according to an embodiment of the present disclosure may be configured to access the associated storage medium. In some embodiments, the first type of storage medium may include a storage medium based on NVMe-oF, and the protocol associated with the first type of storage medium may include NVMe-oF. Examples of the first type of storage medium may include an NVMe SSD. It should be understood that the first type of storage medium and the protocol associated with the first type of storage medium described herein are exemplary and non-restrictive, and may also include other different NVMe protocols and storage media supporting the protocol, which is not limited by the present disclosure.

[0035] At box 220, determine a namespace associated with the I / O request in multiple namespaces. As described above, the first type of storage medium may include a storage medium based on NVMe-oF or a storage medium supporting other different NVMe protocols. The first type of storage medium can be accessed in the form of block storage access. According to an embodiment of the present disclosure, a one-to-one mapping relationship is established between a file system file (such as a binary file) and a namespace, so that a storage medium based on the file system can be accessed in the form of a block-like storage access. In this way, different types of storage media can be operated as namespaces (such as NVMe namespaces). Hereinafter, the mapping process according to an embodiment of the present disclosure will be further described in detail.

[0036] The second type of storage medium may include a storage medium based on a file system. When an I / O request based on a protocol related to the first type of storage medium is received, in addition to the namespace for the first type of storage medium, a namespace associated with the I / O request is also determined for the namespace of the second type of storage medium.

[0037] At block 230, based on the mapping relationship, a binary file corresponding to the determined namespace is determined. In the case where the received I / O request based on the protocol related to the first type of storage medium involves the second type of storage medium, based on the mapping relationship between the namespace involving the I / O request determined at block 220 and the binary file of the file system of the second type of storage medium, the corresponding binary file is determined.

[0038] At block 240, based on the determined binary file, a second type of storage medium is read and / or written, the second type being different from the first type. Based on the binary file in the binary file of the file system of the second type of storage medium determined at block 230 involving an I / O request based on a protocol related to the first type of storage medium, an operation (such as a read operation and / or a write operation) is performed on the determined binary file, thereby completing the reading and / or writing of the second type of storage medium.

[0039] Therefore, according to an embodiment of the present disclosure, a unified underlying storage implementation with software-defined capabilities is provided, which can use the same underlying storage interface for different types of storage media, wherein all storage media are operated as namespaces, thereby reducing the difficulty of deploying the storage system and being able to meet more customer needs, such as updates to the storage system.

[0040] Figure 3 3 is a schematic diagram showing a process 300 of block-like storage access according to an embodiment of the present disclosure. According to an embodiment of the present disclosure, in addition to NVMe-oF-based storage media, file system-based storage media can be accessed in such a storage access manner, so that different types of storage media can be accessed and / or written in the same or similar manner with a unified underlying storage implementation.

[0041] According to an embodiment of the present disclosure, a storage container group 310 (also referred to as a container group) may include a target service 320. Figure 3 As shown in , the storage container group 310 includes an NVMe-oF target 320, which may include an NVM subsystem port and an NVMe controller, and the NVMe-oF target 320 may also include a block device layer. The container group 310 may also include a host service (also referred to as an initiator service) and multiple volumes, such as Figure 3 The volumes 311 and 332 shown in FIG. The multiple volumes included in the container group 310 may correspond to multiple storage media on the node. Hereinafter, the container group 310 and the target service 320 according to an embodiment of the present disclosure will be further described in detail.

[0042] In order to access a storage medium based on a file system in a block storage access-like manner, multiple files (such as multiple binary files (multiple bins)) of its file system may be mapped. According to an embodiment of the present disclosure, multiple persistent volumes may be created based on multiple storage media based on a file system. Figure 3 As shown in , PV 331 can be created based on HDD 1, and PV 332 can be created based on HDD 2. These file system-based storage media can each have a corresponding block device driver, and a file system is overlaid thereon. Each of the multiple persistent volumes can be mapped to one of the multiple volumes in the container group. Figure 3 As shown in , the created PV 331 and PV 332 can be mapped to volume 311 and volume 312 in the container group, respectively. Hereinafter, the mapping of the persistent volume to the volume in the container group according to the present disclosure will be further described.

[0043] According to an embodiment of the present disclosure, for a storage medium based on a file system, multiple binary files of its file system are mapped to a target service in a container group, and each binary file in the multiple binary files can be abstracted or represented as a block device. Figure 3 As shown in , for HDD 1, multiple files of its file system are mapped to the target service 320 in the container group 310, and each binary file in the multiple binary files can be abstracted or represented as a block device, for example, the binary file 323-1 can be abstracted or represented as a block device (bdev) 324-1. The mapping from binary files to block devices can be one-to-one, and in the mapping from binary files to block devices, the pages used to store metadata in the mapping binary files can be avoided, thereby improving the mapping efficiency.

[0044] According to an embodiment of the present disclosure, taking HDD as an example of a storage medium based on a file system, multiple binary files corresponding to one HDD in a container group may be arranged by the file system of the HDD to correspond to one volume in multiple volumes in the container group. Figure 3 As shown in , a plurality of binary files corresponding to HDD 1 in the container group 310 may be arranged to correspond to the volume 311 in the container group.

[0045] As described above, each binary file in the plurality of binary files is mapped to the target service in the container group, so that each binary file in the plurality of binary files corresponds to each block device in the plurality of block devices. According to an embodiment of the present disclosure, after each binary file in the plurality of binary files is mapped to each block device in the plurality of block devices, a namespace (such as Figure 3 , the assigned command space uniquely identifies the corresponding block device. Figure 3 As shown in , after the binary file 323-1 is mapped to the block device 324-1, a namespace 325-1 can be assigned to the block device 324-1, and the namespace 325-1 uniquely identifies the block device 324-1. The block device layer may include multiple block devices and namespaces assigned to the multiple block devices. In this way, the mapping from the binary file to the namespace is completed, and through the corresponding namespace, the binary file corresponding to the pointer can be uniquely found, and vice versa.

[0046] According to an embodiment of the present disclosure, for a storage medium based on a file system, multiple binary files of the file system can be created with a fixed size, and the usage status of each binary file in the created multiple binary files can be recorded by a service or application. In addition, the data size used to access each binary file in the multiple binary files can be aligned with the block size. In this way, in the mapping from the binary file to the block device, the page (such as the last page) used to store metadata in the binary file can be skipped.

[0047] According to an embodiment of the present disclosure, through the mapping relationship between the binary file of the file system and the namespace in the target service, the storage medium based on the file system can be accessed in a block storage access-like manner. For example, in the case where a read request and / or a write request is received from another container group different from the container group 310 (such as Figure 3 The read stream / or write stream indicated by the arrow in the middle) can determine the namespace associated with the read request and / or write request. Based on the mapping relationship between the namespace and the binary file, the binary file corresponding to the determined namespace can be determined. By performing operations on these binary files involved in the read request and / or write request, the read and / or write target can be achieved in a block storage access-like manner.

[0048] Figure 4 FIG. 4 is a diagram showing the interaction of a unified block storage container group 400 according to an embodiment of the present disclosure. Figure 4 As shown in FIG. 4 , storage container group 400 includes target service 410, host service 420, and multiple volumes. Target service 410 may be attached with block device layer 411, which includes multiple namespaces and multiple block devices, such as in combination with Figure 3 The host service 420 is attached with a local access persistent volume 421, which is configured to access the locally stored persistent volume.

[0049] According to an embodiment of the present disclosure, the unified class block storage container group 400 can be a storage container group based on the Storage Performance Development Kit (SPDK). Such an SPDK solution enables different block devices to be abstracted as class NVMe devices, thereby providing flexibility in deploying object storage systems on cloud platforms. The NVMe-oF target based on SPDK lib is a user space target service, so that the complete NVMe-oF protocol is implemented on the target side. In this way, in the unified class block storage container group 400 according to an embodiment of the present disclosure, both the target service and the host service can be in the user space, so that the separation between them is reduced and the risk of system degradation is further reduced. It should be noted that the present disclosure is not limited to the SPDK solution, and other different solutions that implement target services and host services in user space rather than in the kernel are also feasible.

[0050] According to an embodiment of the present disclosure, storage class 430 is abstracted or represented as multiple persistent volumes through a container storage interface (CSI). Storage class 430 may include different types of storage media. In addition to the HDD and SDD discussed above, storage class 430 may also include NAS and SAN to facilitate the deployment of object storage systems on cloud platforms. It should be understood that only for the purpose of convenience of illustration, Figure 3 4 shows the number of each type of storage media included in storage class 430 as one, and each type of storage media in storage class 430 may have a greater number. Moreover, the different types of storage media included in storage class 430 are merely exemplary and non-limiting. Storage class 430 may also include more or fewer types of storage media, and no limitation is disclosed.

[0051] According to an embodiment of the present disclosure, when the second type of storage medium includes NAS and SAN, an I / O request from a container group 440 other than the container group 400 may be received. A namespace associated with the I / O request among a plurality of namespaces may be determined. Based on the mapping relationship, a binary file corresponding to the determined namespace may be determined. Based on the determined binary file, the network attached storage NAS and the storage area network SAN may be read and / or written.

[0052] According to an embodiment of the present disclosure, multiple persistent volumes created based on different types of storage media included in the storage class 430 establish mapping relationships with multiple volumes in the container group 400 based on persistent volume declarations. In this way, based on the block storage access method described above, unified access from the target service 410 to different types of storage media is achieved.

[0053] According to an embodiment of the present disclosure, an I / O request of NVMe-oF or other different NVMe protocols from another container group 440 different from the container group 400 can be received, and different types of storage media can be accessed in a block storage access-like manner based on the mapping relationship between the namespace and the binary file included in the block device layer 411 and the mapping relationship between the volume in the container group 400 and the persistent volume of different types of storage media. Such an I / O request is transmitted to the target service 410 via the network through the NVMe-oF connection.

[0054] According to an embodiment of the present disclosure, an I / O request from other services 450 on the local machine except the target service 410 and the host service 420 can be received, and the host service 420 sends the I / O request to the target service 410 through the NVMe-oF connection, and then accesses different types of storage media in the manner of block storage access as described above. Such an I / O request is transmitted to the host service 420 through the Unix domain socket UDS.

[0055] Alternatively or additionally, in response to receiving an I / O request from other services 450 other than the target service 410 and the host service 420 on the local machine via the UDS, the host service 420 can directly access the volume associated with the I / O request in the container group 400 by locally accessing the PV 421. Then, based on the mapping relationship between the volume in the container group 400 and the persistent volume of different types of storage media, different types of storage media are accessed. In this way, network bandwidth can be saved and performance can be improved.

[0056] Figure 5 FIG. 5 is a flowchart 500 showing a process of responding to an I / O request from a local service according to an embodiment of the present disclosure. Figure 5As described in, I / O requests from other services on the local machine other than the target service and the host service are received via UDS 510. At 520, the host service 420 determines whether to directly access the volume in the container group. If it is yes at 520, proceeding to 530, the volume associated with the I / O request in the container group can be directly accessed by locally accessing the PV, and then the corresponding PVC can be accessed. If it is no at 520, proceeding to 540, NVMe-oF can be started to connect to the target service. Then, based on the mapping relationship between the namespace and the binary file included in the block device layer 411, the volume associated with the I / O request in the container group is accessed in a block storage access manner as described above.

[0057] According to an embodiment of the present disclosure, in response to writing to at least one storage medium among a plurality of different types of storage media, the state of the at least one storage medium may be polled, and in response to a change in the state of the at least one storage medium, it is determined that writing to the at least one storage medium is completed.

[0058] Figure 6 600 is a flowchart showing the process of the polling mechanism according to an embodiment of the present disclosure. Starting from the event loop thread 610, the NVMe-oF host poller 620 receives a UDS request 630 from the local machine. At 640, it is determined whether the event is a host event. If it is yes at 640, proceed to 650 to process the host event. If it is no at 640, proceed to operations related to the NVMe-oF target poller 660. The NVMe-oF target poller 660 receives a request 670 from another host. At 680, it is determined whether the event is a target event. If it is yes at 680, proceed to 690 to process the target event. If it is no at 680, return to the beginning. In the IO path via the host and the target, a polling mechanism is adopted, which makes full use of the CPU and memory. According to an embodiment of the present invention, the host service and the target service are integrated into one thread, and combined with the polling mechanism, this is a flexible design.

[0059] Figure 7 FIG. 7 illustrates the interaction between multiple unified block storage container groups according to an embodiment of the present disclosure. Figure 7 2 shows two unified block storage container groups, namely container group 701 and container group 702. Figure 7As shown in , for example, the storage medium can be abstracted or mapped to PV through CSI on a Linux operating system. When the host service 730 of the container group 702 initiates access to the storage medium corresponding to the storage group 701, the host service 730 starts NVMe-oF and initiates an I / O request, which is transmitted to the target network of the container group 701 via the network and the private network through the path shown in 7. The access task can then be completed in a block storage access-like manner according to an embodiment of the present disclosure. The connection between private networks can be based on TCP.

[0060] According to an embodiment of the present disclosure, when other services 740 on the local machine want to access the storage medium on the node, the service 740 initiates an I / O request through the UDS. The host service 730 can determine the volume associated with the I / O request in response to the I / O request, and access the determined volume to further access the storage medium on the node. It should be noted that the operations described herein are exemplary and non-restrictive, and other operations are also possible.

[0061] According to the storage solution of the embodiment of the present disclosure, a unified underlying storage implementation with software-defined capabilities is provided, which enables different types of storage media to be operated as namespaces, thereby adapting the deployment of the storage system to more platforms and scenarios.

[0062] Figure 8 8 is a schematic block diagram of an example device 800 that can be used to implement some embodiments of the present disclosure. Figure 8 As shown in FIG. 8 , the device 800 includes a central processing unit (CPU) 801, which can perform various appropriate actions and processes according to computer program instructions stored in a read-only memory (ROM) 802 or loaded from a storage unit 808 into a random access memory (RAM) 803. In the RAM 803, various programs and data required for the operation of the device 800 can also be stored. The CPU 801, the ROM 802, and the RAM 803 are connected to each other via a bus 804. An input / output (I / O) interface 805 is also connected to the bus 804.

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

[0064] The various processes and processing described above, such as method 200, may be performed by processing unit 801. For example, in some embodiments, method 200 may be implemented as a computer software program, which is tangibly contained in a machine-readable medium, such as storage unit 808. In some embodiments, part or all of the computer program may be loaded and / or installed on device 800 via ROM 802 and / or communication unit 809. When the computer program is loaded into RAM 803 and executed by CPU 801, one or more actions of method 200 described above may be performed.

[0065] The present disclosure may be a method, an apparatus, a system and / or a computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for executing various aspects of the present disclosure.

[0066] Computer readable storage medium can be a tangible device that can hold and store instructions used by an instruction execution device. Computer readable storage medium can be, for example, but not limited to, an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. More specific examples (non-exhaustive lists) of computer readable storage medium include: portable computer disks, hard disks, random access memories (RAM), read-only memories (ROM), erasable programmable read-only memories (EPROM or flash memory), static random access memories (SRAM), portable compact disk read-only memories (CD-ROM), digital versatile disks (DVD), memory sticks, floppy disks, mechanical encoding devices, such as punch cards or convex structures in grooves on which instructions are stored, and any suitable combination thereof. Computer readable storage medium used herein is not interpreted as a transient signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagated by waveguides or other transmission media (e.g., light pulses by optical fiber cables), or electrical signals transmitted by wires.

[0067] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in the computer-readable storage medium in each computing / processing device.

[0068] The computer program instructions for performing the operation of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages, such as Smalltalk, C++, etc., and conventional procedural programming languages, such as "C" language or similar programming languages. Computer-readable program instructions may be executed completely on a user's computer, partially on a user's computer, as an independent software package, partially on a user's computer, partially on a remote computer, or completely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider to connect via the Internet). In some embodiments, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be customized by utilizing the state information of the computer-readable program instructions, and the electronic circuit may execute the computer-readable program instructions, thereby realizing various aspects of the present disclosure.

[0069] Various aspects of the present disclosure are described herein with reference to flowcharts and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present disclosure. It should be understood that each box in the flowchart and / or block diagram and the combination of boxes in the flowchart and / or block diagram can be implemented by computer-readable program instructions.

[0070] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, so that when these instructions are executed by the processing unit of the computer or other programmable data processing device, a device that implements the functions / actions specified in one or more boxes in the flowchart and / or block diagram is generated. These computer-readable program instructions can also be stored in a computer-readable storage medium, and these instructions cause the computer, programmable data processing device, and / or other equipment to work in a specific manner, so that the computer-readable medium storing the instructions includes a manufactured product, which includes instructions for implementing various aspects of the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0071] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operating steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.

[0072] The flow chart and block diagram in the accompanying drawings show the possible architecture, function and operation of the system, method and computer program product according to multiple embodiments of the present disclosure. In this regard, each square box in the flow chart or block diagram can represent a part of a module, program segment or instruction, and a part of the module, program segment or instruction includes one or more executable instructions for realizing the specified logical function. In some alternative implementations, the function marked in the square box can also occur in a sequence different from that marked in the accompanying drawings. For example, two continuous square boxes can actually be executed substantially in parallel, and they can sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each square box in the block diagram and / or flow chart, and the combination of the square boxes in the block diagram and / or flow chart can be implemented with a dedicated hardware-based system that performs the specified function or action, or can be implemented with a combination of special hardware and computer instructions.

[0073] The embodiments of the present disclosure are described above, and the above description is exemplary, not exhaustive, and is not limited to the disclosed embodiments. Many modifications and changes will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The selection of terms used herein is intended to best explain the principles of the embodiments, practical applications, or improvements to the technology in the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.

Claims

1. A method for storage, comprising: Receiving an input / output I / O request based on a protocol associated with a first type of storage medium; Determining a namespace associated with the I / O request from among a plurality of namespaces; Based on the mapping relationship, determine the binary file corresponding to the determined namespace; as well as Based on the determined binary file, a second type of storage medium is read and / or written, the second type being different from the first type.

2. The method according to claim 1, wherein: The protocol includes Non-Volatile Memory Express over Fabric (NVMe-oF), and the first type of storage medium is a Solid State Drive (SSD); and The second type of storage medium is a hard disk drive HDD, and a plurality of binary files corresponding to one HDD in the container group are arranged by a file system of the HDD to correspond to one volume among a plurality of volumes in the container group.

3. The method according to claim 2, wherein: The container group is a first container group, the first container group includes a first target service and a first host service; and The I / O request comes from a second host service of a second container group different from the first container group, wherein the first target service and the second target service of the second container group include user space target services, and the first host service and the second host service include user space host services.

4. The method according to claim 3, further comprising: Mapping each binary file in the plurality of binary files to the first target service in the first container group so that each binary file in the plurality of binary files corresponds to one of the plurality of block devices in the block device layer; as well as A namespace is assigned to each block device of the plurality of block devices, the assigned namespace uniquely identifying the corresponding block device, wherein a block device layer includes the plurality of block devices and the plurality of namespaces.

5. The method according to claim 4, wherein: The plurality of binary files are created to have a fixed size; The usage status of each binary file in the plurality of binary files is recorded by the service; and A data size used to access each of the plurality of binary files is aligned with the block size.

6. The method according to claim 4, further comprising: In mapping each binary file of the plurality of binary files to the first target service, avoid mapping pages in the binary file that are used to store metadata.

7. The method according to claim 2, further comprising: Creating a plurality of persistent volumes based on the first type of storage medium and the second type of storage medium; as well as Each persistent volume in the plurality of persistent volumes is mapped to a volume in the plurality of volumes in the container group via a corresponding persistent volume claim.

8. The method according to claim 3, further comprising: Receiving a first I / O request from a first service other than the first target service and the first host service on the local computer; as well as A volume of the plurality of volumes associated with the first I / O request is accessed by the first host service in the first container group.

9. The method according to claim 1, further comprising: In response to writing to at least one of the first type of storage medium and the second type of storage medium, polling a status of the at least one storage medium; as well as In response to the change in the state of the at least one storage medium, it is determined that writing to the at least one storage medium is completed.

10. The method according to claim 3, further comprising: Receiving a second I / O request based on the NVMe-oF from the second host service; Determining a second namespace associated with the second I / O request from among a plurality of namespaces; Based on the mapping relationship, determine a second binary file corresponding to the determined second namespace; as well as Based on the determined second binary file, a network attached storage NAS and a storage area network SAN are read and / or written.

11. An electronic device, comprising: processor; as well as A memory, the memory being coupled to the processor and storing instructions, which, when executed by the processor, cause the device to perform actions, the actions comprising: Receiving an input / output I / O request based on a protocol associated with a first type of storage medium; Determining a namespace associated with the I / O request from among a plurality of namespaces; Based on the mapping relationship, determining a binary file corresponding to the determined namespace; and Based on the determined binary file, a second type of storage medium is read and / or written, the second type being different from the first type.

12. The apparatus of claim 11, wherein: The protocol includes Non-Volatile Memory Express over Fabric (NVMe-oF), and the first type of storage medium is a Solid State Drive (SSD); as well as The second type of storage medium is a hard disk drive HDD, and a plurality of binary files corresponding to one HDD in the container group are arranged by a file system of the HDD to correspond to one volume among a plurality of volumes in the container group.

13. The apparatus of claim 12, wherein: The container group is a first container group, the first container group includes a first target service and a first host service; and The I / O request comes from a second host service of a second container group different from the first container group, wherein the first target service and the second target service of the second container group include user space target services, and the first host service and the second host service include user space host services.

14. The apparatus of claim 13, wherein the actions further comprise: Mapping each binary file in the plurality of binary files to the first target service in the first container group so that each binary file in the plurality of binary files corresponds to one of the plurality of block devices in the block device layer; as well as Assigning a namespace to each of the plurality of block devices, the assigned namespace uniquely identifying the corresponding block device, wherein a block device layer includes the plurality of block devices and the plurality of namespaces, In mapping each binary file of the plurality of binary files to the first target service, avoid mapping pages in the binary file that are used to store metadata.

15. The apparatus of claim 14, wherein: The plurality of binary files are created to have a fixed size; The usage status of each binary file in the plurality of binary files is recorded by the service; and A data size used to access each of the plurality of binary files is aligned with the block size.

16. The apparatus of claim 12, the actions further comprising: Creating a plurality of persistent volumes based on the first type of storage medium and the second type of storage medium; as well as Each persistent volume in the plurality of persistent volumes is mapped to a volume in the plurality of volumes in the container group via a corresponding persistent volume claim.

17. The apparatus of claim 13, the actions further comprising: Receiving a first I / O request from a first service other than the first target service and the first host service on the local computer; as well as A volume of the plurality of volumes associated with the first I / O request is accessed by the first host service in the first container group.

18. The apparatus of claim 11, the actions further comprising: In response to writing to at least one of the first type of storage medium and the second type of storage medium, polling a status of the at least one storage medium; as well as In response to the change in the state of the at least one storage medium, it is determined that writing to the at least one storage medium is completed.

19. The apparatus of claim 13, the actions further comprising: Receiving a second I / O request based on the NVMe-oF from the second host service; Determining a second namespace among the plurality of namespaces that is associated with the second I / O request; Based on the mapping relationship, determine a second binary file corresponding to the determined second namespace; as well as Based on the determined second binary file, a network attached storage NAS and a storage area network SAN are read and / or written.

20. A computer program product tangibly stored on a non-transitory computer readable medium and comprising machine executable instructions which, when executed, cause a machine to: Receiving an input / output I / O request based on a protocol associated with a first type of storage medium; Determining a namespace associated with the I / O request from among a plurality of namespaces; Based on the mapping relationship, determine the binary file corresponding to the determined namespace; as well as Based on the determined binary file, a second type of storage medium is read and / or written, the second type being different from the first type.