IP Library Granted Patent US 11,340,824
Granted Patent B1
US 11,340,824 · App. 17/141,475 · Granted May 24, 2022

Efficient object storage management when performing backups to a cloud-based object storage

Inventors: Sunil Yadav (Bangalore, IN); Ravi Vijayakumar Chitloor (Bengaluru, IN); Shelesh Chopra (Bangalore, IN); Amarendra Behera (Bangalore, IN); Tushar Dethe (Bangalore, IN); Jigar Bhanushali (Valsad, IN); Deependra Singh (Kanpur, IN); Himanshu Arora (Bangalore, IN); Prabhat Kumar Dubey (Chikkanagamangala, IN)
Assignee: EMC IP Holding Company LLC
G06F3/065G06F3/067G06F3/0619G06F16/2379H04L67/1097
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,340,824
App. No.
17/141,475
Granted
May 24, 2022
Kind
B1
Abstract

Described is a system (and method) for efficient object storage management when backing up data to a cloud-based object storage. The system may be implemented as part of a server (or gateway) that provides a backup service to a client device by acting as an intermediary when backing up data from the client device to a third-party cloud-based object storage. The system may implement various specialized procedures to efficiently store backup data as objects within the object storage. The procedures may include packing client data into objects of a consistent size to improve storage performance. The system may also improve storage performance and conserve storage by analyzing the data stored within an object and reallocating the data as necessary. More particularly, the system may efficiently reallocate data to new objects when the amount of live data within an object falls below a predetermined threshold.

Claims (71)

1. A system comprising:

one or more processors; and

a non-transitory computer-readable medium storing a plurality of instructions, which when executed, cause the one or more processors to:

perform a first backup of client data stored on a client device at a first point-in-time to a cloud-based object storage, the first backup including

storing the client data within a first object on the object storage, and

storing a first set of metadata identifying the client data stored within the first object as part of a metadata database;

perform a second backup of the client data stored on the client device at a second point-in-time to the object storage, the second backup including

storing new client data since the first point-in-time within a second object on the object storage,

storing a second set of metadata identifying the new client data stored within the second object as part of the metadata database, and

storing a third set of metadata identifying the client data that has been deleted from the client device since the first backup as part of the metadata database;

determine whether an amount of live data remaining within the first object falls below a predetermined threshold;

create a third object within the object storage to store the remaining live data, in response to determining the amount of live data remaining within the first object falls below the predetermined threshold; and

update the metadata database to identify the remaining live data is stored within the third object.

2. The system of claim 1 , wherein the plurality of instructions, when executed, further cause the one or more processors to:

determine whether the client data stored in the first object expires before the client data stored in the second object, and

wherein the third object is created in further response to determining the client data stored in the first object expires before the client data stored in the second object.

3. The system of claim 1 , wherein the plurality of instructions, when executed, further cause the one or more processors to:

delete the first object in response to creating the third object to store the remaining live data.

4. The system of claim 1 , wherein the plurality of instructions, when executed, further cause the one or more processors to:

identify the client data that has been deleted since the first backup is stored within the first object based on a search of the metadata database.

5. The system of claim 1 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold is in response to recognizing that client data has been deleted from the client device since the first backup.

6. The system of claim 1 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold includes:

retrieving, from the metadata database, at least some of the first set of metadata identifying the client data stored within the first object and the third set of metadata identifying the client data that has been deleted since the first backup; and

determining the amount of live data remaining within the first object based on data size information obtained from the retrieved first set of metadata and the retrieved third set of metadata.

7. The system of claim 6 , wherein the predetermined threshold is based on the amount of live data remaining within the first object compared to an amount of the client data stored within the first object that has been deleted since the first backup.

8. A method comprising:

performing a first backup of client data stored on a client device at a first point-in-time to a cloud-based object storage, the first backup including

storing the client data within a first object on the object storage, and

storing a first set of metadata identifying the client data stored within the first object as part of a metadata database;

performing a second backup of the client data stored on the client device at a second point-in-time to the object storage, the second backup including

storing new client data since the first point-in-time within a second object on the object storage,

storing a second set of metadata identifying the new client data stored within the second object as part of the metadata database, and

storing a third set of metadata identifying the client data that has been deleted from the client device since the first backup as part of the metadata database;

determining whether an amount of live data remaining within the first object falls below a predetermined threshold;

creating a third object within the object storage to store the remaining live data, in response to determining the amount of live data remaining within the first object falls below the predetermined threshold; and

updating the metadata database to identify the remaining live data is stored within the third object.

9. The method of claim 8 , further comprising:

determining whether the client data stored in the first object expires before the client data stored in the second object, and

wherein the third object is created in further response to determining the client data stored in the first object expires before the client data stored in the second object.

10. The method of claim 8 , further comprising:

deleting the first object in response to creating the third object to store the remaining live data.

11. The method of claim 8 , further comprising:

identifying the client data that has been deleted since the first backup is stored within the first object based on a search of the metadata database.

12. The method of claim 8 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold is in response to recognizing that client data has been deleted from the client device since the first backup.

13. The method of claim 8 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold includes:

retrieving, from the metadata database, at least some of the first set of metadata identifying the client data stored within the first object and the third set of metadata identifying the client data that has been deleted since the first backup; and

determining the amount of live data remaining within the first object based on data size information obtained from the retrieved first set of metadata and the retrieved third set of metadata.

14. The method of claim 13 , wherein the predetermined threshold is based on the amount of live data remaining within the first object compared to an amount of the client data stored within the first object that has been deleted since the first backup.

15. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein to be executed by one or more processors, the program code including instructions to:

perform a first backup of client data stored on a client device at a first point-in-time to a cloud-based object storage, the first backup including

storing the client data within a first object on the object storage, and

storing a first set of metadata identifying the client data stored within the first object as part of a metadata database;

perform a second backup of the client data stored on the client device at a second point-in-time to the object storage, the second backup including

storing new client data since the first point-in-time within a second object on the object storage,

storing a second set of metadata identifying the new client data stored within the second object as part of the metadata database, and

storing a third set of metadata identifying the client data that has been deleted from the client device since the first backup as part of the metadata database;

determine whether an amount of live data remaining within the first object falls below a predetermined threshold;

create a third object within the object storage to store the remaining live data, in response to determining the amount of live data remaining within the first object falls below the predetermined threshold; and

update the metadata database to identify the remaining live data is stored within the third object.

16. The computer program product of claim 15 , wherein the program code includes further instructions to:

determine whether the client data stored in the first object expires before the client data stored in the second object, and

wherein the third object is created in further response to determining the client data stored in the first object expires before the client data stored in the second object.

17. The computer program product of claim 15 , wherein the program code includes further instructions to:

delete the first object in response to creating the third object to store the remaining live data.

18. The computer program product of claim 15 , wherein the program code includes further instructions to:

identify the client data that has been deleted since the first backup is stored within the first object based on a search of the metadata database.

19. The computer program product of claim 15 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold is in response to recognizing that client data has been deleted from the client device since the first backup.

20. The computer program product of claim 15 , wherein the determining whether the amount of live data remaining within the first object falls below the predetermined threshold includes:

retrieving, from the metadata database, at least some of the first set of metadata identifying the client data stored within the first object and the third set of metadata identifying the client data that has been deleted since the first backup; and

determining the amount of live data remaining within the first object based on data size information obtained from the retrieved first set of metadata and the retrieved third set of metadata, and

wherein the predetermined threshold is based on the amount of live data remaining within the first object compared to an amount of the client data stored within the first object that has been deleted since the first backup.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 5, 2021
From: YADAV, SUNIL; CHITLOOR, RAVI VIJAYAKUMAR; CHOPRA, SHELESH; BEHERA, AMARENDRA; DETHE, TUSHAR; BHANUSHALI, JIGAR; SINGH, DEEPENDRA; ARORA, HIMANSHU; DUBEY, PRABHAT KUMAR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054812/0363 →
Cited By (8)
US 12,229,582 US 12,271,270 US 12,306,792 US 12,386,713 US 12,399,786 US 12,399,787 US 12,488,130 US 12,625,987