IP Library Granted Patent US 11,842,060
Granted Patent B2
US 11,842,060 · App. 17/402,198 · Granted Dec 12, 2023

Efficiently storing data in a cloud storage

Inventors: Anubhav Gupta (Sunnyvale, CA); Praveen Kumar Yarlagadda (Santa Clara, CA); Venkata Ranga Radhanikanth Guturi (San Jose, CA); Zhihuan Qiu (San Jose, CA); Sarthak Agarwal (Fremont, CA)
Assignee: Cohesity, Inc.
G06F3/0638G06F3/0604G06F3/067
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 11,842,060
App. No.
17/402,198
Filed
Aug 13, 2021
Granted
Dec 12, 2023
Kind
B2
Art Unit
2135
USPC
711/154
Abstract

A specification of content to be stored in a cloud storage is received at a client-side component. A portion of the content is divided into a plurality of data chunks. One or more data chunks of the plurality of data chunks that are to be sent via a network to be stored in the cloud storage are identified. It is determined whether a batch size of the one or more identified data chunks meets a threshold size. Based on the determination of whether the batch size meets the threshold size, a cloud storage destination among a plurality of different cloud storage destinations associated with different performance tiers is selected.

Claims (29)

1. A method, comprising: receiving at a client-side component, a specification of content to be stored in a cloud storage; dividing a first portion of the content into a plurality of data chunks; identifying one or more data chunks of the plurality of data chunks that are to be sent via a network to be stored in the cloud storage; receiving a reference to a cloud storage element object to which the one or more identified data chunks are to be written, wherein the reference includes an identifier of the cloud storage element object; determining that a batch size of the one or more identified data chunks does not meet a threshold size for the cloud storage element object to which the one or more identified data chunks are to be written; in response to a determination that the batch size of the one or more identified data chunks does not meet the threshold size for the cloud storage element object to which the one or more identified data chunks are to be written, identifying one or more data chunks of a second portion of the content that are to be stored in the cloud storage; determining that a size of a new batch of data chunks that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content meets the threshold size; in response to determining that the size of the new batch of data chunks meets the threshold size, selecting a cloud storage destination among a plurality of different cloud storage destinations associated with different performance tiers for the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content; and writing the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content to the cloud storage element object having the identifier of the cloud storage element object that is located in the selected cloud storage destination.

2. The method of claim 1 , further comprising receiving the first portion of the content from a source system.

3. The method of claim 1 , wherein identifying the one or more data chunks of the plurality of data chunks that are to be sent via the network to be stored in the cloud storage includes:

computing one or more corresponding chunk identifiers for each of the data chunks;

sending the one or more corresponding chunk identifiers to a file system manager, wherein the file system manager compares the one or more corresponding chunk identifiers to chunk identifiers included in a deduplication table; and

receiving from the file system manager an indication of one or more chunk identifiers that are not included in the deduplication table.

4. The method of claim 1 , further comprising receiving an encryption key.

5. The method of claim 1 , wherein in response to determining that the size of the new batch of data chunks is greater than or equal to the threshold size for the cloud storage element object to which the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content are to be written, encrypting the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content.

6. The method of claim 5 , further comprising providing to a cloud server an indication that the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content have been stored at a referenced portion of the cloud storage.

7. The method of claim 6 , wherein in response to receiving the indication, the cloud server generates metadata for the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content that have been stored at the referenced portion of the cloud storage.

8. The method of claim 1 , wherein in response to determining that the batch size of the one or more identified data chunks does not meet the threshold size for the cloud storage element object to which the one or more identified data chunks are to be written, determining whether a batch period is equal to or greater than a batch threshold period.

9. The method of claim 8 , further comprising:

determining that the batch period is not equal to or greater than the batch threshold period;

receiving the second portion of the content from a source system; and

dividing the received second portion of the content into a second plurality of data chunks.

10. The method of claim 9 , further comprising identifying one or more data chunks of the second plurality of data chunks that are to be sent via the network to be stored in the cloud storage.

11. The method of claim 10 , further comprising generating the new batch of data chunks to include the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content.

12. The method of claim 11 , further comprising determining whether the size of the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content meets the threshold size.

13. The method of claim 12 , further comprising in response to determining that the size of the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content meets the threshold size, encrypting the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content and writing the encrypted batch to the selected cloud storage destination at the cloud storage.

14. The method of claim 1 , further comprising:

receiving a subsequent portion of the content from a source system;

dividing the received subsequent portion into a second plurality of data chunks;

determining that the batch size of one or more identified data chunks of the second plurality of data chunks does not meet the threshold size for a second cloud storage element object to which the one or more identified data chunks of the second plurality of data chunks are to be written; and

writing the one or more identified data chunks of the second plurality of data chunks to a storage of a data plane.

15. The method of claim 14 , wherein a file system manager of the data plane aggregates the one or more identified data chunks of the second plurality of data chunks and one or more other batches of data chunks.

16. The method of claim 15 , wherein the file system manager of the data plane writes the aggregated data chunks to a cloud storage element object located at the cloud storage based on whether a cumulative size of the aggregated data chunks is greater than or equal to the threshold size.

17. The method of claim 1 , wherein identifying the one or more data chunks of the plurality of data chunks that are to be sent via the network to be stored in the cloud storage includes providing metadata associated with the plurality of data chunks to a cloud server.

18. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for: receiving at a client-side component, a specification of content to be stored in a cloud storage; dividing a first portion of the content into a plurality of data chunks; identifying one or more data chunks of the plurality of data chunks that are to be sent via a network to be stored in the cloud storage; receiving a reference to a cloud storage element object to which the one or more identified data chunks are to be written, wherein the reference includes an identifier of the cloud storage element object; determining that a batch size of the one or more identified data chunks does not meet a threshold size for the cloud storage element object to which the one or more identified data chunks are to be written; in response to a determination that the batch size of the one or more identified data chunks does not meet the threshold size for the cloud storage element object to which the one or more identified data chunks are to be written, identifying one or more data chunks of a second portion of the content that are to be stored in the cloud storage; determining that a size of a new batch of data chunks that includes the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content meets the threshold size; in response to determining that the size of the new batch of data chunks meets the threshold size, selecting a cloud storage destination among a plurality of different cloud storage destinations associated with different performance tiers for the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content; and writing the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content to the cloud storage element object having the identifier of the cloud storage element object that is located in the selected cloud storage destination.

19. A system, comprising: one or more processors configured to: receive a specification of content to be stored in a cloud storage; divide a first portion of the content into a plurality of data chunks; identify one or more data chunks of the plurality of data chunks that are to be sent via a network to be stored in the cloud storage; receive a reference to a cloud storage element object to which the one or more identified data chunks are to be written, wherein the reference includes an identifier of the cloud storage element object; determine that a batch size of the one or more identified data chunks does not meet a threshold size for the cloud storage element object to which the one or more identified data chunks are to be written; in response to a determination that the batch size of the one or more identified data chunks does not meet the threshold size for the cloud storage element object to which the one or more identified data chunks are to be written, identify one or more data chunks of a second portion of the content that are to be stored in the cloud storage; determine that a size of a new batch of data chunks that includes the one or more identified data chunks of the first portion of the content and the one or more identified chunks of the second portion of the content meets the threshold size; in response to a determination that the size of the new batch of data chunks meets the threshold size, select a cloud storage destination among a plurality of different cloud storage destinations associated with different performance tiers for the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content; and write the new batch that includes the one or more identified data chunks of the first portion of the content and the one or more identified data chunks of the second portion of the content to the cloud storage element object having the identifier of the cloud storage element object that is located in the selected cloud storage destination; and a memory coupled to the one or more processors and configured to provide the one or more processor with instructions.

Assignments (4)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 10, 2024
From: FIRST-CITIZENS BANK & TRUST COMPANY (AS SUCCESSOR TO SILICON VALLEY BANK)
To: COHESITY, INC.
Reel/Frame 069584/0498 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
SECURITY INTEREST Recorded Sep 23, 2022
From: COHESITY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 061509/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2022
From: GUPTA, ANUBHAV; YARLAGADDA, PRAVEEN KUMAR; GUTURI, VENKATA RANGA RADHANIKANTH; QIU, ZHIHUAN; AGARWAL, SARTHAK
To: COHESITY, INC.
Reel/Frame 060224/0636 →
Continuity (2)
Provisional Application 63074682 · Sep 4, 2020
Related Publication 20220075544A1 · Mar 10, 2022
Cited By (1)
US 12,353,739