# US 10,372,548 B2 · Copying data from multiple point-in-time copies to a log storage to use to roll-back a source storage

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,548 B2
- Document ID: US10372548B2
- Status: Granted
- Kind: B2
- Application number: 15/354,952
- Filed: 2016-11-17
- Published: 2018-05-17
- Granted: 2019-08-06
- Earliest claimed: 2016-11-17
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Theresa M. Brown; Nicolas M. Clayton; Gregory E. McBride; Carol S. Mellgren; David C. Reed
- Web page: https://patentgrep.com/patent/US10372548B2

## CPC

- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Provided are a computer program product, system, and method for copying data from multiple point-in-time copies to a log storage to use to roll-back a source storage managing point-in-time copies of a source storage. A plurality of point-in-time copies of a source storage at different point-in-times are established. In response to receiving writes to the source storage after establishing each of the point-in-time copies, point-in-time data in the source storage is copied, before being updated by the received writes, to a log storage, wherein the log storage stores point-in-time data for multiple of the point-in-time copies. The log storage is used to roll-back the source storage to a selected point-in-time of one of the point-in-time copies.

## Claims

### Claim 1

A computer program product for managing point-in-time copies of a source storage, wherein the computer program product comprises a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause operations, the operations comprising:
establishing a plurality of point-in-time copies of a source storage at different point-in-times;
in response to receiving writes to the source storage after establishing each of the point-in-time copies, copying point-in-time data in the source storage, before being updated by the received writes, to a log storage, wherein the log storage stores point-in-time data for multiple of the point-in-time copies;
for each of the established point-in-time copies, including in recovery metadata an entry including a first location and a last location in the log storage having point-in-time data for the point-in-time copy; and
copying the point-in-time data to the source storage from the first location through the last location in the log storage indicated in the entry in the recovery metadata for each point-in-time copy to roll-back the source storage to a selected point-in-time of one of the point-in-time copies.

### Claim 2 (depends on 1)

The computer program product of claim 1, wherein for each instance of the point-in-time data copied to the log storage, including metadata in the log storage indicating a source storage location in the source storage from which the point-in-time data was copied, wherein the point-in-time data is copied from the log storage to the source storage location in the source storage indicated in the log storage for the point-in-time data.

### Claim 3 (depends on 1)

The computer program product of claim 1, wherein the point-in-time data is written to the log storage at sequential storage locations in an order in which the point-in-time data was updated at the source storage, wherein copying the point-in-time data to the source storage comprises applying the point-in-time data from a most recent written location in the log storage through sequential locations in the log storage having point-in-time data from a most recent point-in-time copy through the point-in-time copy of the selected point-in-time.

### Claim 4 (depends on 1)

The computer program product of claim 1, wherein the operations further comprise:
creating a recovery point-in-time copy of the source storage; and
copying, to a recovery storage for the recovery point-in-time copy, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to the selected point-in-time.

### Claim 5 (depends on 4)

The computer program product of claim 4, wherein the operations further comprise:
indicating, in a change recording data structure for the recovery point-in-time copy, that storage locations in the recovery storage to which the point-in-time data was applied have been updated.

### Claim 6 (depends on 4)

The computer program product of claim 4, wherein the operations further comprise:
determining whether data in the recovery storage is valid after copying the point-in-time data in the log storage from all the point-in-time copies used in the roll-back of the source storage; and
in response to determining that the data in the recovery storage is not valid, performing:
selecting a new point-in-time for one of the point-in-time copies earlier in time than a point-in-time used to create the recovery point-in-time;
creating a new recovery point-in-time copy of the source storage having a new recovery storage;
copying point-in-time data from storage locations in the source storage that are updated after creating the new recovery point-in-time copy to the new recovery storage; and
applying, to the new recovery storage, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to the selected new point-in-time.

### Claim 7 (depends on 4)

The computer program product of claim 4, wherein the operations further comprise:
determining whether data in the recovery storage is valid after copying the point-in-time data in the log storage from all the point-in-time copies used in the roll-back of the source storage;
in response to determining that the data in the recovery storage is valid, performing:
selecting a new recovery point-in-time greater in time than a recovery point-in-time;
creating a new recovery point-in-time copy of the source storage having a new recovery storage;
copying point-in-time data from storage locations in the source storage that are updated after creating the new recovery point-in-time copy to the new recovery storage; and
applying, to the new recovery storage, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to the selected new recovery point-in-time.

### Claim 8 (depends on 1)

The computer program product of claim 1, wherein the operations further comprise:
iteratively creating recovery point-in-time copies of the source storage for recovery point-in-times by applying, to a recovery storage for each of the recovery point-in-time copies, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to one of the recovery point-in-times to determine one of the recovery point-in-time copies having valid data in the recovery storage as of a determined recovery point-in-time between two recovery point-in-time copies having invalid data; and
applying the point-in-time data from the recovery storage for the determined recovery point-in-time copy to the source storage to return to the determined recovery point-in-time at which the source storage had valid data.

### Claim 9

A system for managing point-in-time copies of a source storage, comprising:
processor; and
a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause operations, the operations comprising:
establishing a plurality of point-in-time copies of a source storage at different point-in-times;
in response to receiving writes to the source storage after establishing each of the point-in-time copies, copying point-in-time data in the source storage, before being updated by the received writes, to a log storage, wherein the log storage stores point-in-time data for multiple of the point-in-time copies;
for each of the established point-in-time copies, including in recovery metadata an entry including a first location and a last location in the log storage having point-in-time data for the point-in-time copy; and
copying the point-in-time data to the source storage from the first location through the last location in the log storage indicated in the entry in the recovery metadata for each point-in-time copy to roll-back the source storage to a selected point-in-time of one of the point-in-time copies.

### Claim 10 (depends on 9)

The system of claim 9, wherein for each instance of the point-in-time data copied to the log storage, including metadata in the log storage indicating a source storage location in the source storage from which the point-in-time data was copied, wherein the point-in-time data is copied from the log storage to the source storage location in the source storage indicated in the log storage for the point-in-time data.

### Claim 11 (depends on 9)

The system of claim 9, wherein the point-in-time data is written to the log storage at sequential storage locations in an order in which the point-in-time data was updated at the source storage, wherein the copying the point-in-time data to the source storage comprises applying the point-in-time data from a most recent written location in the log storage through sequential locations in the log storage having point-in-time data from a most recent point-in-time copy through the point-in-time copy of the selected point-in-time.

### Claim 12 (depends on 9)

The system of claim 9, wherein the operations further comprise:
creating a recovery point-in-time copy of the source storage; and
copying, to a recovery storage for the recovery point-in-time copy, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to the selected point-in-time.

### Claim 13 (depends on 12)

The system of claim 12, wherein the operations further comprise:
indicating, in a change recording data structure for the recovery point-in-time copy, that storage locations in the recovery storage to which the point-in-time data was applied have been updated.

### Claim 14 (depends on 9)

The system of claim 9, wherein the operations further comprise:
iteratively creating recovery point-in-time copies of the source storage for recovery point-in-times by applying, to a recovery storage for each of the recovery point-in-time copies, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to one of the recovery point-in-times to determine one of the recovery point-in-time copies having valid data in the recovery storage as of a determined recovery point-in-time between two recovery point-in-time copies having invalid data; and
applying the point-in-time data from the recovery storage for the determined recovery point-in-time copy to the source storage to return to the determined recovery point-in-time at which the source storage had valid data.

### Claim 15

A method for managing point-in-time copies of a source storage, comprising:
establishing a plurality of point-in-time copies of a source storage at different point-in-times;
in response to receiving writes to the source storage after establishing each of the point-in-time copies, copying point-in-time data in the source storage, before being updated by the received writes, to a log storage, wherein the log storage stores point-in-time data for multiple of the point-in-time copies;
for each of the established point-in-time copies, including in recovery metadata an entry including a first location and a last location in the log storage having point-in-time data for the point-in-time copy; and
copying the point-in-time data to the source storage from the first location through the last location in the log storage indicated in the entry in the recovery metadata for each point-in-time copy to roll-back the source storage to a selected point-in-time of one of the point-in-time copies.

### Claim 16 (depends on 15)

The method of claim 15, wherein for each instance of the point-in-time data copied to the log storage, including metadata in the log storage indicating a source storage location in the source storage from which the point-in-time data was copied, wherein the point-in-time data is copied from the log storage to the source storage location in the source storage indicated in the log storage for the point-in-time data.

### Claim 17 (depends on 15)

The method of claim 15, wherein the point-in-time data is written to the log storage at sequential storage locations in an order in which the point-in-time data was updated at the source storage, wherein the copying the point-in-time data to the source storage comprises applying the point-in-time data from a most recent written location in the log storage through sequential locations in the log storage having point-in-time data from a most recent point-in-time copy through the point-in-time copy of the selected point-in-time.

### Claim 18 (depends on 15)

The method of claim 15, further comprising:
creating a recovery point-in-time copy of the source storage; and
copying, to a recovery storage for the recovery point-in-time copy, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to the selected point-in-time.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
indicating, in a change recording data structure for the recovery point-in-time copy, that storage locations in the recovery storage to which the point-in-time data was applied have been updated.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
iteratively creating recovery point-in-time copies of the source storage for recovery point-in-times by applying, to a recovery storage for each of the recovery point-in-time copies, the point-in-time data in the log storage from point-in-time copies for points-in-time greater than and equal to one of the recovery point-in-times to determine one of the recovery point-in-time copies having valid data in the recovery storage as of a determined recovery point-in-time between two recovery point-in-time copies having invalid data; and
applying the point-in-time data from the recovery storage for the determined recovery point-in-time copy to the source storage to return to the determined recovery point-in-time at which the source storage had valid data.
