Computing devices generate, use, and store data. The data may be, for example, images, document, webpages, or meta-data associated with any of the files. The data may be stored in persistent storage. In addition, to protect the aforementioned data, the data may be replicated to another persistent storage.
Specific embodiments of the invention will now be described in detail with reference to the accompanying figures. In the following detailed description of embodiments of the invention, numerous specific details are set forth in order to provide a more thorough understanding of the invention. However, it will be apparent to one of ordinary skill in the art that the invention may be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description
In the following description of
In general, embodiments of the invention relate to methods and systems for replicating data, which is stored in a source system, in a target system. More specifically, embodiments of the invention enable parallel transmission and verification of portions of the data. Once the portions of the data have been verified, embodiments of the invention combine the verified portions of the data to obtain the final combined data. The combined data is then verified. In this manner, individual portions of the data may be transferred in parallel, which results in a more efficient transfer of data between the source system and the target system. In addition, if there are errors in the transfer of the data, the errors may be more rapidly identified as the errors may be discovered once only a portion of the data has been transferred instead of after the entire set of data has been transferred. Additional details about embodiments of the invention are provided below, e.g., in
In one embodiment of the invention, the systems described herein may include functionality to deduplicate the data before storing the data in the persistent storage. Deduplicating the data, before storing the data in the persistent storage, may decrease the amount of data that needs to be stored in the persistent storage when compared to the amount of data that can be stored in the persistent storage without deduplicating the data. Deduplicating the data may also decrease the cost associated with storing data in the persistent storage by reducing the total amount of storage required to store the deduplicated data when compared to the amount of storage required to store the data without being deduplicated.
As used herein, deduplication refers to methods of storing only portions of data that are not already stored in the persistent storage. For example, when multiple versions of a large text document, having only minimal differences between each of the versions, are stored without deduplication, storing each version will require approximately the same amount of storage space of a persistent storage. In contrast, when the multiple versions of the large text document are stored with deduplication, only the first version of the multiple versions stored will require a substantial amount of storage. Once the first version is stored in persistent storage, the versions of the large word document subsequently stored will be deduplicated before being stored in the persistent storage resulting in much less storage space of the persistent storage being required to store the subsequently stored versions when compared to the amount of storage space of the persistent storage required to store the first stored version. In one or more embodiments of the invention, additional detail about deduplication is provided below, e.g., in
In one or more embodiments of the invention, the target system (103) includes a processor(s) (not shown), memory (not shown), and persistent storage (not shown). The target system includes functionality to perform the method shown in
In one or more embodiments of the invention, the source system and the target system are operatively connected using any combination of wireless and/or wired connections and any communication protocol(s).
In one or more embodiments of the invention, a client (100) is any system or process executing on a system that includes functionality to issue a request to write data to the deduplication system (102) and/or issue a read request to the deduplication system (102). In one or more embodiments of the invention, the clients (100) may each include a processor(s) (not shown), memory (not shown), and persistent storage (not shown). The clients may include other components without departing from the invention.
In one or more embodiments of the invention, a client (100) is operatively connected to the deduplication system (102) using any combination of wireless and/or wired connections and any communication protocol(s).
In one or more embodiments of the invention, the deduplication system (102) includes a processor(s) (not shown), memory (not shown), and persistent storage (not shown). The deduplication system may include other components without departing from the invention. The deduplication system includes a deduplication service (106), a replication service (108) and an index cache (110). Each of these components is described below.
The deduplication service (106) includes functionality to deduplicate data prior to the data being written to the persistent storage. In one embodiment of the invention, the deduplication service writes data to the persistent storage in the manner described below in
The index cache (110) includes a set of entries, where each entry in the index cache includes a mapping between a fingerprint (i.e., a fingerprint for segment (described below)) and a container identifier (ID) (i.e., the container ID of the container in which the segment associated with the fingerprint is stored). The fingerprint of segment may be a bit sequence that identifies the segment.
More specifically, the fingerprint may include at least the following two components: (i) a hash component and (ii) a checksum component. The hash component includes a hash value generated by applying a hash function (described below) to the segment (i.e., to the content of the segment). The hash value may be generated using Rabin's fingerprinting algorithm, a cryptographic hash function, or any other fingerprinting algorithm without departing from the invention. The cryptographic hash function may be, e.g., a message digest (MD) algorithm or a secure hash algorithm (SHA). The message MD algorithm may be, e.g., MD5. The SHA may be, e.g., SHA-0, SHA-1, SHA-2, or SHA3. Other algorithms may be used without departing from the invention.
Continuing with the discussion of
Continuing with the discussion of
In one or more embodiments of the invention, the persistent storage (104) may include, but is not limited to, optical storage, magnetic storage, NAND Flash memory, NOR Flash memory, Magnetic RAM Memory (M-RAM), Spin Torque Magnetic RAM Memory (ST-MRAM), Phase Change Memory (PCM), or any other memory defined as a non-volatile Storage Class Memory (SCM).
In one embodiment of the invention, the persistent storage includes a metadata index (116) and one or more containers (112A, 114N). The metadata index (116) includes a set of entries, where each entry in the metadata index includes a mapping between a fingerprint (i.e., a fingerprint for segment) and a container identifier (ID) (i.e., the container ID of the container in which the segment associated with the fingerprint is stored). The metadata index typically stores all of the fingerprint to container ID mappings for all containers in the persistent storage while the index cache may store only a subset of the aforementioned entries (e.g., the most recently used entries). The metadata index may store additional information without departing from the invention.
Continuing with the discussion of
Depending on the implementation of the deduplication service, the deduplication service may generate additional higher-level metadata segments. Continuing with the above example, the deduplication service may generate an L2 segment that includes fingerprints of one or more L1 metadata segments. The number of levels of metadata segments may vary based on the implementation of the deduplication service. The metadata segments may be collectively referred to as LP segments.
The data segments and metadata segments generated by the deduplication service are stored in containers in the persistent storage. Each container may only store data segments or metadata segments. For example, a first container in the persistent storage may only include data segments. However, the data segments may by be associated with different files (i.e., different files that the client has sent to the deduplication system for storage). With respect to containers storing metadata segments, a container that stores metadata segments may include different types of metadata segments (e.g., L1 metadata segment, L2 segments, etc.).
An example of how files are stored in the persistent storage is provided below with respect to
Those skilled in the art will appreciate that the container metadata is not limited to the container metadata shown in
As part of this processing, the deduplication service segments File A into data segments D1-D4 and calculates a fingerprint for each of the data segments (FP1-FP4). In this example, the deduplication service determines, using the fingerprints (FP1-FP4), that there are no duplicates of the data segments D1-D4 in the persistent storage. Based on this determination, data segments D1-D4 are stored in container 1 along with the corresponding fingerprints (FP1-FP4) (see
File B is subsequently received by the deduplication service. The deduplication service segments File B into data segments D1, D5, D6, and D4 and calculates a fingerprint for each of the data segments (FP1, FP5, FP6, FP4). Using the aforementioned fingerprints and the fingerprints already calculated for data segments (D1-D4) associated with File A, a determination is made that D1 and D4 in File B are duplicates of D1 and D4, respectively, previously stored for File A. Based on this determination, only D5 and D6 are stored in container 1 along with their corresponding fingerprints (FP5, FP6).
A metadata segment, Metadata Segment 2, is then generated by the deduplication service, where Metadata Segment 2 includes the fingerprints (FP1, FP5, FP6, FP4) for data segments associated with File B. Metadata Segment 2 is subsequently stored in container 2 along with a fingerprint (FP8) for Metadata Segment 2.
Turning to
In step 402, the L0 fingerprints are transferred to the target system.
In step 404, a determination is made about whether a bitmap has been received from the target system after the L0 fingerprints were sent in step 402. A bitmap (or other data structure) may be received in step 402 in scenarios in which one or more L0 segments associated with the transferred L0 fingerprints are not present in the target system. In such scenarios, the bitmap indicates which L0 segments need to be transferred from the source system to the target system. If a bitmap is received, the process proceeds to step 406; otherwise, the process proceeds to step 408.
In step 406, the L0 segments specified by the bitmap obtained from the persistent storage in the source system and transferred to the target system.
In step 408, one or more L2 checksums associated with the portion of the data that is being transferred to the target system are obtained and sent to the target system. The L2 checksum(s) is used to verify the integrity of the transmitted data on the target system (see e.g.,
In step 410, at some later point in time, the root checksum is transmitted to the target system. Step 410 may be performed after the method shown in
In step 500, L0 fingerprints for a portion of the data are obtained from the source system.
In step 502, new L1 segments are allocated in the target system (e.g., in the persistent storage on the target system) and the received L0 fingerprints are stored in the newly allocated L1 segments.
In step 504, a determination is made about whether there are any L0 fingerprints in the newly allocated L1 segments, where the corresponding L0 segment is not present in the persistent storage in the target system. If there are missing L0 segments in the target system, then the process proceeds to step 506; otherwise, the process proceeds to step 510.
In step 506, a bitmap specifying the L0 for the missing L0 segments are sent to the source system.
In step 508, L0 segments identified using the bitmap sent in step 506 are received and stored in the target system. Those skilled in the art will appreciate the information about which L0 segments to transfer to the target system may be sent using data structures other than a bitmap without departing from the invention.
In step 510, the target system generates the L1 fingerprints using L1 segments (including the L0 fingerprints in the L1 segments). The generated L1 fingerprints are subsequently stored in the newly allocated L2 segments on the target system (e.g., in the persistent storage on the target system).
In step 512, the target system generates the L2 fingerprints using L2 segments (including the L1 fingerprints in the L2 segments). The generated L2 fingerprints are subsequently stored in the newly allocated L3 segments on the target system (e.g., in the persistent storage on the target system).
In step 514, the generated L2 checksum(s) (obtained from the generated L2 fingerprint(s)) is validated. More specifically, a corresponding L2 checksum(s) from the source system is obtained and compared to the L2 checksum(s) generated in step 512. If the L2 fingerprint(s) matches, the integrity of the portion of data is verified.
In step 600, the portions of data (which have been verified) are combined to obtain merged data. In one embodiment of the invention, each of the portions of data may be presented as a logical tree (see e.g.,
In step 602, a root checksum is obtained from the source system. In one embodiment of the invention, the root checksum corresponds to the fingerprint that covers all of the data being transferred. Said another way, the root checksum is the checksum that it located in the root of the logical tree (see e.g.,
In step 604, the root checksum from the source system is compared with the root checksum generated on the target system. If the root checksum match, then the integrity of the data in the merged tree is verified.
Turning to the example, consider a scenario in which the data shown in
Referring to
Referring to
Referring to
Referring to
Continuing with the example and referring to
Referring to
In this example, assume that the integrity of the partial trees is verified.
Accordingly, the target system performs the method shown in
Referring to
Those skilled in the art will appreciated that while the invention has been described with respect to the logical tree structure shown in
One or more embodiments of the invention may be implemented using instructions executed by one or more processors in the deduplication system. Further, such instructions may correspond to computer readable instructions that are stored on one or more non-transitory computer readable mediums.
While the invention has been described above with respect to a limited number of embodiments, those skilled in the art, having the benefit of this disclosure, will appreciate that other embodiments can be devised which do not depart from the scope of the invention as disclosed herein. Accordingly, the scope of the invention should be limited only by the attached claims.
Number | Name | Date | Kind |
---|---|---|---|
7085911 | Sachedina et al. | Aug 2006 | B2 |
7818515 | Umbehocker et al. | Oct 2010 | B1 |
8046551 | Sahin | Oct 2011 | B1 |
8190835 | Yueh | May 2012 | B1 |
8204868 | Wu et al. | Jun 2012 | B1 |
8396841 | Janakiraman | Mar 2013 | B1 |
8732403 | Nayak | May 2014 | B1 |
8782323 | Glikson et al. | Jul 2014 | B2 |
8898114 | Feathergill et al. | Nov 2014 | B1 |
8898120 | Efstathopoulos | Nov 2014 | B1 |
8904120 | Killamsetti | Dec 2014 | B1 |
8918390 | Shilane et al. | Dec 2014 | B1 |
8943032 | Xu et al. | Jan 2015 | B1 |
8949208 | Xu et al. | Feb 2015 | B1 |
9183200 | Liu et al. | Nov 2015 | B1 |
9244623 | Bent et al. | Jan 2016 | B1 |
9250823 | Kamat et al. | Feb 2016 | B1 |
9251160 | Wartnick | Feb 2016 | B1 |
9274954 | Bairavasundaram et al. | Mar 2016 | B1 |
9280550 | Hsu et al. | Mar 2016 | B1 |
9298724 | Patil et al. | Mar 2016 | B1 |
9317218 | Botelho et al. | Apr 2016 | B1 |
9336143 | Wallace et al. | May 2016 | B1 |
9390116 | Li et al. | Jul 2016 | B1 |
9390281 | Whaley et al. | Jul 2016 | B2 |
9424185 | Botelho et al. | Aug 2016 | B1 |
9442671 | Zhang et al. | Sep 2016 | B1 |
9830111 | Patiejunas et al. | Nov 2017 | B1 |
10002048 | Chennamsetty et al. | Jun 2018 | B2 |
10031672 | Wang et al. | Jul 2018 | B2 |
10078451 | Floyd et al. | Sep 2018 | B1 |
10102150 | Visvanathan et al. | Oct 2018 | B1 |
10175894 | Visvanathan et al. | Jan 2019 | B1 |
10445292 | Zhang et al. | Oct 2019 | B1 |
20030110263 | Shillo | Jun 2003 | A1 |
20050120058 | Nishio | Jun 2005 | A1 |
20050160225 | Presler-Marshall | Jul 2005 | A1 |
20050182906 | Chatterjee et al. | Aug 2005 | A1 |
20060075191 | Lolayekar et al. | Apr 2006 | A1 |
20080082727 | Wang | Apr 2008 | A1 |
20080133446 | Dubnicki et al. | Jun 2008 | A1 |
20080133561 | Dubnicki et al. | Jun 2008 | A1 |
20080216086 | Tanaka et al. | Sep 2008 | A1 |
20080244204 | Cremelie et al. | Oct 2008 | A1 |
20090235115 | Butlin | Sep 2009 | A1 |
20090271454 | Anglin | Oct 2009 | A1 |
20100049735 | Hou | Feb 2010 | A1 |
20100094817 | Ben-Shaul et al. | Apr 2010 | A1 |
20100250858 | Cremelie et al. | Sep 2010 | A1 |
20110055471 | Thatcher et al. | Mar 2011 | A1 |
20110099200 | Blount et al. | Apr 2011 | A1 |
20110099351 | Condict | Apr 2011 | A1 |
20110161557 | Haines et al. | Jun 2011 | A1 |
20110185149 | Gruhl et al. | Jul 2011 | A1 |
20110196869 | Patterson et al. | Aug 2011 | A1 |
20110231594 | Sugimoto et al. | Sep 2011 | A1 |
20110276781 | Sengupta et al. | Nov 2011 | A1 |
20120158670 | Sharma | Jun 2012 | A1 |
20120209873 | He | Aug 2012 | A1 |
20120278511 | Alatorre et al. | Nov 2012 | A1 |
20130036098 | Mutalik | Feb 2013 | A1 |
20130055018 | Joshi et al. | Feb 2013 | A1 |
20130060739 | Kalach et al. | Mar 2013 | A1 |
20130111262 | Taylor et al. | May 2013 | A1 |
20130138620 | Yakushev et al. | May 2013 | A1 |
20140012822 | Sachedina et al. | Jan 2014 | A1 |
20140040205 | Cometto et al. | Feb 2014 | A1 |
20140047181 | Peterson et al. | Feb 2014 | A1 |
20140258248 | Lambright et al. | Sep 2014 | A1 |
20140258824 | Khosla et al. | Sep 2014 | A1 |
20140281215 | Chen et al. | Sep 2014 | A1 |
20140310476 | Kruus | Oct 2014 | A1 |
20150074679 | Fenoglio et al. | Mar 2015 | A1 |
20150106345 | Trimble | Apr 2015 | A1 |
20150178171 | Bish et al. | Jun 2015 | A1 |
20150331622 | Chiu et al. | Nov 2015 | A1 |
20160026652 | Zheng | Jan 2016 | A1 |
20160112475 | Lawson et al. | Apr 2016 | A1 |
20160188589 | Guilford et al. | Jun 2016 | A1 |
20160224274 | Kato | Aug 2016 | A1 |
20160239222 | Shetty et al. | Aug 2016 | A1 |
20160323367 | Murtha et al. | Nov 2016 | A1 |
20160342338 | Wang | Nov 2016 | A1 |
20170093961 | Pacella et al. | Mar 2017 | A1 |
20170199894 | Aronovich et al. | Jul 2017 | A1 |
20170220281 | Gupta et al. | Aug 2017 | A1 |
20170220334 | Hart et al. | Aug 2017 | A1 |
20170300424 | Beaverson et al. | Oct 2017 | A1 |
20170352038 | Parekh et al. | Dec 2017 | A1 |
20170359411 | Burns et al. | Dec 2017 | A1 |
20180089037 | Liu et al. | Mar 2018 | A1 |
20180146068 | Johnston et al. | May 2018 | A1 |
20180322062 | Watkins et al. | Nov 2018 | A1 |
Number | Date | Country |
---|---|---|
2738665 | Jun 2014 | EP |
2013056220 | Apr 2013 | WO |
2013115822 | Aug 2013 | WO |
2014185918 | Nov 2014 | WO |
Entry |
---|
Aseem Kishore, “What is a Checksum and How to Calculate a Checksum”, Retrieved from the Internet: https://www.online-tech-tips.com/cool-websites/what-is-checksum/, Feb. 18, 2015. (Year: 2015). |
International Search Report and Written Opinion issued in corresponding WO application No. PCT/US2018/027642, dated Jun. 7, 2018 (15 pages). |
Extended European Search Report issued in corresponding European Application No. 18184842.5, dated Sep. 19, 2018. |
Jaehong Min et al.; “Efficient Deduplication Techniques for Modern Backup Operation”; IEEE Transactions on Computers; vol. 60, No. 6; pp. 824-840; Jun. 2011. |
Daehee Kim et al.; “Existing Deduplication Techniques”; Data Depublication for Data Optimization for Storage and Network Systems; Springer International Publishing; DOI: 10.1007/978-3-319-42280-0_2; pp. 23-76; Sep. 2016. |
Deepavali Bhagwat et al.; “Extreme Binning: Scalable, Parallel Deduplication for Chunk-based File Backup”; IEEE Mascots; Sep. 2009 (10 pages). |
Mark Lillibridge et al.; “Sparse Indexing: Large Scale, Inline Deduplication Using Sampling and Locality”; 7th USENIX Conference on File and Storage Technologies, USENIX Association; pp. 111-pp. 123; 2009 (13 pages). |
International Search Report and Written Opinion issued in corresponding PCT Application PCT/US2018/027646, dated Jul. 27, 2018. (30 pages). |
Extended European Search Report issued in corresponding European Application No. 18185076.9, dated Dec. 7, 2018 (9 pages). |
Lei Xu et al.; “SHHC: A Scalable Hybrid Hash Cluster for Cloud Backup Services in Data Center”; 2011 31st International Conference on Distributed Computing Systems Workshops (ICDCSW); IEEE Computer Society; pp. 61-65; 2011 (5 pages). |