RAID (Redundant Array of Independent Disks) configuration method, storage device for optimizing RAID and computer system

The RAID configuration method optimizes SSD storage by dividing data into blocks, interleaving writes, and reserving blocks for check data, addressing reliability and efficiency issues in RAID systems.

CN119179431APending Publication Date: 2024-12-24BAIDAI (SHANGHAI) DATA TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410081460.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-01-19
Publication Date
2024-12-24

AI Technical Summary

Technical Problem

Existing RAID configurations, particularly for SSDs, face challenges in reliability evaluation and efficient use of physical blocks, leading to reduced effective storage space and increased risk of data loss due to high error rates and fault dumps during data operations.

Method used

A method for configuring RAID by dividing continuous data into equal-sized blocks, allocating them to different physical blocks, interleaving write operations, and reserving blocks for check data, ensuring data integrity and reducing the need for extensive physical block reservations.

Benefits of technology

Enhances data reliability and availability by minimizing physical block reservations, reducing data loss risks, and optimizing storage efficiency in RAID systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119179431A_ABST
    Figure CN119179431A_ABST
Patent Text Reader

Abstract

The invention relates to a method for configuring an RAID, a storage device for optimizing the RAID and a computer system. And segmenting the continuous data to be protected into data blocks with the same size, and respectively writing the data blocks into different physical blocks of the memory for forming the RAID. The data blocks belonging to the same band unit are distributed to different physical blocks of each storage particle in the memory, and only one data block of the band unit is stored in any page of each physical block of the band unit. A part of data blocks of different band units are configured to a previous physical block of the storage particle, and after each page of the previous physical block is full of data, the remaining data blocks of the different band units are configured to a next physical block adjacent to the previous physical block of the storage particle. And storing respective verification data of different band units by using the reserved physical blocks of the storage particles.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention mainly relates to the technical field of data storage, and more specifically, to a method for configuring RAID in the field related to data storage and a storage device and a computer system for optimizing RAID. Background Art

[0002] The storage industry mainly has the following categories of RAID array technologies for SSDs. A hybrid RAID array built by combining SSDs and mechanical hard disks can complement the characteristics of both. As the cost-effectiveness of SSDs continues to improve, a technical route has been introduced to form a RAID array formed by combining SSDs and SSDs or a pure SSD RAID array formed by combining SSD flash memory chips and chips. At present, the price of SSDs is higher than that of mechanical hard disks. Compared with the RAID array that only uses a single SSD, the hybrid RAID array of SSDs and mechanical hard disks has cost advantages in price control and diversified complementary advantages in storage media. In terms of performance and reliability, a RAID array composed of multiple SSD media is better than a hybrid array composed of SSDs and mechanical hard disks. At present, most SSD manufacturers in the industry use chip-level RAID arrays in SSDs to further improve performance and reduce power consumption.

[0003] The storage industry has also developed IRAID based on embedded RAID array technology. The preliminary research results of this type of structure show that the so-called RAID system should not only be a group of independent drives, but may also have a single high-density disk structure. This will enable the disk array of storage systems, such as cloud storage systems, to have greater improvements in performance, power consumption and volume, further reduce costs, and make system-level maintenance easier. Embedded RAID technology has gradually become one of the main research directions of RAID array technology related to solid-state drives.

[0004] There are relatively few studies on evaluating the reliability of SSD RAID, especially RAID configuration strategies such as single write allocation, which requires the support of a large number of physical blocks, that is, the number of physical blocks that should be reserved each time is extremely large, resulting in a significant reduction in the space of the elastic storage area. This is particularly prominent in IRAID, and the performance test manifestation is the reduction of effective storage space. Summary of the invention

[0005] The present application relates to a method for configuring RAID, which includes:

[0006] The continuous data to be protected is divided into data blocks of the same size, and the series of data blocks obtained by the division are respectively written into different physical blocks of the storage device (for example, the storage device is an SSD storage device) constituting the RAID;

[0007] The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores a data block of the only band unit;

[0008] Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block;

[0009] A reserved physical block of a storage particle is used to store the respective check data of different band units.

[0010] The above method forms a RAID based on multiple physical blocks of a single storage particle of a single storage; or as an alternative, forms a RAID based on multiple physical blocks of multiple storage particles of a single storage or forms a RAID based on multiple physical blocks of multiple storage particles of multiple storages.

[0011] In the above method, a plurality of data blocks belonging to the same band unit and on the previous physical blocks of different storage particles are configured so that they are written to the same ordered pages of the previous physical blocks of the different storage particles; and a plurality of data blocks belonging to the same band unit and on the next physical blocks of different storage particles are configured so that they are written to the same ordered pages of the next physical blocks of the different storage particles.

[0012] In the above method, data blocks on a page of any serial number of the previous physical block of each different storage particle deployed by any band unit and data blocks on a page of the same serial number of the next physical block of each different storage particle deployed by any band unit are set to belong to continuous data during the stage of writing into the memory.

[0013] In the above method, the data blocks of any band unit deployed on the previous physical blocks of different storage particles and the data blocks of any band unit deployed on the next physical blocks of different storage particles are written into the memory in an interleaved manner with the write operations of other different band units.

[0014] In the above method, after any band unit completes deployment of data blocks on respective previous physical blocks of different storage particles, a preset data verification operation is performed on (or not performed on) the data blocks on the previous physical block; and after any band unit completes deployment of data blocks on respective subsequent physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the subsequent physical block and the data blocks on the previous physical block to obtain verification data.

[0015] In the above method, after any band unit completes the deployment of data blocks on the previous physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the previous physical blocks, and the obtained verification code is stored in the temporary buffer; after any band unit completes the deployment of data blocks on the subsequent physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the subsequent physical blocks and the verification code, thereby obtaining verification data.

[0016] In the above method, when any band unit deploys its corresponding data block, at the stage of transitioning from the previous physical block of each different storage particle to the next physical block of each different storage particle, the previous physical block and the next physical block of each different storage particle are kept not occupied by any band unit at the same time (e.g., when writing the previous physical block of each different storage particle, their next physical block will be left blank), so as to provide dump space for the physical block that fails at this stage.

[0017] The present application also relates to a storage device for optimizing RAID, characterized by comprising:

[0018] One or more storage devices for forming a RAID;

[0019] The continuous data to be protected is divided into data blocks of the same size, and the series of data blocks obtained by the division are respectively written into different physical blocks of the memory (for example, the memory is an SSD memory);

[0020] The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores a data block of the only band unit;

[0021] Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block;

[0022] At least one reserved physical block of a storage particle is left vacant in the memory, and the reserved physical block is used to store respective check data of different band units for implementing RAID check (such as CRC / Hamming, etc.).

[0023] The above storage device forms a RAID based on multiple physical blocks of a single storage particle of a single storage; or forms a RAID based on multiple physical blocks of multiple storage particles of a single storage; or forms a RAID based on multiple physical blocks of multiple storage particles of multiple storages.

[0024] In the above-mentioned storage device, a plurality of data blocks belonging to the same stripe-unit and on the previous physical blocks of different storage particles are configured so that they are written to the same-ordered pages of the previous physical blocks (Block_L) of the different storage particles; and a plurality of data blocks belonging to the same stripe-unit and on the next physical blocks (Block_L+1) of different storage particles are configured so that they are written to the same-ordered pages of the next physical blocks of the different storage particles.

[0025] In the above-mentioned storage device, data blocks on a page of any serial number of the previous physical block of each different storage particle deployed by any band unit, and data blocks on a page of the same serial number of the next physical block of each different storage particle deployed by any band unit, are set to belong to continuous data (Continuous Data) at the stage of being written into the memory.

[0026] In the above-mentioned storage device, the data blocks of any band unit deployed on the previous physical blocks of different storage particles and the data blocks of any band unit deployed on the next physical blocks of different storage particles, their write operations into the memory are executed in an interleaved manner with the write operations of other different band units (e.g., part of the data blocks of any band unit are first written to the previous physical block, then part of the data blocks of other band units are also written to the previous physical block, and then other part of the data blocks of any band unit are written to the next physical block, and the write operations of different band units are interleaved).

[0027] In the above storage device, after any band unit completes the deployment of data blocks on the previous physical blocks of different storage particles, it performs a preset data verification operation on (or does not perform) the data blocks on the previous physical blocks; after any band unit completes the deployment of data blocks on the next physical blocks of different storage particles, it performs a preset data verification operation (single verification of data merging) on ​​the data blocks on the next physical blocks and the data blocks on the previous physical blocks to obtain verification data.

[0028] In the above storage device, after any band unit completes the deployment of data blocks on the previous physical blocks of different storage particles, it performs a preset data verification operation on the data blocks on the previous physical blocks, and stores the obtained verification code in a temporary buffer; after any band unit completes the deployment of data blocks on the subsequent physical blocks of different storage particles, it performs a preset data verification operation (multiple verifications and data can perform mixed verifications, such as mixing of verification codes and data) on the data blocks on the subsequent physical blocks and the verification code, thereby obtaining the verification data.

[0029] The above-mentioned storage device, wherein, when any band unit deploys its corresponding data block, at the stage of transitioning from the previous physical block of each different storage particle to the next physical block of each different storage particle (or continuing / extending from the previous physical block of each different storage particle to the next physical block of each different storage particle), the previous physical block and the next physical block of each different storage particle are kept not occupied by any band unit at the same time, thereby providing dump space for the physical block that fails at this stage.

[0030] The present application relates to a computer system for optimizing RAID, characterized by comprising:

[0031] One or more memories configured to a computer system for forming a RAID;

[0032] The computer system receives continuous data to be protected and processed, the continuous data is divided into data blocks of the same size, and the divided series of data blocks are written into different physical blocks of a memory (such as an SSD) respectively;

[0033] The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores a data block of the only band unit;

[0034] Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block;

[0035] At least one reserved physical block of a storage particle is left vacant in the memory for storing respective check data of different band units so that the computer system can perform error detection and repair on the stored continuous data.

[0036] The computer system described above forms a RAID at the computer: the RAID may be formed based on multiple physical blocks of a single storage particle of a single storage; or, the RAID may be formed based on multiple physical blocks of multiple storage particles of a single storage or multiple storages.

[0037] In the above-mentioned computer system, the computer implements the allocation method of band units: a plurality of data blocks belonging to the same band unit and on the previous physical blocks of different storage particles are configured so that they are written to the same-ordered pages of the previous physical blocks of the different storage particles; and a plurality of data blocks belonging to the same band unit and on the next physical blocks of different storage particles are configured so that they are written to the same-ordered pages of the next physical blocks of the different storage particles.

[0038] In the above-mentioned computer system, the computer implements the allocation method of band units: the data blocks (front-end data blocks) deployed on the pages of any serial number of the previous physical blocks of different storage particles and the data blocks (rear-end data blocks) deployed on the pages of the same serial number of the next physical blocks of different storage particles as the any band unit are set as continuous data in the stage of writing into the memory.

[0039] In the above-mentioned computer system, the computer implements the allocation method of the band units: the data blocks (front-end data blocks) deployed on the previous physical blocks of different storage particles of any band unit and the data blocks (rear-end data blocks) deployed on the rear physical blocks of different storage particles of any band unit, their write operations into the memory are executed in an interleaved manner with the write operations of other different band units.

[0040] In the above-mentioned computer system, the computer implements a verification method of the band unit: after any band unit completes the deployment of the data blocks (front-end data blocks) on the previous physical blocks of different storage particles, a preset data verification operation (verification of the front-end data blocks) is performed on / or not on the data blocks on the previous physical block; after any band unit completes the deployment of the data blocks (rear-end data blocks) on the rear physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the rear physical block and the data blocks on the front physical block to obtain the verification data.

[0041] In the above-mentioned computer system, the computer implements a verification method of the band unit: after any band unit completes the deployment of the data blocks (front-end data blocks) on the previous physical blocks of different storage particles, a preset data verification operation (verification of the front-end data blocks) is performed on the data blocks on the previous physical block, and the obtained verification code is stored in the buffer; after any band unit completes the deployment of the data blocks (rear-end data blocks) on the rear physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the rear physical block and the verification code, thereby obtaining the verification data.

[0042] In the above-mentioned computer system, the computer implements the allocation method of the band unit: when any band unit deploys its corresponding data block, in the stage of transitioning or continuing / continuing from the previous physical block of each different storage particle to the next physical block of each different storage particle, the previous physical block and the next physical block of each different storage particle are kept not occupied by any band unit at the same time, so as to provide dump space for the physical block that fails at this stage.

[0043] According to the original intention of RAID, the disk array is composed of multiple independent disks, which are combined into a disk group with huge capacity and use the additive effect of individual disks to provide data to improve the performance of the entire disk system. However, it is worth noting that there is a potential possibility of data loss during the operation phase of the disk array. In particular, RAID configuration strategies such as single write allocation require the support of many physical blocks, that is, the number of physical blocks that should be reserved each time is extremely large, which greatly shrinks the space of the elastic storage area. If data errors occur during this period, the dump fails due to the reduction of effective storage space. The primary task of the example mentioned above in this article is to ensure that the large-capacity disk group of RAID has high-speed and safe data characteristics, as well as redundant data storage characteristics. The more important goal is to provide a solution for data loss or data error and other failure situations generated during the operation phase of the RAID disk array, so that the configuration implemented by RAID, such as single write allocation, no longer requires the support of many physical blocks, that is, the number of physical blocks that should be reserved each time is greatly reduced, which is equivalent to releasing available blank physical blocks as dump space for fault data such as data loss or data error, so as to deal with potential failures during RAID. BRIEF DESCRIPTION OF THE DRAWINGS

[0044] In order to make the above purposes, features and advantages more understandable, the following text will explain the specific implementation methods in detail in conjunction with the drawings. After reading the following description and referring to the following drawings, the features and advantages of the present application will become apparent.

[0045] Figure 1 This is an implementation example in which data blocks of different band units are first allocated to storage particles.

[0046] Figure 2 The data blocks of different band units are allocated to physical blocks and parity data is generated.

[0047] Figure 3 The disk array is composed of many physical blocks of multiple storage particles of multiple memories.

[0048] Figure 4 Different band units write their respective data blocks to the previous physical block and the next physical block.

[0049] Figure 5 A single write operation of any unit in the disk array occupies a very large number of physical blocks.

[0050] Figure 6 It generates checksums for the front data blocks with units and the back data blocks. DETAILED DESCRIPTION

[0051] The technical solutions disclosed in the present application will be clearly and completely described below in conjunction with specific embodiments. However, the embodiments described are only embodiments used for narrative explanation in the present application and are not all embodiments. Based on these embodiments, technicians in this field should realize that any solution obtained without creative work falls within the scope of protection of the present application.

[0052] See also Figure 1 At present, there is little research on the reliability category of solid-state drive RAID (Redundant Arrays of Independent Disk) in terms of evaluation. Redundant Array of Independent Disks RAID is referred to as disk array, which originally means that several independent disks constitute an array with redundancy. It is necessary to improve the configuration of RAID and solid-state drive physical blocks, because it is a prerequisite for ensuring the consistency of given parameters of solid-state drives such as sold capacity and actual parameters such as available capacity. Configuring disk arrays is also a key factor in the reliability analysis of solid-state drives based on array technology. The following method for configuring RAID and the storage device and computer for optimizing RAID related thereto can strive to ensure that the SSD meets its given parameters and actual parameters in the array application in the data operation stage based on SSD, so as to prevent the actual user experience from being inconsistent with the factory data of the storage device. And the important point of concern is to avoid this inconsistent experience from becoming more and more serious as the storage device is used for a longer time. There are many cases where the given parameters do not match the actual parameters: for example, the size of the file stored by the user is far from the rated capacity; another example is that the data of the bad block cannot be transferred to the free space when there is still free space in the rated capacity. Please note that this situation can hardly be directly reflected on the user side and is only an event that occurs inside the storage system. And so on.

[0053] See also Figure 1For RAID, the stripe unit or band unit RAID-S0 writes to the storage physical block and it occupies all physical blocks once and generates verification data Ver0. Band unit RAID-S1 writes to the storage physical block and it occupies all physical blocks once and generates verification data Ver1. Band unit RAID-S2 writes to the storage physical block and it occupies all physical blocks once and generates verification data Ver2. Band unit RAID-S3 writes to the storage physical block and it occupies all physical blocks once and generates verification data Ver3. Band unit RAID-SN writes to the storage physical block and it occupies all physical blocks once and generates verification data VerN. Wherein N is a positive integer greater than 1. The operations of the band units are as shown in the figure, they take turns to occupy all physical blocks and make the storage physical blocks almost full. However, data operations on disk arrays are often power-intensive and time-consuming tasks, which are more obvious with the amount of data (the original intention of building a disk array is to provide a disk group with huge capacity). During this period, even if a small number of data bits or even a single code element is wrong, it is difficult to transfer the necessary data of the failed physical block to other vacant physical blocks. The problem of fault dump being hindered / blocked by the aforementioned relay and the high error rate induced under the conditions of strip data structure with units is particularly serious.

[0054] See also Figure 1 One of the biggest problems with RAID is that a large number of physical blocks of the storage will be requisitioned during RAID operations. Assuming that each particle (LUN) contains M physical blocks, and the RAID structure uses about Q storage particles, the write operation with the unit will occupy about M*Q-1 physical blocks almost at one time.

[0055] See also Figure 1 One of the parameters of a solid-state drive (SSD) is the read and write speed. SSDs are usually designed to communicate with a host device through a serial advanced attachment technology (such as SATA) interface. As the access speed of flash memory chips in solid-state drives increases, such as improvements in chips and hardware, the accompanying interface technology has gradually become an advantage in further improving the data transmission speed between solid-state drives and hosts or other similar facilities. This advantage is extremely beneficial to the storage data management involved in this application. Unlike writing data, in a massive data reconstruction environment, there is identification and addressing of required pages or required sectors, and especially reconstruction requires high-speed data throughput. Therefore, with the development of communication interface technology, the advantages of this application will become more and more obvious. The solid-state drive RAID array technology is an example that this application will explain in detail below. The following will first give a preliminary introduction to the outline of SSD.

[0056] See also Figure 1, SSD usually contains one or more storage chips or storage particles (LUN). It is basically the smallest unit for executing commands, and different LUNs can execute different command sequences.

[0057] See also Figure 1 A single storage particle or storage chip of a solid-state drive (SSD) has multiple planes. In terms of optimizing the flash memory access speed, each plane has independent data registers and cache registers.

[0058] See also Figure 1 A single plane of a solid-state drive (SSD) contains one or more blocks. A block usually contains many pages. For example, some manufacturers stipulate that the number of blocks should be a multiple of 32.

[0059] See also Figure 1 , the solid-state drive SSD needs to maintain the mapping relationship between the logical block address and the physical storage block address through a mapping table. As mentioned above, partial failure of the address mapping table or loss of the mapping table due to power failure usually leads to the loss of the mapping relationship. If the mapping relationship between the logical address and the physical address cannot be known, the data stored on the entire storage disk may be completely or partially lost.

[0060] See also Figure 1 In an optional embodiment, when the mapping table is lost or damaged, the logical block addresses of the redundant space or spare area on the disk are traversed and read to obtain the logical block addresses of each page and / or each valid sector. When traversing and reading, the storage block to be read is already known, and the mapping relationship between the logical block address and the storage block address can be obtained. The logical block address of the storage block is traversed and read, and the storage block and the logical block address are associated and mapped, which belongs to the scope of the prior art.

[0061] See also Figure 1 In an optional embodiment, if the data management unit of the solid-state drive manages and reads and writes data in smaller data storage units such as pages or sectors, the current traditional data writing method of the solid-state drive determines that there may be multiple pages or multiple sectors on the solid-state drive corresponding to or pointing to the same logical block address within a known time period. In the data reconstruction process, it is impossible to specifically distinguish which page or sector data corresponding to which logical block address should be used, thereby failing to achieve data reconstruction on the entire SSD. Typically, the data of the page or sector referred to by the same logical block address may not be source data that can be reconstructed or reorganized. For example, some page or sector data referred to by the logical block address and other page or sector data it refers to may belong to source data of different formats, or may belong to source data of different files, as well as various other situations that are not suitable for reconstruction or reorganization. This all falls within the scope of the prior art.

[0062] See also Figure 1 , a page of a solid-state drive (SSD) contains many bytes. The size of a page is usually a power of 2 but does not include the capacity of the spare area. A single page consists of several sectors.

[0063] See also Figure 1 The concepts of spare area (spare) and data area (user data) are described as follows.

[0064] See also Figure 1 , a detailed explanation of the internal structure of the solid-state drive SSD can be described as follows. The space occupied by a single storage block usually includes a data area (user data) and a spare area (spare). Taking a single storage block containing 64 pages as an example, the data area of ​​a single storage block can be divided into 64 parts, each used to store the write data or information of each page. The spare area or redundant space of the storage block can also be divided into 64 parts, each used to store the redundant data or spare data of each page. Therefore, the space occupied by a single page includes a data area and a spare area. For example, a block Block includes pages P0-P63, etc.

[0065] See also Figure 1 For RAID, for example, SSD can be used to build a RAID array. The aforementioned band unit write operation almost occupies about M*Q-1 physical blocks at one time, almost fully using all physical blocks of the SSD. This brings many disadvantages to the data operation of the disk array. Typically, there is a need to dump the information embedded in the memory, such as system software, mapping tables, metadata or storage data. After the original physical block carrying any information is damaged (or the storage transistor is passively programmed due to read operation interference and the abnormal flipping of other page bits in the same physical block is caused, or the storage transistor is passively programmed due to write operation interference and the abnormal flipping of other page bits in the same physical block and the abnormal flipping of the page bit itself), these information need to be transferred to blank or free blocks. The data operation of the disk array guides all reserved vacant physical blocks to be relayed by each RAID band unit (RAID-S0 to RAID-SN) to occupy all physical blocks of the memory, resulting in the inability to perform fault transfer of these information during RAID data operation. The arrows between any two of the series of band units represent the process of this relay.

[0066] See also Figure 1, about the typical application scenarios of SSD RAID array technology. For example, it is applied to big data storage structures and search engines. Data storage is the core of determining data mining performance and cost. The new big data storage architecture can integrate every storage drive in a distributed or embedded search engine, break through the limitations of data throughput and data access storage devices, and improve the bandwidth of big data storage interfaces. For another example, the RAID structure of the SSD can adopt a corresponding reconstruction mechanism solution, which allows to speed up the entire reconstruction process from statistical errors to data recovery, and also helps to reduce the risk of data loss during the reconstruction process. For a complete SSD RAID structure, its reconstruction mechanism is indispensable and needs to be configured and optimized according to the characteristics of the RAID array. If the fault dump is hindered or blocked by the so-called relay, similar to high-speed data processing such as big data storage structures and search engines, the correct data mapping relationship cannot be obtained for a long time (for example, there is no determined dump address), and the important parameters related to it, such as data throughput and data access bandwidth, will be directly negatively affected. The risk of data loss rate is also magnified.

[0067] See also Figure 2 , taking Q=1 single storage particle LUN0 and its M=2 physical blocks as an example.

[0068] See also Figure 2 For RAID, the band unit RAID-S0 writes to the storage physical block and it occupies two physical blocks B10-B20 once and generates verification data Ver0. The band unit RAID-S1 writes to the physical block and it occupies two physical blocks B10-B20 once and generates verification data Ver1. The band unit RAID-S2 writes to the physical block and it occupies two physical blocks B10-B20 once and generates verification data Ver2. The band unit RAID-S3 writes to the physical block and it occupies two physical blocks B10-B20 once and generates verification data Ver3. The band unit RAID-SN writes to the physical block and it occupies two physical blocks B10-B20 once and generates verification data VerN. This occupation is synchronous occupation.

[0069] See also Figure 2 For RAID, assuming that each physical block B10 or B20 contains N pages, any single stripe-unit divides the continuous data to be protected (i.e., the protection object of RAID or the object data stored by RAID) into data blocks of the same size. At this point, a series of data blocks divided by continuous data are written to different physical blocks of the storage device that constitutes RAID: B10 and B20.

[0070] See also Figure 2, for RAID, any page of any actual physical block B10 or B20 that stores the band unit (RAID-S0 to RAID-SN) stores only one data block of the unique band unit: Now, for example, page page0 of a physical block B10 stores a data block of RAID-S0, and by analogy, page page0 of another physical block B20 for the same band unit stores a data block of RAID-S0. Different band units: Now, for example, page page1 of a physical block B10 stores a data block of RAID-S1, and by analogy, page page1 of another physical block B20 for the same band unit stores a data block of RAID-S1. Other band units: Now, for example, page page2 of a physical block B10 stores a data block of RAID-S2, and by analogy, page page2 of another physical block B20 for the same band unit stores a data block of RAID-S2.

[0071] See also Figure 2 For RAID, any page of each physical block stores only one single data block of the band unit. For example, page N of a physical block B10 stores a data block of RAID-SN, and page N of another physical block B20 of the same band unit stores another data block of RAID-SN. Note that in this example, as the data operations of each band unit (RAID-S0 to RAID-SN) are: they take turns to occupy physical blocks B10-B20, and this relay is reflected in the arrows between two adjacent band units, making B10-B20 almost full, although this full load does not really use all pages of all physical blocks. In fact, this full load only nearly occupies a page with a certain sequence number of all physical blocks instead of occupying all pages with all sequence numbers of physical blocks.

[0072] See also Figure 3 , taking Q=3 single storage particles LUN0-LUN2 and M=3 physical blocks as an example. Compared with fewer storage particles or fewer physical blocks, even if the number of storage particles and physical blocks is increased, it is not possible to fundamentally solve the problem that each stripe unit (stripe-unit) takes over each physical block in relay. The specific situation will be described below. In this embodiment, the first to third storage particles LUN0-LUN2 are taken as an example, and each storage particle has three physical blocks, which are recorded as B10, B20 and B30.

[0073] See also Figure 3 To avoid confusion, it can be distinguished that the three physical blocks B10-B30 of the first storage particle LUN0 itself are respectively annotated as B10_0 (front-stage block), B20_0 (middle block) and B30_0 (back-stage block).

[0074] See also Figure 3 To avoid confusion, it can be distinguished that the three physical blocks B10-B30 of the second storage particle LUN1 itself are respectively annotated as B10_1 (front-stage block), B20_1 (middle block), and B30_1 (back-stage block).

[0075] See also Figure 3 To avoid confusion, it can be distinguished that the three physical blocks B10-B30 of the third storage particle LUN2 itself are respectively annotated as B10_3 (front-stage block), B20_3 (middle block) and B30_3 (back-stage block).

[0076] See also Figure 3 For RAID, the band unit RAID-S0 writes to the storage physical block and it occupies each physical block B10 / B20 / B30 once and generates verification data Ver0. The band unit RAID-S1 writes to the physical block and occupies each physical block B10 / B20 / B30 once and generates verification data Ver1. The band unit RAID-S2 writes to the physical block and occupies each physical block B10 / B20 / B30 once and generates verification data Ver2. The band unit RAID-S3 writes to the physical block and occupies each physical block B10 / B20 / B30 once and generates verification data Ver3. The band unit RAID-SN writes to the physical block and occupies each physical block B10 / B20 / B30 once and generates verification data VerN. This occupation is synchronous occupation.

[0077] See also Figure 3 For RAID, assuming that each physical block B10 to B30 contains N pages, any single stripe-unit divides the continuous data to be protected (i.e., the protection object of RAID or the object data stored by RAID) into data blocks of the same size. At this point, a series of data blocks divided by continuous data are written to different physical blocks of the storage device that constitutes RAID: B10, B20, and B30.

[0078] See also Figure 3For RAID, any page of any actual physical block B10 to B30 that stores the band unit (RAID-S0 to RAID-SN) stores only one data block of the band unit. For example, page 0 of the first physical block B10_0 of the first storage particle stores a data block of RAID-S0. For particle 2, page 0 of the first physical block B10_1 of the second storage particle stores a data block of RAID-S0. For particle 3, page 0 of the first physical block B10_2 of the third storage particle stores a data block of RAID-S0. In addition, page 0 of the second physical block B20_0 of the first storage particle stores a data block of RAID-S0. For particle 2, page 0 of the second physical block B20_1 of the second storage particle stores a data block of RAID-S0. For particle 3, page 0 of the second physical block B20_2 of the third storage particle stores a data block of RAID-S0. In connection with the above, page 0 of the third physical block B30_0 of the first storage particle stores a data block of RAID-S0. For particle 2, page 0 of the third physical block B30_1 of the second storage particle stores a data block of RAID-S0. For particle 3, page 0 of the third physical block B30_2 of the third storage particle stores a data block of RAID-S0. Band unit data operations such as writing will relay to occupy the physical blocks B10-B20-B30 of each particle, and this relay is reflected in the arrows between two adjacent band units, making B10-B20-B30 almost full, although this full load does not really use all pages of all physical blocks (for example, using page 0 with serial number 0 of each physical block). In fact, this full load only nearly occupies a page with a serial number of all physical blocks instead of occupying all pages with serial numbers of all physical blocks.

[0079] See also Figure 3In the above text, for the third storage particle, such as LUN2, it is explained that the page page0 of the third physical block B30_2 of the third storage particle stores a data block of RAID-S0. In an alternative example, considering that the reserved physical blocks of the storage particles need to be used to store the respective check data of different band units, the page page0 of the third physical block B30_2 of the third storage particle can be used to store the check data Ver0. The data block of RAID-S0 is no longer stored at the page page0 of the third physical block B30_2 of the third storage particle. The check data Ver0 is, for example, the result of executing a preset data check operation on the data block at the page page0 of the three physical block positions of the three storage particles. For example, the check data Ver0 is the result of executing a preset data check operation on the data block at the known page page0 of the blocks at B10_0 to B10_2, B20_0 to B20_2, and B30_0 to B30_2.

[0080] See also Figure 3 For RAID, data operations with unit RAID-SN are like writing. For example, page pageN of the first physical block B10_0 of the first storage particle stores a data block of RAID-SN. For particle two, page pageN of the first physical block B10_1 of the second storage particle stores a data block of RAID-SN. For particle three, page pageN of the first physical block B10_2 of the third storage particle stores a data block of RAID-SN. In addition, page pageN of the second physical block B20_0 of the first storage particle stores a data block of RAID-SN. For particle two, page pageN of the second physical block B20_1 of the second storage particle stores a data block of RAID-SN. For particle three, page pageN of the second physical block B20_2 of the third storage particle stores a data block of RAID-SN. In connection with the above, page pageN of the third physical block B30_0 of the first storage particle stores a data block of RAID-SN. For particle 2, page pageN of the third physical block B30_1 of the second storage particle stores a data block of RAID-SN. For particle 3, page pageN of the third physical block B30_2 of the third storage particle stores a data block of RAID-SN. Band unit data operations such as writing will relay to occupy the physical blocks B10-B20-B30 of each particle, and this relay is reflected in the arrows between two adjacent band units, making B10-B20-B30 almost full, although this full load does not really use all pages of all physical blocks (for example, using page pageN with sequence number N of each physical block). In fact, this full load only nearly occupies a page with a certain sequence number of all physical blocks instead of occupying all the pages with all sequence numbers of physical blocks.

[0081] See also Figure 3 In the above text, for the third storage particle, such as LUN2, it is explained that the page pageN of the third physical block B30_2 of the third storage particle stores a data block of RAID-SN. In an alternative example, considering that the reserved physical blocks of the storage particles need to be used to store the respective verification data of different band units, the page pageN of the third physical block B30_2 of the third storage particle can be used to store the verification data VerN. The data block of RAID-SN is no longer stored at the page pageN of the third physical block B30_2 of the third storage particle. The verification data VerN is, for example, the result of executing a preset data verification operation on the data block at the page pageN of the three physical block positions of the three storage particles. For example, the verification data VerN is the result of executing a preset data verification operation on the data block at the known page pageN of the blocks at B10_0 to B10_2, B20_0 to B20_2, and B30_0 to B30_2.

[0082] See also Figure 3 , as for RAID data verification, RAID verification is a data security protection mechanism. For example, when writing to the RAID system, the written data is combined and processed in a certain way to form a verification data and write it to some disks of the RAID system at the same time. In this way, the RAID system can detect and repair data errors or disk failures through verification data (such as Ver0 to VerN), thereby ensuring the integrity and reliability of the data. In particular, it ensures the recoverability of erroneous data or faulty disk data.

[0083] See also Figure 3 For RAID verification, parity check or cyclic redundancy check CRC can be used. Parity check verifies by adding a check code to the data. For each data block written, parity check only needs to add a one-byte check code. In comparison, parity check is weak in error location and correction capabilities, for example, it is only suitable for small data volumes.

[0084] See also Figure 3 For RAID verification, the cyclic redundancy check (CRC) calculates the XOR value of all data bits in the data block to obtain a check code. When writing data, the check code is written together with the data block to each disk of the RAID system. When it is necessary to verify whether the data is correct, for example, it is only necessary to perform an XOR operation on the data block and the check code in each disk. If the obtained check code is the same as the expected check code, it means that there is no error in the data, otherwise it means that there is an error in the data. The cyclic redundancy check (CRC) is very suitable for this example.

[0085] See also Figure 3 For RAID verification, in addition to parity check and cyclic redundancy check, there are some other optional verification methods, such as B+ check and Hamming check. B+ check is to divide the data block in a certain way, and then perform parity check on each sub-data block separately, and then combine and process the verification results of all sub-data blocks to obtain a verification data. This method is suitable for situations with large data volume and high complexity, and requires more computing time. Hamming check is a hybrid verification method based on parity check and CRC and can provide better error location and correction capabilities.

[0086] See also Figure 3 In an optional embodiment, after any band unit (such as RAID-SN) has completed the deployment of data blocks on the previous physical blocks such as B10_0, B10_1, and B10_2 of different storage particles, such as three storage particles LUN0-LUN2, a preset data verification operation may or may not be performed on the data blocks on the previous physical block. And after any band unit such as RAID-SN has completed the deployment of data blocks on the subsequent physical blocks such as B20_0, B20_1, and B20_2 of different storage particles, a preset data verification operation is performed on the data blocks on the subsequent physical blocks B20_0 to B20_2 and the previous physical blocks B10_0 to B10_2 to obtain verification data VerN. It should be noted that using the reserved physical blocks of the storage particles to store the verification data of different band units means that it includes a variety of situations: for example, after all the data blocks of any band unit are completely written to the corresponding physical blocks, the preset data verification operation is uniformly performed on all the data blocks of any band unit to retrieve the verification data VerN at one time and store it in the reserved physical blocks. For another example, the present example performs a preset data verification operation on the data block on the next physical block and the data block on the previous physical block, that is, the data verification operation occurs between the adjacent front and back physical blocks to obtain verification data VerN and store it in the reserved physical block. After the data verification operation is performed sequentially between all the adjacent front and back physical blocks in the multiple physical blocks, multiple verification data can be obtained. This type of verification data is suitable for detecting and repairing data blocks of adjacent physical blocks.

[0087] See also Figure 3In an optional embodiment, after the data blocks on the previous physical blocks such as B10_0, B10_1, and B10_2 of different storage particles, such as three storage particles LUN0-LUN2, are deployed, the preset data verification operation may or may not be performed on the data blocks on the previous physical blocks. And after the data blocks on the subsequent physical blocks such as B20_0, B20_1, and B20_2 of different storage particles are deployed, any band unit such as RAID-SN performs a preset data verification operation on the data blocks on the subsequent physical blocks B20_0 to B20_2 and the previous physical blocks B10_0 to B10_2 to obtain verification data VerN_10 / 20. Verification data VerN_10 / 20 is suitable for repairing the data of page pageN of each adjacent physical block (B10_0 to B10_2 and B20_0 to B20_2).

[0088] See also Figure 3 In an optional embodiment, after the data blocks on the previous physical blocks such as B20_0, B20_1, and B20_2 of different storage particles, such as three storage particles LUN0-LUN2, are deployed, the preset data verification operation may or may not be performed on the data blocks on the previous physical blocks. And after the data blocks on the next physical blocks such as B30_0, B30_1, and B30_2 of different storage particles are deployed, any band unit such as RAID-SN performs a preset data verification operation on the next physical blocks B30_0 to B30_2 and the previous physical blocks B20_0 to B20_2 to obtain verification data VerN_20 / 30. Verification data VerN_20 / 30 is suitable for repairing the data of page N of each adjacent physical block (B20_0 to B20_2 and B30_0 to B30_2).

[0089] See also Figure 4 In an optional embodiment, after any band unit completes the deployment of data blocks on the previous physical block of some storage particles such as LUN0, it performs a preset data verification operation on the data blocks on the previous physical block and stores the obtained verification code in a temporary buffer; and after any band unit completes the deployment of data blocks on the subsequent physical block of some storage particles such as LUN0, it performs a preset data verification operation on the data blocks on the subsequent physical block and the verification code to obtain the verification data. This example takes a single LUN0 as an example.

[0090] See also Figure 4In an optional embodiment, after the data blocks on the previous physical block B10 of the LUN0 storage particle are deployed with the unit RAID-S0 (for page0), a preset data verification operation is performed on the data blocks on the previous physical block B10, and the obtained verification code Mid0 is stored in the temporary buffer. After the data blocks on the next physical block B20 of the storage particle are deployed with the unit RAID-S0, a preset data verification operation is performed on the data blocks on the next physical block B20 and the aforementioned verification code Mid0, thereby obtaining verification data Ver0. This embodiment takes a single storage particle LUN0 as an example. This example preferably requires and Figure 2 for comparison.

[0091] See also Figure 4 In an optional embodiment, after the data blocks on the previous physical block B10 of the LUN0 storage particle are deployed by the band unit RAID-S1 (for page1), a preset data verification operation is performed on the data blocks on the previous physical block B10, and the obtained verification code Mid1 is stored in the temporary buffer. After the data blocks on the next physical block B20 of the storage particle are deployed by the band unit RAID-S1, a preset data verification operation is performed on both the data blocks on the next physical block B20 and the aforementioned verification code Mid1, thereby obtaining verification data Ver1.

[0092] See also Figure 4 In an optional embodiment, after the data block on the previous physical block B10 of the LUN0 storage particle is deployed, the band unit RAID-S2 (for page2) performs a preset data verification operation on the data block on the previous physical block B10, and stores the obtained verification code Mid2 in the temporary buffer. After the data block on the next physical block B20 of the storage particle is deployed, the band unit RAID-S2 performs a preset data verification operation on both the data block on the next physical block B20 and the aforementioned verification code Mid2, thereby obtaining verification data Ver2.

[0093] See also Figure 4 According to the same principle, after the data block on the previous physical block B10 of the LUN0 storage particle is deployed with the unit RAID-SN (for pageN), the preset data verification operation is performed on the data block on the previous physical block B10, and the obtained verification code MidN is stored in the temporary buffer. After the data block on the next physical block B20 of the storage particle is deployed with the unit RAID-SN, the preset data verification operation is performed on both the data block on the next physical block B20 and the aforementioned verification code MidN, thereby obtaining verification data VerN.

[0094] See also Figure 5, for RAID, since SSD has been used to build the RAID array, the unit write operation mentioned above almost occupies about M*Q-1 physical blocks at one time, and almost fully uses all physical blocks of the SSD. The storage applications of the physical blocks shown in the figure, such as B10-B40, and even other physical blocks not shown: system software, mapping tables or metadata or storage data and other information embedded in the memory. During the operation, if the original physical block carrying any information is damaged and different unit operations are almost relayed to use all physical blocks, the fault dump will be blocked. For example, if the original physical block where the system firmware is located is detected to have a defect, the dump block and mapping relationship should be implemented in time, otherwise the storage system and the disk array formed may crash due to incomplete or missing software functions. Different sector areas in the figure represent different physical blocks, and their uses or built-in information are different. The physical blocks where the system software, mapping tables or metadata and bad block relationships are located generally do not participate in the allocation of the disk array. The physical blocks where the data storage area is located can participate in the formation of the disk array and allocate the received data objects. The blank physical blocks released by the garbage collection mechanism can also participate in the formation of the disk array and allocate the received data objects. The physical blocks where the bad blocks are generated during the factory or during use (such as RAID) are located are usually regarded as device loss points and are not allowed to participate in the allocation of the disk array.

[0095] See also Figure 6 In fact, the core of RAID lies in the first two words, using multiple hard disks (Array) to improve the overall capacity (Capacity) and performance (Performance) of the storage system, and using additional (Redundant) hard disks to ensure storage integrity (Integrity). RAID provides data protection in units of Stripe, and Stripe is further divided into Stripe-Unit and distributed to all member hard disks of the array. Often a Stripe will contain multiple copies of data and checksums. In the basic RAID example, a mapping is used to correspond the logical disk address virtualized by RAID to the corresponding physical hard disk and LBA (Logic Block Address), thereby adaptively forming a continuous address space. In complex RAID examples, especially some commercial systems with compression and deduplication, a mapping from virtual disk address to physical disk is usually maintained inside the disk array to complete complex array applications.

[0096] See also Figure 6, most fundamentally, Stripe is the basic component of RAID, and Stripe does not have any additional relationship with each other. Different users often have different needs, and different RAID levels appear due to differences in performance or data protection capabilities. SNIA (Storage Networking Industry Association) has done some standardization work on disk arrays, such as defining 7 levels of RAID from 0 to 6.

[0097] RAID0: Poor redundancy, usually used together with other RAID levels such as Nested RAID.

[0098] RAID1: Data mirroring, i.e. the data on each disk is exactly the same.

[0099] RAID2: bit-level redundancy, bit-level striping.

[0100] RAID3: byte-level redundancy, byte-level striping.

[0101] RAID4: block-level redundancy, block-level striping with dedicated parity.

[0102] RAID5: block-level redundancy, block-level striping with distributed parity.

[0103] RAID6: block-level redundancy, block-level striping with double distributed parity.

[0104] See also Figure 6 SSD solid state drives have been widely used in various occasions. At present, they have gradually replaced traditional HDDs in the PC market, providing users with a better experience in terms of reliability and performance. Due to the characteristics of NAND media, there is a risk of data damage. In order to ensure the reliability of data, RAID is generally built inside the SSD to protect the data. RAID can be built into Page RAID / Block RAID / Die RAID, etc., mainly based on the physical composition of the SSD. Different types of RAID have different protection strengths to deal with different NAND failures.

[0105] See also Figure 6In an optional embodiment, after any band unit has completed the deployment of data blocks on the previous physical blocks of different storage particles such as LUN0-LUN2, a preset data verification operation is performed on the data blocks on the previous physical blocks and the obtained verification code is stored in the temporary buffer; after any band unit has completed the deployment of data blocks on the subsequent physical blocks of different storage particles such as LUN0-LUN2, a preset data verification operation is performed on the data blocks on the subsequent physical blocks and the verification code to obtain verification data. This example can be used with Figure 3 for comparison.

[0106] See also Figure 6 In an optional embodiment, after the data blocks on the previous physical blocks of the storage particles LUN0-LUN2 are deployed, such as B10_0, B10_1, and B10_2, the RAID-S0 performs a preset data verification operation on the data blocks on the previous physical blocks and stores the obtained verification code Mid0_A in the buffer. After the data blocks on the subsequent physical blocks of different storage particles LUN0-LUN2 are deployed, such as B20_0, B20_1, and B20_2, the RAID-S0 performs a preset data verification operation on the data blocks on the subsequent physical blocks and the verification code Mid0_A, thereby obtaining the verification code Mid0_B. So far, two verifications are implemented. After the data blocks on the subsequent physical blocks of different storage particles LUN0-LUN2 are deployed, such as B30_0, B30_1, and B30_2, the RAID-S0 performs a preset data verification operation on the data blocks on the subsequent physical blocks and the verification code Mid0_B, thereby obtaining the verification data Ver0. The check data is suitable for detecting and repairing the data on the page 0 of the adjacent physical blocks such as B20 / B30. This is an example of distributed step-by-step check RAID rather than unified check RAID.

[0107] See also Figure 6In an optional embodiment, after the data blocks on the previous physical blocks of the storage particles LUN0-LUN2, such as B10_0, B10_1, and B10_2, are deployed, the RAID-SN performs a preset data verification operation on the data blocks on the previous physical blocks and stores the obtained verification code MidN_A in the buffer. After the data blocks on the subsequent physical blocks of different storage particles LUN0-LUN2, such as B20_0, B20_1, and B20_2, are deployed, the RAID-SN performs a preset data verification operation on the data blocks on the subsequent physical blocks and the verification code MidN_A, thereby obtaining the verification code MidN_B. So far, two verifications are implemented. After the data blocks on the subsequent physical blocks of different storage particles LUN0-LUN2, such as B30_0, B30_1, and B30_2, are deployed, the RAID-SN performs a preset data verification operation on the data blocks on the subsequent physical blocks and the verification code MidN_B to obtain the verification data Ver0. The check data is suitable for detecting and repairing the data on the respective pages N of the adjacent physical blocks such as B20 / B30. This is an example of distributed step-by-step check RAID rather than unified check RAID.

[0108] See also Figure 6 When the disk array is running, the physical blocks in the system data area will be occupied by the system data and the physical blocks identified as bad blocks cannot be used. When the array is written, the data storage area will also be full. At this time, if you continue to update and write new data, you should allocate such physical blocks from the blank physical blocks for new data writing. When the data storage area is occupied by the RAID array relay mentioned above, writing new data cannot be completed.

[0109] See also Figure 6RAID configuration includes: the continuous data to be protected (RAID object) needs to be divided into data blocks of the same size, and the series of data blocks obtained by the division are written to different physical blocks of the storage device that builds the RAID, such as B10 / B20 / B30, etc. Many data blocks belonging to the same band unit, such as RAID-SN, are allocated to different physical blocks, such as B10 / B20 / B30, etc., of each storage particle LUN0-LUN2 in the storage device, and any page, such as pageN, of each physical block, such as B10, that stores the band unit RAID-SN only stores a unique data block of the band unit RAID-SN. Part of the data blocks of different band units such as RAID-S0 to RAID-SN are first allocated to the previous physical blocks B10_0, B10_1, and B10_2 of the storage particles LUN0-LUN2, and after the pages of the previous physical blocks are full of data, the other data blocks of these different band units such as RAID-S0 to RAID-SN are then allocated to the next physical blocks of the storage particles LUN0-LUN2 adjacent to the previous physical blocks, such as B20_0, B20_1, and B20_2. And so on and so forth, and in this cycle: different band units such as RAID-S0 to RAID-SN, each of which has a portion of data blocks, are first allocated to the previous physical blocks B20_0, B20_1, and B20_2 of the storage particles LUN0-LUN2, and after each page of the previous physical block is fully written with data, the other data blocks of these different band units such as RAID-S0 to RAID-SN are then allocated to the next physical blocks adjacent to the previous physical blocks of the storage particles LUN0-LUN2, such as B30_0, B30_1, and B30_2. RAID is configured in this cycle. The reserved physical blocks of a certain storage particle are used to store the verification data Ver0-VerN of different band units.

[0110] See also Figure 6 , configuring RAID includes: using a reserved physical block of a storage particle such as LUN2 to store the verification data of different band units. For example, the reserved physical block of LUN2 is B30_2. Page 0 of B30_2 is used to store the verification data Ver0 of the data of band unit RAID-S0 (its continuous data blocks). Page 1 of B30_2 is used to store the verification data Ver1 of the data of band unit RAID-S1 (its continuous data blocks). Page 2 of B30_2 is used to store the verification data Ver2 of the data of band unit RAID-S2 (its continuous data blocks). Page N of B30_N is used to store the verification data VerN of the data of band unit RAID-SN (its continuous data blocks).

[0111] See also Figure 4, based on the physical blocks of a single storage particle LUN0 of a single storage device, such as B10 / B20, etc., to form the RAID described above. Or, see Figure 6 , based on the physical blocks of the storage particles LUN0-LUN2 of a single storage to form a RAID. Or, see Figure 6 , RAID is built based on the physical blocks of storage particles LUN0-LUN2 of multiple storage devices, for example, each storage device itself contains only one corresponding storage particle. One of the differences between single storage device and multi-storage device when assembling RAID is that LUN is the smallest unit for executing commands, different LUNs can execute different command sequences, and multi-storage devices can execute parallel storage commands compared to single storage devices. In addition to operations such as data writing or data reading, parallel commands can also execute operations such as erasing, space recovery, or dumping.

[0112] See also Figure 6 , the data blocks belonging to the same band unit such as RAID-S0 and on the previous physical blocks of different storage particles LUN0-LUN2, such as B10_0, B10_1, B10_2, are configured as follows: these data blocks are written to the same pages of the previous physical blocks of different storage particles, such as page 0. Figure 3 .

[0113] See also Figure 6 , the data blocks belonging to the same band unit such as RAID-S0 and on the next physical blocks of different storage particles LUN0-LUN2 such as B20_0, B20_1, B20_2 are configured as follows: these data blocks are written to the same pages of the next physical blocks of different storage particles, such as page 0. Figure 3 .

[0114] See also Figure 6 , the data blocks belonging to the same band unit such as RAID-SN and on the previous physical blocks such as B20_0, B20_1, and B20_2 of different storage particles LUN0-LUN2 are configured as follows: these data blocks are written to the same pages of the previous physical blocks of different storage particles, such as page N. Figure 3 .

[0115] See also Figure 6 , the data blocks belonging to the same band unit such as RAID-SN and on the next physical blocks of different storage particles LUN0-LUN2 such as B30_0, B30_1, B30_2 are configured as follows: these data blocks are written to the same pages of the next physical blocks of different storage particles, such as page N. Figure 3 .

[0116] See also Figure 6 , the data blocks on the page N of any serial number such as N of the previous physical block such as B10_0, B10_1, B10_2 of any band unit such as RAID-SN deployed in different storage particles LUN0-LUN2, and the data blocks on the page N of the same serial number such as serial number N of the next physical block such as B20_0, B20_1, B20_2 deployed in different storage particles LUN0-LUN2 are set to belong to continuous data at the stage of writing to the storage device such as SSD. It is reflected that the data blocks written on page N of B10_0, page N of B10_1, page N of B10_2, etc. and the data blocks written on page N of B20_0, page N of B20_1, page N of B20_2, etc., belong to the continuous data (Continuous Data) of RAID-SN.

[0117] See also Figure 6 , the data blocks on the page N of any sequence number such as N of the previous physical block such as B20_0, B20_1, B20_2 of any band unit such as RAID-SN deployed in different storage particles LUN0-LUN2, and the data blocks on the page N of the same sequence number such as sequence number N of the next physical block such as B30_0, B30_1, B30_2 deployed in different storage particles LUN0-LUN2 are set to belong to continuous data at the stage of writing to the storage device such as SSD. It is reflected that the data blocks written on page N of B20_0, page N of B20_1, page N of B20_2, etc., and the data blocks written on page N of B30_0, page N of B30_1, page N of B30_2, etc., belong to the continuous data (Continuous Data) of RAID-SN.

[0118] See also Figure 6 As mentioned above, regarding the RAID-SN continuous data feature, the data block immediately following the data block on pageN of B10_2 is the data block on pageN of B20_0.

[0119] See also Figure 6 As mentioned above, regarding the RAID-SN continuous data feature, the data block immediately following the data block on pageN of B20_2 is the data block on pageN of B30_0.

[0120] See also Figure 6The data blocks of any band unit such as RAID-SN deployed on the previous physical blocks such as B10_0, B10_1, B10_2 of different storage particles LUN0-LUN2 and the data blocks of any band unit such as RAID-SN deployed on the subsequent physical blocks B20_0, B20_1, B20_2 of different storage particles LUN0-LUN2, their write operations into the memory are executed in an interleaved manner with the write operations of other different band units.

[0121] See also Figure 6 As mentioned above, after the data blocks of the RAID-SN deployed on the previous physical blocks such as B10_0, B10_1, and B10_2 of different storage particles LUN0-LUN2 are written to pageN, other band units such as RAID-S0 to RAID-S(N-1) are written to the previously specified page0-page(N-1) positions of the next physical blocks B20_0, B20_1, and B20_2. The data blocks of the RAID-SN deployed on the next physical blocks such as B20_0, B20_1, and B20_2 of different storage particles LUN0-LUN2 are written to pageN.

[0122] See also Figure 6 The data blocks of any band unit such as RAID-SN deployed on the previous physical blocks such as B20_0, B20_1, B20_2 of different storage particles LUN0-LUN2 and the data blocks of any band unit such as RAID-SN deployed on the subsequent physical blocks B30_0, B30_1, B30_2 of different storage particles LUN0-LUN2, their write operations into the memory are executed in an interleaved manner with the write operations of other different band units.

[0123] See also Figure 6 As mentioned above, after the data blocks of the RAID-SN deployed on the previous physical blocks such as B20_0, B20_1, and B20_2 of different storage particles LUN0-LUN2 are written to pageN, other band units such as RAID-S0 to RAID-S(N-1) are written to the previously specified page0-page(N-1) positions of the next physical blocks B30_0, B30_1, and B30_2. The data blocks of the RAID-SN deployed on the next physical blocks such as B30_0, B30_1, and B30_2 of different storage particles LUN0-LUN2 are written to pageN.

[0124] See also Figure 6As mentioned above, the stage in which data blocks of any band unit such as RAID-SN deployed on the previous physical blocks of different storage particles are written to the storage device such as SSD, and the stage in which data blocks of any band unit such as RAID-SN deployed on the next physical blocks of different storage particles are written to the storage device, are interspersed with the writing operations of data blocks of other different band units, such as the writing operations of data blocks of RAID-S0 to RAID-S(N-1).

[0125] See also Figure 6 In an optional embodiment, some data blocks of different band units such as RAID-S0 to RAIDN are first allocated to the previous physical block of storage particles LUN0-LUN2, such as B10_0, B10_1, B10_2, and after each page of the previous physical block, such as page0-pageN, is fully written with data (for example, several data blocks of RAID-S0 are written to page0 of the previous physical block, several data blocks of RAID-S1 are written to page1 of the previous physical block, and several data blocks of RAID-SN are written to pageN of the previous physical block, and so on), the other data blocks of band units RAID-S0 to RAIDN are then allocated to the next physical block of storage particles LUN0-LUN2 adjacent to the previous physical block. The next physical block of each storage particle adjacent to the previous physical block is, for example, B20_0, B20_1, B20_2. The remaining data blocks of each of these band units are allocated to the next physical block of the storage particles LUN0-LUN2, such as B20_0, B20_1, B20_2, and the corresponding data is written to each page of the next physical block, such as page0-pageN (for example, the corresponding data block of RAID-S0 is written to page0 of the next physical block, the corresponding data block of RAID-S1 is written to page1 of the next physical block, and the corresponding data block of RAID-SN is written to pageN of the next physical block, and so on). This example is an effective solution to avoid RAID operations from occupying all physical blocks in relay. All physical blocks refer to all physical blocks that form the RAID.

[0126] See also Figure 6In an optional embodiment, part of the data blocks of different band units such as RAID-S0 to RAIDN are first allocated to the previous physical block of storage particles LUN0-LUN2, such as B20_0, B20_1, B20_2, and after each page of the previous physical block, such as page0-pageN, is fully written with data (for example, several data blocks of RAID-S0 are written to page0 of the previous physical block, several data blocks of RAID-S1 are written to page1 of the previous physical block, and several data blocks of RAID-SN are written to pageN of the previous physical block, and so on), the other data blocks of the band units RAID-S0 to RAIDN are then allocated to the next physical block of storage particles LUN0-LUN2 adjacent to the previous physical block. The next physical block of each storage particle adjacent to the previous physical block is, for example, B30_0, B30_1, B30_2. The remaining data blocks of each of these band units are allocated to the next physical block of the storage particles LUN0-LUN2, such as B30_0, B30_1, B30_2, and the corresponding data is written to each page of the next physical block, such as page0-pageN (for example, the corresponding data blocks of RAID-S0 are written to page0 of the next physical block, the corresponding data blocks of RAID-S1 are written to page1 of the next physical block, and the corresponding data blocks of RAID-SN are written to pageN of the next physical block, and so on).

[0127] See also Figure 6 In an optional embodiment, stripe-unit is a method that advocates dividing continuous data into data blocks of equal size and writing each database to a different disk or hard disk.

[0128] See also Figure 6 In an optional embodiment, when a band unit such as RAID-SN deploys its data blocks, in the stage of transitioning from the previous physical blocks such as B10_0, B10_1, B10_2 of different storage particles such as LUN0-LUN2 to the next physical blocks such as B20_0, B20_1, B20_2 of different storage particles, the previous physical block (B10) and the next physical block (B20) of the storage particles LUN0-LUN2 are kept not occupied by the band unit RAIDN at the same time, so as to provide a dump space for the physical blocks that fail in this stage. This stage refers to the stage of configuring RAID or performing RAID data operations.

[0129] See also Figure 6In an optional embodiment, when a stripe unit such as RAID-SN deploys its data blocks, in the stage of transitioning from the previous physical blocks such as B20_0, B20_1, B20_2 of different storage particles such as LUN0-LUN2 to the next physical blocks such as B30_0, B30_1, B30_2 of different storage particles, the previous physical block (B20) and the next physical block (B30) of the storage particles LUN0-LUN2 are kept not occupied by the stripe unit RAID-SN at the same time, so as to provide a dump space for the physical block that fails in this stage. The RAID data operation stage deals with a very large amount of data in the stripe unit and this stage is also a stage where data errors or failures are prone to occur.

[0130] See also Figure 6 In an optional embodiment, a portion of the data blocks of different band units are first allocated to the previous physical block of the storage particle and after each page of the previous physical block is fully written with data, the remaining other data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block: thereby ensuring that when any band unit deploys its corresponding data blocks, in the stage of transitioning from the previous physical block of different storage particles to the next physical block of different storage particles, the purpose is to keep the previous physical block and the next physical block of different storage particles from being occupied by any band unit at the same time, so as to provide a dump space for the physical block that fails in this stage (i.e., the RAID configuration stage). Further, the above scheme is also used to prevent different band units (such as RAID-S0 to RAID-SN) from occupying all physical blocks of the storage device in relay, and thereby prevent the original information on the failed physical block from being unable to perform failover.

[0131] See also Figure 6There are many kinds of faults, and the main fault-related contents are as follows. In the transition stage when the data blocks of any stripe unit are deployed from the previous physical blocks of different storage particles to the next physical blocks, if any stripe unit is written to the page where it is located, if the bit value programming flip (due to Program Disturb) of other pages of the previous physical block is caused, it is assumed that the block space released by the next physical block that is not occupied by any stripe unit at the same time is used to transfer the storage area of ​​the bit value programming flip, such as the original information of the faulty physical block. As the name implies, the data characteristics of the stripe unit are long and thin, which is reflected in the stripe structure not occupying many pages, such as only occupying a single page of each physical block, but long, which is reflected in the fact that a single write of the stripe structure will occupy a large number of physical blocks and their respective single pages. The data characteristics of the stripe unit cause the write operation to frequently apply programming voltage to the word line (World Line) of the page where it is located to program each bit of each data block of the stripe unit (stripe) to certain bit values. The longer the stripe structure of the stripe unit, the more times the programming voltage is applied to the word line of the page where it is located. The charge in the floating gate of each transistor (such as SSD) on the page or other pages will usually be programmed to an undeterminable level (the longer the stripe, the more chaotic the charge amount). One of the external manifestations of the floating gate charge of the storage transistor becoming chaotic is the failure of bit value programming flip. In the transition stage of the data block of the stripe unit RAID-SN being deployed from the previous physical block of different storage particles LUN0-LUN2 to the next physical block, when the same stripe unit RAID-SN is written to its page pageN (belonging to B10 / B20 / B30), it will induce the data of other pages page0-page(N-1) of the previous physical block to flip the bit value programming. Writing data on the page pageN usually requires other page transistors on the same physical block to be turned on synchronously as selection transistors. Large-scale RAID takes as little as dozens of hours and as much as several days, which gives rise to a large number of transfer needs. The block space released by the next physical block that is not occupied by the unit RAID-SN during the RAID period is used to transfer the original information of the faulty physical block whose bit value programming is flipped. Because the error rate generated by the disk array when configuring data is usually quite large, this article can provide a replacement rate of up to 1:1, that is, each erroneous or faulty physical block is guaranteed to have a backup block in real time. Furthermore, the backup block can be immediately used as the writing space for subsequent data when the subsequent data is written to the RAID, so it will not generate too much extra unused block space. Note that the error rate of the disk array will increase dramatically when the SSD uses TLC or QLC or even future PLC particles. This case has a natural inherent advantage in solving the high error rate of the disk array and the various specific failures mentioned in the context.If any band unit causes a programming flip failure of the bit values ​​of other pages of the previous physical block when it is written into the page where it is located, the cause of this failure is that the strip-shaped data characteristics of the any band unit cause the word line of the page where the any band unit is located to apply a programming voltage at a high frequency.

[0132] See also Figure 6There are many types of so-called faults, and the relevant contents of minor faults are as follows. In the transition stage when the data blocks of any stripe unit are deployed from the previous physical blocks of different storage particles to the next physical blocks, if any stripe unit causes the bit value programming flip (due to Check Disturb) of other pages of the previous physical block when generating verification data, it is assumed that the block space released by the next physical block that is not occupied by any stripe unit at the same time is used to transfer the storage area of ​​the bit value programming flip, such as the original information of the faulty physical block. As mentioned above, the data characteristics of the stripe unit are long and thin, which is reflected in the stripe structure not occupying many pages, such as only occupying a single page of each physical block, but long, which is reflected in the single verification of the stripe structure involving a large number of physical blocks and their respective single pages. The data characteristics of the stripe unit cause the data verification to frequently apply the verification read voltage to the word line (World Line) of the page where it is located to read the bit value of each bit of each data block of the stripe unit to execute the verification algorithm. The longer the stripe, the more times the read voltage is applied to the word line of the page where it is located. The charge in the floating gate of the transistor (SSD) on the word line of the page or other pages will usually be programmed to the point where it cannot be determined (the longer the stripe, the more chaotic the charge amount). One of the external manifestations of the chaotic floating gate charge of the storage transistor is the failure of bit value programming flip. In the transition stage when the data block of the stripe RAID-SN is deployed from the previous physical block of different storage particles LUN0-LUN2 to the next physical block, when the stripe RAID-SN implements data verification (such as CRC / B+ / Hamming Check), it will induce the data of other pages page0-page(N-1) of the previous physical block to flip the bit value programming. The implementation of data verification on any page usually requires other page transistors on the same physical block to be turned on synchronously as selection transistors. Large-scale RAID takes as little as dozens of hours and as much as several days, which gives rise to a large number of transfer needs. The block space released by the next physical block that is not occupied by the unit RAID-SN during the RAID is used to transfer the original information of the faulty physical block with the bit value programming flipped. The block space mentioned in the context also represents the meaning of the physical block space (or its mapped logical space block), etc. The manifestation of the bit value programming flip is, for example, flipping from logic one to logic zero, or from logic zero to logic one, or from logic one to an unknown state, or from logic zero to an unknown state, etc. Various unexpected situations. Note that whether it is a major fault or a minor fault, their generation mechanism is closely related to the slender strip-shaped data structure with a unit (stripe), because the subtle programming of the floating gate charge under such conditions is extremely easy to integrate to an out-of-control state, which is almost unavoidable in the RAID scenario. In conventional application scenarios, there is no need to define the data as a narrow and long strip structure, and the floating gate charge will not have such obvious changes.Solving this type of problem happens to be the advantage of the present application, and the specific details can be found in the context. If any band unit causes a bit value programming flip failure of other pages of the previous physical block when generating verification data, the cause of this failure is that the stripe-shaped data feature of the any band unit applies a verification read voltage to the word line of the page where the any band unit is located at a high frequency.

[0133] See also Figure 6 In an optional embodiment, the storage device for optimizing RAID includes: one or more memories for forming RAID. The continuous data to be protected is divided into data blocks of the same size, and the series of data blocks obtained by the division are written to different physical blocks of the memory respectively. Many data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block of the band unit is used to store only one data block of the band unit. A part of the data blocks of each different band unit are first configured to the previous physical block of the storage particle, and after each page of the previous physical block is full of data, the remaining other data blocks of each of the different band units are then configured to the next physical block of the storage particle adjacent to the previous physical block. A reserved physical block of a storage particle is left vacant in the memory, and the reserved physical block is used to store the verification data Ver0-VerN of each different band unit for realizing RAID verification. The storage device can be a network storage NAS-level capacity or a private cloud server-level capacity or a large server group-level capacity widely used in commercial activities, or a data center or a super-large database center of a larger capacity level.

[0134] See also Figure 6In an optional embodiment, the computer PC system for optimizing RAID includes: one or more memories configured to the computer system for forming RAID. The computer system receives continuous data to be protected and processed, and the continuous data is divided into data blocks of the same size and the divided series of data blocks are written to different physical blocks of the memory respectively. Many data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores one data block of the band unit. Partial data blocks of different band units are first configured to the previous physical block of the storage particle, and after each page of the previous physical block is full of data, the remaining data blocks of these different band units are then configured to the next physical block of the storage particle adjacent to the previous physical block. At least one reserved physical block of the storage particle is vacant in the memory, which is used to store the verification data of different band units, so that the computer system can perform error detection and repair on the stored continuous data. The verification data is Ver0-VerN. The computer system can be a simple storage system applied to information storage, or it can be a computing and processing system that participates in artificial intelligence (such as autonomous driving) or participates in large data throughput such as big data, especially participating in supercomputing or in-memory computing. In these cases, there are two major features that require special attention. One is that the number of storage devices used to build the RAID is extremely large; the other is that the amount of data that the RAID array needs to process is extremely large and updated in real time, which means that the massive data blocks with units are more likely to have errors and need to be transferred during the RAID data operation. Solving these problems happens to be the advantage of this application.

[0135] The above description and drawings provide typical embodiments of specific structures of specific embodiments. The above invention provides existing preferred embodiments, but these contents are not intended to be limiting. For those skilled in the art, various changes and modifications will undoubtedly be obvious after reading the above description. Therefore, the attached claims should be regarded as covering all changes and modifications of the true intent and scope of the present invention. Any and all equivalent scopes and contents within the scope of the claims should be considered to still be within the intent and scope of the present invention.

Claims

1. A method for configuring RAID, characterized in that: include: The continuous data to be protected is divided into data blocks of the same size, and the series of data blocks obtained by the division are respectively written into different physical blocks of the storage device constituting the RAID; The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block of the band unit only stores the only data block of the band unit; Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block; A reserved physical block of a storage particle is used to store the respective check data of different band units.

2. The method according to claim 1, characterized in that: RAID is constructed based on multiple physical blocks of a single storage particle of a single storage; or, RAID is constructed based on multiple physical blocks of multiple storage particles of a single storage or multiple storages.

3. The method according to claim 1, characterized in that: The data blocks belonging to the same band unit and located in the previous physical blocks of different storage particles are configured such that they are written to the same-ordered pages of the previous physical blocks of the different storage particles; and A plurality of data blocks belonging to the same band unit and located in the next physical blocks of different storage particles are configured such that they are written to the same-ordered pages in the next physical blocks of the different storage particles.

4. The method according to claim 1, characterized in that: The data blocks on the page of any serial number of the previous physical block of each different storage particle deployed by any band unit and the data blocks on the page of the same serial number of the next physical block of each different storage particle deployed by any band unit are set to belong to continuous data in the stage of writing into the memory.

5. The method according to claim 1, characterized in that: The write operations of data blocks of any band unit deployed on the previous physical blocks of different storage particles and the data blocks of any band unit deployed on the next physical blocks of different storage particles into the memory are executed in an interleaved manner with the write operations of other different band units.

6. The method according to claim 1, characterized in that: After the data blocks of any band unit on the previous physical blocks of different storage particles are deployed; and After any band unit completes deployment of data blocks on respective subsequent physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the subsequent physical block and the data blocks on the previous physical block to obtain the verification data.

7. The method according to claim 1, characterized in that: After any band unit completes the deployment of the data blocks on the previous physical blocks of different storage particles, it performs a preset data verification operation on the data blocks on the previous physical block, and stores the obtained verification code in the temporary buffer; as well as After any band unit completes deployment of the data blocks on the respective subsequent physical blocks of different storage particles, a preset data verification operation is performed on the data blocks on the subsequent physical blocks and the verification code, thereby obtaining the verification data.

8. The method according to claim 1, characterized in that: When any band unit deploys its corresponding data block, in the stage of transitioning from the previous physical block of different storage particles to the next physical block of different storage particles, the previous physical block and the next physical block of different storage particles are kept not occupied by any band unit at the same time, so as to provide dump space for the physical block that fails in this stage.

9. A storage device for optimizing RAID, characterized in that: include: One or more storage devices for forming a RAID; The continuous data to be protected is divided into data blocks of the same size, and the series of data blocks obtained by the division are written into different physical blocks of the memory respectively; The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores a data block of the only band unit; Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block; At least one reserved physical block of a storage particle is left vacant in the memory, and the reserved physical block is used to store respective verification data of different band units for implementing RAID verification.

10. A computer system for optimizing RAID, characterized in that: include: One or more memories configured to a computer system for forming a RAID; The computer system receives continuous data to be protected and processed, the continuous data is divided into data blocks of the same size and a series of divided data blocks are written into different physical blocks of the memory respectively; The data blocks belonging to the same band unit are allocated to different physical blocks of each storage particle in the memory, and any page of each physical block used to store the band unit only stores a data block of the only band unit; Part of the data blocks of different band units are first allocated to the previous physical block of the storage particle, and after each page of the previous physical block is fully written with data, the remaining data blocks of the different band units are then allocated to the next physical block of the storage particle adjacent to the previous physical block; At least one reserved physical block of a storage particle is left vacant in the memory for storing respective check data of different band units so that the computer system can perform error detection and repair on the stored continuous data.