De-duplication based on data fingerprint integration
By generating data fingerprints and using address mapping tables and fingerprint tables for deduplication, the problems of memory consumption and processing latency in existing technologies are solved, achieving efficient data storage management.
Patent Information
- Application Number
- CN202080054294.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-07-30
- Filing Date
- 2020-05-21
- Publication Date
- 2026-02-06
- Estimated Expiration
- 2040-05-21
AI Technical Summary
Existing deduplication and compression technologies increase memory consumption and processing latency in data storage, and also have the problem of increased read/write amplification in online and post-processing modes.
A cryptographic hash function is used to generate data fingerprints, and data deduplication is performed through an address mapping table and a fingerprint table. An opportunity table is used to filter out fingerprints that cannot be deduplicated, thereby reducing the user change rate and memory overhead of the fingerprint table.
It improves the efficiency of the storage system, reduces memory resource usage and processing latency, lowers memory overhead, and optimizes data storage management.
Smart Images

Figure CN114631075B_ABST
Abstract
Description
[0001] Cross-referencing related applications
[0002] This application claims priority to U.S. Provisional Patent Application No. 62 / 880,486, filed July 30, 2019, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This invention relates to data reduction techniques for improving data storage space management, including data deduplication techniques based on data fingerprints (such as fingerprints associated with multiple copies of the same data). Background Technology
[0004] As digital processing technologies advance across industries, computing devices will generate more data and consume more power to process the increased volume. To address the rising operating costs resulting from this data growth, storage device vendors have implemented data reduction methods, such as deduplication and compression techniques, to reduce the actual amount of data stored, thereby lowering operating costs.
[0005] Deduplication is a technique for saving data storage space. Duplicate data stored in storage systems consumes a significant amount of hard disk space and uses more processing resources. By employing deduplication techniques, only one copy of the duplicate data is stored, thereby improving the efficiency of the storage system. Compression is a technique that uses a specific encoding mechanism to represent data or source code. Compared to unencoded data bits (or other information), this specific encoding mechanism reduces storage capacity.
[0006] Deduplication and compression can be performed in both online and post-processing modes. In online mode, deduplication and compression are performed to process user data in real time, and then the data is written to the storage device, thereby reducing the number of disk writes. In post-processing mode, user data is first written to the storage device, and then data is read from the system when the system is idle, and deduplication and compression are performed thereafter.
[0007] However, existing deduplication and compression techniques have drawbacks such as increased memory consumption and processing latency. More specifically, online deduplication processes data in real time, thereby reducing processing latency and improving memory resource utilization. Furthermore, post-processing deduplication increases the number of read and write operations, leading to increased read / write amplification. Summary of the Invention
[0008] Various examples are now described to introduce the selection of concepts in a simplified form, which will be further described in the following detailed description. The purpose of this invention is not to identify key or essential features of the subject matter protected by the claims, nor to limit the scope of the subject matter protected by the claims.
[0009] According to a first aspect of the present application, there is provided a computer-implemented method for performing data deduplication in a communication network. The method comprises applying a cryptographic hash function to data to generate a fingerprint of the data. A logical block address (LBA) of a logical unit number (LUN) assigned to the data is mapped to a physical block address (PBA) of a storage location where the data is persistently stored in a first table. The fingerprint is stored as a key and a location token of the data as a value in a key-value item in a second table. The location token comprises the LBA and the PBA of the storage location. In response to detecting that an additional key-value item in the second table comprises the fingerprint, the value in the key-value item in the second table is modified to comprise an additional location token in the additional key-value item. The additional location token is associated with a second LBA and a second PBA of a second storage location where the data is persistently stored. The second LBA in a second address mapping table item in the first table is remapped from the second PBA to the fingerprint.
[0010] According to the first aspect, in a first implementation form of the method, the data is retrieved from the storage location using the LBA based on detecting that the additional key-value item in the second table comprises the fingerprint. The fingerprint is stored as a key and the retrieved data as a value in a key-value item in a third table.
[0011] According to the first aspect or any preceding implementation form of the first aspect, in a second implementation form of the method, the third table is a fingerprint table. A fingerprint purge request is sent to a plurality of network nodes in the communication network. In response to the fingerprint purge request, a currently used fingerprint is received from the plurality of network nodes. Based on the currently used fingerprint and based on a list of fingerprints stored in the fingerprint table and in a fingerprint table associated with each of the plurality of network nodes, a list of outdated fingerprints is generated. The currently used fingerprint is a fingerprint used by the plurality of network nodes prior to sending the fingerprint purge request.
[0012] According to the first aspect or any preceding implementation form of the first aspect, in a third implementation form of the method, in response to the fingerprint purge request, a newly referenced fingerprint is received from the plurality of network nodes. The newly referenced fingerprint is a fingerprint used by the plurality of network nodes after sending the fingerprint purge request.
[0013] In a fourth implementation of the method according to the first aspect or any implementation of the first aspect as described herein, the currently used fingerprint and the newly referenced fingerprint are generated based on a membership checking data structure of each network node of the plurality of network nodes.
[0014] In a fifth implementation of the method according to the first aspect or any implementation of the first aspect as described herein, based on the list of outdated fingerprints and the list of newly referenced fingerprints, a list of to-be-deleted (TBD) fingerprints is generated. Based on the list of TBD fingerprints, the fingerprint table is updated.
[0015] In a sixth implementation of the method according to the first aspect or any implementation of the first aspect as described herein, the method further comprises verifying that the second LBA maps to the second PBA and verifying that the second PBA of the second storage location is associated with the data. Upon successful verification, the second LBA in the first table is remapped to map to the fingerprint.
[0016] In a seventh implementation of the method according to the first aspect or any implementation of the first aspect as described herein, a plurality of address mapping table entries in the first table are scanned (or read). The plurality of address mapping table entries include the second address mapping table entry, which includes the second LBA and the second PBA. Based on detecting during the scanning that the second LBA is not mapped to the second PBA, garbage collection is performed on the data persistently stored in the second storage location.
[0017] In an eighth implementation of the method according to the first aspect or any implementation of the first aspect as described herein, the LBA is within a logical address slice of a plurality of logical address slices of an address space. The address space is allocated among a plurality of network nodes in the communication network. The method further comprises applying the cryptographic hash function to an identification (ID) of the LBA and the LUN to determine a first hash. Based on the first hash, a first network node of the plurality of network nodes is selected, which stores the first table.
[0018] In a ninth implementation of the method according to the first aspect or any implementation of the first aspect as described herein, the cryptographic hash function is applied to the fingerprint to determine a second hash. Based on the second hash, a second network node of the plurality of network nodes is selected, which stores the second table.
[0019] According to a second aspect of the present disclosure, there is provided a system for performing data deduplication in a communication network, the system comprising: a memory for storing instructions; one or more processors in communication with the memory. The one or more processors execute the instructions to apply a cryptographic hash function to data to generate a fingerprint of the data. An address mapping table entry is stored in a first table. The address mapping table entry maps a logical block address (LBA) of a logical unit number (LUN) assigned to the data to a physical block address (PBA) of a storage location at which the data is persistently stored. The fingerprint is stored as a key and a location token of the data as a value in a key-value entry in a second table. The location token comprises the LBA and the PBA of the storage location. In response to detecting that an additional key-value entry in the second table comprises the fingerprint, the value in the key-value entry in the second table is modified to include an additional location token in the additional key-value entry. The additional location token is associated with a second LBA and a second PBA of a second storage location at which the data is persistently stored. The second LBA in a second address mapping table entry in the first table is remapped from the second PBA to the fingerprint.
[0020] According to the second aspect, in a first implementation form of the system, the data is retrieved from the storage location using the LBA based on detecting that the additional key-value entry in the second table comprises the fingerprint.
[0021] According to the second aspect or any preceding implementation form of the second aspect, in a second implementation form of the system, the fingerprint is stored as a key and the retrieved data is stored as a value in a key-value entry in a third table.
[0022] According to the second aspect or any preceding implementation form of the second aspect, in a third implementation form of the system, it is verified that the second LBA maps to the second PBA and that the second PBA of the second storage location is associated with the data.
[0023] According to the second aspect or any preceding implementation form of the second aspect, in a fourth implementation form of the system, based on the verification, the second LBA in the first table is remapped to map to the fingerprint.
[0024] In a fifth implementation of the system according to the second aspect or any implementation of the second aspect, a plurality of address mapping table entries in the first table are scanned (or read). The plurality of address mapping table entries include the second address mapping table entry, which includes the second LBA and the second PBA. Based on detecting during the scanning that the second LBA is not mapped to the second PBA, garbage collection is performed on the data persistently stored in the second storage location.
[0025] According to a third aspect of the present disclosure, there is provided a non-transitory computer-readable medium storing instructions for performing data deduplication in a communication network, the instructions, when executed by one or more processors of one computing device of a plurality of computing devices, cause the one or more processors to perform operations. The operations include applying a cryptographic hash function to data to generate a fingerprint of the data. An address mapping table entry is stored in a first table. The address mapping table entry maps a logical block address (LBA) of a logical unit number (LUN) assigned to the data to a physical block address (PBA) of a storage location at which the data is persistently stored. The fingerprint is stored as a key and a location token of the data as a value in a key-value entry in a second table. The location token includes the LBA and the PBA of the storage location. In response to detecting that an additional key-value entry in the second table includes the fingerprint, the value in the key-value entry in the second table is modified to include an additional location token in the additional key-value entry. The additional location token is associated with a second LBA and a second PBA of a second storage location at which the data is persistently stored. The second LBA in a second address mapping table entry in the first table is remapped from the second PBA to the fingerprint.
[0026] According to the third aspect, in a first implementation of the non-transitory computer-readable medium, the LBA is within one of a plurality of logical address slices of an address space, the address space being allocated among a plurality of network nodes in the communication network.
[0027] According to the third aspect, in a second implementation of the non-transitory computer-readable medium, the instructions, when executed, further cause the one or more processors to perform operations comprising: applying the cryptographic hash function to an identification (ID) of the LBA and the LUN to determine a first hash; based on the first hash, selecting a first network node of the plurality of network nodes, the first network node storing the first table.
[0028] According to the third aspect, in a third implementation form of the non-transitory computer readable medium, the instructions, when executed, further cause the one or more processors to perform operations comprising: applying the cryptographic hash function to the fingerprint to determine a second hash; and selecting, based on the second hash, a second network node of the plurality of network nodes, the second network node storing the second table.
[0029] Any of the preceding examples can be combined with any one or more of the other preceding examples to create new embodiments, without departing from the scope of the application. BRIEF DESCRIPTION OF DRAWINGS
[0030] In the drawings, which are not necessarily drawn to scale, like numerals can describe similar components in different views. The drawings illustrate various embodiments discussed in this document, as described below.
[0031] Figure 1 A brief system overview of a network architecture using a deduplication service module and a metadata service module providing deduplication functionality is shown;
[0032] Figure 2 A block diagram of a metadata service module is shown;
[0033] Figure 3 A block diagram of a deduplication service module is shown;
[0034] Figure 4 A block diagram of interactions between a metadata service module and a deduplication service module with respect to deduplication functionality is shown;
[0035] Figure 5 A block diagram of deduplication functionality including generating an address mapping table in a metadata service module and populating and consolidating an opportunity table in a deduplication service module is shown;
[0036] Figure 6 A flowchart of a method suitable for performing the deduplication functionality shown is shown; Figure 5
[0037] Figure 7 A block diagram of deduplication functionality including generating a fingerprint table using an opportunity table and remapping an address mapping table to facilitate garbage collection is shown;
[0038] Figure 8 A flowchart of a method suitable for performing the deduplication functionality shown is shown; Figure 7
[0039] Figure 9 The following are examples illustrating a fingerprint clearing process that can be used in conjunction with clearing obsolete entries in a fingerprint table;
[0040] Figure 10 Some exemplary embodiments are shown that are suitable for execution. Figure 9 The flowchart shown illustrates the fingerprint removal process.
[0041] Figure 11 Flowcharts illustrating methods suitable for performing deduplication in a communication network, provided by some exemplary embodiments, are shown.
[0042] Figure 12 Block diagrams of representative software architectures that can be used in conjunction with the various device hardware described herein are shown, along with some exemplary embodiments.
[0043] Figure 13 Block diagrams of circuits for implementing algorithms and execution methods are shown, provided by some exemplary embodiments. Detailed Implementation
[0044] First, it should be understood that although illustrative implementations of one or more embodiments are provided below, in combination with... Figures 1 to 13 The disclosed systems and / or methods described can be implemented using any number of techniques, whether currently known or not. This invention should not be limited to the illustrative implementations, drawings, and techniques set forth below, including the exemplary designs and implementations illustrated and described herein, but can be modified within the full scope of the appended claims and their equivalents.
[0045] In the following description, reference is made to the accompanying drawings, which form a part of this document, illustrating specific embodiments that may be practiced. These embodiments will be described in sufficient detail to enable those skilled in the art to implement the subject matter of the invention. It should be understood that other embodiments may be used and structural, logical, and electrical changes may be made without departing from the scope of the invention. Therefore, the exemplary embodiments described below are not to be construed as limiting, and the scope of the invention is defined by the appended claims.
[0046] As used herein, the term "network-based service infrastructure" includes a plurality of network devices (also referred to as hosts, network nodes, or servers) that provide distributed storage capacity and data deduplication functionality as a service to a community of end recipients (e.g., customers of the service infrastructure), where the end recipients are communicatively coupled to the network devices in the service infrastructure over a network. Customers of the service infrastructure can use one or more computing devices (also referred to as customer devices or user devices) to access and manage the services (including distributed storage and deduplication) provided by the service infrastructure over the network. The customer devices, the network, and the network-based service infrastructure can be collectively referred to as a "network architecture." Customers of the service infrastructure can also be referred to as "users."
[0047] As used herein, the term "data fingerprint" (or "fingerprint") refers to a cryptographic hash of data, which can be generated by applying a cryptographic function to the data. As used herein, the term "fingerprint table" refers to a key-value table in which a fingerprint is stored as a key and corresponding data is stored as a value.
[0048] The deduplication techniques disclosed herein use an address mapping table, a fingerprint table, and a data structure (referred to as an opportunity table).
[0049] The address mapping table is a key-value table that stores a mapping between a logical block address (LBA) of a logical unit number (LUN) associated with received data and a physical block address (PBA) corresponding to the LBA or a fingerprint of the data. For example, the LBA is stored as a key and the value can be the PBA or the fingerprint. More specifically, if the data is not deduplicated, the value is the PBA corresponding to the LBA. If the data is deduplicated, the fingerprint is stored as the value so that the data in the fingerprint table can be accessed using the fingerprint. The address mapping table is also referred to as a LUN address mapping table (or LAMT).
[0050] The opportunity table is used as a filter to discard fingerprints associated with duplicate data before storing the fingerprints in the fingerprint table and consuming system resources. In this regard, the deduplication techniques discussed herein use the opportunity table to identify fingerprints that cannot be deduplicated once stored in the fingerprint table, such that a single copy of the fingerprint and its corresponding data is stored in the fingerprint table. In some aspects, the opportunity table is a table comprising key-value pairs, where each key is a fingerprint and the corresponding value is a token (also referred to as a "location token") that is a combination of a LUN identification (LUN ID), the LBA of the LUN, and the PBA corresponding to the LBA (the PBA is a physical address of a storage location where the data is persistently stored).
[0051] The fingerprint table is used to store deduplicated data. In some aspects, the fingerprint data table is also a table comprising key-value pairs, where the key is a fingerprint and the value is the data corresponding to the fingerprint.
[0052] In an example embodiment, as discussed herein with respect to Figures 1 to 13 The address mapping table, the opportunity table, and the fingerprint table can be used by one or more network servers in a distributed storage environment to provide deduplication functionality. By using the opportunity table, the churn rate of the fingerprint table is reduced, resulting in a fingerprint table that includes fingerprints associated with deduplicated data that occupies the least amount of memory resources in the distributed storage environment. More specifically, by introducing the opportunity table mechanism (which is not present in existing deduplication schemes), data blocks that can be deduplicated are identified prior to storage in the fingerprint table, thereby reducing the size of the fingerprint table and reducing memory overhead. In some aspects, the deduplication techniques discussed herein use a threshold number of duplicates to trigger deduplication, thereby improving the efficiency of the generation of the fingerprint table.
[0053] Figure 1 A brief system overview of a network architecture that uses a deduplication service module and a metadata service module that provide deduplication functionality is shown. Referring to Figure 1 , the network architecture 100 can include one or more user devices, such as a device 104 that is communicatively coupled to a network-based service infrastructure 110 through a network 108. The user device 104 is associated with a user 102 and can be used to interact with the network-based service infrastructure 110 using a network access client 106. The network access client 106 can be implemented as a web client or an application (app) client.
[0054] The user 102 can be a human user (e.g., a human), a machine user (e.g., a computer configured by a software program to interact with the device 104 and the network-based service infrastructure 110), or any suitable combination thereof (e.g., a human assisted by a machine or a machine supervised by a human). The user 102 is not part of the network architecture 100, but is associated with (and possibly a user of) the device 104 (e.g., the user 102 can be an owner of the device 104). For example, the device 104 can comprise a desktop computer, an in-vehicle computer, a tablet computer, a navigation device, a portable media device, or a smartphone belonging to the user 102. The user 102 can use the device 104 to access services provided by the network-based service infrastructure 110 (e.g., services to which the user subscribes). For example, the user 102 can access a distributed storage device through data deduplication provided by the network-based service infrastructure 110. In this regard, the user 102 can also be referred to as a “customer 102” or a “tenant 102” of the network-based service infrastructure 110.
[0055] The network 108 can be any network that supports communication between machines, databases, and devices (e.g., the device 104 and the network nodes 112, 114, …, 116 in the network-based service infrastructure 110). Accordingly, the network 108 can be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The network 108 can include one or more portions that constitute a private network, a public network (e.g., the Internet), or any suitable combination thereof.
[0056] The network-based service infrastructure 110 includes a plurality of computing devices, e.g., network nodes 112, 114, …, 116 (also referred to as node 0, node 1, …, node N). Each of the nodes 0, …, N uses a corresponding external storage device, e.g., network storage devices 118, …, 120 (also referred to as storage device 0, …, storage device N), to provide storage capacity in the distributed storage architecture 110.
[0057] Figure 1Any of the devices shown can be implemented in a general-purpose computer modified (e.g., configured or programmed) by software to be a special-purpose computer to perform the functions of that computer, database, or device described herein. A "database" as used herein is a data storage resource that stores data in a structure that is a text file, a table, a spreadsheet, a relational database (e.g., an object-relational database, a NoSQL database, a network or graph database), a triple store, a hierarchical data store, or any suitable combination thereof. Moreover, data accessed (or stored) through an application programming interface (API) or a remote procedure call (RPC) can be considered to be accessed from (or stored into) a database. Furthermore, Figure 1 Any two or more of the devices or databases shown can be combined into a single machine, database, or device, and the functions of any single machine, database, or device described herein can be subdivided among multiple machines, databases, or devices.
[0058] In an example embodiment, the network node 112 is configured as a management network node that performs deduplication functions in the network-based service infrastructure 110. The management network node includes a deduplication service module (DSM) 122 and a metadata service module (MSM) 128. The DSM 122 includes suitable circuitry, logic, interfaces, and / or code, and is configured to generate and maintain an opportunity table (OT) 124 and a fingerprint table (FT) 126 used in connection with deduplication functions. The MSM 128 includes suitable circuitry, logic, interfaces, and / or code, and is configured to generate and maintain a LUN address mapping table (LAMT) 130. Moreover, the DSM 122 performs deduplication-related functions associated with the OT 124 and the FT 126, and the MSM 128 performs deduplication-related functions associated with the LAMT 130. Figure 2 and Figure 3 Additional details are shown regarding the structure of the OT 124, the FT 126, and the LAMT 130. In conjunction with Figure 4 , Figure 5 , Figure 6 , Figure 7 , Figure 8 , Figure 9 , Figure 10 and Figure 11Exemplary deduplication-related functions performed by the DSM 122 and the MSM 128 are discussed.
[0059] In an exemplary embodiment, data transmitted from the devices 104 is stored using one or more of the network storage devices 118,..., 120, and processed (e.g., deduplicated) by the management network node 112. More specifically, the DSM 122 and the MSM 128 interact with each other to perform deduplication-related functions (e.g., in conjunction with the OT 124, the FT 126, and the LAMT 130) using the OT 124, the FT 126, and the LAMT 130. Figures 4 to 11 Exemplary deduplication-related functions are discussed.
[0060] In another exemplary embodiment, additional network nodes (e.g., network nodes 114,..., 116) in the network-based service infrastructure 110 are used to perform deduplication-related functions in a distributed manner, rather than having a single network node (e.g., the management network node 112) perform the deduplication-related functions. For example, the network node 114 is used to include a DSM 132 that includes a management OT 134 and a FT 136, and a MSM 138 that manages a LAMT 140. Similarly, the network node 116 is used to include a DSM 142 that includes a management OT 144 and a FT 146, and a MSM 148 that manages a LAMT 150. In some aspects, to more efficiently utilize storage capacity in the distributed storage architecture 110, incoming data (e.g., data from the user devices 104) associated with LUN IDs and LBAs is processed using a hash function (e.g., a cryptographic hash function) to determine a network node location (e.g., one of the network nodes 114,..., 116) for DSM-related functions and a network node location for MSM-related functions associated with deduplication.
[0061] For example, a first hash function is applied to the incoming data to determine a fingerprint. A second hash function is applied to the LUN ID and the LBA to obtain a first hash value that is used to select a first network node (e.g., from among the network nodes 114,..., 116) and to configure and execute LAMTs related to deduplication-related functions using the MSM in the first network node. In addition, a third hash function is also applied to the determined fingerprint to obtain a second hash value that is used to select a second network node (e.g., from among the network nodes 114,..., 116) and to configure and execute OTs and FTs related to deduplication-related functions using the DSM in the second network node. In some aspects, one or more of the first hash function, the second hash function, and the third hash function can be the same. In this regard, the MSM running at one network node in the network-based service infrastructure 110 interacts with the DSM running at another network node related to performing deduplication-related functions (e.g., in conjunction with the Figures 4 to 11 discussed deduplication functions).
[0062] Figure 2 A block diagram of a metadata service module provided by some example embodiments is shown. Referring to Figure 2 , the MSM 128 is configured to generate the LAMT 130 using metadata information associated with received data. For example, received data (e.g., data received by the management network node 112 from the user device 104) includes metadata having the LUN ID and the LBA information 202. A cryptographic hash function is applied (e.g., by the MSM 128) to the data to obtain the fingerprint 206. In addition, the data is stored in one of the network storage devices 118,..., 120 to obtain the PBA 204 corresponding to the LBA.
[0063] As shown in Figure 2 , the LAMT 130 is a key-value table configured to store a mapping between the LBA and LUN ID associated with the received data and a fingerprint corresponding to the LBA or the data. For example, the LUN ID and the LBA information 202 are stored as keys and the value can be the PBA 204 or the fingerprint 206. More specifically, if the data is not deduplicated, the value is the PBA 204 corresponding to the LBA. If the data is deduplicated, the fingerprint 206 is stored as the value so that the data (e.g., in the fingerprint table 126) can be accessed using the fingerprint 206.
[0064] In an example embodiment, a memory address space shared (e.g., shared or allocated) among the network nodes 112,..., 116 can be divided into a plurality of logical address slices (or partitions). The LBA associated with the received data can be located within one of the plurality of logical address slices of the memory address space.
[0065] Figure 3 A block diagram of a deduplication service module 122 provided by some example embodiments is shown. Referring to Figure 3 , the DSM 122 is configured to generate and maintain the OT 124 and the FT 126.
[0066] The OT 124 is a table comprising key-value pairs, where the key is a fingerprint (e.g., the fingerprint 302) and the corresponding value is a token (e.g., the token 304 comprising a LUN ID, an LBA, and a PBA associated with the received data 306). The OT 124 is configured to prevent data that cannot be deduplicated from being stored in the FT 126 and consuming system resources. In this regard, the opportunity table is configured to filter out fingerprints and corresponding data that cannot be deduplicated.
[0067] The FT 126 is also a table comprising key-value pairs, where the key is a fingerprint and the value is the data corresponding to the fingerprint. As Figure 3 shown, the FT 126 is configured to store key-value pairs of the fingerprint 302 and the data 306 after deduplication.
[0068] Figure 4 A block diagram 400 of interactions between a MSM 128 and a DSM 122 with respect to deduplication functions provided by some example embodiments is shown. Referring to Figure 4 , the interactions between the MSM 128 and the DSM 122 include seven deduplication functions discussed in more detail below in connection with Figures 5 to 10 : data preparation 402 (see item 1 in Figures 4 to 5 ), data injection 404 (see item 2 in Figures 4 to 5 ), opportunity table analysis 406 (see item 3 in Figures 4 to 5 ), original data retrieval 408 (see item 4 in Figures 4 to 5 ), fingerprint promotion 410 (see item 5 in Figure 4 and Figure 7 ), LAMT remapping 412 (see item 6 in Figure 4 and Figure 7 ), and garbage collection (GC) 414 (see item 7 in Figure 4 and Figure 7 ). As Figure 4As shown, the MSM 128 is used to perform the data preparation 402, the data injection 404, the LAMT remapping 412, and the GC 414. The DSM 122 is used to perform the opportunity table analysis 406, the raw data retrieval 408, and the fingerprint promotion 410.
[0069] In one example embodiment, the MSM 128 and the DSM 122 can be part of a single network node, such as the management network node 112 in the network-based service infrastructure 110. In another example embodiment, the MSM and the DSM can be located in different network nodes, such as a network node selected from the plurality of network nodes 114,..., 116. As described above, a cryptographic hash function can be used to generate the fingerprint, select a first node to run the MSM (and its associated LAMT), and select a second node to run the DSM (and its associated OT and FT). More specifically, a cryptographic hash function is applied to the received data to generate a fingerprint of the data. Metadata of the received data can include a LUN ID of a LUN and the LBAs associated with the LUN. Another hash function is applied to the LUN ID and the LBAs to identify a first network node that can run the MSM. The hash function is further applied to the fingerprint to identify a second network node that can run the DSM.
[0070] Figure 5 A block diagram 500 is shown that includes the deduplication functions (e.g., the deduplication-related functions 1-4) provided by some example embodiments, including generating an address mapping table (e.g., the LAMT 130) in a metadata service module (e.g., the MSM 128) and populating and consolidating an opportunity table (e.g., the OT 124) in a deduplication service module (e.g., the DSM 122). Figure 4 A block diagram 500 is shown that includes the deduplication functions (e.g., the deduplication-related functions 1-4) provided by some example embodiments, including generating an address mapping table (e.g., the LAMT 130) in a metadata service module (e.g., the MSM 128) and populating and consolidating an opportunity table (e.g., the OT 124) in a deduplication service module (e.g., the DSM 122). Figure 5 The LAMT 130 is shown, which includes address mapping table entries of the form [{LUN ID, LBA}, PBA]. A plurality of PBAs (e.g., PBA1,..., PBAN) are associated with a storage location 508. For example, the address mapping table entry [{LUN ID, LBA}, PBA1] includes a physical block address PBA1 that is associated with the storage location 508 that stores data 506. Figure 5 Additional PBAs (e.g., PBA2,..., PBAN) of the storage location 508 are shown, which can be used to store data.
[0071] Figure 5The format of the key-value items stored in the OT 124 is also shown. More specifically, a key-value item 502 takes a fingerprint FP1 as the key and tokens TOKEN1, …, TOKEN N as the value.
[0072] Figure 6 A flowchart of a method 600 for performing the deduplication functions shown is illustrated. The method 600 includes operations 602, 604, 606, 608, and 610. By way of example and not limitation, the method 600 can be performed by the MSM 128 and the DSM 122. Figure 5 Figure 5 The method 600 includes operations 602, 604, 606, 608, and 610. By way of example and not limitation, the method 600 can be performed by the MSM 128 and the DSM 122.
[0073] Referring to Figure 5 and Figure 6 , operation 602 includes the MSM 128 performing the data preparation 402. For example, the MSM 128 applies a cryptographic hash function to the received data to generate a fingerprint 510 of the received data. In addition, the MSM 128 extracts metadata, such as the LUN ID and the LBA associated with the received data, and obtains a PBA of a storage location for persistently storing the received data as storage data 506. The MSM 128 generates the LAMT 130 and stores address mapping table entries 504 in the LAMT 130. The address mapping table entries 504 are key-value items that include the LBA and the LUN ID as the key and the corresponding PBA (e.g., PBA1 corresponding to a storage location, such as one of the network storage devices 118, …, 120 that persistently store the received data 506). Upon receiving additional data from the user device, the MSM 128 determines the fingerprint of the received data and updates the LAMT 130 with additional address mapping table entries.
[0074] In operation 604, the MSM 128 groups the data generated in operation 602 in preparation for the data injection 404. More specifically, the MSM 128 groups the data from the address mapping table entries 504 by their corresponding fingerprints (e.g., fingerprint 510), thereby performing the following fingerprint data grouping {FP:{LUNID,LBA},PBA}. As described above, the data grouping {LUNID,LBA},PBA is referred to as a token (or location token). In this regard, the fingerprint data grouping can also be denoted as {FP:TOKEN}.
[0075] In operation 606, the MSM 128 prepares the data injection 404 by sending the fingerprint data packet {FP:TOKEN} to the DSM 122 of the four storage devices in the OT 124. The DSM 122 stores the received fingerprint data packet as a key-value item, where the fingerprint FP is the key and the initial value is TOKEN.
[0076] In operation 608, the DSM 122 performs the opportunity table analysis 406. More specifically, the DSM 122 periodically scans the table items in the OT 124 to detect multiple tokens associated with the same fingerprint and groups (or merges) such tokens as the value associated with the fingerprint. Figure 5 An example of the key-value item 502 in the OT 124 after the opportunity table analysis 406 is complete is shown. For example, prior to the analysis 406, the OT 124 includes multiple key-value items, where the fingerprint FP1 is the key in all table items, TOKEN1, …, TOKEN N corresponding values. During the opportunity table analysis 406, the key-value item 502 in the OT 124 is modified to include at least one additional location token from another key-value item in the OT 124 that includes the fingerprint FP1 as the key. This process of modifying the key-value item 502 and supplementing the value with the additional location token can be performed multiple times (e.g., each time a key-value item is detected in the OT 124 to include the same fingerprint as the key in the table item). After the analysis 406 is complete, the key-value item 502 includes the fingerprint FP1 as the key and the tokens TOKEN1, …, TOKEN N as the value. In this regard, the opportunity table analysis 406 causes the integration of the same fingerprint associated with different tokens (indicating duplicate data stored at different storage locations), resulting in a single key-value item where the fingerprint is the key and multiple tokens are the value corresponding to the key.
[0077] When multiple tokens are associated with the same fingerprint (as is the case with the key-value item 502 of the OT 124), the multiple data table items associated with the fingerprint and corresponding to each of the tokens are candidate table items for deduplication, as multiple tokens related to the same fingerprint represent duplicate data. The fingerprint associated with such a key-value item characterized by multiple tokens mapped to the same fingerprint FP1 (e.g., FP1) and the data corresponding to such fingerprint can be promoted to add to the FT 126.
[0078] In an exemplary embodiment, the fingerprint FP1, which is part of the key value 502, is the same as the fingerprint 510 calculated for the stored data 506. In operation 610, the DSM 122 performs the raw data retrieval 408 to retrieve the stored data 506 associated with the fingerprint FP1. More specifically, the DSM 122 can use any token TOKEN1, ..., TOKEN associated with the fingerprint FP1. N To retrieve the stored data 506. For example, the LUNID and LBA can be used to determine the PBA associated with the storage location of the stored data 506, and the stored data 506 can be retrieved based on the PBA.
[0079] Figure 7 The examples shown include deduplication functionality provided by generating a fingerprint table 126 using an opportunity table 124 and remapping the LAMT 130 to facilitate garbage collection. Figure 4 The block diagram 700 shows the deduplication-related functions numbered 5 to 7 in the middle.
[0080] Figure 7 The diagram shows a key-value pair 702 (generated by the opportunity table analysis 406, resulting in a single fingerprint FP1 (as the key) and multiple tokens (TOKEN1, ..., TOKEN...). N OT 124 (as a value) is associated with it. Figure 7 It is also shown that address mapping table entry 706 in the LAMT130 is changed to address mapping table entry 708 during the LAMT remapping 412 in order to facilitate the garbage collection 414.
[0081] Figure 8 Some exemplary embodiments are shown that are suitable for execution. Figure 7 The deduplication method 800 shown (for example, Figure 7 The flowchart shows the deduplication-related functions numbered 5 to 7 in the middle. Method 800 includes operations 802, 804, and 806. By way of example, and not limitation, method 800 can be performed by the MSM 128 and the DSM 122.
[0082] In operation 802, the DSM 122 performs fingerprint enhancement 410 to store an entry in the fingerprint table 126. More specifically, after retrieving data associated with the fingerprint FP1 (e.g., the stored data 506), the DSM 122 stores a key-value entry 704 in the fingerprint table 126 (where the fingerprint FP1 is the key and the retrieved data is the value).
[0083] Once the DSM 122 stores the key-value item 704 (including the fingerprint FP1 and the data 506), there is no need to keep TOKEN1,..., TOKEN N pointed data. Thus, in operation 804, the MSM 128 performs the LAMT remapping 412 to modify the corresponding address mapping table items associated with TOKEN1,..., TOKEN N from the key-value items 702 in the OT 124), thereby facilitating the garbage collection 414. More specifically, during the LAMT remapping 412, the MSM 128 scans the plurality of address mapping table items in the LAMT 130 and updates the address mapping table items associated with TOKEN1,..., TOKEN N such that the key (e.g., {LUNID, LBA}) in each address mapping table item maps to the fingerprint (instead of the PBA). For example, the LAMT 130 includes an address mapping table item 706 associated with TOKEN1, where TOKEN1 includes [{LUNID1, LBA1}, PBA1]. The address mapping table item 706 includes {LUNID1, LBA1} as the key and PBA1 as the value. After lifting the fingerprint FP1 and storing it as the key-value item 704 in the fingerprint table 126 along with the data 506, the MSM 128 performs the LAMT remapping 412 to modify the address mapping table item 706 to obtain an address mapping table item 708 that includes {LUNID1, LBA1} as the key and the fingerprint FP1 as the value. In other words, for all the plurality of tokens (e.g., the plurality of tokens in the key-value items 702 in the OT 124) associated with the same fingerprint, the corresponding address mapping table items in the LAMT 130 (associated with the PBA in each of the tokens) are modified such that the key-value in each address mapping table item maps to the fingerprint instead of the PBA.
[0084] In an example embodiment, during the LAMT remapping 412, the MSM 128 can verify whether the LBA (e.g., LBA1 in the address mapping table entry 706) still maps to the PBA (e.g., PBA1) of TOKEN1. If the physical location of the data (e.g., the PBA) has changed (e.g., is no longer PBA1), the data can also have changed and a PBA to fingerprint mapping (e.g., from entry 706 to entry 708) cannot be performed. Upon successful completion of the verification, i.e., the LBA (e.g., LBA1 in the address mapping table entry 706) still maps to the PBA (e.g., PBA1) of TOKEN1, the LAMT remapping 412 can continue.
[0085] By remapping the key value in each address mapping table entry from the PBA to the fingerprint, the original data stored in the physical location associated with the PBA of TOKEN1 will be considered garbage. For example, after changing the address mapping table entry 706 to address mapping table entry 708, the original data stored in the physical location 710 associated with PBA1 of TOKEN1 will be considered garbage because the PBA no longer maps to an LBA. In operation 806, the MSM 128 can perform the garbage collection 414 to remove garbage data, such as the data stored in the physical location 710 that no longer maps to an LBA.
[0086] In an example embodiment, the garbage collection 414 can be performed as a background process that periodically scans the LAMT 130 to check whether a PBA still maps to an LBA (indicating a non-garbage entry). For address mapping table entries in the LAMT 130 whose value has been changed from a PBA to a fingerprint, the PBA of such entries will no longer be associated with an LBA and the storage space occupied by the data stored in the physical location of the PBA can be reclaimed during the garbage collection 414. After reclaiming the storage space, the deduplication of the data is complete.
[0087] Figure 9 A fingerprint cleanup process 900 that can be used in conjunction with cleaning up outdated entries in a fingerprint table is shown. Figure 9 A network node 902 and a network node 904 (each similar to any of the network nodes 114,..., 116 of FIG. 1) and a management network node 906 (similar to the network node 118 of FIG. 1) are shown. Figure 1 Figure 1 The management network node 112). Each of the network nodes (e.g., network nodes 112, 114, ..., 116) in the network-based service infrastructure 110 (which may be configured as a distributed storage architecture) is configured with a space-efficient membership check data structure, such as, but not limited to, a Bloom filter (BF).
[0088] In one exemplary embodiment, the network node 902 is configured with BF A 908, the BF A 908 is used to scan the LAMT at node 902 to record the used fingerprints in the BF data structure (e.g., fingerprints used before (e.g., the management node 906) initiates a fingerprint clearing request). For example, the Bloom filter can scan address mapping entries and determine when a fingerprint is used when it appears as a value entry in the address mapping entry of the LAMT 130. The network node 902 is also configured with a BF. NEWA 914, the BF NEWA 914 is used to detect newly referenced fingerprints at node 902 since the fingerprint clearing request was initiated.
[0089] Similarly, network node 904 is configured with BF. B 910 (used to scan LAMT at node 904 to record the fingerprints used in the BF data structure, such as fingerprints already used at node 904 before initiating a fingerprint clearing request) and BF NEWB 916 (used to detect newly referenced fingerprints at node 904 after a cleanup request is initiated). The Bloom filters 908, 910, 914 and 916 are used to generate fingerprint information (e.g., currently used fingerprint 912, outdated fingerprint 918, rejected fingerprint 922 and fingerprint to be deleted 924) for use in conjunction with the fingerprint cleanup process 900.
[0090] Figure 9 It also shows sequence numbers 1 to 6 indicating the timing of operations associated with the fingerprint removal process, as in combination with... Figure 10 Operations 1002 to 1010 are described. More specifically, Figure 9 The serial numbers 1 to 6 in the sequence correspond to the timing of operations 1002, 1004, 1006, 1007, 1008 and 1010, respectively.
[0091] Figure 10 Some exemplary embodiments are shown that are suitable for execution. Figure 9A flowchart of a method 1000 of the illustrated fingerprint cleanup process. The method 1000 includes operations 1002, 1004, 1006, 1007, 1008, and 1010. By way of example and not limitation, the method 1000 can be performed by the DSM 122 or the MSM 128 (in the management network node 112 Figure 9 (also referred to as node 906) in the example of FIG. 9.
[0092] In operation 1002, the management network node 906 can initiate a fingerprint cleanup process by sending a fingerprint cleanup request to a plurality of network nodes (e.g., nodes 902 and 904).
[0093] In operation 1004, all network nodes (e.g., nodes 902 and 904) in the distributed storage infrastructure identify currently used fingerprints 912 using corresponding Bloom filters (e.g., Bloom filters 908 and 910). More specifically, each node scans its LAMT to check for currently used fingerprints (e.g., fingerprints used prior to sending the fingerprint cleanup request) in the membership of the Bloom filter. Each of nodes 902 and 904 also starts tracking newly referenced fingerprints (e.g., fingerprints used after sending the cleanup request in operation 1002) using corresponding Bloom filters 914 and 916.
[0094] In operation 1006, a list of stale fingerprints 918 is generated (e.g., can be generated from a plurality of fingerprint tables stored in the network-based service infrastructure 110) by filtering the currently used fingerprints 912 from a list of all fingerprints 920.
[0095] In operation 1007, each of the network nodes 902 and 904 sends information in the Bloom filters 914 and 916 to the management network node 906 to build a list of newly referenced fingerprints used since the fingerprint cleanup request (e.g., since operation 1002). The list of newly referenced fingerprints is represented as “veto” fingerprints 922 in the example of FIG. 9. Figure 9
[0096] In operation 1008, the management node 906 can ignore any stale fingerprint candidate entries used since the cleanup to obtain a to-be-deleted (or TBD) fingerprint 924 (e.g., remove the veto fingerprints 922 from the list of stale fingerprints 918 to obtain a list of TBD fingerprints 924).
[0097] In operation 1010, the fingerprints listed in the list of TBD fingerprints 924 (e.g., outdated fingerprints that have not been vetoed) can be purged from the corresponding fingerprint table of the node. For example, the managing network node 906 can update its managed fingerprint table (e.g., by deleting one or more fingerprints in the list of TBD fingerprints). In addition, the managing network node 906 can also send the list of TBD fingerprints to the remaining network nodes (e.g., nodes 902 and 904) so that each node can update its fingerprint table based on the list of TBD fingerprints by purging one or more fingerprints from the fingerprint table.
[0098] Figure 11 A flowchart illustrating a method 1100 for performing data deduplication in a communication network, according to some example embodiments, is shown. The method 1100 includes operations 1102, 1104, 1106, 1108, and 1110. By way of example and without limitation, the method 1100 can be performed by the MSM 128 and the DSM 122 for performing data deduplication in a communication network Figure 1 The method 1100 is shown as being performed in the managing network node 112 in the network-based service infrastructure 110, or by other DSM and MSM modules (e.g., which can be configured in one or more of the network nodes 114, 116).
[0099] Reference is made to Figure 11 In operation 1102, a cryptographic hash function is applied to data (e.g., data received from a user device) to generate a fingerprint of the data. For example, the fingerprint 510 is generated using the received data (e.g., the data 506). In operation 1104, an address mapping table entry is stored in a first table. The address mapping table entry maps a logical block address (LBA) of a logical unit number (LUN) assigned to the data to a physical block address (PBA) of a storage location where the data is persistently stored. For example, the address mapping table entry 504 in the LAMT 130 maps the LUN ID and the LBA associated with the received data to the PBA (e.g., PBA1) of the storage location where the data 506 is persistently stored.
[0100] In operation 1106, the fingerprint is used as a key, and the location token of the data is used as a value in a key-value entry in a second table. For example, fingerprint 510 is stored as fingerprint FP1 in key-value entry 502 in OT 124. The location token includes the LBA and PBA of the storage location (e.g., {LUNID, LBA}, PBA1}) and is stored as one of the values in key-value entry 502.
[0101] In operation 1108, in response to detecting that an additional key-value entry in the second table includes the fingerprint, the value in the key-value entry in the second table is modified to include an additional location token in the additional key-value entry. For example, during the opportunity table analysis 406, entries in the OT 124 are scanned, and any additional key-value entries having the same fingerprint as the key of the entry (e.g., fingerprint FP1 in entry 502) are added as additional location tokens in key-value entry 502. The additional location token is associated with a second LBA and a second PBA in another storage location that persistently stores the same data (e.g., the data 506).
[0102] In operation 1110, the second LBA in the second address mapping entry of the first table is remapped from the second PBA to the fingerprint. For example, during the LAMT remapping 412, the address mapping entry 706 is remapped to the address mapping entry 708, wherein the key in the entry (e.g., LBA) is remapped from the PBA1 to the fingerprint FP1.
[0103] The data deduplication technique disclosed herein is based on using the opportunity table to detect data blocks that can be deduplicated, thereby reducing the size of the fingerprint table and reducing memory overhead. Furthermore, since the data and fingerprints are already provided in the fingerprint table, no data is reread to calculate fingerprints during any deduplication process; therefore, the disclosed deduplication technique reduces the use of read bandwidth.
[0104] Figure 12 Block diagrams of a representative software architecture 1200 provided by some exemplary embodiments are shown, which can be used in conjunction with various device hardware described herein. Figure 12 This is merely a non-limiting example of software architecture 1202, and it should be understood that many other architectures can be implemented to facilitate the functionality described herein. Software architecture 1202 can be implemented in, for example... Figure 13 The computing device 1300 shown executes on hardware such as a processor 1305, a memory 1310, storage devices 1315 and 1320, and I / O interfaces 1325 and 1330, etc. A representative hardware layer 1204 is shown in the figure, which can represent, for example... Figure 13The computing device 1300. The representative hardware layer 1204 includes one or more processing units 1206 having associated executable instructions 1208. The executable instructions 1208 represent the executable instructions of the software architecture 1202, including Figures 1 to 11 The implementation of the methods, modules and techniques described here can be stored on or transmitted across one or more types of computer-readable media 1214. The computer-readable media 1214 can include storage devices that are external or internal to a computing device 1300. Examples include non-removable storage media and communication media.
[0105] In Figure 12 In the example architecture shown, the software architecture 1202 can be conceptualized as a stack of layers where each layer provides particular functionality. For example, the software architecture 1202 can include layers such as an operating system 1214, libraries 1216, frameworks / middleware 1218, applications 1220, and a presentation layer 1244. Operationally, the applications 1220 and / or other components within the layers can invoke application programming interface (API) calls 1224 through the software stack, and receive messages 1226 in response to the API calls 1224, indicating the results of the invocations. Figure 12 The layers shown are representative and not all software architectures 1202 have all layers. For example, some mobile or special purpose operating systems can not provide a frameworks / middleware 1218 layer, while others can provide such a layer. Other software architectures can include additional or different layers.
[0106] The operating system 1214 can manage hardware resources and provide common services. For example, the operating system 1214 can include a kernel 1228, services 1230, and drivers 1232. The kernel 1228 can act as an abstraction layer between the hardware and the other software layers. For example, the kernel 1228 can be responsible for memory management, processor management (for example, scheduling), component management, networking, security settings, and so on. The services 1230 can provide other common services for the other software layers. The drivers 1232 can be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers 1232 can include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (for example, Universal Serial Bus (USB) drivers), wireless fidelity® (Wi-Fi®) drivers, audio drivers, power management drivers, and so forth depending on the hardware configuration.
[0107] The libraries 1216 can provide a common infrastructure that can be used by the applications 1220 and / or other components and / or layers. The libraries 1216 are generally implemented in the operating system kernel 1228 — i.e., a core of the operating system — but will be described here as a separate component for purposes of illustration. The libraries 1216 can allow other software modules to perform tasks such as creating thread, sending network packets, opening a file, etc. The libraries 1216 can include system libraries 1234 (e.g., C standard library) that can provide functions such as memory allocation functions, string manipulation functions, mathematical functions, and the like. In addition, the libraries 1216 can include API libraries 1236 (such as media libraries for enabling the presentation of various media formats such as MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, and the like), graphics libraries (e.g., an OpenGL framework that can be used to render 2D and 3D graphics on a display), database libraries (e.g., SQLite that can provide various relational database functions), web libraries (e.g., WebKit that can provide web browsing functionality), and the like. The libraries 1216 can also include a wide variety of other libraries 1238 to provide many other APIs to the applications 1220 and other software modules / components.
[0108] The frameworks / middleware 1218 (also sometimes referred to as middleware) can provide a higher-level common infrastructure that can be used by the applications 1220 and / or other software modules / components. For example, the frameworks / middleware 1218 can provide various graphic user interface (GUI) functions, high-level resource management, high-level positioning
[0109] The applications 1220 include built-in applications 1240 and / or third-party applications 1242. Representative built-in applications 1240 can include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and / or a game application. The third-party applications 1242 can include any of the built-in applications 1240 and a vast variety of other applications. In a specific example, the third-party applications 1242 can include a third-party mobile software development kit (SDK) application that can be used by a third-party application developer to develop a third-party application for the platform. TM or an iOS TM software development kit (SDK) developed by an entity other than the particular platform vendor. TMAndroid TM , Mobile software running on a mobile operating system such as a phone or other mobile operating system. In this example, the third-party application 1242 can call API call 1224 provided by the mobile operating system, such as operating system 1214, to achieve the functions described herein.
[0110] In some aspects, the application 1220 includes MSM 1260 and DSM 1262, which can be combined with Figures 1 to 11 Any MSM and DSM discussed (such as MSM 128 and DSM 122) are the same (and perform the same functions as them).
[0111] The application 1220 can utilize built-in operating system functions (e.g., kernel 1228, server 1230, and / or driver 1232), libraries (e.g., system library 1234, API library 1236, and other libraries 1238), and framework / middleware 1218 to create a user interface for interacting with the user of the system. Optionally or additionally, in some systems, interaction with the user can be achieved through a presentation layer such as presentation layer 1244. In these systems, the application / module "logic" can be separated from the various aspects of the application / module that the user interacts with.
[0112] Some software architectures use virtual machines. Figure 12 In the example, virtual machine 1248 is used for illustration. The virtual machine creates a software environment in which applications / modules run as if they were running on a hardware machine (e.g., ...). Figure 13 The computing device 1300 shown). Virtual machine 1248 is powered by the host operating system ( Figure 12 The host operating system 1214 runs within the virtual machine 1248, which typically (but not always) has a virtual machine monitor 1246. The virtual machine monitor 1246 manages the operation of the virtual machine 1248 and its interaction with the host operating system (i.e., operating system 1214). The software architecture 1202 runs within the virtual machine 1248, including components such as operating system 1250, libraries 1252, frameworks / middleware 1254, applications 1256, and / or presentation layer 1258. These layers of the software architecture running within the virtual machine 1248 may be the same as or different from the corresponding layers previously described.
[0113] Figure 13 Block diagrams of circuits for implementing algorithms and execution methods are shown, illustrating some exemplary embodiments. Not all components need to be used in all embodiments. For example, clients, servers, and cloud-based network devices may each use a different set of components, or, in the case of a server, a larger storage device may be used.
[0114] One exemplary computing device in the form of a computer 1300 (also referred to as computing device 1300, computer system 1300, or computer 1300) can include a processor 1305, memory 1310, removable storage 1315, non-removable storage 1320, input interface 1325, output interface 1330, and communication interface 1335, all in communication with each other through a bus 1340. Although the exemplary computing device is illustrated and described as the computer 1300, the computing device can take different forms in different embodiments.
[0115] The memory 1310 can include volatile memory 1345 and non-volatile memory 1350, and can store programs 1355. The computer 1300 can include or access a computing environment. The computing environment includes various computer-readable media, such as the volatile memory 1345 and the non-volatile memory 1350, the removable storage 1315, and the non-removable storage 1320. Computer storage includes random access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disc read-only memory (CD ROM), digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tapes, magnetic disk storage or other magnetic storage devices, or any other medium capable of storing computer-readable instructions.
[0116] Computer-readable instructions stored on a computer-readable medium (e.g., the program 1355 stored in the memory 1310) can be executed by the processor 1305 of the computer 1300. Hard drives, CD-ROMs, and RAM are some examples of non-transitory computer-readable media that include components that are tangible. The terms "computer-readable medium" and "storage device" do not encompass transitory carriers. "Computer-readable non-transitory medium" includes all types of computer-readable media, including magnetic storage media, optical storage media, flash memory devices, and solid-state drives. It will be appreciated that software can be installed in a computer and sold with it. Alternatively, the software can be obtained and loaded into the computer, including by obtaining the software through physical medium or a distribution system, such as including obtaining the software from a server owned by the software creator or a server used by the software creator, such as a server on the Internet. For example, the software can be stored on a server for distribution over the Internet. The terms "computer-readable medium" and "machine-readable medium" are used interchangeably herein.
[0117] The program 1355 can utilize one or more modules discussed herein, such as the MSM 1360 and the DSM 1365. The MSM 1360 and the DSM 1365 can be identical to (and perform identical functions as) any MSM and DSM discussed in connection with Figures 1 to 11 the MSM 128 and the DSM 122.
[0118] In an example embodiment, the computer 1300 includes means for retrieving application data from one of the plurality of computing devices, the application data including an application identification (ID) and a first application version number of an application running on the computing device. The computer 1300 also includes means for updating a first database table using object type information associated with the application ID and the first application version number, the object type information identifying a database table schema of a data object used by the application and a plurality of data fields of the data object. The computer 1300 also includes means for synchronizing the data object using synchronization data of the plurality of data fields received from the second computing device to generate a synchronized data object. The computer 1300 also includes means for receiving a second application version number from a second computing device, the second application version number associated with the application running on the second computing device in response to a notification of the synchronized data object sent to the second computing device. The computer 1300 also includes means for selecting one or more data fields of the plurality of data fields of the synchronized data object based on the second application version number and means for sending data of the one or more data fields of the plurality of data fields to the third computing device for synchronization. In some embodiments, the computer 1300 can include other or additional modules whose functionality can be combined with the functionality described herein or implemented by other modules. Moreover, any of the methods described herein can be wholly or partly implemented automatically, in response to manual instructions, or any combination thereof.
[0119] Any one or more of the modules described herein can be implemented using hardware (e.g., a processor of a machine, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or any combination thereof), or any suitable combination of hardware and software. Moreover, any two or more of these modules can be combined into a single module, and the functions of any single module can be subdivided among multiple modules. In addition, in various example embodiments, modules described herein as being implemented within a single machine, database, or device can be distributed across multiple machines, databases, or devices.
[0120] Although a few embodiments have been described in detail above, other modifications are possible. For example, the logic flows depicted in the figures do not require the particular order shown, or sequential execution of steps, to achieve desirable results. Other steps can be provided, or steps can be eliminated, from the described flows, and other components can be added to, or removed from, the described systems. Other embodiments can be within the scope of the following claims.
[0121] It should also be understood that software, including one or more computer-executable instructions, can be installed on one or more computing devices consistent with the present application and can be sold or otherwise distributed with the one or more computing devices, the one or more computer-executable instructions facilitating the processes and operations described above with respect to any or all of the steps of the present application. Alternatively, the software can be obtained and loaded into one or more computing devices, including by being obtained from a physical medium or a distribution system, such as from a server owned by the software creator or from a server used by the software creator, such as from the Internet. For example, the software can be stored on a server for distribution over the Internet.
[0122] Furthermore, those skilled in the art will recognize that the present application is not limited to the details of construction and arrangement of components illustrated in the accompanying drawings and described in the detailed description below. The application is capable of other embodiments or of being practiced or carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including," "comprising," or "having" and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless otherwise defined, all terms used in connection with the present application, including technical and scientific terms, have the meanings that are commonly understood by one of ordinary skill in the art to which this application belongs. The meanings of the terms will be apparent from the context of their use in the specification and claims. It should also be understood that the use of the terms first, second, etc. are used to indicate different components that can perform the same or similar functions. For example, a first component can be designated or described substantially the same as a second component, but the first component can be implemented before the second component or after the second component. Additionally, the use of the terms top, bottom, up, down, etc. are used in connection with the orientation as shown in the figures and are used for purposes of illustration and discussion, and are not otherwise limiting.
[0123] Components of the illustrative devices, systems and methods employed by the illustrated embodiments can be implemented, at least partially, in digital electronic circuitry, analog electronic circuitry, or computer hardware, firmware, software, or combinations thereof. These components can be implemented as a computer program product, e.g., a computer program tangibly embodied in an information carrier or a machine-readable storage device, for execution by a programmable processor, a computer or multiple computers, or the like.
[0124] A computer program can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed on one or more computers at a site, or distributed across multiple sites and interconnected by a communication network. Furthermore, the functional programs, codes, and code segments for implementing the described techniques can be readily understood by those skilled in the art to which the described techniques pertain. The method steps associated with the illustrative embodiments described herein can be performed by one or more programmable processors executing a computer program, code, or instructions to perform functions (e.g., by operating on input data and / or generating output). Method steps can also be performed by, and apparatus for performing the described methods can be implemented as, special purpose logic circuitry, e.g., an FPGA (field-programmable gate array) or an ASIC (application-specific integrated circuit).
[0125] The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein can be implemented or performed by a general purpose processor, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor can be a microprocessor, but in the alternative, the processor can be any conventional processor, controller, microcontroller, or state machine. A processor can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
[0126] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data and instructions from or to, or in
[0127] Those skilled in the art will appreciate that information and signals can be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that can be referenced throughout the above description can be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0128] As used herein, a "machine-readable medium" (or "computer-readable medium") is a device able to store instructions and data temporarily or permanently and can include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., Erasable Programmable Read-Only Memory (EEPROM)) and / or any suitable combination thereof. The term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions that are executed by one or more processors 1305, so that the instructions are executed by the one or more processors 1305, causing the one or more processors 1305 to perform any one or more of the methodologies described herein. The term "machine-readable medium" shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions for execution by one or more processors 1305 such that the instructions, when executed by the one or more processors 1305, cause the one or more processors 1305 to perform any one or more of the methodologies described herein. Accordingly, a "machine-readable medium" is a single storage device or article of manufacture or a "cloud" based storage system or storage network that includes multiple storage devices or articles of manufacture. The term "machine-readable medium" encompasses non-signal media only. The terms "machine-readable medium" and "computer-readable medium" do not include waves, e.g., those used in radio or broadcast, communica tions.
[0129] Also, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate can be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as separate from each other or from the items in other figures can or can not be separate from each other or from items in other figures. The various embodiments can be implemented in hardware, software, or both hardware and software, and can be implemented. Also, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as taking place in a particular spatial or temporal order can be adapted or
[0130] While the present application has been described with reference to specific features and embodiments thereof, it is evident that various modifications and combinations can be made thereto without departing from the spirit and scope of the application. For example, other components can be added or removed from the system. The specification and drawings are, accordingly, to be regarded simply as an illustration of the underlying application, and are contemplated to cover any and all modifications, variations, combinations or equivalents that fall within the scope of the present application. Other aspects will become apparent from consideration of the specification and drawings.
Claims
1. A computer-implemented method for performing data deduplication in a communication network, characterized in that, The method comprises: applying a cryptographic hash function to data to generate a fingerprint of the data; storing an address mapping table entry in a first table that maps a logical block address (LBA) of a logical unit number (LUN) assigned to the data to a physical block address (PBA) of a storage location at which the data is persistently stored; storing the fingerprint as a key and a location token of the data as a value in a key-value entry in a second table, the location token comprising the LBA and the PBA of the storage location; in response to detecting that an additional key-value entry in the second table comprises the fingerprint: modifying the value in the key-value entry in the second table to comprise an additional location token in the additional key-value entry, the additional location token being associated with a second LBA and a second PBA of a second storage location at which the data is persistently stored; retrieving the data from the storage location using the LBA based on detecting that the additional key-value entry in the second table comprises the fingerprint; storing the fingerprint as a key and the retrieved data as a value in a key-value entry in a third table; re-mapping the second LBA in a second address mapping table entry in the first table from the second PBA to the fingerprint.
2. The computer-implemented method of claim 1, wherein, The third table is a fingerprint table, the method further comprising: sending a fingerprint purge request to a plurality of network nodes in the communication network; in response to the fingerprint purge request, receiving currently used fingerprints from the plurality of network nodes; based on the currently used fingerprints and based on a list of fingerprints stored in one or more fingerprint tables associated with each of the plurality of network nodes, generating a list of outdated fingerprints; wherein the currently used fingerprints are fingerprints used by the plurality of network nodes prior to sending the fingerprint purge request.
3. The computer-implemented method of claim 2, wherein, Further comprising: in response to the fingerprint purge request, receiving newly referenced fingerprints from the plurality of network nodes; wherein the newly referenced fingerprints are fingerprints used by the plurality of network nodes after sending the fingerprint purge request.
4. The computer-implemented method of claim 3, wherein, The currently used fingerprints and the newly referenced fingerprints are generated based on a membership check data structure of each of the plurality of network nodes.
5. The computer-implemented method of claim 3, wherein, Further comprising: based on the list of outdated fingerprints and the list of newly referenced fingerprints, generating a list of to-be-deleted (TBD) fingerprints; based on the list of TBD fingerprints, updating the fingerprint table.
6. The computer-implemented method of claim 1, wherein, Further comprising: verifying that the second LBA maps to the second PBA and verifying that the second PBA of the second storage location is associated with the data; upon successful verification, re-mapping the second LBA in the first table to map to the fingerprint.
7. The computer-implemented method of claim 1, wherein, Further comprising: scanning a plurality of address mapping table entries in the first table, the plurality of address mapping table entries including the second address mapping table entry, the second address mapping table entry including the second LBA and the second PBA; based on detecting during the scanning that the second LBA does not map to the second PBA, performing garbage collection on the data persistently stored in the second storage location.
8. The computer-implemented method of claim 1, wherein, The LBA is located within one of a plurality of logical address slices of an address space, the address space being allocated among a plurality of network nodes in the communication network, and the method further comprises: applying the cryptographic hash function to the LBA and an identification ID of the LUN to determine a first hash; based on the first hash, selecting a first network node of the plurality of network nodes, the first network node storing the first table.
9. The computer-implemented method of claim 8, wherein, Also included are: applying the cryptographic hash function to the fingerprint to determine a second hash; based on the second hash, selecting a second network node of the plurality of network nodes, the second network node storing the second table.
10. A system for performing data deduplication in a communication network, the system comprising: The system includes: a memory to store instructions; one or more processors in communication with the memory, wherein the one or more processors execute the instructions to perform the following operations: applying a cryptographic hash function to data to generate a fingerprint of the data; storing an address mapping table entry in a first table, the address mapping table entry mapping a logical block address LBA of a logical unit number LUN assigned to the data to a physical block address PBA of a storage location at which the data is persistently stored; storing the fingerprint as a key and a location token of the data as a value in a key-value entry in a second table, the location token including the LBA and the PBA of the storage location; in response to detecting that an additional key-value entry in the second table includes the fingerprint: modifying the value in the key-value entry in the second table to include an additional location token in the additional key-value entry, the additional location token being associated with a second LBA and a second PBA of a second storage location at which the data is persistently stored; based on detecting that the additional key-value entry in the second table includes the fingerprint, retrieving the data from the storage location using the LBA; remapping the second LBA in a second address mapping table entry in the first table from the second PBA to the fingerprint.
11. The system of claim 10, wherein, The one or more processors execute the instructions to perform the following operations: storing the fingerprint as a key and retrieved data as a value in a key-value entry in a third table.
12. The system of claim 10, wherein, The one or more processors execute the instructions to perform the following operations: during a first verification, verifying that the second LBA maps to the second PBA; during a second verification, verifying that the second PBA of the second storage location is associated with the data.
13. The system of claim 12, wherein, The one or more processors execute the instructions to perform the following operations: based on the first verification and the second verification, remapping the second LBA in the first table to map to the fingerprint.
14. The system of claim 10, wherein, The one or more processors execute the instructions to perform the following operations: scanning a plurality of address mapping table entries in the first table, the plurality of address mapping table entries including the second address mapping table entry, the second address mapping table entry including the second LBA and the second PBA; based on detecting that the second LBA is unmapped from the second PBA during the scan, performing garbage collection on the data persistently stored in the second storage location.
15. A computer-readable medium storing computer instructions for performing data deduplication in a communication network, the method comprising: The instructions, when executed by one or more processors of one of the plurality of computing devices, cause the one or more processors to perform operations comprising: applying a cryptographic hash function to data to generate a fingerprint of the data; storing an address mapping table entry in a first table that maps a logical block address (LBA) of a logical unit number (LUN) assigned to the data to a physical block address (PBA) of a storage location at which the data is persistently stored; storing the fingerprint as a key and a location token of the data as a value in a key-value item in a second table, the location token including the LBA and the PBA of the storage location; in response to detecting that an additional key-value item in the second table includes the fingerprint: modifying the value in the key-value item in the second table to include an additional location token in the additional key-value item, the additional location token associated with a second LBA and a second PBA of a second storage location at which the data is persistently stored; based on detecting that the additional key-value item in the second table includes the fingerprint, retrieving the data from the storage location using the LBA; remapping the second LBA from the second PBA to the fingerprint in a second address mapping table entry in the first table.
16. The computer readable medium of claim 15, wherein, The LBA is within one of a plurality of logical address slices of an address space that is allocated among a plurality of network nodes in the communication network.
17. The computer readable medium of claim 16, wherein, The instructions, when executed by the one or more processors, cause the one or more processors to perform operations comprising: applying the cryptographic hash function to the LBA and an identification (ID) of the LUN to determine a first hash; based on the first hash, selecting a first network node of the plurality of network nodes, the first network node storing the first table.
18. The computer readable medium of claim 17, wherein, The instructions, when executed by the one or more processors, cause the one or more processors to perform operations comprising: applying the cryptographic hash function to the fingerprint to determine a second hash; based on the second hash, selecting a second network node of the plurality of network nodes, the second network node storing the second table.
Citation Information
Patent Citations
Nonvolatile memory device and related deduplication method
US20140281361A1