IP Library Granted Patent US 8,572,040
Granted Patent B2
US 8,572,040 · App. 11/741,163 · Granted Oct 29, 2013

Methods and infrastructure for performing repetitive data protection and a corresponding restore of data

Inventors: Oliver Augenstein (Horgen, CH); Thomas Prause (Rottenburg, DE)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,572,040
App. No.
11/741,163
Granted
Oct 29, 2013
Kind
B2
Abstract

The present invention provides methods and an infrastructure for performing repetitive data protection and a corresponding restore of data for block oriented data objects comprising several indexed segments. For implementing the invention, timestamps t k are set by a timer k. Only the first data modification of a segment is recorded, after a timestamp t k has been set, by storing the old data contents of said segment together with the segment index j and said timestamp t k as undo-log block in a first journal j 0 , before overwriting said segment with the modified new data. Besides, said undo-log blocks are transmitted to N journals j i for storing redundant undo-log information, with N>1 and i=0, . . . , N−1. According to the present invention for each journal j i journal-specific timestamps t k/i are generated, so that each journal j i is written for a different set of timestamps t k/i .

Claims (45)

1. A method for performing repetitive data protection for data stored in a block oriented data object comprising several indexed segments, the method comprising:

setting a set of timestamps t k for a first undo-log journal j 0 by a timer k;

recording each first data modification of a segment that occurs after a timestamp t k has been set by storing old data contents of said segment together with a segment index j and a timestamp t k as an undo-log block in the first undo-log journal j 0 before overwriting said segment with modified new data such that the first undo-log journal j 0 comprises sequential undo-log blocks corresponding to each timestamp t k ;

transmitting an undo-log block to one or more additional undo-log journals j i based on a timestamp t k and storing redundant undo-log information in the one or more additional undo-log journals, the redundant undo-log information comprising a subset of undo-log blocks from the first undo-log journal j 0 , such that each additional undo-log journal comprises sequential undo-log blocks written for a different set of timestamps t k/i , a granularity of timestamps and corresponding undo-log blocks in an additional undo-log journal decreasing such that each additional undo-log journal comprises fewer undo-log blocks than a previous undo-log journal; and

restoring data contents of the segment from a state of the data contents at a start time to a state of the data contents at a target time using a sequence of undo-log blocks from two or more undo-log journals, the two or more undo-log journals selected from the first undo-log journal j 0 and the one or more additional undo-log journals j i , each undo-log block in the sequence selected from one of the two or more undo-log journals with a coarsest available granularity for the undo-log block such that the undo-log blocks in the sequence are selected from each of the two or more undo-log journals.

2. The method of claim 1 , wherein each set of timestamps t k/i represents a different time graining and wherein the density of timestamps t k/i decreases with increasing i.

3. The method of claim 1 , wherein the timer k is incremented on request.

4. The method of claim 1 , wherein said journal-specific timestamps t k are generated based on the timestamp values t k set by said timer k.

5. The method of claim 4 , wherein said journal-specific timestamps t k/i are defined as the 2 i -th timestamps t k .

6. The method of claim 5 , wherein said journal-specific timestamps t k/i is incremented only if the ratio of the amount of data written to journal j i with timestamp t k/i over the total number of modifications including those undo-log blocks not written to journal j i during that period gets lower than a predefined ratio for journal j i .

7. The method of claim 5 , wherein said journal-specific timestamps t k/i for journal j i (i>0) is incremented if a recovery point in journal j i−1 was set and the ratio of the amount of data written to journal j i−1 since last recovery point in journal j i over the amount of data written to journal j i since last recovery point in journal j i exceeds a predefined ratio.

8. The method of claim 1 , characterized in that an offset-table is updated regularly for each timestamp t k/i , wherein said offset-table comprises for each timestamp t k/i the offset-position for writing to corresponding journal j i after said timestamp t k/i .

9. The method of claim 1 , wherein said journals j i are stored on sequential storage media.

10. A method for restoring data of a block oriented data object comprising several indexed segments by using undo-log information generated and stored as described by:

setting a set of timestamps t k for a first undo-log journal j 0 by a timer k;

recording each first data modification of a segment that occurs after a timestamp t k has been set by storing old data contents of said segment together with a segment index j and a timestamp t k as an undo-log block in the first undo-log journal j 0 before overwriting said segment with modified new data such that the first undo-log journal j 0 comprises sequential undo-log blocks corresponding to each timestamp t k ;

transmitting an undo-log block to one or more additional undo-log journals j i based on a timestamp t k and storing redundant undo-log information in the one or more additional undo-log journals, the redundant undo-log information comprising a subset of undo-log blocks from the first undo-log journal, such that each additional undo-log journal comprises sequential undo-log blocks written for a different set of timestamps t k/i , a granularity of timestamps and corresponding undo-log blocks in an additional undo-log journal decreasing such that each additional undo-log journal comprises fewer undo-log blocks than a previous undo-log journal, wherein each undo-log journal j i represents a different time graining of undo-log information and wherein the density of the corresponding timestamps t k/i decreases with increasing i; and

restoring data contents of the segment to a state before a timestamp t using a sequence of undo-log blocks each selected from an undo-log journal with a coarsest available granularity for the undo-log block such that the undo-log blocks in the sequence are selected from multiple undo-log journals, the restoring comprising,

reading a last undo-log journal j N-1 , the last undo-log journal j N-1 having the fewest number of undo-log blocks relative to the first undo-log journal j 0 and the other additional undo-log journals j i , starting from the first undo-log block comprising a first timestamp t k/N-1 which is the same as or occurs after a time for undo-log journal j N-1 which corresponds to timestamp t, till the end of undo-log journal j N-1 ,

reading the next journal j i in decreasing order starting from the first undo-log block, comprising the first timestamp t k/i which is the same as or occurs after the time for undo-log journal j i which corresponds to timestamp t, till the undo-log block comprising the first timestamp t k/i which is the same as or occurs after the first timestamp for undo-log journal j i which corresponds to the timestamp t k/i+1 of undo-log journal j i+1 having been read of the preceding undo-log journal j i+1 ;

repeating the preceding step of reading for all next journals j i−1 such that the data stored in an undo-log block read from an undo-log journal is only written to the corresponding segment of the data object, if said segment has not been re-written before, initiated by an undo-log block read before from the same undo-log journal.

11. The method of claim 10 , wherein a restore table is generated for each currently read journal and listing the indexes j of those segments which have already been re-written with said journal.

12. The method of claim 10 , wherein in case of an error when reading journal j N-1 , journal j N-2 is read starting from the first undo-log block comprising the first timestamp t k/N-2 which is the same as or occurs after timestamp t, until the end of journal j N-2 , and wherein the preceding step of reading is repeated for all next journals j i−1 according to claim 10 .

13. The method of claim 10 , wherein in case of an error when reading journal j i with N−1>i>0, the next journal j i−1 in decreasing order is read starting from the first undo-log block, comprising the first timestamp t k/i−1 which is the same as or occurs after timestamp t, till the undo-log block comprising the first timestamp t k/i−1 which is the same as or occurs after the first timestamp t k/i+1 having been read of the preceding journal j i+1 and wherein the preceding step of reading is repeated for all next journals j i−1 according to claim 10 .

14. The method of claim 10 , wherein the offset-positions of the undo-log blocks to be read first in each journal j i , are identified by means of an offset-table comprising for each timestamp t k/i the offset-position for writing to the corresponding journal j i after said timestamp t k/i .

15. A method for restoring data of a block oriented data object comprising several indexed segments by using undo-log information generated and stored as described by:

setting a set of timestamps t k for a first undo-log journal j 0 by a timer k;

recording each first data modification of a segment that occurs after a timestamp t k has been set by storing old data contents of said segment together with a segment index j and a timestamp t k as an undo-log block in the first undo-log journal j 0 before overwriting said segment with modified new data such that the first undo-log journal j 0 comprises sequential undo-log blocks corresponding to each timestamp t k ;

transmitting an undo-log block to one or more additional undo-log journals j i based on a timestamp t k storing redundant undo-log information in the one or more additional undo-log journals, the redundant undo-log information comprising a subset of undo-log blocks from the first undo-log journal, such that each additional undo-log journal comprises sequential undo-log blocks written for a different set of timestamps t k/i , a granularity of timestamps and corresponding undo-log blocks in an additional undo-log journal decreasing such that each additional undo-log journal comprises fewer undo-log blocks than a previous undo-log journal, wherein each undo-log journal j i represents a different time graining of undo-log information, wherein the density of the corresponding timestamps t k/i decreases with increasing i; and

restoring data contents of the segment to a state before a timestamp t using a sequence of undo-log blocks each selected from an undo-log journal with a coarsest available granularity for the undo-log block such that the undo-log blocks in the sequence are selected from multiple undo-log journals, the restoring comprising:

reading the first undo-log journal j 0 , the first undo-log journal j 0 having the highest number of undo-log blocks relative to the additional undo-log journals j i starting from a first undo-log block, comprising a first timestamp t k/i which is the same as or occurs after timestamp t, till the first undo-log block comprising a timestamp t k/i which is the same as or occurs after a first timestamp t k/i+1 of a next undo-log journal j i+1 , with timestamp t k/i+1 which is the same as or occurs after timestamp t;

repeating the preceding step of reading for all next undo-log journals j i+1 with i=1, . . . , N−2;

reading a last undo-log journal j N-1 starting from the first undo-log block comprising the first timestamp t k/N-1 which is the same as or occurs after timestamp t, till the end of undo-log journal j N-1 , such that the data stored in an undo-log block read from an undo-log journal is only written to the corresponding segment of the data object, if said segment has not been re-written before, initiated by an undo-log block read before from the same undo-log journal.

16. The method of claim 15 , wherein a restore table is generated for each restore procedure listing the indexes j of those segments which have already been re-written.

17. The method of claim 15 , wherein in case of an error, when reading journal j i with 0<i<=N−1,

journal j i is removed;

all journals j i+k+1 are renamed to be j i+k with and all corresponding timestamps are renamed accordingly; and

reading continues with journal j i−1 .

18. The method of claim 15 , wherein the offset-positions of the undo-log blocks to be read first in each journal j i , are identified by means of an offset-table comprising for each timestamp t k/i the offset-position for writing to the corresponding journal j i after said timestamp t k/i .

19. A method for performing repetitive data protection for data stored in a block oriented data object comprising several indexed segments, the method comprising:

setting a different granularity of timestamps for each of a plurality of undo-log journals such that the granularity of the timestamps decreases for each undo-log journal between a first undo-log journal and a last undo-log journal;

recording, for each undo-log journal from the plurality of undo-log journals, each first data modification of a segment that occurs after a timestamp for the undo-log journal by storing old data contents of the segment, a segment index of the segment, and the timestamp as an undo-log block in the undo-log journal such that each undo-log journal from the plurality of undo-log journals comprises sequential undo-log blocks corresponding to the granularity of timestamps for the undo-log journal, each undo-log journal between the first undo-log journal and the last undo-log journal comprising fewer undo-log blocks than a previous undo-log journal based on the different granularity of timestamps for each undo-log journal; and

restoring data contents of the segment from a state of the data contents at a start time to a state of the data contents at a target time using a sequence of undo-log blocks from two or more of the plurality of undo-log journals, the undo-log blocks in the sequence selected from one of the two or more undo-log journals with a coarsest available granularity for the undo-log block such that the undo-log blocks in the sequence are selected from each of the two or more undo-log journals.

20. The method of claim 19 , wherein the target time is prior to the start time and the sequence of undo-log blocks begins with undo-log blocks from the last journal and ends with undo-log blocks from the first journal.

21. The method of claim 19 , wherein the start time is prior to the target time and the sequence of undo-log blocks begins with undo-log blocks from the first journal and ends with undo-log blocks from the last journal.

Assignments (2)
CONVEYOR IS ASSIGNING UNDIVIDED 50% INTEREST Recorded Jan 11, 2018
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SERVICENOW, INC.; INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 045060/0977 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2008
From: AUGENSTEIN, OLIVER; PRAUSE, THOMAS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 021232/0773 →
Priority Claims (1)
EP 06113268 · Apr 28, 2006 · regional
Continuity (1)
Related Publication 20070260645A1 · Nov 8, 2007