Opportunistic Asynchronous De-Duplication in Block Level Backups
AssigneeMicrosoft Corporation
InventorsAnuj Bindal, Gaurav Deshpande, Guhan Suriyanarayanan, Bodhi Deb
Life of this patent
Estimating the term…
Abstract
A block based backup system may store backed up data from multiple clients by maintaining backup databases for each client, where each backup database may include blocks of data. The backup system may perform a de-duplication process by examining the databases to identify common blocks and moving the common blocks to a common database. The common blocks may be removed from the client backup databases and a pointer substituted for the data, thus compacting the client backup databases. The de-duplication operation may be performed at an opportunistic time, such as after the clients have completed any data transfer to the backup system.
Claims20
A method being performed on a computer processor, said method comprising:
- receiving a first set of backup data from a first client, said first set of backup data being block based backup data;
- storing said first set of backup data in a first client backup database;
- receiving a second set of backup data from a second client, said second set of backup data being block based backup data;
- storing said second set of backup data in a second client backup database;
- comparing said first backup database and said second backup database to identify a first common block;
- and
- storing said first common block in a common backup database and removing said first common block from both of said first client backup database and said second client backup database.
A backup server device comprising:
- a processor;
- a plurality of client databases, each of said client databases comprising a repository for blocks of data and a backup database comprising backup definitions and references to said blocks of data from said backup definitions;
- a communications engine that:
- establishes a first communication session with a first client device;
- determines that a first client database is associated with said first client device;
- receives a first plurality of said blocks of data;
- stores said first plurality of said blocks of data in said first client database as a first backup;
- establishes a second communication session with a second client device;
- determines that a second client database is associated with said second client device;
- receives a second plurality of said blocks of data;
- and
- stores said second plurality of said blocks of data in said second client database;
- an optimization engine that:
- analyzes said first client database and said second client database to identify a first common block;
- adds said first common block to a common client database;
- adds pointers to said first common block from said first client database and said second client database;
- and
- removes said first common block from said first client database and from said second client database.
A backup client device comprising:
- a storage device comprising a first file system to backup;
- a backup engine that:
- establishes a communication session with a backup server;
- generates a first set of block identifiers representing each block of data in said first file system;
- determines that an incremental backup is to be performed;
- and
- transmits said first set of block identifiers and a subset of said blocks of data in said file system to said backup server.
Dependencies are inferred from the claim text.