Method, apparatus, and computer program product for storage management

CN116414295BActive Publication Date: 2026-09-18DELL PROD LP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202111668200.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-12-31
Publication Date
2026-09-18
Estimated Expiration
2041-12-31

Smart Images

  • Figure CN116414295B_ABST
    Figure CN116414295B_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to a method, device and computer program product for storage management. The method comprises: determining a plurality of storage units on a group of disks to be reconstructed, the plurality of storage units being distributed on different disks in the group of disks; selecting a group of storage units from the plurality of storage units based on the distribution of the plurality of storage units on the group of disks, such that different storage units in the group of storage units are distributed on different disks; and performing concurrent reconstruction on the group of storage units. The scheme can utilize as many physical disks as possible to perform reconstruction concurrently, and avoid the back-and-forth swing of the head of a physical disk due to the disk participating in the reconstruction of two storage units at the same time, thereby improving the reconstruction efficiency.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of this disclosure relate to storage management technology, and more specifically, to methods, apparatus, and computer program products for storage management. Background Technology

[0002] Redundant Array of Independent Disks (RAID) is an array formed by combining multiple independent physical hard drives. This array is used as a logical virtual hard drive to provide better storage performance and reliability. RAID typically uses striping technology to store data. In RAID, each physical hard drive is divided into multiple slices. Slices from multiple physical hard drives can be combined to form a stripe, which serves as a logical storage unit to store data with a certain degree of redundancy. For example, in RAID 5, five slices from five disks can be used to form a stripe.

[0003] When a disk in a RAID array fails, data from other disks can be used to rebuild the affected logical storage units. The efficiency of rebuilding these logical storage units is affected by a variety of factors. Technicians have improved rebuild efficiency by optimizing factors such as the number and size of slices in the logical units. However, these considerations are not exhaustive. Summary of the Invention

[0004] In a first aspect of this disclosure, a storage management method is provided, the method comprising: determining a plurality of storage units to be rebuilt on a set of disks, the plurality of storage units being distributed on different disks in the set of disks; selecting a set of storage units from the plurality of storage units based on the distribution of the plurality of storage units on the set of disks, such that different storage units in the set of storage units are distributed on different disks; and performing concurrent reconstruction on the set of storage units.

[0005] In a second aspect of this disclosure, an electronic device is provided, including a processor and a memory coupled to the processor, the memory having instructions stored therein, the instructions causing the device to perform actions when executed by the processor, the actions including: determining a plurality of memory cells to be rebuilt on a set of disks, the plurality of memory cells being distributed on different disks in the set of disks; selecting a set of memory cells from the plurality of memory cells based on the distribution of the plurality of memory cells on the set of disks, such that different memory cells in the set of memory cells are distributed on different disks; and performing concurrent reconstruction on the set of memory cells.

[0006] In a third aspect of this disclosure, a computer program product is provided, which is tangibly stored on a computer-readable medium and includes machine-executable instructions that, when executed, cause a machine to perform the method according to a first aspect of this disclosure.

[0007] Please note that this summary is provided to present a simplified version of the chosen concepts, which will be further described in the detailed embodiments below. This summary is not intended to identify key or principal features of this disclosure, nor is it intended to limit the scope of this disclosure. Attached Figure Description

[0008] The above and other objects, features, and advantages of this disclosure will become more apparent from a more detailed description of exemplary embodiments thereof, taken in conjunction with the accompanying drawings, wherein:

[0009] Figure 1 This illustrates a simplified example of how physical disk characteristics affect storage cell rebuilding;

[0010] Figure 2 A schematic diagram of an example environment in which embodiments of the present disclosure can be implemented is shown;

[0011] Figure 3 A flowchart of a storage management method according to some embodiments of the present disclosure is shown;

[0012] Figure 4 A flowchart illustrating an example method for selecting a set of memory cells from a plurality of memory cells to be rebuilt, according to some embodiments of the present disclosure;

[0013] Figure 5 An example of a set of disks according to some embodiments of the present disclosure and an example correlation matrix generated based on the set of disks, on which storage cells to be rebuilt are distributed, the correlation matrix showing the number of common storage cells to be rebuilt for each pair of disks in the set of disks.

[0014] Figure 6 A flowchart illustrating an example method for selecting a set of memory cells from a plurality of memory cells to be rebuilt, according to some embodiments of the present disclosure, is shown, wherein the plurality of memory cells have different priorities; and

[0015] Figure 7 A simplified example of some embodiments according to this disclosure is shown, in which... Figure 6 The method was used to select a set of storage cells from a plurality of storage cells to be rebuilt.

[0016] Figure 8 A schematic block diagram of a device that can be used to implement embodiments of the present disclosure is shown.

[0017] In all the accompanying drawings, the same or similar reference numerals denote the same or similar elements. Detailed Implementation

[0018] Embodiments of this disclosure will now be described in more detail with reference to the accompanying drawings. While some embodiments of this disclosure are shown in the drawings, it should be understood that this disclosure can be implemented in various forms and should not be construed as limited to the embodiments set forth herein, but is provided to provide a more thorough and complete understanding of this disclosure. It should be understood that the accompanying drawings and embodiments of this disclosure are for illustrative purposes only and are not intended to limit the scope of protection of this disclosure.

[0019] The term "comprising" and its variations as used herein are open-ended inclusion, meaning "including but not limited to". The term "based on" means "at least partially based on". The term "one embodiment" means "at least one embodiment"; the term "another embodiment" means "at least one additional embodiment". Definitions of other terms will be given in the description below.

[0020] Unlike solid-state drives (SSDs), hard disk drives (HDDs) exhibit performance variations depending on their I / O (input / output) patterns. Head seek time is a significant factor in HDD I / O latency. Due to the physical characteristics of hard drives, a fundamental rule for reducing average seek time and optimizing hard drive performance is to avoid random I / O or head wobbling between two logical block address (LBA) ranges.

[0021] However, conventional storage rebuild mechanisms (such as stripe rebuilding in RAID) do not consider the correlation between HDD characteristics and concurrent rebuilding of storage units. Conventional storage rebuild mechanisms typically select storage units for repair based on LBA order, thus potentially selecting multiple storage units partially located on the same disk for concurrent rebuilding. For example, two RAID stripes selected for concurrent rebuilding might each have one slice located on the same disk. In this case, two slices on that disk need to be read / written simultaneously during rebuilding. This causes the hard drive head to oscillate between slices, increasing I / O latency and consequently degrading rebuild performance.

[0022] Figure 1A simplified example 100 illustrating how the characteristics of a physical disk affect the reconstruction of storage cells is shown. Example 100 illustrates storage cells 110 and 120 to be reconstructed, distributed across a set of disks 105-1, 105-2, and 105-3. Storage cell 110 has portions 110-1 and 110-2, and storage cell 120 has portions 120-1 and 120-2. Portions 110-2 of storage cell 110 and 120-1 of storage cell 120 are both located on disk 105-2 (e.g., each on a slice of disk 105-2). When reconstructing storage cell 110, data needs to be read from location 110-2 and written to location 110-1. When reconstructing storage cell 120, data needs to be read from location 120-1 and written to location 120-2. Therefore, when both memory cells 110 and 120 are rebuilt simultaneously, the read / write head of disk 105-2 will swing back and forth between positions 110-2 and 120-1. This results in the I / O performance of disk 120 potentially being the same as or even worse than reading data from only one of the positions, thus reducing rebuild efficiency.

[0023] Figure 1 The problems illustrated in the simplified example also exist in more complex scenarios. For instance, in a sample rebuild performance test, when rebuilding data on one disk of a storage system with 15 disks using conventional methods, the performance of performing one rebuild job on a single disk is comparable to the performance of performing eight rebuild jobs on two disks. This means that the bottleneck for storage rebuild performance is the physical hard drive, not the CPU, memory, or other parameters.

[0024] To at least partially address the aforementioned problems and other potential issues, embodiments of this disclosure propose a storage management scheme that selects a subset of storage units requiring repair in each rebuild iteration, ensuring that the disks distributing different storage units within this subset do not overlap, and performs concurrent rebuilds on the selected storage units. On one hand, this scheme can utilize as many physical disks as possible to concurrently rebuild storage units, thereby improving rebuild efficiency. On the other hand, this scheme avoids a disk simultaneously participating in the rebuilding of two storage units (such as stripes in RAID), thus avoiding the back-and-forth movement of the hard drive heads and further improving rebuild efficiency. This scheme will be described below in the context of RAID striped storage; however, it should be understood that this scheme is also applicable to other logical storage unit organization forms distributed across multiple physical disks.

[0025] Figure 2 A schematic diagram of an example environment 200 in which embodiments of the present disclosure can be implemented is shown. For example... Figure 2As shown, there is a set of disks 205 in environment 200. Multiple storage units 210 to be rebuilt are distributed on this set of disks 205, wherein each storage unit is distributed on multiple different disks in this set of disks 205.

[0026] As an example, Figure 2 The diagram shows portions of storage cells 210-1, 210-2, 210-3, and 210-4 among multiple storage cells 210, distributed across different storage locations (e.g., different slices) on a set of disks 205. It should be understood that... Figure 2 The number of disks, storage units, and the distribution of storage units shown are for illustrative purposes only. The ellipses 225-1, 225-2, 225-3, and 225-4 indicate that these disks may have additional storage locations (not shown), and may contain other portions of storage units 210-1 to 210-4, other storage units among multiple storage units 210, and storage units that do not require rebuilding. The ellipsis 235 indicates that there may be additional disks (not shown) in the environment 225, and these disks may also contain other portions of storage units 210-1 to 210-4, other storage units among multiple storage units 210, and storage units that do not require rebuilding. Furthermore, storage units may also be... Figure 2 The different arrangements shown are distributed on a set of disks 205.

[0027] Figure 2 The document also illustrates a computing device 201 that can select a set of storage units from a plurality of storage units 210 to rebuild (i.e., concurrently rebuild) that set of storage units simultaneously. As will be described in detail below, the computing device 201 can use a method according to embodiments of the present disclosure to select the set of storage units to perform concurrent rebuilding.

[0028] It should be understood that environment 200 is described for illustrative purposes only and does not imply any limitation on the scope of this disclosure. Environment 200 may also include Figure 2 Devices, components, and other entities not shown. Furthermore, embodiments of this disclosure can also be applied to environments different from environment 100.

[0029] Figure 3 A flowchart of an example storage management method 300 according to some embodiments of the present disclosure is shown. Method 300 can be executed, for example, by a computing device 201 (more specifically, the processor of computing device 201). References are made below. Figure 2 Let me describe method 300 in detail.

[0030] At block 310, computing device 201 determines multiple storage units to be rebuilt on a set of disks distributed across different disks within the set. For example, when a disk (not shown) used to store data along with the set of disks 201 in environment 200 fails, portions of the multiple storage units 210 previously located on the failed disk can be redistributed across the set of disks 205 (each distributed across different slices of different disks), and the multiple storage units 210 need to be rebuilt to recover the data. Computing device 201 may determine the multiple storage units in any manner, including in response to receiving information about the multiple storage units, and the scope of this disclosure is not limited thereto.

[0031] At box 320, computing device 201 selects a set of storage cells from a set of storage cells based on the distribution of the multiple storage cells on a set of disks, such that the different storage cells in the set of storage cells are distributed on different disks. That is, there is no overlap between the disks distributed by any two storage cells in the selected set of storage cells.

[0032] In some embodiments, for example, to avoid consuming too many system resources, computing device 201 may limit the number of memory cells to be concurrently rebuilt to a certain threshold, i.e., the selected set of memory cells does not exceed the threshold. For example, during the selection of a set of memory cells, computing device 201 may count the number of selected memory cells, and consider the selection complete when the count reaches the threshold.

[0033] In some embodiments, where different storage units are distributed across different disks, computing device 201 can select a group of storage units in such a way that the selected storage units are distributed across as many disks as possible. Therefore, computing device 201 can utilize as many disk resources as possible in subsequent concurrent reconstructions, thereby improving reconstruction efficiency. See below for further details. Figure 4 This selection method will be explained in more detail.

[0034] In some embodiments, storage cells within a plurality of storage units 210 may have their own priorities. For example, in RAID, stripes that serve as storage cells may be divided into different layers based on storage type (such as layer 0 as a high-performance storage layer, layer 1 as a RAID 1 type, and layer 2 as a RAID 5 type), and these layers have different rebuild priorities. In such an embodiment, computing device 201 may select storage cells from a set of storage units according to their priorities.

[0035] In some embodiments, computing device 201 may select one or more storage units from storage units with the same priority as storage units in a group of storage units, such that the different storage units in the group of storage units are distributed across different disks. In some embodiments, computing device 201 may select one or more storage units from storage units with different priorities as part of a group of storage units, such that the different storage units in the group of storage units are distributed across different disks, in descending order of priority. In some embodiments, computing device 201 may select storage units based on a certain number of priorities (e.g., two priorities).

[0036] In some embodiments where storage units have different priorities, computing device 201 may also select the group of storage units in a manner that distributes the selected storage units across as many disks as possible. See below for further details. Figure 6 This selection method will be explained in more detail.

[0037] At box 330, computing device 201 performs concurrent reconstruction on a group of storage cells. For example, in RAID, the computing device can recover data by reading data from one slice (i.e., a portion of the storage cells) of a stripe (i.e., a storage cell) to write to another slice of that stripe. The scope of this disclosure is not limited to any particular reconstruction operation.

[0038] In some embodiments, after performing concurrent rebuilds on a selected set of storage units, computing device 201 may continue to use method 200 to determine the remaining plurality of storage units to be rebuilt, and select another set of storage units from which to perform concurrent rebuilds. After performing several concurrent rebuilds in this manner, if any two storage units that need to be repaired on a set of disks are located on disks that overlap, computing device 201 may rebuild the remaining storage units sequentially.

[0039] Figure 4 A flowchart of an example method 400 for selecting a set of memory cells from a plurality of memory cells to be reconstructed, according to some embodiments of the present disclosure, is shown. Method 400 can be considered as an example implementation of block 320 in method 300. Method 400 can be executed, for example, by computing device 201 (more specifically, the processor of computing device 201). Reference is made below. Figure 2 To describe method 400.

[0040] At box 410, computing device 201 may begin operation on a set of disks 205 as candidate disks. At box 420, computing device 201 may identify a pair of disks from the candidate disks that has the largest number of shared memory cells to be rebuilt. It should be understood that there may also be other shared memory cells on a pair of disks that do not need to be rebuilt. For the sake of brevity, unless otherwise explicitly stated, when referring to a pair of disks as “shared memory cells,” it means the memory cells shared by the pair of disks that need to be rebuilt.

[0041] In some embodiments, computing device 201 can determine a pair of disks with the largest number of shared storage units by generating a correlation matrix about candidate disks. Figure 5 A simplified example 500 of such a correlation matrix is ​​shown. Example 500 illustrates an exemplary set of disks 505 and a correlation matrix 550 generated based on this set of disks 505. The set of disks 505 can be... Figure 2 An example of a set of disks 205 is provided, and the correlation matrix 550 can be generated, for example, by computing device 201. The following will refer to... Figure 2 This describes the generation of the correlation matrix 550.

[0042] In Example 500, computing device 201 determines that multiple storage cells 510-1, 510-2, 510-3, 510-4, 510-5, and 510-6 need to be rebuilt on a set of disks 505, wherein each storage cell is distributed across multiple different disks (e.g., as indicated by reference numeral 510-4). The multiple storage cells to be rebuilt are located on... Figure 5 The distribution is shown as continuous in the diagram for illustrative purposes only. It should be understood that the multiple storage cells to be rebuilt can also be distributed discontinuously, and other storage cells that do not need to be rebuilt can be distributed across a set of disks 505. The computing device 201 then begins operation on this set of disks 505 as candidate disks. To determine the pair of disks with the maximum number of shared storage cells distributed across this set of disks 505, the computing device 201 can generate a correlation matrix 550 based on the distribution of the storage cells to be rebuilt across the set of disks 505. Each row of the correlation matrix 550 corresponds to one disk in the set of disks 550, as indicated by row header 551. Each column of the correlation matrix 550 also corresponds to one disk in the set of disks 550, as indicated by column header 552. In the correlation matrix 550, the element at the intersection of a row and a column indicates the number of shared storage cells between the disk corresponding to that row and the disk corresponding to that column. Figure 5 Only the elements of the upper right half of the correlation matrix 550 are shown. Due to the symmetry of the correlation matrix 550, these elements are sufficient to indicate the number of shared storage units for each pair of disks in a set of disks 505. Furthermore, as... Figure 5As shown, the elements at the intersection of the row and column corresponding to the same disk are marked as 0 in this example. It should be understood that in some other examples, these elements may also be marked with any other suitable value (e.g., negative numbers) that does not affect the determination of a pair of disks.

[0043] In Example 500, computing device 201 can determine from correlation matrix 505 that disks D2 505-2 and D5 505-5 have the largest number of shared storage units in a set of disks 505. Computing device 201 can generate a correlation matrix for another set of disks in the same manner to determine the corresponding pair of disks.

[0044] Continue to refer to Figure 4 At box 430, computing device 201 can select one storage cell from the shared storage cells of a pair of disks defined at box 420 as a storage cell in a set of storage cells. Figure 5 Taking a set of disks 505 as an example, computing device 201 can select one storage unit from the shared storage units 510-5 and 510-6 of disks D2 505-2 and D5 505-5 as the storage unit in the set of storage units. For example, computing device 201 can randomly select storage unit 510-5 or storage unit 510-6, or select a storage unit based on other properties of the storage unit, and the scheme disclosed herein is not limited to this.

[0045] Back Figure 4 At box 440, computing device 201 can select disks from the candidate disks, excluding the disk where the selected storage unit is located, as candidate disks for the next iteration. Again... Figure 5 Taking a set of disks 505 as an example, assuming that the computing device 201 has already selected storage unit 510-5, the computing device 201 will exclude disks D2 505-2, disk D4 505-4 and disk D5 505-5, where storage unit 510-5 is located, from the candidate disks of this round of iteration, and will take the remaining disks D1 505-1 and disk D3 505-3 as candidate disks for the next round of iteration.

[0046] Continue to refer to Figure 4 At box 450, computing device 201 can determine whether a predetermined condition is met. In some embodiments, the predetermined condition may be that there is no longer a pair of disks with shared storage units among the candidate disks. In some embodiments, the predetermined condition may be that the number of storage units in a set of storage units as described above reaches a threshold.

[0047] If the predetermined conditions are met, method 400 proceeds to block 450, where computing device 201 completes the selection. If the predetermined conditions are not met, method 400 returns to block 420 to begin the next iteration to continue adding storage units to a set of storage units.

[0048] Figure 6 A flowchart of an example method 600 for selecting a set of memory cells from a plurality of memory cells to be reconstructed, according to some embodiments of the present disclosure, is shown, wherein the plurality of memory cells have their respective priorities. Method 600 can be considered as an example implementation of block 320 in method 300. Method 600 can be executed, for example, by computing device 201 (more specifically, the processor of computing device 201). Reference is made below. Figure 2 Let's describe method 600.

[0049] At block 610, computing device 201 can determine candidate disks based on disks distributed with storage cells of the same priority and disks distributed with storage cells that have been selected as a group of storage cells. In some embodiments, computing device 201 may have already selected one or more storage cells as part of the group of storage cells from storage cells with other priorities (e.g., a higher priority than the same priority). In this case, when determining candidate disks, computing device 201 can remove the disks distributed with the selected one or more storage cells from the disks distributed with storage cells of the same priority and use the remaining disks as candidate disks.

[0050] At box 620, computing device 201 can determine from candidate disks a pair of disks that have at least one shared storage unit with the same priority, and among a pair or more pairs of disks with at least one shared storage unit with the same priority in the candidate disks, the pair of disks has the maximum number of shared storage units.

[0051] In some embodiments, to combine with Figure 5 In a similar manner to that described, computing device 201 can determine the pair of disks by generating a correlation matrix. For example, after generating the correlation matrix corresponding to the candidate disks, computing device 201 can determine whether the pair of disks corresponding to the elements have shared storage units with the same priority, in descending order of the elements in the matrix, and designate the first determined pair of disks as the pair of disks.

[0052] At block 630, computing device 201 may select a storage cell with the same priority from the shared storage cells of a pair of disks determined at block 630 (e.g., randomly or based on additional conditions) as the storage cell in that set of storage cells.

[0053] At box 640, computing device 201 selects disks other than the disk where the selected storage unit is located as candidate disks for the next iteration.

[0054] At box 650, computing device 201 can determine whether a predetermined condition is met. In some embodiments, the predetermined condition may be that there is no longer a pair of candidate disks with shared storage cells having the same priority. In some embodiments, the predetermined condition may be that the number of storage cells in a set of storage cells as described above reaches a threshold.

[0055] If the predetermined conditions are not met, method 600 returns to block 620 to begin the next iteration to continue adding storage units to a set of storage units. If the predetermined conditions are met, computing device 201 ends the selection of storage units of the same priority.

[0056] In some embodiments, after making a selection for a certain priority, computing device 201 may use method 600 to select a storage unit for another priority (e.g., a lower priority) to continue adding storage units to a set of storage units.

[0057] Figure 7 A simplified example 700 according to some embodiments of the present disclosure is shown, wherein Figure 6 The method 600 shown is used to select a set of memory cells from a plurality of memory cells to be reconstructed. Example 700 can be performed, for example, by computing device 201 (more specifically, the processor of computing device 201). See below for reference. Figure 2 Let's describe example 700.

[0058] In Example 700, computing device 201 has determined that multiple storage units to be rebuilt exist on a set of disks 705, wherein storage units 710-1, 710-2, 710-3, and 710-4 have a higher first priority, and storage units 720-1 and 720-2 have a lower second priority. The set of disks 705 can be... Figure 2 An example of a set of disks 202.

[0059] In Example 700, computing device 201 begins operation for the first priority, and by means of combination Figure 5 The relevant matrix is ​​used to perform the selection. For example... Figure 7As shown, storage units 710-1, 710-2, 710-3, and 710-4 with first priority are distributed on disks 705-1 to 705-5. Since no storage unit has been selected as a storage unit in a group of storage units, computing device 201 considers disks 705-1 to 705-5 as candidate disks and generates a correlation matrix 750-1 for the candidate disks. Computing device 201 can determine from the correlation matrix 750-1 that disks D2 705-2 and D5 705-5 have the largest number of shared storage units. Among these shared storage units, storage units 710-3 and 710-4 have first priority. Therefore, computing device 201 can select one storage unit from storage units 710-3 and 710-4 (for example, storage unit 710-3 is selected) as a storage unit in a group of storage units.

[0060] Then, the computing device 201 removes disks D2 705-2 and D5 705-5, where the selected storage unit 710-4 is located, from the previous candidate disks, and generates a correlation matrix 750-2 with the remaining disks (i.e., disks D1 705-1, D3 705-2, and D4 705-3) as candidate disks. From the correlation matrix 750-2, the computing device 201 determines that disks D1 705-1 and D3 705-3 have the largest number of shared storage units. Among these shared storage units, storage unit 710-2 has the first priority. Therefore, the computing device 201 selects storage unit 710-2 as a storage unit in a set of storage units.

[0061] Next, computing device 201 removes disks D1 705-1 and D3 705-3, where the selected storage unit 710-2 is located, from the previous candidate disks. After this round of iterations, only one disk, D4 705-4, can continue as a candidate disk. Therefore, computing device 201 ends the selection, and the selected set of storage units consists of storage units 710-2 and 710-3. Computing device 201 can then perform concurrent reconstruction on the selected set of storage units. After completing this concurrent reconstruction, computing device 201 can also continue to perform concurrent reconstruction by selecting another set of storage units from the remaining storage units to be reconstructed, for example, using method 600.

[0062] Figure 8 A schematic block diagram of an example device 800 that can be used to implement embodiments of the present disclosure is shown. Figure 8As shown, device 800 includes a central processing unit (CPU) 801, which can perform various appropriate actions and processes according to computer program instructions stored in read-only memory (ROM) 802 or loaded from storage unit 805 into random access memory (RAM) 803. RAM 803 may also store various programs and data required for the operation of device 800. CPU 801, ROM 802, and RAM 803 are interconnected via bus 804. Input / output (I / O) interface 808 is also connected to bus 804.

[0063] Multiple components in device 800 are connected to I / O interface 805, including: input unit 806, such as keyboard, mouse, etc.; output unit 807, such as various types of monitors, speakers, etc.; storage unit 808, such as disk, optical disk, etc.; and communication unit 809, such as network card, modem, wireless transceiver, etc. Communication unit 809 allows device 800 to exchange information / data with other devices through computer networks such as the Internet and / or various telecommunications networks.

[0064] The various processes and handling described above, such as methods 200 and / or 400, can be executed by processing unit 801. For example, in some embodiments, methods 200 and / or 400 can be implemented as computer software programs tangibly contained in a machine-readable medium, such as storage unit 808. In some embodiments, part or all of the computer program can be loaded and / or installed on device 800 via ROM 802 and / or communication unit 809. When the computer program is loaded into RAM 803 and executed by CPU 801, one or more actions of methods 300, 400, and / or 600 described above can be performed.

[0065] This disclosure can be a method, apparatus, system, and / or computer program product. A computer program product may include a computer-readable storage medium having computer-readable program instructions loaded thereon for performing various aspects of this disclosure.

[0066] Computer-readable storage media can be tangible devices capable of holding and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example—but not limited to—electrical storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of computer-readable storage media include: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices, such as punch cards or recessed protrusions storing instructions thereon, and any suitable combination of the foregoing. The computer-readable storage media used herein are not to be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.

[0067] The computer-readable program instructions described herein can be downloaded from computer-readable storage media to various computing / processing devices, or downloaded via a network, such as the Internet, local area network, wide area network, and / or wireless network, to an external computer or external storage device. The network may include copper transmission cables, fiber optic transmission, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to the computer-readable storage media in the respective computing / processing device.

[0068] Computer program instructions used to perform the operations of this disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, etc., and conventional procedural programming languages ​​such as the "C" language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In cases involving a remote computer, the remote computer may be connected to the user's computer via any type of network—including a local area network (LAN) or a wide area network (WAN)—or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, electronic circuitry, such as programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), is personalized by utilizing the status information of the computer-readable program instructions to implement various aspects of this disclosure.

[0069] Various aspects of this disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of this disclosure. It should be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0070] These computer-readable program instructions can be provided to a processing unit of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine such that, when executed by the processing unit of the computer or other programmable data processing apparatus, they create means for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner. Thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0071] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0072] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction containing one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions marked in the blocks may occur in a different order than those shown in the drawings. For example, two consecutive blocks may actually be executed substantially in parallel, and they may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented using a dedicated hardware-based system that performs the specified function or action, or using a combination of dedicated hardware and computer instructions.

[0073] The various embodiments of this disclosure have been described above. These descriptions are exemplary and not exhaustive, nor are they limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is chosen to best explain the principles, practical application, or improvement of the technology in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

Claims

1. A storage management method, comprising: Identify multiple storage cells to be rebuilt on a set of disks, the multiple storage cells being distributed across different disks in the set of disks; Based on the distribution of the plurality of storage units on the set of disks, a set of storage units is selected from the plurality of storage units, such that different storage units in the set of storage units are distributed on different disks; as well as Perform concurrent reconstruction on the aforementioned set of storage units; The storage cells among the plurality of storage cells have their own priorities, wherein selecting the set of storage cells includes: One or more storage cells with the same priority are selected as storage cells in the group of storage cells, such that the different storage cells in the group of storage cells are distributed on different disks; Selecting one or more storage units from storage units having the same priority includes: Candidate disks are determined based on disks containing storage cells of the same priority and disks containing storage cells that have been selected as part of the group of storage cells; and Perform the following operations on the candidate disk: A pair of disks is determined from the candidate disks, wherein the pair of disks has at least one shared storage unit, and the candidate disks contain one or more pairs of disks with the at least one shared storage unit: The at least one shared storage unit is to be rebuilt and has the same priority; and One storage cell with the same priority is selected from the shared storage cells to be rebuilt in the pair of disks as the storage cell in the set of storage cells.

2. The method of claim 1, wherein selecting the set of storage units from the plurality of storage units comprises performing the following additional operation with the set of disks as candidate disks until a predetermined condition is met: From the candidate disks, identify the pair of disks with the largest number of shared storage units to be rebuilt; Select one storage cell from the maximum number of shared storage cells to be rebuilt, as the storage cell in the group of storage cells; and Disks other than the disk where the selected storage unit is located will be selected as candidate disks for the next iteration.

3. The method according to claim 2, wherein the predetermined conditions include: There is no pair of disks among the candidate disks that have shared storage units to be rebuilt.

4. The method of claim 1, wherein the operation on the candidate disks is performed until there is no pair of disks among the candidate disks that have shared storage units to be rebuilt and have the same priority; The pair of disks has the maximum number of shared storage units to be rebuilt. and The operations for the candidate disk also include: Disks other than the disk where the selected storage unit is located will be selected as candidate disks for the next iteration.

5. The method according to claim 1, wherein the set of storage units does not exceed a threshold.

6. The method of claim 1, wherein determining the set of disks from the candidate disks comprises: A correlation matrix is ​​generated, indicating the corresponding number of shared storage units to be rebuilt for disk pairs in the set of disks, which provide storage to the corresponding number of shared storage units.

7. The method according to claim 1, further comprising: The storage units among the plurality of storage units are provided as independent disk redundant array RAID stripes, wherein the independent disk redundant array RAID stripe includes the storage of the corresponding disk in the group of disks.

8. An electronic device, comprising: processor; as well as A memory coupled to the processor, the memory having instructions stored therein, the instructions causing the device to perform actions when executed by the processor, the actions including: Identify multiple storage cells to be rebuilt on a set of disks, the multiple storage cells being distributed across different disks in the set of disks; Based on the distribution of the plurality of storage units on the set of disks, a set of storage units is selected from the plurality of storage units, such that different storage units in the set of storage units are distributed on different disks; and Perform concurrent reconstruction on the aforementioned set of storage units; The storage cells among the plurality of storage cells have their own priorities, wherein selecting the set of storage cells includes: One or more storage cells with the same priority are selected as storage cells in the group of storage cells, such that the different storage cells in the group of storage cells are distributed on different disks; Selecting one or more storage units from storage units having the same priority includes: Candidate disks are determined based on disks distributed with storage cells of the same priority and disks distributed among storage cells already selected as part of the group of storage cells; and Perform the following operations on the candidate disk: A pair of disks is determined from the candidate disks, wherein the pair of disks has at least one shared storage unit, and the candidate disks contain one or more pairs of disks with the at least one shared storage unit: The at least one shared storage unit is to be rebuilt and has the same priority; and One storage cell with the same priority is selected from the shared storage cells to be rebuilt in the pair of disks as the storage cell in the set of storage cells.

9. The device of claim 8, wherein selecting the set of storage units from the plurality of storage units comprises performing the following additional operation with the set of disks as the candidate disks until a predetermined condition is met: From the candidate disks, identify the pair of disks with the largest number of shared storage units to be rebuilt; Select one storage cell from the maximum number of shared storage cells to be rebuilt, as the storage cell in the group of storage cells; and Disks other than the disk where the selected storage unit is located will be selected as candidate disks for the next iteration.

10. The device according to claim 9, wherein the predetermined conditions include: There is no pair of disks among the candidate disks that have shared storage units to be rebuilt.

11. The device of claim 8, wherein the operation for the candidate disk is performed until there is no pair of disks among the candidate disks that have shared storage units to be rebuilt and have the same priority; The pair of disks has the maximum number of shared storage units to be rebuilt. and The operations for the candidate disk also include: Disks other than the disk where the selected storage unit is located will be selected as candidate disks for the next iteration.

12. The device of claim 8, wherein the set of storage units does not exceed a threshold.

13. A computer program product tangibly stored on a computer-readable medium and comprising machine-executable instructions that, when executed, cause a machine to perform the method according to any one of claims 1 to 7.

Citation Information

Patent Citations

  • Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system

    US10210045B1

  • Prioritizing rebuilding of stored data in a dispersed storage network

    US20140331086A1