IP Library › Granted Patent US 7,882,064
Granted Patent B2
US 7,882,064 · App. 11/483,131 · Granted Feb 1, 2011

File system replication

Assignee: EMC Corporation
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 7,882,064
App. No.
11/483,131
Filed
Jul 6, 2006
Granted
Feb 1, 2011
Kind
B2
Art Unit
2159
USPC
707/201
Abstract

File system replication includes determining whether one of a plurality of files included in an original file system has been updated since a previous replication, the file having a plurality of data segments, and in the event that the file has been updated, locating among the plurality of data segments a previously stored data segment that is newly referenced by the file, and that does not require replication.

Claims (52)

1. A method of file system replication comprising:

determining using a processor whether one of a plurality of files included in an original file system has been updated since a previous replication, including comparing a current content handle associated with the file at current time and a previous content handle associated with the file at an earlier time, wherein:

each content handle is derived based at least in part on a multi-layered hierarchical representation of the file;

the multi-layered hierarchical representation includes a bottom layer that includes a plurality of bottom layer nodes that corresponds to a plurality of data segments included in the file, and a second layer that includes a plurality of second layer nodes each being derived based at least in part on some of the bottom layer nodes;

each content handle is derived based on one or more nodes in the hierarchical representation of the file that are included in a layer other than the bottom layer; and

in the event that the file has been updated, locating among the plurality of data segments a previously not stored data segment; replicating the previously not stored data segment; and locating among the plurality of data segments a previously stored data segment that is newly referenced by the file, wherein locating the previously stored data segment is based at least in part on at least some of the plurality of data segment references, and the previously stored data segment is not replicated.

2. A method as recited in claim 1 , wherein in the event that the file has been updated, the method further comprises updating metadata associated with the file on the replicated file system.

3. A method as recited in claim 1 , wherein in the event that the file has been updated, the method further comprises determining an updated portion of metadata associated with the file, and replicating the updated portion of metadata on the replicated file system.

4. A method as recited in claim 1 , wherein in the event that the file has been updated, the method further comprises replicating a data segment reference associated with the file on the replicated file system.

5. A method as recited in claim 4 , wherein the data segment reference is determined based at least in part on a content handle associated with the file.

6. A method as recited in claim 1 , wherein in the event that the file has been updated, the method further comprises determining a data segment reference that has been updated, and replicating the updated data segment reference.

7. A method as recited in claim 1 , wherein determining whether the file has been updated includes processing a log record.

8. A method as recited in claim 1 , wherein at least one of the previous content handle and the current content handle is stored in a log record.

9. A method as recited in claim 1 , wherein at least one of the previous content handle and the current content handle is stored in a file system snapshot.

10. A method as recited in claim 1 , wherein at least one of the previous content handle and the current content handle is stored in the original file system.

11. A method as recited in claim 1 , wherein at least one of the previous content handle and the current content handle is stored in the replicated file system.

12. A method as recited in claim 1 , wherein determining whether the file has been updated includes performing a file system walk.

13. A method as recited in claim 1 , wherein determining whether the file has been updated includes comparing a plurality of snapshots.

14. A method as recited in claim 1 , wherein determining whether the file has been updated includes comparing a plurality of snapshots of the original file system.

15. A method as recited in claim 1 , wherein determining whether the file has been updated includes comparing a plurality of snapshots of the file.

16. A method as recited in claim 1 , wherein locating the previously stored data segment includes looking up at least some of the plurality of data segment references on the replicated file system.

17. A method as recited in claim 1 , wherein locating the previously stored data segment includes looking up at least some of the plurality of data segment references on the original file system.

18. A method as recited in claim 1 , wherein locating the previously not replicated data segment is at least in part based on the current content handle associated with the file.

19. A method as recited in claim 18 , wherein locating the previously not stored data segment based at least in part on the current content handle includes dereferencing the content handle to obtain a plurality of data segment references, and determining whether each of the plurality of data segment references corresponds to a stored data segment that has been previously stored on the replicated file system.

20. A method as recited in claim 18 , wherein locating the previously not stored data segment is further based at least in part on the previous content handle.

21. A method as recited in claim 20 , wherein locating the previously not stored data segment further includes:

dereferencing the current content handle to obtain a plurality of recent data segment references associated with the recent version of the file; and

dereferencing the previous content handles to obtain a plurality of previous data segment references associated with the earlier version of the file; and

determining a difference between the plurality of current data segment references and the plurality of previous data segment references.

22. A method as recited in claim 21 , wherein locating the previously not stored data segment includes determining whether the previous content handle has been stored on the replicated file system.

23. A method as recited in claim 22 , further comprising, in the event that the previous content handle has not been stored on the replicated file system, dereferencing the current content handle to obtain a plurality of recent data segment references associated with the current version of the file.

24. A method as recited in claim 1 , further comprising:

prior to replicating the previously not stored data segment, preventing the previously not stored data segment from being deleted during garbage collection before the previously not stored data segment is replicated on the replicated file system.

25. A method as recited in claim 24 , further comprising maintaining a log record that maintains a reference to the previously not stored data segment.

26. A method as recited in claim 24 , further comprising keeping a reference count of the previously stored data segment to be greater than zero at least until the previously not stored data segment is replicated.

27. A method as recited in claim 24 , further comprising creating a place holder in the original file system to maintain a reference to the previously not stored data segment.

28. A method as recited in claim 1 , further comprising initializing the replicated file system by copying the original file system.

29. A method as recited in claim 1 , further comprising initializing the replicated file system by copying data segments that are included in the original file system.

30. A file system replicator comprising:

a processor configured to:

determine whether one of a plurality of files included in an original file system has been updated since a previous replication, including comparing a current content handle associated with the file at current time and a previous content handle associated with the file at an earlier time, wherein:

each content handle is derived based at least in part on a multi-layered hierarchical representation of the file;

the multi-layered hierarchical representation includes a bottom layer that includes a plurality of bottom layer nodes that corresponds to a plurality of data segments included in the file, and a second layer that includes a plurality of second layer nodes each being derived based at least in part on some of the bottom layer nodes;

each content handle is derived based on one or more nodes in the hierarchical representation of the file that are included in a layer other than the bottom layer; and

in the event that the file has been updated, locate among the plurality of data segments a previously not stored data segment; replicate the previously not stored data segment; and locate among the plurality of data segments a previously stored data segment that is newly referenced by the file, wherein locating the previously stored data segment is based at least in part on at least some of the plurality of data segment references, and the previously stored data segment is not replicated; and

a memory coupled to the processor, configured to provide the processor with instructions.

31. A computer program product for file system replication, the computer program product being stored and/or recorded in a computer readable storage medium and comprising computer instructions for:

determining using a processor whether one of a plurality of files included in an original file system has been updated since a previous replication, including comparing a current content handle associated with the file at current time and a previous content handle associated with the file at an earlier time, wherein:

each content handle is derived based at least in part on a multi-layered hierarchical representation of the file;

the multi-layered hierarchical representation includes a bottom layer that includes a plurality of bottom layer nodes that corresponds to a plurality of data segments included in the file, and a second layer that includes a plurality of second layer nodes each being derived based at least in part on some of the bottom layer nodes;

each content handle is derived based on one or more nodes in the hierarchical representation of the file that are included in a layer other than the bottom layer; and

in the event that the file has been updated, locating among the plurality of data segments a previously not stored data segment; replicating the previously not stored data segment; and locating among the plurality of data segments a previously stored data segment that is newly referenced by the file, wherein locating the previously stored data segment is based at least in part on at least some of the plurality of data segment references, and the previously stored data segment is not replicated.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2010
From: DATA DOMAIN HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 024061/0930 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2010
From: DATA DOMAIN LLC
To: DATA DOMAIN HOLDING, INC.
Reel/Frame 024013/0215 →
CONVERSION Recorded Feb 25, 2010
From: DATA DOMAIN, INC.
To: DATA DOMAIN LLC
Reel/Frame 023994/0147 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2006
From: LEE, EDWARD K.; ZHU, MING BENJAMIN; MAHESHWARI, UMESH; PATTERSON, R. HUGO
To: DATA DOMAIN, INC.
Reel/Frame 018302/0544 →
Continuity (1)
Related Publication 20080010322A1 · Jan 10, 2008