Distributed scalable deduplicated data backup system
First Claim
Patent Images
1. A computer-implemented method comprising:
- receiving at a server, a request from a client device to store data, the request comprising a request checksum computed from the data;
creating an inode entry comprising metadata associated with the data;
accessing a dedupe database, the dedupe database having a plurality of dedupe entries and each dedupe entry comprising a stored checksum;
searching the dedupe database for a matching dedupe entry with a stored checksum equal to the request checksum;
responsive to finding the matching dedupe entry, storing in the matching dedupe entry a back reference to the inode entry, and storing in the inode entry a reference to the matching dedupe entry that further comprises;
searching the dedupe database again for the matching dedupe entry; and
responsive to the matching dedupe entry no longer existing;
receiving the data at the server;
storing the data in a block data store;
creating a new dedupe entry;
storing the request checksum in the new dedupe entry;
storing a reference to the location of the stored data in the new dedupe entry;
storing the new dedupe entry in the dedupe database;
storing a back reference to the inode entry in the new dedupe entry; and
storing in the inode entry a reference to the new dedupe entry; and
storing the inode entry in an inode database.
3 Assignments
0 Petitions
Accused Products
Abstract
A distributed, cloud-based storage system provides a reliable, deduplicated, scalable and high performance backup service to heterogeneous clients that connect to it via a communications network. The distributed cloud-based storage system guarantees consistent and reliable data storage while using structured storage that lacks ACID compliance. Consistency and reliability are guaranteed using a system that includes: 1) back references from shared objects to referring objects, 2) safe orders of operation for object deletion and creation, 3) and simultaneous access to shared resources through sub-resources.
-
Citations
18 Claims
-
1. A computer-implemented method comprising:
-
receiving at a server, a request from a client device to store data, the request comprising a request checksum computed from the data; creating an inode entry comprising metadata associated with the data; accessing a dedupe database, the dedupe database having a plurality of dedupe entries and each dedupe entry comprising a stored checksum; searching the dedupe database for a matching dedupe entry with a stored checksum equal to the request checksum; responsive to finding the matching dedupe entry, storing in the matching dedupe entry a back reference to the inode entry, and storing in the inode entry a reference to the matching dedupe entry that further comprises; searching the dedupe database again for the matching dedupe entry; and responsive to the matching dedupe entry no longer existing; receiving the data at the server; storing the data in a block data store; creating a new dedupe entry; storing the request checksum in the new dedupe entry; storing a reference to the location of the stored data in the new dedupe entry; storing the new dedupe entry in the dedupe database; storing a back reference to the inode entry in the new dedupe entry; and storing in the inode entry a reference to the new dedupe entry; and storing the inode entry in an inode database. - View Dependent Claims (2, 3, 4)
-
-
5. A computer-implemented method comprising:
-
accessing a data object in a dedupe database referencing a corresponding block data in a block data store, the data object comprising a back reference list to inode entries in an inode database, the back reference list comprising a list of references to back referenced objects, each back referenced object comprising a reference list, the reference list comprising a list of references to objects in the dedupe database; determining if the back reference list is empty; and responsive to the back reference list being empty, deleting the data object in the dedupe database. - View Dependent Claims (6, 7, 8)
-
-
9. A computer-implemented method comprising:
-
accessing a data object in an inode database referenced by a corresponding file entry in a backup directory database, the data object comprising a reference list to dedupe entries in a dedupe database, the reference list comprising a list of references to referenced objects, each referenced object comprising a back reference list, the back reference list comprising a list of references to back referenced objects in the inode database; accessing a referenced object in the dedupe database; searching the back reference list of the referenced object for a reference to the data object in the inode database; and responsive to no reference to the data object being found in the referenced object'"'"'s back reference list, adding a reference to the data object to the referenced object'"'"'s back reference list.
-
-
10. A computer for data storage, the computer comprising:
-
a non-transitory computer-readable storage medium storing executable computer program instructions for; receiving a request from a client device to store data, the request comprising a request checksum computed from the data; creating an inode entry comprising metadata associated with the data; accessing a dedupe database, the dedupe database having a plurality of dedupe entries and each dedupe entry comprising a stored checksum; searching the dedupe database for a matching dedupe entry with a stored checksum equal to the request checksum; responsive to finding the matching dedupe entry, storing in the matching dedupe entry a back reference to the inode entry, and storing in the inode entry a reference to the matching dedupe entry that further comprises; searching the dedupe database again for the matching dedupe entry; and responsive to the matching dedupe entry no longer existing; receiving the data; storing the data in a block data store; creating a new dedupe entry; storing the request checksum in the new dedupe entry; storing a reference to the location of the stored data in the new dedupe entry; storing the new dedupe entry in the dedupe database; storing a back reference to the inode entry in the new dedupe entry; and storing in the inode entry a reference to the new dedupe entry; and storing the inode entry in an inode database; and a processor for executing the computer program instructions. - View Dependent Claims (11, 12, 13)
-
-
14. A computer for data storage, the computer comprising:
-
a non-transitory computer-readable storage medium storing executable computer program instructions for; accessing a data object in a dedupe database referencing a corresponding block data in a block data store, the data object comprising a back reference list to inode entries in an inode database, the back reference list comprising a list of references to back referenced objects, each back referenced object comprising a reference list, the reference list comprising a list of references to objects in the dedupe database; determining if the back reference list is empty; and responsive to the back reference list being empty, deleting the data object in the dedupe database; and a processor for executing the computer program instructions. - View Dependent Claims (15, 16, 17)
-
-
18. A computer for data storage, the computer comprising:
-
A non-transitory computer-readable storage medium storing executable computer program instructions for; accessing a data object in an inode database reference by a corresponding file entry in a backup directory database, the data object comprising a reference list to dedupe entries in a dedupe database, the reference list comprising a list of references to referenced objects, each referenced object comprising a back reference list, the back reference list comprising a list of references to back referenced objects in the inode database; accessing a referenced object in the dedupe database; searching the back reference list of the referenced object for a reference to the data object in the inode database; and responsive to no reference to the data object being found in the referenced object'"'"'s back reference list, adding a reference to the data object to the referenced object'"'"'s back reference list; and a processor for executing the computer program instructions.
-
Specification