Convert small extent storage pools to large extent storage pools appropriately
By reordering and updating VST entries of the volume disk in the storage pool, the problem of inefficient conversion of storage pool disk size in the prior art is solved, efficient disk size conversion is achieved, and resource consumption and delay are reduced.
Patent Information
- Application Number
- CN202080060078.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-06
- Filing Date
- 2020-08-25
- Publication Date
- 2025-03-28
- Estimated Expiration
- 2040-08-25
AI Technical Summary
The prior art is inefficient and time-consuming when converting the disk size in a storage pool, requiring data to be migrated to another physical storage pool, resulting in additional storage resources, processing bandwidth and time consumption.
By identifying the conversion request, the volume disks in the existing storage pool are reordered to align with the block disk boundary of the expected storage pool, and without migrating the data, the disk size of the block is converted from small to large, and the volume segment table (VST) entry is updated.
It realizes the conversion of block disk size in the storage pool without migrating data, improves operational efficiency, and reduces data storage consumption, performance delay and network traffic.
Smart Images

Figure CN114365076B_ABST
Abstract
Description
Technical Field
[0001] The present invention relates generally to data migration and / or conversion, and more particularly to properly converting data from a small extent storage pool to a large extent storage pool. Background Art
[0002] Extent pools in storage products may implement different extent sizes. For example, an extent size of 1 GB may be implemented for a large extent pool, and an extent size of 16 MB may be implemented for a small extent pool. Some workloads may perform better in a small extent pool when compared to a large extent pool. Thus, in some cases, a particular extent size is selected by a client for a given storage pool, but over time, factors change such that a different extent size is desired. For example, in some cases, a storage system may experience an increase in demand for physical storage, causing a storage pool of a smaller extent size to be converted to a storage pool of a larger extent size.
[0003] However, existing processes implemented by a given pool for converting the size of an extent are time consuming and inefficient. For example, conventional processes for converting the size of an extent in a storage pool require that the data be first migrated to another physical storage pool before any changes can be made to the extent size. This process of migrating data is undesirable because it requires additional storage resources, processing bandwidth, time to physically copy all the data to another storage medium, etc. Therefore, a process is needed that can efficiently convert the size of an extent in a storage pool. Summary of the invention
[0004] A computer-implemented method according to a method is used to appropriately convert an existing storage pool to an intended storage pool. The computer-implemented method includes: identifying a request to convert an existing storage pool having a first block disk size to an intended storage pool having a second block disk size, wherein the first block disk size is smaller than the second block disk size. Reordering volume disks in the existing storage pool so that the physical block disks of the volume are aligned with the boundaries between the block disks of the intended storage pool. For each of the blocks in the existing storage pool, converting the given block from the first block disk size to the second block disk size. In addition, in response to converting the blocks in the existing storage pool, for each of the volumes: performing a temporary pause / lock on a volume segment table (VST) entry corresponding to the given volume, and removing an existing structure associated with the VST entry corresponding to the first block disk size. In addition, populating the VST entry with a new structure corresponding to the second block disk size.
[0005] It should also be noted that when converting an existing storage pool to a desired storage pool, the data in the volume is not migrated outside the existing storage pool. Thus, some of the methods included in the methods herein are capable of converting the disk size of chunks in a data storage pool while properly maintaining the data. While the process does include some reordering of the data before the actual change in the chunk disk size may occur, the data remains in a given storage pool while the conversion is performed, thereby significantly improving operational efficiency, reducing data storage consumption, reducing performance latency, reducing network traffic (e.g., which would otherwise be caused by migrating data), etc. These improvements are achieved (at least in part) due to the fact that the properties of the volumes allow these various processes and sub-processes to convert the layout of volumes and chunks to larger disk sizes.
[0006] The properties of RST and / or VST allow these improvements to be achieved without involving migration of data to other storage pools or machines. Volume extents in existing storage pools are also reordered so that the physical block extents of the volume are aligned with the boundaries between the block extents of the intended storage pool without any padding. This further improves the efficiency of storage space utilization, thereby generally improving the performance of the overall data storage system.
[0007] According to another method, a computer program product is used to appropriately convert an existing storage pool into an expected storage pool. The computer program product includes a computer-readable storage medium having program instructions specifically implemented therewith. In addition, the program instructions are readable by a processor and / or executable by a processor to cause the processor to: perform the aforementioned method.
[0008] A system according to another method includes: a processor, and logic integrated with the processor, executable by the processor, or integrated with the processor and executable by the processor. The logic is configured to execute the aforementioned method.
[0009] Other aspects and embodiments of the present invention will become apparent from the following detailed description, which, when taken in conjunction with the accompanying drawings, illustrate, by way of example, the principles of the invention. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Figure 1 is a representative view of a network architecture according to one approach.
[0011] Figure 2 is based on a method that can be Figure 1 A representative hardware environment associated with a server and / or client.
[0012] Figure 3 is a representative view of a hierarchical data storage system according to a method.
[0013] Figure 4A is a flow chart of a method for properly converting an existing small extent storage pool to a desired large extent storage pool, according to one method.
[0014] Figure 4B According to an embodiment Figure 4A A flowchart of a sub-process of one of the operations in the method.
[0015] Figure 4C According to an embodiment Figure 4A A flowchart of a sub-process of one of the operations in the method.
[0016] Figure 5 A representative view of a storage environment according to one approach is illustrated. DETAILED DESCRIPTION
[0017] The following description discloses several preferred embodiments of a system, method, and computer program product for migrating data from a large extent pool to a small extent pool. Various embodiments provide a method for creating a correspondence between a logical volume extent of a volume and a physical offset location within a chunk extent of a source storage pool, and utilizing the correspondence to migrate data from one or more chunks of a source storage pool to one or more chunks of a destination storage pool.
[0018] The following description is for the purpose of illustrating the general principles of the present invention, but is not intended to limit the inventive concepts claimed herein.In addition, the specific features described herein can be used with other described features in every possible combination and permutation.
[0019] Unless expressly defined otherwise herein, all terms are to be given their broadest possible interpretation, including the meaning implied by the specification and as understood by those skilled in the art and / or defined in dictionaries, treatises, etc.
[0020] It must also be noted that, as used in the specification and the appended claims, the singular forms "a", "an", and "the" include plural referents unless otherwise indicated. It will also be understood that the terms "comprises" and / or "comprising", when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0021] The following description discloses several preferred methods of systems, methods, and computer program products for converting the extent size of chunks in a data storage pool while properly maintaining the data. While in some methods, the process does include some reordering of the data before the actual change in the chunk extent size may occur, the data remains in a given storage pool while the conversion is performed, thereby significantly improving operational efficiency, for example, as will be described in further detail below.
[0022] In a general method, a computer-implemented method is used to appropriately convert an existing storage pool to an intended storage pool. The computer-implemented method includes: identifying a request to convert an existing storage pool having a first block disk size to an intended storage pool having a second block disk size, wherein the first block disk size is less than the second block disk size. Reordering volume disks in the existing storage pool so that the physical block disks of the volume are aligned with the boundaries between the block disks of the intended storage pool. For each of the blocks in the existing storage pool, converting the given block from the first block disk size to the second block disk size. In addition, in response to converting the blocks in the existing storage pool, for each of the volumes: performing a temporary pause / lock on a volume segment table (VST) entry corresponding to the given volume, and removing an existing structure associated with the VST entry corresponding to the first block disk size. In addition, populating the VST entry with a new structure corresponding to the second block disk size.
[0023] In another general method, a computer program product is used to appropriately convert an existing storage pool into an expected storage pool. The computer program product includes a computer-readable storage medium having program instructions specifically implemented therewith. In addition, the program instructions are readable by a processor and / or executable by a processor to cause the processor to: perform the aforementioned method.
[0024] In yet another general method, a system includes: a processor, and logic integrated with the processor, executable by the processor, or integrated with the processor and executable by the processor. The logic is configured to: perform the aforementioned method.
[0025] Figure 1 1 illustrates an architecture 100 according to one method. Figure 1 As shown in FIG. 1 , a plurality of remote networks 102 are provided, including a first remote network 104 and a second remote network 106. A gateway 101 may be coupled between the remote network 102 and a neighboring network 108. In the context of the present architecture 100, the networks 104, 106 may each take any form, including but not limited to a LAN, a WAN such as the Internet, a public switched telephone network (PSTN), an internal telephone network, and the like.
[0026] In the use case, gateway 101 acts as an entry point from remote network 102 to neighboring network 108. As such, gateway 101 may function as both a router capable of directing a given packet arriving at gateway 101 as well as a switch providing the actual path in and out of gateway 101 for a given packet.
[0027] Also included is at least one data server 114 coupled to the adjacent network 108 and accessible from the remote network 102 via the gateway 101. It should be noted that the data server 114 may include any type of computing device / groupware. A plurality of user devices 116 are coupled to each data server 114. The user devices 116 may also be directly connected via one of the networks 104, 106, 108. Such user devices 116 may include a desktop computer, a laptop computer, a handheld computer, a printer, or any other type of logic. It should be noted that in one approach, the user device 111 may also be directly coupled to any of the networks.
[0028] A peripheral device 120 or a series of peripheral devices 120 (e.g., a fax machine, a printer, a networked and / or local storage unit or system, etc.) may be coupled to one or more of the networks 104, 106, 108. It should be noted that the database and / or additional components may be used with or integrated into any type of network element coupled to the networks 104, 106, 108. In the context of this specification, a network element may refer to any component of a network.
[0029] According to some approaches, the methods and systems described herein may be implemented with and / or on a virtual system and / or a system that emulates one or more other systems, such as a UNIX system emulating an IBM z / OS environment, a UNIX system virtually hosting a MICROSOFT WINDOWS environment, a MICROSOFT WINDOWS system emulating an IBM z / OS environment, etc. In some approaches, such virtualization and / or emulation may be enhanced by using VMWARE software.
[0030] In further approaches, one or more networks 104, 106, 108 may represent a cluster of systems often referred to as a "cloud." In cloud computing, shared resources such as processing power, peripherals, software, data, servers, etc. are provided to any system in the cloud on an on-demand basis, allowing access and distribution of services across many computing systems. Cloud computing typically involves Internet connections between systems operating in the cloud, but other technologies for connecting systems may also be used.
[0031] Figure 2 A method according to which Figure 11 and 12. A representative hardware environment associated with a user device 116 and / or server 114 of the present invention is shown in FIG. 1. Such a diagram illustrates a typical hardware configuration of a workstation having a central processing unit 210 (such as a microprocessor) and a plurality of other units interconnected via a system bus 212.
[0032] Figure 2 The workstation shown in the figure includes random access memory (RAM) 214, read only memory (ROM) 216, an I / O adapter 218 for connecting peripheral devices such as a disk storage unit 220 to the bus 212, a user interface adapter 222 for connecting a keyboard 224, a mouse 226, a speaker 228, a microphone 232, and / or other user interface devices such as a touch screen and a digital camera (not shown) to the bus 212, a communications adapter 234 for connecting the workstation to a communications network 235 (e.g., a data processing network), and a display adapter 236 for connecting the bus 212 to a display device 238.
[0033] The workstation may have an operating system resident on it, such as Microsoft Operating system (OS), MAC OS, UNIX OS, etc. It will be appreciated that the preferred method may also be implemented on platforms and operating systems other than those mentioned. The preferred method may be written using XML, C and / or C++ languages or other programming languages, together with object-oriented programming methods. Object-oriented programming (OOP), which has become increasingly used to develop complex applications, may be used.
[0034] Reference now Figure 3 , shows a storage system 300 according to one method. Note that according to various methods, Figure 3Some of the elements shown in the figure may be implemented as hardware and / or software. The storage system 300 may include a storage system manager 312 for communicating with multiple media on at least one higher storage layer 302 and at least one lower storage layer 306. The (multiple) higher storage layers 302 may preferably include one or more random access and / or direct access media 304, such as hard disks in hard disk drives (HDDs), non-volatile memory (NVM), solid state memory in solid state drives (SSDs), flash memory, SSD arrays, flash memory arrays, etc. and / or other media mentioned herein or known in the art. The (multiple) lower storage layers 306 may preferably include one or more lower performance storage media 308, including sequential access media, such as tapes and / or optical media in tape drives, slower access HDDs, slower access SSDs, etc. and / or other media described herein or known in the art. One or more additional storage layers 316 may include any combination of storage memory media desired by the designer of the system 300. Furthermore, any of the upper storage tier 302 and / or the lower storage tier 306 may include some combination of storage devices and / or storage media.
[0035] Storage system manager 312 may communicate with storage system manager 312 through network 310 (such as Figure 3 ) or some other suitable network type with the storage media 304, 308 on the upper storage tier 302 and the lower storage tier 306. The storage system manager 312 may also communicate with one or more host systems (not shown) through a host interface 314, which may or may not be a part of the storage system manager 312. The storage system manager 312 and / or any other components of the storage system 300 may be implemented in hardware and / or software, and may utilize a processor (not shown) such as a central processing unit (CPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc., for executing commands of a type known in the art. Of course, any arrangement of storage systems may be used, as will be apparent to those skilled in the art upon reading this specification.
[0036] In more methods, the storage system 300 may include any number of data storage tiers, and may include the same or different storage memory media within each storage tier. For example, each data storage tier may include the same type of storage memory media, such as HDD, SSD, sequential access media (tapes in tape drives, optical disks in optical disk drives, etc.), direct access media (CD-ROM, DVD-ROM, etc.), or any combination of media storage types. In one such configuration, the higher storage tier 302 may include a large portion of the SSD storage media for storing data in a higher performance storage environment, and the remaining storage tiers including the lower storage tier 306 and the additional storage tier 316 may include any combination of SSD, HDD, tape drives, etc. for storing data in a lower performance storage environment. In this way, more frequently accessed data, data with a higher priority, data that requires faster access, etc. may be stored in the higher storage tier 302, while data that does not have one of these attributes may be stored in the additional storage tier 316, including the lower storage tier 306. Of course, those skilled in the art, when reading this specification, can conceive of many other combinations of storage media types according to the methods presented herein to be ready-made different storage schemes.
[0037] According to some approaches, a storage system such as 300 may include logic configured to receive a request to open a data set, logic configured to determine whether the requested data set is stored in multiple associated parts to a lower storage tier 306 of the tiered data storage system 300, logic configured to move each associated part of the requested data set to a higher storage tier 302 of the tiered data storage system 300, and logic configured to combine the requested data set from the associated parts onto the higher storage tier 302 of the tiered data storage system 300.
[0038] Of course, according to various approaches, this logic may be implemented as a method on any device and / or system or as a computer program product.
[0039] As previously described, the extent pools in a storage product may implement different extent sizes. Furthermore, some workloads may be better (e.g., more efficiently) executed in a small extent storage pool than in a large extent storage pool. Thus, while a client may select a specific extent size for a given storage pool, factors change over time such that different extent sizes may be more desirable in terms of performance efficiency. For example, in some situations, a storage system may experience an increase in demand for physical storage such that it is desirable for a storage pool of a smaller extent size to be converted to a storage pool of a larger extent size.
[0040] However, existing processes implemented by a given storage pool for converting the size of an extent are time consuming and inefficient. For example, conventional processes for converting the size of an extent in a storage pool require that the data be first completely migrated from the existing storage pool to another physical storage pool before any changes can be made to the extent size. This process of migrating data is particularly undesirable because it requires additional storage resources, processing bandwidth, time to physically copy all the data to an alternate storage medium, etc. Therefore, a process is needed that can efficiently convert the size of an extent in a storage pool.
[0041] In stark contrast to the aforementioned shortcomings experienced by conventional processes, various methods included herein contemplate the ability to convert the extent size of chunks in a data storage pool while the data is properly maintained. While the process does include some reordering of the data before the actual change in chunk extent size may occur, the data remains within a given storage pool while the conversion is performed, thereby significantly improving operational efficiency, e.g., as will be described in further detail below.
[0042] Reference now Figure 4A , according to one embodiment, shows a flow chart of a method 400 for appropriately converting an existing small extent storage pool into an intended large extent storage pool. In various embodiments, the method 400 may be implemented according to the present invention. Figure 1-3 Of course, as will be appreciated by those skilled in the art upon reading this specification, more than one embodiment of the present invention may be included in method 400. Figure 4A More or fewer operations may be performed as specifically described in .
[0043] Each step of method 400 can be performed by any suitable component of the operating environment. For example, in various embodiments, method 400 can be performed in part or in full by a controller, a processor, a computer, etc., or some other device having one or more processors therein. Therefore, in some embodiments, method 400 can be a computer-implemented method. In addition, with respect to any embodiment of this article, the terms computer, processor, and controller can be used interchangeably, and such components are considered to be equivalents in many various permutations of the present invention.
[0044] Furthermore, those embodiments directed to having a processor (e.g., processing circuit(s), chip(s), and / or module(s) implemented in hardware and / or software) and preferably having at least one hardware component may be used for any device to perform one or more steps of method 400. Illustrative processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc., combinations thereof, or any other suitable computing device known in the art.
[0045] like Figure 4A As shown in , operation 402 of method 400 includes identifying a request to convert an existing storage pool having a first block disk size into a predetermined storage pool having a second block disk size. As described above, method 400 involves converting a small disk storage pool into a large disk storage pool. Therefore, for the present specification, the "first block disk size" is relatively smaller than the "second block disk size". For example, an existing storage pool configuration may have block disks each having a size of approximately 16MB, while an expected storage pool configuration has block disks each having a size of approximately 1GB. Similarly, some workloads may perform significantly better in an environment that implements a given disk size. For example, some workloads perform more efficiently using a small disk storage pool when compared to performing using a large disk storage pool. Therefore, a request to convert the disk size of a given storage pool may be received from a running application in response to a newly initiated workload, a request to convert the disk size of a given storage pool may be received from a user in response to evaluating system performance relative to disk size, and so on.
[0046] It should also be noted that the terms "existing storage pool" and "intended storage pool" actually refer to different configurations of the same storage pool. In other words, the term "existing storage pool" is intended to refer to the existing state of the storage pool (e.g., smaller chunk extent size), while "intended storage pool" is intended to refer to the planned target state of the same storage pool (e.g., larger chunk extent size).
[0047] As will be apparent to those skilled in the art, the logical configuration of an exemplary storage pool includes chunks (RAID arrays) containing physical storage and volumes that map the physical storage to host addressable ranges (e.g., such as logical unit numbers) of logically contiguous storage. Chunks also include a chunk segment (extent) table (RST), while volumes include a volume segment (extent) table (VST). These tables control, at least in part, the mapping of different physical extents on a chunk to extents corresponding to a corresponding volume, e.g., as described in further detail below (e.g., see ). Figure 5 ).
[0048] Still reference Figure 4A , operation 404 also includes reordering the volume extents in the existing storage pool so that the physical block extents of the volumes are substantially aligned with the boundaries between the block extents of the intended storage pool. Increasing the extent size implemented in a given storage pool while properly maintaining data involves rebalancing the arrangement of the volume extents so that the volume physical block extents are aligned along larger extent boundaries. In other words, rebalancing the volume extents as described allows contiguous small extents to be aligned and mapped to contiguous space for a larger intended (e.g., planned) extent size, for example, as will be understood by one of ordinary skill in the art after reading this description.
[0049] According to a preferred method, the volume disk areas in the existing storage pool are reordered so that the physical block disk areas of the volume are substantially aligned with the boundaries between the block disk areas of the expected storage pool having larger block disk areas. For the purposes of this specification, it should be noted that "substantially aligned" is intended to refer to a situation in which the volume disk areas are reordered so that there is no padding between the boundaries between the volume disk areas and the block disk areas. In other words, preferably, the volume disk areas are filled with larger expected block events without forming any gaps. As a result, the efficiency of storage space utilization is improved, thereby generally improving the performance of the overall data storage system. However, in other methods, it can be achieved to effectively predefine the tolerance for the acceptable amount of padding that may exist between the boundaries between the volume disk areas and the block disk areas.
[0050] Properly reordering volume extents as described above is also desirable because it prevents data actually included in a volume from being migrated outside of an existing storage pool when the existing storage pool is converted to an intended storage pool with a larger chunk extent size. Specifically, the methods included herein can significantly reduce the amount of additional storage resources, consumed processing bandwidth, performance delays, etc., particularly compared to conventional processes.
[0051] Continue to refer Figure 4A It should be noted that in some methods, the process of reordering the disk areas in an existing storage pool involves reordering the disk areas based on the temperature of the data in each disk area included in the disk area. In other words, in some methods, operation 404 includes using data heat separation to determine how the disk areas should be arranged in the storage pool. As a result, the disk areas in the existing storage pool that include hot data are grouped together, while the disk areas in the existing storage pool that include cold data are grouped together. This further improves the efficiency with which the storage pool can operate. However, it should also be noted that after the disk areas have been reordered in operation 404, data heat separation can be intentionally disabled to avoid continuous changes to their alignment. In addition, the allocation of new disk areas on a given volume preferably involves allocating continuous small disk areas that are aligned with continuous large disk area ranges.
[0052] In other methods, the process of reordering volume disk extents in an existing storage pool involves reordering the volume disk extents based solely on the total size of data logically represented by the volume disk extents, however, in other methods, the reordering may be performed randomly, sequentially, non-sequentially, etc. In still other methods, the process of reordering the volume disk extents may be based on one or more criteria, such as, for example, data retrieval speeds of corresponding blocks. For example, each block in the block may be listed in order of decreasing data retrieval speed, and the volume disk extents may be allocated among the blocks according to the list (e.g., starting with the block with the fastest data retrieval speed, etc.).
[0053] In response to aligning each of the volumes in the storage pool with the larger expected extent size, the next step is to convert the chunks to the new extent size. Thus, operation 406 also includes converting each of the chunks in the existing storage pool from the first chunk extent size to the second chunk extent size. In other words, operation 406 includes increasing the size of each of the chunks in the existing storage pool to the expected chunk size associated with the expected storage pool. In a preferred method, each of the chunks in the existing storage pool is converted sequentially by advancing from one chunk to the next, but this is by no means intended to limit the present invention. For example, in some methods, the size of two or more chunks may be increased in parallel.
[0054] As mentioned previously, it is desirable to increase the size of a given block without performing any data migration. Figure 4B , according to an illustrative method, an exemplary sub-process of converting each of the chunks in the existing storage pool from a smaller first chunk extent size to a larger second chunk extent size is shown. Thus, including Figure 4B Any one or more of the sub-procedures in the sub-procedures can be used to execute Figure 4A Operation 406. However, it should be noted that Figure 4B The sub-processes are described according to one method, which is in no way intended to limit the present invention.
[0055] As shown, sub-operation 450 involves advancing to a block in an existing storage pool. For example, Figure 4B The first iteration of the sub-process in may involve advancing to the first block in the storage pool, while Figure 4B Subsequent iterations of the sub-process in may involve advancing to a subsequent block in the storage pool. As described above, the sub-process may be repeated in an iterative manner for each block in the storage pool. Figure 4B The subprocess in .
[0056] In order to convert the block while properly maintaining the data, a new table is generated to map to the smaller existing block disk layout that the volume already contains. Therefore, sub-operation 452 includes allocating new RST space and / or entries for a given block identified in sub-process 450. As described above, this newly allocated RST space and / or entries corresponds to the larger expected block disk size and can therefore be used to convert the size of a given block without having to migrate the data stored therein. For example, the newly allocated RST space and / or entries can be filled with the logical locations of the data in the volume, which have been reordered to substantially align with the boundaries of the given block. According to some methods, this can be achieved by identifying the volume and the volume disk area within the volume where the data is logically stored.
[0057] It should also be noted that in the preferred approach, the RST is configured on a one-to-one extent wise basis. In other words, each RST entry corresponds to a chunk extent of a given size and points to a corresponding volume extent. For example, in some approaches, the extents in a given chunk are represented as RST entries for that chunk, where each chunk extent represents a predetermined amount of storage for storing data within a storage pool. Furthermore, the process of allocating new RST space may be performed using any process that will become apparent to one of skill in the art after reading this specification.
[0058] Continue to refer Figure 4B , sub-operation 454 includes quiescing all extent change activity for a given chunk. This allows a given chunk to be converted while forcing the extents included therein to remain temporarily quiescent, thereby avoiding any errors, for example, as will be apparent to one skilled in the art. However, while the extent change activity is quiesced for a given chunk, it should be noted that in some approaches, the remaining chunks in the storage pool may be unaffected. In addition to avoiding having to migrate data from the pool in order to effectuate the conversion, this desirably allows the entire storage pool to remain operational while systematically converting the extent size of each of the chunks therein.
[0059] The flow chart further proceeds to sub-operation 456, which includes filling the newly allocated RST space and / or entries with new entries corresponding to the second block disk area size. In other words, sub-operation 456 includes filling the new RST entries formed in sub-operation 452 to point to smaller volume disk areas, which are reordered to align with the boundaries of a given block based on the expected larger block disk area size. According to some methods, one or more pointers that reference the relevant volume disk area (e.g., using a reference number) can be used to fill in the newly allocated RST space. However, for example, depending on the desired method, any desired process can be implemented.
[0060] Sub-operation 458 also includes temporarily pausing / locking an existing RST entry corresponding to a given block, while sub-operation 460 includes activating a new RST entry corresponding to (e.g., a point) a second block extent size. Sub-operations 458 and 460 thus enable transitioning from an existing (e.g., previous) RST entry to a newly allocated RST entry. According to some methods, temporarily pausing / locking an existing RST entry may involve checking all possible threads before the flowchart can actually transition to using the newly allocated RST entry.
[0061] In response to activating the newly allocated RST entry, sub-operation 462 includes resuming the extent change activity for the given block. Sub-operation 464 additionally includes releasing an existing (e.g., previous) RST entry so that it can be reused as needed. For example, in some methods, releasing an existing RST entry involves freeing space in a table so that it can be used with respect to other blocks. In addition, any information (e.g., data, metadata, etc.) stored in the existing RST entry may be deleted.
[0062] Proceeding to decision 466, the flowchart includes determining whether all chunks in the existing storage pool have been converted to achieve the larger chunk extent size. In other words, decision 466 includes determining whether all chunks in the existing storage pool have been evaluated. In response to determining that at least one of the chunks in the existing storage pool has not been converted to achieve the larger chunk extent size, the flowchart returns to sub-operation 450. There, sub-operation 450 includes advancing to the next chunk that has not been converted, for example, such that Figure 4B The sub-process illustrated in can be repeated for the block. However, in response to determining that all blocks in the existing storage pool have been converted to achieve a larger block extent size, the flowchart proceeds to Figure 4A Operation 408.
[0063] return Figure 4A Operation 408 includes actually converting the volumes so that they map to the newly converted chunks. In other words, after each chunk has been converted to achieve the larger chunk extent size, the volumes themselves are also converted. Figure 4C , according to an illustrative method, an exemplary subprocess for converting volumes so that they map to newly converted blocks is shown. With, including Figure 4C Any one or more of the sub-procedures in the sub-procedures can be used to execute Figure 4A Operation 408. However, it should be noted that Figure 4C The sub-processes are described according to one method, which is in no way intended to limit the present invention.
[0064] As shown, sub-operation 470 includes advancing to a volume in a storage pool. For example, Figure 4C A first iteration of the subprocess in may involve proceeding to the first volume in the storage pool, while Figure 4C Subsequent iterations of the sub-process in may involve advancing to subsequent volumes in the storage pool. As described above, the sub-process in may be repeated in an iterative manner for each of the volumes in the storage pool. Figure 4C The subprocess in .
[0065] Proceeding to sub-operation 472, a temporary pause / lock is performed on the VST entry corresponding to the given volume. According to some approaches, performing a temporary pause / lock includes checking each of the possible threads associated with the VST entry in question.
[0066] In addition, sub-operation 474 includes removing existing structures associated with VST entries corresponding to (e.g., pointing to) the first chunk extent size. As described above, each of the volumes is preferably converted so that they map to newly converted chunks having a larger chunk extent size. To do so, any existing structures of the original configuration that mapped a given volume to chunks having a smaller chunk extent size are preferably removed. This effectively eliminates existing VST structures that formed the smaller chunk extent size, thereby allowing the larger chunk extent size to be implemented.
[0067] In response to removing the existing structure, sub-operation 476 also includes filling the VST entry with a new structure corresponding to the larger chunk extent size. As a result, the VST entry will point to the physical chunk extent with the larger chunk extent size (e.g., the starting extent number of the physical extent). In a preferred method, the VST entry can point to the starting extent number of the physical extent because the volume extent numbering uses the minimum extent unit. In addition, as described above, in some methods, the extents are physically packed together without filling, for example, as will be clear to those skilled in the art after reading this specification.
[0068] According to some methods (which are in no way intended to limit the present invention), by creating a correspondence between the logical volume extents of the volume and the physical offset locations in the corresponding chunk extents of the storage pool, the VST entries can be populated with new structures corresponding to the larger chunk extent sizes. Creating the correspondence can include identifying the VST entries in the volume corresponding to the corresponding chunk extents (multiple) that have been converted to the larger size. For example, the VST can store a logical representation of the data stored in the volume, where the VST includes multiple entries. A subset of these entries can be identified within the VST, which corresponds to the corresponding chunk extents (multiple).
[0069] In other methods, creating the correspondence may include creating a supplemental VST for each identified VST entry. For example, a supplemental VST may be created for each of the identified subsets of VST entries. In another example, each of the supplemental VSTs may be used to represent all logical volume disks within their corresponding VST entries at a higher granularity. In still other methods, creating the correspondence may include setting the logical volume disks within the supplemental VST to point to corresponding offset positions within the converted chunk disks. In this way, a direct correspondence may be established between the logical volume disks of the supplemental VST of the volume and the offset positions within the chunk disks.
[0070] Proceeding to decision 478, the flowchart includes determining whether all volumes in the existing storage pool have been converted. In other words, decision 478 includes determining whether all volumes in the existing storage pool have been converted so that they map to the newly converted chunks. In response to determining that at least one of the volumes has not been converted, the flowchart returns to sub-operation 470. There, sub-operation 470 includes advancing to the next volume that has not been converted, for example, so that the process can be repeated for that volume. Figure 4C However, in response to determining that all volumes in the existing storage pool have been converted according to the larger chunk extent size, the flowchart proceeds to Figure 4A Operation 410.
[0071] Return again Figure 4A , after all chunks and volumes have been converted, the flowchart proceeds to operation 410, whereby method 400 may end. Therefore, it may be concluded that, in response to reaching operation 410, the storage pool has been effectively converted from an existing small extent storage pool to an intended large extent storage pool. However, it should be noted that, although method 400 may end upon reaching operation 410, any one or more of the processes included in method 400 may be repeated in order to convert another storage pool. In other words, any one or more of the processes included in method 400 may be repeated in order to properly convert another existing small extent storage pool to an intended large extent storage pool.
[0072] So, including Figure 4A-4C The various processes and sub-processes in the process are capable of converting the disk size of chunks in a data storage pool while maintaining the data appropriately. While the process does include some reordering of the data before the actual change in the chunk disk size can occur, the data remains in a given storage pool while the conversion is performed, thereby significantly improving operational efficiency, reducing data storage consumption, reducing performance latency, reducing network traffic (e.g., which would otherwise be caused by migrating data), etc. These improvements are achieved (at least in part) due to the fact that the properties of the volumes allow these various processes and sub-processes to convert the layout of volumes and chunks to larger disk sizes. As described above, the properties of the RST and VST tables allow this to be achieved so that no migration of data to other storage pools or machines is involved.
[0073] For now, please refer to Figure 5 , illustrates an exemplary storage environment 500 according to a method. As an option, the storage environment 500 can be implemented in combination with features from any other embodiment listed herein, for example, with reference to other figures, such as Figure 4A-4CHowever, such a storage environment 500 and other environments presented herein may be used in a variety of applications and / or in arrangements that may or may not be specifically described in the illustrative embodiments listed herein. Furthermore, the storage environment 500 presented herein may be used in any desired environment. Therefore, Figure 5 (and other figures) can be considered to include any possible permutations.
[0074] As shown, VST 502 stores a logical representation of data stored in volume 0 504. In addition, one or more RSTs store physical representations of data stored in chunk 3 524 of existing storage pool 0 526. It should also be noted that according to the present method, the chunk granularity of existing storage pool 0 526 is 16MB. For example, each chunk extent in existing storage pool 0 526 has a size of approximately 16MB. However, these chunk extents may be, for example, created using any one or more of the methods included herein (e.g., see above). Figure 4A-4C ) from about 16MB in size to about 1GB.
[0075] Still reference Figure 5 , full volume extent VST entries 532 and 534 refer to locations 530A-530B within the RST where data is physically stored in existing storage pool 0 526. For example, chunk extent 0 530A of chunk 3 524 of existing storage pool 0 526 includes a link to VST entry 0 532 within volume 0 504. Conversely, VST entry 0 532 within volume 0 504 includes a link to chunk extent 0 530A of chunk 3 524 of existing storage pool 0 526.
[0076] Likewise, chunk extent 64 530B of chunk 3 524 of existing storage pool 0 526 includes a link to VST entry 2 534 within volume 0 504. Conversely, VST entry 2 534 within volume 0 504 includes a link to chunk extent 64 530B of chunk 3 524 of existing storage pool 0 526. In this manner, connections between logical representations of data in volume 0 504 are mapped to physical representations of data in existing storage pool 0 526.
[0077] Likewise, the extent pools in a storage product may have different extent sizes. For example, the DS8000 data storage platform may implement an extent size of 1 GB for larger sized pools and an extent size of 16 MB for smaller sized pools. Furthermore, as previously mentioned, some workloads perform better with small pools, while other workloads perform better in large extent pools. Thus, various methods included herein may be used to improve performance by adjusting the extent size implemented in a given pool.
[0078] According to the example in use, which is by no means intended to limit the present invention, the RST is used as a mapping table of blocks (arrays) that describe the state of the block extents and the logical volume extents to which the physical block extents belong. For example, assuming that the block r0 is 1T and the extent size is 1G, the RST table will have 1024 entries, each of which represents a physical extent. If the block extent 0 is assigned to the logical extent 1 of the volume 0x1010, the entry in the RST will have information indicating that the physical extent state is assigned and that it is assigned to the logical extent 1 of the volume 0x1010.
[0079] In addition, the VST is used as a mapping table for the volume, which maps the logical extents of the volume to the physical extents of the blocks so that when a host I / O arrives on a volume LBA boundary, the physical location can be easily identified, for example, as will become clear to a person skilled in the art after reading this specification.
[0080] Furthermore, in an illustrative approach, a small VST (smVST) can be used as a mapping table for a volume containing 64 entries, each of which maps a small logical extent (16MB) to a physical extent of a block, so that when a host I / O that is located on a volume LBA boundary arrives, the physical location can be identified. Furthermore, in one approach, only the RST is persistent in the disk, and the VST is built based on the RST and loaded into memory when needed.
[0081] The present invention may be a system, method and / or computer program product at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or multiple media) having computer-readable program instructions thereon, and the computer-readable program instructions are used to cause a processor to perform aspects of the present invention.
[0082] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions used by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device such as a punch card or a raised structure in a groove on which instructions are recorded, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be interpreted as a transient signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated by a waveguide or other transmission medium (e.g., a light pulse by an optical fiber cable), or an electrical signal transmitted by a wire.
[0083] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network, and forwards the computer-readable program instructions to be stored in a computer-readable storage medium in the corresponding computing / processing device.
[0084] The computer-readable program instructions for performing the operation of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data of an integrated circuit, or source code or object code written in any combination of one or more programming languages (including object-oriented programming languages, such as Smalltalk, C++, etc.) and procedural programming languages (such as "C" programming language or similar programming languages). The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, executed as an independent software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider via the Internet). In some embodiments, in order to perform aspects of the present invention, an electronic circuit including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute a computer-readable program instruction by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit.
[0085] Aspects of the present invention are described herein with reference to the flow chart and / or block diagram of the method, device (system) and computer program product according to embodiments of the present invention. It will be understood that each frame of the flow chart and / or block diagram and the combination of frames in the flow chart and / or block diagram can be implemented by computer-readable program instructions.
[0086] These computer-readable program instructions can be provided to a processor of a computer or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in one or more boxes of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium, which can guide the computer, programmable data processing device and / or other equipment to work in a specific manner, so that the computer-readable storage medium having the instructions stored therein includes an article of manufacture, which includes instructions for implementing aspects of the functions / actions specified in one or more boxes of the flowchart and / or block diagram.
[0087] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, so that a series of operational steps are performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified in one or more boxes of the flowchart and / or block diagram.
[0088] Flowcharts and block diagrams in the accompanying drawings show the possible architecture, function and operation of the system, method and computer program product according to various embodiments of the present invention.In this regard, each frame in a flow chart or a block diagram can represent a module, a segment or a part of an instruction, which includes one or more executable instructions for realizing a specified logical function.In some alternative embodiments, the function noted in the frame may not occur in the order noted in the figure.For example, two frames shown continuously can actually be implemented as a step, and are performed simultaneously, substantially simultaneously, in a partially or entirely time-overlapping manner, or these frames can sometimes be performed in reverse order, depending on the function involved.It will also be noted that the combination of the frames in each frame of the block diagram and / or the flow chart illustration and the block diagram and / or the flow chart illustration can be realized by a dedicated hardware-based system that performs a specified function or action or performs a combination of special-purpose hardware and computer instructions.
[0089] In addition, the system according to various embodiments may include a processor and logic integrated with the processor and / or executable by the processor, which is configured to perform one or more of the process steps described herein. The processor may be any configuration as described herein, such as a discrete processor or a processing circuit including many components such as processing hardware, memory, I / O interface, etc. By integrated with it, it is meant that the processor has logic embedded therewith as hardware logic, such as an application specific integrated circuit (ASIC), FPGA, etc. By executable by the processor, it means that the logic is hardware logic; software logic, such as a part of firmware, an operating system, a part of an application; etc., or some combination of hardware and software logic, which is accessible by the processor and is configured to cause the processor to perform a certain function when executed by the processor. The software logic may be stored on local and / or remote memory of any memory type, as is known in the art. Any processor known in the art, such as a software processor module and / or a hardware processor, such as an ASIC, FPGA, a central processing unit (CPU), an integrated circuit (IC), a graphics processing unit (GPU), etc., may be used.
[0090] It is clear that the various features of the foregoing systems and / or methods may be combined in any manner, resulting in multiple combinations from the description presented above.
[0091] It should also be appreciated that embodiments of the present invention may be provided as a service deployed on behalf of a customer to provide services on demand.
[0092] The description of various embodiments of the present invention has been given for the purpose of illustration, but it is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications, or technical improvements existing in the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.
Claims
1. A computer-implemented method for properly converting an existing storage pool to an intended storage pool, comprising: identifying a request to convert the existing storage pool having a first chunk extent size to the desired storage pool having a second chunk extent size, wherein the first chunk extent size is smaller than the second chunk extent size; reordering the volume extents in the existing storage pool so that the boundaries between the physical block extents of the volume and the block extents of the intended storage pool are aligned; for each of the chunks in the existing storage pool, converting a given chunk from the first chunk extent size to the second chunk extent size; as well as In response to converting the chunks in the existing storage pool, for each of the volumes: Performs a temporary pause / lock on the volume segment table entry corresponding to a given volume, removing existing structures associated with the volume segment table entries corresponding to the first block extent size, and The volume segment table entry is populated with a new structure corresponding to the size of the second block extent.
2. The computer-implemented method of claim 1 , wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: Allocate new block segment table space; static disk area change activity for said given block; filling the newly allocated block segment table space with new entries corresponding to the size of the second block extent; performing a temporary pause / lock on an existing block segment table entry corresponding to the given block; activating a new block segment table entry corresponding to the second block extent size; as well as Recover extent change activity for the given block.
3. The computer-implemented method of claim 2, wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: The existing block segment table entry is released.
4. The computer-implemented method of claim 2, wherein the chunk segment table is configured such that each chunk segment table entry corresponds to a chunk extent of a given size and points to a corresponding volume extent.
5. The computer-implemented method of claim 1 , wherein reordering the volume extents in the existing storage pool so that boundaries between physical block extents of the volume and the block extents of the prospective storage pool align comprises: The reel zones are reordered based on a temperature of data included in each of the reel zones.
6. The computer implemented method of claim 5, wherein volume extents in the existing storage pool that include hot data are grouped together, wherein volume extents in the existing storage pool that include cold data are grouped together.
7. A computer-implemented method according to claim 1, wherein the volume extents in the existing storage pool are reordered so that the boundaries between the physical block extents of the volume and the block extents of the intended storage pool are aligned without any padding.
8. The computer-implemented method of claim 1, wherein when converting the existing storage pool to the prospective storage pool, data in the volume is not migrated outside of the existing storage pool.
9. A computer program product for appropriately converting an existing storage pool into an intended storage pool, the computer program product comprising a computer-readable storage medium having program instructions embodied therewith, the program instructions being readable by and / or executable by a processor to cause the processor to: identifying, by the processor, a request to convert the existing storage pool having a first chunk extent size to the desired storage pool having a second chunk extent size, wherein the first chunk extent size is smaller than the second chunk extent size; reordering, by the processor, volume extents in the existing storage pool so that boundaries between physical block extents of the volume and the block extents of the intended storage pool are aligned; for each of the chunks in the existing storage pool, converting, by the processor, a given chunk from the first chunk extent size to the second chunk extent size; and In response to converting the chunks in the existing storage pool, for each of the volumes: performing, by the processor, a temporary pause / lock on a volume segment table entry corresponding to a given volume, removing, by the processor, an existing structure associated with the volume segment table entry corresponding to the first block extent size, and The volume segment table entry is populated by the processor with a new structure corresponding to the second block extent size.
10. The computer program product of claim 9, wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: Allocate new space in the block segment table; static disk area change activity for said given block; filling the newly allocated block segment table space with new entries corresponding to the size of the second block extent; performing a temporary pause / lock on an existing block segment table entry corresponding to the given block; activating a new block segment table entry corresponding to the second block extent size; as well as Recover extent change activity for the given block.
11. The computer program product of claim 10, wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: The existing block segment table entry is released.
12. The computer program product of claim 10, wherein: The chunk segment table is configured such that each chunk segment table entry corresponds to a chunk extent of a given size and points to a corresponding volume extent.
13. The computer program product of claim 9, wherein reordering the volume extents in the existing storage pool so that the boundaries between the physical block extents of the volume and the block extents of the prospective storage pool align comprises: The reel zones are reordered based on a temperature of data included in each of the reel zones.
14. The computer program product of claim 13, wherein volume extents in the existing storage pool that include hot data are grouped together, wherein volume extents in the existing storage pool that include cold data are grouped together.
15. The computer program product of claim 9, wherein the volume extents in the existing storage pool are reordered so that the boundaries between the physical block extents of the volume and the block extents of the intended storage pool are aligned without any padding.
16. The computer program product of claim 9, wherein when converting the existing storage pool to the prospective storage pool, data in the volume is not migrated outside the existing storage pool.
17. A system comprising: processor; as well as Logic integrated with the processor, executable by the processor, or integrated with the processor and executable by the processor, the logic being configured to: identifying, by the processor, a request to convert an existing storage pool having a first chunk extent size to a desired storage pool having a second chunk extent size, wherein the first chunk extent size is smaller than the second chunk extent size; reordering, by the processor, volume extents in the existing storage pool so that boundaries between physical block extents of the volume and the block extents of the intended storage pool are aligned; for each of the chunks in the existing storage pool, converting, by the processor, a given chunk from the first chunk extent size to the second chunk extent size; as well as In response to converting the chunks in the existing storage pool, for each of the volumes: performing, by the processor, a temporary pause / lock on a volume segment table entry corresponding to a given volume, removing, by the processor, an existing structure associated with the volume segment table entry corresponding to the first block extent size, and The volume segment table entry is populated by the processor with a new structure corresponding to the second block extent size.
18. The system of claim 17, wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: Allocate new space in the block segment table; static disk area change activity for said given block; filling the newly allocated block segment table space with new entries corresponding to the size of the second block extent; performing a temporary pause / lock on an existing block segment table entry corresponding to the given block; activating a new block segment table entry corresponding to the second block extent size; as well as Recover extent change activity for the given block.
19. The system of claim 18, wherein converting a given chunk from the first chunk extent size to the second chunk extent size comprises: The existing block segment table entry is released.
20. The system of claim 18, wherein: The chunk segment table is configured such that each chunk segment table entry corresponds to a chunk extent of a given size and points to a corresponding volume extent.
21. The system of claim 17, wherein reordering the volume extents in the existing storage pool so that the boundaries between the physical block extents of the volume and the block extents of the intended storage pool are aligned comprises: The reel zones are reordered based on a temperature of data included in each of the reel zones.
22. The system of claim 21, wherein volume extents in the existing storage pool that include hot data are grouped together, wherein volume extents in the existing storage pool that include cold data are grouped together.
23. The system of claim 17, wherein the volume extents in the existing storage pool are reordered so that the boundaries between the physical block extents of the volume and the block extents of the intended storage pool are aligned without any padding.
24. The system of claim 17, wherein when converting the existing storage pool to the intended storage pool, data in the volume is not migrated outside the existing storage pool.
Citation Information
Patent Citations
LUN online capacity expansion method and system
CN107291395A
Intelligent extent initialization in storage environment
US8595458B2