Dynamic reconfiguration of storage system

A storage system is dynamically reconfigured. The storage system includes storage pools that each include one or more storage disks. Storage pools to be expanded are determined as target storage pools. For the target storage pools, source storage disks to be moved into the target storage pools are determined from other storage pools than the target storage pools in the storage system. The source storage disks are migrated to the respective target storage pools.

RELATED APPLICATIONS

The present patent application claims priority under 35 USC 119 to the previously filed Chinese patent application, filed on Mar. 29, 2012, and assigned CN patent application number 201210088217.3.

BACKGROUND

Cloud storage is a cloud computing technology focused on data storage and management. By using cluster applications, grid techniques, or distributed file systems and other functions, cloud storage aggregates a large number of various different kinds of storage devices in a network through application software to operate them in a cooperative manner, and collectively provide data storage and service access functions. Cloud storage enables end users to be provided with more flexible and efficient storage resources.

SUMMARY

A method example method is for dynamically reconfiguring a storage system. The storage system includes storage pools. Each of the storage pools includes one or more storage disks. The method includes determining, among the plurality of storage pools, storage pools to be expanded as target storage pools. The method includes determining, for the target storage pools, source storage disks to be moved into the target storage pools from other storage pools than the target storage pools in the storage system. The method includes migrating the source storage disks to the respective target storage pools.

An example apparatus is for dynamically reconfiguring a storage system. The storage system includes storage pools. Each storage pool includes one or more storage disks. The apparatus includes a target storage pool determining unit, configured to determine, among the plurality of storage pools, storage pools to be expanded as target storage pools. The apparatus includes a source storage disk determining unit, configured to, for the target storage pools determined by the target storage pool determining unit, determine source storage disks to be moved into the target storage pools from other storage pools than the target storage pools. The apparatus includes a source storage disk migrating unit, configured to migrate the source storage disks determined by the source storage disk determining unit to the respective target storage pools.

DETAILED DESCRIPTION

The following detailed description of exemplary embodiments of the disclosure refers to the accompanying drawings that form a part of the description. The drawings illustrate specific exemplary embodiments in which the disclosure may be practiced. The detailed description, including the drawings, describes these embodiments in sufficient detail to enable those skilled in the art to practice the disclosure. Those skilled in the art may further utilize other embodiments of the disclosure, and make logical, mechanical, and other changes without departing from the spirit or scope of the disclosure. Readers of the following detailed description should, therefore, not interpret the description in a limiting sense, and only the appended claims define the scope of the embodiment of the disclosure. In the detailed description, like numbered elements in the figures are either similar elements or perform an equivalent function. Elements that have been discussed previously will not necessarily be discussed in later figures if the function is equivalent.

As described in the background section, cloud storage is a cloud computing technology. One technique used in cloud storage is transparent allocation/reclamation of dynamic resources (e.g., volumes) to/from a storage pool. Currently, most storage venders can provide storage pools based on storage virtualization products. However, the functions of these current storage products are constrained by storage pool capacity. If the resources of a storage pool are close to full utilization, a volume in the storage pool is unable to be expanded or a thin-provisioned volume drops offline, even though there is enough space in other storage pools belonging to the same storage cloud.

For instance, as shown inFIG. 13, assume that there are two SVC storage pools in a storage cloud, pool A with a capacity of 100 gigabytes (GB), and pool B with a capacity of 50 GB. Pool A includes two volumes, a 50 GB Fat volume and a 60 GB thin-provisioned volume, wherein a 20 GB storage space has been actually used in the thin-provisioned volume. Pool A is almost fully used (as shown inFIG. 13, 70 GB used), whereas pool B is not used at all. Although a user of the storage cloud may observe at least a 30 GB free space in the whole storage system, when he or she attempts to expand the Fat volume of pool A to above 80 GB, a failure response will be received because the current storage cloud does not support automatic capacity mobility across storage pools. Alternatively, the Fat volume will be expanded to just 80 GB, but the thin-provisioned volume will drop offline due to no more space for accommodating newly added data, while the space of pool B is still untouched.

To address the above shortcomings, conventionally users have to manually remove some volumes from other storage pools and add them into a storage pool required to be expanded, or manually migrate a volume to be expanded into other available storage pool. However, these approaches have poor efficiency and high cost, because users cannot recognize how many and what volumes in which storage pool should be moved, nor which particular storage pool a volume should be moved to. Inaccurate volume movement/migration results in a performance penalty for both target and source storage pools. Disclosed herein, by comparison, are techniques that are capable of monitoring the capacity utilization of a storage system, and automatically and accurately determine a storage resource mobility policy.

The characteristics include the following. On-demand self-service means a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider. Broad network access means capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource pooling means the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter).

Rapid elasticity means capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured service means cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource utilization can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.

A public cloud is cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services. A hybrid cloud is a cloud infrastructure that is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds). A cloud computing environment is thus service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure of a network of interconnected nodes.

Referring now toFIG. 1, a schematic of an example of a cloud computing node is shown. Cloud computing node10is only one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the techniques described herein. The cloud computing node10is capable of being implemented and/or performing any of the functionality described above.

InFIG. 1, computer system/server12in cloud computing node10is shown in the form of a general-purpose computing device. The components of computer system/server12may include, but are not limited to, one or more processors or processing units16, a system memory28, and a bus18that couples various system components including system memory28to processor16. Bus18represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.

Computer system/server12typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server12, and it includes both volatile and non-volatile media, removable and non-removable media. System memory28can include computer system readable media in the form of volatile memory, such as random access memory (RAM)30and/or cache memory32.

Referring now toFIG. 3, an example set of functional abstraction layers provided by cloud computing environment50(FIG. 2) is shown. It should be understood in advance that the components, layers, and functions shown inFIG. 3are intended to be illustrative only and not limiting. As depicted, the following layers and corresponding functions are provided.

Virtualization layer62provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients. In one example, management layer64may provide the following functions. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may include or be application software licenses.

Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.

As described above, to automatically and accurately reallocate storage resources in a storage system, for example, a storage cloud, method and device monitor capacity utilization of each storage pool in the storage system, and determine target storage pools to be expanded according to the growth trend of their capacity utilization. They develop a storage resource mobility policy for the target storage pools, and execute the mobility policy to move source storage disks from source storage pools to the target storage pools. These functions may be implemented within the workloads layer66ofFIG. 3.

Different examples are described in detail with reference toFIGS. 4 through 12.FIG. 4schematically shows an example storage system4000. Storage system4000is, for example, a cloud storage system. As shown inFIG. 4, storage system4000includes multiple storage pools, such as a storage pool0to a storage pool N, where N is an integer equal to or larger than 1. Each storage pool may include one or more storage disks. For example, storage pool0may include a disk00, a disk01, . . . , a disk0M0, wherein M0may be 0 (i.e., storage pool only includes one storage disk) or may be an integer equal to or larger than 1. Different storage pools may include different numbers of storage disks. For example, the number of storage disks contained in storage pool1(M1+1) may be different from the number of storage disks contained in storage pool2(M2+1). Herein, storage disks are typically RAID-based logical volumes provided to the storage system on storage devices at a lower level.

Various storage disks in different storage pools may have different nominal capacities. For example, the nominal capacity of disk00in storage pool0may be 100 GB, while disk01may have a nominal capacity of 150 GB. Before reallocating storage resources, the sum of the nominal capacity of each storage disk in a storage pool is referred to as original storage pool capacity Original_Pool_Capacity of the storage pool.

Storage system4000may further include unused storage disks U0to Uk which have not been allocated to any storage pools. Note that storage system4000shown inFIG. 4is merely one example of mass storage systems applicable to the techniques disclosed herein. Other storage systems having different arrangements from that of storage system4000may be utilized in practice.

FIG. 5shows an example method500for dynamically configuring a storage system. What is first determined is which storage pools need to be expanded among multiple storage pools (for example, storage pools0to N shown inFIG. 4) of the storage system (for example, storage system4000shown inFIG. 4) (step501). For the convenience of description, a storage pool triggering capacity expansion in a storage system is referred to herein as a target storage pool while a storage pool from which some storage disks are moved out to a target storage pool is referred to herein as a source storage pool, and a storage disk that is moved to a target storage pool is referred to herein as a source storage disk.

FIG. 6shows an example process600of a specific implementation of step501, where a trend prediction of storage resource utilization is employed for the accurate reallocation of storage resources. At step601, capacity utilization (e.g., used capacity Space_Used) of each storage pool in storage system4000is monitored (for example, periodically or in real time), and is recorded in a history data table of the respective storage pool. For each storage pool, based on the collected history data, a function of used capacity with time, i.e., a capacity utilization function is established (step603). As one example, a library of trend prediction models can be established in advance, which may include multiple trend prediction models, such as linear function models, power function models, logarithmic function models, polynomial function models, and so on. According to the collected history data, a trend prediction model optimally fitting the history data is then selected from the library of trend prediction models. A capacity utilization function Capacity_Used (t) is established for the storage pool using the trend prediction model selected for the respective storage pool and the collected history data.

Next, at step605, a time until the exhaustion of the original storage pool capacity from a current point of time, i.e., a capacity exhaustion time T_End is calculated using the function Capacity_Used (t). Furthermore, a remaining capacity Space_Remained of the storage pool is calculated using the capacity utilization of the storage pool obtained at step601. For example, a remaining capacity Space_Remained can be calculated by subtracting a used capacity from the original storage pool capacity of the storage pool.

Next, at step607, capacity exhaustion time T_End is compared with a preset capacity exhaustion time threshold T_Set predetermined for the storage pool, while remaining capacity Space_Remained is compared with a preset remained-capacity threshold Space_Set predetermined for the storage pool. If the result of the comparison at step607shows T_End≦T_Set or Space_Remained≦Space_Set, the storage pool is determined as a target storage pool, indicating that the storage pool triggers a capacity expansion operation (step609).

The preset capacity exhaustion time threshold and the preset remained-capacity threshold can be set in advance by users as needed. For different storage pools, it is also possible to set different preset capacity exhaustion time thresholds and different preset remained-capacity thresholds. For example, as to a storage pool, the preset capacity exhaustion time threshold can be set to 7 days, and the preset remained-capacity threshold can be set to 1 TB. In other words, a capacity expansion operation will be triggered when the storage pool would have its capacity used up within 7 days, or has a remaining capacity of less than 1 TB. It is noted that although the condition of triggering a capacity expansion operation have been described in terms of both of capacity exhaustion time and remaining capacity in the example ofFIG. 6, whether a certain storage pool is a target storage pool can be determined based on comparison between any one of capacity exhaustion time and remaining capacity and a corresponding threshold.

Steps601to609are executed for all storage pools in storage system4000, so that a list identifying all target storage pools requiring capacity expansion is determined, i.e., a list of target storage pools. Process600may further include a step of sorting the list of target storage pools according to their priorities. First, a priority factor p_factor of a target storage pool is calculated (step611). According to the following equation (1), the capacity exhaustion time and the remained-capacity of the storage pool are normalized with the preset capacity exhaustion time threshold and the preset remained-capacity threshold:
std(T_End)=T_End/T_Set
std(Space_Remained)=Space_Remained/Space_Set  (1)

A priority factor p_factor of the target storage pool is calculated using the following equation (2):

p_factor=std⁡(T_End)2+std⁡(Space_Remained)2=(T_End⁢/⁢T_Set)2+(Space_Remained⁢/⁢Space_Set)2(2)
It is noted that the smaller the priority factor p_factor is, the more urgent capacity expansion the storage pool requires. Therefore, a target storage pool can be inserted at an appropriate location in the list of target storage pools according to its priority factor p_factor (step613). An example of a list of target storage pools is shown in Table 1 below.

TABLE 1Example of a list of target storage pools sorted by priority factorsT_EndT_SetSpace_RemainedSpace_SetPriorityStorage pool(day)(day)(GB)(GB)p_factor1Pool 5374875001.062Pool 8575135001.253pool 2251601001.334pool 13673501.545pool 31075586001.706pool 0776204001.84

It is noted that although the example above has been presented in relation to determining the execution order of capacity expansion of target storage pools in term of priory factors calculated based on equations (1) and (2), the execution order also can be determined in other manners. For example, instead of capacity exhaustion time and remaining capacity, the priory factor can be calculated based on the importance of data stored in the storage pool. As another example, when calculating the priory factor based on capacity exhaustion time and remaining capacity, capacity exhaustion time and remaining capacity can be normalized in other manners.

Referring back toFIG. 5, after determining all target storage pools to be expanded in capacity at step501, method500proceeds to step502, in which for each of the determined storage pools, a storage resource mobility policy is developed for the target storage pool. That is, what is achieved is calculating how much capacity the target storage pool needs to be expanded, and determining which storage disk or disks in the storage system should be moved to the target storage pool.FIG. 7shows an example source storage disk determination process700. Source storage disk determination process700begins from the calculation of an expected expanding-capacity of a target storage pool (step701).FIG. 8shows an example method of a specific implementation800of step701, in which an expected expanding-capacity of a target storage pool is determined based on both of the capacity exhaustion time and the remaining capacity of the target storage pool.

In one implementation, a preset post-expansion capacity exhaustion time threshold T_threshold and a preset post-expansion remaining capacity threshold Space_threshold of a target storage pool are set in advance by users. Preset threshold of post-expansion capacity exhaustion time threshold T_threshold represents the shortest period of time a target storage pool can be used after its capacity expansion, and preset post-expansion remaining capacity threshold Space_threshold represents the lowest available capacity of the target storage pool after capacity expansion. The two conditions in following equation (3) should thus be satisfied simultaneously after capacity expansion:
T_end≧T_threshold
Space_Remained≧Space_threshold  (3)
As one example, T_threshold and Space_threshold can be set to 2 times of T_Set and Space_Set respectively, for example, T_threshold can be set to 14 days and Space_threshold can be set to 2 TB.

At step801, a first expanding-capacity Cap1is calculated based on the capacity exhaustion time of a target storage pool. In one implementation, the capacity utilization function Capacity_used (t) established at step603can be used to calculate a total capacity Capacity_T_Expanded of the target storage pool when the capacity exhaustion time T_end is equal to the preset post-expansion capacity exhaustion time threshold T_threshold. That is, as shown inFIG. 9A, the expected total capacity of a target storage pool after expansion capacity_T_Expanded=Capacity_Used (t0+T_threshold), wherein t0represents a current time. As shown in the following equation (4) and inFIG. 9B, the first expanding-capacity Cap1is calculated through subtracting the original storage pool capacity of the target storage device from the expected total capacity after expansion capacity_T_Expanded:
Cap1=Capacity—T_Expanded−Original_Pool_Capacity  (4)

Next, at step803, a second expanding-capacity Cap2of the target storage pool is calculated based on the remaining capacity of the target storage pool. In one implementation, an expected total capacity after expansion of the target storage device Capacity_Space_Expanded is determined through adding the preset post-expansion remaining capacity threshold Space_threshold to the used capacity Space_used. As shown in the following equation (5) and inFIG. 9C, a second expanding-capacity Cap2is calculated through subtracting the original storage pool capacity Original_Pool_Capacity of the target storage device from the expected total capacity after expansion Capacity_Space_Expanded:
Cap2=Capacity_Space_Expanded−Original_Pool_Capacity  (5)

Finally, at step805, a larger one of the first expanding-capacity Cap1and the second expanding-capacity Cap2is taken as the expected expanding-capacity of the target storage pool Claimed_Space=Max(Cap1, Cap2). After determining the expected expanding-capacity of a target storage pool shown in the process800inFIG. 8, the flow returns toFIG. 7to proceed with determining which storage disk or disks satisfy the expected expanding-capacity and are suitable for migrating to the target storage pool. As shown inFIG. 7, in order to protect the performance and reliability of a target storage pool from obvious variation due to migration of source storage disks, a characteristic-match degree of the target storage pool and a source storage disk will be considered in the selection of the source storage disk.

Particularly, at step703, a storage characteristic value MD(target_pool) of a target storage pool is calculated. The storage characteristic value of a target storage pool is defined as a weighted sum of storage characteristic values MU(Mk) of all storage disks contained in the target storage pool, i.e.,

Σk⁢dk×MU⁡(Mk),
wherein, dkis the storage characteristic weight of the respective storage disk in the storage pool, which is relevant to the storage characteristic value MU(Mk) of the storage disk and its performance in the storage pool, and

Σk⁢dk=1.
The storage characteristic value of each storage disk is based on, for example, any one or more of the RAID class of the storage disk, RAID size, Storage Area Network (SAN) redundancy, driving type, interface, Revolution(s) Per Minute (RPM), and cache size.

In one implementation, storage characteristic values are calculated for all storage disks in storage4000. Then, the storage characteristic value of a target storage pool MD (target_pool) is calculated as described above based in the storage characteristic values of storage disks contained in the target storage pool. Thereafter, storage disks of storage system4000having storage characteristic values matched with the storage characteristic value of the target storage pool are selected as candidate source storage disks (step705).

FIG. 10shows an example process1000for establishing a list of candidate source storage disks. Process1000begins at step1010, in which the storage characteristic value of each storage disk that does not contained in any target storage pool in storage system4000is obtained, excluding storage disks contained in any target storage pool. Next, based on the obtained storage characteristic value, nominal capacity, and used capacity of each storage disk, and the storage characteristic value of a target storage pool, a match degree Match_Degree between a storage disk and the target storage pool is calculated (step1015).

In one implementation, the match degree Match_Degree is defined as:

Match_Degree=dTC⁡(TC-CSCS)2+dUC⁡(UCCS)2+dUD⁡(UDMD)22(6)
In this equation, TC represents the nominal capacity of the storage disk, and CS represents the expected expanding capacity of the target storage pool Claimed_Space (per step701ofFIG. 7and step805ofFIG. 8). UC represents a used capacity of the storage disk, and UD represents the absolute value of the characteristic difference between the storage disk and the target storage pool, i.e., the absolute value of (MD(target_pool)−MU(Mj)). MD represents the storage characteristic value MD(target_pool) of the target storage pool, dTC, dUCand dUDrepresent weights of respective items in the above equation, and ΣdTC+dUC+dUD=1.

The first item of equation (6) is relevant to the nominal capacity of the storage disk, which refers to the degree of the storage disk to satisfy the expected expanding capacity of a target storage pool—i.e., whether to move one source storage disk or multiple source storage disks to meet the capacity expansion requirement of the target storage pool. The second item of equation (6) is relevant to the capacity that has been used in the storage disk, which determines the overhead of cleaning data stored on the storage disk before its migration to the target storage pool; the smaller value of this item, the better. The third item of equation (6) is relevant to the characteristic difference between the storage disk and the target storage pool, which determines an optimal match thereof in terms of performance, redundancy, and other natural characteristics. The values of dTC, dUCand dUDcan be adjusted by users as needed to set the relationship of the above three items.

It is noted that although equation (6) calculates a match degree with respect to three aspects of nominal capacity, used capacity, and character difference to a target storage pool of a storage disk, just one or two aspects can be considered in other implementations. For instance, any one or two of dTC, dUCand dUDmay be set to zero. Alternatively or additionally, other performance aspects of a storage disk and a target storage pool can be used.

Next, process1000proceeds to step1020, in which storage disks having match degrees calculated according to equation (6) and meeting a predetermined condition are selected as candidate source storage disks. For example, the predetermined condition may be to have a match degree higher than a predetermined threshold. Finally, in the case of multiple candidate source storage disks, they are sorted in a list of candidate source storage disks (step1030). Note that steps1020and1030are not performed in some implementations. Furthermore, in some implementations, all storage disks that are not contained in any target storage pool can be determined as candidate source storage disks. In some scenarios, there is only one candidate source storage disk, and no sorting operation is needed. After determining the list of candidate source storage disks, the flow returns toFIG. 7and proceeds to step707, in which source storage disks that will be ultimately migrated to the target storage pool are determined from the list of candidate source storage disks.

FIG. 11shows an example process1100of selecting source storage disks. At step1110, a candidate source storage disk having the highest match degree is selected from the list of candidate source storage disks. Then, it is determined whether the candidate source storage disk belongs to any storage pool in storage system4000(step1120). If it is determined that the candidate source storage disk does not belong to any storage pool, such as the case of any one of unused storage disks U0to Ukas shown inFIG. 4, the candidate source storage disk is directly determined as a source storage disk to be migrated to the target storage pool, and is removed from the list of candidate source storage disks (step1150).

If it is determined that the candidate source storage disk belongs to a certain storage pool, the flow proceeds to step1130, in which it is determined whether migrating the candidate source storage disk from the source storage pool it belongs to may trigger a capacity expansion operation of the source storage pool. For example, this process can be achieved reference to process600ofFIG. 6. In the case of determining that migrating the candidate source storage disk may lead to the need of capacity expansion for the source storage pool, this indicates that the candidate source storage disk in question is not suitable as a source storage disk, and thus is removed from the list of candidate source storage disks (step1140). The flow returns to step1110, steps1120to1160are carried out for a next candidate source storage disk having the highest match degree in the list of candidate source storage disks.

If it is determined at step1130that migrating the candidate source storage disk may not trigger capacity expansion operation of the source storage pool, the candidate source storage disk is set to be a source storage disk which will be moved to the target storage pool, and is removed from list of candidate source storage disks (step1150). Next, at step1160, it is determined whether the nominal capacity of the candidate source storage disk can meet the expected expanding capacity of the target storage pool (per step701ofFIG. 7and step805ofFIG. 8). If it is determined that the candidate source storage disk can meet the expected expanding capacity of the target storage pool, source storage disk selection process1100ends. If it is determined at step1160that moving the candidate source storage disk in can not yet meet the expected expanding capacity of the target storage pool, the flow returns to step1110to continue with the selection of other suitable source storage disks so that the expected expanding capacity of the target storage pool can be met. In other words, there is possibly more than one source storage disk determined for a target storage pool.

Below, processes1000and1100ofFIG. 10andFIG. 11are described in detail with reference to the following example. Assume that there are totally 11 storage disks MDisk0 to MDisk10 in a storage system, as shown in Table 2, in which 9 storage disks MDisk0 to MDisk8 are allocated to 5 storage pools Pool0 to Pool4 respectively, and storage disks MDisk9 and MDisk10 are unused. The nominal capacity of each storage disk is listed in the third column of Table 2.

TABLE 2Property and storage characteristic values of storage disksStorageStorageStorage poolNominal capacitycharacteristicdiskit belongs to(GB)value MUMDisk0Pool0100100MDisk1Pool115095MDisk2Pool115085MDisk3Pool220090MDisk4Pool2100100MDisk5Pool320070MDisk6Pool420050MDisk7Pool420060MDisk8Pool420090MDisk9Unused15070MDisk10Unused30085
Per step1010ofFIG. 10, a storage characteristic value MU of each storage disk can be calculated based on the RAID class, RAID size, SAN redundancy, driving type, interface, RPM, and cache size of the storage disk, as shown in the fourth column of Table 2.

Assume further that capacity expansion has been triggered by Pool0, Pool1, and Pool4 (perFIG. 6). According to equation (2) a priority factor p_factor is calculated for each of target storage pools Pool0, Pool1, and Pool4, and then Pool0, Pool1, and Pool4 are sorted by the priority factors (see step613ofFIG. 6). As shown in Table 3, suppose Pool1 is prior to Pool0, which, in turn, is prior to Pool4. Furthermore, per step805ofFIG. 8and step703ofFIG. 7, an expected expanding capacity and a storage characteristic value are calculated for each of target storage pools Pool0, Pool1, and Pool4.

TABLE 27Expected expanding capacity and storage characteristicvalues of target storage poolsOriginalStoragestorageExpectedcharac-TargetStoragepoolexpandingteristicstoragediskscapacitycapacityvaluePrioritypoolcontained(GB)(GB)MD1Pool1MDisk130010090MDisk22Pool0MDisk0100501003Pool4MDisk660020070MDisk7MDisk8

Capacity expansion is carried out according to the order indicated by the priority factors. A description is provided using Pool1 as an example. Since Pool0 and Pool4 also wait for capacity expansion, storage disks MDisk0, MDisk6 to MDisk8 contained therein are excluded from serving as candidate source storage disks of Pool1. Match degrees between storage disks MDisk3 to MDisk5 of Pool2, MDisk9 and MDisk10 that are unused in the storage system, and target storage pool Pool1 are calculated through equation (6) (per step705ofFIG. 7and step1015ofFIG. 10), as shown in Table 4.

TABLE 4List of candidate source storage disks sorted by match degreeCharac-teristicdeferenceTargetSourceNominalUsedwith targetStoragestoragestoragecapacitycapacitystorageMatchdiskpoolpool(GB)(GB)pooldegreeMDisk4Pool1Pool210010100.115MDisk9Pool1Unused1500200.387MDisk3Pool1Pool22005000.652MDisk5Pool1Pool220050200.689MDisk10Pool1Unused300051.266

Next, source storage disks that will be moved to target storage pool Pool1 are determined according to process1100shown inFIG. 11. First of all, a storage disk having the highest match degree is selected from the list of candidate source storage disks, in this example, MDisk4 of Pool2. If MDisk4 is not contained in any storage pool, it is directly moved to target storage pool Pool1. In this example, because MDisk4 has been allocated to Pool2, process1100goes to step1130.

At step1130, it is determined whether migrating MDisk4 from Pool2 may trigger capacity expansion through process600shown inFIG. 6. If it is determined that migrating MDisk4 from Pool2 may lead to capacity expansion of Pool2, MDisk4 is removed from the list of candidate source storage disks of Table 4, and a next storage disk having the highest match degree is selected, i.e., MDisk9 to analyze. In this example, it is assumed that migrating MDisk4 will not cause Pool2 to trigger capacity expansion. Then, it is determined whether the nominal capacity of MDisk4 can meet the expected expanding capacity of Pool1. As shown in Table 3, the expected expanding capacity of Pool1 is 100 GB, and the nominal capacity of MDisk4 is 100 GB as shown in Table 4. That is, MDisk4 can meet the expected expanding capacity of Pool1, and thus MDisk4 is determined as the source storage disk of Pool1.

According to the order indicated by the priority factor, process1100ofFIG. 11can be carried out for each target storage pool to determine a storage resource migration policy of the entire storage system4000, including, for example, a migration table of a priority, target storage pools, source storage pools, and source storage disks. Thereafter, the flow returns toFIG. 5. Method500proceeds to step503, in which the source storage disks will be migrated from source storage pools to respective target storage pools according to the priority indicated in the mitigation table, and the resource reallocation of whole storage system4000is finished.

FIG. 12shows an example apparatus1200for dynamic reconfiguration. The function modules of apparatus1200for dynamical reconfiguration can be implemented in hardware, software, or a combination of hardware and software. Function modules shown inFIG. 12may be combined or subdivided into sub-modules. Thus, the description herein supports any possible combination, sub-dividing, or further definition of function modules described herein.

Apparatus1200for dynamical reconfiguration can dynamically reconfigure storage resources in a storage system. The storage system may include multiple storage pools, each of which includes one or more storage disks. Apparatus1200for dynamic reconfiguration includes target storage pool determining unit1210, source storage disk determining unit1250, and source storage disk migrating unit1290.

Target storage pool determining unit1210is configured to determine storage pools to be expanded among the storage pools as target storage pools. Source storage disk determining unit1250is configured to, for each target storage pool, determine source storage disks to be moved into the target storage pool. Source storage disk migrating unit1290is configured to migrate source storage disks to respective target storage pools.

In one implementation, target storage pool determining unit1210may include target storage pool determination executive unit1215. As one example, if the capacity exhaustion time of a storage pool is less than a preset capacity exhaustion time threshold, it is determined as a target storage pool by target storage pool determination executive unit1215. As another example, if the remaining capacity of a storage pool is less than a preset remained-capacity threshold, it is determined as a target storage pool by target storage pool determination executive unit1215. As still another example, if the capacity exhaustion time of a storage pool is less than a preset capacity exhaustion time threshold, or its remaining capacity is less than a preset remained-capacity threshold, it is determined as a target storage pool by target storage pool determination executive unit1215. Different storage pools may have different preset capacity exhaustion time thresholds and preset remained-capacity thresholds.

In one implementation, target storage pool determining unit1210may further include capacity data collecting unit1211, capacity utilization function establishing unit1212and capacity exhaustion time calculating unit1213. For each storage pool of the storage pools, capacity data collecting unit1211may collect historical capacity data. Based on the historical capacity data collected by capacity data collecting unit1211, capacity utilization function establishing unit1212may establish a capacity utilization function. In one implementation, the capacity utilization function may be one of a linear function, a power function, a logarithmic function and a polynomial function. Using the capacity utilization function established by capacity utilization function establishing unit1212, capacity exhaustion time calculating unit1213may calculate the capacity exhaustion time of the storage pool.

In one implementation, target storage pool determining unit1210may further include priority factor calculating unit1216and target storage pool sorting unit1217. For each one of target storage pools, priority factor calculating unit1216may calculate its priority factor. In one implementation, the priority factor can be calculated as a sum of squares of a normalized capacity exhaustion time and a normalized remaining capacity. The normalized capacity exhaustion time is a ratio of a capacity exhaustion time to a preset capacity exhaustion time threshold, and the normalized remaining capacity is a ratio of a remaining capacity to a preset remained-capacity threshold. Target storage pool sorting unit1217may sort all target storage pools determined by target storage pool determination executive unit1215according to priority factors calculated by priority factor calculating unit1216. The determination of source storage disks can be executed in an order determined according to priority factors calculated by priority factor calculating unit1216.

In one implementation, source storage disk determining unit1250may include expected expanding capacity determining unit1251, target storage pool characteristic value calculating unit1261, candidate source storage disk selecting unit1271, and source storage disk selecting unit1281. Expected expanding capacity determining unit1251may calculate the expected expanding capacity of a target storage pool determined by target storage pool determining unit1210. In one implementation, expected expanding capacity determining unit1251may include the following.

First expanding capacity calculating unit1252is configured to calculate a first expanding capacity of a target storage pool based on the capacity exhaustion time of the target storage pool. Second expanding capacity calculating unit1253is configured to calculate a second expanding capacity of the target storage pool based on the remaining capacity of the target storage pool. Expected expanding capacity comparing unit1254is configured to compare the first expanding capacity calculated by first expanding capacity calculating unit1252and the second expanding capacity calculated by second expanding capacity calculating unit1253, and to determine the larger one of them as the expected expanding capacity of the target storage pool.

In one implementation, first expanding capacity calculating unit1252may further include the following. A first capacity calculating sub-unit is configured to set a preset post-expansion capacity exhaustion time threshold for a target storage pool. A second capacity calculating sub-unit is configured to determine the total capacity of the target storage pool when the capacity exhaustion time of the target storage pool is equal to the preset post-expansion capacity exhaustion time threshold of the target storage pool. A third capacity calculating sub-unit is configured to calculate the first expanding capacity of the target storage pool through subtracting the original storage pool capacity of the target storage pool from the determined total capacity.

In one implementation, second expanding capacity calculating unit1253may further include the following. A fourth capacity calculating sub-unit is configured to set a preset post-expansion remaining capacity threshold for a target storage pool. A fifth capacity calculating sub-unit is configured to calculate a sum of the preset post-expansion remaining capacity threshold and a used capacity as a total capacity of the target storage pool. A sixth capacity calculating sub-unit is configured to calculate the second expanding capacity of the target storage pool through subtracting the original storage pool capacity of the target storage pool from the determined total capacity.

Target storage pool characteristic value calculating unit1261may calculate a storage characteristic value for a target storage pool. In one implementation, target storage pool characteristic value calculating unit1261may further include the following. A first characteristic value calculating sub-unit is configured to calculate storage characteristic values of storage disks contained in a target storage pool. A second characteristic value calculating sub-unit is configured to determine storage characteristic weights of storage disks contained in the target storage pool. A third characteristic value calculating sub-unit is configured to calculate a sum of products of the storage characteristic values and the storage characteristic weights as a storage characteristic value of the target storage pool. In one implementation, the storage characteristic value of each storage disk is based on any one or more of the RAID class, RAID size, Storage Area Network (SAN) redundancy, driving type, interface, revolutions per minute (RPM), and cache size of the storage disk.

Candidate source storage disk selecting unit1271may select storage disks of the storage system having characteristic values matched with that of a target storage pool, and add them to a list of candidate source storage disks. In one implementation, candidate source storage disk selecting unit1271includes the following. First match degree calculating sub-unit1272is configured to calculate storage characteristic values of storage disks that are not contained in any target storage pool. Second match degree calculating sub-unit1273is configured to calculate a match degree of a storage disk and a target storage pool based on the nominal capacity, used capacity and storage characteristic value of the storage disk, and the storage characteristic value of the target storage pool. Match degree comparing unit1274is configured to select storage disks having match degrees calculated by second match degree calculating sub-unit1273meeting a predetermined condition as candidate source storage disks. In one implementation, the predetermined condition may require a match degree higher than a predetermined threshold.

Source storage disk selecting unit1281may determine source storage disks to be moved into a target storage pool from a list of candidate source storage disks based on the expected expanding capacity calculated by expected expanding capacity determining unit1251. In one implementation, source storage disk selecting unit1281may include the following. A first source storage disk determining sub-unit is configured to select a candidate source storage disk having the highest match degree from the list of candidate source storage disks. A second source storage disk determining sub-unit is configured to determine whether the candidate source storage disk having the highest match degree belongs to any storage pool. A third source storage disk determining sub-unit is configured to, if it is determined that the candidate source storage disk having the highest match degree does not belong to any storage pool, select the candidate source storage disk having the highest match degree as a source storage disk to be moved into a target storage pool, and to remove the candidate source storage disk having the highest match degree from the list of candidate source storage disks.

A fourth source storage disk determining sub-unit is configured to, if it is determined that the candidate source storage disk having the highest match degree belongs to a storage pool, execute the following operations. One operation is determining whether moving out the candidate source storage disk having the highest match degree will trigger capacity expansion of the storage pool it belongs to. A second operation is, if it is determined that moving out the candidate source storage disk having the highest match degree will trigger capacity expansion of the storage pool it belongs to, removing the candidate source storage disk having the highest match degree from the list of candidate source storage disks. A third operation is, if it is determined that moving out the candidate source storage disk having the highest match degree will not trigger capacity expansion of the storage pool it belongs to, selecting the candidate source storage disk having the highest match degree as a source storage disk to be moved into the target storage pool. A fourth operation is removing this disk from the list of candidate source storage disks. A fifth source storage disk determining sub-unit is configured to determine whether the determined source storage disk meets the calculated expected expanding capacity of the target storage pool.

With the techniques disclosed herein, capacity expansion demand of storage pools in a storage system can be predicted, and storage resources in the storage system can be automatically and accurately reallocated. With these techniques, it is also possible to take the growth trends of capacity utilization of a target storage pool and a source storage pool into account to allocate storage resources more reasonably. The techniques also make it possible to take effects on the performance of a target storage pool and a source storage pool into account to allocate storage resources more reasonably. Likewise, with the techniques disclosed herein, it is possible to take the effect on SLV (Service level Agreement) of each of target and source storage pools into account to allocate storage resources more reasonably.

In general, a computer program product includes a computer-readable medium on which one or more computer programs are stored. Execution of the computer programs from the computer-readable medium by one or more processors of one or more hardware devices causes a method to be performed. For instance, the method that is to be performed may be one or more of the methods that have been described above.

It is finally noted that, although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is thus intended to cover any adaptations or variations of embodiments of the present invention. As such and therefore, it is manifestly intended that this invention be limited only by the claims and equivalents thereof.