IP Library Granted Patent US 12,353,739
Granted Patent B2
US 12,353,739 · App. 18/486,861 · Granted Jul 8, 2025

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 12,353,739
App. No.
18/486,861
Granted
Jul 8, 2025
Kind
B2
Abstract

A specification of content to be stored in a cloud storage is received at a client-side component. A first 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 does not meets a threshold size. One or more data chunks of a second portion of the content that are to be stored in the cloud storage are identified. It is determined that a size of a second 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 does not meet the threshold size. It is determined that a batch period is greater than or equal to a batch threshold period. The second batch of data chunks is written to a storage of a cloud server included in a data plane.

Claims (52)

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;

determining that a batch size of a first batch of data chunks that includes the one or more identified data chunks does not meet a threshold size for a 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 first batch of data chunks does not meet the threshold size for the cloud storage element object to which the first batch of 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 second 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 does not meet the threshold size;

determining that a batch period is greater than or equal to a batch threshold period; and

in response to determining that the size of the second batch of data chunks does not meet the threshold size and determining that the batch period is greater than or equal to the batch threshold period, writing the second batch of data chunks to a storage of a cloud server included in a data plane, wherein the storage of the cloud server included in the data plane is different than a cloud storage tier for a batch of data chunks having the batch size that meets the threshold size.

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 of the plurality of data chunks;

sending the one or more corresponding chunk identifiers to a file system manager at the data plane, 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 , wherein the cloud server aggregates the second batch of data chunks with one or more other batches of data chunks.

5. The method of claim 4 , wherein the one or more other batches of data chunks are received from the client-side component.

6. The method of claim 4 , wherein at least one of the one or more other batches of data chunks is received from a second client-side component.

7. The method of claim 6 , wherein the second client-side component is located in a same datacenter as the client-side component.

8. The method of claim 6 , wherein the second client-side component is located in a different datacenter as the client-side component.

9. The method of claim 4 , wherein the cloud server determines that a cumulative size of the aggregated data chunks is greater than an aggregated threshold size and less than a maximum size for the cloud storage element object.

10. The method of claim 9 , wherein in response to determining that the cumulative size of the aggregated data chunks is greater than the aggregated threshold size and less than the maximum size for the cloud storage element object, the cloud server writes the aggregated data chunks to the cloud storage element object.

11. The method of claim 10 , wherein the aggregated data chunks are encrypted.

12. The method of claim 10 , wherein the aggregated data chunks are compressed.

13. The method of claim 1 , further comprising receiving a reference to the cloud storage element object to which the one or more identified data chunks are to be written.

14. The method of claim 13 , wherein the reference includes an identifier of the cloud storage element object.

15. The method of claim 1 , wherein the cloud storage element object is available for a threshold period of time.

16. The method of claim 1 , wherein the cloud storage element object is stored in a first performance tier of the cloud storage.

17. A computer program product embodied in non-transitory computer readable storage media storing instructions that, when executed, cause one or more processors to:

receive at a client-side component, 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;

determine that a batch size of a first batch of data chunks that includes the one or more identified data chunks does not meet a threshold size for a 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 first batch of data chunks does not meet the threshold size for the cloud storage element object to which the first batch of 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 second 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 does not meet the threshold size;

determine that a batch period is greater than or equal to a batch threshold period; and

in response to determining that the size of the second batch of data chunks does not meet the threshold size and determining that the batch period is greater than or equal to the batch threshold period, write the second batch of data chunks to a storage of a cloud server included in a data plane, wherein the storage of the cloud server included in the data plane is different than a cloud storage tier for a batch of data chunks having the batch size that meets the threshold size.

18. The computer program product of claim 17 , further comprising instructions that, when executed, cause the one or more processors to receive the first portion of the content from a source system.

19. The computer program product of claim 17 , wherein the instructions that, when executed, cause the one or more processors to identify 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 include instructions that, when executed, cause the one or more processors to:

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

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

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

20. A system, comprising:

a memory storing instructions; and

one or more processors coupled to the memory and configured to execute the instructions 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;

determine that a batch size of a first batch of data chunks that includes the one or more identified data chunks does not meet a threshold size for a 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 first batch of data chunks does not meet the threshold size for cloud storage element object to which the first batch of 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;

determine that a size of a second 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 does not meet the threshold size;

determine that a batch period is greater than or equal to a batch threshold period; and

in response to determining that the size of the second batch of data chunks does not meet the threshold size and determining that the batch period is greater than or equal to the batch threshold period, writing the second batch of data chunks to a storage of a cloud server included in a data plane, wherein the storage of the cloud server included in the data plane is different than a cloud storage tier for a batch of data chunks having the batch size that meets the threshold size.

Assignments (2)
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2024
From: GUPTA, ANUBHAV; YARLAGADDA, PRAVEEN KUMAR; GUTURI, VENKATA RANGA RADHANIKANTH; QIU, ZHIHUAN; AGARWAL, SARTHAK
To: COHESITY, INC.
Reel/Frame 066103/0289 →
Continuity (3)
Continuation 17402198 · Aug 13, 2021
Provisional Application 63074682 · Sep 4, 2020
Related Publication 20240036751A1 · Feb 1, 2024
References Cited (45)
US 5239647A · Anglin · 1993 [cited by applicant]
US 8918439B2 · Alatorre · 2014 [cited by applicant]
US 9280550B1 · Hsu · 2016 [cited by applicant]
US 9286344B1 · Bhardwaj · 2016 [cited by applicant]
US 9588977B1 · Wang · 2017 [cited by applicant]
US 9696913B1 · Aron · 2017 [cited by applicant]
US 9747287B1 · Bhardwaj · 2017 [cited by applicant]
US 9959138B1 · Vaish · 2018 [cited by applicant]
US 10037337B1 · Shanmuganathan · 2018 [cited by applicant]
US 10176550B1 · Baggerman · 2019 [cited by applicant]
US 10540328B1 · Mankude · 2020 [cited by applicant]
US 10659526B2 · Khalid · 2020 [cited by applicant]
US 10783269B1 · Shraer · 2020 [cited by applicant]
US 10911540B1 · Gunasekaran · 2021 [cited by applicant]
US 10929176B2 · Chinthekindi · 2021 [cited by applicant]
US 11233846B2 · Khalid · 2022 [cited by applicant]
US 11249899B2 · Gaonkar · 2022 [cited by applicant]
US 11435939B2 · Singler, Jr. · 2022 [cited by applicant]
US 11842060B2 · Gupta · 2023 [cited by examiner]
US 20070234369A1 · Paramisivam · 2007 [cited by applicant]
US 20130086303A1 · Ludwig · 2013 [cited by applicant]
US 20130204849A1 · Chacko · 2013 [cited by applicant]
US 20160019125A1 · Madduri · 2016 [cited by applicant]
US 20160021026A1 · Aron · 2016 [cited by applicant]
US 20160034507A1 · Aron · 2016 [cited by applicant]
US 20160034508A1 · Aron · 2016 [cited by applicant]
US 20160117336A1 · Aron · 2016 [cited by applicant]
US 20160352833A1 · Dhamdhere · 2016 [cited by applicant]
US 20190034507A1 · Duttagupta · 2019 [cited by applicant]
US 20190065508A1 · Guturi · 2019 [cited by applicant]
US 20190369890A1 · Danilov · 2019 [cited by applicant]
US 20210133060A1 · David · 2021 [cited by applicant]
US 20210165575A1 · Hutcheson, Jr. · 2021 [cited by applicant]
US 20220114006A1 · Raghavan · 2022 [cited by applicant]
Y.-F. Hsu, R. Irie, S. Murata and M. Matsuoka, “A Novel Automated Cloud Storage Tiering System through Hot-Cold Data Classification,” 2018 IEEE 11th International Conference on Cloud Computing (CLOUD), San Francisco, CA… [cited by examiner]
C. Gudisagar, B. R. Sahoo, M. Sushma and C. D. Jaidhar, “Secure data migration between cloud storage systems,” 2017 International Conference on Advances in Computing, Communications and Informatics (ICACCI), Udupi, Indi… [cited by examiner]
Z. Duan, Y. Cao and M. Song, “A construction method and data migration strategy for hybrid cloud storage,” 2015 18th International Conference on Computer and Information Technology (ICCIT), Dhaka, Bangladesh, 2015, pp. … [cited by examiner]
G. Zhang, L. Chiu and L. Liu, “Adaptive Data Migration in Multi-tiered Storage Based Cloud Environment,” 2010 IEEE 3rd International Conference on Cloud Computing, Miami, FL, USA, 2010, pp. 148-155, doi: 10.1109/CLOUD.2… [cited by examiner]
Hsu et al., “A Novel Automated Cloud Storage Tiering System through Hot-Cold Data Classification”, 2018 IEEE 11th International Conference on Cloud Computing (CLOUD); Jul. 2-7, 2018; pp. 492-499. (Year: 2018). [cited by applicant]
Zhang et al., “Adaptive Data Migration in Multi-Tiered Storage Based Cloud Environment,” 2010 IEEE 3rd International Conference on Cloud Computing, Miami, FL, USA, 2010, pp. 148-155, doi: 10.1109/CLOUD.2010.60. [cited by applicant]
Zhang et al., “LayerMover: Storage Migration of Virtual Machine across Data Centers Based on Three-Layer Image Structure,” 2016 IEEE 24th International Symposium on Modeling, Analysis and Simulation of Computer and Tele… [cited by applicant]
Zhu et al., “Backing Up Your Data to the Cloud: Want to Pay Less?,” 2013 42nd International Conference on Parallel Processing, Lyon, France, 2013, pp. 409-418, doi: 10.1109/ICPP.2013.50. (Year: 2013). [cited by applicant]
International Preliminary Report on Patentability from International Application No. PCT/US2021/049105 dated Mar. 7, 2023, 6 pp. [cited by applicant]
International Search Report and Written Opinion of International Application No. PCT/US2021/049105 dated Dec. 20, 2021, 8 pp. [cited by applicant]
Prosecution History from U.S. Appl. No. 17/402,198, now issued U.S. Pat. No. 11,842,060, dated Feb. 24, 20222 through Oct. 18, 2023, 134 pp. [cited by applicant]