IP Library › Granted Patent US 10,264,064
Granted Patent B1
US 10,264,064 · App. 15/177,454 · Granted Apr 16, 2019

Systems and methods for performing data replication in distributed cluster environments

Inventors: Suhas Dantkale (Sunnyvale, CA); Christopher Uhler (Palo Alto, CA); Chaitanya Yalamanchili (Santa Clara, CA); Rakesh Ranjan (Cupertino, CA); Satyendra Thakur (San Jose, CA)
Assignee: Veritas Technologies LLC
H04L67/1029H04L47/783H04L67/1095
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 10,264,064
App. No.
15/177,454
Filed
Jun 9, 2016
Granted
Apr 16, 2019
Kind
B1
Art Unit
2447
USPC
709/226
Abstract

The disclosed computer-implemented method for performing data replication in distributed cluster environments may include (1) identifying a distributed cluster environment that includes (A) a plurality of compute nodes that execute a plurality of virtual machines and (B) a data node that stores data that has been replicated from storage devices used by the virtual machines, (2) determining, at the data node, storage-utilization totals for the virtual machines that represent amounts of storage space on the storage devices used by the virtual machines, (3) identifying, based at least in part on the storage-utilization totals, a virtual machine whose storage-utilization total is highest among the plurality of virtual machines, (4) prioritizing the virtual machine and then in response to the prioritization, (5) directing the compute node to initiate a data replication process with the data node in connection with the virtual machine. Various other methods, systems, and computer-readable media are also disclosed.

Claims (62)

1. A computer-implemented method for performing data replication in distributed cluster environments, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a distributed cluster environment that includes:

a plurality of compute nodes that execute a plurality of virtual machines;

at least one data node that stores data that has been replicated from storage devices used by the virtual machines;

determining, at the data node, storage-utilization totals for the virtual machines that represent amounts of storage space on the storage devices used by the virtual machines;

identifying, based at least in part on the storage-utilization totals, a virtual machine whose storage-utilization total is highest among the plurality of virtual machines;

prioritizing the virtual machine with the highest storage-utilization total among the plurality of virtual machines;

in response to the prioritization, directing the compute node that executes the virtual machine with the highest storage-utilization total to initiate a data replication process with the data node in connection with the virtual machine;

identifying a transfer-rate total that represents a sum of all data replication processes being performed by the plurality of compute nodes on the data node;

determining that the transfer-rate total exceeds a maximum write speed of the data node;

in response to determining that the transfer-rate total exceeds the maximum write speed of the data node, directing the compute node that executes the virtual machine with the highest storage-utilization total to initiate an aggressive data replication job that involves multiple compute nodes contributing to the data replication process, wherein the compute node performs the aggressive data replication job in conjunction with another compute node that is storing a reflected copy of the data implicated in the aggressive data replication job.

2. The method of claim 1 , further comprising:

collecting, from the virtual machines, statistics that identify the storage-utilization totals used by the virtual machines;

calculating the storage-utilization totals for the virtual machines based at least in part on the statistics collected from the virtual machines.

3. The method of claim 1 , wherein:

prioritizing the virtual machine with the highest storage-utilization total comprises scheduling a plurality of data replication processes for the virtual machines in order of the highest storage-utilization total to the lowest storage-utilization total among the virtual machines;

directing the compute node that executes virtual machine with the highest storage-utilization total to initiate the data replication process comprises directing the compute nodes to initiate the data replication processes as scheduled in the order of the highest storage-utilization total to the lowest storage-utilization total.

4. The method of claim 3 , wherein directing the compute nodes to initiate the data replication processes as scheduled in the order of the highest storage-utilization total to the lowest storage-utilization total comprises, upon completion of the data replication process, directing another compute node to initiate another data replication process with the data node in connection with another virtual machine running on the other compute node.

5. The method of claim 1 , wherein directing the compute node that executes virtual machine with the highest storage-utilization total to initiate the data replication process comprises enabling the compute node to reclaim storage space on one of the storage devices previously occupied by data that has been replicated to the data node during the data replication process.

6. The method of claim 1 , wherein directing the compute node that executes the virtual machine to perform the aggressive data replication job in conjunction with the other compute node comprises interrupting another data replication process in progress to enable the compute node and the other compute node to perform the aggressive data replication job.

7. The method of claim 1 , wherein:

the aggressive data replication job involves replicating multiple virtual disks to the data node;

directing the compute node to perform the aggressive data replication job in conjunction with the other compute node comprises directing the compute node to:

replicate one of the multiple virtual disks to the data node;

distribute at least one task to the other compute node that causes the other compute node to replicate another one of the multiple virtual disks to the data node such that the compute node and the other compute node are replicating the multiple virtual disks to the data node simultaneously.

8. The method of claim 7 , wherein directing the compute node to replicate the one of the multiple virtual disks and distribute the task to the other compute node comprises:

enabling the compute node to reclaim storage space on one of the storage devices previously occupied by data that has been replicated to the data node during the aggressive data replication job;

enabling the compute node to reclaim storage space on another one of the storage devices previously occupied by data that has been replicated to the data node during the aggressive data replication job.

9. The method of claim 1 , wherein the storage devices comprise at least one Solid-State Drive (SSD).

10. A system for performing data replication in distributed cluster environments, the system comprising:

an identification module, stored in memory, that identifies a distributed cluster environment that includes:

a plurality of compute nodes that execute a plurality of virtual machines;

at least one data node that stores data that has been replicated from storage devices used by the virtual machines;

a determination module, stored in memory, that determines storage-utilization totals for the virtual machines that represent amounts of storage space on the storage devices used by the virtual machines;

wherein the identification module further identifies, based at least in part on the storage-utilization totals, a virtual machine whose storage-utilization total is highest among the plurality of virtual machines;

a scheduling module, stored in memory, that:

prioritizes the virtual machine with the highest storage-utilization total among the plurality of virtual machines;

directs, in response to the prioritization, the compute node that executes the virtual machine with the highest storage-utilization total to initiate a data replication process with the data node in connection with the virtual machine;

wherein the identification module further identifies a transfer-rate total that represents a sum of all data replication processes being performed by the plurality of compute nodes on the data node;

wherein the determination module further determines that the transfer-rate total exceeds a maximum write speed of the data node;

wherein the scheduling module directs, in response to the determination that the transfer-rate total exceeds the maximum write speed of the data node, the compute node that executes the virtual machine with the highest storage-utilization total to initiate an aggressive data replication job that involves multiple compute nodes contributing to the data replication process, wherein the compute node performs the aggressive data replication job in conjunction with another compute node that is storing a reflected copy of the data implicated in the aggressive data replication job;

at least one physical processor that executes the identification module, the determination module, and the scheduling module.

11. The system of claim 10 , further comprising:

a collection module, stored in memory, that collects, from the virtual machines, statistics that identify the storage-utilization totals used by the virtual machines;

the determination module further calculates the storage-utilization totals for the virtual machines based at least in part on the statistics collected from the virtual machines.

12. The system of claim 10 , wherein the scheduling module further:

schedules a plurality of data replication processes for the virtual machines in order of the highest storage-utilization total to the lowest storage-utilization total among the virtual machines;

directs the compute nodes to initiate the data replication processes as scheduled in the order of the highest storage-utilization total to the lowest storage-utilization total.

13. The system of claim 12 , wherein the scheduling module directs, upon completion of the data replication process, another compute node to initiate another data replication process with the data node in connection with another virtual machine running on the other compute node.

14. The system of claim 10 , wherein the scheduling module enables the compute node to reclaim storage space on one of the storage devices previously occupied by data that has been replicated to the data node during the data replication process.

15. The system of claim 10 , wherein the scheduling module interrupts another data replication process in progress to enable the compute node and the other compute node to perform the aggressive data replication job.

16. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identifies a distributed cluster environment that includes:

a plurality of compute nodes that execute a plurality of virtual machines;

at least one data node that stores data that has been replicated from storage devices used by the virtual machines;

determines, at the data node, storage-utilization totals for the virtual machines that represent amounts of storage space on the storage devices used by the virtual machines;

identifies, based at least in part on the storage-utilization totals, a virtual machine whose storage-utilization total is highest among the plurality of virtual machines;

prioritizes the virtual machine with the highest storage-utilization total among the plurality of virtual machines;

directs, in response to the prioritization, the compute node that executes the virtual machine with the highest storage-utilization total to initiate a data replication process with the data node in connection with the virtual machine;

identifies a transfer-rate total that represents a sum of all data replication processes being performed by the plurality of compute nodes on the data node;

determines that the transfer-rate total exceeds a maximum write speed of the data node;

directs, in response to determining that the transfer-rate total exceeds the maximum write speed of the data node, the compute node that executes the virtual machine with the highest storage-utilization total to initiate an aggressive data replication job that involves multiple compute nodes contributing to the data replication process, wherein the compute node performs the aggressive data replication job in conjunction with another compute node that is storing a reflected copy of the data implicated in the aggressive data replication job.

Assignments (10)
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 069632/0613 →
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 →
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 Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2016
From: DANTKALE, SUHAS; UHLER, CHRISTOPHER; YALAMANCHILI, CHAITANYA; RANJAN, RAKESH; THAKUR, SATYENDRA
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038854/0048 →
Cited By (2)
US 12,380,003 US 12,511,151