Method and apparatus for generating and describing block-level difference information about two snapshots
AssigneeNetwork Appliance, Inc.
InventorsTimothy Bisson, Stephen Manley, Ling Zheng
Life of this patent
Estimating the term…
Abstract
An apparatus to compare two datasets, each of which includes multiple data blocks, includes a comparison unit and a report generator. The comparison unit identifies block-level differences therebetween, by comparing block-level metadata between the first and second datasets, without comparing the contents of the data blocks. The report generator generates a human-readable report of the differences between the first and second version of the dataset, including the differences in individual data blocks between the first and second version of the dataset.
Claims29
An apparatus comprising:
- a comparison unit to compare a first dataset and a second dataset, the first and second datasets each including a plurality of data blocks, to identify block-level differences therebetween, by comparing block-level metadata between the first and second datasets without comparing the contents of the data blocks;
- and
- a report generator to generate a report of the differences between the first and second dataset, the report indicating the differences in individual data blocks between the first and second dataset.
A processing system comprising:
- a processor;
- a storage facility coupled to the processor and storing a first dataset and a second dataset;
- and
- a memory coupled to the processor and storing instructions which, when executed by the processor, cause the processing system to perform a process of comparing the first dataset and the second dataset to identify block-level differences therebetween, the first and second datasets each including a plurality of direct blocks containing data and a plurality of indirect blocks, each indirect block containing a plurality of pointers, each pointer pointing to one of the direct blocks or another indirect block, the process including,
- (a) comparing a pointer to a block in the first dataset with a corresponding pointer to a block in the second dataset,
- (b) if the pointer in the first dataset is identical to the corresponding pointer in the second dataset, then determining that all blocks referenced by the pointer, either directly or indirectly, are identical between the first and second datasets;
- (c) if the pointer in the first dataset is different from the corresponding pointer in the second dataset and points to an indirect block, then following the pointer in the first dataset down the hierarchical structure to a pointer to a direct block in the first dataset, and executing said (b) comparing with said pointer to the direct block and a corresponding pointer in the second dataset;
- and
- (d) if the pointer in the first dataset is different from the corresponding pointer in the second dataset and points to a direct block, then determining that the direct block in the first dataset is different from the direct block in the second dataset.
A method of identifying differences between a first dataset and a second dataset, the method comprising:
- for each of a plurality of pairs of corresponding data blocks, where each pair includes a first data block in the first dataset and a corresponding second data block in the second dataset,
- determining that the first data block is identical to the second data block if a pointer to the first data block in the first dataset is identical to a pointer to the second data block in the second dataset;
- and
- determining that the first data block is different from the second data block if the pointer to the first data block is different from the pointer to the second data block.
A method comprising:
- accessing a first version and a second version of a dataset, the dataset having a hierarchical structure, wherein the first version and the second version each contain at least one indirect block and a plurality of direct blocks, each indirect block containing a plurality of pointers, each pointer identifying one of the direct blocks or another indirect block, each of the direct blocks containing a plurality of information units, each of the information units containing metadata about a corresponding portion of data in the dataset, including metadata about individual blocks of the dataset;
- generating an internal log of differences between the first and second version of the dataset, by examining the first and second version of the dataset to identify ones of the information units which are different between the first and second version of the dataset, and recording information about the differences in the internal log;
- and
- generating a human-readable log of the differences between the first and second version of the dataset based on the internal log, the human-readable log including information on differences between individual blocks of the first version and the second version of the dataset.
Dependencies are inferred from the claim text.