WO2022028208A1 - 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 - Google Patents

独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 Download PDF

Info

Publication number
WO2022028208A1
WO2022028208A1 PCT/CN2021/105633 CN2021105633W WO2022028208A1 WO 2022028208 A1 WO2022028208 A1 WO 2022028208A1 CN 2021105633 W CN2021105633 W CN 2021105633W WO 2022028208 A1 WO2022028208 A1 WO 2022028208A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
commands
module
end module
management
Prior art date
Application number
PCT/CN2021/105633
Other languages
English (en)
French (fr)
Inventor
沈慧
陈明
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP21853314.9A priority Critical patent/EP4184306A4/en
Publication of WO2022028208A1 publication Critical patent/WO2022028208A1/zh
Priority to US18/164,262 priority patent/US20230185461A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Definitions

  • the present application relates to the field of information technology, and more particularly, to a redundant array card of independent disks, a method for processing commands, a storage device and a storage system.
  • a storage node can consist of a host and a storage system.
  • the common storage node structure can be divided into the following two types: single host + single storage system; multi-host + single storage system.
  • a single host + single storage system storage node includes only one host that interacts with the storage system. In some cases, only one host is included in the storage node. In other cases, the storage node may also include multiple hosts, but only one of the multiple hosts can directly interact with the storage system in the storage node.
  • Figure 1 is a schematic diagram of a storage node of a single host + single storage system.
  • the storage node 100 includes a host 101 and a host 102 .
  • the storage node 100 further includes a storage system 110, and the storage system 110 is composed of three storage devices.
  • the three storage devices are respectively a storage device 111 , a storage device 112 and a storage device 113 .
  • Each of the three storage devices may include one or more physical disks (eg, may be a mechanical hard disk, a solid state disk (SSD), a solid state hybrid drive (SSHD), etc.) .
  • the industry proposes a multi-host + single storage system.
  • a storage node of a multi-host+single storage system includes multiple hosts that interact with the storage system. Each of the plurality of hosts can directly interact with the storage system within the storage node
  • Figure 2 is a schematic diagram of a storage node of a multi-host+single storage system.
  • the storage node 200 includes a host 201 and a host 202 .
  • the storage node 200 further includes a storage system 210, and the storage system 210 is composed of three storage devices.
  • the three storage devices are respectively a storage device 211 , a storage device 212 and a storage device 213 .
  • Each of the three storage devices may include one or more physical disks (eg, may be a mechanical hard disk, a solid state disk (SSD), a solid state hybrid drive (SSHD), etc.) .
  • Both host 201 and host 202 have direct access to the three storage devices. Although compared with the storage node 100, the reliability of the storage node 200 is improved. However, there is still a possibility that the node 200 cannot be accessed normally. For example, the link between the computer device that needs to read the data stored in the storage node 200 and the storage node 200 fails, the communication interface of the storage node 200 for communicating with the outside world fails, and so on.
  • Figure 3 is a schematic diagram of a storage pool system.
  • the storage pool system 300 includes a plurality of storage nodes.
  • the storage nodes in the storage pool system 300 may be storage nodes as shown in FIG. 1 or FIG. 2 .
  • the storage pool system 300 can perform data backup at the granularity of a single storage node.
  • the storage pool system 300 may utilize erasure code (EC) technology to back up data.
  • EC erasure code
  • a part of the storage nodes in the storage pool system 300 may be used to store original data (this part of the storage nodes may be referred to as the first type of storage nodes), and another part of the storage nodes may be used to store backup data (this part of the storage nodes may be referred to as the second type of storage nodes). node).
  • the storage capacity of a single storage node is usually large. Therefore, if a storage node fails, it will take a long time to restore the data saved by the storage node.
  • the present application provides a redundant array card for independent disks, a method for processing commands, a storage device and a storage system, which can improve the speed of data recovery in failure.
  • the storage device provided with the above-mentioned RAID card may perform EC with the granularity of the storage device when performing EC.
  • the amount of data stored by an EC node is greatly reduced, and the failed data can be recovered faster during data recovery.
  • a more flexible EC scheme can be implemented using the above-mentioned RAID card.
  • the host module of the storage device where the RAID card is located fails, the data stored in the storage device can be read/written through other storage nodes.
  • the types of commands from the N host modules include any one or more of the following input/output I/O commands, first type management commands, or second Class management command
  • the control module is specifically used to process the received command according to the type of the received command.
  • the control module is specifically configured to stop the control module from other devices other than the nth front-end module when processing the I/O command from the n-th front-end module.
  • the front-end module receives the I/O command; in the case of determining that the I/O command from the n-th front-end module satisfies the target condition, receives and processes the message from the m-th front-end module in the N front-end modules.
  • the determining that the I/O command from the nth front-end module satisfies a target condition includes: determining the acquired I/O command from the nth front-end module /O commands have been processed; or it is determined that P 1 of the P I/O commands obtained from the n-th front-end module have been processed, and P 2 of the I/O commands have been processed.
  • the O command has timed out, where P is a positive integer greater than or equal to 2 , P1 and P2 are positive integers greater than or equal to 1 and less than P, and the sum of P1 and P2 is P.
  • control module stops receiving the I/O command from the nth front-end module before it is determined that the I/O command from the nth front-end module satisfies the target condition. the I/O command.
  • control module is further configured to receive and process the I/O command from the N front-end modules when processing the I/O command from the n-th front-end module.
  • the nth front-end module is further configured to send command processing information to the control module, where the command processing information includes the first command and the identity information with the first queue, wherein The first command comes from the nth host module, and the first queue is a queue in the front-end module for managing commands from the nth host module; the control module is also used to save the first queue The corresponding relationship between the identity information and the first command; when the first feedback information corresponding to the first command is obtained, according to the corresponding relationship, the first feedback information is sent to the nth front-end module.
  • EC can be performed at the granularity of the storage device. In this way, the amount of data stored by an EC node is greatly reduced, and the failed data can be recovered faster during data recovery.
  • a more flexible EC scheme can be implemented using the above-mentioned RAID card.
  • the host module of the storage device where the RAID card is located fails, the data stored in the storage device can be read/written through other storage nodes.
  • the types of commands from the N host modules include any one or more of the following input/output I/O commands, first type management commands, or second Class management command
  • the control module is specifically used to process the received command according to the type of the received command.
  • the processing of the received command includes: when processing the I/O command from the nth front-end module, stopping the process of removing the command from the nth front-end Other front-end modules other than the module receive the I/O command; in the case of determining that the I/O command from the n-th front-end module satisfies the target condition, receive and process the m-th command from the N front-end modules. and stop receiving the I/O command from other front-end modules except the m-th front-end module, where m is a positive integer less than or equal to N and not equal to n.
  • the determining that the I/O command from the nth front-end module satisfies the target condition includes: determining the acquired I/O command from the nth front-end module /O commands have been processed; or it is determined that P 1 of the P I/O commands obtained from the n-th front-end module have been processed, and P 2 of the I/O commands have been processed.
  • the O command has timed out, where P is a positive integer greater than or equal to 2 , P1 and P2 are positive integers greater than or equal to 1 and less than P, and the sum of P1 and P2 is P.
  • the method before the determining that the I/O command from the nth front-end module satisfies the target condition, the method further includes: stopping receiving from the nth front-end module of this I/O command.
  • the method further includes: when the control module processes the I/O command from the nth front-end module, receiving and processing the I/O command from the N front-end modules The first type of management commands of one or more front-end modules of the .
  • the method further includes: the nth front-end module sends command processing information to the control module, where the command processing information includes the first command and the identity information with the first queue, Wherein the first command comes from the nth host module, the first queue is a queue in the front-end module for managing commands from the nth host module; the control module saves the identity information of the first queue The corresponding relationship with the first command; in the case of acquiring the first feedback information corresponding to the first command, send the first feedback information to the nth front-end module according to the corresponding relationship.
  • an embodiment of the present application provides a storage device, the storage device includes a RAID card according to the first aspect or any possible design of the first aspect, and the storage device further includes a plurality of magnetic disks.
  • an embodiment of the present application provides a storage system, where the storage system includes a plurality of storage devices as described in the third aspect.
  • Figure 1 is a schematic diagram of a storage node of a single host + single storage system.
  • Figure 2 is a schematic diagram of a storage node of a multi-host+single storage system.
  • Figure 3 is a schematic diagram of a storage pool system.
  • Figure 4 is a schematic diagram of a storage device.
  • FIG. 5 is a schematic structural block diagram of a RAID card provided according to an embodiment of the present application.
  • FIG. 6 is a schematic diagram of a storage pool system provided according to an embodiment of the present application.
  • FIG. 7 is a schematic flowchart of a method for processing a command according to an embodiment of the present application.
  • FIG. 8 is a schematic structural block diagram of a RAID card provided according to an embodiment of the present application.
  • FIG. 9 is a schematic flowchart of a method for processing a command according to an embodiment of the present application.
  • the network architecture and service scenarios described in the embodiments of the present application are for the purpose of illustrating the technical solutions of the embodiments of the present application more clearly, and do not constitute a limitation on the technical solutions provided by the embodiments of the present application.
  • the evolution of the architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.
  • references in this specification to "one embodiment” or “some embodiments” and the like mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in one or more embodiments of the present application.
  • appearances of the phrases “in one embodiment,” “in some embodiments,” “in other embodiments,” “in other embodiments,” etc. in various places in this specification are not necessarily All refer to the same embodiment, but mean “one or more but not all embodiments” unless specifically emphasized otherwise.
  • the terms “including”, “including”, “having” and their variants mean “including but not limited to” unless specifically emphasized otherwise.
  • At least one means one or more, and “plurality” means two or more.
  • the character “/” generally indicates that the associated objects are an “or” relationship.
  • “At least one item(s) below” or similar expressions thereof refer to any combination of these items, including any combination of single item(s) or plural items(s).
  • at least one item (a) of a, b, or c can represent: a, b, c, ab, ac, bc, or abc, where a, b, c can be single or multiple .
  • a device operated by a user to access the storage pool system may be referred to as a client device.
  • the client device may be a desktop computer, a notebook computer, a tablet computer, a server, etc., which is not limited in the embodiment itself.
  • a description such as "user accesses the storage device” may be understood as “the user accesses the storage device through the client device”
  • “user manages the storage resource” may be understood as "the user manages the storage resource through the client device” .
  • Storage pool systems storage nodes, storage systems, storage devices, redundant array of independent disks (RAID) systems and physical disks
  • a storage pool system can include multiple storage nodes.
  • the storage pool system 300 shown in FIG. 3 includes a plurality of storage nodes.
  • a storage node can include one storage system.
  • the storage node 100 shown in FIG. 1 includes a storage system 110 .
  • a storage system may include multiple storage devices.
  • the storage system 110 shown in FIG. 1 includes three storage devices, namely, a storage device 111 , a storage device 112 and a storage device 113 .
  • One or more physical disks may be included in a storage device. If a storage device includes multiple physical disks, the multiple physical disks can form a RAID system.
  • the disks mentioned in the embodiments of the present application refer to physical disks.
  • the disk 401, the disk 402, the disk 403 and the disk 404, the working disk and the mirror disk in the following are all physical disks.
  • RAID technology forms a logical hard disk with different combinations of individual physical disks, thereby improving the performance of physical disk reading and data security. Different combinations are identified by RAID levels. Common RAID levels include RAID 0, RAID 1, RAID 2, etc.
  • RIAD 0 divides data into a certain size and writes it to the physical disks of the array.
  • RAID 0 can perform read and write operations in parallel, and can make full use of the bandwidth of the bus.
  • one is composed of X physical disks.
  • X is a positive integer greater than 1
  • the storage efficiency of disk space is the largest (100%).
  • RAID 0 has an obvious disadvantage: it does not provide data redundancy protection, and once the data is damaged, it cannot be recovered.
  • RAID 1 Take RAID 1 as an example.
  • RAID 1 writes data to the working disk and mirror disk in a consistent manner. Therefore, its disk space utilization is 50%. The time will be affected when data is written, but it has no effect when read.
  • RAID0 provides the best data protection, once the working disk fails, the system automatically reads data from the mirror disk, which will not affect the user's work.
  • FIG. 4 is a schematic diagram of a storage device.
  • the storage device 400 shown in FIG. 4 includes four magnetic disks, namely a magnetic disk 401, a magnetic disk 402, a magnetic disk 403 and a magnetic disk 404.
  • the four disks can form a RAID system. It is assumed that each of the four disks has a capacity of 16 terabytes (TB). If the RAID system is RAID 0, the total capacity of the storage device 400 is 64TB; if the RAID system is RAID 1, the total capacity of the storage device 400 is 32TB.
  • TB 16 terabytes
  • the disks 401 to 404 are connected to the RAID card 410 .
  • RAID cards are hardware used to implement RAID functions.
  • the RAID card 410 may include multiple interfaces, each of which is used to connect a disk.
  • RAID card 410 may include interface 411 , interface 412 , interface 413 , and interface 414 .
  • Disk 401 is connected to interface 411
  • disk 402 is connected to interface 412
  • disk 403 is connected to interface 413
  • disk 404 is connected to interface 414 .
  • the storage device 400 shown in FIG. 4 may be a storage device in the storage node 100 shown in FIG. 1 or the storage node 200 shown in FIG. 2 .
  • the RAID card 410 may receive commands from the host of the storage node and process the received commands. For example, if the command received by the RAID card 410 is a read command, the RAID card can obtain corresponding data from the disk that stores the data to be read by the read command, and send the obtained data to the host. For another example, if the RAID card 410 receives a LUN creation command, it creates a corresponding LUN.
  • RAID In traditional RAID, only a small amount of disk distribution is supported. When there are multiple distribution points and multiple nodes in the system, RAID will not meet the demand. For example, RAID 5 supports only one disk failure, while RAID 6 supports two disk failures. EC can support multiple disk failures.
  • the x+y pieces of data can be stored on different nodes. If any data smaller than y pieces fails, it can still be restored through the remaining data. That is to say, through the EC coding of x+y, the scenario where y blocks of data can be faulty can be tolerated, and the storage cost at this time is 1+y/x, usually y ⁇ x.
  • a node that holds a piece of data can be called an EC node.
  • the data saved by one storage node may be used as a piece of data.
  • a storage node can act as an EC node.
  • the first type of storage node is the EC node used to store the above-mentioned x copies of the original data
  • the second type of storage node is used to store the above-mentioned y added based on the x copies of the original data.
  • the EC node that backs up the data If the storage nodes that make up the storage pool system are storage nodes as shown in Figure 1 or Figure 2, EC can only be performed at the granularity of storage nodes. In this case, a storage node is equivalent to an EC node.
  • the main reason for this result is that the data stored in the storage device of each storage node can only be accessed by the host of the storage node itself. Therefore, if the host of the storage node fails, the data stored in the storage node cannot be accessed. Therefore, it is necessary to restore the data saved by the storage node through other storage nodes.
  • FIG. 5 is a schematic structural block diagram of a RAID card provided according to an embodiment of the present application.
  • the RAID card 500 shown in FIG. 5 includes a front-end module 501 , a front-end module 502 , a front-end module 503 and a front-end module 504 .
  • the RAID card 500 also includes a control module 510 .
  • the front-end module 501 to the front-end module 504 are used for receiving commands from different host modules, and sending the received commands to the control module 501 .
  • the control module 510 is configured to receive commands sent by the front-end module 501 and process the received commands.
  • the RAID card 500 further includes an interface for connecting to a host module (which may be referred to as an upstream interface) and an interface for connecting a disk (which may be referred to as a downstream interface).
  • a host module which may be referred to as an upstream interface
  • a disk which may be referred to as a downstream interface.
  • Each front-end module in the front-end modules 501 to 504 is connected to the host module through its corresponding upstream interface, receives a command from the host module through the upstream interface, and sends feedback information corresponding to the command to the host through the upstream interface module.
  • the control module 501 can be connected to the disk through a downlink interface, send received commands to the disk through the downlink interface, and receive feedback information from the disk through the downlink interface.
  • FIG. 6 is a schematic diagram of a storage pool system provided according to an embodiment of the present application.
  • the storage pool system shown in FIG. 6 includes a storage node 610 , a storage node 620 , a storage node 630 and a storage node 640 .
  • the storage node 610 includes a host module 611
  • the storage node 620 includes a host module 621
  • the storage node 630 includes a host module 631
  • the storage node 640 includes a host module 641 .
  • Each of storage node 610, storage node 620, storage node 630, and storage node 640 may include a plurality of storage devices, and each storage device of the plurality of storage devices may include a RAID card as shown in FIG. 5 . .
  • FIG. 6 only one storage device 612 among the multiple storage devices included in the storage node 610 is shown in FIG. 6 .
  • the storage device 612 includes a RAID card 500 , a disk 613 , a disk 614 , a disk 615 and a disk 616 .
  • Front-end module 501 may receive commands from host module 611 .
  • the commands from the host module 611 are collectively referred to as command A.
  • the plurality of commands from the host module 611 may be respectively referred to as command A1, command A2, command A3, and so on.
  • Front end module 502 may receive commands from host module 621 .
  • the commands from the host module 621 are collectively referred to as command B.
  • the plurality of commands from the host module 621 may be respectively referred to as command B1, command B2, command B3, and so on.
  • the front-end module 503 can receive commands from the host module 631.
  • the commands from the host module 631 are collectively referred to as command C.
  • the plurality of commands from the host module 631 may be respectively referred to as command C1, command C2, command C3, and so on.
  • Front end module 504 may receive commands from host module 641 .
  • the commands from the host module 641 are collectively referred to as command D.
  • the plurality of commands from the host module 641 may be respectively referred to as command D1, command D2, command D3, and so on.
  • the commands sent by the host module to the front-end module are from the client device controlled by the user.
  • the command can be divided into read and write (input/output, IO) command and management command.
  • I/O commands are used to read data stored in the storage device or write data to the storage device.
  • Management commands are used to manage storage devices.
  • the management commands may include LUN query, LUN creation command, LUN deletion, LUN parameter modification, and physical parameter query.
  • Commands can be classified into I/O commands, first-class management commands, and second-class management commands according to whether the commands can be processed in parallel.
  • the first type of management commands are management commands that can be processed in parallel with I/O commands; the second type of management commands are management commands that cannot be processed in parallel with I/O commands.
  • the first type of management commands includes query commands (such as querying LUNs, querying physical parameters, etc.); the second type of management commands includes commands related to the configuration of storage resources, such as LUN creation commands, deletion of LUNs, and modification of LUN parameters.
  • Front-end modules can manage received commands through queues.
  • the front-end module can queue the received commands and send the commands in the queue to the control module.
  • Each queue can have identity information, and the identity information of different queues is different.
  • the identity information of the queue where the command is located may be sent to the control module together with the identity information.
  • the front end module 501 receives the command A1 and manages the command A1 through the queue 1 . Assume that the identity information of queue 1 is Q1. Then, the front-end module 501 can send the command A1 and the identity information Q1 of the queue 1 to the control module 510 together.
  • the information for carrying the identity information of commands and queues may be referred to as command processing information.
  • the front-end module 501 can establish a corresponding relationship between the command and the identity information according to the command A1 and the identity information Q1 in the command processing information, and save the established corresponding relationship.
  • the front-end module 501 may issue the command A1 to the corresponding disk, and receive feedback information R1 corresponding to the command A1 fed back by the disk.
  • the front-end module 501 determines the identity information Q1 corresponding to the feedback information R1 according to the stored correspondence between the command and the identity information, and sends the feedback information R1 to the front-end module 501 corresponding to the identity information Q1.
  • the front-end module 501 can send the feedback information R1 to the host module that sent the command A1.
  • different front-end modules may communicate with the control module 501 through different interfaces. Different ports may have different port identifications (IDs). Therefore, in other embodiments, when receiving the command sent by the front-end module, the control module records the port ID that received the command, and establishes and saves the corresponding relationship between the command and the port ID. In this way, after receiving the feedback information corresponding to the command sent by the disk, the control module can determine to send the feedback information to the corresponding front-end module according to the stored correspondence between the command and the port ID (that is, send the feedback corresponding to the command) front-end module for information commands). After receiving the feedback information, the front-end module can send the feedback information to the corresponding host module.
  • IDs port identifications
  • the RAID card 500 can communicate with host modules from different storage nodes. In this way, even if the host module 611 of the storage node where the RAID card 500 is located fails, the user can perform read/write operations on the data stored in the storage device 612 in the storage node 610 through other storage nodes, or manage the storage resources of the storage device 612 . In this case, when EC is performed, EC can be performed with the granularity of the storage device. In other words, a storage device is equivalent to an EC node. Compared with the prior art (one storage node is one EC node), the amount of data stored by the EC node is greatly reduced, so that the data in the failed EC node can be recovered more quickly during data recovery.
  • the EC solution can be more flexible.
  • the storage pool system includes four storage nodes, and it is assumed that each storage node includes four storage devices.
  • the storage pool system includes 16 storage devices in total.
  • the number of the first type of nodes that is, the nodes used to save the original data
  • the number of the second type of nodes that is, the nodes used to store the backup data
  • the storage device is used as the EC node, there are many EC solutions. For example, 12 storage devices among the 16 storage devices are used as the first-type nodes, and the other 4 storage devices are used as the second-type nodes; for another example, 14 storage devices among the 16 storage devices are used as the first-type nodes, and the other 2 storage devices are used as the first-type nodes. 1 storage device is used as the second type node; another example, 13 storage devices among the 16 storage devices are used as the first type node, and the other 3 storage devices are used as the second type node.
  • a more flexible EC solution can be implemented by using the storage device as an EC node.
  • the EC utilization rate of some EC solutions using the storage device as the EC node is greater than that of the EC solution using the storage node as the EC node.
  • the EC utilization rate is 3/4; if the storage device is used as the EC node, and the EC scheme is 14 storage devices out of 16 storage devices as the first type of node, in addition 2 storage devices are used as the second type of nodes, then the EC utilization is 14/16, 14/16>3/4.
  • FIG. 7 is a schematic flowchart of a method for processing a command according to an embodiment of the present application.
  • the front-end module 501 to the front-end module 504 receive a command sent by the corresponding host module.
  • the front-end module 501 receives the command A1 sent by the host module 611; the front-end module 502 receives the command B1 sent by the host module 621; the front-end module 503 receives the command C1 sent by the host module 631; the front-end module 504 receives the command D1 sent by the host module 641.
  • the four commands may be any of the following:
  • Case 1 The four commands are all I/O commands
  • Case 2 The four commands are all first-class management commands
  • Case 3 The four commands are all second-class management commands
  • Case 4 Some of the four commands are I/O commands, and the other part of the commands are first-class management commands;
  • Case 5 Some of the four commands are I/O commands, and the other part of the commands are the second type of management commands;
  • Case 6 Some of the four commands are I/O commands, some are the first type of management commands, and the rest are the second type of management commands;
  • Case 7 Some of the four commands are management commands of the first type, and the other part of the commands are management commands of the second type.
  • the front-end modules 501 to 504 send the received commands to the control module 510 .
  • the control module 510 receives the command A1 from the front end module 501 , receives the command B1 from the front end module 502 , receives the command C1 from the front end module 503 and receives the command D1 from the front end module 504 .
  • the management module 510 processes the received command according to the type of the received command.
  • the type of command received by the management module 510 may be any of the above seven cases.
  • the management module 510 If the type of the command received by the management module 510 is the above case 1, that is, the four commands are all I/O commands.
  • the management module 510 may perform off-disk processing on one of the four I/O commands and buffer the remaining three I/O commands.
  • the management module 510 may randomly select one I/O command to perform disk downloading, and cache the remaining three I/O commands that are not selected.
  • the management module 510 may select an I/O command that needs to be processed for disk removal according to a priority.
  • front-end module 501 has a higher priority than front-end module 502
  • front-end module 502 has a higher priority than front-end module 503
  • front-end module 503 has a higher priority than front-end module 504
  • the front-end module 501 has a higher priority than the front-end module 502, and the front-end module 502, the front-end module 503, and the front-end module 504 have the same priority.
  • the management module 510 can select the I/O command from the front-end module with the highest priority to perform disk downloading processing.
  • different types of I/O commands have different priorities. For example, write commands have higher priority than read commands.
  • the management module 510 may first select to perform the write command to the disk. If multiple write commands are received at the same time, one write command can be randomly selected for disk downloading.
  • command A1, command B1, command C1, and command D1 are all I/O commands.
  • the management module 510 selects the command A1 according to the priority or randomly selects the command A1 to perform the disk loading process, and caches the command B1, the command C1 and the command D1.
  • the manner in which the management module 510 performs the I/O off-disk processing is the same as the existing I/O off-disk processing method, for example, the I/O commands can be sorted, merged, split, etc. I/O commands are sent to the corresponding disk.
  • the implementation methods of sorting, merging, and splitting will not be repeated here.
  • sorting and merging of I/O commands requires multiple I/O commands.
  • the multiple I/O commands all come from the same front-end module.
  • the management module 510 stops receiving I/O commands from other front-end modules except the front-end module 501, and continues to receive commands from the front-end module 501 when it is determined that the command A1 needs to be sent to the disk.
  • the I/O commands received, and the received I/O commands and the I/O commands received in step 702 are sorted and merged.
  • the command that management module 510 continues to receive is command A2.
  • the management module 510 can sort and merge the command A1 and the command A2, and send the processed I/O command to the corresponding disk.
  • the management module 510 may first cache the command A1 and continue to execute another I/O command according to the priority or randomly select it. Disk processing, until all four I/O commands are finished off-disk processing. Then, the management module 510 can receive commands issued by the four front-end modules again. If the command from the front-end module 501 is an I/O command (assuming it is command A2), the management module 510 can sort and merge the command A1 and the command A2, and send the processed I/O command to the corresponding disk .
  • the management module 510 can also sort and merge more than two I/O commands, and how to obtain two or more I/O commands.
  • the acquisition method of the I/O commands that need to be sorted and merged is the same as the above method, and for the sake of brevity, it will not be repeated.
  • the management module 510 After the management module 510 sends the processed I/O command to the disk, it can receive the corresponding feedback information sent by the disk (for example, the data to be read or the feedback that the writing is successful), and send the received feedback information to: The corresponding front-end module.
  • the specific implementation of how the management module 510 sends the feedback information has been described above, and will not be repeated for brevity.
  • the management module 510 may stop receiving I/O commands from other front-end modules before completing the I/O operation corresponding to the selected I/O command. Taking the command A1 as the selected I/O command as an example, it is assumed that the feedback information corresponding to the command A1 is R1. The management module 510 may stop receiving I/O commands from the front-end module 502 , the front-end module 503 and the front-end module 504 before sending the feedback information R1 to the front-end module 501 . In this way, it is possible to avoid the occurrence of a storage exception caused by performing a disk removal process for multiple I/O commands at the same time.
  • the management module 510 may continue to receive I/O commands from other front-end modules before completing the I/O operation corresponding to the selected I/O command. However, after receiving the I/O commands from other front-end modules, the management module 510 does not process these I/O commands, but only buffers these I/O commands, and processes the I/O commands after the I/O channel is switched. I/O commands for other front-end modules.
  • the management module 510 may continue to receive first-type management commands from the four front-end modules and process the received first-class management commands before completing the I/O operation corresponding to the selected I/O command. Class management commands.
  • the management command submodule and the I/O command submodule are submodules of the management module 510 .
  • the management command submodule is responsible for processing management commands, and the I/O command submodule is responsible for processing I/O commands.
  • the I/O command is sent to the I/O command submodule through the I/O channel, and the management command is sent to the management command submodule through the management channel.
  • the RAID card 500 may include four I/O channels, namely I/O channel 1, I/O channel 2, I/O channel 3 and I/O channel 4, wherein the I/O channel of the front-end module 501
  • the O command is sent to the I/O command sub-module through I/O channel 1
  • the I/O command of the front-end module 502 is sent to the I/O command sub-module through I/O channel 2
  • the I/O command of the front-end module 503 is sent through the I/O command sub-module.
  • the /O channel 3 is sent to the I/O sub-module
  • the I/O command of the front-end module 504 is sent to the I/O sub-module through the I/O channel 4.
  • management channels correspond one-to-one with front-end modules.
  • the RAID card 500 may include four management channels, namely management channel 1, management channel 2, management channel 3 and management channel 4, wherein the management command of the front-end module 501 is sent to the management command sub-module through the management channel 1, and the front-end module 502
  • the management command of the front-end module 503 is sent to the management sub-module through the management channel 2
  • the management command of the front-end module 503 is sent to the management sub-module through the management channel 3
  • the management command of the front-end module 504 is sent to the management sub-module through the management channel 4.
  • the I/O command sub-module may stop receiving I/O commands through I/O channel 2 to I/O channel 4 during the process of processing command A1 from I/O channel 1, but may Continue to receive I/O commands from the front-end module 501 through I/O channel 1 .
  • the I/O command sub-module can continue to receive management commands through the management channel 1 to the management channel 4.
  • the I/O command sub-module closes I/O channel 2 to I/O channel 4, and keeps I/O channel 1 and management channel 1 to 4 is on.
  • the I/O command sub-module may stop receiving I/O commands through I/O channel 2 to I/O channel 4 during the process of processing command A1 from I/O channel 1, but I/O commands from the front end module 501 can continue to be received through I/O channel 1 .
  • the I/O command sub-module in the process of processing the command A1 from I/O channel 1, can continue to receive management commands through management channel 1, but stop receiving management commands through management channel 2 to management channel 4.
  • the I/O command sub-module closes I/O channel 2 to I/O channel 4 and management channel 2 to management 4, and keeps I/O channel 2 to I/O channel 4 and management channel 2 to management 4. O channel 1 and management channel 1 are open.
  • the management command sub-module can process the received management command. For example, the management command sub-module may acquire relevant information corresponding to the query information, and feed back the acquired information to the corresponding front-end module.
  • the specific implementation manner of the management command submodule processing the query information is the same as the existing specific manner of processing the query information, and for the sake of brevity, it will not be repeated here.
  • the management command sub-module may not process the received management command. This can avoid exceptions caused by operations on storage resources while performing read and write operations.
  • the management module 510 may start receiving commands from other front-end modules and stop receiving commands from front-end modules other than the other front-end modules when the received I/O command from the front-end module 501 meets the target condition Receive commands.
  • the management module 510 may start receiving commands from the front-end module 502 and stop receiving commands from front-end modules other than the front-end module 502 when the received I/O command from the front-end module 501 meets the target condition.
  • the management module 510 determining that the I/O command from the front end module 501 meets the target condition includes the management module 510 determining that all I/O commands from the front end module 501 have completed processing. In other words, the management module 510 completes the read/write operation corresponding to the I/O command from the front-end module 501 , and sends the feedback information to the front-end module 501 . In this case, the management module 510 may determine that the I/O command from the front end module 501 satisfies the target condition.
  • the management module 510 determining that the I/O commands from the front-end module 501 satisfy the target condition includes: the management module 510 determining that some of the I/O commands from the front-end module 501 have been processed, and another part of the I/O commands have been processed. O command timed out.
  • the management module 510 receives I/O commands from the front-end module 501, which are commands A1 to A10, respectively.
  • the management module 510 may determine that the I/O command from the front end module 501 satisfies the target condition if the commands A1 to A8 have completed processing and determine that the commands A9 and A10 have timed out.
  • the management module 510 determines that the command A9 and the command A10 are overtime, the management module 510 can send a timeout instruction A9 and a timeout instruction A10 to the front-end module 501.
  • the management module 510 completes the read/write operations corresponding to the commands A1 to A8 and determines that the commands A9 and A10 have timed out, and sends the feedback information and the time-out indication to the front-end module 501 .
  • the management module 510 may determine that the I/O command from the front end module 501 satisfies the target condition.
  • Timeout indications can correspond one-to-one with commands. For example, command A9 and command A10 time out in the above embodiment.
  • the management module 510 sends two time-out indications to the front-end module 501, and the two time-out indications are respectively used to indicate that the command A9 and the command A10 time out.
  • the front-end module 501 may feed back the timeout indication to the corresponding host module (ie, the host module 611 ).
  • the management module 510 determining that the I/O commands from the front-end module 501 satisfy the target condition includes: the management module 510 determining that some of the I/O commands from the front-end module 501 have been processed, and another part of the I/O commands have been processed. The O command is discarded.
  • the management module 510 receives I/O commands from the front-end module 501, which are commands A1 to A10, respectively.
  • the management module 510 may determine that the I/O command from the front-end module 501 satisfies the target condition if the commands A1 to A8 have completed processing and the commands A9 and A10 are discarded.
  • the management module 510 completes the read/write operations corresponding to the commands A1 to A8, sends the feedback information to the front-end module 501 and discards the commands A9 and A10.
  • the management module 510 may determine that the I/O command from the front end module 501 satisfies the target condition.
  • the management module 510 may receive a switching request from the front-end module, the switching request being used to instruct to stop receiving I/O commands from the front-end module 501 and receive I/O commands from other front-end modules. In this case, the management module 510 stops receiving the I/O commands from the front-end module 501, and determines whether all the received I/O commands from the front-end module 501 have been processed. target condition. In some embodiments, if some of the received I/O commands from the front-end module 501 have not been processed when the switching request is received, it may be determined that the I/O commands that have not been processed have timed out and the front-end module 501 Send timeout indication.
  • the management module 501 may determine that the above target conditions are satisfied. In other embodiments, if some of the received I/O commands from the front-end module 501 have not been processed when the switching request is received, the unprocessed I/O commands are discarded and the I/O commands are determined After the O command is successfully discarded, it is determined that the above target conditions are met.
  • the management module 510 starts a timer when it starts to process the I/O command from the front-end module 501, and stops receiving the I/O command from the front-end module 501 when the timer reaches a preset time. For the I/O command, it is determined whether all the received I/O commands from the front-end module 501 are processed. If all the processing is completed, it is determined that the above target condition is satisfied. In some embodiments, if some of the received I/O commands from the front-end module 501 have not been processed when the timer reaches the preset time, it can be determined that the I/O commands that have not been processed have timed out and sent to the front-end Module 501 sends a timeout indication.
  • the management module 501 may determine that the above target conditions are satisfied. In other embodiments, if some of the received I/O commands from the front-end module 501 have not been processed when the timer reaches the preset time, the unprocessed I/O commands may be discarded and the After these I/O commands are successfully discarded, it is determined that the above target conditions are met.
  • the preset times corresponding to different front-end modules may be the same or different.
  • the management module 510 may determine that there is a problem with the newly received I/O command from the front-end module 501 (eg, there is a problem with the I/O command itself, and the transmission of the I/O command generates an error). In this case, the management module 510 can stop continuously receiving I/O commands from the front end module 501, and determine whether all I/O commands except the newly received I/O command from the front end module 501 have been processed completely. If all I/O commands other than the most recently received I/O command from the front end module 501 have been processed, the most recently received I/O command is discarded, or it may be determined that the most recently received I/O command timed out and Feedback the timeout indication to the front-end module. In this case, it can be determined that the above target conditions are satisfied.
  • the management module 510 If the type of the command received by the management module 510 is the above case 2, that is, the four commands are all management commands of the first type.
  • the management module 510 can process four first category management commands simultaneously.
  • the management module 510 may sequentially process the four first-type management commands.
  • the four first-type management commands may be processed in order of priority or randomly.
  • the management module 510 If one or more I/O commands are received while the management module 510 is processing the management commands of the first type, it can be processed in the manner of processing case 4 .
  • the processing may be performed in the manner of processing case 7.
  • the processing may be performed in the manner of processing case 6 .
  • the management module 510 If the type of the command received by the management module 510 is the above-mentioned case 3, that is, the four commands are all management commands of the second type.
  • the management module 510 can process four second-type management commands in the manner of referring to Case 1. In other words, the management module 510 processes the four second-type management commands at random or in a prioritized manner. The management module 510 does not process four second-type management commands at the same time. This avoids conflicts in managing resource configuration.
  • the processing may be performed according to the manner of processing case 5.
  • the processing may be performed in the manner of processing case 7.
  • the processing may be performed in the manner of processing case 6 .
  • the type of the command received by the management module 510 is the above-mentioned case 4, that is, part of the commands in the four commands are I/O commands, and the other part of the commands are management commands of the first type.
  • Case 4 may also exist in the following two situations:
  • the management module 510 may perform the downloading process on the I/O command, and process some or all of the remaining three first-type management commands while performing the downloading processing on the I/O command.
  • the management module 510 may refer to the processing method of case 1 for the processing method of multiple I/O commands.
  • the management module 510 can process some or all of the first type of management commands at the same time while performing the downloading processing on one I/O command among the plurality of I/O commands.
  • the type of the command received by the management module 510 is the above-mentioned case 5, that is, some of the four commands are I/O commands, and the other part of the commands are management commands of the second type.
  • the management module 510 may process the I/O command first, and then process the second type of management command after the I/O command is processed.
  • the management module can process the plurality of I/O commands in the manner of referring to Case 1.
  • the management module 510 may process the second type of management command first, and then process the I/O command after the second type of management command is processed.
  • the type of the command received by the management module 510 is the above-mentioned case 6, that is, some commands in the four commands are I/O commands, some commands are the first type of management commands, and the remaining commands are the second type of management commands.
  • Case 6 may also exist in the following situations:
  • the management module 510 may process two I/O commands first, and then process the second type of management commands after the I/O command processing is completed.
  • the management module 510 may also process the second type of management command first, and then process two I/O commands after the second type of management command is processed.
  • the first type of management commands can be processed concurrently with the processing of I/O commands.
  • the management module 510 may process the I/O command first, and then process the second type of management command after the I/O command processing is completed.
  • the management module 510 may also process the second type of management command first, and then process the I/O command after the second type of management command is processed.
  • the first type of management commands can be processed concurrently with the processing of I/O commands.
  • the management module 510 may process the I/O command first, and then process two second-type management commands after the I/O command processing is completed.
  • the management module 510 may also process two second-type management commands first, and then process the I/O commands after the second-type management commands are processed.
  • the first type of management commands can be processed concurrently with the processing of I/O commands.
  • the type of the command received by the management module 510 is the above-mentioned case 7, that is, some of the four commands are management commands of the first type, and another part of the commands are management commands of the second type.
  • the management module 510 may process the second type of management command first, and then process the first type of management command after the second type of management command is processed.
  • the management module 510 may process the first type of management command first, and then process the second type of management command after the first type of management command is processed.
  • the management module 510 may process the plurality of second-type management commands with reference to the processing method of Case 3.
  • FIG. 8 is a schematic structural block diagram of a RAID card provided according to an embodiment of the present application.
  • the RAID card 800 shown in FIG. 8 includes N front-end modules 801 .
  • the RAID card 800 also includes a control module 802 .
  • N is a positive integer greater than or equal to 2.
  • the n-th front-end module in the N front-end modules 801 is configured to receive commands from the n-th host module among the N host modules, and send the received commands to the control module.
  • the control module 802 is configured to receive commands from the N front-end modules and process the received commands.
  • the types of commands from the N host modules include any one or more of the following input/output I/O commands, first-type management commands, or second-type management commands
  • the control module is specifically configured to process the received command according to the type of the received command.
  • control module 802 is specifically configured to stop receiving from other front-end modules except the n-th front-end module when processing the I/O command from the n-th front-end module. the I/O command; in the case of determining that the I/O command from the n-th front-end module satisfies the target condition, receive and process the I/O command from the m-th front-end module in the N front-end modules O command and stop receiving the I/O command from other front-end modules except the m-th front-end module, where m is a positive integer less than or equal to N and not equal to n.
  • the determining that the I/O command from the nth front-end module satisfies the target condition includes: determining the obtained I/O command from the nth front-end module have been processed; or it is determined that P 1 of the P I/O commands obtained from the nth front-end module have been processed, and P 2 of the I/O commands have been processed. timeout, where P is a positive integer greater than or equal to 2 , P1 and P2 are positive integers greater than or equal to 1 and less than P, and the sum of P1 and P2 is P.
  • control module 802 before it is determined that the I/O command from the nth front-end module satisfies the target condition, stops receiving the I/O command from the nth front-end module. O command.
  • control module 802 is further configured to receive and process one or more from the N front-end modules when processing the I/O command from the n-th front-end module.
  • the nth front-end module is further configured to send command processing information to the control module, where the command processing information includes a first command and identity information with the first queue, wherein the first The command comes from the nth host module, and the first queue is a queue in the front-end module for managing commands from the nth host module; the control module 802 is also used to save the identity information of the first queue The corresponding relationship with the first command; in the case of acquiring the first feedback information corresponding to the first command, send the first feedback information to the nth front-end module according to the corresponding relationship.
  • FIG. 9 is a schematic flowchart of a method for processing a command according to an embodiment of the present application.
  • the control module receives commands from the N front-end modules and processes the received commands.
  • the types of commands from the N host modules include any one or more of the following input/output I/O commands, first-type management commands, or second-type management commands
  • the control module is specifically configured to process the received command according to the type of the received command.
  • the processing of the received command includes: when processing the I/O command from the n-th front-end module, stopping the processing from the commands other than the n-th front-end module.
  • Other front-end modules receive the I/O command; in the case of determining that the I/O command from the n-th front-end module satisfies the target condition, receive and process the m-th front-end module from the N front-end modules and stop receiving the I/O command from other front-end modules except the m-th front-end module, where m is a positive integer less than or equal to N and not equal to n.
  • the determining that the I/O command from the nth front-end module satisfies the target condition includes: determining the obtained I/O command from the nth front-end module have been processed; or it is determined that P 1 of the P I/O commands obtained from the nth front-end module have been processed, and P 2 of the I/O commands have been processed. timeout, where P is a positive integer greater than or equal to 2 , P1 and P2 are positive integers greater than or equal to 1 and less than P, and the sum of P1 and P2 is P.
  • the method before it is determined that the I/O command from the nth front-end module satisfies the target condition, the method further includes: stopping receiving the I/O command from the nth front-end module. /O command.
  • the method further includes: when the control module processes the I/O command from the nth front-end module, receiving and processing one or more from the N front-end modules.
  • the method further includes: the nth front-end module sends command processing information to the control module, where the command processing information includes a first command and identity information with the first queue, wherein the nth front-end module A command comes from the nth host module, the first queue is a queue in the front-end module for managing commands from the nth host module; the control module saves the identity information of the first queue and the first queue A corresponding relationship of a command; when the first feedback information corresponding to the first command is acquired, send the first feedback information to the nth front-end module according to the corresponding relationship.
  • An embodiment of the present application further provides a storage device, where the storage device includes a RAID card as shown in FIG. 8 , and the storage device further includes a plurality of magnetic disks.
  • An embodiment of the present application is a storage system, characterized in that the storage system includes multiple storage devices, and each storage device in the multiple storage devices includes a RAID card as described in FIG. 8 .
  • Each module in the RAID card can be implemented by a chip.
  • the chip in this embodiment of the present application may be a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a system on chip (SoC), or an application specific integrated circuit (ASIC). It is a central processing unit (CPU), a network processor (NP), a digital signal processing circuit (DSP), or a microcontroller (microcontroller unit). , MCU), it can also be a programmable logic device (PLD), other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, or other integrated chips.
  • FPGA field programmable gate array
  • ASIC application specific integrated circuit
  • SoC system on chip
  • ASIC application specific integrated circuit
  • CPU central processing unit
  • NP network processor
  • DSP digital signal processing circuit
  • microcontroller unit microcontroller unit
  • MCU programmable logic device
  • PLD programmable logic device
  • each step of the above-mentioned method can be completed by a hardware integrated logic circuit in a processor or an instruction in the form of software.
  • the steps of the methods disclosed in conjunction with the embodiments of the present application may be directly embodied as executed by a hardware processor, or executed by a combination of hardware and software modules in the processor.
  • the software modules may be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers and other storage media mature in the art.
  • the storage medium is located in the memory, and the processor reads the information in the memory, and completes the steps of the above method in combination with its hardware. To avoid repetition, detailed description is omitted here.
  • the processor in this embodiment of the present application may be an integrated circuit chip, which has a signal processing capability.
  • each step of the above method embodiments may be completed by a hardware integrated logic circuit in a processor or an instruction in the form of software.
  • a general purpose processor may be a microprocessor or the processor may be any conventional processor or the like.
  • the steps of the method disclosed in conjunction with the embodiments of the present application may be directly embodied as executed by a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor.
  • the software modules may be located in random access memory, flash memory, read-only memory, programmable read-only memory or electrically erasable programmable memory, registers and other storage media mature in the art.
  • the storage medium is located in the memory, and the processor reads the information in the memory, and completes the steps of the above method in combination with its hardware.
  • the memory in this embodiment of the present application may be a volatile memory or a non-volatile memory, or may include both volatile and non-volatile memory.
  • the non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically programmable Erase programmable read-only memory (electrically EPROM, EEPROM) or flash memory.
  • Volatile memory may be random access memory (RAM), which acts as an external cache.
  • RAM random access memory
  • DRAM dynamic random access memory
  • SDRAM synchronous DRAM
  • SDRAM double data rate synchronous dynamic random access memory
  • ESDRAM enhanced synchronous dynamic random access memory
  • SLDRAM synchronous link dynamic random access memory
  • direct rambus RAM direct rambus RAM
  • the present application also provides a computer program product, the computer program product includes: computer program code, when the computer program code is run on a computer, the computer is made to execute any one of the above embodiments. method.
  • the present application also provides a computer-readable medium, where the computer-readable medium stores program codes, and when the program codes run on a computer, causes the computer to execute any one of the above-mentioned embodiments. method.
  • the disclosed system, apparatus and method may be implemented in other manners.
  • the apparatus embodiments described above are only illustrative.
  • the division of the units is only a logical function division. In actual implementation, there may be other division methods.
  • multiple units or components may be combined or Can be integrated into another system, or some features can be ignored, or not implemented.
  • the shown or discussed mutual coupling or direct coupling or communication connection may be through some interfaces, indirect coupling or communication connection of devices or units, and may be in electrical, mechanical or other forms.
  • the units described as separate components may or may not be physically separated, and components displayed as units may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution in this embodiment.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically alone, or two or more units may be integrated into one unit.
  • the functions, if implemented in the form of software functional units and sold or used as independent products, may be stored in a computer-readable storage medium.
  • the technical solution of the present application can be embodied in the form of a software product in essence, or the part that contributes to the prior art or the part of the technical solution, and the computer software product is stored in a storage medium, including Several instructions are used to cause a computer device (which may be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of the present application.
  • the aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk and other media that can store program codes .

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统,该独立磁盘冗余阵列卡,包括:控制模块和N个前端模块,N为大于或等于2的正整数;该N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块;该控制模块,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。设置有上述独立磁盘冗余阵列卡的存储装置在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述独立磁盘冗余阵列卡可以实现更加灵活的纠删码方案。

Description

独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 技术领域
本申请涉及信息技术领域,更具体地,涉及独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统。
背景技术
近年来,随着数据量的增加,海量存储技术得到了越来越广泛的应用。随着存储数据的容量越来越大,单个存储节点的存储容量也随之变大。因此,存储节点的故障所带来的影响越来越大。
存储节点可以由主机(host)和存储系统组成。目前常见的存储节点的结构可以有以下两种:单主机+单存储系统;多主机+单存储系统。
1,单主机+单存储系统
顾名思义,单主机+单存储系统的存储节点中只包括一个与存储系统交互的主机。在一些情况下,存储节点中只包括一个主机。在另一些情况下,存储节点中也可能包括多个主机,但是该多个主机中只有一个主机能直接与该存储节点内的存储系统进行交互。
图1是一个单主机+单存储系统的存储节点的示意图。
如图1所示,存储节点100中包括主机101和主机102。存储节点100还包括存储系统110,存储系统110由三个存储装置组成。该三个存储装置分别为存储装置111,存储装置112和存储装置113。这三个存储装置中的每个存储装置可以包括一个或多个物理磁盘(例如,可以是机械硬盘、固态硬盘(solid state disk,SSD)、固态混合硬盘(solid state hybrid drive,SSHD)等)。
如图1所示,存储节点100中只有一个主机(即主机101)能够与存储系统110中的存储装置交互。因此,一旦主机101或者主机101和存储装置之间的链路发生故障,存储节点100的就无法正常运行。为了提高存储节点的可靠性,业界提出多主机+单存储系统。
2,多主机+单存储系统
多主机+单存储系统的存储节点中包括多个与存储系统交互的主机。该多个主机中的每个主机能都可以直接与该存储节点内的存储系统进行交互
图2是一个多主机+单存储系统的存储节点的示意图。
如图2所示,存储节点200中包括主机201和主机202。存储节点200还包括存储系统210,存储系统210由三个存储装置组成。该三个存储装置分别为存储装置211,存储装置212和存储装置213。这三个存储装置中的每个存储装置可以包括一个或多个物理磁盘(例如,可以是机械硬盘、固态硬盘(solid state disk,SSD)、固态混合硬盘(solid state hybrid drive,SSHD)等)。
主机201和主机202都可以直接访问三个存储装置。虽然与存储节点100相比,存储节点200的可靠性有所提高。但是仍然存无法正常访问节点200的可能性。例如,需要读取存储节点200保存的数据的计算机设备与存储节点200之间的链路发生故障,存储节点200用于与外界通信的通信接口发生故障等。
图3是一个存储池系统的示意图。如图3所示,存储池系统300包括多个存储节点。存储池系统300中的存储节点可以是如图1或图2所示的存储节点。
存储池系统300可以以单个存储节点为粒度进行数据备份。例如,存储池系统300可以利用纠删码(erasure code,EC)技术备份数据。存储池系统300中一部分存储节点可以用于保存原始数据(这一部分存储节点可以称为第一类存储节点),另一部分存储节点用于保存备份数据(这一部分存储节点可以称为第二类存储节点)。如上所述,单个存储节点的存储容量通常会很大。因此,如果一个存储节点发生故障,那么需要很长时间才能将恢复该存储节点保存的数据。
发明内容
本申请提供一种独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统,可以提高恢复出现故障的数据的速度。
第一方面,本申请实施例提供一种独立磁盘冗余阵列RAID卡,包括:控制模块和N个前端模块,N为大于或等于2的正整数;该N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块,该N个主机模块分别属于N个存储装置,n=1,…,N;该控制模块,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。设置有上述RAID卡的存储装置在进行EC时可以以存储装置为粒度进行EC。这样,一个EC节点存储的数据量大大减少,在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述RAID卡可以实现更加灵活的EC方案。此外,如果该RAID卡所在的存储装置的主机模块出现故障,可以通过其他存储节点对该存储装置保存的数据进行读/写操作。
结合第一方面,在一种可能的设计中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
结合第一方面,在一种可能的设计中,该控制模块,具体用于在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。上述技术方案可以减少因多个I/O命令对相同的数据进行读写造成的冲突。
结合第一方面,在一种可能的设计中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P 1个该I/O命令已处理完成,且P 2个该I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
结合第一方面,在一种可能的设计中,该控制模块,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,停止接收来自于该第n个前端模块的该I/O命令。
结合第一方面,在一种可能的设计中,该控制模块,还用于在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
结合第一方面,在一种可能的设计中,该第n个前端模块,还用于向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块,还用于保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
第二方面,本申请实施例提供一种处理命令的方法,该方法包括:独立磁盘冗余阵列RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该RAID卡中的控制模块,该N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N;该控制模块接收来自于该N个前端模块的命令并对接收到的命令进行处理。上述技术方案可以以存储装置为粒度进行EC。这样,一个EC节点存储的数据量大大减少,在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述RAID卡可以实现更加灵活的EC方案。此外,如果该RAID卡所在的存储装置的主机模块出现故障,可以通过其他存储节点对该存储装置保存的数据进行读/写操作。
结合第二方面,在一种可能的设计中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
结合第二方面,在一种可能的设计中,该对接收到的命令进行处理,包括:在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。上述技术方案可以减少因多个I/O命令对相同的数据进行读写造成的冲突。
结合第二方面,在一种可能的设计中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P 1个该I/O命令已处理完成,且P 2个该I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
结合第二方面,在一种可能的设计中,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,该方法还包括:停止接收来自于该第n个前端模块的该I/O命令。
结合第二方面,在一种可能的设计中,该方法还包括:该控制模块在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
结合第二方面,在一种可能的设计中,该方法还包括:该第n个前端模块向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
第三方面,本申请实施例提供一种存储装置,该存储装置包括如第一方面或第一方面任一种可能的设计中的RAID卡,该存储装置还包括多个磁盘。
第四方面,本申请实施例提供一种存储系统,该存储系统包括多个如第三方面所述的存储装置。
附图说明
图1是一个单主机+单存储系统的存储节点的示意图。
图2是一个多主机+单存储系统的存储节点的示意图。
图3是一个存储池系统的示意图。
图4是一个存储装置的示意图。
图5是根据本申请实施例提供的一种RAID卡的示意性结构框图。
图6是根据本申请实施例提供的一个存储池系统的示意图。
图7是根据本申请实施例提供的处理命令的方法的示意性流程图。
图8是根据本申请实施例提供的一种RAID卡的示意性结构框图。
图9是根据本申请实施例提供的一种处理命令的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例中,有时候下标如W 1可能会笔误为非下标的形式如W1,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述 关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
用户可以通过计算机设备对存储池系统中的数据进行读、写操作,也可以对存储池系统中的存储资源管理,例如创建逻辑单元号(logical unit number,LUN)、删除LUN等。用户操作的用于访问存储池系统的设备可以称为客户端设备。该客户端设备可以是台式计算机、笔记本电脑、平板电脑、服务器等,本身实施例对此并不进行限定。在一些实施例中,“用户访问存储装置”这样的描述可以被理解为“用户通过客户端设备访问存储装置”,“用户管理存储资源”可以被理解为“用户通过客户端设备管理存储资源”。
为了便于本领域人员更好地理解本申请的技术方案,首先对涉及本申请的技术方案的一些相关概念进行介绍。
1,存储池系统、存储节点、存储系统、存储装置、独立磁盘冗余阵列(redundant array of independent disks,RAID)系统和物理磁盘
一个存储池系统可以包括多个存储节点。例如,如图3所示的存储池系统300包括多个存储节点。
一个存储节点中可以包括一个存储系统。例如,如图1所示的存储节点100包括一个存储系统110。
一个存储系统可以包括多个存储装置。例如,如图1所示的存储系统110包括三个存储装置,分别为存储装置111、存储装置112和存储装置113。
一个存储装置中可以包括一个或多个物理磁盘。如果一个存储装置中包括多个物理磁盘,那么该多个物理磁盘可以组成RAID系统。
除非特殊说明,本申请实施例中所称的磁盘都是指物理磁盘。例如,下文中的磁盘401、磁盘402、磁盘403和磁盘404、工作磁盘和镜像磁盘都是物理磁盘。
2,RAID
RAID技术将一个个单独的物理磁盘以不同的组合方式形成一个逻辑硬盘,从而提高了物理磁盘读取的性能和数据的安全性。不同的组合方式用RAID级别来标识。常见的RAID级别包括RAID 0、RAID 1、RAID 2等。
不同RAID级别代表着不同的存储性能、数据安全性和存储成本。
以RAID 0为例,RIAD 0将数据分成一定的大小顺序的写到阵列的物理磁盘里,RAID 0可以并行的执行读写操作,可以充分利用总线的带宽,理论上讲,一个由X个物理磁盘组成的RAID0系统,它的读写性能将是单个物理磁盘读取性能的X倍(X为大于1的正整数),且磁盘空间的存储效率最大(100%)。但是,RAID 0有一个明显的缺点:不提供数据冗余保护,一旦数据损坏,将无法恢复。
以RAID 1为例,RAID 1将数据完全一致的分别写到工作磁盘和镜像磁盘,因此它的磁盘空间利用率为50%,在数据写入时时间会有影响,但是读的时候没有任何影响,RAID0提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
图4是一个存储装置的示意图。如图4所示的存储装置400中包括四个磁盘,分别为磁盘 401、磁盘402、磁盘403和磁盘404。该四个磁盘可以组成一个RAID系统。假设该四个磁盘中每个磁盘的容量均为16太字节(Terabyte,TB)。如果该RAID系统是RAID 0,则存储装置400的总容量为64TB;如果该RAID系统是RAID 1,则存储装置400的总容量为32TB。
如图4所示,磁盘401至磁盘404与RAID卡410相连。RAID卡是用于实现RAID功能硬件。RAID卡410可以包括多个接口,该多个接口中的每个接口用于连接一个磁盘。例如,RAID卡410可以包括接口411、接口412、接口413和接口414。磁盘401连接至接口411,磁盘402连接至接口412,磁盘403连接至接口413,磁盘404连接至接口414。
如图4所示的存储装置400可以是如图1所示的存储节点100或如图2所示的存储节点200中的一个存储装置。RAID卡410可以接收来自于存储节点的主机的命令并对该处理接收到的命令。例如,如果RAID卡410接收到的命令是读取命令,则RAID卡可以从保存有该读取命令需要读取的数据的磁盘中获取相应的数据,并将获取到的数据发送至主机。又如,如果RAID卡410接收到的是LUN创建命令,则创建相应的LUN。
3,纠删码(erasure code,EC)
在传统的RAID中,仅支持少量的磁盘分布。当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID 5只支持一个磁盘失效,RAID 6支持两个磁盘失效。EC可以支持多个盘失效。
可以将x份原始数据,增加y份数据(x和y均为正整数),并能通过x+y份中的任意x份数据,还原为原始数据。这x+y份数据可存放在不同的节点上,如果有任意小于y份的数据失效,仍然能通过剩下的数据还原出来。也就是说,通过x+y的EC编码,能容y块数据故障的场景,这时候的存储成本是1+y/x,通常y<x。保存一份数据的节点可以称为EC节点。在如图3所示的存储池系统300中,可以以一个存储节点保存的数据作为一份数据。在此情况下,一个存储节点可以作为一个EC节点。如图3所示的第一类存储节点就是用于保存上文所述的x份原始数据的EC节点,第二类存储节点是用于保存上文所述的基于x份原始数据增加的y份备份数据的EC节点。如果组成存储池系统的存储节点是如图1或图2所示的存储节点,那么只能以存储节点为粒度进行EC。在此情况下,一个存储节点相当于一个EC节点。导致这一结果的主要原因是每个存储节点的存储装置保存的数据只能通过该存储节点自身的主机访问。所以,如果存储节点的主机出现故障,那么该存储节点中保存的数据将无法被访问。因此,需要通过其他存储节点恢复该存储节点保存的数据。
图5是根据本申请实施例提供的一种RAID卡的示意性结构框图。如图5所示的RAID卡500包括前端模块501、前端模块502、前端模块503和前端模块504。RAID卡500还包括控制模块510。
前端模块501至前端模块504用于接收来自于不同主机模块的命令,并将接收到的命令发送至控制模块501。控制模块510用于接收前端模块501发送的命令,并对接收到的命令进行处理。
可以理解的是,RAID卡500还包括用于连接至主机模块的接口(可以称为上行接口)和用于连接磁盘的接口(可以称为下行接口)。前端模块501至504中的每个前端模块通过各自对应的上行接口与主机模块相连,通过该上行接口接收来自于主机模块的命令,通过该上行接口将对应于该命令的反馈信息发送至该主机模块。类似的,控制模块501可以通过下行接口与磁盘相连,通过该下行接口将接收到的命令发送至磁盘,通过该下行接口接收来自于磁盘的反馈信 息。
图6是根据本申请实施例提供的一个存储池系统的示意图。如图6所示的存储池系统包括存储节点610、存储节点620、存储节点630和存储节点640。存储节点610中包括主机模块611,存储节点620包括主机模块621,存储节点630包括主机模块631,存储节点640包括主机模块641。存储节点610、存储节点620、存储节点630和存储节点640中的每个存储节点可以包括多个存储装置,该多个存储装置中的每个存储装置可以包括一个如图5所示的RAID卡。但是为了便于描述,图6中仅示出了存储节点610包括的多个存储装置中一个存储装置612。
如图6所示,存储装置612包括RAID卡500、磁盘613、磁盘614、磁盘615和磁盘616。
前端模块501可以接收来自于主机模块611的命令。为了便于描述,来自于主机模块611的命令统称为命令A。来自主机模块611的多个命令可以分别称为命令A1、命令A2、命令A3,以此类推。
前端模块502可以接收来自于主机模块621的命令。为了便于描述,来自于主机模块621的命令统称为命令B。来自主机模块621的多个命令可以分别称为命令B1、命令B2、命令B3,以此类推。
前端模块503可以接收来自于主机模块631的命令,为了便于描述,来自于主机模块631的命令统称为命令C。来自主机模块631的多个命令可以分别称为命令C1、命令C2、命令C3,以此类推。
前端模块504可以接收来自于主机模块641的命令。为了便于描述,来自于主机模块641的命令统称为命令D。来自主机模块641的多个命令可以分别称为命令D1、命令D2、命令D3,以此类推。
主机模块向前端模块发送的命令是来自于用户控制的客户端设备。
根据命令的功能,命令可以分为读写(input/output,IO)命令和管理命令。I/O命令用于读取存储装置中保存的数据或者向存储装置中写入数据。管理命令用于管理存储装置。管理命令可以包括查询LUN、LUN创建命令、删除LUN、修改LUN参数、查询物理参数等。
根据命令是否能被并行处理,命令可以分为I/O命令、第一类管理命令和第二类管理命令。第一类管理命令是可以与I/O命令并行处理的管理命令;第二类管理命令是无法与I/O命令并行处理的管理命令。第一类管理命令包括查询类命令(例如查询LUN、查询物理参数等);第二类管理命令包括与存储资源的配置相关的命令,例如LUN创建命令、删除LUN、修改LUN参数等。
前端模块可以通过队列管理接收到的命令。前端模块可以将接收到的命令加入队列中,并将队列中的命令发送至控制模块。每个队列可以有身份信息,不同的队列的身份信息是不同的。
在一些实施例中,前端模块在向控制模块发送命令的同时可以将该命令所在的队列的身份信息一同发送至控制模块。
例如,前端模块501接收到命令A1,并通过队列1管理命令A1。假设队列1的身份信息为Q1。那么,前端模块501可以将命令A1和队列1的身份信息Q1一同发送至控制模块510。为了便于描述,可以将用于携带命令和队列的身份信息的信息称为命令处理信息。前端模块501在接收到该命令处理信息后,可以根据该命令处理信息中的命令A1以及身份信息Q1,建立命令和身份信息的对应关系,并保存建立的对应关系。前端模块501可以将命令A1下发至相应的磁盘,并接收该磁盘反馈与命令A1对应的反馈信息R1。前端模块501根据保存的命令和身份 信息的对应关系,确定对应于该反馈信息R1的身份信息Q1,将反馈信息R1发送至身份信息Q1对应的前端模块501。前端模块501可以将反馈信息R1发送至发送了命令A1的主机模块。
如上所述,不同的前端模块可以通过不同的接口与控制模块501通信。不同的端口可以有不同的端口标识(identification,ID)。因此,在另一些实施例中,控制模块在接收到前端模块发送的命令时,记录接收该命令的端口ID,并建立并保存命令和端口ID的对应关系。这样,控制模块在接收到磁盘发送的对应于该命令的反馈信息后,可以根据保存的命令和端口ID的对应关系,确定将该反馈信息发送至相应的前端模块(即发送了对应于该反馈信息的命令的前端模块)。该前端模块在接收到该反馈信息后可以将该反馈信息发送至相应的主机模块。
如图6所示,RAID卡500可以与来自于不同的存储节点的主机模块进行通信。这样,即使RAID卡500所在的存储节点的主机模块611出现故障,用户可以通过其他存储节点对存储节点610中的存储装置612中保存的数据进行读/写操作,或者管理存储装置612的存储资源。在此情况下,在进行EC的时候可以以存储装置为粒度进行EC。换句话说,一个存储装置相当于是一个EC节点。与现有技术相比(一个存储节点是一个EC节点),EC节点存储的数据量大大减少,这样在进行数据恢复的时候可以更快地恢复出出现故障的EC节点中的数据。
此外,利用RAID卡500实现EC时,EC的方案可以更加灵活。
还以图6所示的存储池系统为例,该存储池系统包括四个存储节点,假设每个存储节点都包括四个存储装置。这样,存储池系统总共包括16个存储装置。如前所述,通常情况下第一类节点(即用于保存原始数据的节点)的数目要大于第二类节点(即用于保存备份数据的节点)。
如果以存储节点作为EC节点,那么EC方案只能有一种,即四个存储节点中只能有一个第二类节点,另外三个作为第一类节点。在此情况下,EC利用率为3/4。
如果以存储装置作为EC节点,那么EC的方案可以有多种。例如,16个存储装置中的12个存储装置作为第一类节点,另外4个存储装置作为第二类节点;又如,16个存储装置中的14个存储装置作为第一类节点,另外2个存储装置作为第二类节点;又如16个存储装置中的13个存储装置作为第一类节点,另外3个存储装置作为第二类节点。
由此可见,以存储装置作为EC节点可以实现更加灵活的EC方案。并且,以存储装置作为EC节点的某些EC方案的EC利用率要大于以存储节点作为EC节点的EC方案的EC利用率。如上所述,如果以存储节点作为EC节点,那么EC利用率为3/4;如果以存储装置为EC节点,且EC方案为16个存储装置中的14个存储装置作为第一类节点,另外2个存储装置作为第二类节点,那么EC利用率为14/16,14/16>3/4。
下面结合图7对RAID卡500如何处理接收到的命令进行介绍。
图7是根据本申请实施例提供的处理命令的方法的示意性流程图。
701,前端模块501至前端模块504接收对应的主机模块发送的一个命令。
例如,前端模块501接收主机模块611发送的命令A1;前端模块502接收主机模块621发送的命令B1;前端模块503接收主机模块631发送的命令C1;前端模块504接收主机模块641发送的命令D1。
这四条命令(即命令A1、命令B1、命令C1和命令D1)可能是以下任一种情况:
情况1:四条命令都是I/O命令;
情况2:四条命令都是第一类管理命令;
情况3:四条命令都是第二类管理命令;
情况4:四条命令中的部分命令是I/O命令,另一部分命令是第一类管理命令;
情况5:四条命令中的部分命令是I/O命令,另一部分命令是第二类管理命令;
情况6:四条命令中的部分命令是I/O命令,部分命令是第一类管理命令,其余命令是第二类管理命令;
情况7:四条命令中的部分命令是第一类管理命令,另一部分命令是第二类管理命令。
702,前端模块501至前端模块504将接收到的命令发送至控制模块510。换句话说,控制模块510接收来自于前端模块501的命令A1,接收来自于前端模块502的命令B1,接收来自于前端模块503的命令C1以及接收来自于前端模块504的命令D1。
703,管理模块510根据接收到的命令的类型,对接收到的命令进行处理。
如上所述,管理模块510接收到的命令的类型可能是上述七种情况中的任意一种。
1)如果管理模块510接收到的命令的类型是上述情况1,即四条命令都是I/O命令。
管理模块510可以将四个I/O命令中的一个进行下盘处理并缓存其余三个I/O命令。
可选的,在一些实施例中,管理模块510可以随机选取一个I/O命令进行下盘处理,并缓存未选取的其余三个I/O命令。
可选的,在另一些实施例中,管理模块510可以根据优先级选择需要进行下盘处理的I/O命令。
例如,在一些实施例中,不同的前端模块的优先级不同。例如,前端模块501的优先级高于前端模块502的优先级,前端模块502的优先级高于前端模块503的优先级,前端模块503的优先级高于前端模块504的优先级。又如,前端模块501的优先级高于前端模块502的优先级,前端模块502、前端模块503和前端模块504的优先级相同。在此情况下,该管理模块510可以选择来自于优先级最高的前端模块的I/O命令进行下盘处理。
又如,在另一些实施例中,不同类型的I/O命令的优先级不同。例如,写命令的优先级高于读命令的优先级。在此情况下,该管理模块510可以先选择将写命令进行下盘处理。如果同时接收到了多个写命令,那么可以随机选取一个写命令进行下盘处理。
假设命令A1、命令B1、命令C1和命令D1都是I/O命令。管理模块510根据优先级或者随机选取命令A1进行下盘处理,并缓存命令B1、命令C1和命令D1。
管理模块510将I/O进行下盘处理的方式与现有的将I/O进行下盘处理的方式相同,例如可以对I/O命令进行排序、合并、拆分等处理,将处理后的I/O命令发送至对应的磁盘。为了简洁,排序、合并、拆分的实现方式在此就不再赘述。
可以理解的是,对I/O命令进行排序和合并处理需要针对多个I/O命令。该多条I/O命令都来自于同一个前端模块。
可选的,在一些实施例中,管理模块510在确定需要将命令A1发送至磁盘的情况下,停止从除前端模块501以外的其他前端模块接收I/O命令,继续接收来自于前端模块501的I/O命令,将接收到的I/O命令和步骤702中接收到的I/O命令进行排序、合并操作。例如,管理模块510继续接收到的命令是命令A2。那么管理模块510可以对命令A1和命令A2进行排序、合并处理,将处理后的I/O命令发送至相应的磁盘。
可选的,在另一些实施例中,管理模块510在确定需要对命令A1进行排序、合并处理的情况下,可以先缓存命令A1并继续根据优先级或随机选取另一个I/O命令进行下盘处理,直到对四个I/O命令均完成下盘处理。然后,管理模块510可以再次接收来自四个前端模块下发的命令。 如果来自于前端模块501的命令是I/O命令(假设为命令A2),那么管理模块510可以将命令A1和命令A2进行排序、合并处理,将处理后的I/O命令发送至相应的磁盘。
可以理解的是,上述仅描述了如何获取两个需要进行排序和合并处理的I/O命令,管理模块510也可以对两个以上的I/O命令进行排序、合并处理,如何获取两个以上的需要进行排序和合并处理的I/O命令的获取方式与上述方式相同,为了简洁,就不再赘述。
管理模块510在将处理后的I/O命令发送至磁盘后,可以接收磁盘发送的对应的反馈信息(例如需要读取的数据或者写入成功的反馈),并将接收到的反馈信息发送至对应的前端模块。管理模块510如何发送反馈信息的具体实现方式已在上文描述,为了简洁,就不再重复。
在一些实施例中,管理模块510在完成与选取的I/O命令的对应的I/O操作之前,可以停止接收来自于其他前端模块的I/O命令。还以命令A1作为选取的I/O命令为例,假设对应命令A1的反馈信息为R1。管理模块510在将反馈信息R1发送至前端模块501之前,可以停止接收来自于前端模块502、前端模块503和前端模块504的I/O命令。这样,可以避免同时对多个I/O命令进行下盘处理导致的存储异常的情况发生。
在另一些实施例中,管理模块510在完成与选取的I/O命令对应的I/O操作之前,也可以继续接收来自于其他前端模块的I/O命令。但是,管理模块510在接收了来自于其他前端模块的I/O命令后,并不处理这些I/O命令,只是将这些I/O命令缓存下来,待I/O通道切换后再处理来自于其他前端模块的I/O命令。
在一些实施例中,管理模块510在完成与选取的I/O命令的对应的I/O操作之前,可以继续接收来自于四个前端模块的第一类管理命令,并处理接收到的第一类管理命令。
为了便于描述,以下引入管理通道、I/O通道、管理命令子模块和I/O命令子模块四个概念。管理命令子模块和I/O命令子模块是管理模块510的子模块。管理命令子模块负责处理管理命令,I/O命令子模块负责处理I/O命令。I/O命令通过I/O通道发送至I/O命令子模块,管理命令通过管理通道发送至管理命令子模块。
I/O通道与前端模块是一一对应的。换句话说,RAID卡500中可以包括四个I/O通道,分别为I/O通道1、I/O通道2、I/O通道3和I/O通道4,其中前端模块501的I/O命令通过I/O通道1发送至I/O命令子模块,前端模块502的I/O命令通过I/O通道2发送至I/O命令子模块,前端模块503的I/O命令通过I/O通道3发送至I/O子模块,前端模块504的I/O命令通过I/O通道4发送至I/O子模块。
类似的,管理通道与前端模块一一对应。RAID卡500中可以包括四个管理通道,分别为管理通道1、管理通道2、管理通道3和管理通道4,其中前端模块501的管理命令通过管理通道1发送至管理命令子模块,前端模块502的管理命令通过管理通道2发送至管理命令子模块,前端模块503的管理命令通过管理通道3发送至管理子模块,前端模块504的管理命令通过管理通道4发送至管理子模块。
在一些实施例中,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以停止通过I/O通道2至I/O通道4接收I/O命令,但可以继续通过I/O通道1接收来自于前端模块501的I/O命令。并且,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以继续通过管理通道1至管理通道4接收管理命令。换句话说,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,关闭I/O通道2至I/O通道4,并保持I/O通道1以及管理通道1至4处于开启状态。
在另一些实施例中,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以停止通过I/O通道2至I/O通道4接收I/O命令,但可以继续通过I/O通道1接收来自于前端模块501的I/O命令。并且,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以继续通过管理通道1接收管理命令,但是停止通过管理通道2至管理通道4接收管理命令。换句话说,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,关闭I/O通道2至I/O通道4以及管理通道2至管理4,并保持I/O通道1以及管理通道1处于开启状态。
在处理来自于I/O通道1的命令A1的过程中,如果管理命令子模块接收到的是第一类管理命令,则该管理命令子模块可以处理接收到的管理命令。例如,该管理命令子模块可以获取查询信息对应的相关信息,并将获取到的信息反馈给相应的前端模块。管理命令子模块处理查询信息的具体实现方式与现有的处理查询信息的具体方式相同,为了简洁,在此就不再赘述。
在处理来自于I/O通道1的命令A1的过程中,如果管理命令子模块接收到的是第二类管理命令,则该管理命令子模块可以不处理接收到的管理命令。这样可以避免在执行读写操作同时对存储资源的操作导致的异常发生。
在一些实施例中,管理模块510可以在接收到的来自于前端模块501的I/O命令满足目标条件的情况下,开始从其他前端模块接收命令,并停止从该其他前端模块以外的前端模块接收命令。
例如,管理模块510可以在接收到的来自于前端模块501的I/O命令满足目标条件的情况下,开始从前端模块502接收命令,并停止从该前端模块502以外的前端模块接收命令。
在一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的全部I/O命令都已经完成处理。换句话说,管理模块510完成了来自于前端模块501的I/O命令对应的读/写操作,并将反馈信息发送至前端模块501。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。
在另一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的部分I/O命令都已经完成处理,另一部分I/O命令超时。
例如,假设管理模块510接收到自于前端模块501的I/O命令,分别为命令A1至命令A10。管理模块510可以在命令A1至命令A8已经完成处理并且确定命令A9和命令A10超时的情况下,确定来自于前端模块501的I/O命令满足目标条件。管理模块510在确定命令A9和命令A10超时的情况下,可以向前端模块501发送超时指示A9和超时指示A10,超时指示A9用于指示命令A9超时,超时指示A10用于指示命令A10超时。换句话说,管理模块510完成了命令A1至命令A8对应的读/写操作并且确定命令A9和命令A10超时,并将反馈信息和超时指示发送至前端模块501。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。超时指示可以和命令一一对应。例如,上述实施例中命令A9和命令A10超时。在此情况下,管理模块510向前端模块501发送了两个超时指示,这两个超时指示分别用于指示命令A9和命令A10超时。前端模块501在接收到超时指示后,可以将超时指示反馈给对应的主机模块(即主机模块611)。
在另一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的部分I/O命令都已经完成处理,另一部分I/O命令被丢弃。
例如,假设管理模块510接收到自于前端模块501的I/O命令,分别为命令A1至命令A10。 管理模块510可以在命令A1至命令A8已经完成处理并且命令A9和命令A10被丢弃的情况下,确定来自于前端模块501的I/O命令满足目标条件。换句话说,管理模块510完成了命令A1至命令A8对应的读/写操作,并将反馈信息发送至前端模块501并丢弃了命令A9和命令A10。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。
在一些实施例中,管理模块510可以接收来自于前端模块的切换请求,该切换请求用于指示停止接收来自于前端模块501的I/O命令,并从其他前端模块接收I/O命令。在此情况下,管理模块510停止接收来自于前端模块501的I/O命令,确定已接收到的来自于前端模块501的I/O命令是否全部处理完成,如果全部处理完成,则确定满足上述目标条件。在一些实施例中,如果在接收到该切换请求时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以确定尚未处理完成的I/O命令超时并向前端模块501发送超时指示。在此情况下,管理模块501可以确定满足上述目标条件。在另一些实施例中,如果在接收到该切换请求时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则丢弃未处理完的I/O命令并在确定这些I/O命令被成功丢弃后,确定满足上述目标条件。
在另一些实施例中,管理模块510在开始处理来自于前端模块501的I/O命令时启动一个定时器,并在该定时器到达预设时间的情况下,停止接收来自于前端模块501的I/O命令,确定已接收到的来自于前端模块501的I/O命令是否全部处理完成,如果全部处理完成,则确定满足上述目标条件。在一些实施例中,如果该定时器到达预设时间时,有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以确定尚未处理完成的I/O命令超时并向前端模块501发送超时指示。在此情况下,管理模块501可以确定满足上述目标条件。在另一些实施例中,如果在该定时器到达预设时间时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以丢弃未处理完的I/O命令并在确定这些I/O命令被成功丢弃后,确定满足上述目标条件。不同的前端模块对应的预设时间可以相同也可以不同。
在另一些实施例中,管理模块510可以在确定最新接收到的来自于前端模块501的I/O命令出现问题(例如I/O命令本身有问题、传输该I/O命令是产生错误)。在此情况下,管理模块510可以停止继续接收来自于前端模块501的I/O命令,确定除最新接收的来自于前端模块501的I/O命令以外的I/O命令是否已全部处理完成。如果除最新接收的来自于前端模块501的I/O命令以外的I/O命令均已处理完成,则丢弃最新接收到的I/O命令,或者可以确定最新接收到的I/O命令超时并将超时指示反馈给前端模块。在此情况下,可以确定满足上述目标条件。
2)如果管理模块510接收到的命令的类型是上述情况2,即四条命令都是第一类管理命令。
在一些实施例中,管理模块510可以同时处理四条第一类管理命令。
在另一些实施例中,管理模块510可以依次处理该四条第一类管理命令。例如,可以按照优先级顺序或者随机依次处理该四条第一类管理命令。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条I/O命令,那么可以按照处理情况4的方式进行处理。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条第二类管理命令,那么可以按照处理情况7的方式进行处理。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条第二类管理命令以及一条或多条I/O命令,那么可以按照处理情况6的方式进行处理。
3)如果管理模块510接收到的命令的类型是上述情况3,即四条命令都是第二类管理命令。
在此情况下,管理模块510可以参照情况1的方式处理四条第二类管理命令。换句话说,管理模块510随机或按照优先级的方式分别处理这四条第二类管理命令。管理模块510不会同时处理四条第二类管理命令。这样可以避免在管理资源配置过程中发生冲突。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条I/O命令,那么可以按照处理情况5的方式进行处理。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条第一类管理命令,那么可以按照处理情况7的方式进行处理。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条第一类管理命令以及一条或多条I/O命令,那么可以按照处理情况6的方式进行处理。
4)如果管理模块510接收到的命令的类型是上述情况4,即四条命令中的部分命令是I/O命令,另一部分命令是第一类管理命令。
情况4还可能存在以下两种情况:
情况4.1,四条命令中只有一条I/O命令,剩下三条都是第一类管理命令;
情况4.2,四条命令中有两条或三条I/O命令,剩下的命令是第一类管理命令。
对于情况4.1,管理模块510可以对该I/O命令进行下盘处理,并且在对该I/O命令进行下盘处理的同时,处理其余的三条第一类管理命令中的部分或全部。
对于情况4.2,管理模块510可以对多条I/O命令的处理方式可以参照情况1的处理方式。管理模块510在对该多条I/O命令中的一条I/O命令进行下盘处理的同时,可以同时处理第一类管理命令中的部分或全部。
5)如果管理模块510接收到的命令的类型是上述情况5,即四条命令中的部分命令是I/O命令,另一部分命令是第二类管理命令。
在一些实施例中,管理模块510可以先处理I/O命令,在I/O命令处理完后,再处理第二类管理命令。
可以理解的是,如果四条命令中的I/O命令数目大于或等于2,则管理模块可以参照情况1的方式处理该多条I/O命令。
在另一些实施例中,管理模块510可以先处理第二类管理命令,在第二类管理命令处理完后,在处理I/O命令。
6)如果管理模块510接收到的命令的类型是上述情况6,即四条命令中的部分命令是I/O命令,部分命令是第一类管理命令,其余命令是第二类管理命令。
情况6还可能存在以下几种情况:
情况6.1:两条I/O命令,一条第一类管理命令,一条第二类管理命令;
情况6.2:两条第一类管理命令,一条I/O命令,一条第二类管理命令;
情况6.3:两条第二类管理命令,一条I/O命令,一条第一类管理命令。
对于情况6.1,管理模块510可以先处理两条I/O命令,在完成I/O命令处理后再处理第二类管理命令。管理模块510还可以先处理第二类管理命令,在完成第二类管理命令处理后,再处理两条I/O命令。第一类管理命令可以在处理I/O命令的同时处理。管理模块510处理两条I/O命令的方式可以参照情况1的处理方式。
对于情况6.2,管理模块510可以先处理I/O命令,在完成I/O命令处理后再处理第二类管理命令。管理模块510还可以先处理第二类管理命令,在完成第二类管理命令处理后,再处理 I/O命令。第一类管理命令可以在处理I/O命令的同时处理。
对于情况6.3,管理模块510可以先处理I/O命令,在完成I/O命令处理后再处理两条第二类管理命令。管理模块510还可以先处理两条第二类管理命令,在完成第二类管理命令处理后,再处理I/O命令。第一类管理命令可以在处理I/O命令的同时处理。管理模块510处理两条第二类管理命令的方式可以参照情况3的处理方式。
7)如果管理模块510接收到的命令的类型是上述情况7,即四条命令中的部分命令是第一类管理命令,另一部分命令是第二类管理命令。
在一些实施例中,管理模块510可以先处理第二类管理命令,在第二类管理命令处理完之后,再处理第一类管理命令。
在另一些实施例中,管理模块510可以先处理第一类管理命令,在第一类管理命令处理完之后,再处理第二类管理命令。
如果第二类管理命令的数目大于或等于2,那么管理模块510可以参照情况3的处理方式处理该多条第二类管理命令。
图8是根据本申请实施例提供的一种RAID卡的示意性结构框图。如图8所示的RAID卡800包括N个前端模块801。RAID卡800还包括控制模块802。N为大于或等于2的正整数。
N个前端模块801中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块,该N个主机模块分别属于N个存储装置,n=1,…,N。
控制模块802,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。
可选的,在一些实施例中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
可选的,在一些实施例中,控制模块802,具体用于在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。
可选的,在一些实施例中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P 1个该I/O命令已处理完成,且P 2个该I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
可选的,在一些实施例中,控制模块802,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,停止接收来自于该第n个前端模块的该I/O命令。
可选的,在一些实施例中,控制模块802,还用于在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
可选的,在一些实施例中,该第n个前端模块,还用于向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;控制模 块802,还用于保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
前端模块801和控制模块802的具体功能和有益效果,可以参见上述实施例,为了简洁,在此就不再赘述。
图9是根据本申请实施例提供的一种处理命令的方法的示意性流程图。
901,RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该RAID卡中的控制模块,该N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N。
902,控制模块接收来自于该N个前端模块的命令并对接收到的命令进行处理。
可选的,在一些实施例中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
可选的,在一些实施例中,该对接收到的命令进行处理,包括:在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。
可选的,在一些实施例中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P 1个该I/O命令已处理完成,且P 2个该I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
可选的,在一些实施例中,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,该方法还包括:停止接收来自于该第n个前端模块的该I/O命令。
可选的,在一些实施例中,该方法还包括:该控制模块在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
可选的,在一些实施例中,该方法还包括:该第n个前端模块向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
本申请实施例还提供一种存储装置,该存储装置包括如图8所示的RAID卡,该存储装置还包括多个磁盘。
本申请实施例一种存储系统,其特征在于,该存储系统包括多个存储装置,该多个存储装置中的每个存储装置包括如图8所述的RAID卡。
RAID卡中的各个模块可以由芯片实现。本申请实施例中的芯片可以是编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit, CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)、其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,或其他集成芯片。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行上述任意一个实施例的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

  1. 一种独立磁盘冗余阵列RAID卡,其特征在于,包括:控制模块和N个前端模块,N为大于或等于2的正整数;
    所述N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至所述控制模块,所述N个主机模块分别属于N个存储装置,n=1,…,N;
    所述控制模块,用于接收来自于所述N个前端模块的命令并对接收到的命令进行处理。
  2. 如权利要求1所述的RAID卡,其特征在于,来自于所述N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,所述控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
  3. 如权利要求2所述的RAID卡,其特征在于,所述控制模块,具体用于在处理来自于所述第n个前端模块的所述I/O命令时,停止从除所述第n个前端模块以外的其他前端模块接收所述I/O命令;
    在确定来自于所述第n个前端模块的所述I/O命令满足目标条件的情况下,接收并处理来自于所述N个前端模块中的第m个前端模块的所述I/O命令并停止从除所述第m个前端模块以外的其他前端模块接收所述I/O命令,其中m为小于或等于N且不等于n的正整数。
  4. 如权利要求3所述的RAID卡,其特征在于,所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件,包括:
    确定已获取的来自于所述第n个前端模块的所述I/O命令均已处理完成;或者
    确定已获取的来自于所述第n个前端模块的P个所述I/O命令中的P 1个所述I/O命令已处理完成,且P 2个所述I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
  5. 如权利要求3或4所述的RAID卡,其特征在于,所述控制模块,在所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件之前,停止接收来自于所述第n个前端模块的所述I/O命令。
  6. 如权利要求3至5中任一项所述的RAID卡,其特征在于,所述控制模块,还用于在处理来自于所述第n个前端模块的所述I/O命令时,接收并处理来自于所述N个前端模块中的一个或多个前端模块的所述第一类管理命令。
  7. 如权利要求1至6中任一项所述的RAID卡,其特征在于,所述第n个前端模块,还用于向所述控制模块发送命令处理信息,所述命令处理信息包括第一命令以及与第一队列的身份信息,其中所述第一命令来自于所述第n个主机模块,所述第一队列是所述前端模块中用于管理来自于所述第n个主机模块的命令的队列;
    所述控制模块,还用于保存所述第一队列的身份信息与所述第一命令的对应关系;在获取到对应于所述第一命令的第一反馈信息的情况下,根据所述对应关系,将所述第一反馈信息发送至所述第n个前端模块。
  8. 一种处理命令的方法,其特征在于,所述方法包括:
    独立磁盘冗余阵列RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至所述RAID卡中的控制模块,所述N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N;
    所述控制模块接收来自于所述N个前端模块的命令并对接收到的命令进行处理。
  9. 如权利要求8所述的方法,其特征在于,来自于所述N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,所述控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
  10. 如权利要求9所述的方法,其特征在于,所述对接收到的命令进行处理,包括:在处理来自于所述第n个前端模块的所述I/O命令时,停止从除所述第n个前端模块以外的其他前端模块接收所述I/O命令;
    在确定来自于所述第n个前端模块的所述I/O命令满足目标条件的情况下,接收并处理来自于所述N个前端模块中的第m个前端模块的所述I/O命令并停止从除所述第m个前端模块以外的其他前端模块接收所述I/O命令,其中m为小于或等于N且不等于n的正整数。
  11. 如权利要求10所述的方法,其特征在于,所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件,包括:
    确定已获取的来自于所述第n个前端模块的所述I/O命令均已处理完成;或者
    确定已获取的来自于所述第n个前端模块的P个所述I/O命令中的P 1个所述I/O命令已处理完成,且P 2个所述I/O命令已超时,其中P为大于或等于2的正整数,P 1和P 2为大于或等于1且小于P的正整数,且P 1和P 2的和为P。
  12. 如权利要求10或11所述的方法,其特征在于,在所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件之前,所述方法还包括:
    停止接收来自于所述第n个前端模块的所述I/O命令。
  13. 如权利要求10至12中任一项所述的方法,其特征在于,所述方法还包括:所述控制模块在处理来自于所述第n个前端模块的所述I/O命令时,接收并处理来自于所述N个前端模块中的一个或多个前端模块的所述第一类管理命令。
  14. 如权利要求8至13中任一项所述的方法,其特征在于,所述方法还包括:
    所述第n个前端模块向所述控制模块发送命令处理信息,所述命令处理信息包括第一命令以及与第一队列的身份信息,其中所述第一命令来自于所述第n个主机模块,所述第一队列是所述前端模块中用于管理来自于所述第n个主机模块的命令的队列;
    所述控制模块保存所述第一队列的身份信息与所述第一命令的对应关系;在获取到对应于所述第一命令的第一反馈信息的情况下,根据所述对应关系,将所述第一反馈信息发送至所述第n个前端模块。
  15. 一种存储装置,其特征在于,所述存储装置包括如权利要求1至7中任一项所述的独立磁盘冗余阵列RAID卡,所述存储装置还包括多个磁盘。
  16. 一种存储系统,其特征在于,所述存储系统包括多个如权利要求15所述的存储装置。
PCT/CN2021/105633 2020-08-07 2021-07-10 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 WO2022028208A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP21853314.9A EP4184306A4 (en) 2020-08-07 2021-07-10 REDUNDANT ARRAY OF INDEPENDENT DISK CARDS, INSTRUCTION PROCESSING METHOD, AND STORAGE DEVICE AND SYSTEM
US18/164,262 US20230185461A1 (en) 2020-08-07 2023-02-03 Redundant Array of Independent Disks Card, Command Processing Method, and Storage Apparatus and System

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010788778.9A CN114063892B (zh) 2020-08-07 2020-08-07 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
CN202010788778.9 2020-08-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/164,262 Continuation US20230185461A1 (en) 2020-08-07 2023-02-03 Redundant Array of Independent Disks Card, Command Processing Method, and Storage Apparatus and System

Publications (1)

Publication Number Publication Date
WO2022028208A1 true WO2022028208A1 (zh) 2022-02-10

Family

ID=80116934

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/105633 WO2022028208A1 (zh) 2020-08-07 2021-07-10 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统

Country Status (4)

Country Link
US (1) US20230185461A1 (zh)
EP (1) EP4184306A4 (zh)
CN (1) CN114063892B (zh)
WO (1) WO2022028208A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730257B2 (en) * 2004-12-16 2010-06-01 Broadcom Corporation Method and computer program product to increase I/O write performance in a redundant array
CN101976181A (zh) * 2010-10-15 2011-02-16 杭州宏杉科技有限公司 一种存储资源的管理方法及管理装置
CN103827803A (zh) * 2011-10-28 2014-05-28 株式会社日立制作所 用于在存储网络中进行性能优化的计算机系统及管理系统
CN107632947A (zh) * 2017-09-12 2018-01-26 记忆科技(深圳)有限公司 一种智能raid数据保护系统
CN110609659A (zh) * 2018-06-15 2019-12-24 三星电子株式会社 用于执行读取命令的NVMeoF RAID实现方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
WO2006086379A2 (en) * 2005-02-07 2006-08-17 Dot Hill Systems Corporation Command-coalescing raid controller
US7617361B2 (en) * 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
CN107229423A (zh) * 2017-05-31 2017-10-03 郑州云海信息技术有限公司 数据处理方法、装置以及系统
US11054991B2 (en) * 2018-03-21 2021-07-06 Western Digital Technologies, Inc. Data storage system scale-out with local address remapping
CN111949443B (zh) * 2018-09-05 2022-07-22 华为技术有限公司 硬盘故障处理方法、阵列控制器及硬盘

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7730257B2 (en) * 2004-12-16 2010-06-01 Broadcom Corporation Method and computer program product to increase I/O write performance in a redundant array
CN101976181A (zh) * 2010-10-15 2011-02-16 杭州宏杉科技有限公司 一种存储资源的管理方法及管理装置
CN103827803A (zh) * 2011-10-28 2014-05-28 株式会社日立制作所 用于在存储网络中进行性能优化的计算机系统及管理系统
CN107632947A (zh) * 2017-09-12 2018-01-26 记忆科技(深圳)有限公司 一种智能raid数据保护系统
CN110609659A (zh) * 2018-06-15 2019-12-24 三星电子株式会社 用于执行读取命令的NVMeoF RAID实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4184306A4 *

Also Published As

Publication number Publication date
EP4184306A4 (en) 2023-12-27
EP4184306A1 (en) 2023-05-24
CN114063892A (zh) 2022-02-18
CN114063892B (zh) 2024-03-26
US20230185461A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
US8521685B1 (en) Background movement of data between nodes in a storage cluster
US8726070B2 (en) System and method for information handling system redundant storage rebuild
US7778960B1 (en) Background movement of data between nodes in a storage cluster
US10467044B2 (en) Transaction processing method and apparatus, and computer system
US20050203961A1 (en) Transaction processing systems and methods utilizing non-disk persistent memory
US8438332B2 (en) Apparatus and method to maintain write operation atomicity where a data transfer operation crosses a data storage medium track boundary
US8793456B2 (en) Automated migration to a new target volume via merged bitmaps to maintain consistency
CN104407933A (zh) 一种数据的备份方法及装置
US7653830B2 (en) Logical partitioning in redundant systems
US20190317872A1 (en) Database cluster architecture based on dual port solid state disk
JP2022539981A (ja) ストレージ・デバイスのミラーリング方法、デバイス、プログラム
US11379127B2 (en) Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US8275937B2 (en) Storage system and processing efficiency improving method of storage system
US6886074B1 (en) Method and apparatus for raid load balancing
US8015375B1 (en) Methods, systems, and computer program products for parallel processing and saving tracking information for multiple write requests in a data replication environment including multiple storage devices
US7600074B2 (en) Controller of redundant arrays of independent disks and operation method thereof
US20090249003A1 (en) Method and system for multiplexing concatenated storage disk arrays to form a rules-based array of disks
US20240143456A1 (en) Log replay methods and apparatuses, data recovery methods and apparatuses, and electronic devices
US6925530B2 (en) Initialization of a storage system
WO2022028208A1 (zh) 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
US20180095831A1 (en) Efficient state tracking for clusters
US20230137609A1 (en) Data synchronization method and apparatus
US11500741B2 (en) Data write method and storage system
US20230128077A1 (en) System and Method for Aggregation of Write Commits To Control Written Block Size
US20100070663A1 (en) Apparatus and method to preserve one or more logical communication paths in a data processing system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21853314

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021853314

Country of ref document: EP

Effective date: 20230215

NENP Non-entry into the national phase

Ref country code: DE