Incremental block level backup
First Claim
1. A system comprising:
- a backup server comprising one or more processors configured to;
retrieve an original metadata file from a metadata server, wherein the metadata file comprises an ordered list of block identifiers for data blocks of the volume, wherein each block identifier is used to access a data block stored on a block server, and wherein each block identifier is a hash based on content of its corresponding data block;
retrieve a copy of all data of the volume based on the original metadata file;
retrieve a first metadata file, wherein the first metadata file was created separately from the original metadata file;
compare a block identifier of the first metadata file to a corresponding block identifier of the original metadata file to determine a difference between the first and original block identifiers, wherein the difference indicates that a data block corresponding to the first block identifier has changed;
retrieve, using the block identifier that identifies a storage location of the changed data block, the changed data block based on the comparison of the first and original block identifiers, wherein the original metadata file comprises an original hash tree, wherein the first metadata file comprises a first hash tree;
determine a subtree root node of the first hash tree is different than an original root node of the original hash tree;
add child nodes of the subtree root node to a first data structure;
for each child node in the data structure;
determine a corresponding node in the original hash tree;
determine if the child node is different than the corresponding node;
determine if the child node is a leaf node or a non-leaf node based on the determination that the child node is different than the corresponding node;
add the child node to the first data structure based on the determination that the child node is a non-leaf node; and
add the child node to a second data structure based on the determination that the child node is a leaf node; and
for each node in the second data structure retrieve a corresponding data block using the block identifier.
2 Assignments
0 Petitions
Accused Products
Abstract
Disclosed are systems, computer-readable mediums, and methods for incremental block level backup. An initial backup of a volume is created at a backup server, where creating the initial backup includes retrieving an original metadata file from a metadata server, and retrieving a copy of all data of the volume based on the original metadata file. A first incremental backup of the volume is then created at the backup server, where creating the first incremental backup includes retrieving a first metadata file, where the first metadata file was created separately from the original metadata file. A block identifier of the first metadata file is compared to a corresponding block identifier of the original metadata file to determine a difference between the first and original block identifiers, and a copy of a changed data block of the volume is retrieved based on the comparison of the first and original block identifiers.
30 Citations
17 Claims
-
1. A system comprising:
-
a backup server comprising one or more processors configured to; retrieve an original metadata file from a metadata server, wherein the metadata file comprises an ordered list of block identifiers for data blocks of the volume, wherein each block identifier is used to access a data block stored on a block server, and wherein each block identifier is a hash based on content of its corresponding data block; retrieve a copy of all data of the volume based on the original metadata file; retrieve a first metadata file, wherein the first metadata file was created separately from the original metadata file; compare a block identifier of the first metadata file to a corresponding block identifier of the original metadata file to determine a difference between the first and original block identifiers, wherein the difference indicates that a data block corresponding to the first block identifier has changed; retrieve, using the block identifier that identifies a storage location of the changed data block, the changed data block based on the comparison of the first and original block identifiers, wherein the original metadata file comprises an original hash tree, wherein the first metadata file comprises a first hash tree; determine a subtree root node of the first hash tree is different than an original root node of the original hash tree; add child nodes of the subtree root node to a first data structure; for each child node in the data structure; determine a corresponding node in the original hash tree; determine if the child node is different than the corresponding node; determine if the child node is a leaf node or a non-leaf node based on the determination that the child node is different than the corresponding node; add the child node to the first data structure based on the determination that the child node is a non-leaf node; and add the child node to a second data structure based on the determination that the child node is a leaf node; and for each node in the second data structure retrieve a corresponding data block using the block identifier. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method comprising:
-
creating an initial backup of a volume at a backup server, wherein creating the initial backup comprises; retrieving an original metadata file from a metadata server, wherein the metadata file comprises an ordered list of block identifiers for data blocks of the volume, wherein each block identifier is used to access a data block stored on a block server, and wherein each block identifier is a hash based on content of its corresponding data block; and retrieving a copy of all data of the volume based on the original metadata file; and creating a first incremental backup of the volume at the backup server, wherein creating the first incremental backup comprises; retrieving a first metadata file, wherein the first metadata file was created separately from the original metadata file; comparing a block identifier of the first metadata file to a corresponding block identifier of the original metadata file to determine a difference between the first and original block identifiers, wherein the difference indicates that a data block corresponding to the first block identifier has changed; and retrieving, using the block identifier that identifies a storage location of the changed data block, the changed data block based on the comparison of the first and original block identifiers, wherein the original metadata file comprises an original hash tree, wherein the first metadata file comprises a first hash tree; determining a subtree root node of the first hash tree is different than an original root node of the original hash tree; adding child nodes of the subtree root node to a first data structure; for each child node in the data structure; determining a corresponding node in the original hash tree; determining if the child node is different than the corresponding node; determining if the child node is a leaf node or a non-leaf node based on the determination that the child node is different than the corresponding node; adding the child node to the first data structure based on the determination that the child node is a non-leaf node; and adding the child node to a second data structure based on the determination that the child node is a leaf node; and for each node in the second data structure retrieving a corresponding data block using the block identifier. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A non-transitory computer-readable medium having instructions stored thereon, that when executed by a computing device cause the computing device to perform operations comprising:
-
creating an initial backup of a volume at a backup server, wherein creating the initial backup comprises; retrieving an original metadata file from a metadata server, wherein the metadata file comprises an ordered list of block identifiers for data blocks of the volume, wherein each block identifier is used to access a data block stored on a block server, and wherein each block identifier is a hash based on content of its corresponding data block; and retrieving a copy of all data of the volume based on the original metadata file; and creating a first incremental backup of the volume at the backup server, wherein creating the first incremental backup comprises; retrieving a first metadata file, wherein the first metadata file was created separately from the original metadata file; comparing a block identifier of the first metadata file to a corresponding block identifier of the original metadata file to determine a difference between the first and original block identifiers, wherein the difference indicates that a data block corresponding to the first block identifier has changed; and retrieving, using the block identifier that identifies a storage location of the changed data block, the changed data block based on the comparison of the first and original block identifiers, wherein the original metadata file comprises an original hash tree, wherein the first metadata file comprises a first hash tree; determining a subtree root node of the first hash tree is different than an original root node of the original hash tree; adding child nodes of the subtree root node to a first data structure; for each child node in the data structure; determining a corresponding node in the original hash tree; determining if the child node is different than the corresponding node; determining if the child node is a leaf node or a non-leaf node based on the determination that the child node is different than the corresponding node; adding the child node to the first data structure based on the determination that the child node is a non-leaf node; and adding the child node to a second data structure based on the determination that the child node is a leaf node; and for each node in the second data structure retrieving a corresponding data block using the block identifier. - View Dependent Claims (14, 15, 16, 17)
-
Specification