Checkpoint recovery using a B-tree intent log with syncpoints
First Claim
1. Apparatus for facilitating recovery of a secondary volume having data indicative of changes made to data on a primary volume comprising:
- monitoring circuitry that identifies a synchronization point where a secondary volume B-tree is known to be consistent;
circuitry that writes, in response only to an impending B-tree split, all B-tree nodes involved in the impending split into an intent log before the split is performed, the intent log thereby being indicative of inconsistency in the secondary volume B-tree since a most recently identified synchronization point; and
circuitry which, in response to a failure or reboot occurring when movement of data between B-tree leaf nodes or update of a B-tree parent node is incomplete, uses the intent log to complete the split by finding the synchronization point, instantiating the B-tree, replaying the intent log, and inserting snapped blocks into appropriate leaves of the instantiated B-tree.
9 Assignments
0 Petitions
Accused Products
Abstract
A networked data storage system includes a primary volume and a pointer-based virtual secondary volume. The secondary volume has B-tree checkpoints of the state of a primary filesystem of the primary volume. Intermediate syncpoints are declared between checkpoint checkpoints. The syncpoints are logical locations on the secondary volume where the B-tree is known to be in a consistent state. The frequency of syncpoints may be set by an administrator in units of blocks, i.e., a syncpoint to be taken every n blocks. Before performing a B-tree split, entire images of the leaves and parent node involved in the split are written to an intent log in a relatively fast transaction that may comprise a single I/O operation to contiguous memory. Movement of data between leaf nodes and changes to the parent nodes as a result of the split operation proceed asynchronously. In the event of a reboot before the split operation is complete, the intent log is used to complete the split transaction from the most recent syncpoint. When a new syncpoint is declared, the intent log and dirty leaves are flushed.
-
Citations
20 Claims
-
1. Apparatus for facilitating recovery of a secondary volume having data indicative of changes made to data on a primary volume comprising:
-
monitoring circuitry that identifies a synchronization point where a secondary volume B-tree is known to be consistent; circuitry that writes, in response only to an impending B-tree split, all B-tree nodes involved in the impending split into an intent log before the split is performed, the intent log thereby being indicative of inconsistency in the secondary volume B-tree since a most recently identified synchronization point; and circuitry which, in response to a failure or reboot occurring when movement of data between B-tree leaf nodes or update of a B-tree parent node is incomplete, uses the intent log to complete the split by finding the synchronization point, instantiating the B-tree, replaying the intent log, and inserting snapped blocks into appropriate leaves of the instantiated B-tree. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. Computer program code stored on computer readable media, and executable by a computer, for facilitating recovery of a secondary volume having data indicative of changes made to data on a primary volume, comprising:
-
logic that identifies a synchronization point where a secondary volume B-tree is known to be consistent; logic that writes, in response only to an impending B-tree split, all B-tree nodes involved in the split into an intent log before the split is performed, the intent log thereby being indicative of inconsistency in the secondary volume B-tree since a most recently identified synchronization point; and logic which, in response to a failure or reboot occurring when movement of data between B-tree leaf nodes or update of a B-tree parent node is incomplete, uses the intent log to complete the split by finding the synchronization point, instantiating the B-tree, replaying the intent log, and inserting snapped blocks into appropriate leaves of the instantiated B-tree. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for facilitating recovery of a secondary volume B-tree having data indicative of changes made to data on a primary volume, comprising the steps of:
-
in response to an indication that a first leaf node of the B-tree is ready to split, allocating a second leaf node to the B-tree; initiating splitting the first leaf node in memory into the first and second leaf nodes; writing, in response only to the impending B-tree split, an image of the leaf nodes and parent node that will result from the split into an intent log; and in response to a failure or reboot occurring when movement of data between the leaf nodes or update of the parent node is incomplete, using the intent log to complete the split by finding a most recent synchronization point, instantiating the B-tree, replaying the intent log, and inserting snapped blocks into appropriate leaves of the instantiated B-tree. - View Dependent Claims (18, 19, 20)
-
Specification