Method, system and equipment for establishing redundant array of disks and readable storage medium

By splitting or combining hard disks to form virtual physical disks, the problem of low effective capacity caused by inconsistent hard disk capacity is solved, and the utilization rate of disk redundant arrays is improved.

CN120406849APending Publication Date: 2025-08-01SHANDONG YUNHAI GUOCHUANG CLOUD COMPUTING EQUIP IND INNOVATION CENT CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510553885.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-04-29
Publication Date
2025-08-01

AI Technical Summary

Technical Problem

In the prior art, due to inconsistent hard disk capacity, the effective capacity utilization rate of disk redundant arrays is low.

Method used

By obtaining the hard disk reconstruction strategy, splitting or combining the original physical disk, forming a virtual physical disk, meeting the data security policy and the maximum effective capacity strategy, and forming a redundant array of target disks.

Benefits of technology

It improves the effective capacity utilization rate of disk redundant arrays, reduces the capacity difference between physical hard disks, and improves the efficiency of hard disk usage.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120406849A_ABST
    Figure CN120406849A_ABST
Patent Text Reader

Abstract

The invention discloses a redundant array of disks (RAID) establishment method, system and device and a readable storage medium, which are applied to the technical field of RAIDs, and the method comprises the following steps: obtaining a hard disk reconstruction strategy; the hard disk reconstruction strategy is a strategy for splitting or combining the original physical disk with the maximum effective capacity; processing the idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk; the virtual physical disk is a physical disk which is not split or combined; and forming a target redundant disk array based on the virtual physical disk and the original physical disk which is not reconstructed. Compared with the situation that the effective capacity of the hard disks in the array is low due to the fact that the capacity difference of the current physical hard disks is obvious, the method has the advantages that the idle original physical disks are processed through the hard disk reconstruction strategy to obtain the virtual physical disks, so that the capacity difference between the physical hard disks is reduced; therefore, the effective capacity corresponding to the target redundant array of disks formed based on the virtual physical disk and the original physical disk which is not reconstructed is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the technical field of redundant array of independent disks (RAID), and particularly to a method, a system, a device and a readable storage medium for forming a redundant array of independent disks. Background Art

[0002] When forming a RAID (Redundant Array of Independent Disks) card array, theoretically there is no strict requirement for the capacity of hard disks, and it is allowed to mix hard disks with different capacities. To improve the utilization rate of storage space, it is usually recommended to use hard disks with the same capacity. However, in actual applications, due to the progress of storage technology and the continuous increase in the capacity of hard disks, as well as economic considerations, the capacities of new and old hard disks often vary, and sometimes the difference is significant. Since the theoretical effective capacity of a RAID card array is obtained by taking the smallest capacity among all the hard disks in the array and then multiplying it by the number of effective hard disks, this results in a low utilization rate of the effective capacity of the hard disks in some cases.

[0003] It can be seen that how to improve the utilization rate of the effective capacity of hard disks is a technical problem that needs to be urgently solved by those skilled in the art. Summary of the Invention

[0004] In view of this, the purpose of the present invention is to provide a method, a system, a device and a readable storage medium for forming a redundant array of independent disks, which solves the problem of low utilization rate of effective capacity in the prior art.

[0005] To solve the above technical problems, the present invention provides a method for forming a redundant array of independent disks, including:

[0006] Obtaining a hard disk reconstruction strategy; wherein, the hard disk reconstruction strategy is a strategy for splitting or combining the original physical disks to maximize the effective capacity;

[0007] Processing the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined;

[0008] Forming a target redundant array of independent disks based on the virtual physical disks and the original physical disks that have not been reconstructed.

[0009] In some embodiments, the hard disk reconstruction strategy is a strategy for reconstructing hard disks determined based on a data security strategy and an effective capacity maximization strategy. The data security strategy is a strategy for ensuring the lowest data fault tolerance ability, and the effective capacity maximization strategy is a strategy for maximizing the product of the smallest hard disk capacity and the number of effective hard disks.

[0010] In some embodiments, before obtaining the hard disk reconstruction strategy, it further includes:

[0011] Determine the number of data disks in the original physical disk;

[0012] Determine the capacity of each data disk, the number of data disks corresponding to each capacity, and the target capacity corresponding to the maximum number of data disks;

[0013] A strategy for splitting or combining the original physical disks is determined based on the target capacity and the data security policy to obtain the reconstruction processing strategy.

[0014] In some embodiments, processing an idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk includes:

[0015] The idle original physical disk is processed based on the hard disk reconstruction command corresponding to the hard disk reconstruction policy to obtain the virtual physical disk; wherein the hard disk reconstruction command is a command created based on a non-volatile memory host controller management command set.

[0016] In some embodiments, before processing the idle original physical disk based on the hard disk reconstruction command corresponding to the hard disk reconstruction policy to obtain the virtual physical disk, the method further includes:

[0017] Obtaining a physical address field pointing to a data buffer associated with a command, a field specifying a data structure type to be queried, and a command extension parameter field for transmitting additional control information from a submission queue structure of a non-volatile memory host controller management command set, and constructing a command for querying free original physical disks and a command for splitting original physical disks;

[0018] Obtaining the physical address field pointing to the data buffer associated with the command and the data structure type field specifying the data to be queried in the submission queue structure of the non-volatile memory host controller management command set, and constructing a command for combining the original physical disks and a command for creating a target redundant array of disks; wherein the hard disk reconstruction command includes the command for splitting the original physical disks and the command for combining the original physical disks;

[0019] A unique identifier field of a virtual physical disk to be deleted is obtained from a submission queue structure based on the non-volatile memory host controller management command set, and a command is constructed to unbundle the combined virtual physical disks, unsplit the virtual physical disks, and delete an existing target redundant array of disks; the command to unsplit the virtual physical disks is used to unsplit an existing virtual physical disk.

[0020] In some embodiments, processing the idle raw physical disks based on the hard disk reconstruction policy to obtain virtual physical disks includes:

[0021] Performing a splitting process or a combining process on the idle raw physical disks based on the hard disk reconstruction policy to obtain the virtual physical disks.

[0022] In some embodiments, before forming a target disk redundant array based on the virtual physical disks and the raw physical disks that have not been reconstructed, it further includes:

[0023] Setting the status of the split or combined raw physical disks to the busy status;

[0024] Setting the status of the virtual physical disks to the idle status.

[0025] An embodiment of the present invention further provides a device for forming a disk redundant array, including:

[0026] A hard disk reconstruction policy acquisition module, configured to acquire a hard disk reconstruction policy; wherein, the hard disk reconstruction policy is a policy for splitting or combining raw physical disks to maximize the effective capacity;

[0027] A reconstruction module, configured to process the idle raw physical disks based on the hard disk reconstruction policy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined;

[0028] An array formation module, configured to form a target disk redundant array based on the virtual physical disks and the raw physical disks that have not been reconstructed.

[0029] An embodiment of the present invention further provides a device for forming a disk redundant array, including:

[0030] ]>A memory, configured to store a computer program;

[0031] A processor, configured to execute the computer program to implement the steps of the method for forming a disk redundant array as described above.

[0032] An embodiment of the present invention further provides a readable storage medium, on which a computer program is stored, and when the computer program is executed by a processor, the steps of the method for forming a disk redundant array as described above are implemented.

[0033] The present invention further provides a computer program product, including a computer program / instructions, and when the computer program / instructions are executed by a processor, the steps of the method for forming a disk redundant array as described above are implemented.

[0034] To solve the above technical problems, an embodiment of the present invention provides a method for forming a redundant array of independent disks, which may include: obtaining a hard disk reconstruction strategy; wherein, the hard disk reconstruction strategy is a strategy for splitting or combining the original physical disks to maximize the effective capacity; processing the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have not been split or combined; forming a target redundant array of independent disks based on the virtual physical disks and the original physical disks that have not been reconstructed.

[0035] As can be seen from the above technical solutions, the beneficial effect of the present invention is that: compared with the fact that the capacity of the current physical hard disks often inconsistent, sometimes even significantly different, resulting in a lower effective capacity of the hard disks in the array in some cases, the present invention processes the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks, reduces the capacity difference between each physical hard disk (including virtual physical disks and original physical disks), improves the effective capacity corresponding to the target redundant array of independent disks formed by the virtual physical disks and the original physical disks that have not been reconstructed, and thus improves the utilization rate of the effective capacity. BRIEF DESCRIPTION OF THE DRAWINGS

[0036] To more clearly illustrate the embodiments of the present invention, the drawings required for use in the embodiments will be briefly introduced below. Obviously, the drawings in the following description are only some embodiments of the present invention, and those of ordinary skill in the art can obtain other drawings based on these drawings without creative efforts.

[0037] Figure 1 It is a flowchart of a method for forming a redundant array of independent disks provided by an embodiment of the present invention;

[0038] Figure 2 It is a schematic diagram of a theoretical effective capacity provided by an embodiment of the present invention;

[0039] Figure 3 It is a schematic diagram of a combined physical disk provided by an embodiment of the present invention;

[0040] Figure 4 It is a schematic diagram of a split physical disk provided by an embodiment of the present invention;

[0041] Figure 5 It is a framework diagram of a method for forming a redundant array of independent disks provided by an embodiment of the present invention;

[0042] Figure 6 It is a flow example diagram of a method for forming a redundant array of independent disks provided by an embodiment of the present invention;

[0043] Figure 7 It is a flow example diagram of deleting a target redundant array of independent disks provided by an embodiment of the present invention;

[0044] Figure 8 It is a schematic structural framework diagram of a disk array redundancy formation device provided by an embodiment of the present invention;

[0045] Figure 9 It is a schematic structural framework diagram of a disk array redundancy formation device provided by an embodiment of the present invention. Specific implementation manners

[0046] Next, the technical solutions in the embodiments of the present invention will be clearly and completely described in conjunction with the accompanying drawings in the embodiments of the present invention. Obviously, the described embodiments are only a part of the embodiments of the present invention, rather than all the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by those of ordinary skill in the art without creative efforts belong to the protection scope of the present invention.

[0047] The terms "including" and "having" in the specification of the present invention and the above accompanying drawings, as well as any variations related to "including" and "having", are intended to cover non-exclusive inclusion. For example, a process, method, system, product, or device that includes a series of steps or units is not limited to the listed steps or units, but may include steps or units not listed.

[0048] During the description of the embodiments of the present invention, some nouns or terms are applicable to the following explanations:

[0049] RAID (Redundant Array of Independent Disks): That is, a redundant array of independent disks. RAID combines multiple disk devices into one or more storage array groups.

[0050] PCIe (Peripheral Component Interconnect Express): It is the abbreviation of Peripheral Component Interconnect Express, that is, peripheral component interconnect expansion. It is a high-speed serial bus standard for connecting a computer motherboard and external devices. It replaces the traditional PCI (Peripheral Component Interconnect) bus and provides higher bandwidth and lower latency.

[0051] NVMe: (Non-Volatile Memory express), called the non-volatile memory host controller interface specification, is a logical device interface specification, a bus transmission protocol specification based on the device logical interface, and is used to access non-volatile memory media attached through the PCI Express (PCIe) bus.

[0052] SQE: The abbreviation of Submission Queue Entry, which is the submission queue. It is defined in the NVMe protocol. It is a queue on the host side used to store submission commands. Generally, it is created in the host memory, and the address of this queue is informed to the device through the NVMe-related registers mapped by the PCIe Bar space, so as to interact commands between the host side and the device side.

[0053] CQE: The abbreviation of Completion Queue Entry, which is the completion queue. It is defined in the NVMe protocol. It is a queue on the device side used to store the command completion results. Generally, it is created in the host memory, and the address of this queue is informed to the device through the NVMe-related registers mapped by the PCIe Bar space, so as to interact commands between the host side and the device side.

[0054] NVMe Admin command set (command set for configuring NVMe devices): It is a set of commands dedicated to managing and configuring NVMe devices. These commands are submitted to the NVMe controller through the Admin Submission Queue and the completion status is received in the Admin Completion Queue.

[0055] To enable those skilled in the art to better understand the solution of the present invention, the present invention will be further described in detail below with reference to the accompanying drawings and specific embodiments.

[0056] Next, a method for constructing a redundant array of independent disks provided by the embodiments of the present invention will be introduced in detail. Figure 1 It is a flowchart of a method for constructing a redundant array of independent disks provided by the embodiments of the present invention. The method may include:

[0057] S101, obtain a hard disk reconstruction strategy; wherein, the hard disk reconstruction strategy is a strategy for splitting or combining the original physical disks to maximize the effective capacity.

[0058] The execution subject of this embodiment is an electronic device. The electronic device can be a computer, a RAID card, etc. The hard disk reconstruction strategy in this embodiment is a strategy for combining or splitting physical hard disks in the RAID card. This strategy can achieve the strategy with the maximum effective capacity under the condition of meeting the requirement of the number of physical hard disks for parity in the RAID card. The effective capacity in this embodiment refers to the minimum hard disk capacity × the number of effective hard disks; the number of effective hard disks is the total number of hard disks minus the number of hard disks used for parity. This embodiment does not limit the specific hard disk reconstruction strategy, as long as the hard disk reconstruction strategy can increase the effective capacity of the original RAID array. It can be understood that when forming a RAID array, there is no strict requirement for the capacity of the hard disks in theory, and it is allowed to mix hard disks with different capacities. To improve the utilization rate of the storage space, it is usually recommended to use hard disks with the same capacity. However, in practical applications, due to the progress of storage technology and the continuous increase of hard disk capacity, as well as economic considerations, the capacities of new and old hard disks are often inconsistent, and sometimes the difference is even significant. This results in a low utilization rate of the effective capacity of the hard disks in the array in some cases. The theoretical effective capacity of a RAID array can be calculated by the following method: take the smallest-capacity hard disk among all the hard disks in the array, and then multiply it by the number of effective hard disks. For example, if a RAID5 array is formed using four hard disks, where two hard disks have a capacity of 2TB and the other two hard disks have a capacity of 1TB, then the theoretical effective capacity of this RAID 5 array is 3TB. As Figure 2 , Figure 2 is a schematic diagram of the theoretical effective capacity provided by an embodiment of the present invention. The calculation of the RAID 5 array capacity: the minimum hard disk capacity = 1TB; the number of effective hard disks = 3 (excluding one hard disk capacity used for parity); the theoretical effective capacity = the minimum hard disk capacity × the number of effective hard disks = 1TB × 3 = 3TB. This calculation method is applicable to all types of RAID arrays, which helps users more accurately estimate the available storage space when planning a storage solution. In fact, if the total capacity of the four hard disks is considered and the space used for parity is excluded, the effective storage capacity can reach 4TB. Therefore, according to the conventional RAID formation method, the utilization rate of large-capacity hard disks is relatively low. In this case, the waste of resources of large-capacity hard disks is quite serious.

[0059] It should be further noted that the above hard disk reconstruction strategy is a strategy for reconstructing the hard disk determined based on the data security strategy and the maximum effective capacity strategy. The data security strategy is a strategy for ensuring the minimum data fault tolerance ability, and the maximum effective capacity strategy is a strategy for maximizing the product of the minimum hard disk capacity and the number of effective hard disks. The reason for considering the data security strategy in this embodiment is to ensure the existence of parity physical disks when reconstructing the disk redundant array, so that data can be recovered in case of data loss. The strategy of the minimum data fault tolerance ability means meeting the requirement of the minimum number of parity physical disks of the RAID card. By designing the hard disk reconstruction strategy based on the data security strategy and the maximum effective capacity strategy, this embodiment can achieve the maximum effective capacity while meeting the requirements of the array security.

[0060] It should be further noted that, based on any of the above embodiments, before obtaining the hard disk reconstruction strategy, it may further include:

[0061] S11, determining the number of data disks in the original physical disks;

[0062] S12, determining the capacity of each data disk, determining the number of data disks corresponding to each capacity, and determining the target capacity corresponding to the largest number of data disks;

[0063] S13, determining the strategy for splitting or combining the original physical disks based on the target capacity and the data security strategy to obtain the reconstruction processing strategy.

[0064] This embodiment can group the original physical disks according to their capacities to obtain the number of physical disks corresponding to each capacity. For example, 2TB physical disks: 1 piece; 1TB physical disks: 2 pieces. Find the capacity with the largest number of physical disks as the target capacity. In the example, the maximum number is 2 pieces (1TB). Data security strategy: Use RAID 5 (allowing 1 disk to fail, requiring at least 3 disks to form). Target capacity: 1TB. At this time, the 2TB physical disk can be split into 2 1TB logical units. The effective capacity of the original RAID array is (2TB). The effective capacity of the re - constructed RAID 5 is (3TB). The reason for obtaining the reconstruction processing strategy based on the target capacity in this embodiment is to quickly determine whether to combine or split. When the target capacity is too small, physical hard disks with large capacities (determined according to the actual situation) can be selected for splitting to increase the effective capacity by increasing the number of effective hard disks. When the target capacity is too large, physical hard disks with small capacities (determined according to the actual situation) can be combined to increase the effective capacity by increasing the minimum hard disk capacity.

[0065] S102, processing the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined.

[0066] In this embodiment, there is no limitation on the specific process of processing the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks. The idle original physical disks can be split or combined based on the hard disk reconstruction strategy to obtain virtual physical disks. For example, in this embodiment, the idle original physical disks can be combined, or the idle original physical disks can be split. For example, according to the number of physical hard disks in the scenario of forming an array, under the condition of meeting the number of disks required for array construction, multiple hard disks with small capacities are combined and bound to generate one or more virtual physical disks, so that the capacity of the virtual physical disks is close to the capacity of most physical disks, that is, the difference between the capacity of the virtual physical disks and the capacity of the original physical disk with the largest capacity mode is minimized. Then, the combined virtual physical disks and the remaining physical disks that have not been grouped and bound are formed into a RAID array, so that the effective capacity of the array formed by this method can reach the maximum value, improving the disk utilization rate. In the scenario of forming a RAID5 array with four disks as above (when the original RAID array is RAID5, including 4 physical disks, where 1 physical disk is a parity disk, and the hard disk capacities of physical disk 1 and physical disk 2 are twice that of physical disk 3 and physical disk 4), according to this method, first, physical disk 3 and physical disk 4 are combined into a virtual physical disk 1, and then physical disk 1, physical disk 2, and virtual physical disk 1 are formed into a RAID5 array, which can make the array capacity reach 4TB (the minimum hard disk capacity is 2TB, and the effective number of hard disks is 2). As Figure 3 shown, Figure 3 FIG. 5 is a schematic diagram of combining physical disks provided by an embodiment of the present invention. Compared with the original effective capacity of only 3TB, the utilization rate of the effective capacity can be improved by splitting the original physical disks.

[0067] For ease of understanding, in some scenarios, if there is a hard disk with a relatively large capacity in the array formation, and other small-capacity hard disks cannot create an array by binding physical disks to generate virtual disks under the condition of meeting the array creation conditions, the present invention proposes a new strategy: splitting a single physical disk into multiple virtual physical disks. Subsequently, these split virtual physical disks are combined with other physical disks to form a RAID array. This method can optimize the effective capacity of the array, thereby significantly improving the hard disk utilization rate. For example, if three hard disks are used to form a RAID-5 array, where the capacity of one hard disk is 2TB and the capacities of the other two hard disks are 1TB, then the theoretical effective capacity of forming a RAID-5 array by the usual method is 2TB. However, according to the above solution, physical disk 1 is split into two virtual physical disks 1 and physical disk 2, and then two virtual physical disks and the remaining two physical disks are formed into a RAID-5 array, which can make the capacity in the array reach 3TB (the minimum hard disk capacity is 1TB, and the effective number of hard disks is 3). As Figure 4 shown, Figure 4A schematic diagram of splitting a physical disk provided by an embodiment of the present invention.

[0068] It should be further noted that, based on any of the above embodiments, processing the idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk may include: processing the idle original physical disk based on a hard disk reconstruction command corresponding to the hard disk reconstruction strategy to obtain a virtual physical disk; wherein, the hard disk reconstruction command is a command created based on the non-volatile memory host controller management command set. The hard disk reconstruction command in this embodiment is the NVMe Admin command set. It can be understood that the RAID card is a PCIe device on a computer system, connected to the host through the PCIe bus, and configured command interactions are performed using a storage device interface in the upper-layer service. The NVMe specification is an open-source high-speed solid-state drive storage device interface. Using the NVMe interface to implement the interaction between the host management command driver and the RAID controller can improve performance and save costs. However, only basic commands for configuring NVMe devices are defined in the NVMe Admin command set, and the command protocol for the RAID card host configuration management service is not specifically defined. Therefore, we need to define a set of vendor-defined commands based on the NVMe Admin command set to configure the RAID card. The NVMe standard protocol defines the SQE structure and CQE structure of the basic Admin vendor-defined commands. In the RAID card system, the characteristics and status of each object can be represented by a series of attributes. The host completes the configuration management of the RAID card by defining some commands to read or set the attribute values of the objects in the RAID card system. This embodiment can implement the configuration of the RAID card through the hard disk reconstruction command and realize the construction of a redundant array of independent disks.

[0069] It should be further noted that, in order to improve the comprehensiveness of the commands, before processing the idle original physical disk based on a hard disk reconstruction command corresponding to the hard disk reconstruction strategy to obtain a virtual physical disk, it may further include:

[0070] S21: Obtain a command for querying the idle original physical disk and a command for splitting the original physical disk, which are constructed based on the physical address field (DPTR) pointing to the data buffer associated with the command, the specified data structure type field (CDW10), and the command extension parameter field (CDW12) for passing additional control information in the submission queue structure based on the non-volatile memory host controller management command set.

[0071] In this embodiment, the physical address field pointing to the data buffer associated with the command, the field specifying the data structure type to be queried, and the command extension parameter field for passing additional control information in the submission queue structure of the non-volatile memory host controller management command set refer to the DPTR, CDW10, and CDW12 fields in the SQE structure. The DPTR pointer points to a TLV data structure composed of physical disk attributes as the returned data.

[0072] S22: Obtain the command for combining the original physical disks constructed based on the physical address field pointing to the data buffer associated with the command and the field specifying the data structure type to be queried in the submission queue structure of the non-volatile memory host controller management command set, and the command for creating a target disk redundancy array.

[0073] S23: Obtain the command for unbinding the combined virtual physical disk constructed based on the unique identifier field of the virtual physical disk to be deleted in the submission queue structure of the non-volatile memory host controller management command set, the command for un-splitting the virtual physical disk, and the command for deleting the existing target disk redundancy array; the command for un-splitting the virtual physical disk is used to un-split an existing virtual physical disk.

[0074] For ease of understanding, the RAID card defines configuration commands as follows: (1) The command for querying free original physical disks (Identify Physical Disk), which is used to return information about the specified physical disks under the specified RAID group. The command uses the DPTR, CDW10, and CDW12 fields in the SQE structure. The DPTR pointer points to a TLV data structure composed of physical disk attributes as the returned data. Please refer to Table 1, Table 2, and Table 3. Table 1 is a schematic table of the SQE CDW 10 field corresponding to the command for querying free original physical disks, Table 2 is a schematic table of the SQE CDW12 field corresponding to the command for querying free original physical disks, and Table 3 is a schematic table of the CQE CDW 0 field corresponding to the command for querying free original physical disks. The RAID controller constructs the physical disk data structure and writes it into the Buffer (buffer) allocated by the host. After the command is executed, CDW0 in the CQE data structure returns the actual data transfer length.

[0075] Table 1 Schematic table of the SQE CDW 10 field corresponding to the command for querying free original physical disks

[0076]

[0077] Table 2 Schematic table of the SQE CDW12 field corresponding to the command for querying free original physical disks

[0078]

[0079] Table 3 Schematic Table of CQE CDW 0 Field Corresponding to Command for Querying Idle Original Physical Disk

[0080]

[0081] For ease of understanding, the command for combining original physical disks (Binding Physical Disk command) generates a new virtual physical disk by binding multiple physical disks. The command uses the DPTR and CDW10 fields in the SQE. The DPTR pointer points to a TLV data structure of RAID Array attributes for setting the parameters of the RAID group to be created. Please refer to Table 4, Table 5, and Table 6. Table 4 is a schematic table of the SQE CDW10 field corresponding to the Binding Physical Disk command, Table 5 is a schematic table of the attribute fields corresponding to the Binding Physical Disk command, and Table 6 is a schematic table of the CQE CDW 0 field corresponding to the Binding Physical Disk command. In the completion CQE of the command, CDW0 contains the Virtual PhysicalDisk ID created successfully.

[0082] Table 4 Schematic Table of SQE CDW10 Field Corresponding to Binding Physical Disk Command

[0083]

[0084] Table 5 Schematic Table of Attribute Fields Corresponding to Binding Physical Disk Command

[0085]

[0086] Table 6 Schematic Table of CQE CDW 0 Field Corresponding to Binding Physical Disk Command

[0087]

[0088] For ease of understanding, the command for unbinding the combined virtual physical disk (Unbinding Physical Disk command) unbinds an existing virtual physical disk. This command only uses the CDW13 field in the SQE, and this field indicates the Virtual Physical Disk ID to be deleted. Table 7 is a schematic table of the SQE CDW 13 field corresponding to the Unbinding Physical Disk command.

[0089] Table 7 Schematic Table of SQE CDW 13 Field Corresponding to Unbinding Physical Disk Command

[0090]

[0091] For easy understanding, the command to split the original physical disk (Split Physical Disk command). This command generates multiple new virtual physical disks by splitting a physical disk. The command uses the DPTR, CDW10, and CDW12 fields in the SQE structure. The DPTR pointer points to a TLV data structure composed of the physical disk attributes as the returned data. Please refer to Table 8, Table 9, and Table 10. Table 8 is a schematic table of the SQE CDW 10 field corresponding to the split physical disk command, and Table 9 is a schematic table of the SQE CDW12 field corresponding to the split physical disk command. The RAID controller constructs the virtual disk attribute TLV data structure and writes it into the Buffer allocated by the host. After the command is executed, CDW0 in the CQE data structure returns the actual data transfer length. Table 10 is a schematic table of the CQE CDW 0 field corresponding to the split physical disk command.

[0092] Table 8 Schematic table of the SQE CDW 10 field corresponding to the split physical disk command

[0093]

[0094] Table 9 Schematic table of the SQE CDW12 field corresponding to the split physical disk command

[0095]

[0096] Table 10 Schematic table of the CQE CDW 0 field corresponding to the split physical disk command

[0097]

[0098] For easy understanding, the command to unsplit the virtual physical disk (UnsplitPhysical Disk command). This command unsplits an existing virtual physical disk. This command only uses the CDW13 field in the SQE, and this field indicates the Virtual Physical Disk ID to be deleted. Table 11 is a schematic table of the SQE CDW 13 field corresponding to the unsplit physical disk command.

[0099] Table 11 Schematic table of the SQE CDW 13 field corresponding to the unsplit physical disk command

[0100]

[0101] For the sake of understanding, the command for creating a target disk redundant array (Create RAID Array command) is used to create a new RAID Array. The command uses the DPTR and CDW10 fields in the SQE. The DPTR pointer points to a TLV data structure of RAIDArray attributes, which is used to set the parameters of the RAID group to be created. When creating a new RAID Array, the optional and mandatory attributes that the TLV data structure composed of the parameters carried by the create array needs to contain are shown in Table 12. Table 12 is a schematic table of the SQE CDW 10 field corresponding to the create array command, and Table 13 is a schematic table of the attributes corresponding to the create array command. Table 14 is a schematic table of the CQE CDW 0 corresponding to the command and the create array command. In the completed CQE, CDW0 contains the identifier of the successfully created RAID array.

[0102] Table 12 Schematic table of the SQE CDW 10 field corresponding to the create array command

[0103]

[0104] Table 13 Schematic table of the attributes corresponding to the create array command

[0105]

[0106] Table 14 Schematic table of the CQE CDW 0 corresponding to the command and the create array command

[0107]

[0108] For the sake of understanding, the command for deleting an existing target disk redundant array (Delete RAID Array command) is used to delete an existing RAID Array. This command only uses the CDW13 field in the SQE, and this field indicates the RAID Array ID to be deleted. Table 15 is the SQE CDW 13 corresponding to the delete array command.

[0109] Table 15 SQE CDW 13 corresponding to the delete array command

[0110]

[0111] S103. A target disk redundant array is formed based on a virtual physical disk and an original physical disk that has not been reconstructed.

[0112] This embodiment can reorganize an array based on a virtual physical disk and an original physical disk that has not been reconstructed to obtain a target disk redundant array.

[0113] It should be further noted that, in order to improve the accuracy of the formation, before forming the target disk redundant array based on the virtual physical disk and the original physical disk that has not been reconstructed, the following steps may also be included: setting the state of the original physical disk that has been split or combined to the busy state; setting the state of the virtual physical disk to the idle state. By changing the state of the physical disk in this embodiment, the original physical disk that has been split or combined is prevented from being formed, thereby improving the accuracy of the formation.

[0114] It should be noted that, in order to improve the manageability of the physical disk, the formation of the target disk redundant array based on the virtual physical disk and the original physical disk that has not been reconstructed may include: performing striping division on the virtual physical disk and the original physical disk that has not been reconstructed based on a redundancy policy to generate the target disk redundant array; wherein, the striping division needs to meet the following constraint conditions: any data stripe or parity stripe is completely stored within a single physical disk, and cross-physical disk boundary storage is prohibited; the parity calculation logic of the redundancy policy is dynamically adjusted according to the stripe distribution constraint to ensure that the storage positions of the parity block and the corresponding data block meet the same-disk requirement. The redundancy policy in this embodiment may be RAID 5, RAID 6, or an erasure code policy. When dividing the stripes in this embodiment, the stripes of the virtual physical disk do not cross physical disks, thereby improving the manageability of the physical disk.

[0115] A method for forming a disk redundant array provided by an embodiment of the present invention may include: S101, obtaining a hard disk reconstruction policy; wherein, the hard disk reconstruction policy is a policy for splitting or combining the original physical disks to maximize the effective capacity; S102, processing the idle original physical disks based on the hard disk reconstruction policy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined; S103, forming a target disk redundant array based on the virtual physical disks and the original physical disks that have not been reconstructed. Compared with the situation where the capacity of the current physical hard disk is often inconsistent, and sometimes even significantly different, resulting in a lower effective capacity of the hard disks in the array in some cases, the present invention processes the idle original physical disks based on the hard disk reconstruction policy to obtain virtual physical disks, reduces the capacity difference between each physical hard disk (including virtual physical disks and original physical disks), improves the effective capacity corresponding to the target disk redundant array formed based on the virtual physical disks and the original physical disks that have not been reconstructed, and thus improves the utilization rate of the effective capacity.

[0116] To make the present invention easier to understand, specifically, please refer to Figure 5 , Figure 5 which is a framework diagram of a method for forming a disk redundant array provided by an embodiment of the present invention, and specifically may include:

[0117] In this embodiment, the RAID card formation can be abstracted as the interaction between the host management tool and the RAID controller through configuration commands to complete the RAID formation operation. The command interaction steps of the RAID configuration management tool for creating an array on the RAID card are as Figure 6 shown, Figure 6 which is a flowchart example of a method for forming a redundant array of independent disks provided by an embodiment of the present invention:

[0118] S201, send a query on the host interface for the original physical disks with an idle status in the RAID card system.

[0119] Figure 5 The idle disks in are the original physical disks with an idle status. It should be noted that in order to implement the formation of the array, a complete set of RAID card configuration management commands are required on the host first to implement the configuration of the RAID card. Then, on the controller of the RAID card, the function of binding physical disks to generate virtual disks needs to be implemented. The generated virtual disks are visible to the user's configuration interface, and their status is set to idle, while the status of the original physical disks bound in the group is set to a busy status. The address mapping of the stripe blocks of the virtual disk is the same as the address of the stripe blocks on the corresponding physically bound disks, that is, the stripe block addresses of the virtual disk and the physical disk are in one-to-one correspondence, and this mapping relationship needs to be maintained during the RAID of the virtual disk group.

[0120] S202, after the RAID card receives the command to query the physical disks, return a list of physical disks with an idle status.

[0121] S203, generate a hard disk reconstruction command based on the hard disk reconstruction strategy on the host interface.

[0122] S204, after the RAID card receives the hard disk reconstruction command, process the idle original physical disks based on the hard disk reconstruction strategy to obtain virtual physical disks.

[0123] The hard disk reconstruction command in this embodiment can be a command to split the original physical disks or a command to combine the original physical disks. For example, after receiving the command to combine the original physical disks, generate a virtual physical disk (vPD), set the status of the original physical disks to busy, set the status of the newly generated virtual disk to idle, the capacity of the vPD is the sum of the effective capacities of the physically bound disks, and return that the binding is successful. The virtual disks in this embodiment are virtual physical disks.

[0124] S205, send a query on the host interface for a list of disks with an idle status in the RAID card system.

[0125] S206, after the RAID card receives the command to query the physical disks, return a list of target physical disks with an idle status; among them, the target physical disks include the original physical disks and the virtual physical disks.

[0126] S207. Issue a command to create an array based on the target physical disk list on the host interface.

[0127] S208. The RAID card receives the command to create an array, creates a target disk redundant array according to the target physical disks and stripes. The theoretical effective capacity of the target disk redundant array is the capacity of the smallest disk in the array multiplied by the number of valid disks in the array, and returns that the array creation is successful.

[0128] The target disk redundant array in this embodiment corresponds to the array in the figure, and the original physical disks correspond to the original physical disks.

[0129] The present invention can greatly improve the utilization rate of the effective capacity of the disks in the array. The method proposed by the present invention aims at the mainstream application scenarios of the current RAID card capacity, effectively solves the utilization rate of the hard disk capacity in the array, improves the applicability of the RAID controller, and thus enhances the competitiveness of the product. Virtualize physical disks into multiple virtual disks, and then form a RAID array to improve the flexibility of configuring the array and meet the configuration requirements of the RAID array in more scenarios.

[0130] For the present invention to be more easily understood, please specifically refer to Figure 7 , Figure 7 FIG.

[0131] (1) Configure the array to be deleted on the host interface and issue a command to delete the array.

[0132] (2) After the RAID card receives the command to delete the array, delete the array and related information, and return that the deletion is successful.

[0133] (3) Issue a command to unbind the virtual physical disk that needs to be unbound on the host interface.

[0134] (4) After the RAID card receives the command to delete the virtual physical disk, delete the object information of the virtual physical disk and set the status of the corresponding disk to idle, and return that the unbinding is successful.

[0135] Next, the disk redundant array formation device provided by the embodiments of the present invention will be introduced. The disk redundant array formation device described below can be mutually corresponding and referred to with the disk redundant array formation method described above.

[0136] Figure 8 FIG.

[0137] A hard disk reconstruction strategy acquisition module 100, configured to acquire a hard disk reconstruction strategy; wherein, the hard disk reconstruction strategy is a strategy for splitting or combining the original physical disks to maximize the effective capacity.

[0138] The reconstruction module 200 is configured to process the idle raw physical disks based on the hard disk reconstruction policy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined.

[0139] The array formation module 300 is configured to form a target disk redundant array based on the virtual physical disks and the raw physical disks that have not been reconstructed.

[0140] Further, based on the above embodiments, the hard disk reconstruction policy is a policy for reconstructing the hard disk determined based on the data security policy and the maximum effective capacity policy. The data security policy is a policy for ensuring the minimum data fault tolerance ability, and the maximum effective capacity policy is a policy for maximizing the product of the minimum hard disk capacity and the effective number of hard disks.

[0141] Further, based on any of the above embodiments, the above disk redundant array formation device may further include:

[0142] The quantity determination module is configured to determine the quantity of data disks among the raw physical disks.

[0143] The target capacity determination module is configured to determine the capacity of each data disk, determine the number of data disks corresponding to each capacity, and determine the target capacity corresponding to the largest number of data disks.

[0144] The reconstruction processing policy determination module is configured to determine the policy for splitting or combining the raw physical disks based on the target capacity and the data security policy to obtain the reconstruction processing policy.

[0145] Further, based on any of the above embodiments, the above reconstruction module 200 may include:

[0146] The virtual physical disk construction unit is configured to process the idle raw physical disks based on the hard disk reconstruction command corresponding to the hard disk reconstruction policy to obtain the virtual physical disks; wherein, the hard disk reconstruction command is a command created based on the non-volatile memory host controller management command set.

[0147] Further, based on any of the above embodiments, the above disk redundant array formation device may further include:

[0148] The first command acquisition module is configured to acquire the command for querying the idle raw physical disks and the command for splitting the raw physical disks, which are constructed based on the physical address field pointing to the data buffer associated with the command, the field specifying the data structure type to be queried, and the command extension parameter field for passing additional control information in the submission queue structure based on the non-volatile memory host controller management command set.

[0149] a second command acquisition module, configured to acquire, based on the physical address field pointing to the data buffer associated with the command and the data structure type field specifying the data to be queried in the submission queue structure of the non-volatile memory host controller management command set, a command for combining the original physical disks and a command for creating a target redundant array of disks; wherein the hard disk reconstruction command includes the command for splitting the original physical disks and the command for combining the original physical disks;

[0150] A third command acquisition module is configured to acquire a unique identifier field of a virtual physical disk to be deleted from a submission queue structure of the non-volatile memory host controller management command set, and to construct a command for unbinding the combined virtual physical disk, a command for unsplitting the virtual physical disk, and a command for deleting an existing target redundant array of disks; the command for unsplitting the virtual physical disk is used to unsplit an existing virtual physical disk.

[0151] Further, based on any of the above embodiments, the reconstruction module 200 may include:

[0152] The splitting or combining unit is used to perform splitting or combining processing on the idle original physical disk based on the hard disk reconstruction strategy to obtain the virtual physical disk.

[0153] Furthermore, based on any of the above embodiments, the redundant array of disks assembly device may further include:

[0154] A first state setting module, configured to set the state of the original physical disk after being split or combined to a busy state;

[0155] The second state setting module is configured to set the state of the virtual physical disk to an idle state.

[0156] It should be noted that the order of the modules and units in the above redundant array of disks assembly device can be changed without affecting the logic.

[0157] Figure 8 The description of the features in the corresponding embodiment can be found in Figure 8 The relevant descriptions of the corresponding embodiments will not be repeated here one by one.

[0158] An apparatus for constructing a redundant array of independent disks according to an embodiment of the present invention may include: a hard disk reconstruction policy acquisition module 100, configured to acquire a hard disk reconstruction policy; wherein, the hard disk reconstruction policy is a policy for splitting or combining original physical disks to maximize the effective capacity; a reconstruction module 200, configured to process idle original physical disks based on the hard disk reconstruction policy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined; an array construction module 300, configured to form a target redundant array of independent disks based on the virtual physical disks and the original physical disks that have not been reconstructed. The beneficial effect of the present invention is that, compared with the situation where the capacity of the current physical hard disks often varies, and sometimes even differs significantly, resulting in a low effective capacity of the hard disks in the array in some cases, the present invention processes idle original physical disks based on the hard disk reconstruction policy to obtain virtual physical disks, reduces the capacity difference between each physical hard disk (including virtual physical disks and original physical disks), improves the effective capacity corresponding to the target redundant array of independent disks formed by the virtual physical disks and the original physical disks that have not been reconstructed, and thus improves the utilization rate of the effective capacity.

[0159] The following introduces an apparatus for constructing a redundant array of independent disks according to an embodiment of the present invention. The apparatus for constructing a redundant array of independent disks described below can be correspondingly referred to the method for constructing a redundant array of independent disks described above.

[0160] Figure 9 It is a schematic structural framework diagram of an apparatus for constructing a redundant array of independent disks according to an embodiment of the present invention. As Figure 9 shown, the apparatus for constructing a redundant array of independent disks may include: a memory 60, configured to store a computer program;

[0161] a processor 61, configured to implement the steps of the method for constructing a redundant array of independent disks in the above embodiment when executing the computer program.

[0162] The apparatus for constructing a redundant array of independent disks provided in this embodiment may include, but is not limited to, a smart phone, a tablet computer, a laptop computer, a desktop computer, etc.

[0163] Among them, the processor 61 may include one or more processing cores, such as a 4-core processor, an 8-core processor, etc. The processor 61 may be implemented in at least one hardware form of digital signal processing (DSP), field-programmable gate array (FPGA), or programmable logic array (PLA). The processor 61 may also include a main processor and a coprocessor. The main processor is a processor for processing data in the wake state, also known as the central processing unit (CPU); the coprocessor is a low-power processor for processing data in the standby state. In some embodiments, the processor 61 may be integrated with a graphics processing unit (GPU), and the GPU is responsible for rendering and drawing the content to be displayed on the display screen. In some embodiments, the processor 61 may further include an artificial intelligence (AI) processor, and the AI processor is used to process computational operations related to machine learning.

[0164] The memory 60 may include one or more computer-readable storage media, and the computer-readable storage media may be non-transitory. The memory 60 may further include high-speed random access memory and non-volatile memory, such as one or more disk storage devices and flash storage devices. In this embodiment, the memory 60 is at least used to store the following computer program 601. After the computer program is loaded and executed by the processor 61, it can implement the relevant steps of the disk redundant array construction method disclosed in any of the foregoing embodiments. In addition, the resources stored in the memory 60 may further include an operating system 602 and data 603, etc., and the storage method may be temporary storage or permanent storage. Among them, the operating system 602 may include Windows, Unix, Linux, etc. The data 603 may include, but is not limited to, the data required for the disk redundant array construction method.

[0165] In some embodiments, the disk redundant array construction device may further include a display screen 62, an input / output interface 63, a communication interface 64, a power supply 65, and a communication bus 66.

[0166] Those skilled in the art can understand that Figure 9 the structure shown in

[0167] It can be understood that if the method for constructing a redundant array of independent disks in the above embodiments is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on such an understanding, the technical solution of the present invention, in essence, or the part that contributes to the current technology, or all or part of this technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and executes all or part of the steps of the methods in the various embodiments of the present invention. The aforementioned storage medium includes: various media that can store program codes, such as USB flash drives, mobile hard disks, read-only memory (ROM), random access memory (RAM), electrically erasable programmable ROM, registers, hard disks, removable disks, CD-ROMs, magnetic disks, or optical discs.

[0168] Based on this, an embodiment of the present invention further provides a readable storage medium, on which a computer program is stored. When the computer program is executed by a processor, it implements the steps of the method for constructing a redundant array of independent disks as described above.

[0169] The method for constructing a redundant array of independent disks provided by the embodiments of the present invention has been introduced in detail above. The various embodiments in the specification are described in a progressive manner. Each embodiment focuses on the differences from other embodiments. The same or similar parts among the various embodiments can be referred to each other. For the device disclosed in the embodiments, since it corresponds to the method disclosed in the embodiments, the description is relatively simple. For the relevant parts, reference can be made to the description in the method part.

[0170] Those skilled in the art can further realize that the units and algorithm steps of each example described in combination with the embodiments disclosed in this article can be implemented by electronic hardware, computer software, or a combination of the two. To clearly illustrate the interchangeability of hardware and software, the composition and steps of each example have been generally described according to functions in the above description. Whether these functions are executed in a hardware or software manner depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered to exceed the scope of the present invention.

[0171] The above has introduced in detail a method, system, device and readable storage medium for forming a redundant array of independent disks provided by the present invention. Specific examples are used in this article to elaborate on the principle and implementation manner of the present invention. The description of the above embodiments is only used to help understand the method and its core idea of the present invention. It should be noted that for those of ordinary skill in the art in this technical field, without departing from the principle of the present invention, several improvements and modifications can still be made to the present invention, and these improvements and modifications also fall within the protection scope of the claims of the present invention.

Claims

1. A method for forming a redundant array of independent disks, characterized in that include: Obtaining a hard disk reconstruction strategy; wherein the hard disk reconstruction strategy is a strategy for splitting or combining original physical disks to maximize effective capacity; Processing the idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk; wherein the virtual physical disk is a physical disk that has been split or combined; A target redundant array of disks is formed based on the virtual physical disk and the original physical disk that has not been reconstructed.

2. The method for forming a redundant array of independent disks according to claim 1, wherein The hard disk reconstruction strategy is a strategy for reconstructing the hard disk based on the data security strategy and the maximum effective capacity strategy. The data security strategy is a strategy to ensure the minimum data fault tolerance capability, and the maximum effective capacity strategy is a strategy to maximize the product of the minimum hard disk capacity and the number of effective hard disks.

3. The method for forming a redundant array of independent disks according to claim 2, wherein, Before obtaining the hard disk reconstruction strategy, the following is also included: Determine the number of data disks in the original physical disk; Determine the capacity of each data disk, the number of data disks corresponding to each capacity, and the target capacity corresponding to the maximum number of data disks; A strategy for splitting or combining the original physical disks is determined based on the target capacity and the data security policy to obtain the reconstruction processing strategy.

4. The method for forming a redundant array of independent disks according to any one of claims 1 to 3, wherein Processing the idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk includes: The idle original physical disk is processed based on the hard disk reconstruction command corresponding to the hard disk reconstruction policy to obtain the virtual physical disk; wherein the hard disk reconstruction command is a command created based on a non-volatile memory host controller management command set.

5. The method for forming a redundant array of independent disks according to claim 4, wherein Before processing the idle original physical disk based on the hard disk reconstruction command corresponding to the hard disk reconstruction policy to obtain the virtual physical disk, the method further includes: Obtaining a physical address field pointing to a data buffer associated with a command, a field specifying a data structure type to be queried, and a command extension parameter field for transmitting additional control information from a submission queue structure of a non-volatile memory host controller management command set, and constructing a command for querying free original physical disks and a command for splitting original physical disks; Obtaining the physical address field pointing to the data buffer associated with the command and the data structure type field specifying the data to be queried in the submission queue structure of the non-volatile memory host controller management command set, and constructing a command for combining the original physical disks and a command for creating a target redundant array of disks; wherein the hard disk reconstruction command includes the command for splitting the original physical disks and the command for combining the original physical disks; A unique identifier field of a virtual physical disk to be deleted is obtained from a submission queue structure based on the non-volatile memory host controller management command set, and a command is constructed to unbundle the combined virtual physical disks, unsplit the virtual physical disks, and delete an existing target redundant array of disks; the command to unsplit the virtual physical disks is used to unsplit an existing virtual physical disk.

6. The method for forming a redundant array of independent disks according to claim 1, wherein Processing the idle original physical disk based on the hard disk reconstruction strategy to obtain a virtual physical disk includes: Performing splitting processing or combining processing on the idle original physical disks based on the hard disk reconstruction policy to obtain the virtual physical disks.

7. The method for forming a redundant array of independent disks according to claim 1, wherein Before forming a target disk redundant array based on the virtual physical disks and the original physical disks that have not undergone reconstruction, it further includes: Setting the status of the original physical disks that have been split or combined to the busy status; Setting the status of the virtual physical disks to the idle status.

8. A disk array configuration device, characterized in that, It includes: A hard disk reconstruction policy acquisition module, configured to acquire a hard disk reconstruction policy; wherein, the hard disk reconstruction policy is a policy for splitting or combining the original physical disks to maximize the effective capacity; A reconstruction module, configured to process the idle original physical disks based on the hard disk reconstruction policy to obtain virtual physical disks; wherein, the virtual physical disks are physical disks that have been split or combined; 9. A disk array redundancy group building device, characterized in that An array formation module, configured to form a target disk redundant array based on the virtual physical disks and the original physical disks that have not undergone reconstruction. It includes: A memory, configured to store a computer program; 10. A readable storage medium, characterized in that, A processor, configured to execute the computer program to implement the steps of the disk redundant array formation method according to any one of claims 1 to 7. A computer program is stored on the readable storage medium, and when the computer program is executed by a processor, the steps of the disk redundant array formation method according to any one of claims 1 to 7 are implemented.