IP Library Granted Patent US 12,159,047
Granted Patent B2
US 12,159,047 · App. 18/139,291 · Granted Dec 3, 2024

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/0644G06F3/0604G06F3/0608G06F3/0631G06F3/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,159,047
App. No.
18/139,291
Granted
Dec 3, 2024
Kind
B2
Abstract

A cloud server component determines that a size of a first cloud storage element object is at least below a first threshold. In response to the first determination, a client-side component is requested to store additional data in the cloud storage element object including by having the client-side component update the first cloud storage element with an updated version that includes previously existing data of the first cloud storage element and the additional data. The first cloud storage element object is added to a set of one or more cloud storage element objects available for update. The client-side component is configured to generate an updated version of the first cloud storage element object that has a size that is greater than or equal to the first threshold.

Claims (33)

1. A method, comprising:

determining at a cloud server that a first size of a first cloud storage element object is at least below a first threshold;

in response to a first determination, requesting a client-side component to store additional data in the first cloud storage element object including by having the client-side component update the first cloud storage element object with an updated version that includes previously existing data of the first cloud storage element object and the additional data; and

adding the first cloud storage element object to a set of one or more cloud storage element objects available for update, wherein the client-side component selects the first cloud storage element object from the set of one or more cloud storage element objects available for update, wherein the client-side component generates the updated version of the first cloud storage element object that has a second size that is greater than or equal to the first threshold, wherein to generate the updated version of the first cloud storage element object, the client-side component determines that the previously existing data of the first cloud storage element object is not stored in a cache storage of the client-side component, and in response to determining that the previously existing data of the first cloud storage element object is not stored in the cache storage of the client-side component, the client-side component reads the first cloud storage element object, and uses the read data of the first cloud storage element object and additional data to generate the updated version of the first cloud storage element object.

2. The method of claim 1 , further comprising monitoring a cloud storage storing the first cloud storage element object.

3. The method of claim 1 , wherein an initial size of the first cloud storage element object was above the first threshold and a current size of the first cloud storage element object is below the first threshold.

4. The method of claim 1 , wherein an initial size and a current size of the first cloud storage element object are below the first threshold.

5. The method of claim 1 , wherein an identifier associated with the first cloud storage element object is included in the set of one or more cloud storage element objects available for update.

6. The method of claim 1 , wherein the read data of the first cloud storage element object and the additional data are encrypted using an encryption key received from the cloud server.

7. The method of claim 6 , wherein the encryption key is for a particular storage tenant.

8. The method of claim 6 , wherein the encryption key enables read or write access for the first cloud storage element object at a credential level.

9. The method of claim 6 , wherein the encryption key enables read or write access for the first cloud storage element object at a prefix level.

10. The method of claim 9 , wherein the prefix level is a partial file path in cloud storage.

11. The method of claim 9 , wherein the prefix level is a full file path in cloud storage.

12. The method of claim 6 , wherein the encryption key expires after a particular amount of time.

13. The method of claim 1 , wherein the updated version of the first cloud storage element object is associated with a corresponding identifier and corresponding version number.

14. The method of claim 1 , further comprising:

determining that a third size of a second cloud storage element object is above the first threshold but below a second threshold; and

in response to a second determination, storing new data chunks in the second cloud storage element object including by updating the second cloud storage element object to be an updated version of the second cloud storage element object that includes previously existing data of the second cloud storage element object and the new data chunks.

15. The method of claim 14 , wherein the client-side component encrypts the previously existing data of the second cloud storage element object and the new data chunks using an encryption key associated with a storage tenant.

16. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

determining at a cloud server that a size of a first cloud storage element object is at least below a first threshold;

in response to a first determination, requesting a client-side component to store additional data in the first cloud storage element object including by having the client-side component update the first cloud storage element object with an updated version that includes previously existing data of the first cloud storage element object and the additional data; and

adding the first cloud storage element object to a set of one or more cloud storage element objects available for update, wherein the client-side component selects the first cloud storage element object from the set of one or more cloud storage element objects available for update, wherein the client-side component generates the updated version of the first cloud storage element object that has a second size that is greater than or equal to the first threshold, wherein to generate the updated version of the first cloud storage element object, the client-side component determines that the previously existing data of the first cloud storage element object is not stored in a cache storage of the client-side component and in response to determining that the previously existing data of the first cloud storage element object is not stored in the cache storage of the client-side component, the client-side component uses the previously existing data of the first cloud storage element object stored in the cache storage of the client-side component and additional data to generate the updated version of the first cloud storage element object.

17. The computer program product of claim 16 , further comprising computer instructions for monitoring a cloud storage storing the first cloud storage element object.

18. The computer program product of claim 16 , wherein an initial size of the first cloud storage element object was above the first threshold and a current size of the first cloud storage element object is below the first threshold.

19. The computer program product of claim 16 , wherein an initial size and a current size of the first cloud storage element object are below the first threshold.

20. A system, comprising:

one or more processors configured to:

determine at a cloud server that a first size of a first cloud storage element object is at least below a first threshold;

in response to a first determination, request a client-side component to store additional data in the first cloud storage element object including by having the client-side component update the first cloud storage element object with an updated version that includes previously existing data of the first cloud storage element object and the additional data; and

add the first cloud storage element object to a set of one or more cloud storage element objects available for update, wherein the client-side component selects the first cloud storage element object from the set of one or more cloud storage element objects available for update, wherein the client-side component is configured to generate the updated version of the first cloud storage element object that has a second size that is greater than or equal to the first threshold, wherein to generate the updated version of the first cloud storage element object, the client-side component determines that the previously existing data of the first cloud storage element object is not stored in a cache storage of the client-side component and in response to determining that the previously existing data of the first cloud storage element object is not stored in the cache storage of the client-side component, the client-side component uses the previously existing data of the first cloud storage element object stored in the cache storage of the client-side component and additional data to generate the updated version of the first cloud storage element object; and

a memory coupled to the one or more processors and configured to provide the one or more processors with instructions.

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 May 23, 2023
From: GUPTA, ANUBHAV; YARLAGADDA, PRAVEEN KUMAR; GUTURI, VENKATA RANGA RADHANIKANTH; QIU, ZHIHUAN; AGARWAL, SARTHAK
To: COHESITY, INC.
Reel/Frame 063735/0761 →
Continuity (3)
Continuation 17402206 · Aug 13, 2021
Provisional Application 63074682 · Sep 4, 2020
Related Publication 20230280924A1 · Sep 7, 2023