IP Library Granted Patent US 11,163,748
Granted Patent B1
US 11,163,748 · App. 15/798,540 · Granted Nov 2, 2021

Fingerprint backward compatibility in deduplication backup systems

Inventors: Shuai Cheng (Beijing, CN); Xianbo Zhang (Plymouth, MN); Cheng Shan (Beijing, CN); Chunzhong Zhang (Beijing, CN); Jinchang Zhang (Beijing, CN); Wen Feng Jiang (Beijing, CN); Dongxu Sun (Beijing, CN); Xinbao Jin (Beijing, CN)
Assignee: Veritas Technologies LLC
G06F16/2365G06F16/213H04L9/0643
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,163,748
App. No.
15/798,540
Granted
Nov 2, 2021
Kind
B1
Abstract

Disclosed herein are methods, systems, and processes to optimize and manage fingerprint backward compatibility in deduplication backup computing systems. A new fingerprint is generated for a segment object stored in a data container based on a new fingerprinting process. A header file is modified by replacing an old fingerprint for the segment object based on an old fingerprinting process with the new fingerprint. An entry including information indicating an association between the old fingerprint and the new fingerprint is created in a fingerprint map file.

Claims (190)

1. A computer-implemented method comprising:

receiving a backup request from a client computing device, wherein

the backup request comprises

a segment object comprising backup data,

a determination has been made that the client computing device was previously configured to use an existing fingerprinting process and is now configured to use a new fingerprinting process, and

the backup request is received after the client computing device has been configured to utilize the new fingerprinting process;

determining whether an existing fingerprint has been generated for the segment object, wherein

the segment object is stored in a data container, and

the data container comprises a header file;

in response to a determination that the existing fingerprint has not been generated for the segment object,

generating the existing fingerprint, wherein

the existing fingerprint is stored in the header file of the data container,

the existing fingerprint is generated for the segment object by the existing fingerprinting process, and

the existing fingerprinting process uses a first fingerprinting algorithm to generate the existing fingerprint;

generating a new fingerprint for the segment object, wherein

the new fingerprint is generated for the segment object by a new fingerprinting process, and

the new fingerprinting process uses a second fingerprinting algorithm to generate the new fingerprint;

in response to a determination that the existing fingerprint has been generated for the segment object,

replacing the existing fingerprint in the header file of the data container by deleting the existing fingerprint in the header file of the data container and adding the new fingerprint to the header file of the data container; and

creating an entry in a fingerprint map file, wherein

the entry indicates an association between the existing fingerprint and the new fingerprint by virtue of comprising information regarding the existing fingerprint and information regarding the new fingerprint.

2. The computer-implemented method of claim 1 , further comprising:

receiving a request for one or more data segments, wherein

the one or more data segments are part of a data object, and

the data object references the existing fingerprint; and

searching the fingerprint map file to locate the one or more data segments in a deduplicated backup storage device.

3. The computer-implemented method of claim 1 , wherein

the data container comprises

a data file associated with the segment object, and

the fingerprint map file.

4. The computer-implemented method of claim 2 , wherein

the data object is part of a backup image or a previous backup image, and

the backup image, the previous backup image, and the data container are stored in the deduplicated backup storage device.

5. The computer-implemented method of claim 4 , further comprising:

determining that a deduplication server comprises one or more binaries that support the new fingerprinting process; and

converting one or more data containers storing the one or more data segments from the existing fingerprint to the new fingerprint.

6. The computer-implemented method of claim 5 , further comprising:

receiving a backup request from an old client computing device, wherein

the old client computing device is configured to use the existing fingerprinting process, and

the backup request comprises at least one data segment that references a fingerprint generated using the existing fingerprinting process;

generating another fingerprint for the at least one data segment based on the new fingerprinting process;

searching for the another fingerprint in a fingerprint indexing cache;

inhibiting inclusion of the at least one data segment in the backup request if the another fingerprint is found in the fingerprint indexing cache; and

including the at least one data segment in the backup request if the another fingerprint is not found in the fingerprint indexing cache.

7. The computer-implemented method of claim 1 , further comprising;

determining that a new client computing device previously configured to use the existing fingerprinting process has been configured to use the new fingerprinting process;

receiving another backup request from the new client computing device, wherein

the another backup request comprises at least another data segment, and

the another backup request is received after the new client computing device has been configured to utilize the new fingerprinting process;

generating a first fingerprint for the at least another data segment based on the existing fingerprinting process; and

generating a second fingerprint for the at least another data segment based on the new fingerprinting process.

8. The computer-implemented method of claim 7 , further comprising:

performing a deduplication operation, wherein

the backup data is part of a backup image or a previous backup image,

the deduplication operation is performed using the first fingerprint,

the first fingerprint locates one or more redundant data blocks in the at least another data segment in a last backup image cache, and

the last backup image cache is associated with the previous backup image; and

creating another entry in the fingerprint map file, wherein

the another entry indicates another association between the first fingerprint and

the second fingerprint after completion of the another backup request.

9. The computer-implemented method of claim 8 , further comprising:

receiving a restore request to restore the backup image, wherein

the backup image comprises one or more data objects, and

the one or more data objects comprise one or more fingerprints generated using the existing fingerprinting process.

10. The computer-implemented method of claim 9 , further comprising:

accessing the fingerprint map file;

searching the fingerprint map file for the one or more fingerprints;

retrieving one or more corresponding fingerprints generated using the new fingerprinting process;

reading the one or more data objects based on the one or more corresponding fingerprints; and

restoring the one or more data objects as part of performing the restore request.

11. A non-transitory computer readable storage medium comprising program instructions executable to:

receive a backup request from a client computing device, wherein

the backup request comprises

a segment object comprising backup data,

a determination has been made that the client computing device was previously configured to use an existing fingerprinting process and is now configured to use a new fingerprinting process, and

the backup request is received after the client computing device has been configured to utilize the new fingerprinting process;

determine whether an existing fingerprint has been generated for the segment object, wherein

the segment object is stored in a data container, and

the data container comprises a header file;

in response to a determination that the existing fingerprint has not been generated for the segment object,

generate the existing fingerprint, wherein

the existing fingerprint is stored in the header file of the data container,

the existing fingerprint is generated for the segment object by the existing fingerprinting process, and

the existing fingerprinting process uses a first fingerprinting algorithm to generate the existing fingerprint;

generate a new fingerprint for the segment object, wherein

the new fingerprint is generated for the segment object by a new fingerprinting process, and

the new fingerprinting process uses a second fingerprinting algorithm to generate the new fingerprint;

in response to a determination that the existing fingerprint has been generated for the segment object,

replace the existing fingerprint in the header file of the data container by deleting the existing fingerprint in the header file of the data container and adding the new fingerprint to the header file of the data container; and

create an entry in a fingerprint map file, wherein

the entry indicates an association between the existing fingerprint and the new fingerprint by virtue of comprising information regarding the existing fingerprint and information regarding the new fingerprint.

12. The non-transitory computer readable storage medium of claim 11 , wherein the program instructions are further executable to:

receive a request for one or more data segments, wherein

the one or more data segments are part of a data object, and

the data object references the existing fingerprint; and

search the fingerprint map file to locate the one or more data segments in a deduplicated backup storage device.

13. The non-transitory computer readable storage medium of claim 12 , wherein

the data container comprises

a data file associated with the segment object, and

the fingerprint map file,

the data object is part of a backup image or a previous backup image, and

the backup image, the previous backup image, and the data container are stored in the deduplicated backup storage device.

14. The non-transitory computer readable storage medium of claim 13 , wherein the program instructions are further executable to:

determine that a deduplication server comprises one or more binaries that support the new fingerprinting process;

convert one or more data containers storing the one or more data segments from the existing fingerprint to the new fingerprint;

receive a backup request from an old client computing device, wherein

the old client computing device is configured to use the existing fingerprinting process, and

the backup request comprises at least one data segment that references a fingerprint generated using the existing fingerprinting process;

generate another fingerprint for the at least one data segment based on the new fingerprinting process;

search for the another fingerprint in a fingerprint indexing cache;

inhibit inclusion of the at least one data segment in the backup request if the another fingerprint is found in the fingerprint indexing cache; and

include the at least one data segment in the backup request if the another fingerprint is not found in the fingerprint indexing cache.

15. The non-transitory computer readable storage medium of claim 13 , wherein the program instructions are further executable to:

determine that a new client computing device previously configured to use the existing fingerprinting process has been configured to use the new fingerprinting process;

receive another backup request from the new client computing device, wherein

the another backup request comprises at least another data segment, and

the another backup request is received after the new client computing device has been configured to utilize the new fingerprinting process;

generate a first fingerprint for the at least another data segment based on the existing fingerprinting process;

generate a second fingerprint for the at least another data segment based on the new fingerprinting process;

perform a deduplication operation, wherein

the deduplication operation is performed using the first fingerprint,

the first fingerprint locates one or more redundant data blocks in the at least another data segment in a last backup image cache, and

the last backup image cache is associated with the previous backup image; and

create another entry in the fingerprint map file, wherein

the another entry indicates another association between the first fingerprint and

the second fingerprint after completion of the another backup request; and

receive a restore request to restore the backup image, wherein

the backup image comprises one or more data objects, and

the one or more data objects comprise one or more fingerprints generated using the existing fingerprinting process.

16. A system comprising:

one or more processors; and

a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to

receive a backup request from a client computing device, wherein

the backup request comprises

a segment object comprising backup data,

a determination has been made that the client computing device was previously configured to use an existing fingerprinting process and is now configured to use a new fingerprinting process, and

the backup request is received after the client computing device has been configured to utilize the new fingerprinting process,

determine whether an existing fingerprint has been generated for the segment object, wherein

the segment object is stored in a data container, and

the data container comprises a header file,

in response to a determination that the existing fingerprint has not been generated for the segment object,

generate the existing fingerprint, wherein

the existing fingerprint is stored in the header file of the data container,

the existing fingerprint is generated for the segment object by the existing fingerprinting process, and

the existing fingerprinting process uses a first fingerprinting algorithm to generate the existing fingerprint,

generate a new fingerprint for the segment object, wherein

the new fingerprint is generated for the segment object by a new fingerprinting process, and

the new fingerprinting process uses a second fingerprinting algorithm to generate the new fingerprint,

in response to a determination that the existing fingerprint has been generated for the segment object,

replace the existing fingerprint in the header file of the data container by deleting the existing fingerprint in the header file of the data container and adding the new fingerprint to the header file of the data container, and

create an entry in a fingerprint map file, wherein

the entry indicates an association between the existing fingerprint and the new fingerprint by virtue of comprising information regarding the existing fingerprint and information regarding the new fingerprint.

17. The system of claim 16 , wherein the program instructions executable by the one or more processors are further executable by the one or more processors to:

receive a request for one or more data segments, wherein

the one or more data segments are part of a data object, and

the data object references the existing fingerprint; and

search the fingerprint map file to locate the one or more data segments in a deduplicated backup storage device.

18. The system of claim 17 , wherein

the data container comprises

a data file associated with the segment object, and

the fingerprint map file,

the data object is part of a backup image or a previous backup image, and

the backup image, the previous backup image, and the data container are stored in the deduplicated backup storage device.

19. The system of claim 18 , wherein the program instructions executable by the one or more processors are further executable by the one or more processors to:

determine that a deduplication server comprises one or more binaries that support the new fingerprinting process;

convert one or more data containers storing the one or more data segments from the existing fingerprint to the new fingerprint;

receive a backup request from an old client computing device, wherein

the old client computing device is configured to use the existing fingerprinting process, and

the backup request comprises at least one data segment that references a fingerprint generated using the existing fingerprinting process;

generate another fingerprint for the at least one data segment based on the new fingerprinting process;

search for the another fingerprint in a fingerprint indexing cache;

inhibit inclusion of the at least one data segment in the backup request if the another fingerprint is found in the fingerprint indexing cache; and

include the at least one data segment in the backup request if the another fingerprint is not found in the fingerprint indexing cache.

20. The system of claim 19 , wherein the program instructions executable by the one or more processors are further executable by the one or more processors to:

determine that a new client computing device previously configured to use the existing fingerprinting process has been configured to use the new fingerprinting process;

receive another backup request from the new client computing device, wherein

the another backup request comprises at least another data segment, and

the another backup request is received after the new client computing device has been configured to utilize the new fingerprinting process;

generate a first fingerprint for the at least another data segment based on the existing fingerprinting process;

generate a second fingerprint for the at least another data segment based on the new fingerprinting process;

perform a deduplication operation, wherein

the deduplication operation is performed using the first fingerprint,

the first fingerprint locates one or more redundant data blocks in the at least another data segment in a last backup image cache, and

the last backup image cache is associated with the previous backup image; and

create another entry in the fingerprint map file, wherein

the another entry indicates another association between the first fingerprint and

the second fingerprint after completion of the another backup request; and

receive a restore request to restore the backup image, wherein

the backup image comprises one or more data objects, and

the one or more data objects comprise one or more fingerprints generated using the existing fingerprinting process.

Assignments (12)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0938 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 051594/0529 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0412 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Aug 2, 2019
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 051594/0529 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Dec 4, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 044682/0967 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 6, 2017
From: CHENG, SHUAI; ZHANG, XIANBO; SHAN, CHENG; ZHANG, CHUNZHONG; ZHANG, JINCHANG; JIANG, WEN FENG; SUN, DONGXU; JIN, XINBAO
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 044041/0390 →