IP Library Granted Patent US 8,200,632
Granted Patent B2
US 8,200,632 · App. 13/007,498 · Granted Jun 12, 2012

Systems and methods for adaptive copy on write

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 8,200,632
App. No.
13/007,498
Granted
Jun 12, 2012
Kind
B2
Abstract

In one embodiment, a user or client device communicates with a distributed file system comprised of one or more physical nodes. The data on each of the physical nodes store metadata about files and directories within the file system. Some of the embodiments permit a user to take a snapshot of data stored on the file system. The snapshot may include a single file, a single directory, a plurality of files within a directory, a plurality of directories, a path on the file system that includes nested files and subdirectories, or more than one path on the file system that each includes nested files and directories. In some embodiments, systems and methods intelligently choose whether to use copy-on-write or point-in-time copy when saving data in a snapshot version of a file whose current version is being overwritten. In some embodiments, systems and methods allow snapshot users to return from a snapshot directory to the immediate parent directory from which the user entered into the snapshot.

Claims (46)

1. A processor-implemented method of determining whether to use Copy-On-Write (COW) or Point-In-Time-Copy (PITC) for storing multiple versions of at least a portion of a file, the computer-implemented method comprising:

receiving a request to modify at least a portion of a file;

determining, via execution of instructions by a processor, whether to perform a Point-In-Time-Copy operation, the determining whether to perform a Point-In-Time-Copy operation comprising:

determining whether the request to modify at least a portion of the file corresponds to at least one of a request to delete the file and a request to overwrite the file in its entirety;

if it is determined that the request to modify corresponds to a request to delete the file or to overwrite the file in its entirety, determining whether any blocks of the file have already had a Copy-On-Write operation performed on them; and

if it is determined that none of the blocks of the file have already had a Copy-On-Write operation performed on them, concluding that a Point-In-Time-Copy operation may be performed on the portion of the file; and

if it is determined to perform a Point-In-Time-Copy, performing a Point-In-Time Copy operation on the portion of the file; and

if it is determined not to perform a Point-In-Time-Copy, performing a Copy-On-Write operation on the portion of the file.

2. The processor-implemented method of claim 1 , wherein determining whether to perform a Point-In-Time-Copy operation additionally comprises determining whether one or more additional conditions for performing a Point-In-Time-Copy operation are satisfied.

3. The processor-implemented method of claim 1 , wherein performing the Point-In-Time-Copy operation comprises allocating a new data block assigned to the current version of the file, transferring a corresponding data block from the current version of the file to a previous version of the file, and overwriting the new data block with a modified portion of the file.

4. The processor-implemented method of claim 1 , wherein performing the Copy-On-Write operation comprises allocating a new data block assigned to the previous version of the file, reading a value from a corresponding data block from the current version of the file, writing the value to the new data block, and overwriting the corresponding data block from the current version of the file with a modified portion of the file.

5. The processor-implemented method of claim 1 , wherein determining whether to perform a Point-In-Time-Copy additionally comprises determining at least one of the following: whether an entire cluster of contiguous blocks is being deleted, or whether an entire cluster of contiguous blocks is being overwritten.

6. The processor-implemented method of claim 5 , wherein the number of contiguous blocks is sixteen.

7. The processor-implemented method of claim 1 , wherein determining whether to perform a Point-In-Time-Copy additionally comprises determining whether performing a Point-In-Time-Copy operation would fragment the current version of the file.

8. The processor-implemented method of claim 1 , wherein determining whether to perform a Point-In-Time-Copy additionally comprises:

if the portion of the file is a contiguous portion of the file, determining whether the contiguous portion is being entirely deleted or overwritten;

if the contiguous portion is being entirely deleted or overwritten, determining whether any blocks of the contiguous portion have already had a Copy-On-Write operation performed on them; and

if none of the blocks of the contiguous portion have already had a Copy-On-Write operation performed on them, concluding that a Point-In-Time-Copy operation may be performed on the contiguous portion.

9. The processor-implemented method of claim 8 , wherein the contiguous portion is a sixteen block cluster.

10. A non-transitory computer-readable storage medium having instructions stored thereon for determining, when the instructions are executed, whether to use Copy-On-Write (COW) or Point-In-Time-Copy (PITC) for storing multiple versions of at least a portion of a file, the instructions comprising:

receiving a request to modify at least a portion of a file;

determining whether to perform a Point-In-Time-Copy operation, the determining whether to perform a Point-In-Time-Copy operation comprising:

determining whether the request to modify at least a portion of the file corresponds to at least one of a request to delete the file and a request to overwrite the file in its entirety;

if it is determined that the request to modify corresponds to a request to delete the file or to overwrite the file in its entirety, determining whether any blocks of the file have already had a Copy-On-Write operation performed on them; and

if it is determined that none of the blocks of the file have already had a Copy-On-Write operation performed on them, concluding that a Point-In-Time-Copy operation may be performed on the portion of the file; and

if it is determined to perform a Point-In-Time-Copy, performing a Point-In-Time Copy operation on the portion of the file; and

if it is determined not to perform a Point-In-Time-Copy, performing a Copy-On-Write operation on the portion of the file.

11. The non-transitory computer-readable storage medium of claim 10 , wherein determining whether to perform a Point-In-Time-Copy operation additionally comprises determining whether one or more additional conditions for performing a Point-In-Time-Copy operation are satisfied.

12. The non-transitory computer-readable storage medium of claim 10 , wherein performing the Point-In-Time-Copy operation comprises allocating a new data block assigned to the current version of the file, transferring a corresponding data block from the current version of the file to a previous version of the file, and overwriting the new data block with a modified portion of the file.

13. The non-transitory computer-readable storage medium of claim 10 , wherein performing the Copy-On-Write operation comprises allocating a new data block assigned to the previous version of the file, reading a value from a corresponding data block from the current version of the file, writing the value to the new data block, and overwriting the corresponding data block from the current version of the file with a modified portion of the file.

14. A storage module having instructions stored thereon for determining, when the instructions are executed, whether to use Copy-On-Write (COW) or Point-In-Time-Copy (PITC) for storing multiple versions of at least a portion of a file, the storage module comprising:

a computer-readable medium having instructions stored thereon;

a processor capable of executing the instructions; and

a memory system for storing a copy of at least a portion of a file according to the instructions executed on the processor;

wherein the instructions comprise:

receiving a request to modify at least a portion of a file;

determining whether to perform a Point-In-Time-Copy operation, the determining whether to perform a Point-In-Time-Copy operation comprising:

determining whether the request to modify at least a portion of the file corresponds to at least one of a request to delete the file and a request to overwrite the file in its entirety;

if it is determined that the request to modify corresponds to a request to delete the file or to overwrite the file in its entirety, determining whether any blocks of the file have already had a Copy-On-Write operation performed on them; and

if it is determined that none of the blocks of the file have already had a Copy-On-Write operation performed on them, concluding that a Point-In-Time-Copy operation may be performed on the portion of the file; and

if it is determined to perform a Point-In-Time-Copy, performing a Point-In-Time Copy operation on the portion of the file; and

if it is determined not to perform a Point-In-Time-Copy, performing a Copy-On-Write operation on the portion of the file.

15. The storage module of claim 14 , wherein determining whether to perform a Point-In-Time-Copy operation additionally comprises determining whether one or more additional conditions for performing a Point-In-Time-Copy operation are satisfied.

16. The storage module of claim 14 , wherein performing the Point-In-Time-Copy operation comprises allocating a new data block assigned to the current version of the file, transferring a corresponding data block from the current version of the file to a previous version of the file, and overwriting the new data block with a modified portion of the file.

17. The storage module of claim 14 , wherein performing the Copy-On-Write operation comprises allocating a new data block assigned to the previous version of the file, reading a value from a corresponding data block from the current version of the file, writing the value to the new data block, and overwriting the corresponding data block from the current version of the file with a modified portion of the file.

18. The storage module of claim 14 , wherein determining whether to perform a Point-In-Time-Copy additionally comprises determining at least one of the following: whether an entire cluster of contiguous blocks is being deleted, or whether an entire cluster of contiguous blocks is being overwritten.

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 →
MERGER Recorded May 12, 2011
From: ISILON SYSTEMS, INC.
To: ISILON SYSTEMS LLC
Reel/Frame 026268/0232 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2011
From: IVY HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 026267/0562 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2011
From: ISILON SYSTEMS LLC
To: IVY HOLDING, INC.
Reel/Frame 026267/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2011
From: SCHACK, DARREN P.; LEMAR, ERIC M.; FACHAN, NEAL T.
To: ISILON SYSTEMS, INC.
Reel/Frame 026260/0395 →