Freeing up data storage tracks while maintaining logical corruption protection

By releasing storage tracks only after verifying the expiration of corresponding backups, the method addresses data loss and corruption issues, enhancing data security and performance in storage systems.

JP7663297B2Active Publication Date: 2025-04-16INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023505725
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-08-06
Filing Date
2021-07-22
Publication Date
2025-04-16
Estimated Expiration
2041-07-22

AI Technical Summary

Technical Problem

Existing data storage systems face issues with logical corruption when tracks are freed for reuse, leading to potential data loss or corruption due to reliance on expired backups, which are not accounted for in current space reclaiming utilities.

Method used

Implement a method that identifies and releases storage tracks only after determining that corresponding data backups in the backup storage space have expired, ensuring all backups are up to date before freeing the tracks, using a space freeing bitmap (SRBM) for asynchronous tracking.

Benefits of technology

Ensures data security and improves storage performance by preventing logical corruption and reducing used space, particularly in thin-provisioned systems, by ensuring all backups are valid before releasing tracks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007663297000001
    Figure 0007663297000001
  • Figure 0007663297000002
    Figure 0007663297000002
  • Figure 0007663297000003
    Figure 0007663297000003
Patent Text Reader

Abstract

A computer-implemented method includes receiving an indication of a track range to be released within a storage volume, identifying a data backup within a backup storage space for the storage volume that corresponds to the track range, and releasing the track range within the storage volume in response to determining that the corresponding data backup within the backup storage space has expired.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to implementing logical corruption protection (LCP) for data, and more particularly, the present invention relates to releasing data storage tracks while maintaining LCP. [Background technology]

[0002] To implement the LCP of data in a storage volume, a backup storage space may be created and used to store backups of data from the storage volume. For example, a point-in-time snapshot of given data in a storage volume may be created and stored in the backup storage space. These data backups may be used to restore data in a storage volume that is lost or corrupted.

[0003] Additionally, space reclaiming utilities may be run on storage volumes to identify tracks of the storage volume that are not currently in use and can be freed up for future data storage, thereby increasing the available usable capacity of the storage system by reusing unused portions of the storage volume for other purposes.

[0004] However, the tracks stored within a storage volume may be relied upon by data backups to restore data within the storage volume in response to data loss / corruption. If one or more of these tracks are freed in response to a command from a space freeing utility, the associated data backups that depend on those tracks may not be able to restore the data within the storage volume. This may result in data loss / corruption in the storage volume that cannot be resolved by LCP. Summary of the Invention

[0005] A computer-implemented method according to one aspect includes receiving an indication of a track range to be released within a storage volume, identifying a data backup in a backup storage space for the storage volume that corresponds to the track range, and releasing the track range in the storage volume in response to determining that the corresponding data backup in the backup storage space has expired.

[0006] In this way, data scheduled for removal from a storage volume due to storage volume track release can only be removed when all backups in the backup storage space that depend on that data have expired. This ensures that all backups in the backup storage space have all associated data available in the storage volume for data restore if necessary. This maintains the security of the data in the storage volume due to the LCP implementation.

[0007] In one embodiment, a backup storage space is created as part of implementing logical corruption protection (LCP) for data in a storage volume.

[0008] According to another aspect, a computer program product for freeing data storage tracks while maintaining logical corruption protection includes a computer readable storage medium having program instructions embodied thereon, the computer readable storage medium being not a transient signal itself, the program instructions being executable by a processor to cause the processor to perform a method, the method including receiving, by the processor, an indication of a track range to be freed within a storage volume; identifying, by the processor, a data backup in a backup storage space for the storage volume corresponding to the track range; and, in response to determining, by the processor, that the corresponding data backup in the backup storage space has expired, freeing the track range in the storage volume.

[0009] In one embodiment, an indicator of the track range to be released within the storage volume is stored in a space release bitmap (SRBM), in which the track range can be released asynchronously (e.g., at a time later than the time the indicator is received).

[0010] According to another aspect, a system includes a processor and logic incorporated in, executable by, or incorporated in and executable by the processor, the logic configured to receive an indication of a track range to be released within a storage volume, identify a data backup in a backup storage space for the storage volume that corresponds to the track range, and release the track range in the storage volume in response to determining that the corresponding data backup in the backup storage space has expired.

[0011] In this way, by ensuring that LCP is performed for a storage volume when a track range is freed, the storage volume can be protected from logical corruption, thereby improving the performance of the storage volume itself. Freeing up extents within a storage volume can also reduce the amount of used space within the storage volume, thereby improving the performance of the storage volume (for example, when the storage volume is thin provisioned).

[0012] In one embodiment, in response to determining that the data backup depends on one or more tracks within the track range to perform a data restore of the storage volume, a data backup in a backup storage space is identified as corresponding to the track range.

[0013] According to another embodiment, a computer-implemented method includes receiving an indication indicating a track range to be freed within a storage volume; storing the indication indicating the track range to be freed within the storage volume in a space freeing bitmap (SRBM); in response to determining that a data backup depends on one or more tracks within the track range to perform a data restore of the storage volume, identifying a data backup in a backup storage space for the storage volume that corresponds to the track range; and in response to receiving an indication from the backup storage space indicating that the corresponding data backup in the backup storage space has expired, freeing the track range in the storage volume.

[0014] According to another aspect, a computer program product for freeing data storage tracks while maintaining logical corruption protection includes a computer readable storage medium having program instructions embodied thereon, the computer readable storage medium being not a transient signal itself, the program instructions being executable by a processor to cause the processor to perform a method, the method including receiving, by the processor, an indication of a track range to be freed within a storage volume; storing, by the processor, the indication of the track range to be freed within the storage volume in a space freeing bitmap (SRBM); identifying, by the processor, a data backup in a backup storage space for the storage volume corresponding to the track range, in response to determining that the data backup relies on one or more tracks within the track range to perform a data restore of the storage volume; and freeing, by the processor, the track range in the storage volume, in response to receiving, by the processor, an indication from the backup storage space, indicating that the corresponding data backup in the backup storage space has expired.

[0015] Other aspects and embodiments of the invention will become apparent from the following detailed description, taken in conjunction with the drawings, illustrating by way of example the principles of the invention. [Brief description of the drawings]

[0016] [Figure 1] FIG. 1 illustrates a cloud computing environment according to an embodiment of the present invention. [Diagram 2] FIG. 2 illustrates an abstract model layer according to an aspect of the present invention. [Diagram 3] FIG. 2 illustrates a cloud computing node according to one embodiment of the present invention. [Figure 4] FIG. 1 illustrates a hierarchical data storage system according to one embodiment of the present invention. [Diagram 5]FIG. 2 illustrates an exemplary secured backup configuration, in accordance with an aspect of the present invention. [Figure 6] FIG. 2 illustrates an exemplary CSM secured copy session, according to one embodiment of the present invention. [Figure 7] FIG. 2 illustrates an exemplary secured copy configuration, in accordance with one aspect of the present invention. [Figure 8] 2 illustrates a flowchart of a method for releasing data storage tracks while maintaining logical corruption protection in accordance with an embodiment of the present invention. [Figure 9] 1 illustrates an exemplary logical corruption protected storage environment, in accordance with an aspect of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0017] The following description is made for the purpose of illustrating the general principles of the present invention and is not intended to limit the inventive concepts claimed herein, and specific features described herein can be used in combination with other described features in each of the various possible combinations and permutations.

[0018] Unless otherwise defined herein, all terms are to be given the broadest possible interpretation of that term, including the meaning implied from this specification and the meaning understood by those of ordinary skill in the art and / or defined in dictionaries, treatises, etc.

[0019] It should also be noted that, as used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural referents unless expressly stated otherwise. It should also be understood that the terms "comprise" and / or "comprising," when used herein, specify the presence of stated features, integers, steps, operations, elements or components, or combinations thereof, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups or combinations thereof.

[0020] The following description discloses several aspects of freeing up data storage tracks while maintaining logical corruption protection.

[0021] In one general aspect, a computer-implemented method includes receiving an indication of a track range to be released within a storage volume, identifying a data backup in a backup storage space for the storage volume that corresponds to the track range, and in response to determining that the corresponding data backup in the backup storage space has expired, releasing the track range in the storage volume.

[0022] In this way, data scheduled for removal from a storage volume due to storage volume track release can only be removed when all backups in the backup storage space that depend on that data have expired. This ensures that all backups in the backup storage space have all associated data available in the storage volume for data restore if necessary. This maintains the security of the data in the storage volume due to the LCP implementation.

[0023] In one common aspect, a backup storage space is created as part of a logical corruption protection (LCP) implementation for data in a storage volume.

[0024] According to another general aspect, a computer program product for freeing data storage tracks while maintaining logical corruption protection includes a computer-readable storage medium having program instructions embodied thereon, the computer-readable storage medium being not a transient signal itself, the program instructions being executable by a processor to cause the processor to perform a method, the method including receiving, by the processor, an indication of a track range to be freed within a storage volume; identifying, by the processor, a data backup in a backup storage space for the storage volume that corresponds to the track range; and, in response to determining, by the processor, that the corresponding data backup in the backup storage space has expired, freeing the track range in the storage volume.

[0025] In one general aspect, an indicator of track ranges to be freed within a storage volume is stored in a space free bitmap (SRBM), so that the track ranges can be freed asynchronously (e.g., at a time later than the time the indicator is received).

[0026] According to another general aspect, a system includes a processor and logic incorporated in, executable by, or incorporated in and executable by the processor, the logic configured to receive an indication of a track range to be released within a storage volume, identify a data backup in a backup storage space for the storage volume that corresponds to the track range, and release the track range in the storage volume in response to determining that the corresponding data backup in the backup storage space has expired.

[0027] In this way, by ensuring that LCP is performed for a storage volume when a track range is freed, the storage volume can be protected from logical corruption, thereby improving the performance of the storage volume itself. Freeing up extents within a storage volume can also reduce the amount of used space within the storage volume, thereby improving the performance of the storage volume (for example, when the storage volume is thin provisioned).

[0028] In one general aspect, in response to determining that the data backup depends on one or more tracks within the track range to perform a data restore of the storage volume, a data backup in a backup storage space is identified as corresponding to the track range.

[0029] According to another general aspect, a computer-implemented method includes receiving an indication indicating a track range to be freed within a storage volume; storing the indication indicating the track range to be freed within the storage volume in a space freeing bitmap (SRBM); in response to determining that a data backup relies on one or more tracks within the track range to perform a data restore of the storage volume, identifying a data backup in a backup storage space for the storage volume that corresponds to the track range; and in response to receiving an indication from the backup storage space indicating that the corresponding data backup in the backup storage space has expired, freeing the track range in the storage volume.

[0030] According to another aspect, a computer program product for freeing data storage tracks while maintaining logical corruption protection includes a computer readable storage medium having program instructions embodied thereon, the computer readable storage medium being not a transient signal itself, the program instructions being executable by a processor to cause the processor to perform a method, the method including receiving, by the processor, an indication of a track range to be freed within a storage volume; storing, by the processor, the indication of the track range to be freed within the storage volume in a space freeing bitmap (SRBM); identifying, by the processor, a data backup in a backup storage space for the storage volume corresponding to the track range, in response to determining that the data backup relies on one or more tracks within the track range to perform a data restore of the storage volume; and freeing, by the processor, the track range in the storage volume, in response to receiving, by the processor, an indication from the backup storage space, indicating that the corresponding data backup in the backup storage space has expired.

[0031] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to cloud computing environments. On the contrary, aspects of the invention may be implemented in conjunction with any other type of computing environment now known or later developed.

[0032] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0033] Its features are as follows.

[0034] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.

[0035] Broad network access: Functionality is available over the network and can be accessed through standard mechanisms that facilitate use by heterogeneous thin-client or thick-client platforms (e.g., mobile phones, laptops, and PDAs).

[0036] Resource Pooling: To serve multiple consumers using a multi-tenant model, provider computing resources are pooled, with different physical and virtual resources dynamically allocated and reallocated depending on demand. Consumers generally have no control or knowledge over the exact location of the resources provided, but there is a sense of location independence in that they may be able to specify a higher level of abstraction of location (e.g., country, state, or data center).

[0037] Rapid Elasticity: Capabilities can be provisioned quickly and elastically, sometimes automatically, to rapidly scale out, and capabilities can be released quickly and rapidly scale in. To the consumer, the capabilities available for provisioning often appear infinite, and they can buy as much as they want, at any time.

[0038] Metered Services: The cloud system automatically controls and optimizes resource utilization by utilizing metering capabilities at some level of abstraction appropriate for the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.

[0039] The service model is as follows:

[0040] Software as a Service (SaaS): The functionality provided to the consumer is the use of the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer has no management or control over the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functions, with the possible exception of limited user-specific application configuration settings.

[0041] Platform as a Service (PaaS): The capability offered to the consumer is to deploy consumer-created or acquired applications, written using programming languages ​​and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application hosting environment configuration.

[0042] Infrastructure as a Service (IaaS): The capability offered to the consumer is to provision processing, storage, network and other fundamental computing resources onto which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, deployed applications, and possibly limited control over selected network components (e.g., host firewalls).

[0043] The deployment models are as follows:

[0044] Private Cloud: This cloud infrastructure is operated solely for the organization. It can be managed by the organization or a third party and can exist on-premise or off-premise.

[0045] Community Cloud: This cloud infrastructure is shared by several organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance concerns). It can be managed by the organization or a third party and can reside on-premise or off-premise.

[0046] Public Cloud: This cloud infrastructure is available to the public or large industry organizations and is owned by an organization that sells cloud services.

[0047] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community or public) that remain their own entity but are joined by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0048] Cloud computing environments are service-oriented with a focus on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0049] Referring now to FIG. 1, an exemplary cloud computing environment 50 is illustrated. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which a local computing device used by a cloud consumer, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, can communicate. The nodes 10 can communicate with each other. The nodes 10 may be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described above. This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service for which the cloud consumer does not need to maintain resources on the local computing device. It is understood that the types of computing devices 54A-54N shown in FIG. 1 are intended as examples only, and that computing node 10 and cloud computing environment 50 may communicate with any type of computerized device via any type of network connection or network addressable connection or combination thereof (e.g., using a web browser).

[0050] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers and functions shown in Figure 2 are intended to be illustrative only and that aspects of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0051] The hardware and software layer 60 includes hardware and software components such as mainframes 61, reduced instruction set computer (RISC) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68.

[0052] The virtualization layer 70 provides an abstraction layer that can instantiate virtual entities such as: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0053] In one embodiment, management layer 80 may provide the following functions: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one embodiment, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, and protection of data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides cloud computing resource allocation and management to ensure required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-arrangement and procurement for cloud computing resources in anticipation of future demand according to SLAs.

[0054] The workload layer 90 provides examples of functions that can utilize a cloud computing environment. Examples of workloads and functions that can be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and logical corruption protection (LCP) 96.

[0055] 3, a schematic diagram of an example cloud computing node is shown. Cloud computing node 10 is merely one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the aspects of the invention described herein. In any event, cloud computing node 10 is capable of implementing and / or performing any of the functions described above.

[0056] Cloud computing node 10 includes computer system / server 12 that is operable with many other general purpose or special purpose computing system environments or configurations. Examples of known computing systems, environments or configurations, or combinations thereof, that are suitable for use with computer system / server 12 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics devices, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.

[0057] The computer system / server 12 may be described in the general context of computer system executable instructions, such as program modules, executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 12 may also be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be stored in both local and remote computer system storage media, including memory storage devices.

[0058] As shown in Figure 3, computer system / server 12 in cloud computing node 10 is shown in the form of a general-purpose computing device. Components of computer system / server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 connecting various system components, including system memory 28, to processor 16.

[0059] Bus 18 may represent any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor bus or local bus using any of a variety of bus architectures, including, by way of example and without limitation, an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.

[0060] Computer system / server 12 typically includes a variety of computer system readable media. Such media may be any available media that can be accessed by computer system / server 12 and includes both volatile and nonvolatile media, removable and non-removable media.

[0061] The system memory 28 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32. The computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 34 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown, commonly referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical medium. In such a case, each may be connected to the bus 18 by one or more data media interfaces. As further illustrated and described below, the memory 28 may include at least one program product having a set (e.g., at least one) program module configured to implement the functions of an embodiment of the present invention.

[0062] By way of example, and not limitation, a program / utility 40 having a set (e.g., at least one) program module 42, an operating system, one or more application programs, other program modules, and program data may be stored in memory 28. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include an implementation of a networking environment. The program modules 42 generally implement the functions and / or methods of aspects of the invention described herein.

[0063] The computer system / server 12 may also communicate with one or more external devices 14, such as a keyboard, pointing device, display 24, or the like, or one or more devices that allow a user to interact with the computer system / server 12, or any device (e.g., network card, modem, etc.) that allows the computer system / server 12 to communicate with one or more other computing devices, or a combination thereof. Such communication may occur through an input / output (I / O) interface 22. Additionally, the computer system / server 12 may communicate with one or more networks, such as a local area network (LAN), or a general wide area network (WAN), or a public network (e.g., the Internet), or a combination thereof, through a network adapter 20. As shown, the network adapter 20 communicates with other components of the computer system / server 12 through a bus 18. It is noted that other hardware and / or software components, not shown, may also be used with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

[0064] Referring now to FIG. 4, a storage system 400 according to one embodiment is shown. It should be noted that some of the elements shown in FIG. 4 can be implemented as hardware and / or software according to various embodiments. The storage system 400 may include a storage system manager 412 for communicating with a plurality of media on at least one upper storage tier 402 and at least one lower storage tier 406. The upper storage tier 402 may preferably include one or more random access media 404 and / or direct access media 404, such as hard disks in a hard disk drive (HDD), non-volatile memory (NVM), solid state memory in a solid state drive (SDD), flash memory, SSD arrays, flash memory arrays, etc., or other media described herein or known in the art, or combinations thereof. The lower storage tier 406 may preferably include one or more lower performance storage media 408, including sequential access media such as magnetic tape in a tape drive and / or optical media, slow access HDDs, slow access SSDs, etc., or other media described herein or known in the art, or combinations thereof. One or more additional storage tiers 416 may include any combination of storage memory media as desired by the designer of the system 400. Also, either the upper storage tier 402 or the lower storage tier 406 or both may include any combination of storage devices or storage media.

[0065] The storage system manager 412 can communicate with the storage media 404, 408 in the upper storage tier 402 and the lower storage tier 406 via a network 410, such as a storage area network (SAN) as shown in FIG. 4 or any other suitable type of network. The storage system manager 412 can also communicate with one or more host systems (not shown) via a host interface 414, which may or may not be part of the storage system manager 412. The storage system manager 412, and / or any other components of the storage system 400, can be implemented in hardware and / or software and may use a processor (not shown), such as a central processing unit (CPU), field programmable gate array (FPGA), application specific integrated circuit (ASIC), etc., to execute commands of the type known in the art. Of course, any configuration of storage system can be used, as would be apparent to one of ordinary skill in the art upon reading this description.

[0066] In further aspects, storage system 400 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 HDDs, SSDs, sequential access media (e.g., tapes in tape drives, optical disks in optical disk drives, etc.), direct access media (e.g., CD-ROMs, DVD-ROMs, etc.), or any combination of media storage types. In one such configuration, upper storage tier 402 may include a majority of SSD storage media for storage of data in a higher performance storage environment, while the remaining storage tiers, including lower storage tier 406 and additional storage tier 416, may include any combination of SSDs, HDDs, tape drives, etc. for storage of data in a lower performance storage environment. In this manner, data that is accessed more frequently, data with a higher priority, data that needs to be accessed more quickly, etc. may be stored in upper storage tier 402, while data that does not have one of these attributes may be stored in additional storage tier 416, including lower storage tier 406. Of course, those of ordinary skill in the art, upon reading this description, will be able to devise many other combinations of storage media to implement different storage schemes in accordance with the aspects presented herein.

[0067] According to some aspects, a storage system (e.g., 400) 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 portions in a lower storage tier 406 of the hierarchical data storage system 400; logic configured to move each associated portion of the requested data set to an upper storage tier 402 of the hierarchical data storage system 400; and logic configured to aggregate the requested data set from the associated portions and compile it on the upper storage tier 402 of the hierarchical data storage system 400.

[0068] Of course, this logic can be implemented in various ways as a method or as a computer program product on any device and / or system.

[0069] Logical Data Corruption In one aspect, logical data corruption occurs when data storage hardware is intact and in working order, but the stored data is corrupted or damaged at the content level. This can occur as a result of intentional or unintentional data deletion, encryption, and manipulation. For example, logical data corruption can result from user error, inadvertent or malicious data destruction, application corruption due to the implementation of ransomware, where data may be encrypted without authorization.

[0070] To address logical data corruption, Logical Corruption Protection (LCP) must implement a content-aware solution. For example, Secure Guard Copy (SGC) can implement LCP for data stored in a distributed storage system to identify logical data corruption events and recover from such events.

[0071] Examples of safe copy goals In one aspect, the secure copy has the following example goals: Enables creation of many recovery copies across multiple volumes or storage systems with optimized capacity utilization and minimal performance impact. Allows any previous recovery point on a set of recovery volumes to be available while the production environment continues to run. · Securing data for safeguard copies to prevent accidental or intentional damage to the data. Avoid the use of distributed storage system device numbers and host device addresses.

[0072] A safety copy may differ from a point-in-time full-volume snapshot of data that can provide an immediately accessible copy of a production volume, with each copy being independent from the other copies from a data perspective.

[0073] Example of a secure copy operation FIG. 5 illustrates an example safeguarded backup configuration 500 according to one example embodiment. As shown, safeguarded copies provide the ability to create multiple recovery points 502 for a production volume 504 (e.g., a storage volume such as source / safeguarded source). These recovery points 502 are referred to as safeguarded backups (e.g., backup / SG backup). In one embodiment, the recovery data is not stored in a separate regular volume, but rather in a backup storage space 506, referred to as safeguarded backup capacity (SGBC). The backups are not directly accessible by the host. The data is only available after the backup is recovered to a separate recovery volume 508.

[0074] Once the recovery point 502 has been restored to the recovery volume 508, it can be accessed using a recovery system 510, which may or may not be the same as the production system 512 depending on security requirements. Asynchronous data copy / mirroring may be used to restore the data from the recovery system 510 to the production volume 504. The production volume 504 may be in the same or a different distributed data storage system as the recovery volume 508.

[0075] A production environment may consist of hundreds or thousands of volumes 504 across one or more storage systems. An important aspect of logical corruption protection is providing recovery points that are consistent across all volumes that are part of the backup. These recovery points are called consistency groups (CGs).

[0076] Backup Management Example The safety copy backups may be protected from unintentional or intentional tampering. For example, they may not need to be manually created, deleted or recovered by the user using a distributed storage system management interface. An instance of a copy service manager (CSM) may be used to perform these tasks. The CSM may use a session concept to manage the complete consistency groups.

[0077] FIG. 6 illustrates an example CSM secure copy session 600 according to one example embodiment. As shown, session 600 includes multiple copy sets 606A-606N, one copy set for each production volume to be backed up. Each of the multiple copy sets 660A-606N includes a production / source / storage volume 604A-604N with an associated secure backup capacity 608A-608N (e.g., backup storage space) and a recovery volume 602A-602N. The CSM performs actions such as backup and recovery on the complete session 600. The CSM may perform these operations automatically using a built-in scheduler.

[0078] The CSM also manages the lifecycle of backups: a retention period for backups may be specified, and the CSM may automatically expire (remove) backups that are no longer needed after the retention period. This can simplify management, make it secure, and ensure that consistency is maintained across sessions.

[0079] Example of safeguard backup capacity The safety backup capacity 608A-608N may be thin provisioned. Small extents may be used for efficiency. With no existing safety backups, the safety backup capacity is purely virtual capacity associated with the source volume. When a backup is created, physical storage space is allocated and data that is overwritten in the original volume is stored in the backup. Backup data is stored at track granularity.

[0080] A maximum amount of safety backup capacity may be specified for each volume being backed up. Once the specified capacity is reached, the oldest backup is automatically removed to free up space. As long as a safety backup exists for a given volume, its associated safety backup capacity may not be deleted. If a storage pool runs out of physical space, whether for backups or production data, the distributed storage system may send a notification according to the pool configuration. Safety backups may be automatically removed by microcode when it is determined that the storage pool used by the secured relationship is running out of physical space (e.g., the amount of available physical space falls below a threshold amount).

[0081] Example of a safe copy backup When a security copy backup is initiated, the distributed storage system creates a consistency group. The distributed storage system sets up metadata and bitmaps to track updates to the production volumes. After the backup is set up, the distributed storage system copies data that would be overwritten by host I / O from the production volumes to a consistency group log location in the security copy volume.

[0082] When the next backup begins, the distributed storage system may close the previous backup and create a new consistency group, so the system may not need to maintain each backup individually. To restore to a particular recovery point, the distributed storage system needs all backups newer than the backup to be recovered.

[0083] To minimize the impact of creating a consistency group, the safe copy backup process may consist of the following three steps: 1. Reservation: In this step, the distributed storage system prepares to create a new safety backup. The system sets the necessary bitmaps and prepares metadata in the safety copy space. The system ensures that all data that has changed since the previous backup is stored in its consistency group log. After all the preparations are complete, the actual consistency group formation can take place. 2. Check-in: To create a consistency group, the distributed storage system needs to halt all updates for all volumes in the CG for a short period of time. The system does this by presenting an Extended Long Busy (ELB) state. If the data in the cache is consistent, the previous consistency group logs of all affected volumes are closed and therefore also consistent. From now on, the distributed storage system will write further backup data to this new backup consistency group log. 3. Done: The distributed storage system releases the ELB and write operations can continue. The Copy Services Manager orchestrates these steps automatically with minimal impact to host operations.

[0084] Safe Copy Recovery Example The user may recover any recovery point to a separate recovery volume. This volume must have at least the same capacity as the production volume and may be thin provisioned. The user may do this recovery with or without background copy. The user may specify no copy command if the recovered data is only needed for a limited period of time, or may specify a copy command if the user intends to use it for a longer period of time. The user may initiate a safeguard copy recovery via the CSM.

[0085] 7 illustrates an example safety copy configuration 700 according to one example embodiment. As shown, the safety copy configuration 700 includes a production volume 702 (e.g., a storage volume), a recovery volume 704, and four safety backups (e.g., consistency group logs t1 706A-t4 706D, with t4 being the most recent) representing four recovery points stored in a backup storage space. In one embodiment, recovery may be performed up to time t2 without copy options. Recovery includes the following steps: 1. The distributed storage system takes a point-in-time snapshot of the data from the production volume 702 to the recovery volume 704, making the recovery volume 704 identical to the production volume 702. 2. The distributed storage system then creates a recovery bitmap 708 that indicates all data that has changed since time t2 and that needs to be referenced from consistency group logs t4 706D, t3 706C, and t2 706B instead of from the production volume 702.

[0086] From this point onwards, the recovery volume 704 can be used for read and write access. When the recovery system 710 reads data from the recovery volume 704, the distributed storage system consults the recovery bitmap 708 to determine whether the requested data should be retrieved from the production volume 702 or from one of the consistency group logs t1 706A-t4 706D. If the same track appears in multiple backups, the system may use the "oldest" instance (the instance closest to the recovery point t2 706B).

[0087] When the recovery system 710 writes to the recovery volume 704, one of two cases can occur: Full Track Write: The distributed storage system may write directly to the recovery volume 704 without considering any existing data. Partial Track Writes: The distributed storage system must first fetch the existing data according to the rules above, and then it can apply the updates.

[0088] If recovery is done using background copy, the distributed storage system follows the same rules in the background to copy all data from the production volumes 702 and consistency group logs t1 706A-t4 706D to the recovery volumes 704. Recovery volumes 704 can be accessed at any point while the background copy is still running.

[0089] If the data is to be restored back to the original production volume 702, several options are available. Full Volume Restore: Global Copy may be used to replicate data from recovery volume 704 to production volume 702. Production volume 702 can reside on the same or a different distributed storage system as recovery volume 704. Selective Restore: Production volume 702 is made available to recovery system 710, or recovery volume 704 is made available to production system 712. Standard operating system or application methods may then be used to copy the necessary data from recovery volume 704 to production volume 702.

[0090] Referring now to Figure 8, there is shown a flow chart of a method 800 according to one embodiment. The method 800 may be performed by the present invention in a variety of ways, particularly in any of the environments shown in Figures 1-7 and 9. Of course, as will be appreciated by those of ordinary skill in the art upon reading this description, the method 800 may include more or fewer operations than those specifically set forth in Figure 8.

[0091] Each of the steps of method 800 may be performed by any suitable component of an operating environment. For example, in various aspects, method 800 may be performed in part or in whole by one or more servers, computers, or any other device having one or more processors therein. A processor, e.g., a processing circuit, chip, or module implemented in hardware or software or both, preferably having at least one hardware component, or a combination thereof, may be used in any device to perform one or more steps of method 800. Exemplary processors include, but are not limited to, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like, combinations thereof, or any other suitable computing device known in the art.

[0092] As shown in FIG. 8, method 800 may begin at operation 802, where an indication is received of a range of tracks to be released within a storage volume. In one aspect, the storage volume may be contained within an interconnected storage system (e.g., a distributed data storage system, etc.). In another aspect, the storage volume may be contained within a single device (e.g., a single disk operating system (DOS), etc.). In yet another aspect, the storage volume may be contained within one or more tangible storage drives.

[0093] Additionally, in one aspect, a backup storage space may be created as part of a logical corruption protection (LCP) implementation of data in a storage volume. For example, the LCP implementation may create data backups (e.g., recovery points) for a storage volume. In another embodiment, each data backup may include a point-in-time snapshot of given data in a storage volume. In yet another embodiment, each data backup may be associated with a particular time / date that the snapshot was created. In yet another embodiment, data backups may be created periodically according to a predefined schedule.

[0094] Also, in one aspect, the LCP implementation may store the recovery points in a backup storage space, where the backup storage space is not accessible by the host utilizing the storage volume. In another aspect, in response to the occurrence of one or more errors in the storage volume, the recovery points may be restored to a recovery volume separate from the storage volume. In yet another aspect, the recovery volume may be accessed by a recovery system separate from the system implementing the storage volume. In yet another aspect, data may then be restored from the recovery system to the storage volume.

[0095] Also, in one embodiment, the backup storage space may include data storage that is physically and / or logically separate from the storage volumes. In another embodiment, the backup storage space may be in the same physical device as the storage volumes. In yet another embodiment, the backup storage space may be in a different physical device than the storage volumes.

[0096] Also, in one aspect, both the backup storage space and the storage volume may include physical data storage (e.g., one or more tangible data storage drives, etc.). In another aspect, the backup storage space may also be referred to as a backup capacity, a safeguard backup capacity, etc. In yet another aspect, the storage volume may also be referred to as a host volume, a production volume, etc.

[0097] Additionally, in one aspect, an indication of track ranges to be freed may be received from a space freeing utility. For example, a space freeing utility may be executed on a storage volume to identify tracks of the storage volume that are not currently in use and can be freed for future data storage. In another embodiment, the identified tracks may have write restrictions that prevent them from being written to in their current state. In yet another embodiment, the space freeing utility may analyze a storage volume to determine data storage in use on the storage volume.

[0098] Also, in one aspect, the space freeing utility may analyze a volume table that tells the utility where data sets are located within the storage volume. In another aspect, the space freeing utility may identify track ranges within the storage volume where no data sets are stored, track ranges that are not assigned to any data sets, etc. In yet another aspect, the space freeing utility may then issue a space free (e.g., via a disk operating system (DOS) host, etc.) for the identified track ranges on the storage volume. In yet another aspect, the space freeing may include a notification that the identified track ranges have been freed / released by the storage volume and are available for future data storage.

[0099] Additionally, in one aspect, the track range may include a physical location within a tangible data storage device, for example, each storage device may have multiple different hardware tracks, and the track range may indicate a predetermined portion of one or more of the hardware tracks used to store data.

[0100] Also, in one aspect, an indication of track ranges to be freed within a storage volume may be received at a device that contains the storage volume, at one or more applications that manage the storage volume, at the storage volume itself, etc. In another aspect, an indication of track ranges to be freed within a storage volume may be stored in a data structure (e.g., a bitmap such as a space free bitmap (SRBM)).

[0101] In this manner, the track range may be released asynchronously (e.g., at a time later than the time the indicator is received). Furthermore, an entity that receives an indicator indicating the track range may create a data structure and store the indicator indicating the track range within that data structure.

[0102] Further, method 800 may proceed to operation 804, where a data backup in the backup storage space for the storage volume that corresponds to the track range is identified. In one aspect, in response to determining that the data backup relies on one or more tracks in the track range to perform a data restore (e.g., an LCP data restore) for the storage volume, the data backup in the backup storage space may be identified as corresponding to the track range.

[0103] Also, in one aspect, the track range may be identified as a secured track range having one or more corresponding data backups. In another aspect, in response to identifying the track range as secured, the backup storage space may be searched for one or more corresponding data backups. In yet another aspect, if multiple data backups correspond to the track range, only the most recent corresponding backup may be identified as the corresponding data backup.

[0104] Additionally, in one aspect, an identifier for the identified data backup may be stored as metadata within the storage volume and / or within a system that includes the storage volume. For example, the identifier may include a microcode identifier, one or more sequence numbers, a generation number, a backup identifier, etc. In another aspect, the identifier may be stored in association with the track range. For example, a data structure that stores indicators of the track range may point to the identifier (using one or more pointers, one or more association tables, etc.).

[0105] Also, in one aspect, a group of track ranges to be released within a storage volume may be received, where different subsets of the group may be associated with different data backups within the backup storage space. In another aspect, an indication of each of the different subsets of the group may be stored within its own separate data structure. In yet another aspect, each of the separate data structures may be individually associated with a different data backup within the backup storage space.

[0106] For example, a first data backup may correspond to a first bitmap that identifies a first subset of the track range to be released. In another embodiment, a second data backup, different from the first data backup, may correspond to a second bitmap, separate from the first bitmap, that identifies a second subset of the track range to be released that is different from the first subset of the track range.

[0107] Further, method 800 may proceed to operation 806, where a track range in the storage volume is freed in response to determining that the corresponding data backup in the backup storage space has expired. In one aspect, the data backup may be stored in an extent in the backup storage space. For example, an extent may include a predetermined data storage location in tangible data storage hardware used by the backup storage space. In another embodiment, the extent may have a uniform predetermined size, or the size of the extents may vary. In yet another embodiment, the backup storage space may be represented as a series of contiguous extents in a predetermined order.

[0108] Also, in one aspect, extents in the backup storage space may be filled according to a rolling buffer scheme. For example, after a current extent location is filled with a data backup (e.g., according to a data backup schedule, etc.), the next adjacent extent location in a predefined order is selected. In another embodiment, the rolling buffer scheme may provide that, once the last extent location in a predefined order is filled with a data backup in the backup storage space, the first extent location in the predefined order is selected as the next extent location to be filled. This forms a circular buffer in the backup storage space.

[0109] Additionally, in one aspect, when an extent in the backup storage space that already stores a data backup is filled with a new data backup, the previously stored data backup is expired / removed and the new data backup is stored at the extent location. In another aspect, an extent storing a data backup may be manually expired by a user or application. In yet another aspect, when a data backup expires (e.g., by an extent being filled with a new data backup or by manual expiration), a notification is sent to the system that contains the storage volume (or to the storage volume itself).

[0110] Also, in one aspect, the system and / or storage volume may set a periodic timer, and upon expiration of the periodic timer, the system and / or storage volume may request the status of the corresponding data backup from the backup storage space, for example, the backup storage space may return a status indicating that the corresponding data backup has expired.

[0111] Further, in one aspect, in response to receiving the notification, a request to process a data structure storing an indication of the track range to be freed within the storage volume may be sent to the system on which the storage volume resides, the storage volume itself, one or more applications managing the storage volume, etc. For example, processing the data structure (and thereby freeing the track range within the storage volume) may include freeing the associated track range within the storage volume such that the associated track within the track range is available for storing new data. In another embodiment, freeing the track may include lifting any write restrictions on the track so that the track may be written to.

[0112] Also, in one aspect, if a storage volume is synchronously mirrored and is a primary storage volume, in response to determining that the corresponding data backup in the backup storage space has expired, a request may be sent to the storage volume and to a mirrored storage volume (e.g., a secondary volume) to process a data structure that stores an indication of track ranges to be released in the storage volume, thereby allowing synchronous mirroring of the release of track ranges.

[0113] Further, in one aspect, if the storage volume is synchronously mirrored and is a secondary storage volume, in response to determining that a corresponding data backup in the backup storage space has expired, a request may be sent to the storage volume to process a data structure that stores an indication of track ranges to be released within the storage volume.

[0114] Also, in one aspect, if the storage volume is asynchronously mirrored with consistency and is a primary storage volume, in response to determining that the corresponding data backup in the backup storage space has expired, a flag may be set to free up a track range in the storage volume in the next increment. Once the track range is freed up in the next increment, a request may be sent to the mirrored volume (e.g., a secondary volume) to free up the same track range in the mirrored volume.

[0115] Further, in one aspect, if the storage volume is asynchronously mirrored with consistency and is a primary storage volume, in response to determining that a corresponding data backup in the backup storage space has expired, a flag will be set to free a track range in the storage volume in the next increment. Once the track range is freed in the next increment, a request may be sent to the mirrored volume (e.g., a secondary volume) to free the same track range in the mirrored volume.

[0116] Also, in one aspect, if the storage volume is asynchronously mirrored with consistency and is a secondary storage volume, in response to determining that the corresponding data backup in the backup storage space has expired, a flag will be set to notify that such expiration has occurred.

[0117] Further, in one aspect, all of the above operations may be performed by one or more of the tangible systems that include the storage volumes, by the storage volumes themselves, or by a system separate from the storage volumes.

[0118] In this way, data scheduled for removal from a storage volume due to track release from the storage volume may be removed only when all backups in the backup storage space that depend on that data have expired. This may ensure that all backups in the backup storage space have all associated data available in the storage volume for data restore if necessary. This may maintain the security of data in the storage volume by the LCP implementation.

[0119] Additionally, by ensuring that LCP is performed for a storage volume when freeing track ranges, the storage volume can be protected from logical corruption, thereby improving the performance of the storage volume itself. Also, by freeing extents within a storage volume, the amount of used space within the storage volume can be reduced, thereby improving the performance of the storage volume (for example, when the storage volume is thin provisioned).

[0120] 9 illustrates an example logical corruption protection storage environment 900 according to one example aspect. As shown, a backup storage space 902 provides backup storage for a storage volume 904 of a system 908. For example, the backup storage space 902 may be created as part of a logical corruption protection (LCP) implementation for data in the storage volume 904.

[0121] Additionally, periodically, data backups of the storage volume 904 may be created and stored in one of the extents 906A-906N of the backup storage space 902. The extents 906A-906N may be in a predefined order from the first original extent 906A to the last original extent 906N, and may be filled according to a rolling buffer scheme. For example, after the first extent 906A is filled with a data backup (e.g., according to a backup schedule), the next adjacent original extent 906B is selected to fill it according to the predefined order.

[0122] The rolling buffer scheme may also be defined such that after the last original extent 906N of a predetermined order in the backup storage space 902 is filled with data backup, the first original extent 906A of the predetermined order is selected as the next extent location to be filled.

[0123] A space reclaiming utility 910 may also be executed on the storage volume 904 to identify tracks of the storage volume 904 that are not currently in use and can be freed up for future data storage. These identified tracks are stored within the system 908 as a space reclaiming bitmap (SRBM) 912.

[0124] Further, in response to determining that a data backup 906C in the backup storage space 902 is dependent on one or more tracks in the received SRBM 912 to perform a data restore of the storage volume 904, the data backup 906C may be identified as corresponding to a bitmap of the received SRBM 912.

[0125] Also, in response to a determination that the identified data backup 906C is still stored in the backup storage space 902, the received SRBM 912 may remain unreleased in the storage volume 904. However, in response to a determination that the identified data backup 906C in the backup storage space 902 has expired, a request may be sent to the storage volume 904 to process the SRBM 912. Processing the SRBM 912 frees up the track range in the storage volume 904 by freeing up the associated track range in the storage volume 904 so that the associated track within the track range may be used to store new data.

[0126] Freeing space for secure volumes In one aspect, the security volume may grant and manage space freeing requests from the host.

[0127] When a valid free space command is issued to a security device (e.g., a device that implements security copy (SGC)), a generation number is stored in both the security and space release codes to indicate the current security consistency group (CG) at the time the free space command was received. The space is not immediately freed, but a space release bitmap (SRBM) is assigned to indicate which track ranges should be freed. The same SRBM will be used to accept and record the ranges of subsequent free space commands while in the current CG.

[0128] When a new CG is formed, the SRBMs allocated for the original CG no longer track new space-freeing commands.

[0129] After the original CG is rolled off, the SGC can request the SRBMs be processed to free up space. Safety volumes running Metro Mirror, Global Copy, or Global Mirror or a combination of these are also supported.

[0130] When a space freeing request is received on the secure source volume, a check is made to see if the current backup can accept the request. Assuming the backup accepts the request, a space freeing bitmap (SRBM) will be allocated and will store a generation number representing the current backup / CG. The SGC also stores this generation number representing the SRBM for the CG. As new requests come in, they will be accepted as long as the backup (associated with the SRBM) is active. After the new CG is formed, that SRBM will no longer accept updates. A new SRBM is created and used to track requests for the new CG. When the backup / CG is rolled off, a request is made for this SRBM to be processed and the space freed.

[0131] PPRC and Global Mirror (GM) operations are also supported and are described below. Metro Mirror / Global Copy Primary Processing: When a CG is rolled off, if there is an associated SRBM its bitmap is processed and a request is made to free up space. Once space is freed on the primary a command will be sent to the secondary requesting the same space to be freed up. Metro Mirror / Global Copy Secondary Processing: When a CG is rolled off, if there is an associated SRBM, a request is made for the bitmap to be processed to free up space. Global Mirror Primary: When a CG is rolled off, if there is an associated SRBM then a request is made for its bitmap to be processed. The space is not freed but a flag is set indicating that the space can be freed at the next "increment complete" of the GM. Global Mirror Secondary: When a CG is rolled off, the SGC does not request to free up the space, instead a flag is set to indicate that the roll-off has occurred. During GM commit withdrawal, a check is made to determine if the CG associated with the SRBM has been rolled off. Commit withdrawal requests that the SRBM be processed after the SGC indicates that the associated CG has been rolled off.

[0132] In one aspect, a method is provided for managing space release requests for a security volume, the method including, upon receiving a valid space release command for a security device, storing a generation number indicating a current security consistency group (CG) at the time the space release command is received, and further including allocating a space release bitmap (SRBM) to indicate which track ranges should be released.

[0133] The method also includes using the same SRBM for accepting subsequent free space commands for the current consistency group. Further, the method includes ceasing tracking of new free space commands with the SRBM assigned for the original consistency group for the new consistency group. The method also includes, in response to terminating the original consistency group, requesting that the SRBM be processed and allowing the space to be freed.

[0134] The invention may be a system, method, or computer program product, or combination thereof, of any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions stored thereon for causing a processor to implement aspects of the invention.

[0135] A computer readable storage medium may be a tangible device capable of holding and storing instructions for use 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 thereof. A non-exhaustive list of more specific examples of computer readable storage media includes the following: a portable computer diskette, 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 disk read only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as a punch card or a ridge structure in a groove in which instructions are recorded, and any suitable combination thereof. As used herein, a computer-readable storage medium should not be construed as a transitory signal per se, such as electric waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or electrical signals transmitted over wires.

[0136] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to the respective computing / processing device or to an external computer or storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A 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 a computer readable storage medium within the respective computing / processing device for storage.

[0137] The computer readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or procedural programming languages, such as object oriented programming languages, such as Smalltalk®, C++, and the "C" programming language, or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer as a stand-alone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely 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 wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions by personalizing the electronic circuitry using state information of the computer readable program instructions to perform embodiments of the invention.

[0138] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams that illustrate methods, apparatus (systems), and computer program products according to aspects of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0139] These computer readable program instructions may be provided to a processor of a computer or other programmable data processing device such that the instructions, executed by the processor of the computer or other programmable data processing device, form means for implementing the functions / operations specified in the blocks of the flowcharts and / or block diagrams to implement a machine. These computer readable program instructions may be stored on a computer readable storage medium such that the computer readable storage medium on which the instructions are stored includes an article of manufacture including instructions that implement aspects of the functions / operations specified in the blocks of the flowcharts and / or block diagrams, and may instruct a computer, programmable data processing device, or other device, or combination thereof, to function in a particular manner.

[0140] The computer readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to achieve a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus, or other device, implement the functions / operations specified in the blocks of the flowcharts and / or block diagrams.

[0141] 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 aspects of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment or portion of instructions, including one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions described in the blocks may occur in a different order than that described in the figures. For example, two blocks shown in succession may actually be completed in a single step, may be executed in parallel, may be executed substantially in parallel, may be executed partially or fully overlapped in time, or the blocks may be executed in reverse order depending on the functionality involved. It will also be appreciated that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, can be implemented by a dedicated hardware-based system that performs the specified functions or operations, or may function or be embodied by a combination of dedicated hardware and computer instructions.

[0142] Further, systems according to various aspects may include a processor and logic integrated with or executable by the processor, the logic configured to perform one or more of the process steps described herein. Integrated means that the processor has logic embedded as hardware logic, such as an application specific integrated circuit (ASIC), FPGA, etc. Executable by the processor means that the logic is hardware logic, software logic such as firmware, part of an operating system, part of an application program, etc., or some combination of hardware logic and software logic, accessible by the processor and configured to cause the processor to perform some function when executed by the processor. The software logic may be stored in any type of memory known in the art, local and / or remote. Any processor known in the art may be used, such as a software processor module and / or hardware processors, such as ASICs, FPGAs, central processing units (CPUs), integrated circuits (ICs), graphics processing units (GPUs), etc.

[0143] It will be apparent from the above description that the various features of the above systems and / or methods may be combined in any manner to create multiple combinations.

[0144] It will also be appreciated that aspects of the present invention may be provided in the form of a service that is deployed on behalf of a customer to provide the service on demand.

[0145] The description of various aspects of the present invention has been given for illustrative purposes, but is not intended to be exhaustive or to be limited to the disclosed aspects. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described aspects. The terms used in this specification are selected to best explain the principles of the aspects, practical applications, or technical improvements to the technology found in the market, or to enable those skilled in the art to understand the aspects disclosed herein.

Claims

1. 1. A computer-implemented method, comprising: receiving an indication of a range of tracks to be released within the storage volume; identifying a data backup in a backup storage space for the storage volume corresponding to the track range; and releasing the track range in the storage volume in response to determining that the corresponding data backup in the backup storage space has expired.

2. 2. The computer-implemented method of claim 1, wherein the backup storage space is created as part of implementing logical corruption protection (LCP) for data in the storage volume.

3. 3. The computer-implemented method of claim 1, wherein the indication of the track range to be freed is received from a space freeing utility.

4. 2. The computer-implemented method of claim 1, wherein the indication of the track ranges to be freed within the storage volume is stored in a space freed bitmap (SRBM).

5. 5. The computer-implemented method of claim 1, wherein in response to determining that a data backup depends on one or more tracks within the track range to perform a data restore of the storage volume, the data backup in the backup storage space is identified as corresponding to the track range.

6. 6. The computer-implemented method of claim 1, wherein in response to determining that multiple data backups correspond to the track range, only a most recent corresponding backup is identified as the corresponding data backup.

7. 7. The computer-implemented method of claim 1, wherein an identifier of the corresponding data backup is stored as metadata in the storage volume.

8. A group of track ranges to be released within the storage volume is received, different subsets of the group being associated with different data backups within the backup storage space; an indication of each of the different subsets of the group is stored in its own separate data structure; 8. The computer-implemented method of claim 1, wherein each of the separate data structures is individually associated with a different data backup within the backup storage space.

9. 2. The computer-implemented method of claim 1, wherein the data backup is stored in extents within the backup storage space, and the extents within the backup storage space are filled according to a rolling buffer scheme.

10. 2. The computer-implemented method of claim 1, wherein the storage volume sets a periodic timer, and upon expiration of the periodic timer, the storage volume requests a status of the corresponding data backup from the backup storage space.

11. In response to determining that a data backup has expired, a notification is sent to a system that includes the storage volume; 2. The computer-implemented method of claim 1, wherein in response to receiving the notification, a request is sent to the storage volume to process a data structure that stores the indication of the track range to be released within the storage volume.

12. 1. A computer program product for releasing data storage tracks while maintaining logical corruption protection, the computer program product being executable by a processor to cause the processor to perform a method, the method comprising: receiving, by the processor, an indication of a range of tracks to be released within a storage volume; identifying, by the processor, a data backup in a backup storage space for the storage volume corresponding to the track range; and releasing, by the processor, the track range in the storage volume in response to determining that the corresponding data backup in the backup storage space has expired.

13. 13. The computer program product of claim 12, wherein the backup storage space is created as part of a logical corruption protection (LCP) implementation for data in the storage volume.

14. 14. The computer program product of claim 12 or 13, wherein the indication of the track range to be freed is received from a space freeing utility.

15. 14. The computer program product of claim 12 or 13, wherein an indication of the track ranges to be released within the storage volume is stored in a space release bitmap (SRBM).

16. 16. The computer program product of claim 12, wherein in response to determining that a data backup depends on one or more tracks within the track range to perform a data restore of the storage volume, the data backup in the backup storage space is identified as corresponding to the track range.

17. 13. The computer program product of claim 12, responsive to determining that multiple data backups correspond to the track range, only a most recent corresponding backup is identified as the corresponding data backup.

18. 13. The computer program product of claim 12, wherein an identifier for the data backup is stored as metadata in the storage volume.

19. A group of track ranges to be released within the storage volume is received, different subsets of the group being associated with different data backups within the backup storage space; an indication of each of the different subsets of the group is stored in its own separate data structure; 13. The computer program product of claim 12, wherein each of the separate data structures is individually associated with a different data backup within the backup storage space.

20. 13. The computer program product of claim 12, wherein the data backup is stored in extents within the backup storage space, and the extents within the backup storage space are filled according to a rolling buffer scheme.

21. 13. The computer program product of claim 12, wherein the storage volume sets a periodic timer, and upon expiration of the periodic timer, the storage volume requests a status of the corresponding data backup from the backup storage space.

22. In response to determining that a data backup has expired, a notification is sent to a system that includes the storage volume; 13. The computer program product of claim 12, wherein in response to receiving the notification, a request is sent to the storage volume to process a data structure that stores the indication of the track range to be released within the storage volume.

23. 1. A system comprising: A processor; and logic incorporated in, executable by, or both incorporated in and executable by the processor, the logic configured to perform the steps of any of claims 1 to 11.

Citation Information

Patent Citations

  • Storage system, storage control apparatus and method

    JP2011013821A

  • System and method for backing up eventually consistent databases in a production cluster

    JP2021515335A

  • Systems and methods for backing-up an eventually-consistent database in a production cluster

    US20190294509A1

  • Method and apparatus for maintaining compliant storage

    US8028135B1