IP Library Granted Patent US 10,402,394
Granted Patent B2
US 10,402,394 · App. 15/392,951 · Granted Sep 3, 2019

Systems and methods for flushing data in a virtual computing environment

Inventors: Niranjan Pendharkar (Pune, IN); Christopher Uhler (Palo Alto, CA); Rakesh Ranjan (Cupertino, CA)
Assignee: Veritas Technologies LLC
G06F16/2365G06F9/45558G06F16/215G06F2009/45579
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,402,394
App. No.
15/392,951
Granted
Sep 3, 2019
Kind
B2
Abstract

A method for flushing data in a virtual computing environment is provided. The method includes writing application output from an application spanning one or more virtual machines to a cache, wherein each virtual machine is implemented using one or more compute nodes and the cache is implemented in storage associated with the one or more compute nodes. In an effort to flush data associated with application writes more efficiently from the cache to a local backing store or one or more data nodes, the method may include generating a mapping of each of the plurality of application writes. The method may further include sorting sets of one or more virtual disks based upon an offset of each application write as indicated in the mapping. In addition, a storage virtualizer may cancel duplicate application writes, merge multiple contiguous application writes, and merge multiple epochs prior to flushing the data.

Claims (89)

1. A method of flushing data in a virtual computing environment, comprising:

writing application output from an application spanning one or more virtual machines as an application consistency group to a cache, wherein the one or more virtual machines are implemented using one or more compute nodes and wherein the cache is implemented in storage in the one or more compute nodes;

generating a mapping of each of the plurality of application writes to the cache;

sorting sets of one or more virtual disks (vdisks) based upon an offset in the mapping;

canceling duplicate application writes;

merging multiple contiguous application writes;

merging multiple epochs, wherein each epoch represents one or more application writes that occur during a vdisk version;

performing an inline compress prior to flushing of the one or more application writes; and

flushing the application writes to a backend datastore based upon an order defined in the mapping.

2. The method of claim 1 , wherein the generating of the mapping comprising:

identifying the offset of the data associated with at least one application write;

detecting a length of the data;

detecting a log location of the data; and

storing the offset, the length, and the log location in a table located in the cache or a storage virtualizer implemented using a virtual machine.

3. The method of claim 1 , wherein the sorting of the one or more virtual disks comprising:

sorting each entry in the table based upon the offset associated with each application write.

4. The method of claim 1 , wherein the canceling duplicate writes comprising:

detecting duplicate application writes;

maintaining a latest application write; and

removing table entries associated with duplicate application writes from the table.

5. The method of claim 1 , wherein the merging multiple contiguous writes comprising:

detecting a contiguous write based upon the offset and length associated with one or more application writes; and

moving one of the table entries associated with the contiguous write such that one or more application writes are adjacent to one another in a sequential order.

6. The method of claim 1 , wherein the merging multiple epochs comprising:

detecting the epoch associated with each vdisk version;

requesting permission to send the epoch to the data plane; and

grouping, in response to denial of permission, the table entries associated with a predetermined set of epochs waiting to be transferred.

7. The method of claim 1 , further comprising:

performing inline dedupe to reduce Input/Output operations per second (IOPs) prior to the flushing of application writes to the backend datastore.

8. A virtual environment computing system, comprising:

a plurality of compute nodes coupled as a compute plane and configured to host a plurality of virtual machines executing a plurality of applications;

the plurality of compute nodes having direct attached storage (DAS);

a plurality of data nodes coupled as a data plane and configured as virtual storage; and

a controller coupled to the compute plane and the data plane, the controller including instructions to perform actions comprising:

writing application output of an application spanning one or more virtual machines as an application consistency group to a cache, wherein the one or more virtual machines are implemented using one or more compute nodes and wherein the cache is implemented in storage in the one or more compute nodes;

generating a mapping of each of the plurality of application writes to the cache;

sorting sets of one or more vdisks based upon an offset in the mapping;

canceling duplicate application writes;

merging multiple contiguous application writes;

merging multiple epochs, wherein each epoch represents one or more application writes that occur during a vdisk version;

performing an inline compress prior to flushing the application writes; and

flushing the application writes to a backend datastore based upon an order defined in the mapping.

9. The virtual environment computing system of claim 8 , wherein the controller, for generating the mapping, including instructions for:

identifying the offset of the data associated with at least one application writes;

detecting a length of the data;

detecting a log location of the data; and

storing the offset, the length, and the log location in a table located in the cache or a storage virtualizer implemented using a virtual machine.

10. The virtual environment computing system of claim 8 , wherein the controller, for sorting the one or more virtual disks, including instructions for:

sorting each entry in the table based upon the offset associated with each application write.

11. The virtual environment computing system of claim 8 , wherein the controller, for canceling duplicate writes, including instructions for:

detecting duplicate application writes;

maintaining a latest application write; and

removing table entries associated with duplicate application writes from the table.

12. The virtual environment computing system of claim 8 , wherein the controller, for merging multiple contiguous writes, including instructions for:

detecting a contiguous write based upon the offset and length associated with one or more application writes; and

moving one of the table entries associated with the contiguous write such that one or more application writes are adjacent to one another in a sequential order.

13. The virtual environment computing system of claim 8 , wherein the controller, for merging multiple epochs, including instructions for:

detecting the epoch associated with each version;

requesting permission to send the epoch to the data plane; and

grouping, in response to denial of permission, the table entries associated with a predetermined set of epochs waiting to be transferred.

14. The virtual environment computing system of claim 8 , wherein the controller further including instructions for:

performing inline dedupe to reduce Input/Output operations per second (IOPs) prior to the flushing of the application writes.

15. A non-transitory computer-readable medium including code for performing a method for flushing data, the method comprising:

writing application output from an application spanning one or more virtual machines as an application consistency group to a cache, wherein the one or more virtual machines are implemented using one or more compute nodes and wherein the cache is implemented in storage in the one or more compute nodes;

generating a mapping of each of the plurality of application writes to the cache;

sorting sets of one or more virtual disks (vdisks) based upon an offset in the mapping;

canceling duplicate application writes;

merging multiple contiguous application writes;

merging multiple epochs, wherein each epoch represents one or more application writes that occur during a vdisk version;

performing an inline compress of the one or more application writes prior to flushing; and

flushing the application writes to a backend storage unit based upon an order defined in the mapping.

16. The computer-readable medium of claim 15 , wherein the generating of the mapping comprising:

identifying the offset of the data associated with at least one application writes;

detecting a length of the data;

detecting a log location of the data; and

storing the offset, the length, and the log location in a table located in the cache or a storage virtualizer implemented using a virtual machine.

17. The computer-readable medium of claim 15 , wherein the sorting of the one or more virtual disks comprising:

sorting each entry in the table based upon the offsets associated with each application write.

18. The computer-readable medium of claim 15 , wherein the canceling duplicate writes comprising:

detecting duplicate application writes;

maintaining a latest application write; and

removing table entries associated with duplicate application writes from the table.

19. The computer-readable medium of claim 15 , wherein the merging multiple contiguous writes comprising;

detecting a contiguous write based upon the offset and length associated with one or more application writes; and

moving one of the table entries associated with the contiguous write such that one or more application writes are adjacent to one another in a sequential order.

20. The computer-readable medium of claim 15 , wherein the merging multiple epochs comprising:

detecting the epoch associated with each version;

requesting permission to send the epoch to the data plane; and

grouping, in response to denial of permission, the table entries associated with a predetermined set of epochs waiting to be transferred.

Assignments (12)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
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/0958 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 053926/0320 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0418 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Sep 29, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 053926/0320 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 15, 2018
From: PENDHARKAR, NIRANJAN; UHLER, CHRISTOPHER; RANJAN, RAKESH
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 045343/0905 →
Priority Claims (1)
IN 201611037610 · Nov 3, 2016 · national
Continuity (1)
Related Publication 20180121490A1 · May 3, 2018