Creating a full backup image from incremental backups

A full backup copy of a storage volume can be created from only incremental backups of the storage volume. A bitmap can be created that includes a set of depopulated indicator locations configured to contain a set of indicators, where each indicator location represents a corresponding portion of the storage volume. Portions of the storage volume from which data was copied to a set of incremental backups can be identified. Indicators providing correspondence between the identified portions of the storage volume and the incremental backups of the set of incremental backups can be created in the bitmap, until the set of indicator locations in the bitmap is fully populated. In accordance with the set of indicators, data from the set of incremental backups corresponding to the identified portions of the storage volume can be copied to the backup copy.

BACKGROUND

The present disclosure generally relates to creating a backup copy of data contained on a data storage volume. In particular, this disclosure relates to creating, from only a plurality of incremental data backups and without need for a full backup image, a complete backup copy of data stored on the data storage volume.

Data stored within a computer, server or other electronic system can be volatile, and therefore subject to loss due to causes including, but not limited to, hard drive failures, power system failures and malware such as trojans and viruses. The loss of electronically stored data may result in downtime of an electronic system such as a computer or server, and the time required to restore/recover lost data may result in loss of system availability and/or revenues generated through the use of the system. In certain cases, if data is not backed up, the regeneration of data may take an unacceptably long time, and in certain cases lost data may be irretrievable.

A process of backing up electronically stored data can include the copying and archiving of data stored on a computer or other electronic system so it may be restored to the system after a data loss event. Current backup copies of electronic data may facilitate recovery of the data in a timely fashion, and may also ensure that the data is not irretrievably lost. In certain applications, data backups may be regularly scheduled and/or automated, and may be supplemented by manually initiated backups. Manually initiated backups may be useful, for example, during or after the completion of a significant amount of data entry or other manual tasks performed on a computer system, or after execution of a batch process. To ensure the safety and security of backed-up data, the media used to contain the data, such as a hard disk drive or magnetic tape, may be stored in an “off-site” location that is physically secure and remote from the electronic system.

SUMMARY

Embodiments may be directed towards a method of creating a backup copy of data located on a data storage volume. The method can include creating a bitmap that includes a set of indicator locations configured to contain a set of indicators, with each indicator location of the set of indicator locations representing a corresponding portion of the storage volume. The set of indicator locations is created as depopulated. The method can also include identifying portions of the storage volume that have been backed up to corresponding incremental backups of a set of incremental backups and creating, in the bitmap, until the set of indicator locations in the bitmap is fully populated, indicators of the set of indicators. The indicators can provide correspondence between the identified portions of the storage volume and the incremental backups of the set of incremental backups. The method can also include copying, to the backup copy, in accordance with the set of indicators, data from the set of incremental backups corresponding to the identified portions of the storage volume.

Embodiments may also be directed towards an electronic system. The electronic system can include a storage volume containing electronic data and a host system including at least one processor circuit. The at least one processor circuit can be configured to create a bitmap that includes a set of indicator locations configured to contain a set of indicators, each indicator location of the set of indicator locations representing a corresponding portion of the storage volume. The set of indicator locations is created as depopulated. The at least one processor circuit can also be configured to identify portions of the storage volume that have been backed up to corresponding incremental backups of a set of incremental backups. The at least one processor circuit can also be configured to create, in the bitmap, until the set of indicator locations in the bitmap is fully populated, indicators of the set of indicators, the indicators providing correspondence between the identified portions of the storage volume and the incremental backups of the set of incremental backups. The at least one processor circuit can also be configured to copy, to the backup copy, in accordance with the set of indicators, data from the set of incremental backups corresponding to the identified portions of the storage volume.

Embodiments may also be directed towards a computer program product for creating a backup copy of data located on a storage volume. The computer program product can include at least one computer readable storage medium having program instructions embodied therewith, the program instructions executable by at least one computer processor circuit to cause the at least one computer processor circuit to perform a method. The method can include creating a bitmap that includes a set of indicator locations configured to contain a set of indicators, each indicator location of the set of indicator locations representing a corresponding portion of the storage volume, the set of indicator locations created as depopulated. The method can also include identifying portions of the storage volume that have been backed up to corresponding incremental backups of a set of incremental backups and creating, in the bitmap, until the set of indicator locations in the bitmap is fully populated, indicators of the set of indicators, the indicators providing correspondence between the identified portions of the storage volume and the incremental backups of the set of incremental backups. The method can also include copying, to the backup copy, in accordance with the set of indicators, data from the set of incremental backups corresponding to the identified portions of the storage volume.

In the drawings and the Detailed Description, like numbers generally refer to like components, parts, steps, and processes.

DETAILED DESCRIPTION

Certain embodiments of the present disclosure can be appreciated in the context of providing enhanced, robust, full backup copy creation for data stored on electronic equipment such as servers, which may be used to provide data to clients attached to a server through a network. Such servers may include, but are not limited to web servers, application servers, mail servers, and virtual servers. While not necessarily limited thereto, embodiments discussed in this context can facilitate an understanding of various aspects of the disclosure. Certain embodiments may also be directed towards other equipment and associated applications, such as providing enhanced, robust, full backup copy creation for data stored on electronic equipment such as computing systems, which may be used in a wide variety of computational and data processing applications. Such computing systems may include, but are not limited to, supercomputers, high-performance computing (HPC) systems, and other types of special-purpose computers. Embodiments may also be directed towards providing enhanced, robust, full backup copy creation for data stored on consumer and small office/home office (SOHO) electronic equipment such as personal computers, laptops, and network server devices.

For ease of discussion, the term “storage volume” is used herein to generically refer to an electronic data storage device or entity. In certain applications, a storage volume can be an entire hard disk drive, or a partition or logical unit of a hard disk drive. In some applications, a storage volume can refer to an array, or portion of an array, of hard disk drives, for example, a redundant array of independent disks (RAID) configuration, or various direct-attached storage (DAS) devices. The term “storage volume” can also be used to refer to a logical unit number (LUN), a storage area network (SAN), or at least one network-attached storage (NAS) devices.

It may be understood that the terms “incremental backup”, “snapshot backup” and “snapshot” may be used interchangeably herein in reference to a partial backup of data contained on a storage volume. In certain applications, such backups may be performed in accordance with a regular schedule, and may contain only data which has changed since a previous incremental or full storage volume backup operation. It may also be understood that the terms “full backup” or “backup image” can be used to refer to a complete backup of all data contained on a particular storage volume at a particular point in time.

A data protection/backup strategy known as “block-level” backups can be used by data backup applications to create secondary copies of data stored on a computer, server or other electronic device. Performing an incremental block-level backup can involve analyzing source data, e.g., files, and subsequently backing up only the portions or blocks of data/files that have been modified following a previous backup operation. A block-level backup strategy generally bypasses the electronic device's file system and reads data directly from the disk or data storage volume. Backing up and restoring data using block-level backups can result in reduced data storage space and time requirements relative to a “file-level” or “file-centric” backup strategy.

In some applications, a “full” block-level backup copy of data stored on a storage volume can be created on a separate “backup” volume. During a full block-level backup, all of the data blocks from the data storage volume are copied to the backup volume. Once such a backup copy has been created, data on the data storage volume can be fully restored by copying data back from the backup volume to the data storage volume; no other data or backup image is required to complete such a restore operation.

In certain applications, one or more “incremental” block-level backup copies of data stored on a storage volume can be created on a separate backup volume. In an incremental block-level backup, only blocks containing data that has changed since the last full or incremental backup are copied to the backup volume. In certain applications, incremental block-level backups can be created according to a schedule or in response to contents of a data block being changed since a previous backup operation.

Once a set of incremental block-level backup copies is created, data can be restored by a backup application to the data storage volume by successively copying data blocks back from the incremental backup copies, in a reverse chronological order, until the backup application retrieves a full backup image. The backup application can then retrieve any remaining unrestored blocks from the full backup image/copy and copy them back to the data storage volume. In certain applications, an incremental block-level restore process can therefore require both an incremental backup set and a full block-level backup image/copy in order to completely restore a data storage volume.

In both the incremental and full block-level backup schemes, the presence of a full block-level backup copy of storage volume data can be critical to the process of restoring the entire contents of the data storage volume. Both the incremental and full block-level backup approaches may therefore also require the transfer of large amounts of data during the process of backing up or restoring an entire data storage volume.

If a full block-level backup image is not accessible or available, and only incremental block-level backups have been previously created, a data storage volume can be partially restored from the incremental block-level backups. This can allow the restoration of a data storage volume to an earlier time, however full data redundancy may not obtained. Therefore if any storage volume data is lost, block-level incremental backups alone may not contain sufficient data to completely restore the original data present on the data storage volume.

Backing up and restoring data to a cloud-based backup volume or to a remote volume over a network can be time-consuming, as bandwidth to cloud or network storage can be very constrained, for example, relative to SAN or DAS backup schemes. As data storage volume sizes continue to increase, backing up a storage volume to a remote location such as a cloud-based backup provider becomes more difficult and consumes greater amounts of time and network bandwidth.

Conventional block-level backup schemes do not generally obtain full redundancy of data contained in backups, and tend to limit the amount of data that can be transferred during backup and restore operations. According to embodiments of the present disclosure, a robust data backup/restore solution can leverage the advantages of both full and incremental block-level backup approaches by providing full data redundancy while limiting the network bandwidth and time requirements for block-level data backup and restore operations.

According to embodiments of the present disclosure, creation of a full block-level backup copy of storage volume data using only incremental block-level backups, without requiring a full storage volume image/copy can be useful in providing full data redundancy while limiting the time and network bandwidth requirements for data backup and restore operations. A series of block-level incremental backups of the data storage volume can be created, according to a schedule or in response to changed data written to a data storage volume. A bitmap can then be created that catalogs the incrementally backed up storage volume data blocks that are available in each of the set of snapshot backups. If at any snapshot time, the bitmap accounts for all data blocks of the storage volume, a complete storage volume copy can then be recreated or assembled by reading the snapshots, in reverse chronological order, starting from the most recent snapshot backup. Once a full storage volume copy is re-created/assembled, it can be used as a full backup image, to restore the data storage volume to its former state at the time of most recent snapshot.

Various aspects of the present disclosure may be useful for reducing the time required for a full backup image creation. Embodiments of the present disclosure can make use of limited amounts of system bandwidth for short time intervals in creating incremental/snapshot backups. A data backup system implemented according to certain embodiments may provide cost-effective data backup system for use computers and electronic devices, by using existing and proven data management, block-level data storage and networking technologies. Embodiments of the present disclosure can be useful in providing multiple restore points before a full backup image is available.

Aspects of the various embodiments may be used to enable, in a Virtual Desktop Infrastructure (VDI) environment, the restoration of partial snapshot backups onto a “golden” disk image that is not available by way of a cloud backup system. This restoration can result in significant reduction of the time required to get to a restore point. Various embodiments of the present disclosure can enable, in a collaborative development and test environment using cloud storage, very rapid point-in-time snapshots and restores of virtual machines (VMs) and raw volume data/operating system (OS) images.

Certain embodiments relate to the creation of storage volume backup images from incremental or “snapshot” backups.FIG. 1depicts an electronic backup creation system100for the creation of a backup copy/image of storage volume124from a set of incremental backups126. The electronic backup creation system100includes a host system102, a storage volume124and a backup volume122, interconnected through network120, according to embodiments of the present disclosure. The backup creation system100can be useful for creating a full backup image of data stored on storage volume124from only a set of incremental backups126stored on backup volume122, without requiring access to a full backup image of storage volume124. Full backup images created using backup creation system100may require significantly less time and network bandwidth to create then backup images created using other types of backup/restore methods and systems.

According to embodiments, host system102may be a computer, server or other type of electronic system or device using data stored on a storage volume, e.g., storage volume124. In some embodiments, for example, host system102may be a rack-mounted computer or server system, and in some embodiments host system102may be a special-purpose computer, supercomputer or home/office computer system. Host system102can be useful for providing computational and/or data serving capability to at least one client or user in accordance with functions and services offered by various types of computers, computing systems and servers.

According to embodiments, host system102includes a storage volume bitmap118, which may be stored, for example in system memory or on a data storage volume, e.g.,124of the host system102. In embodiments, host system102also includes the appropriate hardware and/or software elements necessary to connect it to a wired and/or wireless data communications network, e.g., network120. These elements may include, for example, Ethernet connection hardware and corresponding software modules.

Host system102can include at least one processor circuit and associated memory which can be useful in performing operations included in a method of creating a full storage volume backup image from only incremental backups. Such a method can include operations such as creating a bitmap including indicator locations representing corresponding portions of the storage volume and identifying backed up storage volume portions corresponding to the incremental backups. Operations of the method can also include writing indicators into the bitmap and copying data from the incremental backups to a re-created full backup image.

According to embodiments, network120is an electronic data communication network useful for transferring data between host system102, storage volume124and backup volume122. In some embodiments, storage volume124and backup volume122may be located within, or relatively close, to host system102, in which case network120can be a simple point-to-point interconnection such as DAS device. In some embodiments, storage volume124and/or backup volume122may be located at a location remote to host system102, for example, in a cloud-based storage application. In this scenario, network120may include network(s) such as a LAN, a SAN, a wireless fidelity (Wi-Fi) connection, a wireless local-area network (WLAN), a virtual local-area network (VLAN), and the Internet.

In embodiments, network120can include a wired and/or wireless connection(s), and can be implemented using a number of industry-standard networking schemes and protocols, for example Server Message Block (SMB), Transmission Control Protocol/Internet Protocol (TCP/IP), or Fibre Channel protocols. Network120may be configured with high-speed data communications paths in order to be useful in providing efficient data transfer and backup/restore capability between host system102, storage volume124and backup volume122.

According to embodiments, storage volume124is an electronic data storage volume useful for containing data accessed by host system102. According to embodiments, the storage volume124can include various DAS devices, such as one or more hard disk drives, solid-state drives (SSDs), or an array of hard disk drives and/or SSDs. The storage volume124can also be a partition, region, or logical unit, i.e., LUN of a hard disk drive. In some embodiments the storage volume124can include an array, or portion of an array of hard disk drives, for example, a RAID configuration, a SAN, or at least one NAS device.

In embodiments, storage volume124is configured to allow “block-level” access to stored data by host system102. Thus, host system102can read and write data stored within logical and/or physical portions of storage volume124, independent of any particular file system under which files are organized. For ease of illustration and discussion herein, storage volume124is divided into four storage volume portions labeled1,2,3and4. In embodiments, storage volume124can be divided into a large number, e.g., thousands, of portions or blocks, in accordance with the amount of data stored on storage volume124, and the amount of data stored in each portion or block. In particular applications, a portion can be a partition, a sector, a block, a region, a volume, a LUN or a disk of a disk storage array. In certain applications, portion or block sizes may be chosen in order to optimize the speed and efficiency of block-level activities such as backup and restore operations.

According to embodiments, backup volume122is an electronic data storage volume useful for containing a set of incremental backups126which can be accessed by host system102. According to embodiments, backup volume122can be similar to storage volume124, and can include various DAS devices, such as one or more hard disk drives, SSDs, or an array of hard disk drives and/or SSDs. Backup volume122can also be a partition, region, or logical unit, i.e., LUN of a hard disk drive. In some embodiments the backup volume122can include an array, or portion of an array of hard disk drives, for example, a RAID configuration, a SAN, or at least one NAS device.

Similar to storage volume124, backup volume122is configured to allow “block-level” access to data backed up by host system102from storage volume124onto backup volume122. For ease of illustration and discussion, backup volume122is depicted as containing a set of incremental backups126, each incremental backup divided into four portions1,2,3and4. Each incremental backup of the set of incremental backups126can include one or more portions or blocks of data from storage volume124that have changed following a previous incremental/snapshot backup operation.

In embodiments, backup volume122can be configured to contain a large number, e.g., hundreds, of individual incremental backups, in accordance with the amount of data stored on storage volume124, and the amount of data stored in each incremental backup. In particular applications, a block or portion of a storage volume can be a partition, a sector, a region, a volume, a LUN or a disk of a disk storage array. In applications, portion or block sizes within incremental backups may generally match the size of data blocks or portions of storage volume124. In certain applications, backup volume122and storage volume124may be different physical devices, e.g., hard disk drives, and may be situated in different locations, in order to reduce risk of data loss from events such as hardware failures, electrical events, fires, earthquakes, and/or malicious activity.

According to embodiments, host system102contains a bitmap118that includes a set of indicator locations104,108,106and110, which are useful to contain a set of indicators of the backup statuses of corresponding portions1,2,3and4of storage volume124, respectively. According to embodiments, each portion or block of a storage volume has a corresponding indicator location in a bitmap within the host system, regardless of the number of portions or blocks contained in a storage volume.

The indicator locations, e.g.,104,108,106and110are each configured to contain various types of status information useful to host system102in establishing a correspondence between a portion of storage volume124and one or more incremental backups of the set of incremental backups126. For example, indicator location108contains indicator112, set to a binary “1” value, indicating that an incremental backup exists, within the set of incremental backups126, that contains a copy of corresponding portion “2” of storage volume124. Similarly, if indicator112contains a “0”, this indicates that an incremental backup does not exist for corresponding portion “2” of storage volume124.

Indicator location108also contains timestamp114, which contains information indicating a date and/or time when a most recent incremental backup of the corresponding portion “2” of the storage volume124was created. Information within timestamp114can be compared by host system102to creation dates of other incremental backups of the set of incremental backups126in order to determine which incremental backup of a portion of storage volume124was created most recently. In some embodiments, each incremental backup includes an associated timestamp with a unique time/date value, i.e., each incremental backup is taken at a different time. According to embodiments, host system102can be configured to write a timestamp value into an indicator location, e.g.,108, at the time of creation of the corresponding incremental backup. In some embodiments host system102can be configured to write a timestamp value into an indicator location in response to a search, through a set of incremental backups126, for the most recently created incremental backup of a particular portion of the storage volume124. In embodiments, timestamp114can have a variety of date/time formats.

Indicator location108also contains ID116, which contains information such as a serial number or series of alphanumeric digits corresponding to a particular incremental backup of the set of incremental backups126. ID116can be useful in uniquely identifying a particular incremental backup containing a copy of portion “2” of storage volume124from other backups within the set of incremental backups126. Identifying information within ID116can be read by host system102as a pointer or reference in order to tag, locate and/or retrieve a particular incremental backup from the set of incremental backups126. Such a pointer or reference can be useful when copying backup portions from the set of incremental backups126to a full backup copy of the storage volume. According to embodiments, each incremental backup can have an associated ID that is unique, in order to facilitate incremental backup indexing and retrieval.

According to embodiments, host system102can be configured to write an ID value into an indicator location, e.g.,116, at the time of the corresponding incremental backup creation. In some embodiments host system102can be configured to write an ID value into an indicator location in response to a search, through a set of incremental backups126, for an incremental backup of a particular portion of the storage volume124. In embodiments, ID116can have a variety of numeric and/or alphanumeric formats.

In the discussion above, certain examples of indicators, e.g.,112, timestamps e.g.,114, and IDs, e.g.,116have been discussed, however, these indicator examples are not limiting. According to the spirit and scope of the present disclosure, other types and formats of backup status information may be included within each indicator location of the storage volume bitmap118.

According to embodiments, host system102creates storage volume bitmap118as initially “depopulated” or “empty” of any indicators such as indicator112, timestamp114and ID116. In embodiments, indicator locations may be initially populated, upon creation, with “null” or “0” values, and such a bitmap may still be considered “depopulated” as the term is used with this disclosure. As incremental backups are created and/or searched for, storage volume bitmap118is populated in response to a particular incremental backup being either created or found in the set of incremental backups126. According to embodiments, host system102is configured to create storage volume bitmap118within memory or data storage areas, e.g., on a hard disk, of host system102. In embodiments, the storage volume bitmap118can be a table, database, text file, memory device or other software or hardware data container within a host system102that is useful for containing an array or collection of data corresponding to the backup status of portions of storage volume124.

FIG. 2depicts the results of an example series of operations included in the creation of a storage volume124backup copy from a set of incremental backups126, according to embodiments consistent with the figures.FIG. 2may be useful in facilitating an understanding of the creation of a set of incremental backups126in response to changing data on storage volume124, the creation of incremental backup bitmap118A, and the creation of a storage volume bitmap118. The creation of incremental backups and cataloging of these backups through creation of incremental backup and storage volume bitmaps can allow a full backup image of the contents of a storage volume to be created efficiently, using less time and bandwidth than other backup and restore methods. According to embodiments, a previously created storage volume full backup image is not used nor required in order to restore the data contents of the storage volume.

FIG. 2depicts an example of how the contents of a storage volume124, set of incremental backups126, an incremental backup bitmap118A and a storage volume bitmap118may change over a sequential set of times T0-T8. The depicted time-related changes are useful in illustrating how incremental backups may be created, read and catalogued or indexed in a bitmap or similar data structure, and subsequently used to create or reconstruct a backup copy of data on a storage volume, e.g., storage volume124.

The times T0to T8, along the horizontal axis ofFIG. 2, are used to represent an ordered sequence of times corresponding to incremental backup operations. Time T8is used to represent a “current” or most recent time corresponding to the most recent/current incremental backup. Time T0is used to represent the time of the “oldest” incremental backup required to create a full backup of storage volume124. Although incremental backups and results of other operations can exist before time T0, incremental backups taken before time T0are not required for the creation of a storage volume full backup image. Depicted times T0to T8represent only the window of time encompassing incremental backups and other operations necessary for the creation of a storage volume full backup image.

In some embodiments, incremental or snapshot backups are taken at regularly scheduled times. In some embodiments, incremental backups are taken in response to changes in data on storage volume124, or other criteria, and the resulting time intervals between adjacent times, e.g., T0to T1and T1to T2may not be identical. In general, the storage volume124row and the set of incremental backups126row ofFIG. 2may be understood in a “forward-looking” direction, i.e., in a time-ordered sequence from time T0to T8. Storage volume124data is changed and in response the set of incremental backups126is created in an “oldest” to “newest” sequence from time T0to T8.

Similarly, the creation of an incremental backup bitmap118A may be understood in a “forward-looking” direction from time T0to T8, in direct response to the creation of each backup of the set of incremental backups126. The creation of incremental backup bitmap118A may also be understood in a “backward-looking” direction from time T8to T0. In some embodiments, the incremental backup bitmap118A may alternatively be created by a host system searching the set of incremental backups126in a “reverse” order, i.e., from time T8to T0, and subsequently creating the incremental backup bitmaps118A.

The creation of storage volume backup bitmap118may also be understood in a “backward-looking” direction from time T8to T0. According to embodiments, the incremental backup bitmap118A may be created by the host system reading the incremental backup bitmaps118A in a “reverse” order, i.e., from time T8to T0, and subsequently populating indicator locations within the storage volume backup bitmap118.

For ease of discussion ofFIG. 2, only a binary indicator, consistent with indicator112,FIG. 1will be referenced. It may be understood however, according to embodiments, indicators such as timestamp114,FIG. 1, ID116,FIG. 1, or other types of indicators can also be used within the incremental backup bitmap118A and storage volume bitmap118.

For purposes of illustration, the storage volume124is divided into four storage volume portions1-4, consistent with the figures. The storage volume124row ofFIG. 2is useful in representing, over the times T0to T8, how the contents of portions of storage volume124can change, in response to data written to them from a host system. For example, at time T0, storage volume124portion4is depicted as receiving new or changed data written from a host system. This operation may be referred to as a “host write”. A host write occurs when a host system such as a computer, server or other electronic device, writes new or changed data into one or more portions of a data storage volume, for example during the course of the host system performing operations such as processing data or serving files. Host writes of portions1,3and2of storage volume124occur at times T2, T4and T6, respectively.

The darker shading of certain portions of storage volume124denotes storage volume portions that, at particular times, are not yet backed up in the set of incremental backups126. For example, at time T0, storage volume124portions1-4are all darkly shaded, indicating that none of portions1-4have yet been included in the set of incremental backups126. As data is backed up from storage volume124portions to the set of incremental backups126, the shading of the backed up portion(s) is changed from dark to light to denote that these portion(s) are included in the set of incremental backups126. For example, at time T1, portion4of storage volume124is slightly shaded, indicating that portion4has been included in the set of incremental backups126.

As time progresses from time T0to time T8, storage volume124receives new data, from the host system, in portions4,1,3and2, at times T0, T2, T4and T6, respectively. As these newly changed storage volume portions are incrementally backed up, the shading representing backed up portions is changed from dark to light. The shading therefore indicates that at times T7and T8, all of the most recent changes to portions of storage volume124have been included in the set of incremental backups126. Starting at time T8, therefore, a complete set of the most recently changed portions of storage volume124is available for inclusion in a storage volume full backup image.

For purposes of illustration, each incremental backup of the set of incremental backups126is divided into four storage volume portions1-4, consistent with the figures. The set of incremental backups126row ofFIG. 2is useful in representing the contents of individual incremental backups taken at particular points in time. According to embodiments, these backups are created, by the host system, in response to new or changed data being written into portions of storage volume124.

For example, at time T0, portion4of storage volume124receives data written from the host system. In response, at time T1, the host system incrementally backs up portion4of storage volume124to an incremental backup within the set of incremental backups126. The presence of a particular portion within an incremental backup is denoted by the portion, e.g., portion4at time T1, being lightly shaded. The absence of shading of any portion of an incremental backup indicates that the corresponding portion of the storage volume124is not included in that particular incremental backup. Each incremental backup of the set of incremental backups126includes only data that has changed since the previous incremental backup.

As time progresses from time T0to time T8, storage volume124portions4,1,3and2receive changed or new data from the host system, and are subsequently backed up to the set of incremental backups126, as represented by the shaded incremental backup portions at times T1, T3, T5and T7, respectively. When the backup of all of the portions of storage volume124has been completed, at time T8, the set of incremental backups126is complete and ready to be used to construct a full backup image of storage volume124. Each time portion of storage volume124is changed a new incremental backup is subsequently taken. According to embodiments, the newest incremental backup containing a particular portion will be used in reconstructing a storage volume full backup copy.

Similar to the set of incremental backups126, each incremental backup bitmap of the set118A is divided into four storage volume portions1-4, consistent with the figures. The incremental backup bitmap118A row ofFIG. 2is useful in representing the presence of individual portions of the storage volume124in particular incremental backups.

For example, at time T1, an incremental backup of portion4of storage volume124is created by the host system. The corresponding incremental backup bitmap includes a binary “1” value in the position corresponding to portion4of the incremental backup. Each time a storage volume124portion is incrementally backed up, a corresponding incremental backup bitmap is created for use by the host system. The incremental backup bitmap118A row represents an “instantaneous” record of the incremental backup of portions of the storage volume124portions at particular times.

For simplicity of illustration, a binary “1” value is used in the incremental backup bitmaps to denote the presence of a particular storage volume portion, however other indicator values within the bitmap may also be used, such as a unique ID, serial number, timestamp, or other type(s) of indicators, consistent with the figures. In some embodiments, incremental backup bitmaps118A can be created by the host system in a “forward” direction, i.e., in order from time T0to time T8, as incremental backups are created. In some embodiments, incremental backup bitmaps118A can be created in a “backward” direction, i.e., in order from time T8to time T0, as the host system reads the set of incremental backups126after they are created.

Similar to the incremental backup bitmaps118A, the storage volume bitmap118is divided into four storage volume portions1-4, consistent with the figures. The storage volume bitmap118row ofFIG. 2is useful in representing the presence of backups of individual portions of the storage volume124within the entire set of incremental backups126. For simplicity of illustration, a binary “1” value is used in the storage volume bitmap118to denote the presence of a particular storage volume portion within the entire set of incremental backups126. However other indicator values within the bitmap may also be used, such as a unique ID, serial number, timestamp, or other type(s) of indicators, consistent with the figures.

According to embodiments, storage volume bitmap118is created by the host system in a “backward” direction, i.e., in order from time T8to time T0, as the host system reads the incremental backup bitmaps118A after they are created, and adds indicators found in incremental backup bitmaps118A to storage volume bitmap118. The storage volume bitmap118row therefore represents a “cumulative” record of the incremental backups of the storage volume124portions at particular times. The host system adds indicators found in incremental backup bitmaps118A to storage volume bitmap118until the set of indicator locations in storage volume bitmap118is fully populated. Once fully populated, the storage volume bitmap118, as depicted in fully populated bitmap218, indicates that a full storage volume backup copy can now be constructed by reading and accumulating all the incremental backups backwards from time T8to time T0.

Following the complete population of storage volume bitmap118, the full backup image of storage volume124is created by the host system copying data portions from the set of incremental backups126into a full backup image. The copying ceases when all portions of the storage volume124are restored, in accordance with storage volume bitmap118and incremental backup bitmaps118A. The operations described herein use the most recent incremental backup of each portion of the storage volume, and therefore preserve the integrity of the data stored on storage volume124. Thus, the backup copy is created from incremental backups without requiring a prior full backup copy of the storage volume, and can be used to restore the storage volume124to a previous state.

For simplicity of illustration and discussion, the above-described series of operations included in the creation of a storage volume124backup copy from a set of incremental backups126includes only one host write per storage volume124portion. However, other host write sequences may be possible, for example sequences having multiple sequential host writes to a particular storage volume124portion. For example, a certain host write sequence could include host writes to storage volume124portions3,4,4,2,1, in chronological order. In such an example, only the most recent host write to portion4would be included in the bitmap, while the earlier host write to portion4would be ignored. Ignoring the earlier host write to portion4could have certain advantages in not requiring copying or transmitting of the earlier incremental backup of portion4when creating the full backup copy of storage volume124.

FIG. 3is a flow diagram depicting a method of creating a storage volume backup copy300from a set of incremental backups, according to embodiments consistent with the figures. The process300moves from start302to operation304. Operation304generally refers to creating a bitmap with a set of depopulated indicator locations. In embodiments, a host system is used to create a bitmap including indicator locations corresponding to portions of a storage volume. The indicator locations are initially created in a “depopulated” state, having a binary “0” or some other null value indicator in each location, the indicator signifying an absence of a backup for the corresponding portion of the storage volume. The bitmap may be created within memory or a data storage device, e.g., a hard disk drive within the host system. Once the bitmap is created, the process moves to operation306.

Operation306generally refers to identifying portions of the storage volume that correspond to data in incremental backups. In some embodiments, the host system can identify, during the creation of incremental block-level backups of the storage volume, which portions of the storage volume include data changed since a previous incremental backup, and are to be included in the current incremental backup. Once portions of storage volume are identified, the process moves to operation308.

Operation308generally refers to creating indicators in the bitmap corresponding to incrementally backed up portions of the storage volume. According to embodiments, the host system creates indicators, within the bitmap, corresponding to backed up portions of the storage volume identified in operation306. Such indicators can include binary values, timestamps, ID text strings, or other useful and/or unique identifiers that are useful to create correspondence between particular incremental backups and portions of the storage volume included in the incremental backups. Once indicators are created, the process moves to operation310.

At operation310, a determination is made between regarding whether the bitmap is fully populated or not. In embodiments, the host system is used to determine whether the bitmap is fully populated, i.e., whether a positive indication of an incremental backup of each portion of the storage volume is present. The host system is configured to read each indicator within the bitmap, and determine if any of the indicators remain in a “depopulated” state, e.g., a binary “0” or some other null value indicator. If any of the indicators remain depopulated, then the incremental backup(s) of the corresponding portion(s) of the storage volume are absent, and creating a full backup image of the storage volume will fail. If all of the indicators are populated, then the incremental backups of all portions of the storage volume are present, and creating a full backup image of the storage volume can complete successfully. If it is determined that the bitmap is not fully populated, the process returns to operation306. If it is determined that that the bitmap is fully populated, the process moves to operation312.

Operation312generally refers to copying incrementally backed up portions of the storage volume to create a full backup copy or image. According to embodiments, the bitmap being fully populated, as determined in operation310, indicates the presence of incremental backups of each and every portion of the storage volume. Once a complete set of incremental backups of the storage volume is present, the host system is used to reassemble/copy these incremental backups and to a complete and full backup image for the storage volume. Once incrementally backed up portions of the storage volume are copied, the process300may end at block314.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows: