Device and Method for Automatic Configuration of Storage Space

By using mutually orthogonal Latin square arrays to arrange data, the problem of slow reconstruction of failed storage units in the memory cell array is solved, and faster data recovery and higher storage system performance are achieved.

CN111694761BActive Publication Date: 2025-07-08SUPER MICRO COMPUTER INC(US)
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201910863868.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-03-15
Filing Date
2019-09-12
Publication Date
2025-07-08
Estimated Expiration
2039-09-12

AI Technical Summary

Technical Problem

When the prior art reconstructs a failed storage unit in a memory cell array, the operation speed is slow and the storage unit is in a critical state for the duration, affecting the data recovery speed and the performance of the storage system.

Method used

The data is arranged based on mutually orthogonal Latin square matrix, and by allocating the data to the storage unit group, the reconstruction setting process of the failed storage unit is shared by the storage units of other groups, and the reconstruction setting speed is increased by using the mutually orthogonal Latin square matrix set.

Benefits of technology

Improves the speed of data reconstruction in the memory cell array, reduces the workload of the memory cell, extends the life of the memory cell, and improves the overall performance of the memory system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN111694761B_ABST
    Figure CN111694761B_ABST
Patent Text Reader

Abstract

The present invention discloses a device, which includes: a control unit; a memory having computer program code; and N groups of storage units electrically connected to the control unit. Each of the N groups of storage units has N storage units, and each of the N storage units has N storage areas, where N is a positive integer. The memory and the computer program code are configured to cause the device, together with the control unit, to perform: storing a first data segment in the i-th storage area of the first storage unit in the k-th group of storage units; storing a fourth data segment in the i-th storage area of the first storage unit in the (k + 1)-th group of storage units; storing a fifth data segment in the i-th storage area of the second storage unit in the (k + 1)-th group of storage units; and storing a sixth data segment in the i-th storage area of the third storage unit in the (k + 1)-th group of storage units. Wherein the first data segment is associated with the fourth data segment, the first data segment is independent of the fifth data segment, and the first data segment is independent of the sixth data segment.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application generally relates to storage space management, and more particularly, to an apparatus and method for automatically configuring a storage space. Background Art

[0002] Some solutions have been developed to provide secure data storage. However, with the development of technology, the security of data or files (or backups of data) has become a critical issue. Summary of the Invention

[0003] A new data allocation mechanism is proposed. Storage units in an array are classified into several groups. Data to be stored in the storage units is arranged in a specific manner such that the reconstruction work of a failed storage unit in one group can be shared by storage units in other groups. Specifically, data to be stored in the storage units is arranged according to a Latin square that is orthogonal to each other, such that specific data on a storage unit in one group can be reconstructed using data stored in only one storage unit from each of the other groups. This can increase the speed of reconstructing data stored in a failed storage unit. Additionally, a new data allocation mechanism is proposed to improve the capacity efficiency of an array of storage units based on an extension of mutually orthogonal Latin squares.

[0004] According to some embodiments of the present invention, an apparatus is disclosed. The apparatus includes: a control unit; a memory having computer program code; and N groups of storage units electrically connected to the control unit. Each of the N groups of storage units has N storage units, and each of the N storage units has N storage areas, where N is a positive integer. The memory and the computer program code are configured to cause the apparatus to perform, together with the control unit: (1) storing a first data segment in the i-th storage area of the first storage unit in the k-th group of storage units; (2) storing a second data segment in the i-th storage area of the second storage unit in the k-th group of storage units; (3) storing a third data segment in the i-th storage area of the third storage unit in the k-th group of storage units; (4) storing a fourth data segment in the i-th storage area of the first storage unit in the (k + 1)-th group of storage units; (5) storing a fifth data segment in the i-th storage area of the second storage unit in the (k + 1)-th group of storage units; and (6) storing a sixth data segment in the i-th storage area of the third storage unit in the (k + 1)-th group of storage units. Where i is a positive integer less than or equal to N, and k is a positive integer less than or equal to N. Where the first data segment is associated with the fourth data segment, the first data segment is independent of the fifth data segment, and the first data segment is independent of the sixth data segment.

[0005] According to some embodiments of the present invention, a device is disclosed. The device includes: a control unit; a memory coupled to the control unit and including computer program code; and S groups of storage units electrically connected to the control unit. Each of the first to (S - 1) groups of storage units has N storage units, and the S-th group of storage units has M storage units. Each storage unit in the S groups of storage units has N storage areas, where N, S, and M are positive integers. S and M are less than N. The memory and the computer program code are configured to cause the device, together with the control unit, to perform: (1) storing a first data segment in the i-th storage area of the first storage unit in the k-th group of storage units; (2) storing a second data segment in the i-th storage area of the second storage unit in the k-th group of storage units; (3) storing a third data segment in the i-th storage area of the third storage unit in the k-th group of storage units; (4) storing a fourth data segment in the i-th storage area of the first storage unit in the S-th group of storage units; (5) storing a fifth data segment in the i-th storage area of the second storage unit in the S-th group of storage units; and (6) storing a sixth data segment in the i-th storage area of the third storage unit in the S-th group of storage units. Where i is a positive integer less than or equal to N, and k is a positive integer less than or equal to N. Where the first data segment is associated with the fourth data segment, the first data segment is independent of the fifth data segment, and the first data segment is independent of the sixth data segment.

[0006] According to some embodiments of the present invention, a method for storing data in a storage system is disclosed. The storage system has N groups of storage units, and each of the N groups of storage units has N storage units. Each storage unit in the N groups of storage units has N storage areas, where N is a positive integer. The method includes: (1) storing a first data segment in the i-th storage area of the first storage unit in the k-th group of storage units; (2) storing a second data segment in the i-th storage area of the second storage unit in the k-th group of storage units; (3) storing a third data segment in the i-th storage area of the third storage unit in the k-th group of storage units; (4) storing a fourth data segment in the i-th storage area of the first storage unit in the (k + 1)-th group of storage units; (5) storing a fifth data segment in the i-th storage area of the second storage unit in the (k + 1)-th group of storage units; and (6) storing a sixth data segment in the i-th storage area of the third storage unit in the (k + 1)-th group of storage units. Where i is a positive integer less than or equal to N, and k is a positive integer less than or equal to N. Where the first data segment is associated with the fourth data segment, the first data segment is independent of the fifth data segment, and the first data segment is independent of the sixth data segment. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Aspects of the present invention are readily understood from the following detailed description when read in conjunction with the accompanying drawings. It should be noted that the various features may not be drawn to scale, and the dimensions of the various features may be arbitrarily increased or decreased for the clarity of the discussion.

[0008] Figure 1 Schematic diagram for illustrating an apparatus according to some embodiments of the present application.

[0009] Figure 2 Schematic diagram for illustrating the storage space configuration according to some comparative embodiments of the present application.

[0010] Figure 3 Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0011] Figure 4 Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0012] Figure 4A Schematic diagram for illustrating a data allocation algorithm for a storage unit array according to some embodiments of the present invention.

[0013] Figure 5A Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0014] Figure 5BSchematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0015] Figure 5C Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0016] Figure 5D Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0017] Figure 5E Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0018] Figure 5F Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0019] Figure 5G Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0020] Figure 5H Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0021] Figure 5I Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0022] Figure 5J Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0023] Figure 6 Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0024] Figure 6A Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0025] Figure 7 Schematic diagram for illustrating the data allocation combination according to some embodiments of the present application.

[0026] Figure 7A Schematic diagram for illustrating the data allocation combination according to some embodiments of the present application.

[0027] Figure 7B Schematic diagram for illustrating the method for deriving error correction data according to some embodiments of the present invention.

[0028] Figure 8A Schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0029] Figure 8BA schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0030] Figure 8C A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. Detailed implementation manners

[0031] Embodiments of the present invention and their uses are discussed in detail below. However, it should be understood that the embodiments illustrate many applicable concepts that can be implemented in a wide variety of specific scenarios. It should be understood that the following disclosure provides many different embodiments or examples for implementing different features of various embodiments. Specific examples of components and arrangements are described below for the purpose of discussion. Of course, these components and arrangements are only examples and are not intended to be restrictive.

[0032] Unless otherwise specified, spatial descriptions including terms such as "above", "below", "on", "left", "right", "down", "top", "bottom", "vertical", "horizontal", "side", "higher", "lower", "upper", "above", "below", etc. are used herein relative to the orientation shown in the corresponding figures. It should be understood that the spatial descriptions used herein are for the purpose of illustration, and the actual implementation of the structures described herein can be spatially arranged in any orientation or manner, provided that the advantages of the embodiments of the present invention are not deviated by such an arrangement.

[0033] The embodiments or examples illustrated in the figures are disclosed below using specific language. However, it will be understood that the embodiments and examples are not intended to be restrictive. As would be commonly thought by those of ordinary skill in the relevant art, any changes and modifications to the disclosed embodiments, and any other applications of the principles disclosed herein, fall within the scope of the present invention.

[0034] In addition, the present invention may repeat reference numerals and / or letters in various examples. This repetition is for the purpose of simplicity and clarity, and does not itself specify the relationship between the various embodiments and / or configurations discussed herein.

[0035] Arranging a number of storage units in an array to provide larger storage space and / or higher performance is a technology that has been widely used in the industry. For example, RAID (Redundant Array of Independent Disks) was developed in the 1980s. The initial goal of RAID technology was to provide larger storage space and high performance by combining a number of inexpensive and low-performance storage units (e.g., hard disk drives) into an array. Since this array can contain a large number of storage units, data protection and data integrity have become important considerations for the array. Various solutions have been developed to provide secure data storage.

[0036] A common method for providing data protection to a storage cell array is to include redundant data patterns (e.g., error correction data patterns, parity data patterns) within the array. Different techniques (e.g., RAID level 5 and RAID level 6) have been developed to provide data integrity within a storage cell array. Once any of the storage cells within the array fails, or the data stored in any of them is lost, the lost data can be reconstructed or rebuilt based on the redundant data.

[0037] When rebuilding a storage cell of the array, the input / output terminals (I / O) of the array will be heavily occupied and the overall operation of the array becomes slower. Additionally, the array is in a critical state during the duration of rebuilding a storage cell of the storage cell array because the array cannot tolerate more storage cell failures during this duration. With the development of technology, the speed of data recovery has become an important consideration because as the capacity of the storage cells increases, the time required to rebuild all the data stored in the failed storage cell also increases. A new mechanism for increasing the speed of rebuilding a storage cell array needs to be developed.

[0038] Figure 1 FIG. is a schematic diagram illustrating a device according to some embodiments of the present application.

[0039] Reference Figure 1 , device 1 includes a control unit 2, an acceleration unit 4, a memory unit 10, a transceiver unit 12, and a storage system 16. Device 1 may include a server, a data center, a data storage device, etc.

[0040] Several external devices or client hosts 14 are electrically connected to device 1 via a wired or wireless communication interface ( Figure 1 not shown in the figure). A storage system 17 including a plurality of storage cells is electrically connected to device 1 via a wired or wireless communication interface.

[0041] The memory unit 10 includes a cache memory 6. The memory unit 10 includes a set of lookup tables 8. The memory 10 may include computer program code ( Figure 1 not shown in the figure) stored therein. The memory unit 10 and the computer program code are configured to cause device 1 to perform several operations to be described in the following paragraphs together with the control unit 12.

[0042] The control unit 2 may include, but is not limited to, for example, a central processing unit (CPU), a microprocessor, an application specific instruction set processor (ASIP), a machine control unit (MCU), a graphics processing unit (GPU), a physics processing unit (PPU), a digital signal processor (DSP), an image processor, a coprocessor, a memory controller, a floating point unit, a network processor, a multi-core processor, a front-end processor, and the like. The control unit 2 is electrically connected to the memory unit 10. The control unit 2 is electrically connected to the acceleration unit 4. The control unit 2 is electrically connected to the transceiver unit 12. The control unit 2 is electrically connected to the storage system 16.

[0043] The acceleration unit 4 may include, but is not limited to, for example, a microprocessor, a coprocessor, an application specific instruction set processor (ASIP), a physics processing unit (PPU), a digital signal processor (DSP), a co-processing element, or the like. The acceleration unit 4 is capable of complementing the functions of the control unit 2. Operations performed by the acceleration unit 4 may include, but are not limited to, for example, floating point arithmetic, graphics, signal processing, string processing, cryptography, or interfacing with peripheral device I / O. The execution of the device 1 may be accelerated by the acceleration unit 4, which shares some tasks with the control unit 2.

[0044] The memory unit 10 may include, but is not limited to, random access memory (RAM), such as static RAM (SRAM) or dynamic RAM (DRAM). In some embodiments, the memory unit 10 may include read only memory (ROM). The memory unit 10 includes a cache memory 6 for storing data that has been recently accessed so that future requests for the data can be served more quickly. The data stored in the cache memory 6 may include the earlier computed results of the control unit 2 or the acceleration unit 4. The data stored in the cache memory 6 may include a copy of the data in one of the storage units in the storage system 16.

[0045] The memory unit 10 includes a set of lookup tables 8. The lookup tables 8 may include the addresses of the storage units in the storage system 16 to be assigned to the data. The lookup tables 8 may include data attributes. The lookup tables 8 may include classifications associated with the data attributes. The lookup tables 8 may include the addresses of the storage units in the storage system 16 to be assigned to error correction data. The lookup tables 8 may include the addresses of the storage units in the storage system 16 to be assigned to reconstructed data. It is also contemplated that the lookup tables 8 may be integrated into a single lookup table.

[0046] The device 1 may access the storage system 16 based on the lookup tables 8. Based on the lookup tables 8, the device 1 may reconstruct or rebuild the data in the storage system 16. Based on the lookup tables 8, the device 1 may store the reconstructed or rebuilt data in a spare area or space in the storage system 16.

[0047] The control unit 2 can be configured to create or generate a lookup table 8 and store it in the memory unit 10. The control unit 2 is configured to update the lookup table 8 for new or different data arrangement, deployment, or allocation schemes in the storage system 16. The control unit 2 is configured to create or generate a lookup table 8 and store it in the storage system 16. The control unit 2 is configured to read the lookup table 8 from the storage system 16 and write it into the memory unit 10.

[0048] The transceiver unit 12 is involved in the communication between the device 1 and the external device 14. The transceiver unit 12 is involved in the communication between the device 1 and the storage system 17. The transceiver unit 12 can include hardware components, software implementations compatible with interfaces or communication protocols, including but not limited to (for example) Ethernet, Fibre Channel over Ethernet (FCoE), Peripheral Component Interconnect Express (PCIe), Advanced Host Controller Interface (AHCI), Bluetooth, WiFi, and cellular data services (such as GSM, CDMA, GPRS, WCDMA, EDGE, CDMA2000, or LTE), or a combination of the above. There is an electrical connection between the control unit 2 and the transceiver unit 12. The electrical connection between the control unit 2 and the transceiver unit 12 can include but is not limited to high-speed I / O connections.

[0049] The storage system 16 includes a plurality of storage units. The storage units of the storage system 16 can include but are not limited to (for example) hard disk drives (HDDs), solid-state drives (SSDs), embedded multimedia cards (eMMCs), Secure Digital (SD) memory cards, or other types of storage devices. The storage units of the storage system 16 can be arranged in an array and electrically connected to the control unit 2. In some embodiments, the lookup table 8 can be stored in one of the storage units 16, and the control unit 2 can determine when to read the lookup table and place it in the memory unit 10.

[0050] The storage system 17 is similar to the storage system 16. The storage system 17 can act as a local data backup for the storage system 16. The storage system 17 can act as a cloud backup or an online backup for the storage system 16.

[0051] The client host 14 can include electronic devices, such as but not limited to personal computers, laptops, servers, mobile phones, tablet computers, Internet of Things (IoT) devices, and so on.

[0052] Figure 2 A schematic diagram for illustrating the storage space configuration according to some comparative embodiments of the present application.

[0053] For simplicity, only the storage units 16-1, 16-2, 16-3, 16-4, 16-5, 16-6, 16-7, and 16-8 in the storage system 16 of the device 1 are illustrated.

[0054] Reference Figure 2 , the memory cells 16-1 to 16-8 are classified as an array 20. The memory cells 16-1, 16-2, 16-3, and 16-4 are further grouped into a sub-array 20-1. The memory cells 16-5, 16-6, 16-7, and 16-8 are further grouped into a sub-array 20-2.

[0055] Each of the memory cells 16-1 to 16-8 includes a plurality of storage areas. In Figure 2 the embodiment shown, each of the memory cells 16-1 to 16-8 includes four consecutive storage areas (e.g., 16-8A, 16-8B, 16-8C, and 16-8D). In some embodiments, the consecutive storage areas (e.g., 16-8A, 16-8B, 16-8C, and 16-8D) are classified as different partitions to store data.

[0056] Although Figure 2 not labeled in, the memory cell 16-1 includes consecutive storage areas 16-1A, 16-1B, 16-1C, and 16-1D. The memory cell 16-2 includes consecutive storage areas 16-2A, 16-2B, 16-2C, and 16-2D. The memory cell 16-3 includes consecutive storage areas 16-3A, 16-3B, 16-3C, and 16-3D. The memory cell 16-4 includes consecutive storage areas 16-4A, 16-4B, 16-4C, and 16-4D. The memory cell 16-5 includes consecutive storage areas 16-5A, 16-5B, 16-5C, and 16-5D. The memory cell 16-6 includes consecutive storage areas 16-6A, 16-6B, 16-6C, and 16-6D. The memory cell 16-7 includes consecutive storage areas 16-7A, 16-7B, 16-7C, and 16-7D. The memory cell 16-8 includes consecutive storage areas 16-8A, 16-8B, 16-8C, and 16-8D. It is also contemplated that more or fewer storage areas may be allocated to each of the memory cells.

[0057] The data to be stored in the consecutive storage areas of the memory cell may be referred to as a data segment in the following paragraphs. The data to be stored in the consecutive storage areas of the memory cell may be referred to as a data pattern in the following paragraphs.

[0058] In some embodiments, the consecutive storage area 16-8A may include a series of physically or logically consecutive addresses. The consecutive storage area 16-8B may include a series of physically or logically consecutive addresses. The consecutive storage area 16-8C may include a series of physically or logically consecutive addresses. The consecutive storage area 16-8D may include a series of physically or logically consecutive addresses.

[0059] For example, the continuous storage area 16-8A may include a series of logically continuous addresses [WW0001], [WW0002], [WW0003], [WW0004], [WW0005] in the storage unit 16-8. The continuous storage area 16-8B may include a series of logically continuous addresses [XX0001], [XX0002], [XX0003], [XX0004], [XX0005] in the storage unit 16-8. The continuous storage area 16-8C may include a series of logically continuous addresses [YY0001], [YY0002], [YY0003], [YY0004], [YY0005] in the storage unit 16-8. The continuous storage area 16-8D may include a series of logically continuous addresses [ZZ0001], [ZZ0002], [ZZ0003], [ZZ0004], [ZZ0005] in the storage unit 16-8.

[0060] In some embodiments, the continuous storage area 16-8B is adjacent to the continuous storage area 16-8A. The continuous storage area 16-8C is adjacent to the continuous storage area 16-8B. The continuous storage area 16-8D is adjacent to the continuous storage area 16-8C. In some embodiments, the continuous storage areas 16-8A, 16-8B, 16-8C, and 16-8D may be adjacent to each other. In some embodiments, the continuous storage areas 16-8A, 16-8B, 16-8C, and 16-8D are not adjacent areas to each other.

[0061] In some embodiments, the continuous storage area 16-8A may include a series of physically continuous sectors 1, 2, 3, 4, 5 on track 1 in the storage unit 16-8. The continuous storage area 16-8B may include a series of physically continuous sectors 6, 7, 8, 9, 10 on track 1 in the storage unit 16-8. The continuous storage area 16-1C may include a series of physically continuous sectors 11, 12, 13, 14, 15 on track 1 in the storage unit 16-8. The continuous storage area 16-1D may include a series of physically continuous sectors 16, 17, 18, 19, 20 on track 1 in the storage unit 16-8.

[0062] In some embodiments, the continuous storage areas 16-8A and 16-8B are configured to have an end-to-end arrangement. The continuous storage areas 16-8B and 16-8C are configured to have an end-to-end arrangement. The continuous storage areas 16-8C and 16-8D are configured to have an end-to-end arrangement. It is also contemplated that any two of the continuous storage areas 16-8A, 16-8B, 16-8C, and 16-8D may be exchanged.

[0063] Each of the memory cells 16-1 to 16-7 may have the same or a similar memory configuration as the memory cell 16-8. It is also contemplated that each of the memory cells 16-1 to 16-8 may be configured to have more or fewer contiguous memory regions.

[0064] The control unit 2 may store data in the memory cells 16-1 to 16-8 according to a look-up table 8 as shown in Figure 1 . The data to be stored in the memory cells 16-1 to 16-8 is classified and then stored in the memory cells 16-1 to 16-8. The data to be stored in the memory cells 16-1 to 16-8 is divided into segments and then stored in the memory cells 16-1 to 16-8.

[0065] In Figure 2 the embodiment shown, individual data integrity protection is applied to the sub-arrays 20-1 and 20-2. Referring to Figure 2 , the data to be stored in the memory cells 16-1, 16-2, 16-3 and 16-4 is classified as a data protection group G1 (which includes subgroups G1 A , G1 B , G1 C and G1 D ), and the data to be stored in the memory cells 16-5, 16-6, 16-7 and 16-8 is classified as a data protection group G2 (which includes subgroups G2 A , G2 B , G2 C and G2 D ).

[0066] Data integrity protection in the sub-arrays 20-1 and 20-2 is implemented by groups. Data protection is provided for data classified into the same group. For example, if the memory cell 16-1 fails or is damaged, the data stored therein can be reconstructed or rebuilt according to the data stored in the memory cells 16-2, 16-3 and 16-4. Similarly, if the memory cell 16-5 fails or is damaged, the data stored therein can be reconstructed or rebuilt according to the data stored in the memory cells 16-6, 16-7 and 16-8.

[0067] Data integrity protection in the sub-arrays 20-1 and 20-2 is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, data protection is provided for data classified into subgroup G1 A . Data protection is provided for data classified into subgroup G1 B . Data protection is provided for data classified into subgroup G1 C . Data protection is provided for data classified into subgroup G1 D .

[0068] Similarly, data protection is provided for data classified into subgroup G2 A Data protection is provided for data classified into subgroup G2 B Data protection is provided for data classified into subgroup G2 C Data protection is provided for data classified into subgroup G2 D Data protection is provided for data classified into subgroup G2

[0069] Taking sub - array 20 - 1 as an example, the dashed rectangle 24 indicates a set of data stored across storage units 16 - 1 to 16 - 4 and classified into subgroup G1 A Data protection is provided for the data within subgroup G1 A In some embodiments, one of the four data classified into subgroup G1 A contains error correction data associated with subgroup G1 A

[0070] In some embodiments, the error correction data may include even - parity data associated with the data classified into subgroup G1 A In some embodiments, the error correction data may include odd - parity data associated with the data classified into subgroup G1 A It is also conceivable that subgroup G1 A may include any other error correction data employed by other erasure code techniques

[0071] Assume that the data stored in storage area 16 - 2A of storage unit 16 - 2 contains error correction data associated with the data classified into subgroup G1 A After the data within subgroup G1 A e.g., the data stored in storage area 16 - 1A of storage unit 16 - 1 fails or is damaged, the data stored therein can be reconstructed or rebuilt based on the error correction data and the remaining data of subgroup G1 A e.g., the data stored in storage area 16 - 3A of storage unit 16 - 3 and the data stored in storage area 16 - 4A of storage unit 16 - 4

[0072] Taking sub - array 20 - 2 as an example, the dashed rectangle 26 indicates a set of data stored across storage units 16 - 5 to 16 - 8 and classified into subgroup G2 D Data protection is provided for the data within subgroup G2 D In some embodiments, one of the four data classified into subgroup G2 D contains error correction data associated with subgroup G2 D

[0073] ​​In some embodiments, the error correction data may include parity data associated with data classified as subgroup G2 D In some embodiments, the error correction data may include odd parity data associated with data classified as subgroup G2 D It is also contemplated that subgroup G2 D may include any other error correction data employed by other error-correcting code techniques.

[0074] Assume that the data stored in storage area 16-6D of storage unit 16-6 includes error correction data associated with data classified as subgroup G2 D After the data classified within subgroup G2 D e.g., the data stored in storage area 16-5D of storage unit 16-5) fails or is damaged, the data stored therein can be reconstructed or rebuilt based on the error correction data and the remaining data of subgroup G2 D e.g., the data stored in storage area 16-7A of storage unit 16-7 and the data stored in storage area 16-8A of storage unit 16-8).

[0075] In some embodiments, before storing a file received from an external device (e.g., Figure 1 one of the client hosts 14 shown in) in subarray 20-1, it is divided into segments. In some embodiments, the data stored in the storage units of subarray 20-2 is a replicated version of the data stored in the storage units of subarray 20-1.

[0076] In some embodiments, before storing a file received from an external device (e.g., Figure 1 one of the client hosts 14 shown in) in subarrays 20-1 and 20-2, it is divided into segments.

[0077] However, Figure 2 the data distribution mechanism shown in has its limitations. The process of recovering data from the failure of a storage unit in a storage unit array is referred to as data reconstruction. Generally speaking, the data reconstruction process includes: the step of reading all data from surviving storage units; the step of reconstructing or rebuilding the data in the failed storage unit based on the data stored in the surviving storage units; and the step of writing the reconstructed data back to the failed storage unit or another spare storage unit.

[0078] Using Figure 2According to the data allocation mechanism shown in FIG. 2 , if one storage unit of the sub-array 20-1 fails, all other surviving storage units within the sub-array 20-1 will be occupied by excessive read / write operations during the reconstruction process of the failed storage unit, while all storage units within the sub-array 20-2 are idle. For example, if the storage unit 16-1 of the sub-array 20-1 fails, all data stored in the surviving storage units 16-2, 16-3, and 16-4 need to be read out during the reconstruction process. The heavy workload of each of the storage units 16-2, 16-3, and 16-4 adversely affects the performance of the array 20, while all storage units 16-5 to 16-8 of the sub-array 20-2 are idle during the reconstruction process.

[0079] Figure 3 A schematic diagram illustrating storage space configuration according to some embodiments of the present application.

[0080] For simplicity, only storage units 16-1, 16-2, 16-3, 16-4, 16-5, 16-6, 16-7, and 16-8 in the storage system 16 of the device 1 are illustrated.

[0081] The control unit 2 can be configured as follows: Figure 1 The lookup table 8 shown in FIG. 8 stores data in the storage units 16-1 to 16-8. The data to be stored in the storage units 16-1 to 16-8 are classified and then stored in the storage units 16-1 to 16-8.

[0082] Figure 3 The data integrity protection in the array 20 is based on Figure 2 The method is implemented in different ways. Figure 3 , the data to be stored in the storage units 16-1 to 16-8 are classified into two data protection groups G1 and G2. The group data protection group G1 is further classified into sub-groups G1 A 、G1 B 、G1 C and G1 D The group data protection group G2 is further divided into subgroups G2 A , G2 B , G2 C and G2 D .

[0083] Data integrity protection in the array 20 is implemented by group. Data protection is provided to data classified into the same group. For example, data protection is provided to data classified into group G1. Data protection is provided to data classified into group G2.

[0084] The data integrity protection in the array 20 is implemented by subgroups. Data protection is provided to data classified into the same subgroup. For example,A The data provides data protection. For the data classified into subgroup G1 B The data provides data protection. For the data classified into subgroup G1 C The data provides data protection. For the data classified into subgroup G1 D The data provides data protection.

[0085] Similarly, for the data classified into subgroup G2 A The data provides data protection. For the data classified into subgroup G2 B The data provides data protection. For the data classified into subgroup G2 C The data provides data protection. For the data classified into subgroup G2 D The data provides data protection.

[0086] In some embodiments, one of the four data classified into subgroup G1 A contains error correction data associated with subgroup G1 A In some embodiments, one of the four data classified into subgroup G1 B contains error correction data associated with subgroup G1 B In some embodiments, one of the four data classified into subgroup G1 C contains error correction data associated with subgroup G1 C In some embodiments, one of the four data classified into subgroup G1 D contains error correction data associated with subgroup G1 D associated.

[0087] In some embodiments, one of the four data classified into subgroup G2 A contains error correction data associated with subgroup G2 A In some embodiments, one of the four data classified into subgroup G2 B contains error correction data associated with subgroup G2 B In some embodiments, one of the four data classified into subgroup G2 C contains error correction data associated with subgroup G2 C In some embodiments, one of the four data classified into subgroup G2 D contains error correction data associated with subgroup G2 D associated.

[0088] The data classified into different subgroups are not associated with each other. The data classified into different subgroups are independent of each other.

[0089] If a subgroup (e.g., subgroup G1 A) If one of the data in is damaged or fails, the damaged data can be reconstructed or rebuilt based on the other data in the same subgroup. For example, if storage unit 16-1 fails or is damaged, the data stored in the contiguous storage area 16-1A of storage unit 16-1 can be reconstructed or rebuilt based on the other data in subgroup G1 A (e.g., the data stored in the contiguous storage areas 16-3A, 16-5A, and 16-7A). The data stored in the contiguous storage area 16-1B of storage unit 16-1 can be reconstructed or rebuilt based on the other data in subgroup G1 B (e.g., the data stored in the contiguous storage areas 16-3B, 16-6B, and 16-8B). The data stored in the contiguous storage area 16-1C of storage unit 16-1 can be reconstructed or rebuilt based on the other data in subgroup G1 C (e.g., the data stored in the contiguous storage areas 16-4C, 16-5C, and 16-8C). The data stored in the contiguous storage area 16-1D of storage unit 16-1 can be reconstructed or rebuilt based on the other data in subgroup G1 D (e.g., the data stored in the contiguous storage areas 16-4D, 16-6D, and 16-7D).

[0090] Reference Figure 3 , if storage unit 16-1 fails or is damaged, the workload of the data reconstruction process is shared by six storage units (i.e., storage units 16-3 to 16-8). For each storage unit involved in the data reconstruction process, only half of the storage area needs to be accessed. Taking storage unit 16-3 as an example, only storage areas 16-3A and 16-3B of storage unit 16-3 need to be accessed during the data reconstruction process of storage unit 16-1. Similarly, if storage unit 16-4 is observed, only storage areas 16-4C and 16-4D of storage unit 16-4 need to be accessed during the data reconstruction process of storage unit 16-1.

[0091] In Figure 3 the storage space configuration shown in , the workload for reconstructing a failed storage unit is shared by multiple storage units in the array. Sharing the workload of the data reconstruction process by multiple storage units increases the lifespan of each of the storage units within array 20. Additionally, following the storage space configuration shown in Figure 3 the speed of the data reconstruction process can be compared to Figure 2The speed of the data reconstruction process is increased many times because more storage units participate in the data reconstruction process. Specifically, each of the storage units 16-3 to 16-8 only needs to provide 50% of its data during the data reconstruction process, and it can be expected that the time spent reading data from the storage units 16-3 to 16-8 will be reduced by 50%. The speed of the data reconstruction process is then doubled.

[0092] Figure 4 A schematic diagram for illustrating storage space configuration according to some embodiments of the present application. For simplicity, only storage units 16-1, 16-2, 16-3, 16-4, 16-5, 16-6, 16-7, 16-8 and 16-9 in the storage system 16 of the device 1 are illustrated.

[0093] refer to Figure 4 , memory cells 16-1, 16-2, 16-3, 16-4, 16-5, 16-6, 16-7, 16-8, and 16-9 are classified into array 30. Memory cells 16-1, 16-2, and 16-3 are further classified into sub-array 30-1. Memory cells 16-4, 16-5, and 16-6 are further classified into sub-array 30-2. Memory cells 16-7, 16-8, and 16-9 are further classified into sub-array 30-3.

[0094] although Figure 4 Although not marked, storage unit 16-1 includes continuous storage areas 16-1A, 16-1B, and 16-1C. Storage unit 16-2 includes continuous storage areas 16-2A, 16-2B, and 16-2C. Storage unit 16-3 includes continuous storage areas 16-3A, 16-3B, and 16-3C. Storage unit 16-4 includes continuous storage areas 16-4A, 16-4B, and 16-4C. Storage unit 16-5 includes continuous storage areas 16-5A, 16-5B, and 16-5C. Storage unit 16-6 includes continuous storage areas 16-6A, 16-6B, and 16-6C. Storage unit 16-7 includes continuous storage areas 16-7A, 16-7B, and 16-7C. Storage unit 16-8 includes continuous storage areas 16-8A, 16-8B, and 16-8C. The storage unit 16-9 includes contiguous storage areas 16-9A, 16-9B, and 16-9C. It is also contemplated that more or fewer storage areas may be allocated in each of the storage units.

[0095] The control unit 2 can be configured as follows: Figure 1 The lookup table 8 shown in FIG. 8 stores data in the storage units 16 - 1 to 16 - 9. The data to be stored in the storage units 16 - 1 to 16 - 9 are classified and then stored in the storage units 16 - 1 to 16 - 9.

[0096] Data integrity protection in the array 30 is implemented by groups. Data protection is provided for data classified into the same group. For example, data protection is provided for data classified into group G1. Data protection is provided for data classified into group G2. Data protection is provided for data classified into group G3.

[0097] Data integrity protection in the array 30 is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, for the data classified into subgroup G1 A data protection is provided. For the data classified into subgroup G1 B data protection is provided. For the data classified into subgroup G1 C data protection is provided.

[0098] Data protection is provided for the data classified into subgroup G2 A data protection is provided. For the data classified into subgroup G2 B data protection is provided. For the data classified into subgroup G2 C data protection is provided.

[0099] Similarly, data protection is provided for the data classified into subgroup G3 A data protection is provided. For the data classified into subgroup G3 B data protection is provided. For the data classified into subgroup G3 C data protection is provided.

[0100] In some embodiments, one of the three data classified into subgroup G1 A contains error correction data associated with subgroup G1 A In some embodiments, one of the three data classified into subgroup G1 B contains error correction data associated with subgroup G1 B In some embodiments, one of the three data classified into subgroup G1 C contains error correction data associated with subgroup G1 C associated.

[0101] In some embodiments, one of the three data classified into subgroup G2 A contains error correction data associated with subgroup G2 A In some embodiments, one of the three data classified into subgroup G2 B contains error correction data associated with subgroup G2 B In some embodiments, one of the three data classified into subgroup G2 C contains error correction data associated with subgroup G2 C associated.

[0102] In some embodiments, for the data classified into subgroup G3A One of the three data contains error correction data associated with subgroup G3 A In some embodiments, one of the three data classified as subgroup G3 B contains error correction data associated with subgroup G3 B In some embodiments, one of the three data classified as subgroup G3 C contains error correction data associated with subgroup G3 C associated.

[0103] If one of the data in a subgroup (e.g., subgroup G1 A ) is damaged or fails, then the damaged data can be reconstructed or rebuilt based on other data in the same subgroup. For example, if storage unit 16-1 fails or is damaged, then the data stored in the contiguous storage area 16-1A of storage unit 16-1 can be reconstructed or rebuilt based on other data in subgroup G1 A (e.g., data stored in contiguous storage areas 16-4A and 16-7A). The data stored in the contiguous storage area 16-1B of storage unit 16-1 can be reconstructed or rebuilt based on other data in subgroup G1 B (e.g., data stored in contiguous storage areas 16-6B and 16-8B). The data stored in the contiguous storage area 16-1C of storage unit 16-1 can be reconstructed or rebuilt based on other data in subgroup G1 C (e.g., data stored in contiguous storage areas 16-5C and 16-9C).

[0104] In Figure 4 In the storage space configuration shown, when reconstructing a storage area of a storage unit within a subarray, only one storage unit from each of the other two subarrays needs to be involved. For example, when reconstructing the data stored in storage area 16-1A of storage unit 16-1, it is necessary to access storage unit 16-4 of subarray 30-2 and storage unit 16-7 of subarray 30-3, without involving the remaining storage units of subarrays 30-2 and 30-3. Similarly, when reconstructing the data stored in storage area 16-2A of storage unit 16-2, it is necessary to access storage unit 16-5 of subarray 30-2 and storage unit 16-8 of subarray 30-3, without involving the remaining storage units of subarrays 30-2 and 30-3.

[0105] In Figure 4In the storage space configuration shown, the workload for reconstructing failed storage units within a sub-array is shared by storage units belonging to other sub-arrays. Sharing the workload of the data reconstruction process among all storage units increases the lifespan of each of the storage units within array 30. Additionally, following the data allocation mechanism shown in Figure 4 the speed of the data reconstruction process can be increased multiple times compared to Figure 2 because more storage units participate in the data reconstruction process in parallel.

[0106] Specifically, each of the storage units involved in the data reconstruction process only needs to provide 33% of its data. It can be expected that the time taken to read data from the involved storage units is reduced by 67%. The speed of the data reconstruction process then increases threefold.

[0107] Figure 4A A schematic diagram illustrating a data allocation algorithm for a storage unit array according to some embodiments of the present invention. To balance the workload of the data reconstruction process within the storage unit array, the data to be stored in the array is arranged in a specific manner.

[0108] Figure 4A Three matrices 35A, 35B, and 35C are shown. Each of the three matrices is a 3-order matrix (i.e., the dimensions of matrices 35A, 35B, and 35C are 3×3). Matrix 35A is referred to as the basic matrix. Matrices 35B and 35C are a set of 3×3 mutually orthogonal Latin squares. A Latin square of order n is an n×n matrix filled with n different entries, where each of the n different entries appears exactly once in each column and row of the matrix. The meanings of "orthogonal" and "set of orthogonal Latin squares" will be explained in the following paragraphs.

[0109] As Figure 4A shown, matrix 35A contains three arrays: A1 = {1, 1, 1} T , A2 = {2, 2, 2} T and A3 = {3, 3, 3} T . Matrix 35B contains three arrays: B1 = {1, 2, 3} T , B2 = {2, 3, 1} T and B3 = {3, 1, 2} T . Matrix 35C contains three arrays: C1 = {1, 3, 2} T , C2 = {2, 1, 3} T and C3 = {3, 2, 1} T .

[0110] The arrays A1, A2, and A3 of matrix 35A are orthogonal to each other because the arrays A1, A2, and A3 satisfy the following equations:

[0111]

[0112] That is, the intersection of any two of the arrays A1, A2, and A3 is an empty set. Similarly, the arrays B1, B2, and B3 of matrix 35B are orthogonal to each other, and the arrays C1, C2, and C3 of matrix 35C are orthogonal to each other. The arrays B1, B2, B3, C1, C2, and C3 satisfy the following equations:

[0113]

[0114]

[0115] That is, the intersection of any two of the arrays B1, B2, and B3 is an empty set, and the intersection of any two of the arrays C1, C2, and C3 is an empty set.

[0116] Matrices 35B and 35C are a set of mutually orthogonal Latin squares, so the arrays B1, B2, B3, C1, C2, and C3 satisfy the following equations:

[0117] B i ∩C j ={{an element in {1, 2, 3}}} (4)

[0118] That is, the intersection of an array of matrix 35B and an array of matrix 35C is an element. For example, the intersection of array B1 and array C1 is "1", the intersection of array B1 and array C2 is "3", and the intersection of array B1 and array C3 is "2".

[0119] Matrices 35A, 35B, and 35C also satisfy the following equations:

[0120] A i ∩B j ={{an element in {1, 2, 3}}} (5)

[0121] A i ∩C j ={{an element in {1, 2, 3}}} (6)

[0122] That is, the intersection of an array of matrix 35A and an array of matrix 35B is an element, and the intersection of an array of matrix 35A and an array of matrix 35C is an element. For example, the intersection of array A1 and array B1 is "1", the intersection of array A1 and array B2 is "1", and the intersection of array A1 and array B3 is "1". Similarly, the intersection of array A2 and array C1 is "2", the intersection of array A2 and array C2 is "2", and the intersection of array A2 and array C3 is "2".

[0123] Following the rules described above, only one element of any array in matrix 35A intersects with only one element of any array in matrix 35B and only one element of any array in matrix 35C. One array in matrix 35B intersects with only one element of any array in matrix 35A and only one element of any array in matrix 35C. One array in matrix 35C intersects with only one element of any array in matrix 35A and only one element of any array in matrix 35B.

[0124] Reference Figure 4A , data protection groups G1, G2, and G3 of the array 30 of storage units are arranged based on matrices 35A, 35B, and 35C. Following the allocation mechanism using a base 3×3 matrix and a set of mutually orthogonal Latin squares, the reconstruction speed of failed storage units in array 30 can be increased multiple times. In the case of using a set of 3rd-order mutually orthogonal Latin squares, the reconstruction speed can be increased by 3 times.

[0125] It is also possible to consider using a set of higher-order mutually orthogonal Latin squares. For example, if a set of 4th-order mutually orthogonal Latin squares is used, the reconstruction speed can be increased by 4 times, and if a set of 5th-order mutually orthogonal Latin squares is used, the reconstruction speed can be increased by 5 times.

[0126] Figure 5A A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. According to Figures 5A to 5J A method of deploying a set of Latin squares to more storage units is discussed. Figure 5A Matrices 36A, 36B, and 36C are shown. The number of storage units that can be used according to the present invention is expanded by using the arrays A1, A2, and A3 discussed previously according to Figure 4A .

[0127] Each of matrices 36A, 36B, and 36C contains a number of arrays A1, A2, and A3 arranged based on the principle of a set of mutually orthogonal Latin squares as described according to Figure 4A . The entries of arrays A1, A2, and A3 are filled into matrices 36A, 36B, and 36C. That is, the entries {1,1,1} T , {2,2,2} T and {3,3,3} T are filled into matrices 36A, 36B, and 36C.

[0128] Figure 5B A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. After filling the entries of arrays A1, A2, and A3 into matrices 36A, 36B, and 36C, nine data allocation combinations of storage units can be obtained. That is, the data to be stored in storage units 16-1 to 16-9 can follow as Figure 5BThe combinations shown therein. Matrices 36A, 36B, and 36C may also be referred to as sub-arrays 36A, 36B, and 36C.

[0129] Reference Figure 5B , the data to be stored in storage units 16-1 to 16-9 is classified into three data protection groups (labeled with numbers "1", "2", and "3" in Figure 5B ). The three data protection groups will be further classified into subgroups, which will be described in subsequent paragraphs.

[0130] Figure 5C A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0131] Although Figure 5C not labeled in, storage unit 16-1 contains consecutive storage areas 16-1A, 16-1B, 16-1C, 16-1D, 16-1E, 16-1F, 16-1G, 16-1H, and 16-1I. Storage unit 16-2 contains consecutive storage areas 16-2A, 16-2B, 16-2C, 16-2D, 16-2E, 16-2F, 16-2G, 16-2H, and 16-2I. Storage unit 16-3 contains consecutive storage areas 16-3A, 16-3B, 16-3C, 16-3D, 16-3E, 16-3F, 16-3G, 16-3H, and 16-3I. Storage unit 16-4 contains consecutive storage areas 16-4A, 16-4B, 16-4C, 16-4D, 16-4E, 16-4F, 16-4G, 16-4H, and 16-4I. Storage unit 16-5 contains consecutive storage areas 16-5A, 16-5B, 16-5C, 16-5D, 16-5E, 16-5F, 16-5G, 16-5H, and 16-5I. Storage unit 16-6 contains consecutive storage areas 16-6A, 16-6B, 16-6C, 16-6D, 16-6E, 16-6F, 16-6G, 16-6H, and 16-6I. Storage unit 16-7 contains consecutive storage areas 16-7A, 16-7B, 16-7C, 16-7D, 16-7E, 16-7F, 16-7G, 16-7H, and 16-7I. Storage unit 16-8 contains consecutive storage areas 16-8A, 16-8B, 16-8C, 16-8D, 16-8E, 16-8F, 16-8G, 16-8H, and 16-8I. Storage unit 16-9 contains consecutive storage areas 16-9A, 16-9B, 16-9C, 16-9D, 16-9E, 16-9F, 16-9G, 16-9H, and 16-9I.

[0132] Reference Figure 5C , data protection group "1" is further classified into subgroup 1 A 、1B , 1 C , 1 D , 1 E , 1 F , 1 G , 1 H and 1 I . The data protection group "2" is further classified into subgroup 2 A , 2 B , 2 C , 2 D , 2 E , 2 F , 2 G , 2 H and 2 I . The data protection group "3" is further classified into subgroup 3 A , 3 B , 3 C , 3 D , 3 E , 3 F , 3 G , 3 H and 3 I .

[0133] Data integrity protection in sub - arrays 36A, 36B, and 36C is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, data protection is provided for data classified into subgroup 1 A . Data protection is provided for data classified into subgroup 1 B . Data protection is provided for data classified into subgroup 1 C . Data protection is provided for data classified into subgroup 1 D . Data protection is provided for data classified into subgroup 1 E . Data protection is provided for data classified into subgroup 1 F . Data protection is provided for data classified into subgroup 1 G . Data protection is provided for data classified into subgroup 1 H . Data protection is provided for data classified into subgroup 1 I . Data protection is provided for data classified into subgroup 1

[0134] Similarly, data protection is provided for data classified into subgroup 2 A . Data protection is provided for data classified into subgroup 2 B . Data protection is provided for data classified into subgroup 2 C . Data protection is provided for data classified into subgroup 2 D . Data protection is provided for data classified into subgroup 2 E . Data protection is provided for data classified into subgroup 2 F . Data protection is provided for data classified into subgroup 2 GThe data provides data protection. For the data classified into subgroup 2 H The data provides data protection. For the data classified into subgroup 2 I The data provides data protection.

[0135] In addition, data protection is provided for the data classified into subgroup 3 A The data provides data protection. For the data classified into subgroup 3 B The data provides data protection. For the data classified into subgroup 3 C The data provides data protection. For the data classified into subgroup 3 D The data provides data protection. For the data classified into subgroup 3 E The data provides data protection. For the data classified into subgroup 3 F The data provides data protection. For the data classified into subgroup 3 G The data provides data protection. For the data classified into subgroup 3 H The data provides data protection. For the data classified into subgroup 3 I The data provides data protection.

[0136] In some embodiments, one of the three data classified into subgroup 1 A contains error correction data associated with subgroup 1 A In some embodiments, one of the three data classified into subgroup 1 B contains error correction data associated with subgroup 1 B In some embodiments, one of the three data classified into subgroup 1 C contains error correction data associated with subgroup 1 C In some embodiments, one of the three data classified into subgroup 1 D contains error correction data associated with subgroup 1 D In some embodiments, one of the three data classified into subgroup 1 E contains error correction data associated with subgroup 1 E In some embodiments, one of the three data classified into subgroup 1 F contains error correction data associated with subgroup 1 F In some embodiments, one of the three data classified into subgroup 1 G contains error correction data associated with subgroup 1 G In some embodiments, one of the three data classified into subgroup 1 H contains error correction data associated with subgroup 1 H In some embodiments, one of the three data classified into subgroup 1 I contains error correction data associated with subgroup 1 I associated.

[0137] In some embodiments, one of three data classified as subgroup 2 A contains error correction data associated with subgroup 2 A In some embodiments, one of three data classified as subgroup 2 B contains error correction data associated with subgroup 2 B In some embodiments, one of three data classified as subgroup 2 C contains error correction data associated with subgroup 2 C In some embodiments, one of three data classified as subgroup 2 D contains error correction data associated with subgroup 2 D In some embodiments, one of three data classified as subgroup 2 E contains error correction data associated with subgroup 2 E In some embodiments, one of three data classified as subgroup 2 F contains error correction data associated with subgroup 2 F In some embodiments, one of three data classified as subgroup 2 G contains error correction data associated with subgroup 2 G In some embodiments, one of three data classified as subgroup 2 H contains error correction data associated with subgroup 2 H In some embodiments, one of three data classified as subgroup 2 I contains error correction data associated with subgroup 2 I associated.

[0138] In some embodiments, one of three data classified as subgroup 3 A contains error correction data associated with subgroup 3 A In some embodiments, one of three data classified as subgroup 3 B contains error correction data associated with subgroup 3 B In some embodiments, one of three data classified as subgroup 3 C contains error correction data associated with subgroup 3 C In some embodiments, one of three data classified as subgroup 3 D contains error correction data associated with subgroup 3 D In some embodiments, one of three data classified as subgroup 3 E contains error correction data associated with subgroup 3 E In some embodiments, one of three data classified as subgroup 3 FOne of the three data contains error correction data associated with subgroup 3 F In some embodiments, one of the three data classified as subgroup 3 G contains error correction data associated with subgroup 3 G In some embodiments, one of the three data classified as subgroup 3 H contains error correction data associated with subgroup 3 H In some embodiments, one of the three data classified as subgroup 3 I contains error correction data associated with subgroup 3 I In some embodiments, one of the three data classified as subgroup 3 contains error correction data associated with subgroup 3

[0139] Data classified into different subgroups are not associated with each other. Data classified into different subgroups are independent of each other.

[0140] If one of the data in a subgroup (e.g., subgroup 1 A ) is damaged or fails, then the damaged data can be reconstructed or rebuilt based on other data in the same subgroup.

[0141] For example, if storage unit 16-4 fails or is damaged, then the data stored in the continuous storage area 16-4A of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 1 A (e.g., data stored in the continuous storage areas 16-1A and 16-7A). The data stored in the continuous storage area 16-4B of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 1 B (e.g., data stored in the continuous storage areas 16-1B and 16-7B). The data stored in the continuous storage area 16-4C of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 1 C (e.g., data stored in the continuous storage areas 16-1C and 16-7C).

[0142] The data stored in the continuous storage area 16-4D of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 2 D (e.g., data stored in the continuous storage areas 16-2D and 16-9D). The data stored in the continuous storage area 16-4E of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 2 E (e.g., data stored in the continuous storage areas 16-2E and 16-9E). The data stored in the continuous storage area 16-4F of storage unit 16-4 can be reconstructed or rebuilt based on other data in subgroup 2 F (e.g., data stored in the continuous storage areas 16-2F and 16-9F).

[0143] Based on subgroup 3 G re - establish or reconstruct the data stored in the continuous storage area 16 - 4G of storage unit 16 - 4 according to other data in (e.g., the data stored in continuous storage areas 16 - 3G and 16 - 8G). Based on subgroup 3 H re - establish or reconstruct the data stored in the continuous storage area 16 - 4H of storage unit 16 - 4 according to other data in (e.g., the data stored in continuous storage areas 16 - 3H and 16 - 8H). Based on subgroup 3 I re - establish or reconstruct the data stored in the continuous storage area 16 - 4I of storage unit 16 - 4 according to other data in (e.g., the data stored in continuous storage areas 16 - 3I and 16 - 8I).

[0144] Reference Figure 5C , during the reconstruction process of the storage area (e.g., storage area 16 - 4A) of the storage unit in a sub - array (e.g., sub - array 36B), only two storage units (e.g., storage units 16 - 1 and 16 - 7) from the other two sub - arrays (e.g., sub - arrays 36A and 36C) need to be involved.

[0145] Figure 5D A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. Figure 5D Displays matrices 37A, 37B, and 37C. Using the arrays B1, B2, and B3 previously described according to Figure 4A to expand the number of storage units that can be used according to the present invention.

[0146] Each of matrices 37A, 37B, and 37C contains a number of arrays B1, B2, and B3 arranged based on the principle of a set of mutually orthogonal Latin squares as described according to Figure 4A . The entries of arrays B1, B2, and B3 are filled into matrices 37A, 37B, and 37C. That is, the entries {1, 2, 3} T , {2, 3, 1} T and {3, 1, 2} T are filled into matrices 37A, 37B, and 37C.

[0147] Figure 5E A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. After filling the entries of arrays B1, B2, and B3 into matrices 37A, 37B, and 37C, nine data allocation combinations of storage units can be obtained. That is, the data to be stored in storage units 16 - 10 to 16 - 18 can follow the combinations shown in Figure 5E . Matrices 37A, 37B, and 37C can also be referred to as sub - arrays 37A, 37B, and 37C.

[0148] Reference Figure 5E , the data to be stored in storage units 16-10 to 16-18 is classified into three data protection groups (labeled with the numbers "1", "2", and "3" in Figure 5E ). The three data protection groups will be further classified into subgroups, which will be described in the following paragraphs.

[0149] Figure 5F A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application.

[0150] Although Figure 5F is not labeled, storage unit 16-10 includes consecutive storage areas 16-10A, 16-10B, 16-10C, 16-10D, 16-10E, 16-10F, 16-10G, 16-10H, and 16-10I. Storage unit 16-11 includes consecutive storage areas 16-11A, 16-11B, 16-11C, 16-11D, 16-11E, 16-11F, 16-11G, 16-11H, and 16-11I. Storage unit 16-12 includes consecutive storage areas 16-12A, 16-12B, 16-12C, 16-12D, 16-12E, 16-12F, 16-12G, 16-12H, and 16-12I. Storage unit 16-13 includes consecutive storage areas 16-13A, 16-13B, 16-13C, 16-13D, 16-13E, 16-13F, 16-13G, 16-13H, and 16-13I. Storage unit 16-14 includes consecutive storage areas 16-14A, 16-14B, 16-14C, 16-14D, 16-14E, 16-14F, 16-14G, 16-14H, and 16-14I. Storage unit 16-15 includes consecutive storage areas 16-15A, 16-15B, 16-15C, 16-15D, 16-15E, 16-15F, 16-15G, 16-15H, and 16-15I. Storage unit 16-16 includes consecutive storage areas 16-16A, 16-16B, 16-16C, 16-16D, 16-16E, 16-16F, 16-16G, 16-16H, and 16-16I. Storage unit 16-17 includes consecutive storage areas 16-17A, 16-17B, 16-17C, 16-17D, 16-17E, 16-17F, 16-17G, 16-17H, and 16-17I. Storage unit 16-18 includes consecutive storage areas 16-18A, 16-18B, 16-18C, 16-18D, 16-18E, 16-18F, 16-18G, 16-18H, and 16-18I.

[0151] ReferenceFigure 5F , the data protection group "1" is further classified into subgroup 1 A , 1 B , 1 C , 1 D , 1 E , 1 F , 1 G , 1 H and 1 I . The data protection group "2" is further classified into subgroup 2 A , 2 B , 2 C , 2 D , 2 E , 2 F , 2 G , 2 H and 2 I . The data protection group "3" is further classified into subgroup 3 A , 3 B , 3 C , 3 D , 3 E , 3 F , 3 G , 3 H and 3 I .

[0152] Data integrity protection in sub-arrays 37A, 37B, and 37C is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, data protection is provided for data classified into subgroup 1 A of the data. Data protection is provided for data classified into subgroup 1 B of the data. Data protection is provided for data classified into subgroup 1 C of the data. Data protection is provided for data classified into subgroup 1 D of the data. Data protection is provided for data classified into subgroup 1 E of the data. Data protection is provided for data classified into subgroup 1 F of the data. Data protection is provided for data classified into subgroup 1 G of the data. Data protection is provided for data classified into subgroup 1 H of the data. Data protection is provided for data classified into subgroup 1 I of the data.

[0153] Similarly, data protection is provided for data classified into subgroup 2 A of the data. Data protection is provided for data classified into subgroup 2 B of the data. Data protection is provided for data classified into subgroup 2 C of the data. Data protection is provided for data classified into subgroup 2 D of the data. Data protection is provided for data classified into subgroup 2 EThe data provides data protection. For the data classified as subgroup 2 F The data provides data protection. For the data classified as subgroup 2 G The data provides data protection. For the data classified as subgroup 2 H The data provides data protection. For the data classified as subgroup 2 I The data provides data protection.

[0154] In addition, for the data classified as subgroup 3 A The data provides data protection. For the data classified as subgroup 3 B The data provides data protection. For the data classified as subgroup 3 C The data provides data protection. For the data classified as subgroup 3 D The data provides data protection. For the data classified as subgroup 3 E The data provides data protection. For the data classified as subgroup 3 F The data provides data protection. For the data classified as subgroup 3 G The data provides data protection. For the data classified as subgroup 3 H The data provides data protection. For the data classified as subgroup 3 I The data provides data protection.

[0155] In some embodiments, one of the three data classified as subgroup 1 A contains error correction data associated with subgroup 1 A In some embodiments, one of the three data classified as subgroup 1 B contains error correction data associated with subgroup 1 B In some embodiments, one of the three data classified as subgroup 1 C contains error correction data associated with subgroup 1 C In some embodiments, one of the three data classified as subgroup 1 D contains error correction data associated with subgroup 1 D In some embodiments, one of the three data classified as subgroup 1 E contains error correction data associated with subgroup 1 E In some embodiments, one of the three data classified as subgroup 1 F contains error correction data associated with subgroup 1 F In some embodiments, one of the three data classified as subgroup 1 G contains error correction data associated with subgroup 1 G In some embodiments, one of the three data classified as subgroup 1 H contains error correction data associated with subgroup 1 H In some embodiments, for the data classified as subgroup 1I One of the three data contains error correction data associated with subgroup 1 I

[0156] In some embodiments, one of the three data classified as subgroup 2 A contains error correction data associated with subgroup 2 A B One of the three data classified as subgroup 2 B contains error correction data associated with subgroup 2 C In some embodiments, one of the three data classified as subgroup 2 C contains error correction data associated with subgroup 2 D In some embodiments, one of the three data classified as subgroup 2 D contains error correction data associated with subgroup 2 E In some embodiments, one of the three data classified as subgroup 2 E contains error correction data associated with subgroup 2 F In some embodiments, one of the three data classified as subgroup 2 F contains error correction data associated with subgroup 2 G In some embodiments, one of the three data classified as subgroup 2 G contains error correction data associated with subgroup 2 H In some embodiments, one of the three data classified as subgroup 2 H contains error correction data associated with subgroup 2 I In some embodiments, one of the three data classified as subgroup 2 I contains error correction data associated with subgroup 2

[0157] In some embodiments, one of the three data classified as subgroup 3 A contains error correction data associated with subgroup 3 A B In some embodiments, one of the three data classified as subgroup 3 B contains error correction data associated with subgroup 3 C In some embodiments, one of the three data classified as subgroup 3 C contains error correction data associated with subgroup 3 D In some embodiments, one of the three data classified as subgroup 3 D contains error correction data associated with subgroup 3 E ​​​One of the three data contains error correction data associated with subgroup 3 E In some embodiments, one of the three data classified as subgroup 3 F contains error correction data associated with subgroup 3 F In some embodiments, one of the three data classified as subgroup 3 G contains error correction data associated with subgroup 3 G In some embodiments, one of the three data classified as subgroup 3 H contains error correction data associated with subgroup 3 H In some embodiments, one of the three data classified as subgroup 3 I contains error correction data associated with subgroup 3 I In some embodiments, one of the three data classified as subgroup 3

[0158] Data classified into different subgroups are not associated with each other. Data classified into different subgroups are independent of each other.

[0159] If one of the data in a subgroup (e.g., subgroup 1 A ) is damaged or fails, then the damaged data can be reconstructed or rebuilt based on other data in the same subgroup.

[0160] For example, if storage unit 16-13 fails or is damaged, then the data stored in the contiguous storage area 16-13A of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 1 A (e.g., data stored in contiguous storage areas 16-10A and 16-16A). The data stored in the contiguous storage area 16-13B of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 2 B (e.g., data stored in contiguous storage areas 16-10B and 16-16B). The data stored in the contiguous storage area 16-13C of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 3 C (e.g., data stored in contiguous storage areas 16-10C and 16-16C).

[0161] The data stored in the contiguous storage area 16-13D of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 2 D (e.g., data stored in contiguous storage areas 16-11D and 16-18D). The data stored in the contiguous storage area 16-13E of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 3 E (e.g., data stored in contiguous storage areas 16-11E and 16-18E). The data stored in the contiguous storage area 16-13 of storage unit 16-13 can be reconstructed or rebuilt based on other data in subgroup 1F Reconstruct or rebuild the data stored in the continuous storage area 16 - 13F of storage unit 16 - 13 with other data in

[0162] (e.g., data stored in continuous storage areas 16 - 11F and 16 - 18F). It can be based on subgroup 3 G Reconstruct or rebuild the data stored in the continuous storage area 16 - 13G of storage unit 16 - 13 with other data in H (e.g., data stored in continuous storage areas 16 - 12G and 16 - 17G). It can be based on subgroup 1 I Reconstruct or rebuild the data stored in the continuous storage area 16 - 13H of storage unit 16 - 13 with other data in

[0163] Reference Figure 5F , during the reconstruction process of the storage area (e.g., storage area 16 - 13A) of the storage unit in a sub - array (e.g., sub - array 37B), only two storage units (e.g., storage units 16 - 10 and 16 - 16) from the other two sub - arrays (e.g., sub - arrays 37A and 37C) need to be involved.

[0164] Figure 5G FIG. is a schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. Figure 5E Displays matrices 38A, 38B, and 38C. Use the arrays C1, C2, and C3 previously discussed according to Figure 4A to expand the number of storage units that can be used in the array according to the present invention.

[0165] Each of matrices 38A, 38B, and 38C contains a number of arrays C1, C2, and C3 arranged based on the principle of a set of mutually orthogonal Latin squares as illustrated according to Figure 4A . Fill the entries of arrays C1, C2, and C3 into matrices 38A, 38B, and 38C. That is, fill the entries {1, 3, 2} T , {2, 1, 3} T , and {3, 2, 1} T into matrices 38A, 38B, and 38C.

[0166] Figure 5HSchematic diagram for illustrating storage space configuration according to some embodiments of the present application. After filling the items of arrays C1, C2, and C3 into matrices 38A, 38B, and 38C, nine data allocation combinations of storage units can be obtained. That is, the data to be stored in storage units 16-19 to 16-27 can follow as Figure 5H shown in. Matrices 38A, 38B, and 38C can also be referred to as sub-arrays 38A, 38B, and 38C.

[0167] Referring to Figure 5H , the data to be stored in storage units 16-19 to 16-27 is classified into three data protection groups (labeled with numbers "1", "2", and "3" in Figure 5H ). The three data protection groups will be further classified into subgroups, which will be described in the following paragraphs.

[0168] Figure 5I Schematic diagram for illustrating storage space configuration according to some embodiments of the present application.

[0169] Although Figure 5IAlthough not marked, storage unit 16-19 includes continuous storage areas 16-19A, 16-19B, 16-19C, 16-19D, 16-19E, 16-19F, 16-19G, 16-19H, and 16-19I. Storage unit 16-20 includes continuous storage areas 16-20A, 16-20B, 16-20C, 16-20D, 16-20E, 16-20F, 16-20G, 16-20H, and 16-20I. Storage unit 16-21 includes continuous storage areas 16-21A, 16-21B, 16-21C, 16-21D, 16-21E, 16-21F, 16-21G, 16-21H, and 16-21I. The storage unit 16-22 includes continuous storage areas 16-22A, 16-22B, 16-22C, 16-22D, 16-22E, 16-22F, 16-22G, 16-22H, and 16-22I. The storage unit 16-23 includes continuous storage areas 16-23A, 16-23B, 16-23C, 16-23D, 16-23E, 16-23F, 16-23G, 16-23H, and 16-23I. The storage unit 16-24 includes continuous storage areas 16-24A, 16-24B, 16-24C, 16-24D, 16-24E, 16-24F, 16-24G, 16-24H, and 16-24I. Memory unit 16-25 includes continuous memory areas 16-25A, 16-25B, 16-25C, 16-25D, 16-25E, 16-25F, 16-25G, 16-25H, and 16-25I. Memory unit 16-26 includes continuous memory areas 16-26A, 16-26B, 16-26C, 16-26D, 16-26E, 16-26F, 16-26G, 16-26H, and 16-26I. Memory unit 16-27 includes continuous memory areas 16-27A, 16-27B, 16-27C, 16-27D, 16-27E, 16-27F, 16-27G, 16-27H, and 16-27I.

[0170] refer to Figure 5I , data protection group "1" is further classified into subgroup 1 A , 1 B , 1 C , 1 D , 1 E , 1 F , 1 G , 1 H and 1 I Data protection group "2" is further classified into subgroup 2 A , 2 B , 2 C , 2 D , 2E , 2 F , 2 G , 2 H and 2 I . The data protection group "3" is further classified into subgroups 3 A , 3 B , 3 C , 3 D , 3 E , 3 F , 3 G , 3 H and 3 I .

[0171] Data integrity protection in sub-arrays 38A, 38B, and 38C is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, data protection is provided for data classified into subgroup 1 A . Data protection is provided for data classified into subgroup 1 B . Data protection is provided for data classified into subgroup 1 C . Data protection is provided for data classified into subgroup 1 D . Data protection is provided for data classified into subgroup 1 E . Data protection is provided for data classified into subgroup 1 F . Data protection is provided for data classified into subgroup 1 G . Data protection is provided for data classified into subgroup 1 H . Data protection is provided for data classified into subgroup 1 I . Data protection is provided for data classified into subgroup 1

[0172] Similarly, data protection is provided for data classified into subgroup 2 A . Data protection is provided for data classified into subgroup 2 B . Data protection is provided for data classified into subgroup 2 C . Data protection is provided for data classified into subgroup 2 D . Data protection is provided for data classified into subgroup 2 E . Data protection is provided for data classified into subgroup 2 F . Data protection is provided for data classified into subgroup 2 G . Data protection is provided for data classified into subgroup 2 H . Data protection is provided for data classified into subgroup 2 I . Data protection is provided for data classified into subgroup 2

[0173] In addition, data protection is provided for data classified into subgroup 3 A . Data protection is provided for data classified into subgroup 3 B . Data protection is provided for data classified into subgroup 3 C . Data protection is provided for data classified into subgroup 3D The data provides data protection. For the data classified into subgroup 3 E The data provides data protection. For the data classified into subgroup 3 F The data provides data protection. For the data classified into subgroup 3 G The data provides data protection. For the data classified into subgroup 3 H The data provides data protection. For the data classified into subgroup 3 I The data provides data protection.

[0174] In some embodiments, one of the three data classified into subgroup 1 A contains error correction data associated with subgroup 1 A In some embodiments, one of the three data classified into subgroup 1 B contains error correction data associated with subgroup 1 B In some embodiments, one of the three data classified into subgroup 1 C contains error correction data associated with subgroup 1 C In some embodiments, one of the three data classified into subgroup 1 D contains error correction data associated with subgroup 1 D In some embodiments, one of the three data classified into subgroup 1 E contains error correction data associated with subgroup 1 E In some embodiments, one of the three data classified into subgroup 1 F contains error correction data associated with subgroup 1 F In some embodiments, one of the three data classified into subgroup 1 G contains error correction data associated with subgroup 1 G In some embodiments, one of the three data classified into subgroup 1 H contains error correction data associated with subgroup 1 H In some embodiments, one of the three data classified into subgroup 1 I contains error correction data associated with subgroup 1 I associated.

[0175] In some embodiments, one of the three data classified into subgroup 2 A contains error correction data associated with subgroup 2 A In some embodiments, one of the three data classified into subgroup 2 B contains error correction data associated with subgroup 2 B In some embodiments, one of the three data classified into subgroup 2 C contains error correction data associated with subgroup 2C Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 D contains error correction data associated with subgroup 2 D Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 E contains error correction data associated with subgroup 2 E Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 F contains error correction data associated with subgroup 2 F Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 G contains error correction data associated with subgroup 2 G Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 H contains error correction data associated with subgroup 2 H Associated error correction data. In some embodiments, one of the three data classified as subgroup 2 I contains error correction data associated with subgroup 2 I associated error correction data.

[0176] In some embodiments, one of the three data classified as subgroup 3 A contains error correction data associated with subgroup 3 A In some embodiments, one of the three data classified as subgroup 3 B contains error correction data associated with subgroup 3 B In some embodiments, one of the three data classified as subgroup 3 C contains error correction data associated with subgroup 3 C In some embodiments, one of the three data classified as subgroup 3 D contains error correction data associated with subgroup 3 D In some embodiments, one of the three data classified as subgroup 3 E contains error correction data associated with subgroup 3 E In some embodiments, one of the three data classified as subgroup 3 F contains error correction data associated with subgroup 3 F In some embodiments, one of the three data classified as subgroup 3 G contains error correction data associated with subgroup 3 G In some embodiments, one of the three data classified as subgroup 3 H contains error correction data associated with subgroup 3 H In some embodiments, one of the three data classified as subgroup 3 IOne of the three data contains error correction data associated with subgroup 3 I associated error correction data.

[0177] Data classified into different subgroups are not associated with each other. Data classified into different subgroups are independent of each other.

[0178] If one of the data in a subgroup (e.g., subgroup 1 A ) is damaged or fails, then the damaged data can be reconstructed or rebuilt based on other data in the same subgroup.

[0179] For example, if storage unit 16 - 22 fails or is damaged, then the data stored in the continuous storage area 16 - 22A of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 1 A (e.g., data stored in continuous storage areas 16 - 19A and 16 - 25A). The data stored in the continuous storage area 16 - 22B of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 3 B (e.g., data stored in continuous storage areas 16 - 19B and 16 - 25B). The data stored in the continuous storage area 16 - 22C of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 2 C (e.g., data stored in continuous storage areas 16 - 19C and 16 - 25C).

[0180] The data stored in the continuous storage area 16 - 22D of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 2 D (e.g., data stored in continuous storage areas 16 - 20D and 16 - 27D). The data stored in the continuous storage area 16 - 22E of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 1 E (e.g., data stored in continuous storage areas 16 - 20E and 16 - 27E). The data stored in the continuous storage area 16 - 22F of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 3 F (e.g., data stored in continuous storage areas 16 - 20F and 16 - 27F).

[0181] The data stored in the continuous storage area 16 - 22G of storage unit 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 3 G (e.g., data stored in continuous storage areas 16 - 21G and 16 - 26G). The data stored in the continuous storage area 16 - 22 can be reconstructed or rebuilt based on other data in subgroup 2 HOther data in (e.g., data stored in consecutive storage areas 16 - 21H and 16 - 26H) is used to reconstruct or rebuild the data stored in the consecutive storage area 16 - 22H of storage unit 16 - 22. This can be done according to subgroup 1 I Other data in (e.g., data stored in consecutive storage areas 16 - 21I and 16 - 26I) is used to reconstruct or rebuild the data stored in the consecutive storage area 16 - 22I of storage unit 16 - 22.

[0182] Reference Figure 5I , during the reconstruction process of the storage area (e.g., storage area 16 - 22A) of the storage units in a sub - array (e.g., sub - array 38B), only two storage units (e.g., storage units 16 - 19 and 16 - 25) from two other sub - arrays (e.g., sub - arrays 38A and 38C) need to be involved.

[0183] Figure 5J FIG. is a schematic diagram illustrating the storage space configuration according to some embodiments of the present application. The previously discussed sub - arrays 36A, 36B, 36C, 37A, 37B, 37C, 38A, 38B, and 38C can be combined to form a larger data distribution combination.

[0184] As Figure 5J shown, the combination of sub - arrays 36A, 36B, 36C, 37A, 37B, 37C, 38A, 38B, and 38C provides a data distribution combination for up to 27 storage units (e.g., storage units 16 - 1 to 16 - 27).

[0185] Data integrity protection for the 27 storage units is implemented by subgroups. Data protection is provided for data classified into the same subgroup. For example, data protection is provided for data classified into subgroup 1 A Data protection is provided for data classified into subgroup 1 B Data protection is provided for data classified into subgroup 1 C Data protection is provided for data classified into subgroup 1 D Data protection is provided for data classified into subgroup 1 E Data protection is provided for data classified into subgroup 1 F Data protection is provided for data classified into subgroup 1 G Data protection is provided for data classified into subgroup 1 H Data protection is provided for data classified into subgroup 1 I Data protection is provided for data classified into subgroup 1

[0186] Similarly, data protection is provided for data classified into subgroup 2 A Data protection is provided for data classified into subgroup 2 BThe data provides data protection. For the data classified as subgroup 2 C The data provides data protection. For the data classified as subgroup 2 D The data provides data protection. For the data classified as subgroup 2 E The data provides data protection. For the data classified as subgroup 2 F The data provides data protection. For the data classified as subgroup 2 G The data provides data protection. For the data classified as subgroup 2 H The data provides data protection. For the data classified as subgroup 2 I The data provides data protection.

[0187] In addition, for the data classified as subgroup 3 A The data provides data protection. For the data classified as subgroup 3 B The data provides data protection. For the data classified as subgroup 3 C The data provides data protection. For the data classified as subgroup 3 D The data provides data protection. For the data classified as subgroup 3 E The data provides data protection. For the data classified as subgroup 3 F The data provides data protection. For the data classified as subgroup 3 G The data provides data protection. For the data classified as subgroup 3 H The data provides data protection. For the data classified as subgroup 3 I The data provides data protection.

[0188] In some embodiments, one of the nine data classified as subgroup 1 A contains error correction data associated with subgroup 1 A In some embodiments, one of the nine data classified as subgroup 1 B contains error correction data associated with subgroup 1 B In some embodiments, one of the nine data classified as subgroup 1 C contains error correction data associated with subgroup 1 C In some embodiments, one of the nine data classified as subgroup 1 D contains error correction data associated with subgroup 1 D In some embodiments, one of the nine data classified as subgroup 1 E contains error correction data associated with subgroup 1 E In some embodiments, one of the nine data classified as subgroup 1 F contains error correction data associated with subgroup 1 F In some embodiments, one of the nine data classified as subgroup 1 G contains error correction data associated with subgroup 1 GAssociated error correction data. In some embodiments, one of the nine data classified as subgroup 1 H contains error correction data associated with subgroup 1 H In some embodiments, one of the nine data classified as subgroup 1 I contains error correction data associated with subgroup 1 I associated.

[0189] In some embodiments, one of the nine data classified as subgroup 2 A contains error correction data associated with subgroup 2 A In some embodiments, one of the nine data classified as subgroup 2 B contains error correction data associated with subgroup 2 B associated. In some embodiments, one of the nine data classified as subgroup 2 C contains error correction data associated with subgroup 2 C In some embodiments, one of the nine data classified as subgroup 2 D contains error correction data associated with subgroup 2 D associated. In some embodiments, one of the nine data classified as subgroup 2 E contains error correction data associated with subgroup 2 E associated. In some embodiments, one of the nine data classified as subgroup 2 F contains error correction data associated with subgroup 2 F associated. In some embodiments, one of the nine data classified as subgroup 2 G contains error correction data associated with subgroup 2 G associated. In some embodiments, one of the nine data classified as subgroup 2 H contains error correction data associated with subgroup 2 H associated. In some embodiments, one of the nine data classified as subgroup 2 I contains error correction data associated with subgroup 2 I associated.

[0190] In some embodiments, one of the nine data classified as subgroup 3 A contains error correction data associated with subgroup 3 A In some embodiments, one of the nine data classified as subgroup 3 B contains error correction data associated with subgroup 3 B associated. In some embodiments, one of the nine data classified as subgroup 3 C contains error correction data associated with subgroup 3 C associated. In some embodiments, one of the nine data classified as subgroup 3D One of the nine data contains error correction data associated with subgroup 3 D In some embodiments, one of the nine data classified as subgroup 3 E One of the nine data contains error correction data associated with subgroup 3 E In some embodiments, one of the nine data classified as subgroup 3 F One of the nine data contains error correction data associated with subgroup 3 F In some embodiments, one of the nine data classified as subgroup 3 G One of the nine data contains error correction data associated with subgroup 3 G In some embodiments, one of the nine data classified as subgroup 3 H One of the nine data contains error correction data associated with subgroup 3 H In some embodiments, one of the nine data classified as subgroup 3 I One of the nine data contains error correction data associated with subgroup 3 I associated error correction data.

[0191] Data classified into different subgroups are not associated with each other. Data classified into different subgroups are independent of each other.

[0192] If one of the data in a subgroup is damaged or fails, the damaged data can be reconstructed or rebuilt based on other data in the same subgroup. For example, if the data stored in storage area 16-1A of storage unit 16-1 (e.g., subgroup 1 A ) is damaged or fails, the damaged data can be reconstructed or rebuilt based on the data stored in storage areas 16-4A, 16-7A, 16-10A, 16-13A, 16-16A, 16-19A, 16-22A, and 16-25A of storage units 16-4, 16-7, 16-10, 16-13, 16-16, 16-19, 16-22, and 16-25.

[0193] Similarly, if the data stored in storage area 16-2C of storage unit 16-2 (e.g., subgroup 2 C ) is damaged or fails, the damaged data can be reconstructed or rebuilt based on the data stored in storage areas 16-5C, 16-8C, 16-12C, 16-15C, 16-18C, 16-19C, 16-22C, and 16-25C of storage units 16-5, 16-8, 16-12, 16-15, 16-18, 16-19, 16-22, and 16-25.

[0194] When it is necessary to reconstruct the storage area (e.g., storage area 16-6A) of a storage unit from one of the sub-arrays (e.g., sub-array 36B), it involves a storage area (e.g., storage areas 16-3A, 16-9A, 16-12A, 16-15A, 16-18A, 16-21A, 16-24A, and 16-27A) from each of the sub-arrays 36A, 36C, 37A, 37B, 37C, 38A, 38B, and 38C respectively. Only 1 / 3 of each storage unit is involved in data reconstruction, and the reconstruction speed will be 3 times compared to Figure 2 compared to

[0195] Using the method as described according to Figures 5A to 5J different data allocation mechanisms can be obtained for different numbers of storage units (ranging from N 2 storage units to N 3 storage units). In some embodiments, the data allocation mechanism for up to 64 storage units can be obtained based on a set of fourth-order (i.e., a matrix of size 4×4) mutually orthogonal Latin squares, and the reconstruction speed will be 4 times compared to Figure 2 compared to Figure 2 In some embodiments, the data allocation mechanism for up to 125 storage units can be obtained based on a set of fifth-order (i.e., a matrix of size 5×5) mutually orthogonal Latin squares, and the reconstruction speed will be 5 times compared to

[0196] In some embodiments, the data allocation mechanism for a total of N 2 storage units can be obtained based on a set of N-order (i.e., a matrix of size N×N) mutually orthogonal Latin squares, and the reconstruction speed will be N times compared to Figure 2 compared to

[0197] In some embodiments, the data allocation mechanism for a total of N 3 storage units can be obtained by using the array as an element in a set of N-order (i.e., a matrix of size N×N) mutually orthogonal Latin squares, and the reconstruction speed will be N times compared to Figure 2 compared to

[0198] Figure 6 FIG. is a schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. The data allocation mechanism is derived based on a set of fourth-order (i.e., a matrix of size 4×4) mutually orthogonal Latin squares.

[0199] Apply the storage space configuration shown in Figure 6 to the array 40 including 16 storage units. In Figure 6In the embodiment shown in FIG. 4 , the memory cells of array 40 are grouped into sub-arrays 40-1, 40-2, 40-3, and 40-4. Each of the sub-arrays includes four memory cells, and each of the memory cells includes multiple storage regions. Figure 6 In the embodiment shown in , each of the storage units includes four storage areas. It is also contemplated that more or fewer storage areas may be allocated to each of the storage units.

[0200] like Figure 6 As shown in FIG. 1 , data to be stored in the storage cells of subarrays 40-1, 40-2, 40-3, and 40-4 are classified into four data protection groups “1”, “2”, “3”, and “4”. Data protection group “1” is further classified into subgroups 1 and 2. A , 1 B , 1 C and 1 D Data protection group "2" is further classified into subgroup 2 A , 2 B , 2 C and 2 D Data protection group "3" is further classified into subgroup 3 A , 3 B , 3 C and 3 D Data protection group "4" is further classified into subgroup 4 A , 4 B , 4 C and 4 D .

[0201] The data integrity protection in the array 40 is implemented by subgroup. Data protection is provided to data classified into the same subgroup. For example, A Provide data protection for data classified as subgroup 1 B Provide data protection for data classified as subgroup 1 C Provide data protection for data classified as subgroup 1 D Provide data protection for your data.

[0202] Classify into subgroup 2 A Provide data protection for data classified as subgroup 2 B Provide data protection for data classified as subgroup 2 C Provide data protection for data classified as subgroup 2 D Provide data protection for your data.

[0203] Similarly, the pairs are classified into subgroup 3 A Provide data protection for data classified as subgroup 3 BThe data provides data protection. For the data classified as subgroup 3 C The data provides data protection. For the data classified as subgroup 3 B The data provides data protection. For the data classified as subgroup 3 D The data provides data protection.

[0204] For the data integrity protection and reconstruction process of the data to be stored in the array 40, it is the same as the previous data integrity protection and reconstruction processes according to Figure 4 、 Figure 5C 、 Figure 5F and Figure 5I discussed.

[0205] During the reconstruction process of the storage area of the storage units in a sub-array, three storage units from the other three sub-arrays need to be involved. Referring to Figure 6 , assuming that it is necessary to reconstruct the data stored in the storage area 16-6A of the storage unit 16-6 from the sub-array 40-2, then the data stored in the corresponding storage areas (such as storage areas 16-2A, 16-6A, 16-10A, and 16-14A) forming the sub-arrays 40-1, 40-3, and 40-4 is used. The data stored in all the storage units in the array 40 can be reconstructed in the same way.

[0206] In Figure 6 the data distribution mechanism shown, the workload for reconstructing the failed storage units within a sub-array is shared by the storage units belonging to the other sub-arrays. Sharing the workload of the data reconstruction process by all the storage units increases the lifespan of each of the storage units within the array 40. Additionally, following the data distribution mechanism shown in Figure 6 , the speed of the data reconstruction process can be increased by four times compared to the speed of Figure 2 .

[0207] Specifically, each of the storage units participating in the data reconstruction process only needs to provide 25% of its data. It can be expected that the time spent reading data from the storage units participating in the data reconstruction process is reduced by 75%. For example, during the data reconstruction of the storage unit 16-6, the storage unit 16-2 only provides 25% of its data. Similarly, the storage units 16-10 and 16-14 only provide 25% of their data during the data reconstruction of the storage unit 16-6. The speed of the data reconstruction process for each storage unit of the array 40 is then increased by four times compared to the speed of Figure 2 .

[0208] Figure 6ASchematic diagram for illustrating the storage space configuration according to some embodiments of the present application. A data allocation mechanism is derived based on a set of fourth-order (i.e., matrices of size 4×4) mutually orthogonal Latin squares. Different from the data allocation mechanism shown in Figure 6 the number of storage units in each sub-array may be different.

[0209] In Figure 6A the embodiment shown, the storage units of array 42 are grouped into sub-arrays 42-1, 42-2, 42-3, and 42-4. Each of sub-arrays 42-1, 42-2, and 42-3 contains four storage units, while sub-array 42-4 contains two storage units. Each of the storage units contains a plurality of storage areas. In Figure 6A the embodiment shown, each of the storage units contains four storage areas. It is also conceivable that more or fewer storage areas may be allocated to each of the storage units.

[0210] The data integrity protection and reconstruction processes for the data to be stored in array 42 are the same as those previously according to Figure 4 , Figure 5C , Figure 5F and Figure 5I discussed. Although the total number of storage units in array 42 is reduced, the data protection ability of array 42 remains unchanged. In addition, the speed of the data reconstruction process for each storage unit of array 42 is also increased by four times compared to the speed of Figure 2 .

[0211] Figure 7 Schematic diagram for illustrating the data allocation combination according to some embodiments of the present application. Array 44 contains 16 storage units grouped into sub-arrays 44-1, 44-2, 44-3, and 44-4. The data allocation combination of array 44 is the same as the data allocation combination shown in Figure 6 which utilizes a set of fourth-order orthogonal Latin squares.

[0212] Referring to Figure 7 , the data stored in storage units 16-1, 16-2, 16-3, and 16-4 of sub-array 44-1 is the first type of error correction data (i.e., data P1 A , P1 B , P1 C , P1 D , P2 A , P2 B , P2 C , P2 D , P3 A , P3 B , P3 C , P3D , P4 A , P4 B , P4 C and P4 D ). The data stored in the memory cells 16-5, 16-6, 16-7, and 16-8 of the sub-array 44-2 is the error correction data of the second type (i.e., data Q1 A , Q1 B , Q1 C , Q1 D , Q2 A , Q2 B , Q2 C , Q2 D , Q3 A , Q3 B , Q3 C , Q3 D , Q4 A , Q4 B , Q4 C and Q4 D ). All the memory cells in the sub-arrays 44-3 and 44-4 are used to store the user data or client data received from an external device (e.g., Figure 1 the client host 14 shown in A , D1 B , D1 C , D1 D , D2 A , D2 B , D2 C , D2 D , D3 A , D3 B , D3 C , D3 D , D4 A , D4 B , D4 C and D4 D ).

[0213] Refer to Figure 7 , the data stored in the sub-array 44-1 is the error correction data associated with the client data stored in the sub-arrays 44-3 and 44-4.

[0214] The data P1 A is the error correction data associated with the client data D1 A . The data P1 B is the error correction data associated with the client data D1 B . The data P1 C is the error correction data associated with the client data D1 C . The data P1D is error correction data associated with client data D1 D

[0215] Data P2 A is error correction data associated with client data D2 A Data P2 is error correction data associated with client data D2 B is error correction data associated with client data D2 B Data P2 is error correction data associated with client data D2 C is error correction data associated with client data D2 C Data P2 is error correction data associated with client data D2 D is error correction data associated with client data D2 D

[0216] Data P3 A is error correction data associated with client data D3 A Data P3 is error correction data associated with client data D3 B is error correction data associated with client data D3 B Data P3 is error correction data associated with client data D3 C is error correction data associated with client data D3 C Data P3 is error correction data associated with client data D3 D is error correction data associated with client data D3 D

[0217] Data P4 A is error correction data associated with client data D4 A Data P4 is error correction data associated with client data D4 B is error correction data associated with client data D4 B Data P4 is error correction data associated with client data D4 C is error correction data associated with client data D4 C Data P4 is error correction data associated with client data D4 D is error correction data associated with client data D4 D

[0218] Data classified into different subgroups is not associated with each other. Data classified into different subgroups is independent of each other.

[0219] Reference Figure 7 , the data stored in sub-array 44-2 is error correction data associated with the client data stored in sub-arrays 44-3 and 44-4.

[0220] Data Q1 A is error correction data associated with client data D1 A Data Q1 is error correction data associated with client data D1 B is error correction data associated with client data D1 B Data Q1 is error correction data associated with client data D1​​​​C Error correction data associated with client data D1 C Data Q1 D Error correction data associated with client data D1 D Error correction data associated with client data D1

[0221] Data Q2 A Error correction data associated with client data D2 A Data Q2 B Error correction data associated with client data D2 B Data Q2 C Error correction data associated with client data D2 C Data Q2 D Error correction data associated with client data D2 D Error correction data associated with client data D2

[0222] Data Q3 A Error correction data associated with client data D3 A Data Q3 B Error correction data associated with client data D3 B Data Q3 C Error correction data associated with client data D3 C Data Q3 D Error correction data associated with client data D3 D Error correction data associated with client data D3

[0223] Data Q4 A Error correction data associated with client data D4 A Data Q4 B Error correction data associated with client data D4 B Data Q4 C Error correction data associated with client data D4 C Data Q4 D Error correction data associated with client data D4 D Error correction data associated with client data D4

[0224] The client data stored in sub - arrays 44 - 3 and 44 - 4 can be reconstructed or rebuilt based on the error correction data stored in sub - array 44 - 1. The client data stored in sub - arrays 44 - 3 and 44 - 4 can be reconstructed or rebuilt based on the error correction data stored in sub - array 44 - 2. The client data stored in sub - arrays 44 - 3 and 44 - 4 can be reconstructed or rebuilt based on the error correction data stored in sub - arrays 44 - 1 and 44 - 2.

[0225] Error correction data of the first type (e.g., P) can be generated by the control unit 2. The error correction data of the first type can be generated by the control unit 2 based on the client data in the same subgroup. The error correction data of the first type can be generated by the control unit 2 based on the error correction data of the second type (e.g., Q) and the client data in the same subgroup.

[0226] Error correction data of the second type (e.g., Q) can be generated by the control unit 2. The error correction data of the second type can be generated by the control unit 2 based on the client data in the same subgroup. The error correction data of the second type can be generated by the control unit 2 based on the error correction data of the first type (e.g., P) and the client data in the same subgroup.

[0227] Error correction data P1 A is associated with error correction data Q1 A Error correction data P1 B is associated with error correction data Q1 B Error correction data P1 C is associated with error correction data Q1 C Error correction data P1 D is associated with error correction data Q1 D is associated.

[0228] Error correction data P2 A is associated with error correction data Q2 A Error correction data P2 B is associated with error correction data Q2 B Error correction data P2 C is associated with error correction data Q2 C Error correction data P2 D is associated with error correction data Q2 D is associated.

[0229] Error correction data P3 A is associated with error correction data Q3 A Error correction data P3 B is associated with error correction data Q3 B Error correction data P3 C is associated with error correction data Q3 C Error correction data P3 D is associated with error correction data Q3 D is associated.

[0230] Error correction data P4 A is associated with error correction data Q4 A Error correction data P4 B is associated with error correction data Q4B is associated with. Error correction data P4 C is associated with error correction data Q4 C is associated with. Error correction data P4 D is associated with error correction data Q4 D is associated with.

[0231] Using two types of error correction data can increase the number of allowable failed storage units within the array 44. For example, if the RAID level 6 (RAID 6) algorithm is utilized in the array, then even if two storage units fail or are damaged simultaneously, the data stored in these two damaged storage units can be successfully recovered. However, it should be noted that the two types of error correction data patterns occupy all the storage units of sub-arrays 44-1 and 44-2. Only two sub-arrays of the array 44 (i.e., sub-arrays 44-3 and 44-4) can be utilized to store user data. The capacity efficiency of the array 44 is only 50%.

[0232] Figure 7A A schematic diagram for illustrating a data allocation combination according to some embodiments of the present application. The array 46 includes 16 storage units grouped into sub-arrays 46-1, 46-2, 46-3, and 46-4. The data allocation combination of storage units 16-1, 16-2, 16-3, 16-4, 16-5, 16-6, 16-7, 16-8, 16-9, 16-10, 16-11, 16-12, 16-13, 16-14, 16-15, and 16-16 is the same as Figure 6 the data allocation combination shown in, which utilizes a set of fourth-order orthogonal Latin squares. The array 46 further includes an additional storage unit 16-Q.

[0233] All the storage units of sub-array 46-1 are used to store the first type of error correction data (i.e., data P1 A , P1 B , P1 C , P1 D , P2 A , P2 B , P2 C , P2 D , P3 A , P3 B , P3 C , P3 D , P4 A , P4 B , P4 C and P4 D ). All the storage units of sub-arrays 46-2, 46-3, and 46-4 are used to store user data or client data (i.e., data D1 A , D1 B, D1 C , D1 D , D2 A , D2 B , D2 C , D2 D , D3 A , D3 B , D3 C , D3 D , D4 A , D4 B , D4 C and D4 D ). The storage unit 16 - Q is used to store the second type of error correction data (i.e., data Q1234 A , Q1234 B , Q1234 C and Q1234 D ).

[0234] As previously discussed according to Figure 7 , the data stored in sub - array 46 - 1 (e.g., P1, P2, P3, and P4) is error correction data associated with the client data (e.g., D1, D2, D3, and D4) stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4.

[0235] The data stored in the storage unit 16 - Q is error correction data associated with the client data stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4. Refer to Figure 7A , the error correction data pattern Q1234 A is error correction data associated with the client data D1 stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4 A , D2 A , D3 A and D4 A . The error correction data pattern Q1234 B is error correction data associated with the client data D1 stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4 B , D2 B , D3 B and D4 B . The error correction data pattern Q1234 C is error correction data associated with the client data D1 stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4 C , D2 C , D3 C and D4 C . The error correction data pattern Q1234 DFor client data D1 D stored in sub - arrays 46 - 2, 46 - 3, and 46 - 4 D D2 D D3 D and D4

[0236] Figure 7B is a schematic diagram for explaining a method for deriving error - correction data according to some embodiments of the present invention.

[0237] Error - correction data Q1234 A can be derived from the error - correction data Q1 A Q2 A Q3 A and Q4 A of sub - array 44 - 2. Error - correction data Q1234 B can be derived from the error - correction data Q1 B Q2 B Q3 B and Q4 B of sub - array 44 - 2. Error - correction data Q1234 C can be derived from the error - correction data Q1 C Q2 C Q3 C and Q4 C of sub - array 44 - 2. Error - correction data Q1234 D can be derived from the error - correction data Q1 D Q2 D Q3 D and Q4 D of sub - array 44 - 2.

[0238] Error - correction data Q1234 A can be derived from the logical calculation of the error - correction data Q1 A Q2 A Q3 A and Q4 A Error - correction data Q1234 B can be derived from the logical calculation of the error - correction data Q1 B Q2 B Q3 B and Q4 B Error - correction data Q1234 C can be derived from the logical calculation of the error - correction data Q1 C Q2 C Q3 C and Q4 C Error - correction data Q1234 DError correction data Q1 D , Q2 D , Q3 D and Q4 D can be derived from logical calculations.

[0239] For generating error correction data Q1234 A , Q1234 B , Q1234 C and Q1234 D The logical calculations include but are not limited to "exclusive or" calculations. It can also be considered that other logical calculations can be used to derive Q1234 from Q1, Q2, Q3, and Q4.

[0240] Using Figure 7A the data allocation mechanism shown in Figure 7 the capacity efficiency of array 46 is increased compared to Figure 7A the capacity efficiency of array 44 shown in Figure 7A Specifically,

[0241] Figure 8A is a schematic diagram illustrating the storage space configuration according to some embodiments of the present application. Figure 8A Shows an array 50 containing 10 storage units. Each of the storage units includes three storage partitions 55A, 55B, and 55C. Each of the storage partitions 55A, 55B, and 55C includes a plurality of storage areas. In some embodiments, the storage areas within each of the storage partitions 55A, 55B, and 55C are logically continuous. In some embodiments, the storage areas within each of the storage partitions 55A, 55B, and 55C are physically continuous.

[0242] The storage partition 55A of each of the storage units is designated to store user data or client data. The storage partition 55B of each of the storage units is designated to store error correction data or parity data. The storage partition 55C of each of the storage units is a spare partition that will be used in the data reconstruction process to store reconstructed data.

[0243] The data to be stored in array 50 is arranged in a specific manner. As Figure 8A shown, the data to be stored in sub-arrays 52-1, 52-2, and 52-3 follows the same pattern as previously according to Figure 4In the same manner as described. That is, the data in sub-arrays 52-1, 52-2, and 52-3 is allocated based on a set of third-order orthogonal Latin squares. It is also conceivable that the data in sub-arrays 52-1, 52-2, and 52-3 can be allocated based on a set of orthogonal Latin squares of different orders.

[0244] The sub-arrays 52-1 and 52-2 that store user data are allocated in the storage partition 55A among a number of storage units. The sub-array 52-3 that stores error correction data or parity data is allocated in the storage partition 55B among a number of storage units. The sub-array 52-4 includes three spare storage areas that can be used to store reconstructed data, and the sub-array 52-4 is allocated in the storage partition 55C of the storage unit. For example, the data 56-1 of the sub-array 52-1 can be reconstructed based on the data 56-2 of the sub-array 52-2 and the data 56-3 of the sub-array 52-3. The reconstructed version of the data 56-1 will be stored in the spare storage area 56-4 of the sub-array 52-4.

[0245] Figure 8B A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. Figure 8B A manner of showing how the second group of sub-arrays 54-1, 54-2, 54-3, and 54-4 are allocated in the array 50. The sub-array 54-1 is allocated in the storage units adjacent to those storage units for storing the sub-array 52-2, and the sub-array 54-2 is allocated starting from the storage units adjacent to those storage units for storing the sub-array 54-1. The sub-array 54-3 for storing the error correction data pattern is allocated in the storage partition 55B among the storage units adjacent to those storage units for storing the sub-array 54-2. The sub-array 54-4 is allocated in the storage units adjacent to those storage units for storing the sub-array 54-3.

[0246] Figure 8C A schematic diagram for illustrating the storage space configuration according to some embodiments of the present application. Figure 8C Showing the use as according to Figure 8A and Figure 8B The data allocation combination of the data allocation mechanism described. The user data is allocated in the storage partition 55A of each of the storage units, the error correction data pattern is allocated in the storage partition 55B of each of the storage units, and the spare storage area is allocated in the storage partition 55C of each of the storage units.

[0247] As previously mentioned, the data reconstruction process includes the step of writing the reconstructed data back to the failed storage unit. Figure 8CThe reconstructed data in [the context] is scattered over each of the storage units, and thus each of the storage units can simultaneously provide the reconstructed data in the step of writing the reconstructed data back to the failed storage unit. By scattering the spare storage area over each of the storage units instead of allocating the spare storage area to only one storage unit (for example, the legacy data allocation mechanism allocates all spare storage areas to only one storage unit), the speed of the data reconstruction process can be further increased several-fold.

[0248] Unless the context clearly dictates otherwise, as used herein, the singular terms "a" and "the" may include plural referents. In the description of some embodiments, a component "on" or "above" another component may cover the case where the former component is directly on the latter component (e.g., in physical contact with the latter component) and the case where one or more intervening components are between the former component and the latter component.

[0249] As used herein, the terms "substantially", "approximately" and "about" are used to describe and account for minor variations. When used in conjunction with an event or circumstance, the terms can refer to the case where the event or circumstance occurs precisely as well as the case where the event or circumstance occurs very nearly. For example, when used in conjunction with a numerical value, the terms can refer to a range of variation of less than or equal to ±10% of the numerical value, e.g., less than or equal to ±5%, less than or equal to ±4%, less than or equal to ±3%, less than or equal to ±2%, less than or equal to ±1%, less than or equal to ±0.5%, less than or equal to ±0.1% or less than or equal to ±0.05%. For example, the terms "about" or "substantially" in reference to two values can mean that the ratio of the two values is in the range between 0.9 and 1.1 (inclusive of 0.9 and 1.1).

[0250] In addition, sometimes quantities, ratios and other numerical values are presented herein in a range format. It should be understood that such range formats are used for convenience and brevity and should be interpreted flexibly as including not only the explicitly specified values as range limits but also all individual values or sub-ranges subsumed within that range as if each value and sub-range were explicitly specified.

[0251] Although the present invention has been described and illustrated with reference to specific embodiments thereof, such description and illustration do not limit the present invention. Those skilled in the art will understand that various changes can be made and equivalents can be substituted without departing from the true spirit and scope of the present invention as defined by the appended claims. The illustrations may not be drawn to scale. There may be other embodiments of the present invention not specifically described. The specification and the drawings should be regarded as illustrative rather than restrictive. Modifications can be made to adapt a particular situation, material, composition of matter, method, or process to the objectives, spirit, and scope of the present invention. All such modifications are intended to be within the scope of the appended claims. Although the methods disclosed herein have been described with reference to specific operations performed in a particular order, it should be understood that these operations can be combined, sub-divided, or re-ordered to form equivalent methods without departing from the teachings of the present invention. Accordingly, unless specifically indicated herein, the order and grouping of the operations are not limitations of the present invention.

Claims

1. An apparatus, comprising: a control unit; a memory coupled to the control unit and containing computer program code; N groups of storage units electrically connected to the control unit, each of the N groups of storage units having N storage units, each of the N storage units having N storage areas, where N is a positive integer; wherein the memory and the computer program code are configured to cause the apparatus, together with the control unit, to perform: reconstructing a first data segment in the i-th storage area of a first storage unit stored in the k-th group of storage units based on only one storage unit in the (k + 1)-th group of storage units and only one storage unit in the (k + 2)-th group of storage units; reconstructing a second data segment in the (i + 1)-th storage area of the first storage unit stored in the k-th group of storage units based on only one storage unit in the (k + 1)-th group of storage units and only one storage unit in the (k + 2)-th group of storage units; where i is a positive integer less than or equal to N, where k is a positive integer less than or equal to N, the first data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)-th group of storage units, and the first data segment and the second data segment are reconstructed based on two different storage units in the (k + 2)-th group of storage units.

2. The apparatus according to claim 1, further comprising: reconstructing a third data segment in the (i + 2)-th storage area of the first storage unit stored in the k-th group of storage units based on only one storage unit in the (k + 1)-th group of storage units and only one storage unit in the (k + 2)-th group of storage units.

3. The apparatus according to claim 2, wherein the third data segment and the first data segment are reconstructed based on two different storage units in the (k + 1)-th group of storage units, and wherein the third data segment and the first data segment are reconstructed based on two different storage units in the (k + 2)-th group of storage units.

4. The apparatus according to claim 2, wherein the third data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)-th group of storage units, and wherein the third data segment and the second data segment are reconstructed based on two different storage units in the (k + 2)-th group of storage units.

5. The apparatus according to claim 1, further comprising: reconstructing a fourth data segment in the i-th storage area of a second storage unit stored in the k-th group of storage units based on only one storage unit in the (k + 1)-th group of storage units and only one storage unit in the (k + 2)-th group of storage units.

6. The apparatus according to claim 5, further comprising an additional storage unit electrically connected to the control unit, the additional storage unit having N storage areas, the apparatus further comprising: Store the seventh data segment in the i-th storage area of the additional storage unit, wherein the fourth data segment and the first data segment are reconstructed based on the seventh data segment.

7. The apparatus according to claim 6, wherein the seventh data segment includes error correction data associated with the first data segment and the fourth data segment.

8. The apparatus according to claim 5, wherein the fourth data segment and the first data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the fourth data segment and the first data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

9. The apparatus according to claim 5, further comprising: Reconstruct the fifth data segment stored in the (i + 1)-th storage area of the second storage unit in the k-th storage unit group based on only one storage unit in the (k + 1)-th storage unit group and only one storage unit in the (k + 2)-th storage unit group.

10. The apparatus according to claim 9, wherein the fifth data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the fifth data segment and the second data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

11. The apparatus according to claim 9, wherein the fifth data segment and the fourth data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the fifth data segment and the fourth data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

12. The apparatus according to claim 9, further comprising: Reconstruct the sixth data segment stored in the i-th storage area of the third storage unit in the k-th storage unit group based on only one storage unit in the (k + 1)-th storage unit group and only one storage unit in the (k + 2)-th storage unit group.

13. The apparatus according to claim 12, wherein the sixth data segment and the first data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the sixth data segment and the first data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

14. The apparatus according to claim 12, wherein the sixth data segment and the fourth data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the sixth data segment and the fourth data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

15. An apparatus, comprising: A control unit; A memory coupled to the control unit and including computer program code; S groups of storage units, electrically connected to the control unit, where the 1st to the (S - 1)th storage unit groups each have N storage units, and the Sth storage unit group has M storage units. Each storage unit in the S groups of storage units has N storage areas, where N, S, and M are positive integers, and S and M are less than N; wherein the memory and the computer program code are configured to, together with the control unit, cause the device to perform: reconstruct a first data segment stored in the ith storage area of the first storage unit in the kth storage unit group based on only one storage unit in the (k + 1)th storage unit group and only one storage unit in the Sth storage unit group; reconstruct a second data segment stored in the (i + 2)th storage area of the first storage unit in the kth storage unit group based on only one storage unit in the (k + 1)th storage unit group and only one storage unit in the Sth storage unit group; where i is a positive integer less than or equal to N, and k is a positive integer less than or equal to N, the first data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)th storage unit group, and the first data segment and the second data segment are reconstructed based on two different storage units in the Sth storage unit group.

16. The device according to claim 15, further comprising: reconstruct a third data segment stored in the ith storage area of the second storage unit in the kth storage unit group based on only one storage unit in the (k + 1)th storage unit group and only one storage unit in the Sth storage unit group.

17. The device according to claim 16, wherein the third data segment and the first data segment are reconstructed based on two different storage units in the (k + 1)th storage unit group, and wherein the third data segment and the first data segment are reconstructed based on two different storage units in the Sth storage unit group.

18. The device according to claim 16, further comprising: reconstruct a fourth data segment stored in the (i + 2)th storage area of the second storage unit in the kth storage unit group based on only one storage unit in the (k + 1)th storage unit group and only one storage unit in the Sth storage unit group.

19. The device according to claim 18, wherein the fourth data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)th storage unit group, and wherein the fourth data segment and the second data segment are reconstructed based on two different storage units in the Sth storage unit group.

20. A method for reconstructing data in a storage system, the storage system having N groups of storage units, each of the N groups of storage units having N storage units, and each storage unit in the N groups of storage units having N storage areas, where N is a positive integer, the method comprising: Reconstruct a first data segment in the i-th storage area of a first storage unit stored in the k-th storage unit group based on only one storage unit in the (k + 1)-th storage unit group and only one storage unit in the (k + 2)-th storage unit group; Reconstruct a second data segment in the (i + 1)-th storage area of the first storage unit stored in the k-th storage unit group based on only one storage unit in the (k + 1)-th storage unit group and only one storage unit in the (k + 2)-th storage unit group; where i is a positive integer less than or equal to N, and k is a positive integer less than or equal to N, the first data segment and the second data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and the first data segment and the second data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

21. The method according to claim 20, further comprising: Reconstruct a third data segment in the i-th storage area of a second storage unit stored in the k-th storage unit group based on only one storage unit in the (k + 1)-th storage unit group and only one storage unit in the (k + 2)-th storage unit group.

22. The method according to claim 21, wherein the third data segment and the first data segment are reconstructed based on two different storage units in the (k + 1)-th storage unit group, and wherein the third data segment and the first data segment are reconstructed based on two different storage units in the (k + 2)-th storage unit group.

Citation Information

Patent Citations

  • Data restoration method based on multilayer cell solid state hard disc and solid state hard disc

    CN103279402A

  • Array type disk device preventing double fault of drive, program, and method

    JP2006164304A