Methods, electronic devices, and computer program products for expanding storage systems
Patent Information
- Application Number
- CN202210071907.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-01-21
- Publication Date
- 2026-09-01
- Estimated Expiration
- 2042-01-21
AI Technical Summary
传统的混洗数据的方法速度较慢,并且无法提高存储设备的访问带宽
Smart Images

Figure CN116521052B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of this disclosure relate to the field of computers, and more specifically, to methods, electronic devices, apparatuses, media, and computer program products for expanding storage systems. Background Technology
[0002] With the development of data storage technology, various data storage systems based on Redundant Array of Independent Disks (RAID) have been developed, improving data reliability. One type is Mapped RAID, where a disk is a logical concept and can comprise multiple blocks. Multiple blocks within a logical disk can be distributed across different physical storage devices in the storage system's resource pool. For multiple blocks within a stripe of a mapped RAID, these blocks should be distributed across different physical storage devices. A shuffle operation is needed to balance the load on each storage device, such as shuffling between existing and newly added storage devices. Traditional data shuffling methods are slow and do not improve the access bandwidth of storage devices. Therefore, a method is needed that simplifies the shuffling operation and improves the access bandwidth of storage devices. Summary of the Invention
[0003] Embodiments of this disclosure provide a method, electronic device, apparatus, medium, and computer program product for expanding a storage system.
[0004] According to a first aspect of this disclosure, a method for expanding a storage system is provided. The method includes, in response to receiving a request to expand a storage system including a first storage resource pool, adding a second plurality of storage devices to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices being equal to the width of the first stripe associated with the first storage array standard. The method further includes, using the second plurality of storage devices and based on a second storage array standard, creating a second storage resource pool, the width of the second stripe associated with the second storage array standard being equal to the width of the first stripe. The method further includes, using the second plurality of storage devices and based on the second storage array standard, creating a second plurality of stripes in the second storage resource pool. The method further includes, according to a data shuffling rule, storing data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes.
[0005] According to a second aspect of this disclosure, an electronic device is also provided. The electronic device includes 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 include, in response to receiving a request to expand a storage system including a first storage resource pool, adding a second plurality of storage devices to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices being equal to the width of the first stripe associated with the first storage array standard. The actions also include creating a second storage resource pool using the second plurality of storage devices and based on a second storage array standard, the width of the second stripe associated with the second storage array standard being equal to the width of the first stripe. The actions further include creating a second plurality of stripes in the second storage resource pool using the second plurality of storage devices and based on the second storage array standard. The actions also include storing data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes according to a data shuffling rule.
[0006] According to a third aspect of this disclosure, an apparatus for expanding a storage system is provided. The apparatus includes a storage device addition module configured to add a second plurality of storage devices to the storage system in response to receiving a request to expand the storage system including a first storage resource pool. The first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard. The first storage resource pool includes a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of the first stripe associated with the first storage array standard. The apparatus also includes a storage resource pool creation module configured to create a second storage resource pool using the second plurality of storage devices and based on a second storage array standard, where the width of the second stripe associated with the second storage array standard is equal to the width of the first stripe. The apparatus further includes a stripe creation module configured to create a second plurality of stripes in the second storage resource pool using the second plurality of storage devices and based on the second storage array standard. The apparatus also includes a data shuffling module configured to store data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes according to data shuffling rules.
[0007] According to a fourth aspect of this disclosure, a computer-readable storage medium is provided, including machine-executable instructions that, when executed by a device, cause the device to perform a method according to a first aspect of this disclosure.
[0008] According to a fifth 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 by a device, cause the device to perform the method according to the first aspect.
[0009] The summary section is provided to present the chosen concepts in a simplified form, which will be further described in the detailed description below. The summary section is not intended to identify key or principal features of the claimed subject matter, nor is it intended to limit the scope of the claimed subject matter. Attached Figure Description
[0010] The above and other features, advantages, and aspects of the embodiments of this disclosure will become more apparent from the accompanying drawings and the following detailed description. In the drawings, the same or similar reference numerals denote the same or similar elements, wherein:
[0011] Figure 1 A block diagram illustrating a storage system in which an exemplary implementation according to the present disclosure may be implemented is shown;
[0012] Figure 2 A block diagram illustrating an exemplary implementation of an extended storage system according to the present disclosure is shown schematically.
[0013] Figure 3 A flowchart illustrating an exemplary implementation of a method for expanding a storage system according to the present disclosure is shown schematically.
[0014] Figure 4 A block diagram illustrating an exemplary implementation of the present disclosure for generating a second storage resource pool is shown schematically.
[0015] Figure 5 A block diagram schematically illustrates an apparatus for expanding a storage system according to an exemplary implementation of the present disclosure; and
[0016] Figure 6 A block diagram of an apparatus for expanding a storage system, according to an exemplary implementation of the present disclosure, is shown schematically.
[0017] In all the accompanying figures, 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. Rather, these embodiments are 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] In the description of embodiments of this disclosure, the term "comprising" and similar terms should be understood as open-ended inclusion, i.e., "including but not limited to". The term "based on" should be understood as "at least partially based on". The term "one embodiment" or "the embodiment" should be understood as "at least one embodiment". The terms "first", "second", etc., may refer to different or the same objects. Other explicit and implicit definitions may also be included below.
[0020] Furthermore, all specific values in this article are examples only, intended to aid understanding, and are not intended to limit any range.
[0021] Figure 1 A block diagram illustrating a storage system 100 in which an exemplary implementation according to this disclosure may be implemented is shown. Figure 1 As shown, storage system 100 may include multiple storage devices 110, 112, 114, 116, ..., and 118. Each storage device may include multiple blocks, and multiple blocks can be managed based on mapped RAID. Storage resource pools can be created based on a predetermined storage array standard. For example, when using a 4D+1P (4 blocks for storing data and 1 block for storing parity) RAID standard, a stripe can be created using 5 blocks located on 5 storage devices. In this case, 4 blocks in the stripe can be used for storing data (as shown in Example 120), and 1 block can be used for storing parity (as shown in Example 122).
[0022] As a storage system operates, its available storage space will gradually be exhausted. At this point, new storage devices can be added to expand the system's storage capacity. Several technical solutions for expanding storage devices have been proposed. One such solution involves adding one or more new storage devices to the system. To ensure load balancing across these devices, a shuffling operation is required between existing and new storage devices to migrate data from heavily used devices to the new ones. However, for large storage systems, this shuffling operation can take several days or even longer, severely degrading the user experience.
[0023] In another technical solution, multiple storage systems can be added to the storage system beyond a predetermined number (e.g., the width of the stripes in the storage system). For example, in a 4D+1P storage system, 4+1=5 storage devices can be added. These 5 newly added storage devices can then form a new mapped RAID and immediately provide data storage services to users of the storage system.
[0024] To address the shortcomings of existing technical solutions, this disclosure provides an exemplary implementation of a technical solution for expanding storage systems. See below for details. Figure 2 A summary of an exemplary implementation according to this disclosure is provided. For ease of description, the process of expanding a storage system will be described below using only a storage system comprising five storage devices and built based on the 4D+1P RAID standard as an example. According to an exemplary implementation of this disclosure, the storage system may also include more or fewer storage devices, and the storage system may be built based on other storage array standards.
[0025] Figure 2 A block diagram 200 illustrating an exemplary implementation of an expansion storage system according to this disclosure is shown schematically. Prior to the expansion operation, the storage system includes a first plurality of storage devices ( Figure 2 Examples include five storage devices: 110, 112, 114, 116, and 118. Each storage device forms a first storage resource pool 220 based on a first storage array standard (4D+1P RAID standard). Secondary or more storage devices can be added to the storage system. Figure 2 Examples include five storage devices: 210, 212, 214, 216, and 218.
[0026] The aforementioned storage devices 210, 212, 214, 216, and 218 can be used to generate a second storage resource pool 222 based on a second storage array standard (e.g., a 4D+1P RAID standard). In this case, the number 5 of the second plurality of storage devices is equal to the first stripe width associated with the first storage array standard. It is understood that the number of the second plurality of storage devices can also be other than the number described above, and therefore the second storage array standard can also be changed.
[0027] It will be understood that, since the second storage resource pool 222 is a complete mapped RAID storage system, it can immediately serve data access requests from users of the storage system. For example, when the storage system receives a request from a user to write user data to the storage system, the user data can be written to the second storage resource pool 222 immediately without performing a shuffling operation. In this way, it is not necessary to perform shuffling operations on each storage device in the storage system, nor is it necessary to add a large number of storage devices to the storage system at once; the storage space of the added storage device can be used immediately after it is added.
[0028] Figure 3 A flowchart illustrating an exemplary implementation of a method 300 for expanding a storage system according to the present disclosure is shown. As shown, the storage system includes a first storage resource pool 220, which is generated using a first plurality of storage devices and based on a first storage array standard.
[0029] At box 302, in response to receiving a request to expand the storage system including the first storage resource pool, a second plurality of storage devices are added to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of the first stripe associated with the first storage array standard.
[0030] The storage system can receive requests to expand the storage system. According to an exemplary implementation of this disclosure, an expansion request can be automatically issued when the free storage space included in the storage system is detected to be below a predetermined threshold. Alternatively and / or additionally, the expansion request can be manually issued by the administrator of the storage system. The expansion request can trigger method 300 according to an exemplary implementation of this disclosure.
[0031] At box 304, a second storage resource pool 222 is created using a second plurality of storage devices and based on a second storage array standard, wherein the second stripe width associated with the second storage array standard is equal to the first stripe width.
[0032] If an expansion request is received, a second or more storage devices can be added to the storage system. Here, the number of the second or more storage devices is equal to the first stripe width associated with the first storage array standard. It will be understood that the number of the second or more storage systems here should be greater than or equal to 5, because the number of the first or more storage devices is 5 (…). Figure 2 The example includes 5 storage devices.
[0033] At box 306, a second plurality of stripes are created in a second storage resource pool using a second plurality of storage devices and based on a second storage array standard. Here, the width of the second stripe associated with the second storage array standard is equal to the width of the first stripe. Figure 2 In the example shown, the first stripe width is 5 and the second stripe width is also 5. At this point, a second storage resource pool 222 can be created based on the blocks in storage devices 210, 212, 214, 216, and 218, using the 4D+1P RAID standard. Using this exemplary implementation, once storage devices 210, 212, 214, 216, and 218 have been added to the storage system, the free space in these storage devices can be used. In this way, the impact of expansion operations and subsequent shuffling operations on the performance of the storage system can be reduced, thereby obtaining more available storage space more quickly.
[0034] At box 308, according to the data shuffling rules, the data of at least one strip in the first plurality of stripes is stored in the corresponding strip in the second plurality of stripes.
[0035] According to one exemplary implementation of this disclosure, a shuffling operation can be automatically triggered when an imbalance in the usage load of the storage system is detected, the shuffling operation can be triggered periodically, or the shuffling operation can be manually triggered by the administrator of the storage system.
[0036] Thus, using the exemplary implementation of this disclosure, the storage space in the newly added storage device can be used immediately without interrupting the normal data storage services of the storage system to perform the shuffling operation. At the same time, this method can improve the access speed of the storage system, allowing the I / O access capabilities of the newly added storage device to be integrated into the entire storage system.
[0037] Figure 4 A block diagram 400 illustrating an exemplary implementation of this disclosure for generating a second storage resource pool is shown schematically. See below for further details. Figure 4 Further details are described regarding the methods used to generate the second storage resource pool 222. Figure 4 As shown, stripes in the second storage resource pool 222 can be created using blocks located in storage devices 210, 212, 214, 216 and 218 respectively and based on the 4D+1P RAID standard.
[0038] According to one exemplary implementation of this disclosure, each stripe can span multiple storage devices 210, 212, 214, 216, and 218 respectively. As an example only, in stripe 420, the blocks in storage devices 210, 212, 214, and 216 are data blocks, and the blocks in storage device 218 are parity blocks. In this case, the distribution of data blocks and parity blocks in each stripe satisfies the 4D+1P RAID standard. It will be understood that, although... Figure 4 Only two stripes 420 and 422 are shown schematically; the second storage resource pool 222 may also include more or fewer stripes.
[0039] According to an exemplary implementation of this disclosure, if a request to write user data to the storage system is received, the user data can be written to at least one stripe in the second storage resource pool 222. According to an exemplary implementation of this disclosure, the user data can be partitioned based on the size of blocks in the second storage resource pool 222, and the partitioned user data can be stored in one or more stripes in the second storage resource pool 222.
[0040] Specifically, a data portion and a checksum portion associated with the user data can be generated based on the second storage array standard. Further, the data portion and the checksum portion can be written into at least one data block and a checksum block in at least one stripe, respectively. For example, the user data can be divided into two portions, and these two portions can be stored in two data blocks in stripe 420, respectively. Then, a corresponding checksum portion can be generated based on the two data blocks, and this checksum portion can be stored in the checksum block in stripe 420.
[0041] It will be understood that the above description only illustratively illustrates the case of storing user data in one stripe. When the amount of user data is large, it can be stored in more stripes. For example, when the size of the user data is four times the size of the data block, the user data can be divided into four parts, and these four parts can be stored in the data blocks of stripe 420 and stripe 422 respectively. Using the exemplary implementation of this disclosure, the RAID standard of the second storage resource pool 222 is equal to the RAID standard of the first storage resource pool 220, and the second storage resource pool 222 can operate as an independent RAID storage system. It can be understood that the RAID standard of the second storage resource pool 222 is not equal to the RAID standard of the first storage resource pool 220, and the second storage resource pool 222 can also operate as an independent RAID storage system. In this way, the storage space in the second storage resource pool 222 can be used immediately without performing a shuffling operation. The storage system can provide a hybrid RAID storage method and can reduce the downtime of the storage system and improve the performance of the storage system while ensuring data reliability.
[0042] In some embodiments, in response to determining that data in at least one stripe has been stored, the corresponding storage space of the first storage resource pool is identified as available storage space of the storage system.
[0043] As an example, if the data of the stripes in storage devices 110, 112, 114, 116 and 118 has been stored (or, may be referred to as migrated) to stripe 420 or stripe 422, then the corresponding storage space of the first storage resource pool is identified as the available storage space of the storage system.
[0044] In some embodiments, in response to determining that a corresponding storage space is identified as available storage space, data in at least one stripe is released. This allows the corresponding space in the first storage device to be reused. Consequently, the storage system can have more storage space available for storing user data.
[0045] In some embodiments, storing data from at least one stripe of a first plurality of stripes into a corresponding stripe of a second plurality of stripes includes determining a first plurality of blocks of at least one stripe of the first plurality of stripes based on a first storage array standard, wherein the number of the first plurality of blocks is equal to the number of the first plurality of storage devices. It also includes determining a second plurality of blocks of at least one stripe of the second plurality of stripes based on a second storage array standard, wherein the number of the second plurality of blocks is equal to the number of the second plurality of storage devices. Furthermore, it includes storing the data from the first plurality of blocks into the second plurality of blocks according to a data shuffling rule.
[0046] In some embodiments, the data shuffling rule includes determining a third plurality of stripes in a first plurality of stripes, the number of the third plurality of stripes being half the number of the first plurality of stripes, and storing the data in the third plurality of stripes into the corresponding stripes in a second plurality of stripes.
[0047] As an example, if the number of the first plurality of stripes (e.g., all stripes in the first storage resource pool 220) is N (N being an even number greater than 2), then N / 2 stripes can be identified as the third plurality of stripes. Furthermore, the number of corresponding stripes in the second plurality of stripes is also N / 2.
[0048] In some embodiments, determining a third plurality of stripes includes selecting a plurality of stripes in odd-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes, or selecting a plurality of stripes in even-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes.
[0049] As an example, the following formula can be used to apply data shuffling rules to store the data of the third or more stripes into the corresponding stripes of the second or more stripes.
[0050]
[0051] For the first band in the third or more bands:
[0052] lba raid =lba lun %S Dlice +S rotation ×(lba lun / S slice )
[0053] For the second band in the third multiple bands:
[0054] lba raid =S slice +lba lun %S slice +S rotation ×(lba lun / Sslice )
[0055] And so on, for the nth strip in the third or more stripes:
[0056] lba raid =n×S slice +lba lun %S slice +S rotation ×(lba lun / S slice )
[0057] in:
[0058] lba lun : Represents a stripe row in the first storage resource pool.
[0059] lba mrg : Represents a stripe row in the second storage resource pool.
[0060] N nest : Indicates the number of data migrations
[0061] S lslice : Indicates the size of the stripe block
[0062] S rotation : Indicates the total amount of data migrated
[0063] W raid : Indicates RAID width
[0064] W data : Indicates the width of user data
[0065] As can be seen, after migrating data using data shuffling rules, the expanded storage system can fully utilize the I / O access capabilities of the newly added storage devices. Furthermore, since the amount of data migrated can be half that of the existing storage devices, the load is more evenly distributed. Based on this, it can be understood that if the data I / O access speed of the existing storage system is S, then the I / O access speed of the expanded storage system can reach 2S. If the traditional data shuffling method is used, the I / O access speed of the expanded storage system will still be S. Therefore, the method provided in this disclosure can effectively improve the data access speed (or, in other words, the data write / read bandwidth) of the storage system.
[0066] It will be understood that the first storage resource pool 220 is a temporary name for the existing multiple storage devices in the storage system during the expansion operation, and the second storage resource pool 222 is a temporary name for the newly added multiple storage devices during the expansion operation, and these temporary names can be canceled after the expansion operation is completed.
[0067] Figure 5 A block diagram of an apparatus 500 for expanding a storage system, according to an exemplary implementation of the present disclosure, is shown schematically.
[0068] Storage device addition module 502 is configured to add a second plurality of storage devices to the storage system in response to receiving a request to expand the storage system including a first storage resource pool, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of the first stripe associated with the first storage array standard.
[0069] The storage resource pool creation module 504 is configured to create a second storage resource pool using a second plurality of storage devices and based on a second storage array standard, wherein the second stripe width associated with the second storage array standard is equal to the first stripe width.
[0070] The stripe creation module 506 is configured to create a second plurality of stripes in a second storage resource pool using a second plurality of storage devices and based on a second storage array standard.
[0071] The data shuffling module 508 is configured to store data from at least one stripe in a first plurality of stripes into the corresponding stripe in a second plurality of stripes according to the data shuffling rules.
[0072] Figure 6 A schematic block diagram of a device 600 that can be used to implement embodiments of the present disclosure is shown. Device 600 may be the device or apparatus described in the embodiments of the present disclosure. Figure 6 As shown, device 600 includes a central processing unit (CPU) 601, which can perform various appropriate actions and processes according to computer program instructions stored in read-only memory (ROM) 602 or loaded from storage unit 608 into random access memory (RAM) 603. The RAM 603 may also store various programs and data required for the operation of device 600. The CPU 601, ROM 602, and RAM 603 are interconnected via bus 604. Input / output (I / O) interface 605 is also connected to bus 604. Although not shown in... Figure 6 As shown, device 600 may also include a coprocessor.
[0073] Multiple components in device 600 are connected to I / O interface 605, including: input unit 606, such as keyboard, mouse, etc.; output unit 607, such as various types of monitors, speakers, etc.; storage unit 608, such as disk, optical disk, etc.; and communication unit 609, such as network card, modem, wireless transceiver, etc. Communication unit 609 allows device 600 to exchange information / data with other devices through computer networks such as the Internet and / or various telecommunications networks.
[0074] The various methods or processes described above can be executed by processing unit 601. For example, in some embodiments, the methods can be implemented as computer software programs tangibly contained in a machine-readable medium, such as storage unit 608. In some embodiments, part or all of the computer program can be loaded and / or installed on device 600 via ROM 602 and / or communication unit 609. When the computer program is loaded into RAM 603 and executed by CPU 601, one or more steps or actions of the methods or processes described above can be performed.
[0075] In some embodiments, the methods and processes described above can be implemented as a computer program product. The computer program product may include a computer-readable storage medium having computer-readable program instructions loaded thereon for performing various aspects of this disclosure.
[0076] 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 thereof. 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 thereof. 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.
[0077] 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 cables, fiber optic cables, 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 computer-readable storage media within the respective computing / processing device.
[0078] 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 and conventional procedural 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.
[0079] 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.
[0080] 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.
[0081] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of devices, 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 marked 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.
[0082] 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 applications, or technical improvements to the technology in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0083] The following are some example implementations of this disclosure.
[0084] In a first aspect of this disclosure, a method for expanding a storage system is provided. The method includes, in response to receiving a request to expand a storage system including a first storage resource pool, adding a second plurality of storage devices to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices being equal to the width of the first stripe associated with the first storage array standard. The method further includes, using the second plurality of storage devices and based on a second storage array standard, creating a second storage resource pool, the width of the second stripe associated with the second storage array standard being equal to the width of the first stripe. The method further includes, using the second plurality of storage devices and based on the second storage array standard, creating a second plurality of stripes in the second storage resource pool. The method further includes, according to a data shuffling rule, storing data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes.
[0085] In some embodiments, the method further includes identifying the corresponding storage space of the first storage resource pool as available storage space of the storage system in response to determining that data in at least one stripe has been stored.
[0086] In some embodiments, the method further includes releasing data in at least one stripe in response to determining that the corresponding storage space is identified as available storage space.
[0087] In some embodiments, the first storage array standard and the second storage array standard include a standard based on Redundant Array of Independent Disks (RAID), and the second storage array standard is determined based on the number of a second plurality of storage devices.
[0088] In some embodiments, storing data from at least one stripe of a first plurality of stripes into a corresponding stripe of a second plurality of stripes includes determining a first plurality of blocks of at least one stripe of the first plurality of stripes based on a first storage array standard, the number of the first plurality of blocks being equal to the number of the first plurality of storage devices. It also includes determining a second plurality of blocks of at least one stripe of the second plurality of stripes based on a second storage array standard, the number of the second plurality of blocks being equal to the number of the second plurality of storage devices. Furthermore, it includes storing the data from the first plurality of blocks into the second plurality of blocks according to a data shuffling rule.
[0089] In some embodiments, the data shuffling rule includes determining a third plurality of stripes within a first plurality of stripes, the number of which is half the number of the first plurality of stripes. It also includes storing data from the third plurality of stripes into corresponding stripes within a second plurality of stripes.
[0090] In some embodiments, determining the third plurality of stripes includes selecting a plurality of stripes in odd-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes, or selecting a plurality of stripes in even-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes.
[0091] In a second aspect of this disclosure, an electronic device is provided. The electronic device includes 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 include, in response to receiving a request to expand a storage system including a first storage resource pool, adding a second plurality of storage devices to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices being equal to the width of the first stripe associated with the first storage array standard. The actions also include creating a second storage resource pool using the second plurality of storage devices and based on a second storage array standard, the width of the second stripe associated with the second storage array standard being equal to the width of the first stripe. The actions further include creating a second plurality of stripes in the second storage resource pool using the second plurality of storage devices and based on the second storage array standard. The actions also include storing data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes according to a data shuffling rule.
[0092] In some embodiments, the action further includes identifying the corresponding storage space of the first storage resource pool as available storage space of the storage system in response to determining that data in at least one stripe has been stored.
[0093] In some embodiments, the action further includes releasing data in at least one stripe in response to determining that the corresponding storage space is identified as available storage space.
[0094] In some embodiments, the first storage array standard and the second storage array standard include a standard based on Redundant Array of Independent Disks (RAID), and the second storage array standard is determined based on the number of a second plurality of storage devices.
[0095] In some embodiments, storing data from at least one stripe of a first plurality of stripes into a corresponding stripe of a second plurality of stripes includes determining a first plurality of blocks of at least one stripe of the first plurality of stripes based on a first storage array standard, the number of the first plurality of blocks being equal to the number of the first plurality of storage devices. It also includes determining a second plurality of blocks of at least one stripe of the second plurality of stripes based on a second storage array standard, the number of the second plurality of blocks being equal to the number of the second plurality of storage devices. Furthermore, it includes storing the data from the first plurality of blocks into the second plurality of blocks according to a data shuffling rule.
[0096] In some embodiments, the data shuffling rule includes determining a third plurality of stripes within a first plurality of stripes, the number of which is half the number of the first plurality of stripes. It also includes storing data from the third plurality of stripes into corresponding stripes within a second plurality of stripes.
[0097] In some embodiments, determining the third plurality of stripes includes selecting a plurality of stripes in odd-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes, or selecting a plurality of stripes in even-numbered rows from all stripes and determining the selected plurality of stripes as the third plurality of stripes.
[0098] In a third aspect embodiment, an apparatus for expanding a storage system is provided. The apparatus includes a storage device addition module configured to add a second plurality of storage devices to the storage system in response to receiving a request to expand the storage system including a first storage resource pool. The first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard. The first storage resource pool includes a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of the first stripe associated with the first storage array standard. The apparatus also includes a storage resource pool creation module configured to create a second storage resource pool using the second plurality of storage devices and based on a second storage array standard, where the width of the second stripe associated with the second storage array standard is equal to the width of the first stripe. The apparatus further includes a stripe creation module configured to create a second plurality of stripes in the second storage resource pool using the second plurality of storage devices and based on the second storage array standard. The apparatus also includes a data shuffling module configured to store data from at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes according to data shuffling rules.
[0099] In an embodiment of the fourth aspect, a computer-readable storage medium is provided. The computer-readable storage medium stores one or more computer instructions, wherein the one or more computer instructions are executed by a processor to implement the method according to the first aspect.
[0100] In a fifth aspect embodiment, a computer program product is provided. The computer program product includes one or more computer instructions, wherein the one or more computer instructions, when executed by a processor, implement the method according to the first aspect.
[0101] Although this disclosure has been described using language specific to structural features and / or methodological logic, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or actions described above. Rather, the specific features and actions described above are merely illustrative examples of implementing the claims.
Claims
1. A method for expanding a storage system, comprising: In response to receiving a request to expand the storage system including a first storage resource pool, a second plurality of storage devices are added to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the first stripe width associated with the first storage array standard; A second storage resource pool is created using the second plurality of storage devices and based on a second storage array standard, wherein the second stripe width associated with the second storage array standard is equal to the first stripe width; Using the second plurality of storage devices and based on the second storage array standard, create a second plurality of stripes in the second storage resource pool; as well as According to the data shuffling rules, at least one stripe from the first plurality of stripes is stored in the corresponding stripe from the second plurality of stripes.
2. The method according to claim 1, further comprising: In response to determining that data in at least one stripe has been stored, the corresponding storage space of the first storage resource pool is identified as available storage space of the storage system.
3. The method according to claim 2, further comprising: In response to determining that the corresponding storage space is identified as available storage space, the data in the at least one stripe is released.
4. The method of claim 1, wherein the first storage array standard and the second storage array standard include a standard based on Redundant Array of Independent Disks (RAID), and the second storage array standard is determined based on the number of the second plurality of storage devices.
5. The method of claim 1, wherein storing data of at least one stripe from the first plurality of stripes into a corresponding stripe from the second plurality of stripes comprises: Based on the first storage array standard, a first plurality of blocks of at least one stripe in the first plurality of stripes are determined, wherein the number of the first plurality of blocks is equal to the number of the first plurality of storage devices; Based on the second storage array standard, a second plurality of blocks are determined for at least one of the second plurality of stripes, wherein the number of the second plurality of blocks is equal to the number of the second plurality of storage devices; as well as According to the data shuffling rules, the data of the first plurality of blocks are stored in the second plurality of blocks.
6. The method according to claim 1, wherein the data shuffling rules include: A third plurality of stripes are determined from the first plurality of stripes, wherein the number of the third plurality of stripes is half the number of the first plurality of stripes; as well as The data in the third plurality of stripes is stored in the corresponding stripes in the second plurality of stripes.
7. The method of claim 6, wherein determining the third plurality of stripes comprises: Among all the stripes, select multiple stripes in odd-numbered rows, and define the selected multiple stripes as the third multiple stripes; or Among all the stripes, select multiple stripes from even-numbered rows, and define the selected multiple stripes as the third multiple stripes.
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: In response to receiving a request to expand a storage system including a first storage resource pool, a second plurality of storage devices are added to the storage system, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of a first stripe associated with the first storage array standard; A second storage resource pool is created using the second plurality of storage devices and based on a second storage array standard, wherein the second stripe width associated with the second storage array standard is equal to the first stripe width; Using the second plurality of storage devices and creating a second plurality of stripes in the second storage resource pool based on the second storage array standard; and According to the data shuffling rules, at least one stripe from the first plurality of stripes is stored in the corresponding stripe from the second plurality of stripes.
9. The electronic device according to claim 8, wherein the action further includes: In response to determining that data in at least one stripe has been stored, the corresponding storage space of the first storage resource pool is identified as available storage space of the storage system.
10. The electronic device according to claim 9, wherein the action further includes: In response to determining that the corresponding storage space is identified as available storage space, the data in the at least one stripe is released.
11. The electronic device of claim 8, wherein the first storage array standard and the second storage array standard include a standard based on Redundant Array of Independent Disks (RAID), and the second storage array standard is determined based on the number of the second plurality of storage devices.
12. The electronic device of claim 8, wherein storing data of at least one stripe of the first plurality of stripes into a corresponding stripe of the second plurality of stripes comprises: Based on the first storage array standard, a first plurality of blocks of at least one stripe in the first plurality of stripes are determined, wherein the number of the first plurality of blocks is equal to the number of the first plurality of storage devices; Based on the second storage array standard, a second plurality of blocks are determined for at least one of the second plurality of stripes, wherein the number of the second plurality of blocks is equal to the number of the second plurality of storage devices; as well as According to the data shuffling rules, the data of the first plurality of blocks are stored in the second plurality of blocks.
13. The electronic device of claim 8, wherein the data shuffling rule includes: A third plurality of stripes are determined from the first plurality of stripes, wherein the number of the third plurality of stripes is half the number of the first plurality of stripes; as well as The data in the third plurality of stripes is stored in the corresponding stripes in the second plurality of stripes.
14. The electronic device of claim 13, wherein determining the third plurality of stripes comprises: Among all the stripes, select multiple stripes in odd-numbered rows, and define the selected multiple stripes as the third multiple stripes; or Among all the stripes, select multiple stripes from even-numbered rows, and define the selected multiple stripes as the third multiple stripes.
15. An apparatus for expanding a storage system, comprising: A storage device addition module is configured to add a second plurality of storage devices to the storage system in response to receiving a request to expand the storage system including a first storage resource pool, wherein the first storage resource pool is generated using the first plurality of storage devices and based on a first storage array standard, the first storage resource pool including a first plurality of stripes created using the first storage array standard, and the number of the second plurality of storage devices is equal to the width of a first stripe associated with the first storage array standard. The storage resource pool creation module is configured to create a second storage resource pool using the second plurality of storage devices and based on a second storage array standard, wherein the second stripe width associated with the second storage array standard is equal to the first stripe width; A stripe creation module is configured to create a second plurality of stripes in the second storage resource pool using the second plurality of storage devices and based on the second storage array standard; as well as The data shuffling module is configured to store data from at least one stripe of the first plurality of stripes into the corresponding stripe of the second plurality of stripes according to the data shuffling rules.
16. A computer-readable storage medium having stored thereon one or more computer instructions, wherein the one or more computer instructions are executed by a processor to implement the method according to any one of claims 1 to 7.
17. A computer program product comprising one or more computer instructions, wherein the one or more computer instructions are executed by a processor to implement the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Storage virtualization device, data storage method and system
CN102622189A
Wear levelling in non-volatile memories
CN108369556A