WO2024098698A1 - 一种磁盘阵列初始化方法、装置、设备及可读存储介质 - Google Patents

一种磁盘阵列初始化方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
WO2024098698A1
WO2024098698A1 PCT/CN2023/093312 CN2023093312W WO2024098698A1 WO 2024098698 A1 WO2024098698 A1 WO 2024098698A1 CN 2023093312 W CN2023093312 W CN 2023093312W WO 2024098698 A1 WO2024098698 A1 WO 2024098698A1
Authority
WO
WIPO (PCT)
Prior art keywords
stripe
sliding window
initialization
window
initialized
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/CN2023/093312
Other languages
English (en)
French (fr)
Inventor
李飞龙
许永良
孙明刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Publication of WO2024098698A1 publication Critical patent/WO2024098698A1/zh
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present application relates to the field of storage technology, and in particular to a disk array initialization method, device, equipment and readable storage medium.
  • RAID Redundant Array of Independent Disks
  • RAID is a redundant array composed of independent disks. It is composed of many independent disks, combined into a disk group with huge capacity, and uses the additive effect of individual disks to provide data to improve the performance of the entire disk system. Based on RAID, data can be cut into many segments and stored on each hard disk.
  • the RAID array After the RAID array is created, it needs to be initialized in stripes. During the initialization process, the stripes are managed using a bitmap metadata organization method. Each bit in the bitmap data structure represents a stripe, and stripes can be set and cleared, but cannot be assigned values.
  • This metadata organization method has shortcomings in large and large-capacity RAID arrays: the bitmap metadata organization method takes up a lot of resource space, which will cause the initialization task of a large-capacity RAID array to take a long time, resulting in a decrease in user experience, and there is a risk of stripe inconsistency in the case of urgent foreground IO tasks.
  • the purpose of this application is to provide a disk array initialization method, device, equipment and readable storage medium, which can reduce the initialization memory usage and improve the RAID initialization efficiency.
  • a disk array initialization method comprising:
  • a sliding window is set starting from the first address of the stripe
  • the process returns to the step of executing the initialization task for the stripe corresponding to the current sliding window until all the stripes of the RAID array are initialized.
  • setting a sliding window starting from the first address of the stripe includes:
  • assigning a value to a stripe mark includes:
  • the stripe flags are assigned values using the respective stripe bit flags.
  • three unsigned data are applied to construct a sliding window, including:
  • performing an initialization task on a strip corresponding to the current sliding window includes:
  • the water level pointer is updated until the stripe corresponding to the current sliding window is initialized;
  • the initialization task is performed on the target stripe, and after the initialization task is performed, the water level pointer is updated until it is determined that the stripe corresponding to the current sliding window is initialized.
  • determining that the strip corresponding to the current sliding window has been initialized includes:
  • determining that the strip corresponding to the current sliding window has been initialized includes:
  • moving the sliding window includes:
  • the window offset is used to determine whether all stripes of the RAID array have been initialized, including:
  • window offset is equal to the total number of windows, it is determined that all stripes of the RAID array have been initialized
  • window offset is not equal to the total number of windows, it is determined that all stripes of the RAID array have not been completely initialized.
  • the process of obtaining the total number of windows includes:
  • moving the sliding window includes:
  • moving the sliding window includes:
  • the stripe mark is assigned a value.
  • a disk array initialization device comprising:
  • a sliding window initialization module is used to set a sliding window starting from the first address of the stripe after receiving an initialization request of the RAID array;
  • the strip initialization module is used to perform the initialization task on the strip corresponding to the current sliding window; after initializing the strip corresponding to the current sliding window, the sliding window is moved; after the window movement is completed, the strip corresponding to the current sliding window is returned to execute Execute the steps of the initialization task until all stripes of the RAID array are initialized.
  • An electronic device comprising:
  • the processor is used to implement the steps of the disk array initialization method when executing the computer program.
  • a non-volatile readable storage medium stores a computer program, which implements the steps of the disk array initialization method when executed by a processor.
  • a sliding window is set starting from the stripe head address; an initialization task is performed on the stripe corresponding to the current sliding window; after initializing the stripe corresponding to the current sliding window, the sliding window is moved; after completing the window movement, the step of performing the initialization task on the stripe corresponding to the current sliding window is returned until all stripes of the RAID array are initialized.
  • the sliding window is first set, and then the initialization task is performed for the stripe corresponding to the sliding window. After the stripe corresponding to the current sliding window is initialized, the sliding window is moved, and the initialization task is continued for the stripe corresponding to the current sliding window until all the stripes of the RAID array are initialized. That is to say, when the stripes of the RAID array are initialized, only the stripes within the sliding window are always initialized.
  • the embodiments of the present application also provide a disk array initialization device, equipment and readable storage medium corresponding to the above disk array initialization method, which have the above technical effects and are not described in detail here.
  • FIG1 is a flowchart of a disk array initialization method according to an embodiment of the present application.
  • FIG2 is a schematic diagram of RAID6
  • FIG3 is a schematic diagram of the structure of a disk array initialization device according to an embodiment of the present application.
  • FIG4 is a schematic diagram of the structure of an electronic device in an embodiment of the present application.
  • FIG. 5 is a schematic diagram of a specific structure of an electronic device in an embodiment of the present application.
  • FIG. 1 is a flow chart of a disk array initialization method according to an embodiment of the present application. The method comprises the following steps:
  • a RAID initialization request sent by an upper layer application may be received.
  • a dynamic sliding window is used to initialize the RAID array.
  • a sliding window can be set accordingly.
  • the sliding window can be set from the beginning of the stripe head address of the RAID array or from the beginning of the APU stripe head address saved by the two nodes in the cluster.
  • the window size of the sliding window can be set and adjusted according to actual needs. For example, the window size can be set to 32 (of course, in actual applications, this value can also be increased or decreased), that is, the initialization task of 32 stripes is processed before each sliding of the sliding window.
  • APU atomic parity update
  • RAID module for the checksum data generated by the write request
  • the purpose is to ensure that the consistency of the stripe is restored after a system abnormality (such as power failure, controller failure, etc.).
  • Its content includes RAID stripe address, data, and checksum.
  • IOGROUP that is, in order to ensure the high availability of the system in the storage system, two nodes will be used to form an IOGROUP.
  • the two nodes are respectively connected to a port of the dual-port hard disk.
  • the two nodes in the IOGROUP are each other's peer nodes.
  • One or more IOGROUPs form a cluster, and the nodes in the cluster can communicate with each other.
  • setting a sliding window starting from the first address of the stripe includes:
  • Step 1 Apply for three unsigned data to build a sliding window; the three unsigned data respectively record the water level pointer, window offset and stripe mark;
  • Step 2 Point the water level pointer to the beginning of the stripe's first address
  • Step 3 Initialize the window offset
  • Step 4 Assign values to the stripe tags.
  • BBU battery backup unit
  • the water level pointer refers to which stripe corresponding to the sliding window needs to be processed at present
  • the window offset refers to the number of sliding window movements or the window order
  • the stripe mark refers to the mark of whether each stripe corresponding to the sliding window needs to be initialized.
  • 0 can be used to indicate that initialization is required
  • 1 can be used to indicate that it has been initialized
  • 1 can be used to indicate that initialization is required
  • 0 can be used to indicate that it has been initialized.
  • there is no limitation on which data is used to represent which content for unsigned data For example, the first unsigned data can be used to represent the water level pointer, the second unsigned data can be used to represent the window offset, and the third unsigned data can be used to represent the stripe mark; it can also be adjusted to other corresponding situations.
  • the three unsigned data after applying for three unsigned data, can be assigned values.
  • the water level pointer can be pointed to the beginning of the stripe first address, that is, the water level pointer points to the first stripe corresponding to the sliding window; the window offset is initialized to 0 or 1; the initialization state of the stripe corresponding to the current sliding window is obtained, and the stripe mark is assigned a value based on the initialization state.
  • the initialization progress of all stripes in the RAID array can be tracked through three unsigned 4-byte data.
  • the client clears all stripes of the RAID array until the end of the stripe of the array is reached.
  • an unsigned 4-byte data is used to give the window offset of the sliding window
  • another unsigned 4-byte data 32 bits record the initialization status of the stripe performing the initialization task
  • the last unsigned 4-byte data is the watermark.
  • assigning a value to a stripe mark includes:
  • Step 1 Read the stripe bit marks corresponding to the plurality of stripes corresponding to the window size of the sliding window from the stripe bitmap file in the RAID array, starting from the first stripe;
  • Step 2 Use each stripe bit mark to assign a value to the stripe mark.
  • a stripe bitmap file can be maintained at the end of the file to identify the status of each stripe, including the stripe initialization status. Therefore, in an embodiment of the present application, the stripe bit marks corresponding to multiple stripes corresponding to the window size of the sliding window can be read from the stripe bitmap file, starting from the first stripe. After obtaining the stripe bit mark, the stripe mark can be assigned a value using each stripe bit mark. That is to say, in this embodiment, the stripe mark only corresponds to the bitmap information corresponding to the stripe of the window size, without the need to store the entire bitmap file in the memory, which can greatly reduce the memory usage.
  • Figure 2 is a schematic diagram of RAID6, which is an array composed of 4-16 disks.
  • a stripe is composed of blocks (strips).
  • the RAID6 array is composed of 6 member disks, each row is a stripe, and if each member disk has a capacity of 170G, the array has a capacity of 1TB.
  • the strip size of the block is 256KB, and the strip size is 1536KB. Therefore, there are 699051 stripes of 1TB/1536KB in the array. According to one stripe corresponding to one bit, 699051 bits are required, which is converted to (699051/8) 87382 bytes. It is concluded that 87382 bytes of memory space are required to store bitmap metadata.
  • the window size can be set as needed, such as 32 bits. After creating or moving a sliding window, only the bitmap information of the strips corresponding to the window size corresponding to the sliding window needs to be saved in the memory, such as the bitmap information corresponding to 32 strips, that is, 32 bytes and 4 bytes of data. This can greatly reduce the memory resource usage.
  • the initialization task is directly performed on strips 0 to 31 corresponding to the sliding window, that is, a total of 32 strips. If the current sliding window slides once, the initialization task is directly performed on strips 32 to 63 corresponding to the current sliding window, that is, 32 strips.
  • Initializing a stripe means initializing all the blocks corresponding to the stripe.
  • Block also known as strip/chunk; a partition is divided into multiple blocks of equal size and adjacent addresses. These blocks are called blocks. Blocks are usually considered to be elements of a stripe.
  • the virtual disk uses it as a unit to map the address of the virtual disk to the address of the member disk.
  • Stripe also known as stride, is a collection of position-related strips on different partitions of the array, and is the unit for organizing blocks on different partitions.
  • the stripe stride0 in Figure 2 it needs to be initialized, that is, it is necessary to initialize 2 in disk 0, 3 in disk 2, 5 in disk 3, P in disk 4, and Q in disk 5.
  • the data 2, 3, 4 and 5 in the disks correspond to the striped data
  • P represents the check data
  • Q is the second check data.
  • performing an initialization task on a strip corresponding to the current sliding window includes:
  • Step 1 read the target stripe mark corresponding to the water level pointer from the stripe mark; wherein the target stripe mark is the mark of the target stripe;
  • Step 2 If the target stripe mark corresponds to initialization, update the water level pointer until the stripe corresponding to the current sliding window is initialized;
  • Step 3 If the target stripe mark corresponds to uninitialized, perform the initialization task on the target stripe, and after completing the initialization task, update the water level pointer until the stripe corresponding to the current sliding window is initialized.
  • the target stripe mark corresponding to the water level pointer can be read from the stripe mark first; wherein the target stripe mark is the mark of the target stripe. If the target stripe mark corresponds to initialized, the water level pointer is updated, such as adding one; if the target stripe mark corresponds to uninitialized, the water level pointer is updated after the initialization task is performed on the target stripe. The water level pointer is updated until it is determined that the stripe corresponding to the current sliding window has been initialized.
  • the water level pointer is directly increased by one; when the stripe mark corresponding to the target stripe corresponding to the current water level pointer is read as 0, the target stripe is initialized alone. After the initialization is completed, if it is determined that the target stripe is not the last stripe of the current sliding window, the water level pointer is increased by one, that is, it moves to the next stripe for judgment and processing.
  • the water level pointer needs to be updated. That is, the water level pointer identifies the stripe currently being processed.
  • At least one of the following methods may be used to confirm whether the strips corresponding to the current sliding window have been fully initialized. It should be noted that when two methods are used, it is possible to confirm whether the strips corresponding to the current sliding window have been fully initialized when the conclusions of both methods are that they have been fully initialized.
  • Method 1 Determine the strip corresponding to the current sliding window after initialization, including:
  • Step 1 Determine whether the water level offset corresponding to the water level pointer is equal to the size of the sliding window
  • Step 2 If the water level offset corresponding to the water level pointer is equal to the size of the sliding window, it is determined that the strip corresponding to the current sliding window has been initialized;
  • Step 3 If the water level offset corresponding to the water level pointer is not equal to the size of the sliding window, it is determined that the strip corresponding to the current sliding window has not been initialized.
  • the water level offset of the water level pointer is increased by 1.
  • the window size is 32
  • the initial water level offset of the water level pointer is 1
  • the water level offset is 32, which indicates that all 32 strips have been initialized, and it is determined that all strips corresponding to the current sliding window have been initialized.
  • Method 2 determining the strip corresponding to the current sliding window after initialization, includes:
  • Step 1 Determine whether all the tags in the strip tag have been initialized
  • Step 2 If all the marks in the strip mark have been initialized, it is determined that the strip corresponding to the current sliding window has been initialized;
  • Step 3 If each mark in the strip mark has not been initialized, it is determined that the strip corresponding to the current sliding window has not been initialized.
  • each mark in the strip mark marks the initialization state of the strip corresponding to the sliding window, and each time a strip is confirmed to be initialized, the mark of the strip is modified, it can be clearly determined whether all the strips corresponding to the current sliding window have been initialized through the strip mark. That is, by verifying whether each mark in the strip mark corresponds to initialization, it can be determined whether the strip corresponding to the current sliding window has been initialized. Specifically, when all marks in the strip mark correspond to initialization, it can be determined that the strip corresponding to the current sliding window has been initialized, otherwise, the strip corresponding to the current sliding window has not been initialized.
  • the process returns to the step of executing the initialization task for the stripe corresponding to the current sliding window until all the stripes of the RAID array are initialized.
  • the sliding window can be moved.
  • step S102 the process returns to step S102 to continue to perform the initialization task on the stripe corresponding to the current sliding window until all stripes of the RAID array are initialized.
  • the sliding window does not need to be moved, but all stripes of the RAID array are directly confirmed to have been initialized.
  • Method 1 moving the sliding window, including:
  • Step 1 Use the window offset to determine whether all stripes of the RAID array have been initialized
  • Step 2 If all stripes of the RAID array have not been initialized, move the sliding window.
  • the window offset corresponds to the number of sliding window moves or the window order.
  • the number of moves is 0 and the window order is 1.
  • the number of moves and the window order are increased by 1. Since the number of stripes in a RAID array is fixed and limited, the number of times the sliding window needs to be moved and the corresponding window order are also limited and fixed. Therefore, based on the window offset, it can be determined whether all stripes of the RAID array have been initialized.
  • the window offset is used to determine whether all stripes of the RAID array have been initialized, including:
  • Step 1 Determine whether the window offset is equal to the total number of windows
  • Step 2 If the window offset is equal to the total number of windows, it is determined that all stripes of the RAID array have been initialized
  • Step 3 If the window offset is not equal to the total number of windows, it is determined that all stripes of the RAID array have not been initialized.
  • the window offset specifically corresponds to the window order and the window offset is equal to the total number of windows, it indicates that the current sliding window corresponds to the last sliding window, that is, the last stripe has been processed, and thus it can be determined that all stripes of the RAID array have been initialized.
  • the window offset specifically corresponds to the window order and the window offset is equal to the total number of windows minus 1, it also indicates that the current sliding window has corresponded to the last sliding window, that is, the last stripe has been processed, so it can be determined that all stripes of the RAID array have been initialized.
  • the process of obtaining the total number of windows includes:
  • Step 1 Get the total number of stripes corresponding to the RAID array
  • Step 2 obtain the window size of the sliding window
  • Step 3 Calculate the total number of windows using the total number of stripes and window size.
  • the total number of stripes is fixed after the RAID array is created.
  • the value can be directly read from the storage medium, or directly calculated based on the structure of the RAID array and the size of the storage space.
  • the specific calculation method can refer to the description above.
  • the window size also sets its value when it is created, so the value can be directly obtained. After obtaining the total number of stripes and the window size, the total number of stripes can be directly compared with the window size, and the ratio is the total number of windows.
  • Method 2 moving the sliding window, includes:
  • Step 1 determine whether each stripe in the stripe bitmap file in the RAID array has a corresponding initialized mark
  • Step 2 If each strip in the strip bitmap file does not correspond to an initialized mark, move the sliding window.
  • the stripe bitmap file in the RAID array will be continuously updated, that is, it can also be updated during the initialization process, it is directly judged whether each stripe in the stripe bitmap file in the RAID array has corresponded to the initialized mark. If each stripe in the stripe bitmap file has corresponded to the initialized mark, it can be determined that all stripes in the RAID array have been initialized. Otherwise, it can be determined that all stripes in the RAID array have not been fully initialized.
  • moving the sliding window includes:
  • Step 1 Move the sliding window by a window size
  • Step 2 Point the water level pointer to the address of the first stripe in the sliding window
  • Step 3 Add one to the window offset
  • Step 4 Assign values to the stripe tags.
  • window size of the sliding window is 64, when the sliding window is moved once, 64 strips are moved, so that the sliding window after the movement corresponds to 64 strips continuous after the last strip processed last time.
  • the water level pointer is re-pointed to the address of the first stripe corresponding to the sliding window; the offset of the window is also increased by 1.
  • the stripe mark is assigned a value, and the assignment method is to read the initialization state marks of multiple stripes corresponding to the new sliding window, and assign the stripe mark based on the marks, so that the stripe mark can indicate the initialization state of the multiple stripes corresponding to the current one.
  • Applying the method provided in the embodiment of the present application applying the method provided in the embodiment of the present application, after receiving an initialization request for a RAID array, setting a sliding window starting from the stripe head address; performing an initialization task on the stripe corresponding to the current sliding window; after initializing the stripe corresponding to the current sliding window, moving the sliding window; after completing the window movement, returning to the step of performing the initialization task on the stripe corresponding to the current sliding window until all stripes of the RAID array are initialized.
  • the sliding window is first set, and then the initialization task is executed for the stripe corresponding to the window. After the stripe corresponding to the current sliding window is initialized, the sliding window is moved, and the initialization task is continued for the stripe corresponding to the current sliding window until all the stripes of the RAID array are initialized. In other words, when initializing the stripes of the RAID array, only the stripes within the sliding window are initialized.
  • the disk array initialization method provided in the embodiment of the present application, specifically how to solve the problem that the metadata organization method occupies too much memory resources when controlling the initialization task, thereby solving the problem of reduced RAID array performance.
  • the disk array initialization method is described in detail below using a specific application scenario as an example.
  • the initialization progress of all stripes in the RAID array can be tracked through three unsigned 4-byte data.
  • the client clears all stripes of the RAID array until the end of the stripe of the array is reached.
  • an unsigned 4-byte data is used to give the offset of the sliding window (i.e., the window offset)
  • another unsigned 4-byte data of 32 bits records the stripe that performs the initialization task (i.e., the stripe mark)
  • the last unsigned 4-byte data is the watermark.
  • the water level is the sliding window offset mentioned above, the bitmap is the bitmap of all strips in the management window, and the water level pointer points to the strip that needs to perform the initialization task.
  • RK_META_ITER_WINDOW is the window size defined by the macro, and the default is 32. As shown below:
  • Step 1 Request three unsigned 4-byte data from the harden memory protected by the BBU (battery backup unit), and save the RAID array stripe address in the harden memory protected by the BBU.
  • Step 2 Set the first window from the beginning of the RAID array stripe address, for example, define the first window for executing the initialization task as the RK_META_ITER_WINDOW macro definition window. Define RK_META_ITER_WINDOW to 32.
  • Step 3 Enter the RAID array stripe address and calculate the number of RAID array stripes based on the RAID array capacity.
  • Step 4 Set the Watermark pointer to point to the first bit of the window, and determine whether the bit pointed to by the Watermark pointer is 1. If it is 1, skip the bit and move the watermark pointer to the next bit. If it is 0, execute the bit The initialization task of the stripe marked by the bit, the data is written to zero.
  • Step 5 Every time the Watermark pointer moves one bit, the water level offset must be determined, that is, whether the water level offset is equal to the sliding window RK_META_ITER_WINDOW value window size. If it is equal, the window is moved by 32 bits and the Watermark pointer is moved to the head of the window.
  • Step 6 Based on the number of stripes and the number of window movements obtained in the third step, as well as the offset of the Watermark pointer, determine whether the initialization task is completed.
  • the memory resources occupied by this application are three unsigned 4-byte data, which greatly reduces the memory usage and speeds up the initialization rate.
  • the embodiment of the present application further provides a disk array initialization device.
  • the disk array initialization device described below and the disk array initialization method described above can refer to each other.
  • the device includes the following modules:
  • the sliding window initialization module 100 is used to set the sliding window starting from the stripe head address after receiving the initialization request of the RAID array;
  • the stripe initialization module 200 is used to perform the initialization task on the stripe corresponding to the current sliding window; after initializing the stripe corresponding to the current sliding window, move the sliding window; after completing the window movement, return to the step of performing the initialization task on the stripe corresponding to the current sliding window until all stripes of the RAID array are initialized.
  • a sliding window is set starting from the stripe head address; an initialization task is performed on the stripe corresponding to the current sliding window; after initializing the stripe corresponding to the current sliding window, the sliding window is moved; after completing the window movement, the step of performing the initialization task on the stripe corresponding to the current sliding window is returned until all stripes of the RAID array are initialized.
  • the sliding window is first set, and then the initialization task is performed for the stripe corresponding to the return window. After the stripe corresponding to the current sliding window is initialized, the sliding window is moved, and the initialization task is continued for the stripe corresponding to the current sliding window until all the stripes of the RAID array are initialized. That is to say, when the stripes of the RAID array are initialized, only the stripes within the sliding window are always initialized.
  • the sliding window initialization module 100 is specifically used to apply for three unsigned data to construct a sliding window; the three unsigned data respectively record a water level pointer, a window offset and a stripe mark;
  • the sliding window initialization module 100 is specifically used to read the stripe bit marks corresponding to the plurality of stripes corresponding to the window size of the sliding window, starting from the first stripe, from the stripe bitmap file in the RAID array;
  • the stripe flags are assigned values using the respective stripe bit flags.
  • the sliding window initialization module 100 is specifically used to apply for unsigned data from a memory protected by a battery backup unit to prevent data loss due to power failure.
  • the stripe initialization module 200 is specifically used to read the target stripe mark corresponding to the water level pointer from the stripe mark; wherein the target stripe mark is the mark of the target stripe;
  • the water level pointer is updated until the stripe corresponding to the current sliding window is initialized;
  • the initialization task is performed on the target stripe, and after the initialization task is performed, the water level pointer is updated until it is determined that the stripe corresponding to the current sliding window is initialized.
  • the stripe initialization module 200 is specifically used to determine whether the water level offset corresponding to the water level pointer is equal to the size of the sliding window;
  • the stripe initialization module 200 is specifically used to determine whether each mark in the stripe mark corresponds to initialization
  • the stripe initialization module 200 is specifically used to use the window offset to determine whether to initialize All stripes of the RAID array have been finalized;
  • the stripe initialization module 200 is specifically used to determine whether the window offset is equal to the total number of windows
  • window offset is equal to the total number of windows, it is determined that all stripes of the RAID array have been initialized
  • window offset is not equal to the total number of windows, it is determined that all stripes of the RAID array have not been completely initialized.
  • the stripe initialization module 200 is specifically used to obtain the total number of stripes corresponding to the RAID array;
  • the stripe initialization module 200 is specifically used to determine whether each stripe in the stripe bitmap file in the RAID array has a corresponding initialized mark;
  • the strip initialization module 200 is specifically used to move the sliding window by a window size
  • the embodiment of the present application further provides an electronic device.
  • the electronic device described below and the disk array initialization method described above can refer to each other.
  • the electronic device includes:
  • the processor 322 is used to implement the steps of the disk array initialization method of the above method embodiment when executing the computer program.
  • FIG. 5 is a schematic diagram of the specific structure of an electronic device provided in this embodiment.
  • the electronic device may have relatively large differences due to different configurations or performances, and may include one or more processors (central processing units, CPU) 322 (for example, one or more processors) and a memory 332, and the memory 332 stores one or more computer applications 342 or data 344.
  • the memory 332 can be a temporary storage or a permanent storage.
  • the program stored in the memory 332 may include one or more modules (not shown in the figure), and each module may include a series of instruction operations in the data processing device.
  • the central processing unit 322 can be configured to communicate with the memory 332 to execute a series of instruction operations in the memory 332 on the electronic device 301.
  • the electronic device 301 may further include one or more power supplies 326 , one or more wired or wireless network interfaces 350 , one or more input and output interfaces 358 , and/or one or more operating systems 341 .
  • the steps in the disk array initialization method described above can be implemented by the structure of an electronic device.
  • the embodiment of the present application further provides a non-volatile readable storage medium.
  • the non-volatile readable storage medium described below and the disk array initialization method described above can refer to each other.
  • a non-volatile readable storage medium stores a computer program, and when the computer program is executed by a processor, the steps of the disk array initialization method of the above method embodiment are implemented.
  • the non-volatile readable storage medium may specifically be a U disk, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk, and other readable storage media that can store program codes.
  • each embodiment is described in a progressive manner, and each embodiment focuses on the differences from other embodiments.
  • the same or similar parts between the embodiments can be referred to each other.
  • the description is relatively simple, and the relevant parts can be referred to the method part.
  • the steps of the method or algorithm described in conjunction with the embodiments disclosed herein may be implemented directly using hardware, a software module executed by a processor, or a combination of the two.
  • the software module may be placed in a random access memory (RAM), a memory, a read-only memory (ROM), an electrically programmable ROM, an electrically erasable programmable ROM, a register, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种磁盘阵列初始化方法、装置、设备及可读存储介质,该方法包括:接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。在本申请中,在对RAID阵列的条带进行初始化时,基于滑动窗口进行处理,可以提升初始化速度,缩短整体的初始化时长。此外,由于每次仅处理一个滑动窗口对应的条带初始化任务,因而在紧急IO任务情况下,可以大大减低条带不一致风险概率。

Description

一种磁盘阵列初始化方法、装置、设备及可读存储介质
相关申请的交叉引用
本申请要求于2022年11月11日提交中国专利局,申请号为202211409857.X,申请名称为“一种磁盘阵列初始化方法、装置、设备及可读存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及存储技术领域,特别是涉及一种磁盘阵列初始化方法、装置、设备及可读存储介质。
背景技术
RAID(Redundant Array of Independent Disks)即独立磁盘组成的具有冗余性的阵列,由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。基于RAID,可实现将数据切割成许多区段,分别存放在各个硬盘上。
RAID阵列在创建好后,需要以条带为单元进行初始化。在初始化过程中,对条带的管理采用位图这种元数据组织方式进行。其中,位图数据结构中每个bit位代表一个条带,条带可以被设置和清除,但不能被赋值。这种元数据组织方式在大型大容量RAID阵列中,存在不足:位图元数据组织方式会占用大量资源空间,会导致大容量RAID阵列的初始化任务需要很长时间,导致用户体验下降,并且在前台紧急IO任务情况下,存在条带不一致风险。
发明内容
本申请的目的是提供一种磁盘阵列初始化方法、装置、设备及可读存储介质,能够减少初始化内存占用,可以提高RAID初始化效率。
为解决上述技术问题,本申请提供如下技术方案:
一种磁盘阵列初始化方法,包括:
接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;
对当前滑动窗口对应的条带执行初始化任务;
初始化完当前滑动窗口对应的条带后,移动滑动窗口;
完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
本申请一些实施例中,从条带首地址开始处设置滑动窗口,包括:
申请三个无符号数据构建滑动窗口;三个无符号数据分别记录水位指针、窗口偏移量和条带标记;
将水位指针指向条带首地址开始处;
初始化窗口偏移量;
对条带标记进行赋值。
本申请一些实施例中,对条带标记进行赋值,包括:
从RAID阵列中的条带位图文件中,从首个条带开始,读取滑动窗口的窗口大小对应的多个条带分别对应的条带比特位标记;
利用各个条带比特位标记对条带标记进行赋值。
本申请一些实施例中,申请三个无符号数据构建滑动窗口,包括:
从电池备电单元保护的防掉电丢失数据的内存中申请无符号数据。
本申请一些实施例中,对当前滑动窗口对应的条带执行初始化任务,包括:
从条带标记中读取水位指针对应的目标条带标记;其中,目标条带标记为目标条带的标记;
若目标条带标记对应已初始化,则更新水位指针,直到确定初始化完当前滑动窗口对应的条带;
若目标条带标记对应未初始化,则对目标条带执行初始化任务,并在执行完初始化任务后,更新水位指针,直到确定初始化完当前滑动窗口对应的条带。
本申请一些实施例中,确定初始化完当前滑动窗口对应的条带,包括:
判断水位指针对应的水位偏移量是否等于滑动窗口的大小;
如果水位指针对应的水位偏移量等于滑动窗口的大小,则确定初始化完当前滑动窗口对应的条带;
如果水位指针对应的水位偏移量不等于滑动窗口的大小,则确定未初始化完当前滑动窗口对应的条带。
本申请一些实施例中,确定初始化完当前滑动窗口对应的条带,包括:
判断条带标记中的各个标记是否均对应已初始化;
如果条带标记中的各个标记均对应已初始化,则确定初始化完所述当前所述滑动窗口对应的条带;
如果条带标记中的各个标记未对应已初始化,则确定未初始化完所述当前所述滑动窗口对应的条带。
本申请一些实施例中,移动滑动窗口,包括:
利用窗口偏移量,判断是否初始化完RAID阵列的所有条带;
如果未初始化完RAID阵列的所有条带,则移动滑动窗口。
本申请一些实施例中,利用窗口偏移量,判断是否初始化完RAID阵列的所有条带,包括:
判断窗口偏移量是否等于窗口总数;
如果窗口偏移量等于窗口总数,则确定已初始化完RAID阵列的所有条带;
如果窗口偏移量不等于窗口总数,则确定未完成初始化RAID阵列的所有条带。
本申请一些实施例中,窗口总数的获取过程,包括:
获取RAID阵列对应的条带总数;
获取滑动窗口的窗口大小;
利用条带总数与窗口大小,计算窗口总数。
本申请一些实施例中,移动滑动窗口,包括:
判断RAID阵列中的条带位图文件中各个条带是否已对应已初始化标记;
如果条带位图文件中各个条带未对应已初始化标记,则移动所述滑动窗口。
本申请一些实施例中,移动滑动窗口,包括:
对滑动窗口进行一个窗口大小的移动;
将水位指针指向滑动窗口中对应的第一个条带的地址;
对窗口偏移量进行加一处理;
对所述条带标记进行赋值。
一种磁盘阵列初始化装置,包括:
滑动窗口初始化模块,用于接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;
条带初始化模块,用于对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带 执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述磁盘阵列初始化方法的步骤。
一种非易失性可读存储介质,非易失性可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述磁盘阵列初始化方法的步骤。
应用本申请实施例所提供的方法,接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
在本申请中,当接收到RAID的初始化请求之后,首先设置滑动窗口,然后,针对滑动窗口对应的条带执行初始化任务,在初始化完当前滑动窗口对应的条带之后,移动滑动窗口,并继续对当前滑动窗口对应的条带执行初始化任务,直到初始化完RAID阵列的所有条带。也就是说,在对RAID阵列的条带进行初始化时,始终仅对滑动窗口内的条带进行初始化,如此,仅占用一个滑动窗口对应的内存资源,而不会因位图占用大量内存资源;由于内存资源占用少,且在处理完一个滑动窗口对应的条带初始化任务后即可移动滑动窗口,处理下一个滑动窗口对应的条带初始化任务,因而可以提升初始化速度,缩短整体的初始化时长。此外,由于每次仅处理一个滑动窗口对应的条带初始化任务,因而在紧急IO任务情况下,可以大大减低条带不一致风险概率。
相应地,本申请实施例还提供了与上述磁盘阵列初始化方法相对应的磁盘阵列初始化装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种磁盘阵列初始化方法的实施流程图;
图2为RAID6的示意图;
图3为本申请实施例中一种磁盘阵列初始化装置的结构示意图;
图4为本申请实施例中一种电子设备的结构示意图;
图5为本申请实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种磁盘阵列初始化方法的流程图,该方法包括以下步骤:
S101、接收RAID阵列的初始化请求后,从RAID阵列的条带首地址开始处设置滑动窗口。
在用户发出格式化RAID阵列或创建RAID阵列的情况下,可接收上层应用发送的RAID初始化请求。
在本申请实施例中,为了减少占用内存,利用动态滑窗对RAID阵列进行初始化。在接收到初始化请求之后,可对应设置滑动窗口。具体的,可从RAID阵列的条带首地址开始处或从集群中双节点保存的APU条带首地址开始处设置该滑动窗口。该滑动窗口的窗口大小可根据实际需求进行设置和调整,例如,窗口大小可设置为32(当然,在实际应用中,该数值还可以增大或减小),即每滑动一次滑动窗口前处理32个条带的初始化任务。
其中,APU(atomic parity update)是RAID模块对写请求产生的校验数据做的一个保护措施,目的是保证在产生系统异常(如掉电、控制器故障等)之后,恢复分条的一致性。其内容含RAID条带地址、数据、校验。
集群,即存储系统中为了保证系统的高可用性,会使用两个节点组成一个IOGROUP,两个节点分别连接双端口硬盘的一个端口,IOGROUP中的两个节点互为对端节点,一个或多个IOGROUP组成集群,集群中节点可相互通信。
本申请一些实施例中,从条带首地址开始处设置滑动窗口,包括:
步骤一、申请三个无符号数据构建滑动窗口;三个无符号数据分别记录水位指针、窗口偏移量和条带标记;
步骤二、将水位指针指向条带首地址开始处;
步骤三、初始化窗口偏移量;
步骤四、对条带标记进行赋值。
为便于描述,下面对上述四个步骤结合起来进行说明。
首先,在内存中申请三个无符号数据,然后基于这三个无符号数据来构建滑动窗口。这三个无符号数据分别记录水位指针、窗口偏移量和条带标记。
为了避免掉电导致初始化需重新进行,还可以在申请三个无符号数据构建滑动窗口时,从电池备电单元保护的防掉电丢失数据的内存中申请无符号数据。电池备电单元(BBU,Battery Backup Unit)在存储系统中来保护系统掉电后数据的安全,当系统掉电后,会持续供电,保证系统中各种重要的数据被安全的保存,该过程称为备电。
其中,水位指针,即指当前需对滑动窗口对应的哪个条带进行处理,窗口偏移量即滑动窗口移动次数或窗口次序,条带标记即对应滑动窗口对应的各个条带对应的是否需要进行初始化的标记,例如可以用0表示需初始化相应地,用1表示已初始化;或用1表示需初始化相应地,用0表示已初始化。在本实施例中,对无符号数据分别用哪个数据表示哪个内容,不做限定。例如,可以用第一个无符号数据表示水位指针,第二个无符号数据来表示窗口偏移量,第三个无符号数据表示条带标记;也可调整为其他对应情况。
本申请一些实施例中,在申请了三个无符号数据之后,便可对这三个无符号数据进行赋值。具体的,可将水位指针指向条带首地址开始处,即水位指针指向滑动窗口对应的第一个条带;将窗口偏移量初始化为0或1;获取当前滑动窗口对应的条带的初始化状态,并基于该初始化状态对条带标记进行赋值。
举例说明:可通过三个无符号的4字节数据跟踪RAID阵列中所有条带的初始化进度。从概念上讲,客户端清除RAID阵列的所有条带,直到达到该阵列的条带末尾。实际上,使用一个无符号的4字节数据给出滑动窗口的窗口偏移量,另一个无符号4字节数据的32个bit位记录执行初始化任务的条带初始化状态,最后一个无符号4字节数据是水位指针(Watermark)。
本申请一些实施例中,对条带标记进行赋值,包括:
步骤1、从RAID阵列中的条带位图文件中,从首个条带开始,读取滑动窗口的窗口大小对应的多个条带分别对应的条带比特位标记;
步骤2、利用各个条带比特位标记对条带标记进行赋值。
为便于描述,下面将上述2个步骤结合起来进行说明。
在RAID阵列中,可一直维护一个条带位图文件在其尾部,用于标识各个条带的情况,其中包括条带初始化状态。因而,在本申请实施例中,可以从条带位图文件中,从首个条带开始,读取滑动窗口的窗口大小对应的多个条带分别对应的条带比特位标记。得到条带比特位标记之后,便可利用各个条带比特位标记对条带标记进行赋值。也就是说,在本实施例中,条带标记仅对应窗口大小的条带对应的位图信息,而无需在内存中存储整个位图文件,可以大大减少占用内存。
举例说明:如图2所示,图2为RAID6的示意图,RAID6为由4-16块盘组成的阵列。Stride(条带)是由分块(strip)组成。如图2所示:该RAID6阵列由6块成员盘构成,每一行为一个条带,假如每个成员盘为170G容量则阵列有1TB容量。分块strip大小为256KB,则条带大小为1536KB,因此阵列中有1TB/1536KB的条带数即699051个条带,根据一个条带对应一位则需要699051位,换算为(699051/8)个87382个字节,由此得出需要87382个字节的内存空间来存放位图元数据,87382个字节占用大量内存资源空间,导致初始化过程变慢,影响用户业务,致使用户体验下降。而在本申请中,窗口大小可根据需要进行设置,如设置为32位,在创建滑动窗口或移动滑动窗口之后,仅需在内存中保存滑动窗口对应的窗口大小对应的条带的位图信息,如32个条带对应的位图信息,即32字节4字节的数据。可以大大缩减内存资源占用。
S102、对当前滑动窗口对应的条带执行初始化任务。
设置好了滑动窗口之后,便可对当前滑动窗口对应的条带执行初始化任务。例如,当前滑动窗口的窗口大小为32,且为首个滑动窗口,则直接对滑动窗口对应的条带0至条带31,即共计32个条带执行初始化任务,若当前滑动窗口滑动了一次,则直接对当前滑动窗口对应的条带32至条带63,即32个条带执行初始化任务。
初始化一个条带,即初始化该条带对应的全部分块。分块:又称为strip/chunk;将一个分区分成多个大小相等的、地址相邻的块(Block),这些块称为分块。分块通常被认为是条带的元素。虚拟磁盘以它为单位将虚拟磁盘的地址映射到成员磁盘的地址。条带:又称为stride,是阵列的不同分区上的位置相关的strip的集合,是组织不同分区上分块的单位。
例如,对于图2中的条带stride0,对其进行初始化,即需要对磁盘0中的2,磁盘2中的3,磁盘3中的5,磁盘4中的P,磁盘5中的Q都需要进行初始化。其中,磁盘中的数据2,3,4和5对应条带化的数据,P代表校验数据,Q是第二份校验数据。
本申请一些实施例中,对当前滑动窗口对应的条带执行初始化任务,包括:
步骤一、从条带标记中读取水位指针对应的目标条带标记;其中,目标条带标记为目标条带的标记;
步骤二、若目标条带标记对应已初始化,则更新水位指针,直到确定初始化完当前滑动窗口对应的条带;
步骤三、若目标条带标记对应未初始化,则对目标条带执行初始化任务,并在执行完初始化任务后,更新水位指针,直到确定初始化完当前滑动窗口对应的条带。
为便于描述,下面将上述三个步骤结合起来进行说明。
考虑到已使用过RAID阵列后,用户重新格式化,则可能存在部分条带已初始化,部分条带未初始化的情况,对于已初始化的条带便可无需初始化,因而,在对滑动窗口对应的条带进行初始化时,可以首先从条带标记中读取出水位指针对应的目标条带标记;其中,目标条带标记为目标条带的标记。若该目标条带标记对应已初始化,则更新该水位指针,如加一;若该目标条带标记对应未初始化,则在对目标条带执行了初始化任务之后,在更新该水位指针。更新水位指针,直到确定初始化完当前滑动窗口对应的条带。
举例说明:若用1表示条带已初始化,0表示条带未初始化,在读取到当前水位指针对应的目标条带对应的条带标记为1,则无需对目标条带进行初始化,在目标条带并非当前滑动窗口的最后一个条带的情况下,直接对水位指针进行加一;在读取到当前水位指针对应的目标条带对应的条带标记为0,则独有对目标条带进行初始化,在完成初始化之后,再判断目标条带并非当前滑动窗口的最后一个条带的情况下,对水位指针进行加一,即移动到下一个条带进行判断处理。
也就是说,在当前滑动窗口对应的全部条带未初始化完之前,在初始化完当前条带或确认当前条带已初始化之后,都需要更新水位指针。即,水位指针,即标识当前正在处理的条带。
在本申请中可以采用以下方式中的至少一种方式,来确认当前滑动窗口对应的条带是否已全部初始化。需要注意的是,当采用两种方式时,可以在两种方式的结论都是确认已全部初始化的情况下,再确认当前滑动窗口对应的条带是否已全部初始化。
方式一:确定初始化完当前滑动窗口对应的条带,包括:
步骤1、判断水位指针对应的水位偏移量是否等于滑动窗口的大小;
步骤2、如果水位指针对应的水位偏移量等于滑动窗口的大小,则确定初始化完当前滑动窗口对应的条带;
步骤3、如果水位指针对应的水位偏移量不等于滑动窗口的大小,则确定未初始化完当前滑动窗口对应的条带。
为便于描述,下面将上述3个步骤结合起来进行说明。
具体的,在一个滑动窗口内,每次移动水位指针时,对水位指针的水位偏移量进行加1,当水位指针的水位偏移量与窗口大小一致时,可确定已初始化完当前滑动窗口对应的条带,否则,即未完成。例如,窗口大小为32,水位指针初始水位偏移量为1,当移动了31次之后,水位偏移量为32,此时表明32个条带均被初始化完毕,确定当前滑动窗口对应的全部条带已初始化完毕。
方式二,确定初始化完当前滑动窗口对应的条带,包括:
步骤1、判断条带标记中的各个标记是否均对应已初始化;
步骤2、如果条带标记中的各个标记均对应已初始化,则确定初始化完当前滑动窗口对应的条带;
步骤3、如果条带标记中的各个标记未对应已初始化,则确定未初始化完当前滑动窗口对应的条带。
为便于描述,下面将上述3个步骤结合起来进行说明。
具体的,由于条带标记中的各个标记即标记了滑动窗口对应的条带的初始化状态,且每确认一个条带已初始化后,则对应该条带的标记进行修改,因而通过条带标记,可明确当前滑动窗口对应的全部条带是否已全部初始化。即通过验证条带标记中的各个标记是否均对应已初始化,则可确定当前滑动窗口对应的条带是否初始化完毕。具体的,当条带标记中的全部标记都对应已初始化,则可确定初始化完当前滑动窗口对应的条带,否则,即未初始化完当前滑动窗口对应的条带。
S103、初始化完当前滑动窗口对应的条带后,移动滑动窗口。
完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
在当前滑动窗口对应的全部条带初始化完之后,便可移动该滑动窗口。
在完成了窗口移动之后,便可返回步骤S102继续执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。当然,对于当前滑动窗口即为最后一个滑动窗口,则可无需移动滑动窗口,而是直接确认已初始化完RAID阵列的所有条带。
其中,在移动滑动窗口之前,需要确认当前是否已初始化完RAID阵列的所有条带。确 认是否已初始化完RAID阵列的所有条带,可以采用以下任意一种方式进行:
方式一,移动滑动窗口,包括:
步骤一、利用窗口偏移量,判断是否初始化完RAID阵列的所有条带;
步骤二、如果未初始化完RAID阵列的所有条带,则移动滑动窗口。
为便于描述,下面将上述两个步骤结合起来进行说明。
具体的,窗口偏移量即对应了滑动窗口的移动次数或窗口次序。对于首个滑动窗口而言,其移动次数为0,窗口次序为1,每一次移动,移动次数和窗口次序都对应加1。由于一个RAID阵列的条带数量是固定有限的,因而需要移动滑动窗口的次数,对应的窗口次序也是有限且固定的,因而基于窗口偏移量,可以确定是否已初始化完RAID阵列的所有条带。
其中,利用窗口偏移量,判断是否初始化完RAID阵列的所有条带,包括:
步骤1、判断窗口偏移量是否等于窗口总数;
步骤2、如果窗口偏移量等于窗口总数,则确定已初始化完RAID阵列的所有条带;
步骤3、如果窗口偏移量不等于窗口总数,则确定未完成初始化RAID阵列的所有条带。
为便于描述,下面将上述3个步骤结合起来进行说明。
也就是说,当窗口偏移量具体对应窗口次序且窗口偏移量是否等于窗口总数时,则表明当前的滑动窗口已对应了最后一个滑动窗口,即已处理完最后一个条带,因而可确定已初始化完RAID阵列的所有条带。
当然,当窗口偏移量具体对应窗口次序且窗口偏移量是否等于窗口总数减1时,也表明当前的滑动窗口已对应了最后一个滑动窗口,即已处理完最后一个条带,因而可确定已初始化完RAID阵列的所有条带。
其中,窗口总数的获取过程,包括:
步骤①、获取RAID阵列对应的条带总数;
步骤②、获取滑动窗口的窗口大小;
步骤③、利用条带总数与窗口大小,计算窗口总数。
其中,条带总数在创建了RAID阵列后,其数量即固定,可直接从存储介质中读取出该数值,也可以基于RAID阵列的结构、存储空间大小,直接计算出条带总数。具体计算方式可以参照上文描述。窗口大小在创建时,也设置了其数值,因而可直接获取该数值。得到条带总数与窗口大小后,可直接将条带总数与窗口大小做比,该比值即为窗口总数。
方式二,移动滑动窗口,包括:
步骤一、判断RAID阵列中的条带位图文件中各个条带是否已对应已初始化标记;
步骤二、如果条带位图文件中各个条带未对应已初始化标记,则移动滑动窗口。
考虑到RAID阵列中,条带位图文件会不断的更新,即初始化过程中也可进行更新,因而直接判断RAID阵列中的条带位图文件中各个条带是否已对应已初始化标记,若条带位图文件中各个条带均已对应已初始化标记,则可明确已全部初始化RAID阵列中的全部条带,否则,即可明确未全部初始化RAID阵列中的全部条带。
在本申请中的一种具体实施方式中,移动滑动窗口,包括:
步骤一、对滑动窗口进行一个窗口大小的移动;
步骤二、将水位指针指向滑动窗口中对应的第一个条带的地址;
步骤三、对窗口偏移量进行加一处理;
步骤四、对条带标记进行赋值。
为便于描述,下面将上述四个步骤结合起来进行说明。
若滑动窗口的窗口大小为64,则移动一次滑动窗口,则移动64个条带,使得移动后的滑动窗口,对应上次处理的最后一个条带后连续的64个条带。
将水位指针,重新指向滑动窗口中对应的第一个条带的地址;对窗口的偏移量也进行加1处理。并对条带标记进行赋值,赋值方式即读取到新滑动窗口对应的多个条带的初始化状态标记,基于该标记对条带标记进行赋值,使得条带标记可表示当前对应的多个条带的初始化状态情况。
应用本申请实施例所提供的方法,应用本申请实施例所提供的方法,接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
在本申请中,当接收到RAID的初始化请求之后,首先设置滑动窗口,然后,针对还掉窗口对应的条带执行初始化任务,在初始化完当前滑动窗口对应的条带之后,移动滑动窗口,并继续对当前滑动窗口对应的条带执行初始化任务,直到初始化完RAID阵列的所有条带。也就是说,在对RAID阵列的条带进行初始化时,始终仅对滑动窗口内的条带进行初始化,如此,仅占用一个滑动窗口对应的内存资源,而不会因位图占用大量内存资源;由于内存资源占用少,且在处理完一个滑动窗口对应的条带初始化任务后即可移动滑动窗口,处理下一个滑动窗口对应的条带初始化任务,因而可以提升初始化速度,缩短整体的初始化时长。此 外,由于每次仅处理一个滑动窗口对应的条带初始化任务,因而在紧急IO任务情况下,可以大大减低条带不一致风险概率。
为便于本领域技术人员更好地理解本申请实施例所提供的磁盘阵列初始化方法,具体如何解决元数据组织方式在控制初始化任务时占用内存资源太大,进而解决RAID阵列性能降低的问题。下面以具体应用场景为例,对磁盘阵列初始化方法进行详细说明。
应用本申请所提供的磁盘阵列初始化方法后,可通过三个无符号的4字节数据跟踪RAID阵列中所有条带的初始化进度。从概念上讲,客户端清除RAID阵列的所有条带,直到达到该阵列的条带末尾。实际上,使用一个无符号的4字节数据给出滑动窗口的偏移量(即窗口偏移量),另一个无符号4字节数据的32个bit位记录执行初始化任务的条带(即条带标记),最后一个无符号4字节数据是水位指针(Watermark)。
水位即上述的滑动窗口偏移量,位图是管理窗口内所有条带的位图,水位指针是指向需要执行初始化任务的条带。RK_META_ITER_WINDOW是宏定义的窗口大小,默认为32。如下所示:
|<-Bitmap,PK_META_WINDOW->|
……00000000|101111010001110001100110111111111|111111……
^Watermark
从RAID条带首地址开始或从集群中双节点保存的APU条带地址开始,一次初始化RK_META_ITER_WINDOW宏定义窗口内的所有条带,当该窗口的所有条带都初始化完毕后,移动该窗口,然后对移动后窗口内的所有条带执行初始化,以此循环,直至RAID阵列初始化任务执行完毕。
具体执行步骤如下:
第一步:从BBU(电池备电单元)保护的harden内存中申请三个无符号4字节数据,并将RAID阵列条带地址与保存在BBU保护的harden内存中。
第二步:从RAID阵列条带首地址开始处设置第一个窗口,例如定义执行初始化任务的第一个窗口为RK_META_ITER_WINDOW宏定义窗口。定义RK_META_ITER_WINDOW为32。
第三步:输入RAID阵列条带地址,并根据RAID阵列容量求解RAID阵列的条带数。
第四步:设置Watermark水位指针指向窗口第一位,并判断Watermark水位指针指向的bit位是否为1,为1则跳过该bit位然后将水位指针移动到下一个bit位,为0则执行该bit 位标识的条带的初始化任务,数据写零。
第五步:Watermark水位指针每移动一位,都需判断水位偏移量,即判断水位偏移量是否等于滑动窗口RK_META_ITER_WINDOW值窗口大小,等于则对窗口进行一个32位的移动,同时将Watermark水位指针移动到窗口头部。
第六步:根据第三步求得的条带数和窗口移动的次数以及Watermark水位指针的偏移,判断初始化任务是否完毕。
综上,本申请占用的内存资源情况是三个无符号4字节数据,大大减小了内存占用情况,加速初始化速率。
相应于上面的方法实施例,本申请实施例还提供了一种磁盘阵列初始化装置,下文描述的磁盘阵列初始化装置与上文描述的磁盘阵列初始化方法可相互对应参照。
参见图3所示,该装置包括以下模块:
滑动窗口初始化模块100,用于接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;
条带初始化模块200,用于对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
应用本申请实施例所提供的装置,应用本申请实施例所提供的方法,接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;对当前滑动窗口对应的条带执行初始化任务;初始化完当前滑动窗口对应的条带后,移动滑动窗口;完成窗口移动后,返回执行对当前滑动窗口对应的条带执行初始化任务的步骤,直到初始化完RAID阵列的所有条带。
在本申请中,当接收到RAID的初始化请求之后,首先设置滑动窗口,然后,针对还掉窗口对应的条带执行初始化任务,在初始化完当前滑动窗口对应的条带之后,移动滑动窗口,并继续对当前滑动窗口对应的条带执行初始化任务,直到初始化完RAID阵列的所有条带。也就是说,在对RAID阵列的条带进行初始化时,始终仅对滑动窗口内的条带进行初始化,如此,仅占用一个滑动窗口对应的内存资源,而不会因位图占用大量内存资源;由于内存资源占用少,且在处理完一个滑动窗口对应的条带初始化任务后即可移动滑动窗口,处理下一个滑动窗口对应的条带初始化任务,因而可以提升初始化速度,缩短整体的初始化时长。此外,由于每次仅处理一个滑动窗口对应的条带初始化任务,因而在紧急IO任务情况下,可以大大减低条带不一致风险概率。
本申请一些实施例中,滑动窗口初始化模块100,具体用于申请三个无符号数据构建滑动窗口;三个无符号数据分别记录水位指针、窗口偏移量和条带标记;
将水位指针指向条带首地址开始处;
初始化窗口偏移量;
对条带标记进行赋值。
本申请一些实施例中,滑动窗口初始化模块100,具体用于从RAID阵列中的条带位图文件中,从首个条带开始,读取滑动窗口的窗口大小对应的多个条带分别对应的条带比特位标记;
利用各个条带比特位标记对条带标记进行赋值。
本申请一些实施例中,滑动窗口初始化模块100,具体用于从电池备电单元保护的防掉电丢失数据的内存中申请无符号数据。
本申请一些实施例中,条带初始化模块200,具体用于从条带标记中读取水位指针对应的目标条带标记;其中,目标条带标记为目标条带的标记;
若目标条带标记对应已初始化,则更新水位指针,直到确定初始化完当前滑动窗口对应的条带;
若目标条带标记对应未初始化,则对目标条带执行初始化任务,并在执行完初始化任务后,更新水位指针,直到确定初始化完当前滑动窗口对应的条带。
本申请一些实施例中,条带初始化模块200,具体用于判断水位指针对应的水位偏移量是否等于滑动窗口的大小;
如果水位指针对应的水位偏移量等于滑动窗口的大小,则确定初始化完当前滑动窗口对应的条带;
如果水位指针对应的水位偏移量不等于滑动窗口的大小,则确定未初始化完当前滑动窗口对应的条带。
本申请一些实施例中,条带初始化模块200,具体用于判断条带标记中的各个标记是否均对应已初始化;
如果条带标记中的各个标记均对应已初始化,则确定初始化完当前滑动窗口对应的条带;
如果条带标记中的各个标记未对应已初始化,则确定未初始化完当前滑动窗口对应的条带。
本申请一些实施例中,条带初始化模块200,具体用于利用窗口偏移量,判断是否初始 化完RAID阵列的所有条带;
如果未初始化完RAID阵列的所有条带,则移动滑动窗口。
本申请一些实施例中,条带初始化模块200,具体用于判断窗口偏移量是否等于窗口总数;
如果窗口偏移量等于窗口总数,则确定已初始化完RAID阵列的所有条带;
如果窗口偏移量不等于窗口总数,则确定未完成初始化RAID阵列的所有条带。
本申请一些实施例中,条带初始化模块200,具体用于获取RAID阵列对应的条带总数;
获取滑动窗口的窗口大小;
利用条带总数与窗口大小,计算窗口总数。
本申请一些实施例中,条带初始化模块200,具体用于判断RAID阵列中的条带位图文件中各个条带是否已对应已初始化标记;
如果条带位图文件中各个条带未对应已初始化标记,则移动滑动窗口。
本申请一些实施例中,条带初始化模块200,具体用于对滑动窗口进行一个窗口大小的移动;
将水位指针指向滑动窗口中对应的第一个条带的地址;
对窗口偏移量进行加一处理;
对条带标记进行赋值。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种磁盘阵列初始化方法可相互对应参照。
参见图4所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的磁盘阵列初始化方法的步骤。
具体的,请参考图5,图5为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的磁盘阵列初始化方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种非易失性可读存储介质,下文描述的一种非易失性可读存储介质与上文描述的一种磁盘阵列初始化方法可相互对应参照。
一种非易失性可读存储介质,非易失性可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的磁盘阵列初始化方法的步骤。
该非易失性可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (20)

  1. 一种磁盘阵列初始化方法,其特征在于,包括:
    接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;
    对当前所述滑动窗口对应的条带执行初始化任务;
    初始化完所述当前所述滑动窗口对应的条带后,移动所述滑动窗口;
    完成窗口移动后,返回执行所述对当前所述滑动窗口对应的条带执行初始化任务的步骤,直到初始化完所述RAID阵列的所有条带。
  2. 根据权利要求1所述的磁盘阵列初始化方法,其特征在于,所述从条带首地址开始处设置滑动窗口,包括:
    从所述RAID阵列的条带首地址开始处或从集群中双节点保存的APU条带首地址开始处设置所述滑动窗口。
  3. 根据权利要求1所述的磁盘阵列初始化方法,其特征在于,所述从条带首地址开始处设置滑动窗口,包括:
    申请三个无符号数据构建所述滑动窗口;所述三个无符号数据分别记录水位指针、窗口偏移量和条带标记;
    将所述水位指针指向所述条带首地址开始处;
    初始化所述窗口偏移量;
    对所述条带标记进行赋值。
  4. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述对所述条带标记进行赋值,包括:
    获取所述滑动窗口对应的条带的初始化状态,并基于所述初始化状态对所述条带标记进行赋值。
  5. 根据权利要求4所述的磁盘阵列初始化方法,其特征在于,所述获取所述滑动窗口对应的条带的初始化状态,并基于所述初始化状态对所述条带标记进行赋值,包括:
    从所述RAID阵列中的条带位图文件中,从首个条带开始,读取所述滑动窗口的窗口大小对应的多个条带分别对应的条带比特位标记;
    利用各个所述条带比特位标记对所述条带标记进行赋值。
  6. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述申请三个无符号数据构建所述滑动窗口,包括:
    从电池备电单元保护的防掉电丢失数据的内存中申请所述无符号数据。
  7. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述对当前所述滑动窗口对应的条带执行初始化任务,包括:
    从所述条带标记中读取所述水位指针对应的目标条带标记;其中,所述目标条带标记为目标条带的标记;
    若所述目标条带标记对应已初始化,则更新所述水位指针,直到确定初始化完所述当前所述滑动窗口对应的条带;
    若所述目标条带标记对应未初始化,则对所述目标条带执行初始化任务,并在执行完所述初始化任务后,更新所述水位指针,直到确定初始化完所述当前所述滑动窗口对应的条带。
  8. 根据权利要求7所述的磁盘阵列初始化方法,其特征在于,所述确定初始化完所述当前所述滑动窗口对应的条带,包括:
    判断所述水位指针对应的水位偏移量是否等于所述滑动窗口的大小;
    如果所述水位指针对应的水位偏移量等于所述滑动窗口的大小,则确定初始化完所述当前所述滑动窗口对应的条带;
    如果所述水位指针对应的水位偏移量不等于所述滑动窗口的大小,则确定未初始化完所述当前所述滑动窗口对应的条带。
  9. 根据权利要求8所述的磁盘阵列初始化方法,其特征在于,所述确定初始化完所述当前所述滑动窗口对应的条带,包括:
    判断所述条带标记中的各个标记是否均对应已初始化。
  10. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述移动所述滑动窗口,包括:
    利用所述窗口偏移量,判断是否初始化完所述RAID阵列的所有条带;
    如果未初始化完所述RAID阵列的所有条带,则移动所述滑动窗口。
  11. 根据权利要求10所述的磁盘阵列初始化方法,其特征在于,所述利用所述窗口偏移量,判断是否初始化完所述RAID阵列的所有条带,包括:
    判断所述窗口偏移量是否等于窗口总数;
    如果所述窗口偏移量等于所述窗口总数,则确定已初始化完所述RAID阵列的所有条带;
    如果所述窗口偏移量不等于所述窗口总数,则确定未完成初始化所述RAID阵列的所有条带。
  12. 根据权利要求11所述的磁盘阵列初始化方法,其特征在于,所述窗口总数的获取过程,包括:
    获取所述RAID阵列对应的条带总数;
    获取所述滑动窗口的窗口大小;
    利用所述条带总数与所述窗口大小,计算所述窗口总数。
  13. 根据权利要求12所述的磁盘阵列初始化方法,其特征在于,所述获取所述RAID阵列对应的条带总数,包括:
    从存储介质中读取所述条带总数。
  14. 根据权利要求12所述的磁盘阵列初始化方法,其特征在于,所述利用所述条带总数与所述窗口大小,计算所述窗口总数,包括:
    将所述条带总数与所述窗口大小的比值确定为所述窗口总数。
  15. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述移动所述滑动窗口,包括:
    判断所述RAID阵列中的条带位图文件中各个所述条带是否已对应已初始化标记。
  16. 根据权利要求3所述的磁盘阵列初始化方法,其特征在于,所述移动所述滑动窗口,包括:
    对所述滑动窗口进行一个窗口大小的移动;
    将所述水位指针指向所述滑动窗口中对应的第一个条带的地址;
    对所述窗口偏移量进行加一处理。
  17. 根据权利要求1所述的磁盘阵列初始化方法,其特征在于,所述滑动窗口用于限制每次初始化为一个滑动窗口对应的条带初始化任务,在紧急IO任务情况下,减低条带不一致风险概率。
  18. 一种磁盘阵列初始化装置,其特征在于,包括:
    滑动窗口初始化模块,用于接收RAID阵列的初始化请求后,从条带首地址开始处设置滑动窗口;
    条带初始化模块,用于对当前所述滑动窗口对应的条带执行初始化任务;初始化完所述当前所述滑动窗口对应的条带后,移动所述滑动窗口;完成窗口移动后,返回执行所述对当前所述滑动窗口对应的条带执行初始化任务的步骤,直到初始化完所述RAID阵列的所有条带。
  19. 一种电子设备,其特征在于,包括:
    存储器,用于存储计算机程序;
    处理器,用于执行所述计算机程序时实现如权利要求1至17任一项所述磁盘阵列初始化方法的步骤。
  20. 一种非易失性可读存储介质,其特征在于,所述非易失性可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任一项所述磁盘阵列初始化方法的步骤。
PCT/CN2023/093312 2022-11-11 2023-05-10 一种磁盘阵列初始化方法、装置、设备及可读存储介质 Ceased WO2024098698A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211409857.X 2022-11-11
CN202211409857.XA CN115657960B (zh) 2022-11-11 2022-11-11 一种磁盘阵列初始化方法、装置、设备及可读存储介质

Publications (1)

Publication Number Publication Date
WO2024098698A1 true WO2024098698A1 (zh) 2024-05-16

Family

ID=85021881

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/093312 Ceased WO2024098698A1 (zh) 2022-11-11 2023-05-10 一种磁盘阵列初始化方法、装置、设备及可读存储介质

Country Status (2)

Country Link
CN (1) CN115657960B (zh)
WO (1) WO2024098698A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120215842A (zh) * 2025-05-28 2025-06-27 苏州元脑智能科技有限公司 一种存储系统的分块编码确定方法及存储系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115657960B (zh) * 2022-11-11 2023-03-14 苏州浪潮智能科技有限公司 一种磁盘阵列初始化方法、装置、设备及可读存储介质
CN117931484B (zh) * 2024-03-22 2024-06-14 中国人民解放军国防科技大学 基于滑动窗口的消息消费方法、装置、设备及存储介质
CN120353508B (zh) * 2025-06-23 2025-09-23 苏州元脑智能科技有限公司 磁盘阵列的初始化方法及存储集群

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100268876A1 (en) * 2009-04-20 2010-10-21 Microsoft Corporation Sliding-window multi-class striping
CN113849124A (zh) * 2021-08-27 2021-12-28 苏州浪潮智能科技有限公司 一种磁盘阵列扩容方法及装置
CN115098046A (zh) * 2022-08-26 2022-09-23 苏州浪潮智能科技有限公司 磁盘阵列初始化方法、系统、电子设备及存储介质
CN115657960A (zh) * 2022-11-11 2023-01-31 苏州浪潮智能科技有限公司 一种磁盘阵列初始化方法、装置、设备及可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100268876A1 (en) * 2009-04-20 2010-10-21 Microsoft Corporation Sliding-window multi-class striping
CN113849124A (zh) * 2021-08-27 2021-12-28 苏州浪潮智能科技有限公司 一种磁盘阵列扩容方法及装置
CN115098046A (zh) * 2022-08-26 2022-09-23 苏州浪潮智能科技有限公司 磁盘阵列初始化方法、系统、电子设备及存储介质
CN115657960A (zh) * 2022-11-11 2023-01-31 苏州浪潮智能科技有限公司 一种磁盘阵列初始化方法、装置、设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120215842A (zh) * 2025-05-28 2025-06-27 苏州元脑智能科技有限公司 一种存储系统的分块编码确定方法及存储系统
CN120215842B (zh) * 2025-05-28 2025-08-08 苏州元脑智能科技有限公司 一种存储系统的分块编码确定方法及存储系统

Also Published As

Publication number Publication date
CN115657960B (zh) 2023-03-14
CN115657960A (zh) 2023-01-31

Similar Documents

Publication Publication Date Title
WO2024098698A1 (zh) 一种磁盘阵列初始化方法、装置、设备及可读存储介质
JP6300132B2 (ja) ガベージデータを収集するための方法及び記憶装置
US9058125B2 (en) Computer system, computer and method for performing thin provisioning capacity management in coordination with virtual machines
EP3617867B1 (en) Fragment management method and fragment management apparatus
CN112130768B (zh) 磁盘阵列在线扩容方法、装置及计算机可读存储介质
CN115543696B (zh) 一种磁盘阵列重构任务加速方法、系统、存储介质及设备
CN103514249A (zh) 一种数据自精简方法和系统及存储装置
US20190243553A1 (en) Storage system, computer-readable recording medium, and control method for system
CN102185929A (zh) 一种基于san资源的视频监控数据存储方法及其装置
CN115437581B (zh) 一种数据处理方法、装置、设备及可读存储介质
WO2017173623A1 (zh) 用于处理存储设备中分条的方法和存储设备
CN116339644B (zh) 一种独立磁盘冗余阵列创建方法、装置、设备及介质
CN104572492A (zh) 一种烧录数据到fat32分区的方法和装置
CN106201652A (zh) 一种数据处理方法及虚拟机
CN107589916A (zh) 一种基于纠删码的纠删池的创建方法及相关装置
US10282116B2 (en) Method and system for hardware accelerated cache flush
CN116009761A (zh) 一种数据写入方法以及相关设备
WO2025102603A1 (zh) 一种磁盘阵列的扩容方法、装置、存储系统及产品
CN115904255A (zh) 一种数据请求方法、装置、设备及存储介质
WO2020215223A1 (zh) 分布式存储系统和分布式存储系统中垃圾回收方法
CN120492366A (zh) 存储空间的管理方法和装置、存储介质、电子设备、程序产品
CN120255809A (zh) 元数据管理方法、装置、电子设备和存储介质
CN117149094B (zh) 确定数据区状态的方法、装置、磁盘阵列及存储系统
EP4160422B1 (en) Method for using intermediate device to process data, computer system, and intermediate device
CN114265562B (zh) 一种基于flash存储器的文件存储方法和系统

Legal Events

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

Ref document number: 23887398

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 23887398

Country of ref document: EP

Kind code of ref document: A1

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 24/10/2025)

122 Ep: pct application non-entry in european phase

Ref document number: 23887398

Country of ref document: EP

Kind code of ref document: A1