IP Library Granted Patent US 10,248,657
Granted Patent B2
US 10,248,657 · App. 15/258,252 · Granted Apr 2, 2019

Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites

Inventors: Anand Prahlad (Bangalore, IN); Marcus S. Muller (Maynard, MA); Rajiv Kottomtharayil (Marlboro, NJ); Srinivas Kavuri (San Jose, CA); Parag Gokhale (Marlboro, NJ); Manoj Kumar Vijayan (Marlboro, NJ)
Assignee: Commvault Systems, Inc.
G06F17/30156G06F3/0605G06F3/067G06F3/0631G06F3/0667G06F17/302G06F17/3002G06F17/30082G06F17/30215G06Q30/02G06Q30/0206G06Q50/188H04L63/0428H04L67/1095H04L67/1097H04L67/28H04L67/2852G06F11/3485G06F2003/0697H04L67/02H04L67/06H04L67/22H04L69/08
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,657
App. No.
15/258,252
Granted
Apr 2, 2019
Kind
B2
Abstract

Data storage operations, including content-indexing, containerized deduplication, and policy-driven storage, are performed within a cloud environment. The systems support a variety of clients and cloud storage sites that may connect to the system in a cloud environment that requires data transfer over wide area networks, such as the Internet, which may have appreciable latency and/or packet loss, using various network protocols, including HTTP and FTP. Methods are disclosed for content indexing data stored within a cloud environment to facilitate later searching, including collaborative searching. Methods are also disclosed for performing containerized deduplication to reduce the strain on a system namespace, effectuate cost savings, etc. Methods are disclosed for identifying suitable storage locations, including suitable cloud storage sites, for data files subject to a storage policy. Further, systems and methods for providing a cloud gateway and a scalable data object store within a cloud environment are disclosed, along with other features.

Claims (129)

1. A method for storing a secondary copy, of an original data set, on a cloud storage site using a cloud gateway, wherein the cloud gateway is coupled between multiple computers and one or more cloud storage sites via a network, the method comprising:

identifying data blocks within a cache of the cloud gateway that satisfy certain criteria,

wherein the original data set comprises data blocks, and

wherein the certain criteria are from a storage policy;

performing block-level deduplication of the identified data blocks to create a deduplicated set of data,

wherein the block-level deduplication includes—

determining a size for a container file to utilize when deduplicating the identified data blocks; and

deduplicating at least some of the identified data blocks to create one or more container files containing deduplicated data,

wherein at least one of the container files has the determined size; and

storing the deduplicated set of data on the cloud storage site by:

buffering data, to a data buffer, for transmission to the cloud storage site;

repeating the following steps while the data buffer is not full:

receiving a file system request to write a group of data to the cloud storage site; and

adding the group of data to the buffer;

converting a file system request to one or more application program interface calls associated with the cloud storage site; and

transmitting contents of the data buffer to the cloud storage site using the one or more application program interface calls associated with the cloud storage site.

2. The method of claim 1 , further comprising identifying the cloud storage site on which to store the secondary copy of the original data set by:

identifying two or more candidate cloud storage sites;

accessing a storage policy having a set of preferences and storage criteria,

wherein the set of preferences and storage criteria includes at least two of the following:

one or more preferred cloud storage sites,

one or more preferred classes or quality of cloud storage sites,

requirements regarding deduplication of the original data set,

requirements regarding encryption of the original data set,

requirements regarding compression of the original data set,

quality of a network connection available to the cloud storage site,

one or more data retention periods,

data characteristics of at least some data in the original data set,

estimated or historic usage associated with operating one or more system components,

frequency with which the original data set was accessed or modified during a particular time period,

a specified level of fault tolerance, or

one or more geographical locations or political states in which data storage devices for a cloud storage site exist; and

selecting at least one of the two or more of the candidate cloud storage sites based at least in part on the set of preferences and storage criteria in the storage policy.

3. The method of claim 1 wherein the contents of the data buffer are transmitted to the cloud storage site using at least one of hypertext transfer protocol (HTTP) and HTTP over Transport Layer Security/Secure Sockets Layer.

4. The method of claim 1 wherein the certain criteria include time-based criteria.

5. A system for creating a secondary copy of an original data set using a cloud storage site, the system comprising a memory and processor that are configured to:

identify sub-objects of the original data set that satisfy certain criteria,

wherein the certain criteria are related a storage policy, and

wherein the original data set is received from one or more client computers;

perform deduplication of the identified data sub-objects to create a deduplicated set of data; and,

forward the deduplicated set of data to the cloud storage site, wherein the forwarding includes:

converting file system requests into application program interface calls associated with the cloud storage site; and,

forwarding the data to the cloud storage site using the one or more application program interface calls associated with the cloud storage site.

6. The system of claim 5 , wherein the memory and processor are further configured to:

determine a size for a container file and for deduplicating at least some of the data sub-objects to create one or more container files containing deduplicated data, wherein at least one of the container files has the determined size.

7. The system of claim 5 , wherein the forwarding further includes:

buffering data, to a data buffer, for transmission to the cloud storage site by:

receiving a file system request to write a group of data to the cloud storage site; and

adding the group of data to the data buffer.

8. The system of claim 5 , wherein the certain criteria include time-based criteria, wherein the deduplication includes block-level deduplication, and wherein the block-level deduplication includes—

determining a size for a container file to utilize when deduplicating the identified data blocks; and

deduplicating at least some of the identified data blocks to create one or more container files containing deduplicated data,

wherein at least one of the container files has the determined size; and

wherein the container file is forwarded to the cloud storage site.

9. The system of claim 5 , wherein the forwarding further includes:

buffering data, to a data buffer, for transmission to the cloud storage site by repeating the following steps while the data buffer is not full:

receiving a file system request to write a group of data to the cloud storage site; and

adding the group of data to the buffer.

10. A computer-implemented method for copying multiple files at a cloud storage site, wherein the cloud storage site is coupled to a computer executing a file system for accessing a secondary storage computing device, the method comprising:

receiving a copy operation request to copy n number of files at the cloud storage site,

wherein each of the n number of files includes metadata and data, and

wherein the n number of files exceeds a threshold;

establishing a container size determined by one or more factors

processing the n number of files by—

copying the metadata of each of the n number of files to a first container;

copying at least a portion of the data for the n number of files into a second container, wherein the second container is separate from the first container; and

updating a data structure, wherein the data structure—

tracks, for each of the n number of files, a location of the metadata for that file in the first container, and

tracks, for the at least a portion of the data for the n number of files, a location of the data in the second container.

11. The computer-implemented method of claim 10 wherein the threshold is a number of files that the file system can operate on without system degradation.

12. The computer-implemented method of claim 10 wherein the threshold is related to at least of one of the factors.

13. The computer-implemented method of claim 10 wherein the factors include at least one of:

a latency associated with a network connection to the cloud storage site, or

a bandwidth associated with a network connection to the cloud storage site, or

whether the cloud storage site imposes a restriction on a namespace associated with the computer or the file system, or

whether the cloud storage site permits sparsification of data files, or

a pricing structure associated with the cloud storage site, or

a maximum specified container file size, or

a minimum specified container file size.

14. The computer-implemented method of claim 10 wherein the size of at least one of the first and second containers is no greater than the established container size.

15. A tangible computer-readable storage medium whose contents cause a data storage system to perform a method of migrating data from local primary storage to secondary storage located on a remote cloud storage site, the method comprising:

identifying no more than n−1 data blocks, located within the local primary storage, that satisfy a criteria,

wherein the n−1 data blocks represent a portion of a data file consisting of n blocks, and

wherein the n blocks contain data written by a file system associated with the local primary storage; and

determining a size for a container file in which to store some or all of the no more than n−1 data blocks;

transferring data contained by the identified no more than n−1 data blocks from the primary storage to the secondary storage located on a cloud storage site,

wherein transferring data includes writing data first to a container file of the determined size; and

updating an index with information associating the transferred data with information identifying blocks within the secondary storage that contain the transferred data,

wherein the information includes at least one uniform resource locator or logical address that identifies at least one logical location from which the transferred data may be accessed.

16. The tangible computer-readable storage medium of claim 15 wherein the index further comprises information associating the transferred data with information identifying tape offsets for secondary storage that contain the transferred data.

17. The tangible computer-readable storage medium of claim 15 , further comprising:

receiving a copy operation request to copy m number of files at the cloud storage site,

wherein each of the m number of files includes metadata and data, and

wherein the m number of files exceeds a size threshold.

18. The tangible computer-readable storage medium of claim 15 , wherein determining the size for the container file considers:

a latency associated with a network connection to the secondary storage computing device; or

a bandwidth associated with a network connection to the secondary storage computing device.

19. The tangible computer-readable storage medium of claim 15 , wherein determining the size for the container file considers:

whether the cloud storage site imposes a restriction on a namespace associated with the computer or the file system; or

whether the cloud storage site permits sparsification of data files.

20. The tangible computer-readable storage medium of claim 15 , wherein determining the size for the container file considers:

a pricing structure associated with the cloud storage site;

a maximum specified container file size; or

a minimum specified container file size.

21. A system for storing, on a cloud storage site, a secondary copy of an original data set, the system comprising:

at least one processor;

memory coupled to the at least one processor, wherein the memory stores contents that, when executed by the at least one processor performs a method of:

identifying a cloud storage site on which to store a secondary copy of a primary data set;

updating an index of content to reflect at least some data content in the primary data set;

deduplicating at least some of the data content in the primary data set;

creating one or more container files containing the deduplicated data; and

transferring the one or more container files to the cloud storage site,

wherein the transferring includes:

converting file system requests into application program interface calls associated with the cloud storage site; and,

forwarding the one or more container files to the cloud storage site using one or more application program interface calls associated with the cloud storage site.

22. The system of claim 21 wherein the transferring further includes:

buffering the one or more container files, to a data buffer, for transmission to the cloud storage site by repeating the following steps while the data buffer is not full:

receiving a file system request to write a group of data to the cloud storage site; and

adding the group of data to the buffer.

23. The system of claim 21 wherein the memory and processor are further configured to:

determine a size for a container file based on one or more factors,

wherein the factors include at least one of:

a latency associated with a network connection to the secondary storage computing device, or

a bandwidth associated with a network connection to the secondary storage computing device, or

whether the cloud storage site permits sparsification of data files, or

a pricing structure associated with the cloud storage site, or

a maximum specified container file size, or

a minimum specified container file size; and

wherein at least one of the container files has the determined size.

Assignments (3)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
SECURITY INTEREST Recorded Dec 13, 2021
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058496/0836 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2016
From: PRAHLAD, ANAND; MULLER, MARCUS S.; KOTTOMTHARAYIL, RAJIV; KAVURI, SRINIVAS; GOKHALE, PARAG; VIJAYAN, MANOJ
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 039659/0057 →
Continuity (7)
Division 14494674 · Sep 24, 2014
Continuation 13615999 · Sep 14, 2012
Continuation 12751850 · Mar 31, 2010
Provisional Application 61299313 · Jan 28, 2010
Provisional Application 61223695 · Jul 7, 2009
Provisional Application 61221993 · Jun 30, 2009
Related Publication 20170039218A1 · Feb 9, 2017
Cited By (59)
US 12,189,499 US 12,197,293 US 12,197,398 US 12,206,560 US 12,217,039 US 12,235,799 US 12,242,455 US 12,248,434 US 12,248,435 US 12,294,622 US 12,306,819 US 12,307,238 US 12,321,592 US 12,335,123 US 12,339,747 US 12,360,942 US 12,367,108 US 12,367,177 US 12,373,397 US 12,380,006 US 12,387,236 US 12,399,869 US 12,400,015 US 12,417,205 US 12,423,092 US 12,436,759 US 12,455,856 US 12,455,860 US 12,461,695 US 12,461,776 US 12,461,832 US 12,481,538 US 12,481,638 US 12,511,473 US 12,517,874 US 12,536,561 US 12,541,431 US 12,541,486 US 12,547,582 US 12,568,160 US 12,572,503 US 12,574,340 US 12,579,041 US 12,585,552 US 12,591,700 US 12,608,286 US 12,613,781 US 12,613,857 US 12,619,754 US 12,627,681 US 12,641,166 US 12,657,097 US 12,688,289 US 12,688,312 US 12,693,999 US 12,699,560 US 12,699,632 US 12,699,685 US 12,710,952