Convert large-scale storage pools to small-scale storage pools at the storage location
By aligning and expanding storage areas within existing storage pools without moving data, the method addresses inefficiencies in conventional conversion processes, improving efficiency and reducing resource consumption.
Patent Information
- Application Number
- DE112020003382
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-09-06
- Filing Date
- 2020-08-25
- Publication Date
- 2025-08-07
- Estimated Expiration
- 2040-08-25
AI Technical Summary
Existing processes for converting storage area sizes in storage pools are inefficient and time-consuming, requiring data to be moved to another physical storage pool, which consumes additional resources and bandwidth.
A method and system that convert storage pool sizes without moving data, involving temporary pauses and new structures for volume and memory bank tables to align and expand storage areas while keeping data in place, using volume segment and rank segment tables to rearrange and expand memory banks.
This approach significantly improves efficiency by reducing resource usage, processing time, and network traffic, while maintaining data in its original location during conversion, enhancing overall storage system performance.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present invention relates to moving and / or converting data, and more particularly to converting data from large extent storage pools to small extent storage pools at the storage location. BACKGROUND
[0002] When expanding pools in storage products, different slice sizes can be implemented. For example, a large slice pool might have a 1 GB slice size, while a small slice pool might have a 16 MB slice size. Some workloads may be better handled in a small slice pool than in a large slice pool. As a result, in some situations, a client may choose a certain slice size for a given storage pool, but over time, factors change, making a different slice size desirable. For example, in some situations, a storage system may experience increased demand for physical storage, forcing smaller slice pools to be converted to larger slice pools.
[0003] However, existing processes for converting the size of memory pools implemented by a given pool are time-consuming and inefficient. For example, conventional processes for converting the size of memory pools within a storage pool require that the data be first relocated to another physical storage pool before changes to the memory pool sizes can be made. This data relocation process is undesirable because it requires additional memory resources, processing bandwidth, time to physically copy all data to another storage medium, etc. Therefore, there is a desire for processes capable of efficiently converting the size of memory pools. SUMMARY
[0004] A computer-implemented method, according to one approach, is for converting an existing storage pool into a planned storage pool at the storage location. The computer-implemented method comprises: identifying a request to convert the existing storage pool having a first extent size to the planned storage pool having a second extent size, wherein the first extent is larger than the second extent. For each volume in the existing storage pool: temporarily pausing / locking a Volume Segment Table (VST) entry corresponding to the given volume, and applying a new structure to the VST entry. The new structure divides the existing physical extents associated with the VST entry into two or more smaller physical extents.In addition, for each of the memory banks (ranks) in the existing memory pool, the given memory bank is converted from the first memory bank size to the second memory bank size.
[0005] It should also be noted that when converting the existing storage pool to the planned storage pool, the data on the disks is not relocated from the existing storage pool to the planned storage pool. Therefore, some of the approaches described here are capable of converting the memory bank size in a data storage pool while keeping the data in place. While this process involves some effort to reorder the data before the actual change to the memory bank size can occur, the conversion process leaves the data in the given storage pool, significantly improving operational efficiency, reducing memory usage, shortening processing times, reducing network traffic (which would otherwise be generated by data relocation), and so on.These improvements are achieved (at least in part) by the properties of the disks allowing these various processes and subprocesses to transform the layout of the disks and memory banks into larger memory areas.
[0006] The properties of the RST and / or VST allow these improvements to be achieved without having to relocate data to other storage pools or machines. The new structure also divides the existing physical storage areas associated with the VST entry into two or more smaller physical storage areas, so that the smaller physical storage areas are aligned to the boundaries between the storage areas of the planned storage pool without backfilling. This further increases the efficiency of storage space utilization and thus improves the overall performance of a higher-level data storage system.
[0007] According to another approach, a computer program product serves to convert an existing memory pool into a planned memory pool at the storage location. The computer program product comprises a computer-readable storage medium containing program instructions. The program instructions are readable and / or executable by a processor to cause the processor to perform the aforementioned method.
[0008] A system according to another approach comprises: a processor and logic integrated into the processor, executable by the processor, or integrated into the processor and executable by the processor. The logic is configured to perform the aforementioned method.
[0009] Further aspects and approaches of the present invention will become apparent from the following detailed description, which, in conjunction with the drawings, illustrates the basic ideas of the invention by way of example. BRIEF DESCRIPTION OF THE DRAWINGS Fig. Figure 1 is a representative illustration of a network architecture according to one approach. Fig. 2 is a representative hardware environment that, according to one approach, is provided to the servers and / or clients of Fig. 1 may belong to. Fig. Figure 3 is a representative illustration of a multi-tiered data storage system according to one approach. Fig. 4A is a flowchart of a method for converting an existing small-scale storage pool to a planned large-scale storage pool at the storage location, according to one approach. Fig. 4B is, according to one approach, a flow chart of sub-processes for one of the operations of the method of Fig. 4A. Fig. 4C is, according to one approach, a flow chart of sub-processes for one of the operations of the method of Fig. 4A. Fig. Figure 5 shows a representative representation of a storage environment according to one approach. Fig. 6A is a flowchart of a method for converting an existing large-scale storage pool to a planned small-scale storage pool at the storage location, according to one approach. Fig. 6B is, according to one approach, a flow chart of sub-processes for one of the operations of the method of Fig. 6A. DETAILED DESCRIPTION
[0010] The following description discloses several preferred approaches of systems, methods, and computer program products for relocating data from a large-scale storage pool to a small-scale storage pool. Various approaches provide a method for establishing a correspondence between logical volume storage regions of the volume and physical relocation locations within storage regions of the storage bank of the source storage pool, and using the correspondence to relocate data from one or more storage banks of the source storage pool to one or more storage banks of the destination storage pool.
[0011] The following description is intended to illustrate the general principles of the present invention and is not intended to limit the aspects of the invention claimed herein. Furthermore, particular features described herein may be used in conjunction with other described features in any of the various possible combinations and permutations.
[0012] Unless expressly defined otherwise herein, all terms shall be interpreted as broadly as possible, including the meanings implied by the description as well as the meanings understood by persons skilled in the art and / or defined in dictionaries, treatises, etc.
[0013] Unless otherwise indicated, it should also be understood that the singular forms "a" and "an" and "the" as used in the specification and the appended claims include the plural form. It should further be understood that the terms "comprise" 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.
[0014] The following description discloses several preferred approaches, systems, methods, and computer program products for converting the storage area size of memory banks in a data storage pool while the data remains at the storage location. By keeping the data in the given storage pool during the conversion, various of the approaches included herein can significantly improve the efficiency of the system's operations, as described in more detail below.
[0015] In a general approach, a computer-implemented method is for converting an existing storage pool into a planned storage pool at the storage location. The computer-implemented method comprises: identifying a request to convert the existing storage pool having a first extent size to the planned storage pool having a second extent size, where the first extent is larger than the second extent. For each volume in the existing storage pool: temporarily pausing / locking a Volume Segment Table (VST) entry corresponding to the given volume, and applying a new structure to the VST entry. The new structure divides the existing physical extents associated with the VST entry into two or more smaller physical extents.In addition, for each of the memory banks in the existing memory pool, the given memory bank is converted from the first memory bank size to the second memory bank size.
[0016] In another general approach, a computer program product is used to convert an existing memory pool into a planned memory pool at the storage location. The computer program product comprises a computer-readable storage medium with program instructions contained therein. The program instructions are readable and / or executable by a processor to cause the processor to perform the aforementioned method.
[0017] In another general approach, a system comprises a processor and logic integrated into the processor, executable by the processor, or integrated into and executable by the processor. The logic is configured to perform the aforementioned method.
[0018] Fig. 1 shows an architecture 100 according to one approach. As 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 connected to the remote networks 102 and a proximal network 108. Within the context of the present architecture 100, the networks 104, 106 may each take the form of a LAN or a WAN, such as, but not limited to, the Internet, a public switched telephone network (PSTN), an internal telephone network, etc.
[0019] In use, the gateway 101 serves as an access point from the remote networks 102 to the nearby network 108. As such, the gateway 101 can act as a router capable of forwarding a particular data packet arriving at the gateway 101, as well as a switch, providing the actual path into and out of the gateway 101 for a particular packet.
[0020] Also included is at least one data server 114, which is connected to the local network 108 and can be accessed from the remote networks 102 via the gateway 101. It should be noted that the data server(s) 114 may contain any type of data processing device / groupware. A plurality of user devices 116 are connected to each data server 114. The user devices 116 may also be connected directly via one of the networks 104, 106, 108. These user devices 116 may include desktop computers, laptop computers, handheld computers, printers, or any other type of logic. It should be noted that in one approach, a user device 111 may also be directly connected to each of the networks.
[0021] A peripheral device 120 or a series of peripheral devices 120, e.g., fax machines, printers, networked and / or local storage devices or systems, etc., may be connected to one or more of the networks 104, 106, 108. It should be noted that databases and / or additional components may be used with or integrated into any type of network element connected to the networks 104, 106, 108. For the purposes of this description, a network element may refer to any component of a network.
[0022] According to some approaches, the methods and systems described herein may be implemented with and / or on virtual systems and / or systems that emulate one or more other systems, such as a UNIX system that emulates an IBM z / OS environment, a UNIX system that virtually hosts a MICROSOFT WINDOWS environment, a MICROSOFT WINDOWS system that emulates an IBM z / OS environment, etc. This virtualization and / or emulation may be enhanced using VMWARE software in some approaches.
[0023] In further approaches, one or more networks 104, 106, 108 may constitute a group of systems collectively referred to as a "cloud." In cloud computing, shared resources such as computing power, peripherals, software, data, servers, etc., are provided to each system in the cloud in an on-demand relationship, enabling access to and distribution of services across many computing systems. Cloud computing typically involves an internet connection between the systems operating in the cloud, but other methods for connecting the systems may also be used.
[0024] Fig. Figure 2 shows a representative hardware environment provided to a user device 116 and / or a server 114 of Fig. 1 according to one approach. This figure shows a typical hardware configuration of a workstation with a central processing unit (CPU) 210, e.g., a microprocessor, and a number of other units interconnected via a system bus 212.
[0025] The Fig. 2 includes a random access memory (RAM) 214, a read-only memory (ROM) 216, an input / output adapter 218 for connecting peripheral devices such as disk storage devices 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 touchscreen and a digital camera (not shown) to the bus 212, a data transmission adapter 234 for connecting the workstation to a data transmission network 235 (e.g., a data processing network), and a display adapter 236 for connecting the bus 212 to a display device 238.
[0026] The workstation can run an operating system, e.g. Microsoft Windows ®Operating System (MAC operating system, UNIX operating system, etc.). It should be noted that a preferred approach can also be implemented on platforms and operating systems other than those mentioned. A preferred approach can be written using PL / I, XML, C and / or C++, or other programming languages, along with an object-oriented programming methodology. Object-oriented programming (OOP), which is increasingly used to develop complex applications, can be used.
[0027] With reference now to Fig. 3, a storage system 300 according to one approach is shown. It should be noted that some of the Fig. 3 can be implemented as hardware and / or software according to various approaches. The storage system 300 can include a storage system manager 312 for exchanging data with a plurality of media on at least one higher storage level 302 and at least one lower storage level 306. The higher storage level(s) 302 can preferably include one or more random access and / or direct access media 304, such as hard disks in hard disk drives (HDDs), nonvolatile memory (NVM), semiconductor memory in solid state drives (SSDs), flash memory, SSD arrays, flash memory arrays, etc., and / or other media listed herein or known in the art. The lower storage level(s) 306 can preferably include one or more lower performance storage media 308, e.g.Sequential access media such as magnetic tapes in tape drives and / or optical media, slower-access HDDs, slower-access SSDs, etc., and / or other media listed herein or known in the art. One or more additional storage tiers 316 may include any combination of storage media desired by a designer of system 300. Additionally, each of the higher storage tiers 302 and / or the lower storage tiers 306 may include a combination of storage devices and / or storage media.
[0028] The storage system manager 312 may communicate with the storage media 304, 308 on the higher storage level(s) 302 and the lower storage level(s) 306 via a network 310, e.g., a storage area network (SAN), as shown in Fig. 3 or another suitable type of network. The storage system manager 312 may also communicate with one or more host systems (not shown) via a host interface 314, which may be part of the storage system manager 312. The storage system manager 312 and / or other components of the storage system 300 may be implemented in hardware and / or software and may use a processor (not shown) of a type known in the art, such as a central processing unit (CPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc., to execute instructions. Of course, any arrangement of a storage system may be used, as will be apparent to one of ordinary skill in the art upon reading this description.
[0029] In several approaches, storage system 300 may include any number of data storage tiers and may include the same or different storage media within each storage tier. For example, each data storage tier may include the same type of storage media, e.g., HDDs, SSDs, sequential access media (tape in tape drives, optical disk in optical disk drives, etc.), random access media (CD-ROM, DVD-ROM, etc.), or any combination of media storage types. In such a configuration, a higher storage tier 302 may include a majority of SSD storage media for storing data in a higher-performance storage environment, and the remaining storage tiers, including lower storage tier 306 and additional storage tiers 316, may include any combination of SSDs, HDDs, tape drives, etc., for storing data in a lower-performance storage environment.In this way, more frequently accessed data, higher priority data, data that needs to be accessed more quickly, etc., may be stored in the higher storage tier 302, while data that does not have any of these attributes may be stored in the additional storage tiers 316, including the lower storage tier 306. Of course, upon reading the present descriptions, one skilled in the art may devise many other combinations of storage media types that may be implemented in various storage schemes according to the approaches presented herein.
[0030] According to some approaches, the storage system (e.g., 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 related pieces at a lower storage level 306 of a multi-level data storage system 300, logic configured to move each related piece of the requested data set to a higher storage level 302 of the multi-level data storage system 300, and logic configured to assemble the requested data set from the related pieces at the higher storage level 302 of the multi-level data storage system 300.
[0031] Of course, this logic can be implemented as a method on any device and / or system or as a computer program product according to various approaches.
[0032] As previously mentioned, when expanding slice pools in storage products, different slice sizes can be implemented. Furthermore, some workloads may be better (e.g., more efficiently) processed in a small-slice pool than in a large-slice pool. It follows that while a client may choose a particular slice size for a given storage pool, factors change over time, making a different slice size more desirable from a performance perspective. For example, in some situations, a storage system may experience increased demand for physical storage, making it desirable to convert smaller-slice pools to larger-slice pools.
[0033] However, existing processes for converting the size of memory pools implemented by a given storage pool are time-consuming and inefficient. For example, conventional processes for converting the size of memory pools within a storage pool require that the data be completely relocated from the existing storage pool to another physical storage pool before changes to the memory pool sizes can be made. This data relocation process is particularly undesirable because it requires additional storage resources, processing bandwidth, time to physically copy all data to another storage medium, etc. Therefore, there is a desire for processes capable of efficiently converting the size of memory pools.
[0034] In stark contrast to the aforementioned shortcomings of conventional processes, several of the approaches included herein are desirably capable of converting the extent sizes of the memory banks in a data storage pool while the data remains in place. While this process involves some overhead for reordering the data before the actual change to the memory bank's extent sizes can occur, the data remains in the given storage pool during the conversion, significantly improving operational efficiency, as described in more detail below.
[0035] With reference now to Fig. 4A, a flowchart of a method 400 for converting an existing small-capacity storage pool into a planned large-capacity storage pool at the storage location is shown in accordance with one approach. The method 400 may be implemented in various approaches according to the present invention, including, but not limited to, any of the Fig. 1 to 3. It is understood that more or fewer operations than those specifically described in Fig. 4A may be included in the method 400, as will be apparent to one of ordinary skill in the art upon reading the present descriptions.
[0036] Each of the steps of method 400 may be performed by suitable components of the operating environment. For example, in various approaches, method 400 may be performed partially or entirely by a controller, a processor, a computer, etc., or another device having one or more processors. Therefore, in some approaches, method 400 may be a computer-implemented method. Furthermore, the terms computer, processor, and controller may be used interchangeably with respect to any of the approaches described herein, as these components are considered equivalent in the many different permutations of the present invention.
[0037] In approaches using a processor, the processor, e.g., processing circuit(s), chip(s), and / or module(s) implemented in hardware and / or software, and preferably including at least one hardware component, may be used in 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 data processing device known in the art.
[0038] As in Fig. 4A, operation 402 of method 400 includes identifying a request to convert the existing memory pool having a first memory bank slice size to the planned memory pool having a second memory bank slice size. As previously explained, method 400 includes converting a small memory bank slice size to a large memory bank slice size. Therefore, with respect to the present description, the "first memory bank slice" is comparatively smaller than the "second memory bank slice." For example, the existing memory pool configuration may have memory bank slices each approximately 16 MB in size, while the planned memory pool configuration may have memory bank slices each approximately 1 GB in size.As mentioned, some workloads can be processed significantly better in an environment where a given bucket size is implemented. For example, some workloads can be processed far better (e.g., more efficiently) in a small bucket pool than in a large bucket pool. A request to convert the bucket size of a given bucket pool can therefore be received from a running application in response to a newly initiated workload, from a user in response to checking system performance relative to the bucket size, etc.
[0039] It should also be noted that the terms "existing storage pool" and "planned storage pool" actually refer to different configurations of the same storage pool. In other words, the term "existing storage pool" refers to the existing state (e.g., smaller memory bank area) of the storage pool, while the term "planned storage pool" refers to the planned target state (e.g., larger memory bank area) of the same storage pool.
[0040] It will be appreciated by those skilled in the art that the logical configuration of an exemplary storage pool includes storage banks (RAID arrays) containing physical storage, and volumes that map the physical storage to a host-addressable range of logically contiguous storage (e.g., the number of a logical unit). The memory bank also includes a memory bank segment (extent) table (RST), while the volume includes volume segment (extent) tables (VST). These tables at least partially control mapping the various physical storage areas in memory banks to the storage areas corresponding to the respective volumes, as described in more detail below (see, for example, Fig. 5).
[0041] Further referring to Fig. 4A, operation 404 includes reordering disk slices in the existing storage pool such that the physical slices of the disk bank are substantially aligned with the boundaries between the slices of the planned storage pool's storage bank. Increasing the size of the storage pool implemented in a given storage pool while keeping the data in place includes re-arranging the disk slices so that the physical slices of the disk bank are aligned along the larger slice boundaries. In other words, by re-arranging the disk slices according to the present description, the successive small slices are allocated to the contiguous storage space for the larger planned (e.g.,intended) memory area, as will be apparent to a person skilled in the art upon reading this description.
[0042] According to preferred approaches, the disk spacers in the existing storage pool are reordered such that the physical spacers of the disk bank are substantially aligned with the boundaries between the spacers of the planned storage pool with larger spacers of the bank. For the purposes of this description, it should be noted that the phrase "substantially align" refers to a situation in which the disk spacers are reordered such that there is no padding between the disk spacers and the boundaries between the spacers of the bank. In other words, the disk spacers should preferably fill the larger planned storage banks without creating gaps.This further increases the efficiency of storage space utilization and improves the overall performance of a higher-level data storage system. However, other approaches can implement a tolerance that determines the acceptable amount of padding between disk storage areas and the boundaries between storage bank storage areas.
[0043] Reordering the disk storage areas at the storage location as described above is also desirable, as it prevents the data contained in the disks from being relocated outside the existing storage pool while the existing storage pool is being converted into the planned storage pool with the larger storage area of the memory bank. In particular, the approaches described here are capable of significantly reducing the amount of additional storage resources, processing bandwidth consumed, performance delays, etc., especially compared to conventional methods.
[0044] Furthermore, with reference to Fig. 4A, it should be noted that, in some approaches, the process for reordering the disk slices in the existing storage pool includes reordering the disk slices based on a temperature of the data contained in each disk slice. Stated another way, in some approaches, operation 404 includes using data thermal separation to determine how the disk slices should be arranged in the storage pool. This groups together disk slices in the existing storage pool that contain hot data, while also grouping together disk slices in the existing storage pool that contain cold data. This further increases the operational efficiency of the storage pool.However, it should also be noted that data thermal separation may be intentionally disabled after the disk slices have been reordered in operation 404 to avoid further changes to their alignment. Furthermore, when allocating new slices on a given disk, preference is given to allocating consecutive small slices aligned with adjacent large slices.
[0045] In other approaches, the process of reordering disk slices in the existing storage pool involves reordering disk slices based solely on the total size of the data logically represented by the disk slices. However, in other approaches, the reordering can be performed randomly, serially, non-serially, etc. In other approaches, the process of reordering disk slices can be performed based on one or more criteria, e.g., the data retrieval speed in the respective memory bank. For example, each of the memory banks can be listed in order of decreasing data retrieval speed, and disk slices can be assigned to memory banks according to the list (e.g., starting with memory banks with the fastest data retrieval speed, etc.).
[0046] After the individual volumes in the storage pool have been aligned to the larger planned storage area, the next step is to convert the memory banks to the new storage area size. Accordingly, operation 406 further comprises converting each of the memory banks in the existing storage pool from the first storage area size of the memory bank to the second storage area size of the memory bank. In other words, operation 406 comprises expanding the individual memory banks in the existing storage pool to the planned memory bank size associated with the planned memory pool. In preferred approaches, each of the memory banks in the existing storage pool is converted sequentially, by going from one memory bank to the next, but this is not intended to limit the invention in any way. For example, in some approaches, two or more memory banks may be expanded in parallel.
[0047] As mentioned earlier, it is desirable to increase the size of a given memory bank without relocating data for this purpose. Fig. 4B, exemplary subprocesses for converting each of the memory banks in the existing memory pool from the smaller first memory bank area to the larger second memory bank area are shown according to an illustrative approach. As a result, one or more of the Fig. 4B contained subprocesses can be used to perform the operation 406 of Fig. 4A. However, it should be noted that the sub-processes of Fig. 4B according to one approach, which is not intended to limit the invention in any way.
[0048] As shown, sub-operation 450 involves going to a memory bank in the existing memory pool. For example, a first iteration of the sub-processes in Fig. 4B Go to a first memory bank in the memory pool, while subsequent iterations of the subprocesses in Fig. 4B Go to a subsequent memory bank in the memory pool. As already mentioned, the subprocesses in Fig. 4B can be repeated iteratively for each of the memory banks in the memory pool.
[0049] To convert the memory banks while keeping the data in place, a new table is created that maps to the layout of the smaller existing memory bank portion already contained by the volumes. Accordingly, sub-operation 452 includes allocating new RST space and / or new RST entries for the given memory bank identified in sub-process 450. As previously mentioned, this newly allocated RST space and / or these RST entries correspond to the larger planned memory bank portion, and can therefore be used to convert the size of the given memory bank without relocating the data stored therein.For example, the newly allocated RST space and / or RST entries may be populated with a logical location of the data in the volumes that have been rearranged to be substantially aligned with the boundaries of the given memory bank. According to some approaches, this may be achieved by identifying a volume and a volume storage region within that volume where the data is logically stored.
[0050] It should further be noted that in preferred approaches, the RST is configured one-to-one by memory region. In other words, each RST entry corresponds to a memory region of a memory bank of a given size and points to a corresponding disk memory region. For example, in some approaches, the memory regions in the given memory bank are represented as RST entries for the memory bank, where each memory region of the memory bank represents a predetermined amount of memory space for storing data within the memory pool. Furthermore, the process for allocating new RST memory space may be performed using any process, as will be apparent to one of ordinary skill in the art upon reading this description.
[0051] Furthermore, with regard to Fig. 4B includes sub-operation 454 stopping all activities for changing the memory regions for the given memory bank. In this way, the given memory bank can be converted while the memory regions contained therein must temporarily remain unchanged, thereby avoiding errors, as will be obvious to one skilled in the art. However, even if the activities for changing the memory regions for the given memory bank are stopped, it should be noted that in some approaches, the remaining memory banks in the memory pool may remain unaffected. In this way, the memory pool as a whole can desirably continue to function while the memory region size of each of the memory banks contained therein is systematically converted, and the need to relocate data from the pool for the conversion is avoided.
[0052] The flowchart continues to sub-operation 456, which includes filling the newly allocated RST memory location and / or the RST entries with a new entry corresponding to the second memory bank size. In other words, sub-operation 456 includes filling the new RST entry formed in sub-operation 452 to point to the smaller disk memory locations that have been reordered according to the planned larger memory bank size to align with the boundaries of the given memory bank. According to some approaches, one or more pointers pointing to the relevant disk memory locations (e.g., by reference number) may be used to fill the newly allocated RST memory location. However, any processes may be implemented, e.g., depending on the desired approach.
[0053] Suboperation 458 further includes performing a temporary pause / lock on an existing RST entry corresponding to the given memory bank, while suboperation 460 includes activating the new RST entry corresponding to (e.g., pointing to) the second memory bank size. Suboperations 458 and 460 are thereby able to transition from the existing (e.g., previous) RST entry to the newly allocated RST entry. According to some approaches, performing a temporary pause / lock on the existing RST entry may mean checking all possible threads before the schedule can transition to using the newly allocated RST entry.
[0054] In response to activating the newly allocated RST entry, sub-operation 462 includes resuming activities to change the memory range for the given memory bank. Sub-operation 464 additionally includes freeing the existing (e.g., previous) RST entry so that it can be reused as desired. In some approaches, freeing the existing RST entry means, for example, freeing the space in the table so that it can be used for other memory banks. Additionally, any information (e.g., data, metadata, etc.) stored in the existing RST entry may be deleted.
[0055] At decision 466, the flowchart includes determining whether all memory banks in the existing memory pool have been converted to implement the larger memory range of the memory bank. In other words, decision 466 includes determining whether all memory banks in the existing memory pool have been checked. In response to determining that at least one of the memory banks in the existing memory pool has not yet been converted to implement the larger memory range of the memory bank, the flowchart returns to sub-operation 450. There, sub-operation 450 includes going to the next memory bank that has not yet been converted so that the Fig. 4B may be repeated for this memory bank, for example. However, in response to determining that all memory banks in the existing memory pool have been converted to implement the larger memory range of the memory bank, the flowchart continues with operation 408 of Fig. 4A continues.
[0056] Back to Fig. 4A: there, operation 408 actually involves converting the data carriers so that they are assigned to the newly converted memory banks. In other words, after converting each of the memory banks to implement the larger storage area of the memory bank, the data carriers themselves are also converted. With reference to Fig. 4C, exemplary subprocesses are shown according to an illustrative approach to convert the data carriers to be assigned to the newly converted memory banks. As a result, one or more of the Fig. 4C contained subprocesses can be used to perform operation 408 of Fig. 4A. However, it should be noted that the sub-processes of Fig. 4C according to one approach, which is not intended to limit the invention in any way.
[0057] As shown, sub-operation 470 involves going to a disk in the storage pool. For example, a first iteration of the sub-processes in Fig. 4C Go to a first disk in the storage pool, while subsequent iterations of the subprocesses in Fig. 4C Go to a subsequent disk in the storage pool. As already mentioned, the subprocesses in Fig. 4C can be repeated iteratively for each of the disks in the storage pool.
[0058] It continues with suboperation 472, where a temporary pause / lock is performed on a VST entry corresponding to the given volume. According to some approaches, performing the temporary pause / lock involves checking each of the possible threads associated with the VST entry in question.
[0059] Furthermore, sub-operation 474 includes removing an existing structure associated with the VST entry corresponding to (e.g., pointing to) the first memory bank size. As previously mentioned, the individual volumes are preferably converted to map to the newly converted memory banks with the larger memory bank size. To this end, all existing structures mapping a given volume to the original memory bank configuration with the smaller memory bank size are preferably removed. This eliminates the existing VST structure that formed the smaller memory bank sizes, allowing the larger memory bank sizes to be implemented.
[0060] In response to removing the existing structure, sub-operation 476 further comprises filling the VST entry with a new structure corresponding to the larger memory bank region. As a result, the VST entry points to the physical memory bank region (e.g., the memory bank starting number for the physical memory bank) with the larger memory bank region. In preferred approaches, the VST entry may point to the memory bank starting number for the physical memory bank because disk memory bank numbering uses the smallest unit of memory bank. Furthermore, as described above, in some approaches, memory banks are physically packed together without padding, as will be apparent to one of ordinary skill in the art upon reading the present description, for example.
[0061] According to some approaches, which are not intended to limit the invention in any way, the VST entry may be populated with a new structure corresponding to the larger storage area of the memory bank by creating a correspondence between logical volume storage areas of the volume and physical relocation locations within the respective storage area(s) of the memory bank of the storage pool. Creating the correspondence may include identifying VST entries in the volume that correspond to the respective storage area(s) of the memory bank that was / were converted to the larger storage area. For example, a VST may store a logical representation of the data stored on the volume, wherein the VST comprises a plurality of entries. A subset of these entries may be identified within the VST that correspond to the respective storage area(s) of the memory bank.
[0062] In other approaches, creating the correspondence may include creating an additional VST for each identified VST entry. For example, an additional VST may be created for each identified subset of VST entries. In another example, each of the additional VSTs may be used to represent all logical volume extents within its corresponding VST entry at a higher granularity. In other approaches, creating the correspondence may include setting the logical volume extents within the additional VSTs to point to corresponding relocation locations within the converted extents of the memory bank. In this way, a direct correspondence may be established between the logical volume extents of the additional VSTs of the volume and the relocation locations within the extents of the memory bank.
[0063] Furthermore, at 478, the flowchart includes determining whether all volumes in the existing storage pool have been converted. In other words, the decision 478 includes determining whether all volumes in the existing storage pool have been converted to be allocated to the newly converted storage banks. In response to determining that at least one of the volumes has not yet been converted, the flowchart returns to sub-operation 470. There, sub-operation 470 includes moving to the next volume that has not yet been converted so that the Fig. 4C may be repeated for this volume. However, in response to determining that all volumes in the existing storage pool have been converted to the larger storage area of the memory bank, the flowchart continues with operation 410 of Fig. 4A continues.
[0064] With further reference to Fig. 4A, the flowchart proceeds to operation 410 after all memory banks and volumes have been converted, at which point method 400 may end. Accordingly, in response to reaching operation 410, the memory pool may be considered to have been converted from an existing small-sized memory pool to a scheduled large-sized memory pool. However, it should be noted that while method 400 may end upon reaching operation 410, one or more of the processes included in method 400 may be repeated to convert another memory pool. In other words, one or more of the processes included in method 400 may be repeated to convert another existing small-sized memory pool to a scheduled large-sized memory pool at the memory location.
[0065] It follows that the various processes and sub-processes that are part of the Fig. 4A to 4C are capable of converting the memory area size of the memory banks in a data memory pool while the data remains in place. While this process involves some overhead for reordering the data before the actual change to the memory bank's memory area size can occur, the conversion allows the data to remain in the given memory pool, which significantly improves operational efficiency, reduces data memory usage, shortens processing times, reduces network traffic (which would otherwise be generated, for example, by moving the data), etc. These improvements are achieved (at least in part) by the fact that the properties of the data disks allow these various processes and subprocesses to convert the layout of the disks and memory banks into larger memory areas.As mentioned earlier, the properties of the RST and VST tables allow this to be achieved without having to move data to other affected storage pools or machines.
[0066] With reference now to Fig. 5 illustrates an exemplary storage environment 500 according to one approach. Optionally, the present storage environment 500 may be implemented in conjunction with features of any other approaches listed herein, e.g., those described with reference to the other FIGURES, e.g., Fig. 4A to 4C. However, this storage environment 500 and others presented herein may be used in various applications and / or permutations, which may be specifically described in the illustrative approaches listed herein. Furthermore, the storage environment 500 presented herein may be used in any desired environment. Thus, it can be assumed that Fig. 5 (and the other FIGURES) includes every possible permutation.
[0067] As illustrated, a VST 502 stores a logical representation of data stored on a disk 0 504. In addition, one or more RSTs store a physical representation of the data as stored in a memory bank 3 524 of an existing memory pool 0 526. It should also be noted that the granularity of the memory bank of the existing memory pool 0 526 is 16 MB according to the present approach. For example, each memory bank region in the existing memory pool 0 526 has a size of approximately 16 MB. However, these memory bank regions can be converted from a size of approximately 16 MB to approximately 1 GB, e.g., using one or more of the approaches described herein (see, e.g., Fig. 4A to 4C above).
[0068] Further referring to Fig. 5, the VST entries 532 and 534 of the complete volume storage area refer to the storage locations 530A and 530B within the RSTs in which the data is physically stored in the existing storage pool 0 526. For example, the storage area 0 530A of the memory bank 3 524 of the existing storage pool 0 526 includes a link to the VST entry 0 532 in the volume 0 504. Conversely, the VST entry 0 532 in the volume 0 504 includes a link to the storage area 0 530A of the memory bank 3 524 of the existing storage pool 0 526.
[0069] Likewise, the memory area 64 530B of the memory bank 3 524 of the existing memory pool 0 526 includes a link to the VST entry 2 534 in the volume 0 504. Conversely, the VST entry 2 534 in the volume 0 504 includes a link to the memory area 64 530B of the memory bank 3 524 of the existing memory pool 0 526. In this way, a connection between a logical representation of data in the volume 0 504 is mapped to a physical representation of data in the existing memory pool 0 526.
[0070] As mentioned, extent pools in storage products can have different extent sizes. For example, a DS8000 data storage platform might implement a 1 GB extent size for a larger pool and a 16 MB extent size for a smaller pool. Furthermore, as mentioned previously, some workloads are better served with small pools, while others are better served in large extent pools. It follows that the various approaches described here can be used to improve performance by adjusting the extent size implemented in a given pool.
[0071] According to one application example, which is not intended to limit the invention in any way, an RST is used as a mapping table for a memory bank (an array) that describes the state of memory areas of the memory bank and the logical volume memory areas to which the physical memory areas of the memory bank belong. Assuming the memory bank "r0" is 1T and the memory area size is 1G, this RST table would have 1024 entries, each representing a physical memory area. If the memory area of memory bank 0 is mapped to logical memory area 1 of volume 0x1010, the entry in the RST contains information indicating that the state of the physical memory area is mapped, and that it is mapped to logical memory area 1 of volume 0x1010.
[0072] In addition, a VST is used as a disk mapping table that maps the logical storage area of the disk to the physical storage area of the memory bank, so that the physical storage location can be easily identified when a host I / O arrives that lies on a logical block addressing (LBA) boundary of the disk, as will be apparent to one of ordinary skill in the art upon reading this description.
[0073] Furthermore, in an illustrative approach, a small VST (smVST) can be used as a mapping table for a disk. This table contains 64 entries, where each entry maps a small logical memory area (16 MB) to the physical memory area of the memory bank, allowing a physical memory location to be identified when a host I / O arrives that lies on a disk LBA boundary. Another approach is to maintain only one RST on the disks, and to create a VST based on the RST and load it into memory when needed.
[0074] While some of the approaches described here are capable of converting storage pools with smaller extents to storage pools with larger extents (at least relative to the smaller extents), others of the approaches described here are capable of converting storage pools with larger extents to storage pools with smaller extents. As mentioned earlier, conventional processes for converting the extent size implemented by a given storage pool have proven inefficient in terms of performance degradation, resource consumption, etc. For example, conventional processes for converting the size of extents in a storage pool require that the data be first moved from the existing storage pool to another physical storage pool before any changes to the extent sizes can be made.This traditional process of moving data is particularly undesirable because it requires additional storage resources, processing bandwidth, time to physically copy all the data to the other storage medium, etc.
[0075] In stark contrast to the conventional shortcomings, several of the approaches described here are desirably capable of converting the memory range size of the memory banks in a data storage pool while keeping the data in place. In particular, some of the approaches described here are capable of increasing the memory range implemented by a given memory pool, thereby significantly improving operational efficiency, as described in more detail below.
[0076] With reference to Fig. 6A, a flowchart for a method 600 for converting an existing storage pool with a larger storage area into a planned storage pool with a smaller storage area at the storage location is shown, according to one approach. The method 600 can be implemented in various approaches according to the present invention, including, but not limited to, any of the Fig. 1 to 5. It is understood that more or fewer operations than those specifically described in Fig. 6A may be included in the method 600, as will be apparent to one of ordinary skill in the art upon reading the present descriptions.
[0077] Each of the steps of method 600 may be performed by suitable components of the operating environment. For example, in various approaches, method 600 may be performed partially or entirely by a controller, a processor, a computer, etc., or another device having one or more processors. Therefore, in some approaches, method 600 may be a computer-implemented method. Furthermore, the terms computer, processor, and controller may be used interchangeably with respect to any of the approaches described herein, as these components are considered equivalent in the many different permutations of the present invention.
[0078] In approaches using a processor, the processor, e.g., processing circuit(s), chip(s), and / or module(s) implemented in hardware and / or software, and preferably including at least one hardware component, may be used in any device to perform one or more steps of method 600. 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 data processing device known in the art.
[0079] As in Fig. 6A, operation 602 of method 600 includes identifying a request to convert the existing storage pool having a first extent size to the planned storage pool having a second extent size. As previously mentioned, with this approach, the first extent corresponding to the existing storage pool is larger than the second extent corresponding to the planned storage pool. Therefore, with respect to the present description, the "first extent" is larger than the "second extent" by comparison. For example, the existing storage pool configuration may have extents each approximately 1 GB in size, while the planned storage pool configuration may have extents each approximately 16 MB in size. As previously mentioned, some workloads may be significantly better processed in an environment where a given extent size is implemented.For example, some workloads are processed significantly more efficiently with a memory pool containing smaller slices than with a memory pool containing larger slices. A request to convert the slice size of a given memory pool may therefore be received from a running application in response to a newly initiated workload, from a user in response to checking system performance relative to the slice size, etc.
[0080] It should also be noted that the terms "existing storage pool" and "planned storage pool" actually refer to different configurations of the same storage pool. In other words, the term "existing storage pool" should refer to the existing state (e.g., larger storage area) of the storage pool, while the term "planned storage pool" should refer to the planned target state (e.g., smaller storage area) of the same storage pool.
[0081] It will be apparent to one skilled in the art that the logical configuration of an exemplary storage pool includes storage banks (RAID arrays) containing physical storage, and disks that map the physical storage to a host-addressable range of logically contiguous storage (e.g., the number of a logical unit). The memory bank also includes a memory bank segment (extent) table (RST), while the disk includes disk segment (extent) tables (VST). These tables, at least in part, control mapping the various physical storage areas in memory banks to the storage areas corresponding to the respective disks (see, e.g., Fig. 5 above).
[0082] Furthermore, with reference to Fig. 6A, operation 604 includes going to a first volume in the existing storage pool, while operation 606 includes temporarily pausing / locking a Volume Segment Table (VST) entry corresponding to the given volume. As described herein, the "first volume" may include any of the volumes in the existing storage pool. Depending on the approach, the first volume may, for example, be randomly identified based on a comparison between the volumes in the existing storage pool, pre-determined by a user, etc. As will be seen shortly, each volume in the existing storage pool is preferably examined, so that the order in which method 600 traverses the volumes does not affect the resulting storage pool in some approaches.
[0083] When performing the temporary pause / lock for the VST entry, access to the given VST and / or an associated disk is effectively prevented, allowing adjustments to be made without error. According to some approaches, the process for performing the temporary pause / lock for the VST entry includes checking each of the possible threads associated with the VST entry in question. In other approaches, the temporary pause / lock for the given VST entry may be performed by setting a flag, temporarily invalidating an address associated with the entry, etc., or by any other processes as will be apparent to one of ordinary skill in the art upon reading this description.
[0084] Method 600 further includes applying a new structure to the VST entry, thereby modifying the existing physical memory regions associated with the VST entry. See operation 608. The new structure applied (e.g., mapped) to the VST entry preferably divides existing physical memory regions associated with the VST entry into two or more smaller physical memory regions. In other words, the new VST entry creates the new physical memory regions and the corresponding references thereto.
[0085] These smaller physical memory regions are preferably formed to correspond to the smaller second memory bank size of the planned memory pool. In other words, the new structure applied to the VST entry is preferably configured to divide the existing physical memory region into a series of smaller memory regions that correspond to the characteristics of the planned memory pool. According to an exemplary approach, which is not intended to limit the invention in any way, each of the physical memory regions associated with the VST entry may have a size of approximately 1 gigabyte prior to applying the new structure. However, in response to applying the new structure, each of the modified physical memory regions associated with the new structure applied to the VST entry may have a size of approximately 16 megabytes, but may also be larger or smaller depending on the desired approach.
[0086] The smaller physical memory areas are preferably aligned with the boundaries between the memory areas of the planned memory pool without backfilling. In other words, the smaller physical memory areas are formed from the existing physical memory areas in such a way that the smaller physical memory areas do not extend beyond the boundaries between the memory areas. The process of applying the new structure and forming the new (smaller) physical memory areas may also include renumbering the memory areas and / or specifying relocations therein, as will be apparent to one skilled in the art upon reading this description.
[0087] From operation 608, method 600 proceeds to decision 610, where it is determined whether all volumes in the existing storage pool have been verified. In response to determining that at least one of the volumes in the existing storage pool has not yet been verified, method 600 proceeds to operation 612. There, operation 612 includes moving to a next volume in the existing storage pool before returning to operation 606 so that a temporary pause / lock is performed on the next volume. Consequently, processes 606 through 612 may be repeated iteratively for all volumes in the existing storage pool.
[0088] When the method returns to decision 610, it branches to operation 614 in response to determining that all volumes in the existing storage pool have been verified and their existing physical storage areas have been partitioned into smaller physical storage areas. There, operation 614 includes converting each of the memory banks in the existing storage pool from the larger first storage area to the smaller second storage area. Stated another way, operation 614 includes shrinking the size of each of the memory banks in the existing storage pool to the planned memory bank size associated with the planned memory pool. In preferred approaches, each of the memory banks in the existing storage pool is converted sequentially, going from one memory bank to the next, but this is not intended to limit the invention in any way. For example, in some approaches, two or more memory banks may be shrinked in parallel.
[0089] As mentioned earlier, the process of reducing the size of a given memory bank without data relocation is desirable. With reference to Fig. 6B, exemplary subprocesses for converting each of the memory banks in the existing memory pool from the larger first memory bank area to the smaller second memory bank area are shown according to an illustrative approach. As a result, one or more of the Fig. 6B contained subprocesses can be used to perform the operation 614 of Fig. 6A. However, it should be noted that the sub-processes of Fig. 6B according to one approach, which is not intended to limit the invention in any way.
[0090] As shown, sub-operation 650 involves going to a memory bank in the existing memory pool. For example, a first iteration of the sub-processes in Fig. 6B Go to a first memory bank in the memory pool, while subsequent iterations of the sub-processes in Fig. 6B Go to a subsequent memory bank in the memory pool. As already mentioned, the subprocesses in Fig. 6B can be repeated iteratively for each of the memory banks in the memory pool.
[0091] In order to convert the memory banks while keeping the data in its current location, a new table is created that is associated with the smaller memory area layout into which the volumes were converted (see, for example, operation 608 above). Accordingly, sub-operation 652 comprises allocating new RST space and / or new RST entries for the given memory bank identified in sub-process 650. As already mentioned, this newly allocated RST space and / or these RST entries correspond to the smaller planned memory area, and they can therefore be used to convert the size of the given memory area without having to relocate the data stored therein. The newly allocated RST space and / or the RST entries can, for example, be filled with a logical location of the data in the volumes formed from the previous larger memory area.According to some approaches, this can be achieved by identifying a disk and a disk storage region within that disk on which the data is logically stored.
[0092] It should further be noted that in preferred approaches, the RST is configured one-to-one by memory region. In other words, each RST entry corresponds to a memory region of a memory bank of a given size and points to a corresponding disk memory region. For example, in some approaches, the memory regions in the given memory bank are represented as RST entries for the memory bank, where each memory region of the memory bank represents a predetermined amount of memory space for storing data within the memory pool. Furthermore, the process for allocating new RST memory space may be performed using any process, as will be apparent to one of ordinary skill in the art upon reading this description.
[0093] Furthermore, with reference to Fig. 6B includes sub-operation 654 stopping all activities for changing the memory range for the given memory bank. In this way, the given memory bank can be converted while the memory ranges contained therein must remain temporarily unchanged, thereby avoiding errors, as will be obvious to one skilled in the art. However, even if the activities for changing the memory ranges for the given memory bank are stopped, it should be noted that in some approaches the remaining memory banks in the memory pool may remain unaffected. In this way, the memory pool as a whole can desirably continue to function while the memory range size of each of the memory banks therein is systematically converted, and the need to relocate data from the pool to form the planned memory pool is avoided for the conversion.
[0094] The flowchart continues to sub-operation 656, which includes filling the newly allocated RST memory location with a new entry corresponding to the second memory region size. In other words, sub-operation 656 includes filling the new RST entry formed in sub-operation 652 to point to the smaller disk memory regions formed in response to applying the new structure to the corresponding VST entry with a larger disk memory region. According to some approaches, one or more pointers pointing to the relevant disk memory regions (e.g., by reference number) may be used to fill the newly allocated RST memory location. However, any processes may be implemented, e.g., depending on the desired approach.
[0095] Suboperation 658 further includes performing a temporary pause / lock on an existing RST entry corresponding to the given memory bank, while suboperation 660 includes activating the new RST entry created in suboperation 652. Suboperations 658 and 660 are thereby able to smoothly transition from the existing (e.g., previous) RST entry to the newly allocated RST entry. According to some approaches, performing a temporary pause / lock on the existing RST entry may mean checking all possible threads before the schedule can transition to using the newly allocated RST entry.
[0096] In response to activating the newly allocated RST entry, sub-operation 662 includes resuming activities to change the memory range for the given memory bank. Sub-operation 664 additionally includes freeing the existing (e.g., previous) RST entry so that it can be reused as desired. In some approaches, freeing the existing RST entry means, for example, freeing the space in the table so that it can be used for other memory banks. Additionally, any information (e.g., data, metadata, etc.) stored in the existing RST entry may be deleted.
[0097] At decision 666, the flowchart includes determining whether all memory banks in the existing memory pool have been converted to implement the smaller memory range. In other words, decision 666 includes determining whether all memory banks in the existing memory pool have been checked. In response to determining that at least one of the memory banks in the existing memory pool has not yet been converted to implement the larger memory range, the flowchart returns to sub-operation 650. There, sub-operation 650 includes going to the next memory bank that has not yet been converted so that the Fig. 6B shown subprocesses can be repeated for this memory bank, for example.
[0098] However, in response to determining that all memory banks in the existing memory pool have been converted to implement the smaller memory range, the schedule continues with operation 616 of Fig. 6A, at which point the method 600 may end. Accordingly, in response to reaching operation 616, the memory pool may be considered to have been converted from an existing large-scale memory pool to a scheduled small-scale memory pool. However, it should be noted that while the method 600 may end upon reaching operation 616, one or more of the processes included in the method 600 may be repeated to convert another memory pool. In other words, one or more of the processes included in the method 600 may be repeated to convert another existing small-scale memory pool to a scheduled large-scale memory pool at the memory location.
[0099] It follows that the various processes and sub-processes that are part of the Fig. 6A and Fig.6B, are capable of converting the extent size of the memory banks in a data storage pool while the data remains in place. In this way, significant improvements can be achieved for the higher-level storage system, e.g., improved operational efficiency, reduced data storage usage, less performance degradation, less network traffic (which would otherwise be generated when moving the data), etc. These improvements are achieved (at least in part) by the fact that the properties of the disks allow these various processes and subprocesses to convert the layout of the disks and memory banks into smaller memory extents at the location. As mentioned, the properties of the RST and / or VST make it possible to achieve these improvements with tables without having to move data to other storage pools or machines.
[0100] As mentioned, when expanding slice pools in storage products, different slice sizes can be implemented. Furthermore, some workloads may be better (e.g., more efficiently) processed in a small-slice pool than in a large-slice pool. It follows that while a client may choose a particular slice size for a given storage pool, factors change over time, making a different slice size more desirable from a performance perspective. For example, in some situations, a storage system may experience increased demand for physical storage, making it desirable to convert smaller-slice pools to larger-slice pools.It follows that some of the approaches described here can be implemented to adjust the storage area size implemented by a storage pool at the storage location without having to physically relocate the data stored in it.
[0101] The present invention may be a system, a method, and / or a computer program product at any possible level of technical detail of integration. The computer program product may comprise a computer-readable storage medium(s) having computer-readable program instructions stored thereon for causing a processor to carry out aspects of the present invention.
[0102] The computer-readable storage medium may be any physical device that can retain and store instructions for use by an instruction-executing device. The computer-readable storage medium may be, for example, but is 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 thereof. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer diskette, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM).Flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory stick, floppy disk, mechanically encoded device such as punched cards or raised structures in a groove on which instructions are stored, and any suitable combination thereof. A computer-readable storage medium, as used herein, should not be construed as carrying transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., pulses of light traveling through fiber optic cables), or electrical signals carried through a wire.
[0103] Computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to respective computing / processing units or to an external computer or external storage unit via a network such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, fiber optic transmission lines, wireless transmission, routers, firewalls, switching units, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing unit.
[0104] Computer-readable program instructions for performing operations of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, integrated circuit configuration data, or either source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++, or the like, and procedural programming languages such as the C programming language or similar programming languages.The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, over the Internet using an Internet service provider).In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute the computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuits to perform aspects of the present invention.
[0105] Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, may be implemented by computer-readable program instructions.
[0106] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing device to produce a machine, such that the instructions executing via the processor of the computer or other programmable data processing device produce a means for implementing the functions / steps defined in the block(s) of flowchart and / or block diagrams.These computer-readable program instructions may also be stored on a computer-readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium having instructions stored thereon comprises an article of manufacture, including instructions that implement aspects of the function / step specified in the block(s) of the flowchart and / or block diagrams or charts.
[0107] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of process steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-executable process such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / steps defined in the block(s) of flowchart and / or block diagrams.
[0108] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions comprising one or more executable instructions for performing the particular logical function(s). In some alternative implementations, the functions specified in the block may occur in a different order than shown in the figures.For example, two blocks shown in sequence may actually be executed as a single step, executed concurrently, executed substantially simultaneously, executed in a fully or partially overlapping time sequence, or the blocks may sometimes be executed in reverse order depending on the respective functionality. It should also be noted that each block of the block diagrams and / or flowcharts, as well as combinations of blocks in the block diagrams and / or flowcharts, may be implemented by special-purpose hardware-based systems that perform the specified functions or steps, or by combinations of special-purpose hardware and computer instructions.
[0109] Furthermore, according to various embodiments, a system may include a processor and logic integrated into and / or executable by the processor, wherein the logic is configured to perform one or more of the process steps described herein. The processor may have any configuration described herein, e.g., a discrete processor or processing circuitry comprising many components, e.g., processing hardware, memory, I / O interfaces, etc. By "integrated into" is meant that the processor has embedded logic as hardware logic, such as an application-specific integrated circuit (ASIC), an FPGA, etc. By "executable by the processor" is meant that the logic is hardware logic; software logic such as firmware, part of an operating system, part of an application program; etc.or a combination of hardware and software logic accessible by the processor and configured to cause the processor to perform a particular functionality when executed by the processor. Software logic may be stored on local and / or remote memory of any memory type known in the art. Any processor known in the art may be used, e.g., a software processor module and / or a hardware processor such as an ASIC, an FPGA, a central processing unit (CPU), an integrated circuit (IC), a graphics processing unit (GPU), etc.
[0110] It is obvious that the various features of the above-mentioned systems and / or methodologies can be combined in any way, resulting in a multitude of combinations from the above descriptions.
[0111] It will further be appreciated that embodiments of the present invention may be provided in the form of a service deployed to a customer to provide a service on demand.
[0112] The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments. It will be apparent to those skilled in the art that many changes and modifications are possible without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical application, or technical improvement over technologies on the market, or to enable those skilled in the art to understand the embodiments described herein.
Claims
[1] A computer-implemented method (600) for converting an existing storage pool (526) into a planned storage pool at the storage location, the method comprising: Identifying (602) a request to convert the existing memory pool having a first memory area size of its memory banks into the planned memory pool having a second memory area size of its memory banks, wherein the first memory area is larger than the second memory area; for each volume (504) in the existing storage pool (526): Performing (606) a temporary pause / lock for an entry (532, 534) in a volume segment table (VST) corresponding to the given volume, applying (608) a new structure to the VST entry, wherein the new structure divides existing physical memory areas associated with the VST entry into two or more smaller physical memory areas; and For each of the memory banks (524) in the existing memory pool, converting (614) the given memory bank from the first memory area size to the second memory area size. [2] The computer-implemented method of claim 1, wherein converting the given memory bank from the first memory bank size to the second memory bank size comprises: Allocating (652) new memory space in a memory bank segment table (RST); setting (654) the activity for changing the memory range for the given memory bank; Filling (656) the new allocated RST memory location with a new entry corresponding to the second memory area size; performing (658) a temporary pause / lock for an existing RST entry corresponding to the given memory bank; and Resuming (662) the activity for changing the memory range for the given memory bank. [3] The computer-implemented method of claim 2, wherein converting the given memory bank from the first memory bank size to the second memory bank size comprises: Release (660) the existing RST entry. [4] The computer-implemented method of claim 2, wherein the RST is configured such that each RST entry corresponds to a memory region of the memory bank of a given size and points to a corresponding data storage memory region. [5] The computer-implemented method of claim 1, wherein the new structure divides the existing physical memory regions associated with the VST entry into two or more smaller physical memory regions such that the smaller physical memory regions align with the boundaries between the memory regions of the planned memory pool without backfilling. [6] The computer-implemented method of claim 1, wherein the data in the volumes is not externalized from the existing storage pool when converting the existing storage pool to the planned storage pool. [7] The computer-implemented method of claim 1, wherein the first memory area size is about 1 gigabyte, wherein the second memory area size is about 16 megabytes. [8] A computer-implemented method according to any one of the preceding claims, wherein the memory banks are RAID arrays. [9] A computer program product for converting an existing storage pool into a planned storage pool at the storage location, the computer program product comprising a computer-readable storage medium having program instructions contained therein, the program instructions being readable and / or executable by a processor to cause the processor to perform a computer-implemented method according to any one of the preceding claims. [10] System that has: a processor (210); and Logic integrated into the processor, executable by the processor, or integrated into the processor and executable by the processor, the logic being configured to perform a computer-implemented method according to any one of the preceding claims 1 to 8.
Citation Information
Patent Citations
Automatic memory management using a memory management unit
US20180137045A1
Virtually addressable hardware global kernel segment table
US20190114259A1