IP Library Granted Patent US 9,852,140
Granted Patent B1
US 9,852,140 · App. 13/671,498 · Granted Dec 26, 2017

Efficient file replication

Inventors: Kong Li (Los Altos, CA); Robert Petri (Santa Clara, CA); Nitin Parab (Palo Alto, CA)
Assignee: AXCIENT, INC.
G06F17/30091
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 9,852,140
App. No.
13/671,498
Granted
Dec 26, 2017
Kind
B1
Abstract

Systems, methods, and media for efficient file replication are provided herein. According to some embodiments, exemplary methods may include detecting a write operation occurring within an operating system of the computing system, identifying block parameters for the write operation, as well as one or more of buffering and batching the write operation, and transmitting the write operation to a replication receiver system.

Claims (60)

1. A method, comprising:

detecting a write operation on an end user computing system by an agent placed on the end user computing system, the write operation comprising block parameters that define changes to a file, wherein the block parameters are part of a changed set that corresponds to the write operation without actual changed bytes of data of the write operations;

establishing, by the agent, a buffer from free memory available on the end user computing system;

storing, by the agent, the block parameters in the buffer prior to transmitting the block parameters of the write operation to a replication receiver system;

transmitting the block parameters to the replication receiver system from the buffer;

obtaining the actual changed bytes of data using the block parameters; and

transmitting the actual changed bytes of data to the replication receiver system, wherein the replication receiver system creates or updates an incremental file or snapshot using the block parameters and the actual changed bytes of data, so as to allow for near-continuous replication of changes to the file.

2. The method according to claim 1 , further comprising replicating changes to a corresponding file on the replication receiver system using the block parameters and the actual changed bytes of data.

3. The method according to claim 1 , wherein the block parameters comprise an offset, a block size, and block data.

4. The method according to claim 1 , wherein block parameters for write operations are transmitted from the buffer to at least the replication receiver system according to a schedule.

5. The method according to claim 1 , wherein the buffer comprises an amount of memory of the end user computing system and wherein block parameters for write operations are transmitted from the buffer to the replication receiver system when the buffer is substantially full of block parameters for write operations.

6. The method according to claim 5 , further wherein block parameters for write operations are transmitted from the buffer to the replication receiver system according to a schedule.

7. The method according to claim 5 , wherein the amount of memory is dynamically modified based upon an amount of free memory available for the end user computing system.

8. The method according to claim 7 , wherein dynamic modification of the amount of memory modifies a schedule used to determine when block parameters for write operations are transmitted from the buffer to the replication receiver system.

9. The method according to claim 5 , wherein the amount of memory is dynamically modified in accordance with workload threshold established for the end user computing system.

10. The method according to claim 1 , further comprising coalescing the block parameters of plurality of write operations together prior to transmitting to the replication receiver system.

11. The method according to claim 10 , further comprising collecting a plurality of write operations together into a changed set without capturing the actual changed bytes of data.

12. The method according to claim 11 , further comprising obtaining changed data blocks for a changed set from a file system snapshot; and transmitting the changed data blocks to the replication receiver system.

13. The method according to claim 11 , further comprising obtaining changed data blocks for combined changed sets from a file system snapshot; and transmitting the changed data blocks to the replication receiver system.

14. The method according to claim 1 , further comprising:

obtaining multiple file system snapshots and changed sets for the end user computing system;

providing the multiple file system snapshots and changed sets to multiple replication receiver systems using multiple replication streams.

15. A method, comprising:

detecting a write operation occurring within an operating system of an end user computing system by an agent placed on the end user computing system;

identifying, by the agent, block parameters for the write operation;

capturing, by the agent, an offset, length, and size of the write operation, rather than capturing the actual write data of the write operation;

one or more of buffering and batching the block parameters, by the agent, the block parameters being stored in free memory of the end user computing system;

transmitting only the block parameters to a replication receiver system;

obtain a snapshot of the end user computing system;

obtain the actual changed bytes of data from the snapshot using the offset, length, and size; and

transmit the actual changed bytes of data to the replication receiver system, so as to allow for near-continuous replication of changes to files.

16. The method according to claim 15 , wherein transmitting the write operation occurs according to a schedule.

17. The method according to claim 15 , wherein batching comprises storing a predetermined amount of write operations in a buffer, the predetermined amount of write operations being based upon a size of the buffer.

18. A system, the system comprising:

at least one server having a memory that includes executable instructions and a processor executing the instructions, the instructions comprising:

a filter driver controller communicatively couplable with a filter driver installed in a layer of an operating system of an end user computing system, the filter driver controller executing the filter driver to:

detect a write operation on the end user computing system, the write operation comprising block parameters that define changes to a file, wherein the block parameters are part of a changed set that corresponds to the write operation without actual changed bytes of data of the write operations;

transmit the block parameters to a replication receiver system;

obtaining the actual changed bytes of data using the block parameters;

transmit the actual changed bytes to a replication module, the replication module using the block parameters and the actual changed bytes to create or update an incremental file or update a snapshot, so as to allow for near-continuous replication of changes to the file.

19. The system according to claim 18 , wherein the filter driver controller further executes the filter driver to determine block parameters from the write operation, the block parameters comprising an offset, a block size, and block data.

20. The system according to claim 18 , wherein the filter driver controller further:

establishes a buffer on the end user computing system through controlling the filter driver; and

executes the filter driver to store block parameters in the buffer through controlling the filter driver.

21. The system according to claim 20 , wherein the filter driver controller further executes the filter driver to transmit block parameters from the buffer to the replication receiver system according to a schedule.

22. The system according to claim 20 , wherein the filter driver controller causes the filter driver to transmit block parameters from the buffer to the replication receiver system when the buffer is substantially full of block parameters, wherein the buffer comprises a predetermined amount of memory of the end user computing system.

23. The system according to claim 22 , wherein the amount of memory is dynamically modifiable by the filter driver controller based upon an amount of free memory available for the end user computing system.

24. The system according to claim 18 , further comprising a replicator module that:

receives the block parameters; and

replicates the write operation onto the replication receiver system using the block parameters.

25. A system, the system comprising:

a filter driver installed on an end user computing device; and

at least one server having a memory that includes executable instructions and a processor executing the instructions, the instructions comprising:

a filter driver controller, the filter driver controller executing the filter driver to:

detect a write operation on the end user computing system, the write operation comprising block parameters that define changes to a file, wherein the block parameters are part of a changed set that corresponds to the write operation without actual changed bytes of data of the write operations;

store the block parameters in an activity log;

obtain a snapshot of the end user computing system;

retrieving the block parameters from the activity log;

obtain the actual changed bytes of data from the snapshot using the block parameters; and

transmit the actual changed bytes of data to a replication receiver system, so as to allow for near-continuous replication of changes to the file.

Assignments (13)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 19, 2025
From: SKYKICK, LLC; EFOLDER, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 070268/0489 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2024
From: U.S. BANK NATIONAL ASSOCIATION FORMERLY MUFG UNION BANK, N.A.
To: EFOLDER, INC.
Reel/Frame 068680/0802 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: EFOLDER, INC.
Reel/Frame 061634/0623 →
SECURITY INTEREST Recorded Oct 27, 2022
From: EFOLDER, INC.
To: MUFG UNION BANK, N.A.
Reel/Frame 061559/0703 →
SECURITY INTEREST Recorded Jan 8, 2018
From: EFOLDER, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 044563/0633 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCIENT HOLDINGS, LLC
To: EFOLDER, INC.
Reel/Frame 044370/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCIENT, INC.
To: AXCI (AN ABC) LLC
Reel/Frame 044367/0507 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCI (AN ABC) LLC
To: AXCIENT HOLDINGS, LLC
Reel/Frame 044368/0556 →
RELEASE OF SECURITY INTEREST Recorded Oct 11, 2017
From: STRUCTURED ALPHA LP
To: AXCIENT, INC.
Reel/Frame 043840/0227 →
RELEASE OF SECURITY INTEREST Recorded Jul 26, 2017
From: SILVER LAKE WATERMAN FUND, L.P.
To: AXCIENT, INC.
Reel/Frame 043106/0389 →
SECURITY INTEREST Recorded Jun 2, 2017
From: AXCIENT, INC.
To: SILVER LAKE WATERMAN FUND, L.P.
Reel/Frame 042577/0901 →
SECURITY INTEREST Recorded May 31, 2017
From: AXCIENT, INC.
To: STRUCTURED ALPHA LP
Reel/Frame 042542/0364 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2013
From: LI, KONG; PETRI, ROBERT; PARAB, NITIN
To: AXCIENT, INC.
Reel/Frame 029596/0468 →