System and method for rebalancing striped information across multiple storage devices

Through the optimized logical striping method, the time-consuming problem of data storage device arrays in the prior art is solved when expanding or reducing the number of physical storage devices, and more efficient data balancing and storage management are achieved, reducing costs and power consumption. .

CN112041806BActive Publication Date: 2025-02-25COHESITY INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980028631.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-04-27
Filing Date
2019-04-24
Publication Date
2025-02-25
Estimated Expiration
2039-04-24

AI Technical Summary

Technical Problem

Prior art When expanding or reducing the number of physical storage devices in a data storage device array, a long re-layout process is required, especially when rebalancing striped information across multiple storage devices, conventional techniques exist for data. The problem of low mobility efficiency and long time.

Method used

By performing an optimized logical striping method, rebalancing striping information across multiple storage devices, the specific steps include allocating continuous storage space on multiple physical devices, dividing it into subvolumes, and assigning the subvolumes to logical stripes. and physical striping, optimize the data redistribution process.

Benefits of technology

This method can significantly reduce data movement, save power, improve the cost-effectiveness of storage management, and achieve faster and more efficient data balance without the need for temporary storage space and serial data transfer.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112041806B_ABST
    Figure CN112041806B_ABST
Patent Text Reader

Abstract

Disclosed in the present invention is a computer-implemented method for rebalancing striped information across multiple storage devices, which may include: (1) allocating "Y" contiguous storage spaces on "Y" physical devices; (2) at the computing device, dividing the "Y" contiguous storage spaces into "N" subvolumes; (3) allocating the "N" subvolumes to "X" logical stripes; (4) allocating each of the first "Y" logical stripes to a corresponding physical stripe in each of the "Y" physical stripes; (5) distributing the remaining subvolumes to corresponding logical stripes; and (6) allocating the corresponding subvolume across the "Y" physical stripes. The present invention also discloses various other methods, systems, and computer-readable media.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] An array of data storage devices can store data in a striped manner. Striping is a technique for segmenting data and storing different data segments on different physical storage devices in an array of data storage devices. Striping improves I / O performance by enabling simultaneous access to data stored on different physical storage devices. However, expanding and / or reducing the number of physical storage devices in an array of data storage devices may require performing a "relayout" process. The relayout process moves striped data serially from an initial group of physical storage devices to a temporary storage device, and then rewrites the striped data from the temporary storage device to the revised group of physical storage devices. The relayout process moves large amounts of data serially through the required temporary storage devices. For example, adding a new stripe to a 1200GB striped local volume using conventional relayout techniques may take 2.5 hours to complete, while adding the same stripe to a remote volume may take 24 hours to complete. Therefore, the present disclosure identifies and addresses the need for systems and methods for rebalancing striped information across multiple storage devices. Summary of the invention

[0002] As will be described in greater detail below, the present disclosure describes various systems and methods for rebalancing striped information across multiple storage devices by, for example, performing optimized logical striping.

[0003] In one embodiment, a computer-implemented method for rebalancing striped information across multiple storage devices may include: (1) allocating "Y" contiguous storage spaces on "Y" physical devices; (2) at a computing device, dividing the "Y" contiguous storage spaces into "N" sub-volumes; (3) allocating the "N" sub-volumes to "X" logical stripes; (4) allocating each of the first "Y" logical stripes to a corresponding physical stripe in each of the "Y" physical stripes; (5) dividing the remaining logical stripes by "Y" to form corresponding sub-logical stripes; and (6) allocating corresponding sub-volumes across the "Y" physical stripes.

[0004] In an embodiment, the partitioning may include calculating "N" as the least common multiple of {2, 3, ... X}. In one example, the method may include marking at least one logical stripe with a logical stripe identifier (e.g., "L0" for logical stripe zero). In some examples, the method may include marking at least one sub-logical stripe with a sub-logical stripe identifier (e.g., "LL1" for sub-logical stripe one).

[0005] In one embodiment, the method may include checking whether at least one subvolume is overused, and when a subvolume is identified as overused, moving the overused subvolume to a different physical stripe.

[0006] In an embodiment, the method may include: (1) adding "P" physical stripes, where "P" is an integer; (2) transferring Y+1 to Y+P logical stripes and subvolumes therein to the additional "P" physical stripes; and (3) redistributing subvolumes in Y+P+1 and any higher logical stripes across the Y+P physical stripes. In one example, the method may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to the additional "P" physical stripes. In some examples, the method may include (e.g., subsequently) (1) redistributing subvolumes from "Y+1" logical stripes across the first "Y" physical stripes; (2) redistributing subvolumes in Y+2 and any higher logical stripes across the first "Y" physical stripes; and (3) removing "Y+1" physical stripes from a plurality of storage devices. In one embodiment, the method may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to a physical stripe that stores the least number of subvolumes.

[0007] In an embodiment, the method may include: (1) redistributing subvolumes from "Y" logical stripes across the first "Y-1" physical stripes; (2) redistributing subvolumes in Y+1 and any higher logical stripes across the first "Y-1" physical stripes; and (3) removing "Y" physical stripes from the plurality of storage devices. In one example, the method may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to a physical stripe that stores the least number of subvolumes. In an example, the method may include (e.g., subsequently) (1) adding "P" physical stripes, where "P" is an integer; (2) transferring Y+1 to Y+P logical stripes and subvolumes therein to additional "P" physical stripes; and (3) redistributing subvolumes in Y+P+1 and any higher logical stripes across Y+P physical stripes. In one embodiment, the method may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to an additional physical stripe.

[0008] In one example, a system for rebalancing striped information across multiple storage devices may include several modules stored in a memory, including: (1) a first allocation module stored in the memory, which allocates "Y" consecutive storage spaces on "Y" physical devices; (2) a partitioning module stored in the memory, which partitions the "Y" consecutive storage spaces into "N" sub-volumes; (3) a second allocation module stored in the memory, which allocates the "N" sub-volumes to "X" logical stripes; (4) a third allocation module stored in the memory, which allocates each of the first "Y" logical stripes to a corresponding physical stripe in each of the "Y" physical stripes; (5) a distribution module stored in the memory, which divides the remaining logical stripes by "Y" to form corresponding sub-logical stripes; and (6) an "Nth" allocation module stored in the memory, which allocates corresponding sub-volumes across the "Y" physical stripes. The system may also include at least one physical processor that executes the first allocation module, the partitioning module, the second allocation module, the third allocation module, the second partitioning module, and the "Nth" allocation module.

[0009] In some examples, the above method may be encoded as computer-readable instructions on a non-transitory computer-readable medium. For example, a computer-readable medium may include one or more computer-executable instructions that, when executed by at least one processor of a computing device, may cause the computing device to: (1) allocate "Y" consecutive storage spaces on "Y" physical devices; (2) at the computing device, divide the "Y" consecutive storage spaces into "N" sub-volumes; (3) allocate the "N" sub-volumes to "X" logical stripes; (4) allocate each of the first "Y" logical stripes to a corresponding physical stripe in each of the "Y" physical stripes; (5) divide the remaining logical stripes by "Y" to form corresponding child logical stripes; and (6) allocate corresponding sub-volumes across the "Y" physical stripes.

[0010] Features from any of the above embodiments may be used in combination with each other according to the general principles described herein. These and other embodiments, features and advantages will be more fully understood after reading the following detailed description in conjunction with the accompanying drawings and claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The accompanying drawings illustrate several exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.

[0012] Figure 1 A block diagram of an exemplary system for rebalancing striped information across multiple storage devices is shown.

[0013] Figure 2 A block diagram of an additional exemplary system for rebalancing striped information across multiple storage devices is provided.

[0014] Figure 3 A flow chart of an exemplary method for rebalancing striped information across multiple storage devices is provided.

[0015] Figure 4 An illustration of an exemplary allocation of subvolumes across multiple storage devices.

[0016] Figure 5 A flow chart of an exemplary method for allocating subvolumes across multiple storage devices.

[0017] Figure 6 is a diagram of an exemplary reallocation of subvolumes across multiple storage devices when a storage device is added.

[0018] Figure 7 is an illustration of an exemplary reallocation of subvolumes across multiple storage devices when two storage devices are added.

[0019] Figure 8 is an illustration of an exemplary reallocation of subvolumes across multiple storage devices when a storage device is removed.

[0020] Fig. 9 is an illustration of an exemplary reallocation of subvolumes across multiple storage devices when two storage devices are removed.

[0021] Fig.10 A graph comparing the operating performance of conventional techniques with an example of the operating performance of the provided techniques.

[0022] Throughout the drawings, the same reference characters and descriptions indicate similar but not necessarily identical elements. Although the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments are shown by way of example in the drawings, which will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the specific forms disclosed. On the contrary, the present disclosure encompasses all modifications, equivalents, and alternative forms that fall within the scope of the appended claims. DETAILED DESCRIPTION

[0023] The present disclosure as a whole relates to systems and methods for rebalancing striped information across multiple storage devices. The provided systems and methods can rebalance striped information across multiple storage devices by performing optimized logical striping, where a logical stripe can include subvolumes that can be shifted across physical stripes in a balanced amount before changing the number of multiple storage devices. In an embodiment, the disclosed technology can be utilized in conjunction with a cloud-based storage device.

[0024] By doing so, in some examples, the systems and methods described herein can improve the functionality of a computing device by automatically (re)balancing striped information across multiple storage devices, thereby achieving cost-effective storage management. Additionally, in some examples, the systems and methods described herein can save power by reducing the amount of data to be transferred. The provided methods may also not require the use of temporary storage space, may not require moving data to temporary space, may not require serial transfer of substantially all data in multiple storage devices, and may not require moving as much data as conventional techniques, thereby achieving cost-effective storage management. The provided methods may also move subvolumes of data in parallel (relative to serially) and / or may transfer data faster. Additionally, in some examples, the systems and methods described herein can save power and / or better manage network bandwidth utilization.

[0025] The following will refer to Figure 1 to Figure 2 A detailed description of an exemplary system for rebalancing striped information across multiple storage devices is provided. Figures 3 to 9 A detailed description of the corresponding computer-implemented method is provided. Fig.10 A detailed description of the performance of the provided technology relative to conventional technologies is provided.

[0026] Figure 1 1 is a block diagram of an exemplary system 100 for rebalancing striped information across multiple storage devices. As shown in the figure, the exemplary system 100 may include one or more modules 102 for performing one or more tasks. As will be explained in more detail below, the modules 102 may include a first allocation module 104, a partitioning module 106, a second allocation module 108, a third allocation module 110, a distribution module 112, and an "Nth" allocation module 114. Although shown as separate elements, Figure 1 One or more of the modules 102 may represent portions of a single module or an application.

[0027] In certain embodiments, Figure 1 One or more of the modules 102 in the example embodiment may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, and as will be described in more detail below, one or more of the modules 102 may represent modules that are stored and configured to run on one or more computing devices, such as a Figure 2 , or a device (eg, computing device 202 and / or server 206 ) shown in . Figure 1 One or more of the modules 102 in may also represent all or part of one or more special-purpose computers configured to perform one or more tasks.

[0028] like Figure 1 As shown, the exemplary system 100 may also include one or more tangible storage devices, such as storage device 120. Storage device 120 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and / or computer-readable instructions. In one example, storage device 120 may store, load and / or maintain information indicating one or more of physical stripes 120, logical stripes 124, sub-logical stripes 126 and / or sub-volumes 128. In an embodiment, in the absence of sub-logical stripes 126, sub-volume 128 may be part of logical stripe 124. In some examples, storage device 120 may generally represent multiple storage devices. Examples of storage device 120 include, but are not limited to, random access memory (RAM), read-only memory (ROM), flash memory, hard disk drive (HDD), solid-state drive (SSD), optical disk drive, cache, cloud-based storage device, variations or combinations of one or more of the above, and / or any other suitable memory.

[0029] like Figure 1 As shown, the exemplary system 100 may also include one or more physical processors, such as physical processor 130. Physical processor 130 generally represents a hardware-implemented processing unit of any type or form capable of interpreting and / or executing computer-readable instructions. In one example, physical processor 130 may access and / or modify one or more of modules 102 stored in memory 140. In addition or alternatively, physical processor 130 may execute one or more of modules 102 to facilitate rebalancing striped information across multiple storage devices. Examples of physical processor 130 include, but are not limited to, a microprocessor, a microcontroller, a central processing unit (CPU), a field programmable gate array (FPGA) implementing a soft-core processor, an application-specific integrated circuit (ASIC), a portion of one or more of the above, a variant or combination of one or more of the above, or any other suitable physical processor.

[0030] like Figure 1 As shown, the exemplary system 100 may also include one or more memory devices, such as memory 140. Memory 140 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and / or computer-readable instructions. In one example, memory 140 may store, load, and / or maintain one or more of modules 102. Examples of memory 140 include, but are not limited to, random access memory (RAM), read-only memory (ROM), flash memory, hard disk drive (HDD), solid-state drive (SSD), optical drive, cache, variations or combinations of one or more of the foregoing, or any other suitable memory.

[0031] Figure 1 The exemplary system 100 in FIG. 1 may be implemented in various ways. For example, all or part of the exemplary system 100 may represent Figure 2 As shown in FIG. Figure 2 As shown, system 200 may include computing device 202, which communicates with server 206 via network 204. Optional cloud storage device 208 may be coupled to computing device 202 and / or server 206, such as via network 204. In one example, all or part of the functionality of module 102 may be performed by computing device 202, server 206, and / or any other suitable computing system. As will be described in more detail below, when executed by at least one processor of computing device 202 and / or server 206, Figure 1 One or more of the modules 102 in may enable the computing device 202 and / or the server 206 to rebalance striped information across multiple storage devices.

[0032] Computing device 202 generally represents any type or form of computing device capable of reading computer-executable instructions. In some examples, computing device 202 may represent a computer running storage management software. Additional examples of computing device 202 include, but are not limited to, laptop computers, tablet computers, desktop computers, servers, cellular phones, personal digital assistants (PDAs), multimedia players, embedded systems, wearable devices (e.g., smart watches, smart glasses, etc.), smart vehicles, so-called Internet of Things devices (e.g., smart appliances, etc.), game consoles, variations and combinations of one or more of the above, or any other suitable computing system.

[0033] The network 204 generally represents any medium or architecture capable of facilitating communication or data transfer. In one example, the network 204 can facilitate communication between the computing device 202 and the server 206. In this example, the network 204 can facilitate communication or data transfer using wireless and / or wired connections. Examples of the network 204 include, but are not limited to, an intranet, a wide area network (WAN), a local area network (LAN), a personal area network (PAN), the Internet, a power line communication (PLC), a cellular network (e.g., a global system for mobile communications (GSM) network), portions of one or more of the foregoing, variations or combinations of one or more of the foregoing, or any other suitable network.

[0034] Server 206 generally represents any type or form of computing device capable of reading computer-executable instructions. In some examples, server 206 may represent a computer running storage management software. Additional examples of server 206 include, but are not limited to, storage servers, database servers, application servers, and / or web servers, which are configured to run certain software applications and / or provide various storage, database, and / or web services. Figure 2 Although shown as a single entity, server 206 may include and / or represent multiple servers that work and / or operate in conjunction with each other.

[0035] Cloud storage device 208 generally represents any type or form of computing device capable of reading computer-executable instructions and / or storing information. In some examples, cloud storage device 208 may represent a computer running storage management software. Additional examples of cloud storage device 208 include, but are not limited to, one or more storage servers, database servers, application servers, and / or web servers that are configured to run certain software applications and / or provide various storage, database, and / or web services. Figure 2 Although shown as a single entity, cloud storage device 208 may include and / or represent multiple servers that work and / or operate in conjunction with each other.

[0036] In some examples, cloud storage device 208 may store one or more of physical stripes 120 , logical stripes 124 , sub-logical stripes 126 , and / or sub-volumes 128 .

[0037] Many other devices or subsystems can be connected to Figure 1 The system 100 and / or Figure 2 In the system 200. In contrast, Figure 1 and Figure 2 All components and devices shown in the drawings need not be present to practice the embodiments described and / or shown herein. The devices and subsystems mentioned above may also be used in accordance with Figure 2 The systems 100 and 200 may also be interconnected in different ways as shown. Any number of software configurations, firmware configurations, and / or hardware configurations may also be employed. For example, one or more of the exemplary embodiments disclosed herein may be encoded as a computer program (also referred to as computer software, software application, computer-readable instructions, and / or computer control logic) on a computer-readable medium.

[0038] As used herein, the term "computer-readable medium" generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, but are not limited to, transmission-type media, such as carrier waves, and non-transitory media, such as magnetic storage media (e.g., hard drives, tape drives, and floppy disks), optical storage media (e.g., compact disks (CDs), digital video disks (DVDs), BLU-RAY disks), electronic storage media (e.g., solid-state drives and flash memory media), and other distribution systems.

[0039] Figure 3 Flow diagram of an exemplary computer-implemented method 300 for rebalancing striped information across multiple storage devices. Figure 3 The steps shown in may be performed by any suitable computer executable code and / or computing system, including Figure 1 System 100 in Figure 2 In one example, the system 200 and / or any variation or combination of any one or more of the foregoing. Figure 3 Each step shown in may represent an algorithm whose structure includes and / or is represented by multiple sub-steps, examples of which are provided in more detail below. In an embodiment, method 300 may begin by assigning subvolume 128 to multiple storage devices such as storage device 120 and / or cloud storage device 208.

[0040] like Figure 3 As shown, at step 302, one or more of the systems described herein may allocate "Y" contiguous storage spaces on "Y" physical devices (e.g., on multiple storage devices) (e.g., create "Y" physical stripes). The systems described herein may perform step 302 in various ways. In one example, as Figure 2 As part of the computing device 202 and / or the server 206 in the cloud storage device 208, the first allocation module 104 may allocate “Y” contiguous storage spaces on “Y” physical devices (such as the storage device 120 in the computing device 202, the storage device 120 in the server 206, and / or the storage device in the cloud storage device 208). Figure 2 As part of the computing device 202 and / or the server 206 in the cloud storage device 208, the first allocation module 104 may create "Y" physical stripes 122 on multiple storage devices 120 (such as the storage device 120 in the computing device 202, the storage device 120 in the server 206, and / or the storage device in the cloud storage device 208). In some examples, "Y" is an integer.

[0041] In an example, the physical stripe 122 may already exist on the plurality of storage devices 120 prior to initiating the method 300 .

[0042] like Figure 3As shown, at step 304, one or more of the systems described herein may divide "Y" contiguous storage spaces into "N" sub-volumes or blocks. The systems described herein may perform step 304 in a variety of ways. In an example, as Figure 2 As part of the computing device 202 and / or server 206 in FIG. 1 , the partitioning module 106 may partition “Y” consecutive storage spaces into “N” sub-volumes 128. For example, as Figure 2 As part of the computing device 202 and / or server 206 in FIG. 1 , the partition module 106 may partition the storage space in the plurality of storage devices 120 into “N” sub-volumes 128. In some examples, “N” is an integer.

[0043] In an example, partitioning may include calculating "N" as the least common multiple of {2, 3, ... X}, where "X" is the maximum number of logical stripes. In some examples, "X" is an integer.

[0044] As used herein, the term "subvolume" may generally refer to a similarly sized unit of information storage space. Figure 4 Describes an example of a subvolume.

[0045] like Figure 3 As shown, at step 306, one or more of the systems described herein may allocate "N" subvolumes to "X" logical stripes. The systems described herein may perform step 306 in various ways. For example, as Figure 2 As part of the computing device 202 and / or server 206 in the example embodiment, the second allocation module 108 may allocate “N” sub-volumes 128 to “X” logical stripes 124 .

[0046] In an example, method 300 may include marking at least one logical stripe with a logical stripe identifier.

[0047] In some embodiments, the method 300 may include allocating an equal number of sub-volumes 128 to each of the "X" logical stripes.

[0048] As used herein, the term "logical stripe" generally refers to a logical grouping of subvolumes. Figure 4 An example of a logical stripe is described.

[0049] like Figure 3As shown, at step 308, one or more of the systems described herein may assign each of the first "Y" logical stripes to a corresponding physical stripe in each of the "Y" physical stripes. In other words, the lower numbered logical stripes may be substantially completely stored on the corresponding physical stripes, such as one logical stripe being substantially completely stored on each corresponding physical stripe. The systems described herein may perform step 308 in various ways. For example, as Figure 2 As part of the computing device 202 and / or server 206 in the embodiment, the third allocation module 110 may allocate each of the first “Y” logical stripes 124 to a corresponding physical stripe in each of the “Y” physical stripes 122 .

[0050] like Figure 3 As shown, at step 310, one or more of the systems described herein may distribute the remaining sub-volumes to corresponding logical stripes, and in some cases, to corresponding sub-logical stripes. The systems described herein may perform step 310 in various ways. In an example, as Figure 2 As part of the computing device 202 and / or server 206 in FIG. 1 , the distribution module 112 may distribute the remaining sub-volumes 128 to the corresponding logical stripes 124 and, in some cases, to the corresponding sub-logical stripes 126. For example, as Figure 2 For a portion of the computing device 202 and / or server 206 in FIG. 1 , the distribution module 112 may divide the remaining logical stripe 124 by “Y” to form a corresponding sub-logical stripe 126 .

[0051] In an example, method 300 may include marking at least one sub-logical stripe with a sub-logical stripe identifier.

[0052] As used herein, the term "sub-logical stripe" generally refers to a sub-group of sub-volumes in a logical stripe. In an example, the sub-volumes in a sub-logical stripe can be stored across different physical stripes.

[0053] like Figure 3 As shown, at step 312, one or more of the systems described herein may allocate the corresponding subvolume across "Y" physical stripes. The systems described herein may perform step 312 in various ways. In an example, as Figure 2 The “Nth” allocation module 114 may allocate a corresponding subvolume 128 across “Y” physical stripes 122 as part of a computing device 202 and / or server 206 in FIG. Figure 2 As part of computing device 202 and / or server 206 in the “Nth” allocation module 114, for each logical stripe 124, a corresponding sub-logical stripe 126 may be allocated across “Y” physical stripes 122. In an embodiment, “N” is an integer, such as four.

[0054] In an example, method 300 may include checking whether at least one subvolume is overused, and may include moving the overused subvolume to a different physical stripe when the subvolume is identified as overused. In an embodiment, the logical stripe may be identified as an overused stripe when the logical stripe includes an overused subvolume.

[0055] Figure 4 FIG. 4 is a diagram of an exemplary allocation of subvolumes across multiple storage devices 400. Figure 4 In , "Pi" refers to the corresponding physical stripe "i" (e.g., "P0" refers to physical stripe zero). In addition, "Lj" refers to the corresponding logical stripe "j" (e.g., "L0" refers to logical stripe zero). Figure 4 , subvolumes are represented by blocks including corresponding numbers (e.g., physical stripe P0 includes logical stripe L0, which includes subvolume zero). Therefore, as a result of executing method 300, logical stripe L0 is stored on physical stripe P0 and includes subvolumes 0, 6, 12, 18, 24, 30, 36, 42, 48, and 54. In this example, logical stripe L0 does not include any sub-logical stripes. In addition, logical stripe L1 is stored on physical stripe P1 and includes subvolumes 1, 7, 13, 19, 25, 31, 37, 43, 49, and 55. In this example, logical stripe L1 does not include any sub-logical stripes. In addition, logical stripe L0 is partially stored on physical stripe P0 and partially stored on physical stripe P1. Logical stripe L0 includes two sub-logical stripes. The first sub-logical stripe of L2 is stored on physical stripe P0 and includes subvolumes 2, 14, 26, 38, and 50. The second sub-logical stripe of L2 is stored on the physical stripe P1 and includes sub-volumes 8 , 20 , 32 , 44 , and 56 . Figure 4 Also depicted are overused subvolumes 52 and 57-58, depicted by respective triangles in the upper right corner of the respective subvolume blocks.

[0056] In some examples, a method for allocating subvolumes may include: (1) dividing the complete volume space into "N" subvolumes, where N = LCM (y, 3, 4, 5, ... x), "x" = the maximum number of stripes to be supported, and "y" = the minimum number of stripes to be supported; (2) applying a recursive logical striping algorithm to all subvolumes (0 to N-1); (3) marking the logical stripe attribute to each subvolume until the recursion level reaches a logical stripe number equal to or less than the highest available physical stripe; (4) when allocating the previous subvolume of the logical stripe, checking where the last subvolume of the logical stripe was allocated from and selecting the next physical stripe to which the subvolume is to be allocated; and (5) when marking, determining whether there are any overused subvolumes in the stripe and marking the overused subvolumes as overused.

[0057] Figure 5 An exemplary flow chart of an exemplary computer-implemented method for allocating subvolumes across multiple storage devices 500 . Figure 5 The steps shown in may be performed by any suitable computer executable code and / or computing system, including Figure 1 System 100 in Figure 2 In one example, the system 200 and / or any variation or combination of any one or more of the foregoing. Figure 5 Each of the steps shown may represent an algorithm whose structure includes and / or is represented by multiple sub-steps. In an embodiment, method 500 may allocate sub-volume 128 to multiple storage devices, such as storage device 120 and / or cloud storage device 208.

[0058] In some embodiments, new storage devices and / or physical stripes may be added to the initial group of multiple storage devices. When new storage devices and / or physical stripes are added, an optimized re-layout method may be performed to optimize the allocation of storage space. For example, returning Figure 3 , method 300 may include: (1) adding an additional physical stripe (e.g., on an added storage device); (2) transferring Y+1 logical stripes and subvolumes therein to the additional physical stripe; and (3) redistributing subvolumes in Y+2 and any higher logical stripes across the Y+1 physical stripes. In an embodiment, method 300 may include: (1) adding "P" physical stripes, where "P" is an integer; (2) transferring Y+1 to Y+P logical stripes and subvolumes therein to the additional "P" physical stripes; and (3) redistributing subvolumes in Y+P+1 and any higher logical stripes across the Y+P physical stripes. In one example, method 300 may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to the additional physical stripe.

[0059] Figure 6 FIG. 6 is a diagram illustrating an exemplary reallocation of subvolumes across multiple storage devices when a storage device 600 is added. Figure 6 The left side depicts Figure 4 Initial conditions similar to those of . Figure 6 The center portion of depicts adding a new physical stripe P2, moving logical stripe L2 to physical stripe P2, and redistributing subvolumes from logical stripes L3-L5 across physical stripes P0-P2. Figure 6 The right side of FIG. 4 depicts the moving of overused subvolumes 52 and 57-58 to new physical stripe P2.

[0060] Figure 7 FIG. 7 is a diagram illustrating an exemplary reallocation of subvolumes across multiple storage devices when two storage devices 700 are added. Figure 7 The left side depicts Figure 4 Initial conditions similar to those of . Figure 7 The center portion of depicts adding a new physical stripe P2-P3, moving logical stripe L2 to physical stripe P2, moving logical stripe L3 to physical stripe P3, and redistributing subvolumes from logical stripes L4-L5 across physical stripes P0-P3. Figure 7 The right side of FIG. 4 depicts the moving of overused subvolumes 52 and 58 to new physical stripe P2-P3.

[0061] return Figure 3 , in some examples, after the new storage devices and / or physical stripes are added, the storage devices and / or physical stripes may subsequently be removed. When the storage devices and / or physical stripes are subsequently removed, an optimized rearrangement method may be performed to optimize the allocation of storage space. For example, method 300 may include (e.g., subsequently): (1) redistributing subvolumes from "Y+1" logical stripes across the first "Y" physical stripes; (2) redistributing subvolumes in Y+2 and any higher logical stripes across the first "Y" physical stripes; and (3) removing Y+1 physical stripes from multiple storage devices (e.g., from the storage device to be removed). In one embodiment, method 300 may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to a physical stripe that stores the least number of subvolumes.

[0062] In some embodiments, storage devices and / or physical stripes may be removed from an initial group of multiple storage devices. When storage devices and / or physical stripes are removed from an initial group of multiple storage devices, an optimized rearrangement method may be performed to optimize the allocation of storage space. For example, method 300 may include: (1) redistributing subvolumes from "Y" logical stripes across the first "Y-1" physical stripes; (2) redistributing subvolumes in Y+1 and any higher logical stripes across the first "Y-1" physical stripes; and (3) removing "Y" physical stripes from multiple storage devices (e.g., from the storage device to be removed). In one example, method 300 may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, transferring the overused subvolume to a physical stripe that stores the least number of subvolumes.

[0063] Figure 8 is an illustration of an exemplary reallocation of subvolumes across multiple storage devices when one storage device 800 is removed. Figure 8 The left side depicts Figure 7 The initial conditions on the right side are similar to those of . Figure 8The center portion of depicts preparation for removing physical stripe P3 and redistributing subvolumes in logical stripe L3 across physical stripes P0-P2. Subvolumes in logical stripes L4 to L5 are redistributed across physical stripes P0 to P2. Figure 8 The right side of depicts the removal of physical stripe P3.

[0064] Fig. 9 is an illustration of an exemplary reallocation of subvolumes across multiple storage devices when two storage devices 900 are removed. Fig. 9 The left side depicts Figure 7 The initial conditions on the right side are similar to those of . Fig. 9 The center portion of FIG. 4 depicts preparations for removing physical stripe P2-P3 and redistributing subvolumes in logical stripe L2-L3 across physical stripes P0-P1. Subvolumes in logical stripe L4-L5 are redistributed across physical stripes P0-P1. Fig. 9 The right side of depicts the removal of physical stripe P2-P3.

[0065] return Figure 3 In some examples, after the new storage device and / or physical stripe is removed, the new storage device and / or new physical stripe may be subsequently added. When the storage device and / or new storage device and / or new physical stripe is subsequently added, an optimized re-layout method may be performed to optimize the allocation of storage space. For example, method 300 may include (e.g., subsequently) (1) adding an additional physical stripe (e.g., on the added storage device); (2) transferring Y-1 logical stripes and subvolumes therein to the additional physical stripe; and (3) redistributing subvolumes in "Y" and any higher logical stripes across Y physical stripes. In an embodiment, method 300 may include: (1) adding "P" physical stripes, where "P" is an integer; (2) transferring Y+1 to Y+P logical stripes and subvolumes therein to the additional "P" physical stripes; and (3) redistributing subvolumes in Y+P+1 and any higher logical stripes across Y+P physical stripes. In one embodiment, method 300 may include checking whether at least one subvolume is overused, and when an overused subvolume is detected, migrating the overused subvolume to an additional physical stripe.

[0066] Fig.10 Graphs are examples comparing the operational performance of conventional techniques ("existing") with the operational performance of the provided optimization technique 1000. In some examples, for volume sizes of 600GB-1200GB and increases in volume size from 2 physical stripes to 3 or 4 physical stripes, the relayout time can be improved by 94%-95%.

[0067] In some examples, the provided optimization technique with two physical stripes, eight logical stripes, and 840 subvolumes can advantageously only slightly degrade input / output performance, i.e., write re-layout time is reduced by 6.16% and read re-layout time is reduced by 1.86%. In additional embodiments, the provided optimization technique with three physical stripes, eight logical stripes, and 840 subvolumes can advantageously only slightly degrade input / output performance, i.e., write re-layout time is reduced by 6.05% and read re-layout time is reduced by 3.49%.

[0068] As detailed above, the steps outlined herein may provide a method for rebalancing striped information across multiple storage devices. In some examples, the provided systems and methods may be used in conjunction with striped storage devices. By doing so, in some examples, the systems and methods described herein may improve the functionality of a computing device by automatically (re)balancing striped information across multiple storage devices, thereby achieving cost-effective storage management. Additionally, in some examples, the systems and methods described herein may save power by reducing the amount of data to be transferred. The provided methods may also not require the use of temporary storage space, may not require serially transferring substantially all of the data in multiple storage devices, and may not require moving as much data as conventional techniques.

[0069] Although the above disclosure uses specific block diagrams, flow charts, and examples to illustrate various embodiments, each block diagram component, flow chart step, operation, and / or component described and / or illustrated herein may be implemented individually and / or collectively using a variety of hardware, software, or firmware (or any combination thereof) configurations. In addition, any disclosure of components contained within other components should be considered exemplary in nature, as many other architectures may be implemented to achieve the same functionality.

[0070] In some examples, Figure 1 All or a portion of the exemplary system 100 in the embodiment of the present invention may represent a cloud computing environment or a portion of a network-based environment. A cloud computing environment may provide various services and applications via the Internet. These cloud-based services (e.g., software as a service, platform as a service, infrastructure as a service, etc.) may be accessed through a web browser or other remote interface. Various functions described herein may be provided through a remote desktop environment or any other cloud-based computing environment.

[0071] In various embodiments, Figure 1All or a portion of the exemplary system 100 in can facilitate multi-tenancy within a cloud-based computing environment. In other words, the modules described herein can configure a computing system (e.g., a server) to facilitate multi-tenancy of one or more of the functions described herein. For example, one or more of the modules described herein can program a server to allow two or more clients (e.g., customers) to share an application running on the server. A server programmed in this manner can share applications, operating systems, processing systems, and / or storage systems between multiple customers (i.e., tenants). One or more of the modules described herein can also partition the data and / or configuration information of a multi-tenant application for each customer so that one customer cannot access the data and / or configuration information of another customer.

[0072] According to various embodiments, Figure 1 All or a portion of the exemplary system 100 in the embodiment of the present invention may be implemented in a virtual environment. For example, the modules and / or data described herein may reside and / or execute in a virtual machine. As used herein, the term "virtual machine" generally refers to any operating system environment abstracted from computing hardware by a virtual machine manager (e.g., a hypervisor).

[0073] In some examples, Figure 1 All or a portion of the exemplary system 100 in the example embodiment may represent a portion of a mobile computing environment. The mobile computing environment may be implemented by a variety of mobile computing devices, including mobile phones, tablet computers, e-book readers, personal digital assistants, wearable computing devices (e.g., computing devices with head-mounted displays, smart watches, etc.), variations or combinations of one or more of the foregoing, or any other suitable mobile computing devices. In some examples, the mobile computing environment may have one or more notable features, including, for example, reliance on battery power, presenting only one foreground application at any given time, remote management features, touch screen features, location and movement data (e.g., provided by a global positioning system, a gyroscope, an accelerometer, etc.), a restricted platform for limiting modifications to system-level configurations and / or limiting the ability of third-party software to inspect the behavior of other applications, controls for limiting the installation of applications (e.g., only applications from approved application stores), and the like. The various functions described herein may be provided for and / or may interact with the mobile computing environment.

[0074] The process parameters and step sequences described and / or illustrated herein are given by way of example only and may be changed as desired. For example, although the steps illustrated and / or described herein may be shown or discussed in a particular order, the steps need not be performed in the order illustrated or discussed. The various example methods described and / or illustrated herein may also omit one or more of the steps described or illustrated herein, or include additional steps in addition to those disclosed.

[0075] Although various embodiments have been described and / or shown herein in the context of a fully functional computing system, one or more of these exemplary embodiments may be distributed as various forms of program products, regardless of the specific type of computer-readable medium used to actually distribute. Embodiments disclosed herein may also be implemented using modules that perform certain tasks. These modules may include script files, batch files, or other executable files that may be stored on a computer-readable storage medium or in a computing system. In some embodiments, these modules may configure a computing system to perform one or more of the exemplary embodiments disclosed herein.

[0076] The foregoing description is intended to enable others skilled in the art to best utilize the various aspects of the example embodiments disclosed herein. This exemplary description is not intended to be exhaustive or limited to any exact form disclosed. Many modifications and variations may be made without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein should be considered exemplary and non-restrictive in all respects. The scope of the present disclosure should be determined with reference to the appended claims and their equivalents.

[0077] Unless otherwise indicated, the terms "connected to" and "coupled to" (and their derivative forms) used in this specification and claims should be understood to allow both direct and indirect (i.e., via other elements or components) connections. In addition, the terms "a" or "an" used in this specification and claims should be understood to mean "at least one ...". Finally, for ease of use, the terms "including" and "having" (and their derivative forms) used in this specification and claims are interchangeable with the word "comprising" and have the same meaning as the word "comprising".

Claims

1. A computer-implemented method for rebalancing striped information across a plurality of storage devices, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising: Allocating "Y" consecutive physical storage spaces on "Y" physical storage devices among the plurality of storage devices to create "Y" physical stripes; At the computing device, dividing the "Y" continuous physical storage spaces into "N" sub-volumes; Allocating the "N" subvolumes to "X" logical stripes; assigning each logical stripe in the first "Y" logical stripes to a corresponding physical stripe in each physical stripe in the "Y" physical stripes; Dividing the remaining logical stripes by "Y" to form corresponding sub-logical stripes; and The corresponding sub-logical stripes are allocated across the "Y" physical stripes.

2. The computer-implemented method of claim 1 , wherein partitioning comprises calculating “N” as the least common multiple of {2, 3, …X}.

3. The computer-implemented method of claim 1 or 2, further comprising: At least one logical stripe is labeled with a logical stripe identifier.

4. The computer-implemented method of claim 1 or 2, further comprising: At least one sub-logical stripe is marked with a sub-logical stripe identifier.

5. The computer-implemented method of claim 1 or 2, further comprising: Check if at least one subvolume is overcommitted; as well as When a subvolume is identified as being overused, the overused subvolume is moved to a different physical stripe.

6. The computer-implemented method of claim 1 or 2, further comprising: adding "P" physical stripes to the plurality of storage devices, where "P" is an integer; Transferring Y+1 to Y+P logical stripes and subvolumes therein to additional "P" physical stripes; and Redistribute subvolumes in Y+P+1 and any higher numbered logical stripes across Y+P physical stripes.

7. The computer-implemented method of claim 6, further comprising: Check if at least one subvolume is overcommitted; as well as When an overused subvolume is detected, the overused subvolume is transferred to the additional “P” physical stripes.

8. The computer-implemented method of claim 6, further comprising: Redistribute subvolumes from the Y+1 logical stripes across the first "Y" physical stripes; Redistribute subvolumes in Y+2 and any higher numbered logical stripes across the first "Y" physical stripes; and Y+1 physical stripes are removed from the plurality of storage devices.

9. The computer-implemented method of claim 8, further comprising: Check if at least one subvolume is overcommitted; as well as When an overused subvolume is detected, the overused subvolume is transferred to a physical stripe storing a minimum number of subvolumes.

10. The computer-implemented method of claim 1 or 2, further comprising: Redistribute subvolumes from the "Y" logical stripes across the first "Y-1" physical stripes; Redistributing subvolumes in Y+1 and any higher numbered logical stripes across the first "Y-1" physical stripes; and Remove the "Y" physical stripes from the plurality of storage devices.

11. The computer-implemented method of claim 10, further comprising: Check if at least one subvolume is overcommitted; as well as When an overused subvolume is detected, the overused subvolume is transferred to a physical stripe storing a minimum number of subvolumes.

12. The computer-implemented method of claim 10, further comprising: Add "P" physical stripes, where "P" is an integer; Transferring Y+1 to Y+P logical stripes and subvolumes therein to additional "P" physical stripes; and Redistribute subvolumes in Y+P+1 and any higher numbered logical stripes across Y+P physical stripes.

13. The computer-implemented method of claim 12, further comprising: Check if at least one subvolume is overcommitted; as well as When an overused subvolume is detected, the overused subvolume is transferred to the additional “P” physical stripes.

14. A system for rebalancing striped information across a plurality of storage devices, the system comprising: a first allocation module stored in the memory, the first allocation module allocating "Y" consecutive physical storage spaces on "Y" physical storage devices among the plurality of storage devices to create "Y" physical stripes; a partitioning module stored in the memory, the partitioning module partitioning the "Y" continuous physical storage spaces into "N" sub-volumes; a second allocation module stored in the memory, the second allocation module allocating the "N" subvolumes to "X" logical stripes; a third allocation module stored in the memory, the third allocation module allocating each logical stripe in the first "Y" logical stripes to a corresponding physical stripe in each physical stripe in the "Y" physical stripes; wherein the distribution module divides the remaining logical stripes by "Y" to form corresponding sub-logical stripes; an “Nth” allocation module stored in the memory, the “Nth” allocation module allocating the corresponding sub-logical stripes across the “Y” physical stripes; and At least one physical processor, the at least one physical processor executes the first allocation module, the partitioning module, the second allocation module, the third allocation module, the distribution module and the “Nth” allocation module.

15. The system of claim 14, further comprising: a checking module stored in the memory, the checking module checking whether at least one subvolume is overused; as well as A move module stored in the memory moves the overused subvolume to a different physical stripe when the subvolume is identified as overused.

16. The system according to claim 14 or 15, further comprising: an add module stored in the memory, the add module adding "P" physical stripes to the plurality of storage devices, where "P" is an integer; a transfer module stored in the memory, the transfer module transferring Y+1 to Y+P logical stripes and subvolumes therein to additional "P" physical stripes; as well as A redistribution module stored in the memory, the redistribution module redistributes subvolumes in Y+P+1 and any higher numbered logical stripes across Y+P physical stripes.

17. The system according to claim 14 or 15, further comprising: a first redistribution module stored in the memory, the first redistribution module redistributing subvolumes from the "Y" logical stripes across the first "Y-1" physical stripes; a second redistribution module stored in the memory, the second redistribution module redistributing subvolumes in Y+1 and any higher numbered logical stripes across the first "Y-1" physical stripes; as well as A removal module stored in the memory, the removal module removes the "Y" physical stripes from the plurality of storage devices.

18. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to: Allocate "Y" consecutive physical storage spaces on "Y" physical storage devices among the plurality of storage devices to create "Y" physical stripes; At the computing device, dividing the "Y" continuous physical storage spaces into "N" sub-volumes; Allocating the "N" subvolumes to "X" logical stripes; assigning each logical stripe in the first "Y" logical stripes to a corresponding physical stripe in each physical stripe in the "Y" physical stripes; Dividing the remaining logical stripes by "Y" to form corresponding sub-logical stripes; and The corresponding sub-logical stripes are allocated across the "Y" physical stripes.

19. The non-transitory computer readable medium of claim 18, further comprising computer executable instructions that cause the computing device to: adding "P" physical stripes to the plurality of storage devices, where "P" is an integer; Transferring Y+1 to Y+P logical stripes and subvolumes therein to additional "P" physical stripes; and Redistribute subvolumes in Y+P+1 and any higher numbered logical stripes across Y+P physical stripes.

20. The non-transitory computer readable medium of claim 18 or 19, further comprising computer executable instructions that cause the computing device to: Redistribute subvolumes from the "Y" logical stripes across the first "Y-1" physical stripes; Redistributing subvolumes in Y+1 and any higher numbered logical stripes across the first "Y-1" physical stripes; and Remove the "Y" physical stripes from the plurality of storage devices.

Citation Information

Patent Citations

  • Control method based on multi-passage flash memory apparatus logic strip

    CN101101570A

  • Storage system and method therefor

    CN104636080A