An apparatus including a control unit, a memory having computer program code, and n groups of storage units electrically connected to the control unit is disclosed. Each of the n groups of storage units has n storage units, each of the n storage units has n storage regions, wherein n is a positive integer. The memory and the computer program code configured to, with the control unit, cause the apparatus to perform: storing a first data segment into an ith storage region of a first storage unit of a kth group of storage units; storing a fourth data segment into an ith storage region of a first storage it of a (k+1)th group of storage units; storing a fifth data segment into an ith storage region of a second storage unit of the (k+1)th group of storage units; and storing a sixth data segment into an ith storage region of a third storage unit of 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.
|
20. A method for rebuilding data in a storage system having n groups of storage units each having n storage units, each storage unit of the n group of storage units having n storage regions, wherein n is a positive integer, the method comprising:
rebuilding a first data segment stored in an ith storage region of a first storage unit of a kth group of storage units according to only one storage unit of a (k+1)th group of storage units and only one storage unit of a (k+2)th group of storage units;
rebuilding a second data segment stored in an (i+1)th storage region of the first storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units;
wherein
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 rebuilt according to two different storage units of the (k+1)th group of storage units, and
the first data segment and the second data segment are rebuilt according to two different storage units of the (k+2)th group of storage units.
1. An apparatus, comprising:
a control unit;
a memory coupled to the control unit and including 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 regions, wherein n is a positive integer;
wherein the memory and the computer program code configured to, with the control unit, cause the apparatus to perform:
rebuilding a first data segment stored in an ith storage region of a first storage unit of a kth group of storage units according to only one storage unit of a (k+1)th group of storage units and only one storage unit of a (k+2)th group of storage units;
rebuilding a second data segment stored in an (i+1)th storage region of the first storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units;
wherein
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 rebuilt according to two different storage units of the (k+1)th group of storage units, and
the first data segment and the second data segment are rebuilt according to two different storage units of the (k+2)th group of storage units.
15. An apparatus, comprising:
a control unit;
a memory coupled to the control unit and including computer program code;
S group of storage units electrically connected to the control unit, a 1st group of storage units to a (S−1)th group of storage units each having n storage units, the Sth group of storage units having M storage units, each storage units of the S group of storage units having n storage regions, wherein n, S and M are positive integers and S and M are less than n;
wherein the memory and the computer program code configured to, with the control unit, cause the apparatus to perform:
rebuilding a first data segment stored in an ith storage region of a first storage unit of a kth group of storage units according to only one storage unit of a (k+1)th group of storage units and only one storage unit of the Sth group of storage units;
rebuilding a second data segment stored in an (i+2)th storage region of the first storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the Sth group of storage units;
wherein
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 rebuilt according to two different storage units of the (k+1)th group of storage units, and
the first data segment and the second data segment are rebuilt according to two different storage units of the Sth group of storage units.
2. The apparatus of
rebuilding a third data segment stored in an (i+2)th storage region of the first storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units.
3. The apparatus of
4. The apparatus of
5. The apparatus of
rebuilding a fourth data segment stored in an ith storage region of a second storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units.
6. The apparatus of
storing a seventh data segment into an ith storage region of the additional storage unit, wherein the fourth data segment and the first data segment are rebuilt according to the seventh data segment.
7. The apparatus of
8. The apparatus of
9. The apparatus of
rebuilding a fifth data segment stored in an (i+1)th storage region of the second storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units.
10. The apparatus of
11. The apparatus of
12. The apparatus of
rebuilding a sixth data segment stored in an ith storage region of a third storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units.
13. The apparatus of
14. The apparatus of
16. The apparatus of
rebuilding a third data segment stored in an ith storage region of a second storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the Sth group of storage units.
17. The apparatus of
18. The apparatus of
rebuilding a fourth data segment stored in an (i+2)th storage region of the second storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the Sth group of storage units.
19. The apparatus of
21. The method of
rebuilding a third data segment stored in an ith storage region of a second storage unit of the kth group of storage units according to only one storage unit of the (k+1)th group of storage units and only one storage unit of the (k+2)th group of storage units.
22. The method of
|
The subject application generally relates to storage space management, and specifically relates to an apparatus and method of automatic configuration of storage space.
Some solutions were developed to provide a safe data storage. However, as technology progresses, security of data or files (or backup of data) becomes a critical issue.
A new data allocation mechanism is proposed. The storage units in an array are categorized as several groups. The data to be stored in the storage units are arranged in a specific manner so that the rebuilding work for one failed storage unit of one group can be shared by the storage units of the other groups. Specifically, the data to be stored in the storage units are arranged according to mutually orthogonal Latin squares so that specific data on a storage unit of one group can be rebuilt using the data stored in only one storage unit from each of the other groups. This can increase the speed of rebuilding the data stored in a failed storage unit. In addition, a new data allocation mechanism is proposed to improve the capacity efficiency of an array of storage units based on the expansion of mutually orthogonal Latin squares.
In accordance with some embodiments of the present disclosure, 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, each of the N storage units has N storage regions, wherein N is a positive integer. The memory and the computer program code configured to, with the control unit, cause the apparatus to perform: (1) storing a first data segment into an ith storage region of a first storage unit of a kth group of storage units; (2) storing a second data segment into ith storage region of a second storage unit of the kth group of storage units; (3) storing a third data segment into an ith storage region of a third storage unit of the kth group of storage units; (4) storing a fourth data segment into an ith storage region of a first storage unit of a (k+1)th group of storage units; (5) storing a fifth data segment into an ith storage region of a second storage unit of the (k+1)th group of storage units; and (6) storing a sixth data segment into an ith storage region of a third storage unit of the (k+1)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. 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.
An apparatus in accordance with some embodiments of the present disclosure is disclosed. The apparatus includes a control unit, a memory coupled to control and including computer program code, and S groups of storage units electrically connected to the control unit. A 1st group of storage units to the (S−1)th group of storage units each has N storage units, the Sth group of storage units has M storage units. Each storage units of the S group of storage units has N storage regions, wherein N, S and M are positive integers. S and M are less than N. The memory and the computer program code configured to, with the control unit, cause the apparatus to perform: (1) storing a first data segment into an ith storage region of a first storage unit of a kth group of storage units; (2) storing a second data segment into an ith storage region of a second storage unit of the kth group of storage units; (3) storing a third data segment into an ith storage region of a third storage unit of the kth group of storage units; (4) storing a fourth data segment into an ith storage region of a first storage unit of the Sth group of storage units; (5) storing a fifth data segment into an ith storage region of a second storage unit of the Sth group of storage units, and (6) storing a sixth data segment into an ith storage region of a third storage unit of the Sth 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. 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.
In accordance with some embodiments of the present disclosure, a method for storing data in a storage system is disclosed. The storage system has N groups of storage units each having N storage units. Each storage unit of the N group of storage units has N storage regions, wherein N is a positive integer. The method comprising: (1) storing a first data segment into an ith storage region of a first storage unit of a kth group of storage units; (2) storing a second data segment into an ith storage region of a second storage unit of the kth group of storage units; (3) storing a third data segment into an ith storage region of a third storage unit of the kth group of storage units; (4) storing a fourth data segment into an ith storage region of a first storage unit of a (k+1)th group of storage units; (5) storing a fifth data segment into an ith storage region of a second storage unit of the (k+1)th group of storage units; and (6) storing a sixth data segment into an ith storage region of a third storage unit of the (k+1)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. 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.
Aspects of the present disclosure are readily understood from the following detailed description when read with the accompanying figures. It is noted that various features may not be drawn to scale, and the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion.
Embodiments of the present disclosure and use thereof are discussed in detail below. It should be appreciated, however, that the embodiments set forth many applicable concepts that can be embodied in a wide variety of specific contexts. It is to be understood that the following disclosure provides for many different embodiments or examples of implementing different features of various embodiments. Specific examples of components and arrangements are described below for purposes of discussion. These are, of course, merely examples and are not intended to be limiting.
Spatial descriptions, including such terms as “above,” “below,” “up,” “left,” “right,” “down,” “top,” “bottom,” “vertical,” “horizontal,” “side,” “higher,” “lower,” “upper,” “over,” “under,” and so forth, are used herein with respect to an orientation shown in corresponding figures unless otherwise specified. It should be understood that the spatial descriptions used herein are for purposes of illustration, and that practical implementations of the structures described herein can be spatially arranged in any orientation or manner, provided that the merits of embodiments of this disclosure are not deviated from by such arrangement.
Embodiments, or examples, illustrated in the figures are disclosed below using specific language. It will nevertheless be understood that the embodiments and examples are not intended to be limiting. Any alterations and modifications of the disclosed embodiments, and any further applications of the principles disclosed in this document, as would normally occur to one of ordinary skill in the pertinent art, fall within the scope of this disclosure.
In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed herein.
Arranging several storage units into an array to provide greater storage space and/or higher performance is a technology that has been widely used in industry. For example, RAID (Redundant Array of Independent Disks) was developed in the 1980s. The initial objective of RAID technology was to provide larger storage space and high performance by combining several inexpensive and low performance storage units (for example, hard drives) into an array. Since such an array may include a large number of storage units, data protection and data integrity become an important consideration for the array. Various solutions have been developed to provide safe data storage.
A common method for providing data protection to an array of storage units is to include redundant data patterns (for example, error correction data patterns, parity checking data patterns) within the array. Different technologies (for example, RAID level 5 and RAID level 6) have been developed to provide data integrity within the array of storage units. Once any one of the storage units within the array fails, or the data stored in any one of the storage units is lost, the lost data can be reconstructed or rebuilt based on the redundant data.
When one storage unit of the array is rebuilding, the input/output terminals (I/Os) of the array will be heavily occupied and the overall operations of the array get slower. In addition, the array is in a critical status in the duration when one storage unit of the array of storage units is rebuilding, because the array may not tolerate more storage units failure during this duration. As technology progresses, the speed for data recovery has become an important consideration because as the capacity of storage units increases, the time needed to reconstruct all the data stored in a failed storage unit increases as well. There is a need to develop a new mechanism to increase the speed for rebuilding an array of storage units.
Referring to
A number of external devices or client hosts 14 are electrically connected to the apparatus 1 through either a wired or wireless communication interface (not illustrated in
The memory unit 10 includes a cache 6. The memory unit 10 includes a set of lookup tables 8. The memory 10 may include computer program code stored therein (not illustrated in
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 (A SIP), 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 storage controller, a floating-point unit, a network processor, a multi-core processor, a front-end processor or 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 transceiving unit 12. The control unit 2 is electrically connected to the storage system 16.
The acceleration unit 4 may include but is not limited to, fir example, a microprocessor, a coprocessor, an application-specific instruction set processor (ASID), a physics processing unit (PPU), a digital signal processor (DSP), a synergistic processing elementor the like. The acceleration unit 4 is able to supplement the functions of the control unit 2. Operation performed by the acceleration unit 4 may include but is not limited to, for example, floating point arithmetic, graphics, signal processing, string processing, cryptography or I/O interfacing with peripheral devices. Performance of apparatus 1 may be accelerated with the help of the acceleration unit 4, which shares some tasks with the control unit 2.
The memory unit 10 may include but is not limited to a random-access memory (RAM) such as a static RAM (SRAM) or a dynamic RAM (DRAM). In some embodiments, the memory unit 10 may include a read-only memory (ROM). The memory unit 10 includes a cache 6 for storing data that have recently been accessed, so that future requests for that data can be served faster. The data stored in the cache 6 may include the result of an earlier computation of the control unit 2 or the acceleration unit 4. The data stored in the cache 6 may include a copy of data stored in one of the storage units 16.
The memory unit 10 includes a set of lookup tables 8. A lookup table 8 may include addresses of storage unit in the storage system 16 to be assigned to data. A lookup table 8 may include data attributes. A lookup table 8 may include categorization associated with data attributes. A lookup table 8 may include addresses of storage unit in the storage system 16 to be assigned to error correction data. A lookup table 8 may include addresses of storage unit in the storage system 16 to be assigned to reconstruction data. It is contemplated that the lookup tables 8 may be integrated into one single lookup table.
The apparatus 1 can access the storage system 16 based on the lookup table(s) 8. Based on the lookup table(s) 8, the apparatus 1 may reconstruct or rebuild data in the storage system 16. Based on the lookup table(s) 8, the apparatus 1 may store the reconstructed or rebuilt data in a spare region or space in the storage system 16.
The control unit 2 may be configured to create or generate lookup table(s) 8 and store them in the memory unit 10. The control unit 2 is configured to update the lookup table(s) 8 for a new or different data arrangement, deployment or allocation scheme in the storage system 16. The control unit 2 is configured to create or generate the lookup table(s) 8 and store them in the storage system 16. The control unit 2 is configured to read the lookup table(s) 8 from the storage system 16 and write them in the memory unit 10.
The transceiving unit 12 involves communications between the apparatus 1 and the external devices 14. The transceiving unit 12 involves communications between the apparatus 1 and the storage system 17. The transceiving unit 12 may include hardware component(s), software implementation compatible with an interface or communication protocol 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 service such as GSM, CDMA, CPRS, WCDMA, EDGE, CDMA2000 or LTE, or a combination of the above. An electrical connection exists between the control unit 2 and the transceiving unit 12. The electrical connection between the control unit 2 and the transceiving unit 12 may include but is not limited to a high speed I/O connection.
The storage system 16 includes multiple storage units. The storage unit of the storage system 16 may include but is not limited to, for example, a hard disk drive (HDD), a solid-state drive (SSD), an embedded multimedia card (eMMC), a secure digital (SD) memory card, or other type of storage device. The storage units of the storage system 16 may be arranged in an array and electrically connected to the control unit 2. In some embodiment, the lookup tables 8 may be stored in one of the storage units 16 and the control unit 2 can determine when to read them and put them into the memory unit 10.
The storage system 17 is similar to the storage system 16. The storage system 17 may function as a local data backup for the storage system 16. The storage system 17 may function as a cloud backup or online backup for the storage system 16.
The client hosts 14 may include an electronic device, for example but is not limited to, personal computer, laptop, server, mobile phone, tablet, internet of things (IoT) device, or the like.
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 apparatus 1 are illustrated.
Referring to
Each of the storage units 16-1 to 16-8 includes a plurality of storage regions. In the embodiment shown in
Although not labeled in
The data to be stored in the consecutive storage regions of the storage units may be referred to as data segments in the subsequent paragraphs. The data to be stored in the consecutive storage regions of the storage units may be referred to as data patterns the subsequent paragraphs.
In some embodiments, the consecutive storage region 16-8A may include a series of physically or logically consecutive addresses. The consecutive storage region 16-8B may include a series of physically or logically consecutive addresses. The consecutive storage region 16-8C may include a series of physically or logically consecutive addresses. The consecutive storage region 16-8D may include a series of physically or logically consecutive addresses.
For example, the consecutive storage region 16-8A may include a series of logically consecutive addresses [WW0001], [WW0002], [WW0003], [WW0004], [WW0005] in the storage unit 16-8. The consecutive storage region 16-89 may include a series of logically consecutive addresses [XX0001], [XX0002], [XX0003], [XX0004], [XX0005] in the storage unit 16-8. The consecutive storage region 16-8C may include a series of logically consecutive addresses [YY0001], [YY0002], [YY0003], [YY0004], [YY0005] in the storage unit 16-8. The consecutive storage region 16-8D may include a series of logically consecutive addresses [ZZ0001], [ZZ0002], [ZZ0003], [ZZ0004], [ZZ0005] in the storage unit 16-8.
In some embodiments, the consecutive storage region 16-8B is next to the consecutive storage region 16-8A. The consecutive storage region 16-8C is next to the consecutive storage region 16-8B. The consecutive storage region 16-8D is next to the consecutive storage region 16-8C. In some embodiments, the consecutive storage regions 16-8A, 16-8B, 16-8C and 16-8D may be adjacent to each other. In some embodiments, the consecutive storage regions 16-8A, 16-8B, 16-8C and 16-8D are not adjacent area to each other.
In some embodiments, the consecutive storage region 16-8A may include a series of physically consecutive sectors 1, 2, 3, 4, 5 on a track 1 in the storage unit 16-8. The consecutive storage region 16-8B may include a series of physically consecutive sectors 6, 7, 8, 9, 10 on the track 1 in the storage unit 16-8. The consecutive storage region 16-1C may include physically consecutive sectors 11, 12, 13, 14, 15 on the track 1 in the storage unit 16-8. The consecutive storage region 16-1D may include physically consecutive sectors 16, 17, 18, 19, 20 on the track 1 in the storage unit 16-8.
In some embodiments, the consecutive storage regions 16-8A and 16-8B are configured to have an end-to-end arrangement. The consecutive storage regions 16-8B and 16-8C are configured to have an end-to-end arrangement. The consecutive storage regions 16-8C and 16-8D are configured to have an end-to-end arrangement. It is contemplated that any two of the consecutive storage regions 16-8A, 16-8B, 16-8C and 16-8D may be swapped.
Each of the storage units 16-1 to 16-7 may has a storage configuration same or similar to the storage unit 16-8. It is contemplated that each of the storage units 16-1 to 16-8 may be configured to have more or less consecutive storage regions.
The control unit 2 may store the data into the storage units 16-1 to 16-8 in accordance with the lookup table(s) 8 as shown in
In the embodiment shown in
The data integrity protection in the subarrays 20-1 and 20-2 are implemented by groups. The data protection is provided across the data categorized as the same group. For example, if the storage unit 16-1 fails or is damaged, the data stored therein can be reconstructed or rebuilt according to the data stored in the storage units 16-2, 16-3 and 16-4. Similarly, if the storage unit 16-5 fails or is damaged, the data stored therein can be reconstructed or rebuilt according to the data stored in the storage units 16-6, 16-7 and 16-8.
The data integrity protection in the subarrays 20-1 and 20-2 are implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups G1A. Data protection is provided across the data categorized as subgroups G1B. Data protection is provided across the data categorized as subgroups G1C. Data protection is provided across the data categorized as subgroups G1D.
Similarly, data protection is provided across the data categorized as subgroups G2A. Data protection is provided across the data categorized as subgroups G2B. Data protection is provided across the data categorized as subgroups G2C. Data protection is provided across the data categorized as subgroups G2D.
Take the subarray 20-1 as an example, the dashed-lined rectangle 24 indicates a set of data stored across storage units 16-1 to 16-4 and categorized as subgroup G1A. Data protection is provided across the data within the subgroup G1A. In some embodiments, one of the four data categorized as subgroup G1A includes error correction data associated with the subgroup G1A.
In some embodiments, the error correction data may include even parity data associated with the data categorized as subgroup G1A. In some embodiments, the error correction data may include odd parity data associated with the data categorized as subgroup G1A. It can be contemplated that the subgroup G1A may include any other error correction data adopted by other erasure codes techniques.
Assuming that the data stored in the storage region 16-2A of the storage unit 16-2 includes error correction data associated with the data categorized as the subgroup G1A. Once the data categorized within the subgroup G1A (e.g., the data stored in the storage region 16-1A of the storage unit 16-1) fails or is damaged, the data stored therein can be reconstructed or rebuilt according to error correction data and the remaining data (e.g., the data stored in the storage region 16-3A of the storage unit 16-3 and the data stored in the storage region 16-4A of the storage unit 16-4) of the subgroup G1A.
Take the subarray 20-2 as an example, the dashed-lined rectangle 26 indicates a set of data stored across storage units 16-5 to 16-8 and categorized as subgroup G2D. Data protection is provided across the data within the subgroup G2D. In some embodiments, one of the four data categorized as subgroup G2D includes error data associated with the subgroup G2D.
In some embodiments, the error correction data may include even parity data associated with the data categorized as subgroup G2D. In some embodiments, the error correction data may include odd parity data associated with the data categorized as subgroup G2D. It can be contemplated that the subgroup G2D may include any other error correction data adopted by other erasure codes techniques.
Assuming that the data stored in the storage region 16-6D of the storage unit 16-6 includes error correction data associated with the data categorized as the subgroup G2D. Once the data categorized within the subgroup G2D (e.g., the data stored in the storage region 16-5D of the storage unit 16-5) fails or is damaged, the data stored therein can be reconstructed or rebuilt according to error correction data and the remaining data (e.g., the data stored in the storage region 16-7A of the storage unit 16-7 and the data stored in the storage region 16-8A of the storage unit 16-8) of the subgroup G2D.
In some embodiments, a file received from an external device (for example, one of the client hosts 14 shown in
In some embodiments, a file received from an external device (for example, one of the client hosts 14 shown in
The data allocation mechanism shown in
Using the data allocation mechanism shown in
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 apparatus 1 are illustrated.
The control unit 2 may store the data into the storage units 16-1 to 16-8 in accordance with the lookup tables) 8 as shown in
The data integrity protection in the array 20 of
The data integrity protection in the array 20 is implemented by groups. The data protection is provided across the data categorized as the same group. For example, data protection is provided across the data categorized as group G1. Data protection is provided across the data categorized as group G2.
The data integrity protection in the array 20 is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups G1A. Data protection is provided across the data categorized as subgroups G1B. Data protection is provided across the data categorized as subgroups G1C. Data protection is provided across the data categorized as subgroups G1D.
Similarly, data protection is provided across the data categorized as subgroups G2A. Data protection is provided across the data categorized as subgroups G2B. Data protection is provided across the data categorized as subgroups G2C. Data protection is provided across the data categorized as subgroups G2D.
In some embodiments, one of the four data categorized as subgroup G1A includes error correction data associated with the subgroup G1A. In some embodiments, one of the four data categorized as subgroup G1B includes error correction data associated with the subgroup G1B. In some embodiments, one of the four data categorized as subgroup G1C includes error correction data associated with the subgroup G1C. In some embodiments, one of the four data categorized as subgroup G1D includes error correction data associated with the subgroup G1D.
In some embodiments, one of the four data categorized as subgroup G2A includes error correction data associated with the subgroup G2A. In some embodiments, one of the four data categorized as subgroup G2B includes error correction data associated with the subgroup G2B. In some embodiments, one of the four data categorized as subgroup G2C includes error correction data associated with the subgroup G2C. In some embodiments, one of the four data categorized as subgroup G2D includes error correction data associated with the subgroup G2D.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
If one of the data in a subgroup (e.g., subgroup G1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup. For example, if the storage unit 16-1 fails or is damaged, the data stored in the consecutive storage region 16-1A of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1A (e.g., the data stored in the consecutive storage regions 16-3A, 16-5A and 16-7A). The data stored in the consecutive storage region 16-1B of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1B (e.g., the data stored in the consecutive storage regions 16-3B, 16-6B and 16-8B). The data stored in the consecutive storage region 16-1C of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1C (e.g., the data stored in the consecutive storage regions 16-4C, 16-5C and 16-8C). The data stored in the consecutive storage region 16-1D of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1D (e.g., the data stored in the consecutive storage regions 16-4D, 16-6D and 16-7D).
Referring to
In the storage space configuration shown in
Referring to
Although not labeled in
The control unit 2 may store the data into the storage units 16-1 to 16-9 in accordance with the lookup table(s) 8 as shown in
The data integrity protection in the array 30 is implemented by groups. The data protection is provided across the data categorized as the same group. For example, data protection is provided across the data categorized as group G1. Data protection is provided across the data categorized as group G2. Data protection is provided across the data categorized as group G3.
The data integrity protection in the array 30 is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups G1A. Data protection is provided across the data categorized as subgroups G1B. Data protection is provided across the data categorized as subgroups G1C.
Data protection is provided across the data categorized as subgroups G2A. Data protection is provided across the data categorized as subgroups G2B. Data protection is provided across the data categorized as subgroups G2C.
Similarly, data protection is provided across the data categorized as subgroups G3A. Data protection is provided across the data categorized as subgroups G3B. Data protection is provided across the data categorized as subgroups G3C.
In some embodiments, one of the three data categorized as subgroup G1A includes error correction data associated with the subgroup G1A. In some embodiments, one of the three data categorized as subgroup G1B includes error correction data associated with the subgroup G1B. In some embodiments, one of the three data categorized as subgroup G1C includes error correction data associated with the subgroup G1C.
In some embodiments, one of the three data categorized as subgroup G2A includes error correction data associated with the subgroup G2A. In some embodiments, one of the three data categorized as subgroup G2B includes error correction data associated with the subgroup G2B. In some embodiments, one of the three data categorized as subgroup G2C includes error correction data associated with the subgroup G2C.
In some embodiments, one of the three data categorized as subgroup G3A includes error correction data associated with the subgroup G3A. In some embodiments, one of the three data categorized as subgroup G3B includes error correction data associated with the subgroup G3B. In some embodiments, one of the three data categorized as subgroup G3C includes error correction data associated with the subgroup G3C.
If one of the data in a subgroup (e.g., subgroup G1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup. For example, if the storage unit 16-1 fails or is damaged, the data stored in the consecutive storage region 16-1A of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1A (e.g., the data stored in the consecutive storage regions 16-4A and 16-7A). The data stored in the consecutive storage region 16-1B of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1B (e.g., the data stored in the consecutive storage regions 16-6B and 16-8B). The data stored in the consecutive storage region 16-1C of the storage unit 16-1 can be rebuilt or reconstructed according to the other data in the subgroup G1C (e.g., the data stored in the consecutive storage regions 16-5C and 16-9C).
In the storage space configuration shown in
In the storage space configuration shown in
Specifically, each of the storage units involved in the data reconstruction process only needs to offer 33% of its data, it can be expected that the time spent on reading data from the storage units involved is reduced 67%. The speed of data reconstruction process is then increased by triple times.
As shown in
The arrays A1, A2 and A3 of the matrix 35A are orthogonal to each other because the arrays A1, A2 and A3 comply with the following equation:
Ai∩Aj=Ø if i≠j (1)
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 the matrix 35B are orthogonal to each other, and the arrays C1, C2 and C3 of the matrix 35C are orthogonal to each other. The arrays B1, B2, B3, C1, C2 and C3 comply with the following equations:
Bi∩Bj=Ø if i≠j (2)
Ci∩Cj=Ø if i≠j (3)
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.
The matrix 35B and 35C are mutual orthogonal Latin square set then the arrays B1, B2, B3, C1, C2 and C3 comply with the following equation:
Bi∩Cj={one element of {1,2,3}} (4)
That is, the intersection of one array of the matrix 35B and one array of the matrix 35C is one element. For example, the intersection of the array B1 and the array C1 is “1,” the intersection of the array B1 and the array C2 is “3,” and the intersection of the array B1 and the array C3 is “2.”
The matrices 35A, 35B and 35C also comply with the following equations:
Ai∩Bj={one element of {1,2,3}} (5)
Ai∩Cj={one element of {1,2,3}} (6)
That is, the intersection of one array of the matrix 35A and one array of the matrix 35B is one element, and the intersection of one array of the matrix 35A and one array of the matrix 35C is one element. For example, the intersection of the array A1 and the array B1 is “1,” the intersection of the array A1 and the array B2 is “1,” and the intersection of the array A1 and the array B3 is “1” Similarly, the intersection of the array A2 and the array C1 is “2,” the intersection of the array A2 and the array C2 is “2,” and the intersection of the array A2 and the array C3 is “2.”
Following the rules illustrated above, any array within the matrix 35A intersects only one element of any array within the matrix 35B, and only one element of any array within the matrix 35C. One array within the matrix 35B intersects only one element of any array within the matrix 35A and only one element of any array within the matrix 35C. One array within the matrix 35C intersects only one element of any array within the matrix 35A and only one element of any array within the matrix 35B.
Referring to
It can be contemplated that a higher order mutual orthogonal Latin square set may be utilized. For example, if an order 4 mutual orthogonal Latin square set is used, the rebuilding speed can be increased by 4 times, and the rebuilding speed can be increased by 5 times if an order 5 mutual orthogonal Latin square set is used.
Each of the matrices 36A, 36B and 36C includes several arrays A1, A2 and A3 arranged based on the mutual orthogonal Latin square set principle as illustrated in accordance with
Referring to
Although not labeled in
Referring to
The data integrity protection in the subarrays 36A, 36B and 36C is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups 1A. Data protection is provided across the data categorized as subgroups 1B. Data protection is provided across the data categorized as subgroups 1C. Data protection is provided across the data categorized as subgroups 1D. Data protection is provided across the data categorized as subgroups 1E. Data protection is provided across the data categorized as subgroups 1F. Data protection is provided across the data categorized as subgroups 1G. Data protection is provided across the data categorized as subgroups 1H. Data protection is provided across the data categorized as subgroups 1I.
Similarly, data protection is provided across the data categorized as subgroups 2A. Data protection is provided across the data categorized as subgroups 2B. Data protection is provided across the data categorized as subgroups 2C. Data protection is provided across the data categorized as subgroups 2D. Data protection is provided across the data categorized as subgroups 2E. Data protection is provided across the data categorized as subgroups 2F. Data protection is provided across the data categorized as subgroups 2G. Data protection is provided across the data categorized as subgroups 2H. Data protection is provided across the data categorized as subgroups 2I.
Additionally, data protection is provided across the data categorized as subgroups 3A. Data protection s provided across the data categorized as subgroups 3B. Data protection is provided across the data categorized as subgroups 3C. Data protection is provided across the data categorized as subgroups 3D. Data protection is provided across the data categorized as subgroups 3E. Data protection is provided across the data categorized as subgroups 3F. Data protection is provided across the data categorized as subgroups 3G. Data protection is provided across the data categorized as subgroups 3H. Data protection is provided across the data categorized as subgroups 3I.
In some embodiments, one of the three data categorized as subgroup 1A includes error correction data associated with the subgroup 1A. In some embodiments, one of the three data categorized as subgroup 1B includes error correction data associated with the subgroup 1B. In some embodiments, one of the three data categorized as subgroup 1C includes error correction data associated with the subgroup 1C. In some embodiments, one of the three data categorized as subgroup 1D includes error correction data associated with the subgroup 1D. In some embodiments, one of the three data categorized as subgroup 1E includes error correction data associated with the subgroup 1E. In some embodiments, one of the three data categorized as subgroup 1F includes error correction data associated with the subgroup 1F. In some embodiments, one of the three data categorized as subgroup 1G includes error correction data associated with the subgroup 1G. In some embodiments, one of the three data categorized as subgroup 1H includes error correction data associated with the subgroup 1H. In some embodiments, one of the three data categorized as subgroup 1I includes error correction data associated with the subgroup 1I.
In some embodiments, one of the three data categorized as subgroup 2A includes error correction data associated with the subgroup 2A. In some embodiments, one of the three data categorized as subgroup 2B includes error correction data associated with the subgroup 2B. In some embodiments, one of the three data categorized as subgroup 2C includes error correction data associated with the subgroup 2C. In some embodiments, one of the three data categorized as subgroup 2D includes error correction data associated with the subgroup 2D. In some embodiments, one of the three data categorized as subgroup 2E includes error correction data associated with the subgroup 2E. In some embodiments, one of the three data categorized as subgroup 2E includes error correction data associated with the subgroup 2F. In some embodiments, one of the three data categorized as subgroup 2G includes error correction data associated with the subgroup 2G. In some embodiments, one of the three data categorized as subgroup 2H includes error correction data associated with the subgroup 2H. In some embodiments, one of the three data categorized as subgroup 2I includes error correction data associated with the subgroup 2I.
In some embodiments, one of the three data categorized as subgroup 3A includes error correction data associated with the subgroup 3A. In some embodiments, one of the three data categorized as subgroup 3B includes error correction data associated with the subgroup 3B. In some embodiments, one of the three data categorized as subgroup 3C includes error correction data associated with the subgroup 3C. In some embodiments, one of the three data categorized as subgroup 3D includes error correction data associated with the subgroup 3D. In some embodiments, one of the three data categorized as subgroup 3E includes error correction data associated with the subgroup 3E. In some embodiments, one of the three data categorized as subgroup 3F includes error correction data associated with the subgroup 3F. In some embodiments, one of the three data categorized as subgroup 3G includes error correction data associated with the subgroup 3G. In some embodiments, one of the three data categorized as subgroup 3H includes error correction data associated with the subgroup 3H. In some embodiments, one of the three data categorized as subgroup 3I includes error correction data associated with the subgroup 3I.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
If one of the data in a subgroup (e.g., subgroup 1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup.
For example, if the storage unit 16-4 fails or is damaged, the data stored in the consecutive storage region 16-4A of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 1A (e.g., the data stored in the consecutive storage regions 16-1A and 16-7A). The data stored in the consecutive storage region 16-4B of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 1B (e.g., the data stored in the consecutive storage regions 16-19 and 16-7B). The data stored in the consecutive storage region 16-4C of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 1C (e.g., the data stored in the consecutive storage regions 16-1C and 16-7C).
The data stored in the consecutive storage region 16-4D of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 2D (e.g., the data stored in the consecutive storage regions 16-2D and 16-9D). The data stored in the consecutive storage region 16-4E of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 2E (e.g., the data stored in the consecutive storage regions 16-2E and 16-9E). The data stored in the consecutive storage region 16-4F of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 2F (e.g., the data stored in the consecutive storage regions 16-2F and 16-9F).
The data stored in the consecutive storage region 16-4G of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 3G (e.g., the data stored in the consecutive storage regions 16-3G and 16-8G). The data stored in the consecutive storage region 16-41I of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 3H (e.g., the data stored in the consecutive storage regions 16-3H and 16-8H). The data stored in the consecutive storage region 16-4I of the storage unit 16-4 can be rebuilt or reconstructed according to the other data in the subgroup 3I (e.g., the data stored in the consecutive storage regions 16-3I and 16-8I).
Referring to
Each of the matrices 37A, 37B and 37C includes several arrays B1, B2 and B3 arranged based on the mutual orthogonal Latin square set principle as illustrated in accordance with
Referring to
Although not labeled in
Referring to
The data integrity protection in the subarrays 37A, 37B and 37C is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups 1A. Data protection is provided across the data categorized as subgroups 1B. Data protection is provided across the data categorized as subgroups 1C. Data protection is provided across the data categorized as subgroups 1D. Data protection is provided across the data categorized as subgroups 1E. Data protection is provided across the data categorized as subgroups 1F. Data protection is provided across the data categorized as subgroups 1G. Data protection is provided across the data categorized as subgroups 1H. Data protection is provided across the data categorized as subgroups 1I.
Similarly, data protection is provided across the data categorized as subgroups 2A. Data protection is provided across the data categorized as subgroups 2B. Data protection is provided across the data categorized as subgroups 2C. Data protection is provided across the data categorized as subgroups 2D. Data protection is provided across the data categorized as subgroups 2E. Data protection is provided across the data categorized as subgroups 2F. Data protection is provided across the data categorized as subgroups 2G. Data protection is provided across the data categorized as subgroups 2H. Data protection is provided across the data categorized as subgroups 2I.
Additionally, data protection is provided across the data categorized as subgroups 3A. Data protection is provided across the data categorized as subgroups 3B. Data protection is provided across the data categorized as subgroups 3C. Data protection is provided across the data categorized as subgroups 3D. Data protection is provided across the data categorized as subgroups 3E. Data protection is provided across the data categorized as subgroups 3F. Data protection is provided across the data categorized as subgroups 3G. Data protection is provided across the data categorized as subgroups 3H. Data protection is provided across the data categorized as subgroups 3I.
In some embodiments, one of the three data categorized as subgroup 1A includes error correction data associated with the subgroup 1A. In some embodiments, one of the three data categorized as subgroup 1B includes error correction data associated with the subgroup 1B. In some embodiments, one of the three data categorized as subgroup 1C includes error correction data associated with the subgroup 1C. In some embodiments, one of the three data categorized as subgroup 1D includes error correction data associated with the subgroup 1D. In some embodiments, one of the three data categorized as subgroup 1E includes error correction data associated with the subgroup 1E. In some embodiments, one of the three data categorized as subgroup 1F includes error correction data associated with the subgroup 1F. In some embodiments, one of the three data categorized as subgroup 1G includes error correction data associated with the subgroup 1G. In some embodiments, one of the three data categorized as subgroup 1H includes error correction data associated with the subgroup 1H. In some embodiments, one of the three data categorized as subgroup 1I includes error correction data associated with the subgroup 1I.
In some embodiments, one of the three data categorized as subgroup 2A includes error correction data associated with the subgroup 2A. In some embodiments, one of the three data categorized as subgroup 2B includes error correction data associated with the subgroup 2B. In some embodiments, one of the three data categorized as subgroup 2C includes error correction data associated with the subgroup 2C. In some embodiments, one of the three data categorized as subgroup 2D includes error correction data associated with the subgroup 2D. In some embodiments, one of the three data categorized as subgroup 2E includes error correction data associated with the subgroup 2E. In some embodiments, one of the three data categorized as subgroup 2F includes error correction data associated with the subgroup 2F. In some embodiments, one of the three data categorized as subgroup 2G includes error correction data associated with the subgroup 2G. In some embodiments, one of the three data categorized as subgroup 2H includes error correction data associated with the subgroup 2H. In some embodiments, one of the three data categorized as subgroup 2I includes error correction data associated with the subgroup 2I.
In some embodiments, one of the three data categorized as subgroup 3A includes error correction data associated with the subgroup 3A. In some embodiments, one of the three data categorized as subgroup 3B includes error correction data associated with the subgroup 3B. In some embodiments, one of the three data categorized as subgroup 3C includes error correction data associated with the subgroup 3C. In some embodiments, one of the three data categorized as subgroup 3D includes error correction data associated with the subgroup 3D. In some embodiments, one of the three data categorized as subgroup 3E includes error correction data associated with the subgroup 3E. In some embodiments, one of the three data categorized as subgroup 3F includes error correction data associated with the subgroup 3F. In some embodiments, one of the three data categorized as subgroup 3G includes error correction data associated with the subgroup 3G. In some embodiments, one of the three data categorized as subgroup 3H includes error correction data associated with the subgroup 3H. In some embodiments, one of the three data categorized as subgroup 3I includes error correction data associated with the subgroup 3I.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
If one of the data in a subgroup (e.g., subgroup 1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup.
For example, if the storage unit 16-13 fails or is damaged, the data stored in the consecutive storage region 16-13A of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 1A (e.g., the data stored in the consecutive storage regions 16-10A and 16-16A). The data stored in the consecutive storage region 16-13B of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 2B (e.g., the data stored in the consecutive storage regions 16-10B and 16-16B). The data stored in the consecutive storage region 16-13C of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 3C (e.g., the data stored in the consecutive storage regions 16-10C and 16-16C).
The data stored in the consecutive storage region 16-13D of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 2D (e.g., the data stored in the consecutive storage regions 16-11D and 16-18D). The data stored in the consecutive storage region 16-13E of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 3E (e.g., the data stored in the consecutive storage regions 16-11E and 16-18E). The data stored in the consecutive storage region 16-13F of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 1F (e.g., the data stored in the consecutive storage regions 16-11F and 16-18F).
The data stored in the consecutive storage region 16-13G of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 3G (e.g., the data stored in the consecutive storage regions 16-12G and 16-17G). The data stored in the consecutive storage region 16-13H of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 1H (e.g., the data stored in the consecutive storage regions 16-12H and 16-17H). The data stored in the consecutive storage region 16-13I of the storage unit 16-13 can be rebuilt or reconstructed according to the other data in the subgroup 2I (e.g., the data stored in the consecutive storage regions 16-12I and 16-17I).
Referring to
Each of the matrices 38A. 38B and 38C includes several arrays C1, C2 and C3 arranged based on the mutual orthogonal Latin square set principle as illustrated in accordance with
Referring to
Although not labeled in
Referring to
The data integrity protection in the subarrays 38A, 38B and 38C is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups 1A. Data protection is provided across the data categorized as subgroups 1B. Data protection is provided across the data categorized as subgroups 1C. Data protection is provided across the data categorized as subgroups 1D. Data protection is provided across the data categorized as subgroups 1E. Data protection is provided across the data categorized as subgroups 1F. Data protection is provided across the data categorized as subgroups 1G. Data protection is provided across the data categorized as subgroups 1H. Data protection is provided across the data categorized as subgroups 1I.
Similarly, data protection is provided across the data categorized as subgroups 2A. Data protection is provided across the data categorized as subgroups 2B. Data protection is provided across the data categorized as subgroups 2C. Data protection is provided across the data categorized as subgroups 2D. Data protection is provided across the data categorized as subgroups 2E. Data protection is provided across the data categorized as subgroups 2F. Data protection is provided across the data categorized as subgroups 2G. Data protection is provided across the data categorized as subgroups 2H. Data protection is provided across the data categorized as subgroups 2I.
Additionally, data protection is provided across the data categorized as subgroups 3A. Data protection is provided across the data categorized as subgroups 3B. Data protection is provided across the data categorized as subgroups 3C. Data protection is provided across the data categorized as subgroups 3D. Data protection is provided across the data categorized as subgroups 3E. Data protection is provided across the data categorized as subgroups 3F. Data protection is provided across the data categorized as subgroups 3G. Data protection is provided across the data categorized as subgroups 3H. Data protection is provided across the data categorized as subgroups 3I.
In some embodiments, one of the three data categorized as subgroup 1A includes error correction data associated with the subgroup 1A. In some embodiments, one of the three data categorized as subgroup 1B includes error correction data associated with the subgroup 1B. In some embodiments, one of the three data categorized as subgroup 1C includes error correction data associated with the subgroup 1C. In some embodiments, one of the three data categorized as subgroup 1D includes error correction data associated with the subgroup 1D. In some embodiments, one of the three data categorized as subgroup 1E includes error correction data associated with the subgroup 1E. In some embodiments, one of the three data categorized as subgroup 1F includes error correction data associated with the subgroup 1F. In some embodiments, one of the three data categorized as subgroup 1G includes error correction data associated with the subgroup 1G. In some embodiments, one of the three data categorized as subgroup 1H includes error correction data associated with the subgroup 1H. In some embodiments, one of the three data categorized as subgroup 1I includes error correction data associated with the subgroup 1I.
In some embodiments, one of the three data categorized as subgroup 2A includes error correction data associated with the subgroup 2A. In some embodiments, one of the three data categorized as subgroup 2B includes error correction data associated with the subgroup 2B. In some embodiments, one of the three data categorized as subgroup 2C includes error correction data associated with the subgroup 2C. In some embodiments, one of the three data categorized as subgroup 2D includes error correction data associated with the subgroup 2D. In some embodiments, one of the three data categorized as subgroup 2E includes error correction data associated with the subgroup 2E. In some embodiments, one of the three data categorized as subgroup 2F includes error correction data associated with the subgroup 2F. In some embodiments, one of the three data categorized as subgroup 2G includes error correction data associated with the subgroup 2C In some embodiments, one of the three data categorized as subgroup 2H includes error correction data associated with the subgroup 2H. In some embodiments, one of the three data categorized as subgroup 2I includes error correction data associated with the subgroup 2I.
In some embodiments, one of the three data categorized as subgroup 3A includes error correction data associated with the subgroup 3A. In some embodiments, one of the three data categorized as subgroup 3B includes error correction data associated with the subgroup 3B. In some embodiments, one of the three data categorized as subgroup 3C includes error correction data associated with the subgroup 3C. In some embodiments, one of the three data categorized as subgroup 3D includes error correction data associated with the subgroup 3D. In some embodiments, one of the three data categorized as subgroup 3E includes error correction data associated with the subgroup 3E. In some embodiments, one of the three data categorized as subgroup 3F includes error correction data associated with the subgroup 3F. In some embodiments, one of the three data categorized as subgroup 3G includes error correction data associated with the subgroup 3G. In some embodiments, one of the three data categorized as subgroup 3H includes error correction data associated with the subgroup 3H. In some embodiments, one of the three data categorized as subgroup 3I includes error correction data associated with the subgroup 3I.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
If one of the data in a subgroup (e.g., subgroup 1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup.
For example, if the storage unit 16-22 fails or is damaged, the data stored in the consecutive storage region 16-22A of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 1A (e.g., the data stored in the consecutive storage regions 16-19A and 16-25A). The data stored in the consecutive storage region 16-22B of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 3B (e.g., the data stored in the consecutive storage regions 16-19B and 16-25B). The data stored in the consecutive storage region 16-22C of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 2C (e.g., the data stored in the consecutive storage regions 16-19C and 16-25C).
The data stored in the consecutive storage region 16-22D of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 2D (e.g., the data stored in the consecutive storage regions 16-20D and 16-27D). The data stored in the consecutive storage region 16-22E of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 1E (e.g., the data stored in the consecutive storage regions 16-20E and 16-27E). The data stored in the consecutive storage region 16-22F of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 3F (e.g., the data stored in the consecutive storage regions 16-20F and 16-27F).
The data stored in the consecutive storage region 16-22G of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 3G (e.g., the data stored in the consecutive storage regions 16-21G and 16-26G). The data stored in the consecutive storage region 16-22H of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 2H (e.g., the data stored in the consecutive storage regions 16-21H and 16-26H). The data stored in the consecutive storage region 16-22I of the storage unit 16-22 can be rebuilt or reconstructed according to the other data in the subgroup 1I (e.g., the data stored in the consecutive storage regions 16-21I and 16-26I).
Referring to
As shown in
The data integrity protection in the 27 storage units is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroups 1A. Data protection is provided across the data categorized as subgroups 1B. Data protection is provided across the data categorized as subgroups 1C. Data protection is provided across the data categorized as subgroups 1D. Data protection is provided across the data categorized as subgroups 1E. Data protection is provided across the data categorized as subgroups 1G. Data protection is provided across the data categorized as subgroups 1G. Data protection is provided across the data categorized as subgroups 1H. Data protection is provided across the data categorized as subgroups 1I.
Similarly, data protection is provided across the data categorized as subgroups 2A. Data protection is provided across the data categorized as subgroups 2B. Data protection is provided across the data categorized as subgroups 2C. Data protection is provided across the data categorized as subgroups 2D. Data protection is provided across the data categorized as subgroups 2E. Data protection is provided across the data categorized as subgroups 2F. Data protection is provided across the data categorized as subgroups 2G. Data protection is provided across the data categorized as subgroups 2H. Data protection is provided across the data categorized as subgroups 2I.
Additionally, data protection is provided across the data categorized as subgroups 3A. Data protection is provided across the data categorized as subgroups 3B. Data protection is provided across the data categorized as subgroups 3C. Data protection is provided across the data categorized as subgroups 3D. Data protection is provided across the data categorized as subgroups 3E. Data protection is provided across the data categorized as subgroups 3F. Data protection is provided across the data categorized as subgroups 3G. Data protection is provided across the data categorized as subgroups 3H. Data protection is provided across the data categorized as subgroups 3I.
In some embodiments, one of the nine data categorized as subgroup 1A includes error correction data associated with the subgroup 1A. In some embodiments, one of the nine data categorized as subgroup 1B includes error correction data associated with the subgroup 1B. In some embodiments, one of the nine data categorized as subgroup 1C includes error correction data associated with the subgroup 1C. In some embodiments, one of the nine data categorized as subgroup 1D includes error correction data associated with the subgroup 1D. In some embodiments, one of the nine data categorized as subgroup 1E includes error correction data associated with the subgroup 1E. In some embodiments, one of the nine data categorized as subgroup 1F includes error correction data associated with the subgroup 1F. In some embodiments, one of the nine data categorized as subgroup 1G includes error correction data associated with the subgroup 1G. In some embodiments, one of the nine data categorized as subgroup 1H includes error correction data associated with the subgroup 1H. In some embodiments, one of the nine data categorized as subgroup 1I includes error correction data associated with the subgroup 1I.
In some embodiments, one of the nine data categorized as subgroup 2A includes error correction data associated with the subgroup 2A. In some embodiments, one of the nine data categorized as subgroup 2B includes error correction data associated with the subgroup 2B. In some embodiments, one of the nine data categorized as subgroup 2C includes error correction data associated with the subgroup 2C. In some embodiments, one of the nine data categorized as subgroup 2D includes error correction data associated with the subgroup 2D. In some embodiments, one of the nine data categorized as subgroup 2E includes error correction data associated with the subgroup 2E. In some embodiments, one of the nine data categorized as subgroup 2F includes error correction data associated with the subgroup 2F. In some embodiments, one of the nine data categorized as subgroup 2G includes error correction data associated with the subgroup 2G in some embodiments, one of the nine data categorized as subgroup 2H includes error correction data associated with the subgroup 2H. In some embodiments, one of the nine data categorized as subgroup 2I includes error correction data associated with the subgroup 2I.
In some embodiments, one of the nine data categorized as subgroup 3A includes error correction data associated with the subgroup 3A. In some embodiments, one of the nine data categorized as subgroup 3B includes error correction data associated with the subgroup 3B. In some embodiments, one of the nine data categorized as subgroup 3C includes error correction data associated with the subgroup 3C. In some embodiments, one of the nine data categorized as subgroup 3D includes error correction data associated with the subgroup 3D. In some embodiments, one of the nine data categorized as subgroup 3E includes error correction data associated with the subgroup 3E. In some embodiments, one of the nine data categorized as subgroup 3F includes error correction data associated with the subgroup 3E. In some embodiments, one of the nine data categorized as subgroup 3G includes error correction data associated with the subgroup 3G. In some embodiments, one of the nine data categorized as subgroup 3B includes error correction data associated with the subgroup 3H. In some embodiments, one of the nine data categorized as subgroup 3I includes error correction data associated with the subgroup 3I.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
If one of the data in a subgroup is damaged or fail, the damaged data can be rebuilt or reconstructed according to the other data in the same subgroup. For example, if the data stored in the storage region 16-1A of the storage unit 16-1 (e.g., the subgroup 1A) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the data stored in the storage regions 16-4A, 16-7A, 16-10A, 16-13A, 16-16A, 16-19A, 16-22A and 16-25A of the storage units 16-4, 16-7, 16-10, 16-13, 16-16, 16-19, 16-22 and 16-25.
Similarly, if the data stored in the storage region 16-2C of the storage unit 16-2 (e.g., the subgroup 2C) is damaged or fail, the damaged data can be rebuilt or reconstructed according to the data stored in the storage regions 16-5C, 16-8C, 16-12C, 16-15C, 16-18C, 16-19C, 16-22C and 16-25C of the storage units 16-5, 16-8, 16-12, 16-15, 16-18, 16-19, 16-22 and 16-25.
When a storage region (e.g., the storage region 16-6A) of one storage unit from one of the subarrays (e.g., subarray 36B) needs to be rebuilt, one storage region (e.g., storage regions 16-3A, 16-9A, 16-12A, 16-15A, 16-18A, 16-21A, 16-24A and 16-27A) each from the subarrays 36A, 36C, 37A, 37B, 37C, 38A, 38B and 38C are involved. Only ⅓ of each storage unit is involved with data reconstruction, and the rebuild speed would be 3 times comparing with
Using the method as illustrated in accordance with
In some embodiments, a data allocation mechanism for total N2 storage units can be obtained based on an order N (that is, matrix with a dimension N×N) mutual orthogonal Latin square set, and the rebuilding speed would be N times comparing with
In some embodiments, a data allocation mechanism for total N3 storage units can be obtained by using array as elements in order N (that is, matrix with a dimension N×N) mutual orthogonal Latin square set, and the rebuilding speed would be N times comparing with
The storage space configuration shown in
As shown in
The data integrity protection in the array 40 is implemented by subgroups. The data protection is provided across the data categorized as the same subgroup. For example, data protection is provided across the data categorized as subgroup 1A. Data protection is provided across the data categorized as subgroup 1B. Data protection is provided across the data categorized as subgroup 1C. Data protection is provided across the data categorized as subgroup 1D.
Data protection is provided across the data categorized as subgroup 2A. Data protection is provided across the data categorized as subgroup 2B. Data protection is provided across the data categorized as subgroup 2C. Data protection is provided across the data categorized as subgroup 2D.
Similarly, data protection is provided across the data categorized as subgroup 3A. Data protection is provided across the data categorized as subgroup 3B. Data protection is provided across the data categorized as subgroup 3C. Data protection is provided across the data categorized as subgroup 3B. Data protection is provided across the data categorized as subgroup 3D.
Data integrity protection and the reconstruction process for the data to be stored in the array 40 are identical to those previously discussed in accordance with
During the reconstruction process of a storage region of a storage unit of one subarray, three storage units from the other three subarrays need to be involved. Referring to
In the data allocation mechanism shown in
Specifically, each of the storage units participate in the data reconstruction process only needs to offer 25% of its data, it can be expected that the time spent on reading data from the storage units participate in the data reconstruction process is reduced 75%. For example, the storage 16-2 only offers 25% of its data during the data reconstruction of the storage unit 16-6. Similarly, the storage units 16-10 and 16-14 only offer 25% of their data during the data reconstruction of the storage unit 16-6. The speed of data reconstruction process for every storage unit of the array 40 is then increased by four tunes compared to that of
In the embodiment shown in
Data integrity protection and the reconstruction process for the data to be stored in the array 42 are identical to those previously discussed in accordance with
Referring to
Referring to
The data P1A is error correction data associated with the client data D1A. The data P1B is error correction data associated with the client data D1B. The data P1C is error correction data associated with the client data D1C. The data P1D is error correction data associated with the client data D1D.
The data. P2A is error correction data associated with the client data. D2A. The data P2B is error correction data associated with the client data D2B. The data P2C is error correction data associated with the client data D2C. The data P2D is error correction data associated with the client data D2D.
The data P3A is error correction data associated with the client data D3A. The data P3B is error correction data associated with the client data D3B. The data P3C is error correction data associated with the client data D3C. The data P3D is error correction data associated with the client data D3D.
The data P4A is error correction data associated with the client data D4A. The data P4B is error correction data associated with the client data D4B. The data P4C is error correction data associated with the client data D4C. The data P4D is error correction data associated with the client data D4D.
Data categorized as different subgroups are not associated with each other. Data categorized as different subgroups are independent of each other.
Referring to
The data Q1A is error correction data associated with the client data D1A. The data Q1B is error correction data associated with the client data D1B. The data Q1C is error correction data associated with the client data D1C. The data Q1D is error correction data associated with the client data D1D.
The data Q2A is error correction data associated with the client data D2A. The data Q2B is error correction data associated with the client data D2B. The data Q2C is error correction data associated with the client data D2C. The data Q2D is error correction data associated with the client data D2D.
The data Q3A is error correction data associated with the client data D3A. The data Q3B is error correction data associated with the client data D3B. The data Q3C is error correction data associated with the client data D3C. The data Q3D is error correction data associated with the client data D3D.
The data Q4A is error correction data associated with the client data D4A. The data Q4B is error correction data associated with the client data D4B. The data Q4C is error correction data associated with the client data D4C. The data Q4D is error correction data associated with the client data D4D.
The client data stored in the subarrays 44-3 and 44-4 can be rebuilt or reconstructed based on the error correction data stored in the subarray 44-1. The client data stored in the subarrays 44-3 and 44-4 can be rebuilt or reconstructed based on the error correction data stored in the subarray 44-2. The client data stored in the subarrays 44-3 and 44-4 can be rebuilt or reconstructed based on the error correction data stored in the subarrays 44-1 and 44-2.
The first kind of error correction data (e.g., P) can be generated by the control unit 2. The first kind of error correction data can be generated by the control unit 2 based on the client data in the same subgroup. The first kind of error correction data can be generated by the control unit 2 based on the second kind of error correction data (e.g., Q) and the client data in the same subgroup.
The second kind of error correction data (e.g., Q) can be generated by the control unit 2. The second kind of error correction data can be generated by the control unit 2 based on the client data in the same subgroup. The second kind of error correction data can be generated by the control unit 2 based on the first kind of error correction data (e.g., P) and the client data in the same subgroup.
The error correction data P1A is associated with the error correction data Q1A. The error correction data P1B is associated with the error correction data Q1B. The error correction data P1C is associated with the error correction data Q1C. The error correction data P1D is associated with the error correction data Q1D.
The error correction data P2A is associated with the error correction data Q2A. The error correction data P2B is associated with the error correction data Q2B. The error correction data P1C is associated with the error correction data Q2C. The error correction data P2D is associated with the error correction data Q2D.
The error correction data P3A is associated with the error correction data Q3A. The error correction data P3B is associated with the error correction data Q3B. The error correction data P3C is associated with the error correction data Q3C. The error correction data P3D is associated with the error correction data Q3D.
The error correction data P4A is associated with the error correction data Q4A. The error correction data P4B is associated with the error correction data Q4B. The error correction data P4C is associated with the error correction data Q4C. The error correction data P4D is associated with the error correction data Q4D.
Using two types of error correction data can increase the number of failed storage units that can be tolerated within the array 44. For example, if the RAID level 6 (RAID 6) algorithm is utilized in the array, even if two storage units fail or are damaged at the same time, the data stored in these two damaged storage units can still be recovered successfully. However, one thing should be noticed that the two kinds of error correction data patterns occupy all the storage units of the subarrays 44-1 and 44-2. Only two subarrays (that is, subarrays 44-3 and 44-4) of the array 44 can be utilized to store user data. The capacity efficiency of the array 44 is merely 50%.
All of the storage units of the subarray 46-1 are used to store first kind of error correction data (that is, data P1A, P1B, P1C, P1D, P2A, P2B, P2C, P2D, P3A, P3B, P3C, P3D, P4A, P4B, P4C and P4D). All the storage units of the subarrays 46-2, 46-3 and 46-4 are used to store user data or client data (that is, data D1A, D1B, D1C, D1D, D2A, D2B, D2C, D2D, D3A, D3B, D3C, D3D, D4A, D4B, D4C and D4D). The storage unit 16-Q is used to store a second kind of error correction data (that is, data Q1234A, Q1234B, Q1234C and Q1234D).
As previously discussed in accordance with
The data stored in the storage unit 16-Q are error correction data associated with the client data stored in the subarrays 46-2, 46-3 and 46-4. Referring to
The error correction data Q1234A can be derived from the error correction data Q1A, Q2A, Q3A and Q4A of the subarray 44-2. The error correction data Q1234B can be derived from the error correction data Q1B, Q2B Q3B and Q4B of the subarray 44-2. The error correction data Q1234C can be derived from the error correction data Q1C, Q2C Q3C and Q4C of the subarray 44-2. The error correction data Q1234D can be derived from the error correction data Q1D, Q2D Q3D and Q4D of the subarray 44-2.
The error correction data Q1234A can be derived from a logical calculation of the error correction data Q1A, Q2AQ3A and Q4A. The error correction data Q1234B can be derived from a logical calculation of the error correction data Q1B, Q2B Q3B and Q4B. The error correction data Q1234C can be derived from a logical calculation of the error correction data Q1C, Q2C Q3C and Q4C of the subarray 44-2. The error correction data Q1234D can be derived from a logical calculation of the error correction data Q1D, Q2DQ3D and Q4D.
The logical calculation utilized to generate the error correction data Q1234A, Q1234B, Q1234C and Q1234D includes but not limited to an “exclusive or” calculation. It can be contemplated that other logical calculation may be utilized in deriving Q1234 from Q1, Q2, Q3 and Q4.
Using the data allocation mechanism shown in
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 rebuilt data.
The data to be stored in the array 50 are arranged in a specific manner. As shown in
The subarrays 52-1 and 52-2 that store user data are allocated in the storage partitions 55A among several storage units. The subarray 52-3 that store error correction data or parity data is allocated in the storage partitions 55B among several storage units. The subarray 52-4 includes three spare storage regions that can be used to store rebuilt data is allocated in the storage partitions 55C of a storage unit. For example, the data 56-1 of the subarray 52-1 can be rebuilt according to the data 56-2 of the subarray 52-2 and the data 56-3 of the subarray 52-3. The rebuilt version of the data 56-1 will be stored in the spare storage region 56-4 of the subarray 52-4.
As previously mentioned, the data reconstruction process includes a step of writing the rebuilt data back to the failed storage unit. The rebuilt data in
As used herein, the singular terms “a,” “an,” and “the” may include plural referents unless the context clearly dictates otherwise. In the description of some embodiments, a component provided “on,” “above,” or “over” another component can encompass cases where the former component is directly on (e.g., in physical contact with) the latter component, as well as cases where one or more intervening components are located between the former component and the latter component.
As used herein, the terms “substantially,” “approximately,” and “about” are used to describe and account for small variations. When used in conjunction with an event or circumstance, the terms can refer to instances in which the event or circumstance occurs precisely as well as instances in which the event or circumstance occurs to a close approximation. For example, when used in conjunction with a numerical value, the terms can refer to a range of variation less than or equal to +10% of that numerical value, such as 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 term “about” or “substantially” equal in reference to two values can refer to a ratio of the two values being within a range between and inclusive of 0.9 and 1.1.
Additionally, amounts, ratios, and other numerical values are sometimes presented herein in a range format. It is to be understood that such a range format is used for convenience and brevity and should be understood flexibly to include numerical values explicitly specified as limits of a range, but also to include all individual numerical values or sub-ranges encompassed within that range as if each numerical value and sub-range is explicitly specified.
While the present disclosure has been described and illustrated with reference to specific embodiments thereof, these descriptions and illustrations do not limit the present disclosure. It should be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the true spirit and scope of the present disclosure, as defined by the appended claims. The illustrations may not be necessarily drawn to scale. There may be other embodiments of the present disclosure which are not specifically illustrated. The specification and drawings are to be regarded as illustrative rather than restrictive. Modifications may be made to adapt a particular situation, material, composition of matter, method, or process to the objective, spirit and scope of the present disclosure. All such modifications are intended to be within the scope of the claims appended hereto. While the methods disclosed herein have been described with reference to particular operations performed in a particular order, it will be understood that these operations may be combined, sub-divided, or re-ordered to form an equivalent method without departing from the teachings of the present disclosure. Accordingly, unless specifically indicated herein, the order and grouping of the operations are not limitations of the present disclosure.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5265098, | Aug 03 1990 | INTERNATIONAL BUSINESS MACHINES CORPORATION, A CORP OF NY | Method and means for managing DASD array accesses when operating in degraded mode |
5754756, | Mar 13 1995 | Hitachi, Ltd. | Disk array system having adjustable parity group sizes based on storage unit capacities |
7062604, | Feb 12 2003 | PMC-SIERRA, INC | Method and system for five-disk fault tolerance in a disk array |
20060294303, | |||
20070028044, | |||
20110185119, | |||
20110289261, | |||
20140317346, | |||
20160062835, | |||
20170242752, | |||
20190317889, | |||
20200250036, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 12 2019 | CHIEN, HUNG-MING | Super Micro Computer, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048611 | /0434 | |
Mar 15 2019 | SUPER MICRO COMPUTER, INC. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Mar 15 2019 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Date | Maintenance Schedule |
Dec 28 2024 | 4 years fee payment window open |
Jun 28 2025 | 6 months grace period start (w surcharge) |
Dec 28 2025 | patent expiry (for year 4) |
Dec 28 2027 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 28 2028 | 8 years fee payment window open |
Jun 28 2029 | 6 months grace period start (w surcharge) |
Dec 28 2029 | patent expiry (for year 8) |
Dec 28 2031 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 28 2032 | 12 years fee payment window open |
Jun 28 2033 | 6 months grace period start (w surcharge) |
Dec 28 2033 | patent expiry (for year 12) |
Dec 28 2035 | 2 years to revive unintentionally abandoned end. (for year 12) |