IP Library Granted Patent US 10,248,345
Granted Patent B1
US 10,248,345 · App. 15/054,728 · Granted Apr 2, 2019

Persisting data as information

Inventor: Christopher M. Dickson (Roseville, MN)
Assignee: Veritas Technologies LLC
G06F3/0631G06F3/0604G06F3/0656G06F3/0661G06F3/0688H04L65/607H04L67/2804
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,248,345
App. No.
15/054,728
Granted
Apr 2, 2019
Kind
B1
Abstract

Disclosed herein are methods, systems, and processes to persist data as information. A logical container is created. The logical container is dynamically defined to correspond to a storage device. Original data or encoded data written by an application container is received. If original data is received, encoded data is generated from original data. If encoded data is received, original data is generated from encoded data. Generating encoded data from original data, and original data from encoded data involves calculating original metadata for original data, and encoded metadata for encoded data. Encoded data or original data along with original metadata and encoded metadata is transported through the logical container past a persistence boundary. In response to transporting past the persistence boundary, a confirmation is received original data has been persisted.

Claims (181)

1. A method comprising:

receiving, at a the first logical container, original data written by an application container, wherein

the first logical container does not provide persistent storage, and

the application container is communicatively coupled to a non-volatile memory;

subsequent to receiving the original data, generating encoded data from the original data;

transporting the encoded data to a second logical container, wherein

the second logical container does not provide persistent storage, and

the second logical container has a higher latency than the first logical container;

receiving, at the second logical container, the encoded data;

subsequent to receiving the encoded data, generating the original data from the encoded data;

subsequent to generating the original data from the encoded data, transporting the original data toward a storage device, wherein

the storage device is one of a plurality of storage devices associated with a network, and

the storage device provides persistence storage;

receiving, at the storage device, at least one of the original data and the encoded data (collectively, “the data”);

subsequent to receiving the data at the storage device,

storing the data in the storage device, and

sending an identifier to the application container, wherein

the identifier comprises information identifying the storage device among the plurality of storage devices in which the data is stored;

receiving the identifier at the application container;

subsequent to receiving the identifier at the application container, storing the identifier in the non-volatile memory communicatively coupled to the application container;

subsequent to the storing the data at the storage device, receiving a request to access the data stored in the storage device, wherein

the request is received at the application container; and

using the identifier to access the data stored in the storage device.

2. The method of claim 1 , wherein

generating the encoded data and generating the original data also comprises

calculating an original metadata for the original data, and

calculating an encoded metadata for the encoded data.

3. The method of claim 2 , further comprising:

transporting the encoded data or the original data along with the original metadata and the encoded metadata through a subsequent logical container past a persistence boundary.

4. The method of claim 3 , wherein

the identifier is generated after the original metadata and the encoded metadata have been updated past the persistence boundary,

updating the original metadata and the encoded metadata past the persistence boundary is performed by an information container, and

the identifier is generated by the information container.

5. The method of claim 1 , wherein

the original data is generated by an application instance,

the application instance executes within the application container, and

at least one of the first logical container and the second logical container is created on a non-volatile storage device.

6. The method of claim 5 , further comprising:

causing the original data to be copied to a transport buffer, wherein

the transport buffer is associated with the application instance, and

the original data is part of an original stream; and

generating an encoded stream by encoding the original data, wherein

the encoded stream comprises the encoded data, and

the generating the encoded stream further comprises calculating original metadata and encoded metadata.

7. The method of claim 6 , further comprising:

accessing the encoded stream in the transport buffer;

decoding the encoded stream, wherein

the decoding comprises splitting the encoded stream into at least two original sub-streams;

writing a first original sub-stream to a third logical container; and

writing a second original sub-stream to a fourth logical container.

8. The method of claim 6 , wherein

transporting the encoded data or the original data comprises

transporting the encoded stream and decoding the encoded stream, or

transporting the original stream and encoding the original stream.

9. The method of claim 7 , wherein

the encoding and the decoding are performed using a symmetric encoding technique.

10. The method of claim 9 , wherein

the symmetric encoding technique permits

determination of an error-correcting code (ECC) from the original data or the encoded data, or

identifies the original data or the encoded data from the ECC.

11. The method of claim 2 , further comprising

maintaining the original data or the encoded data in the first logical container until the application container receives the identifier.

12. A non-transitory computer readable storage medium comprising program instructions executable to:

receive, at a first logical container, original data written by an application container, wherein

the first logical container does not provide persistent storage, and

the application container is communicatively coupled to a non-volatile memory;

subsequent to receiving the original data, generate encoded data from the original data;

transport the encoded data to a second logical container, wherein

the second logical container does not provide persistent storage, and

the second logical container has a higher latency than the first logical container;

receive, at the second logical container, the encoded data;

subsequent to receiving the encoded data, generate the original data from the encoded data;

subsequent to generating the original data from the encoded data, transport the original data toward a storage device, wherein

the storage device is one of a plurality of storage devices associated with a network, and

the storage device provides persistence storage;

receive, at the storage device, at least one of the original data and the encoded data (collectively, “the data”);

subsequent to receiving the data at the storage device,

store the data in the storage device, and

send an identifier to the application container, wherein

the identifier comprises information identifying the storage device among the plurality of storage devices in which the data is stored;

receive the identifier at the application container;

subsequent to receiving the identifier at the application container, store the identifier in the non-volatile memory communicatively coupled to the application container;

subsequent to storing the data at the storage device, receive a request to access the data stored in the storage device, wherein

the request is received at the application container; and

use the identifier to access the data stored in the storage device.

13. The non-transitory computer readable storage medium of claim 12 , wherein the program instructions are further executable to:

generate the encoded data and generating the original data by

calculating an original metadata for the original data, and

calculating an encoded metadata for the encoded data;

transport the encoded data or the original data along with the original metadata and the encoded metadata through a subsequent logical container past a persistence boundary.

14. The non-transitory computer readable storage medium of claim 13 , wherein

the identifier is generated after the original metadata and the encoded metadata have been updated past the persistence boundary,

updating the original metadata and the encoded metadata past the persistence boundary is performed by an information container,

the identifier is generated by the information container,

the original data is generated by an application instance,

the application instance executes within the application container, and

at least one of the first logical container and the second logical container is created on a non-volatile storage device.

15. The non-transitory computer readable storage medium of claim 14 , wherein the program instructions are further executable to:

cause the original data to be copied to a transport buffer, wherein

the transport buffer is associated with the application instance, and

the original data is part of an original stream; and

generate an encoded stream by encoding the original data, wherein

the encoded stream comprises the encoded data, and

the generating the encoded stream further comprises calculating the original metadata and the encoded metadata;

access the encoded stream in the transport buffer;

decode the encoded stream, wherein

decoding the encoded stream comprises splitting the encoded stream into at least two original sub-streams;

write a first original sub-stream to a third logical container;

write a second original sub-stream to a fourth logical container; and

maintain the original data or the encoded data in either the first logical container or the second logical container until the application container receives the identifier.

16. The non-transitory computer readable storage medium of claim 15 , wherein

transporting the encoded data or the original data comprises

transporting the encoded stream and decoding the encoded stream, or

transporting the original stream and encoding the original stream,

the encoding and the decoding are performed using a symmetric encoding technique, and

the symmetric encoding technique permits

determination of an error-correcting code (ECC) from the original data or the encoded data, or

identifies the original data or the encoded data from the ECC.

17. A system comprising:

one or more processors; and

a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to:

receive, at a first logical container, original data written by an application container, wherein

the first logical container does not provide persistent storage, and

the application container is communicatively coupled to a non-volatile memory;

subsequent to receiving the original data, generate encoded data from the original data;

transport the encoded data to a second logical container, wherein

the second logical container does not provide persistent storage, and

the second logical container has a higher latency than the first logical container;

receive, at the second logical container, the encoded data;

subsequent to receiving the encoded data, generate the original data from the encoded data;

subsequent to generating the original data from the encoded data, transport the original data toward a storage device, wherein

the storage device is one of a plurality of storage devices associated with a network, and

the storage device provides persistence storage;

receive, at the storage device, at least one of the original data and the encoded data (collectively, “the data”);

subsequent to receiving the data at the storage device,

store the data in the storage device, and

send an identifier to the application container, wherein

the identifier comprises information identifying the storage device among the plurality of storage devices in which the data is stored;

receive the identifier at the application container;

subsequent to receiving the identifier at the application container, store the identifier in the non-volatile memory communicatively coupled to the application container;

subsequent to storing the data at the storage device, receive a request to access the data stored in the storage device, wherein

the request is received at the application container; and

use the identifier to access the data stored in the storage device.

18. The system of claim 17 , wherein the program instructions are further executable to:

generate the encoded data and generating the original data by

calculating an original metadata for the original data, and

calculating an encoded metadata for the encoded data;

transport the encoded data or the original data along with the original metadata and the encoded metadata through a subsequent logical container past a persistence boundary.

19. The system of claim 18 , wherein

the identifier is generated after the original metadata and the encoded metadata have been updated past the persistence boundary,

updating the original metadata and the encoded metadata past the persistence boundary is performed by an information container,

the identifier is generated by the information container,

the original data is generated by an application instance,

the application instance executes within the application container, and

at least one of the first logical container and the second logical container is created on a non-volatile storage device.

20. The system of claim 19 , wherein the program instructions are further executable to:

cause the original data to be copied to a transport buffer, wherein

the transport buffer is associated with the application instance, and

the original data is part of an original stream; and

generate an encoded stream by encoding the original data, wherein

the encoded stream comprises the encoded data, and

creating the encoded stream further comprises calculating the original metadata and the encoded metadata;

access the encoded stream in the transport buffer;

decode the encoded stream, wherein

decoding the encoded stream comprises splitting the encoded stream into at least two original sub-streams;

write a first original sub-stream to a third logical container;

write a second original sub-stream to a fourth logical container; and

maintain the original data or the encoded data in either the first logical container or the second logical container until the application container receives the identifier.

21. The system of claim 20 , wherein

transporting the encoded data or the original data comprises

transporting the encoded stream and decoding the encoded stream, or

transporting the original stream and encoding the original stream,

the encoding and the decoding are performed using a symmetric encoding technique, and

the symmetric encoding technique permits

determination of an error-correcting code (ECC) from the original data or the encoded data, or

identifies the original data or the encoded data from the ECC.

22. The method of claim 1 , wherein:

subsequent to transporting the original data toward the storage device, receiving the original data at a third logical container, wherein

the third logical container has a higher latency than the first logical container;

subsequent to receiving the original data at the third logical container, generating the encoded data from the original data; and

subsequent to generating the encoded data from the original data, transporting the encoded data toward the storage device.

Assignments (11)
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 →
MERGER Recorded Feb 19, 2018
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 044965/0196 →
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 Feb 26, 2016
From: DICKSON, CHRISTOPHER M.
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 037841/0941 →
Cited By (1)
US 12,542,782