# US 11,907,168 B2 · Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,168 B2
- Document ID: US11907168B2
- Status: Granted
- Kind: B2
- Application number: 17/696,742
- Filed: 2022-03-16
- Published: 2022-10-06
- Granted: 2024-02-20
- Earliest claimed: 2009-06-30
- Assignees: Commvault Systems, Inc.
- Applicants: Commvault Systems, Inc.
- Inventors: Anand Prahlad; Marcus S. Muller; Rajiv Kottomtharayil; Srinivas Kavuri; Parag Gokhale; Manoj Kumar Vijayan
- Web page: https://patentgrep.com/patent/US11907168B2

## CPC

- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0626: {Reducing size or complexity of storage systems}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/0649: {Lifecycle management}
- G06F 3/0667: {at data level, e.g. file, record or object virtualisation}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 16/122: {using management policies (point-in-time backing up or restoration of persistent data G06F11/1446; file migration policies for HSM systems G06F16/185)}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/1827: {Management specifically adapted to NAS (management of storage area networks [SAN] G06F3/067)}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/41: Indexing; Data structures therefor; Storage structures
- G06Q 30/02: Marketing; Price estimation or determination; Fundraising
- G06Q 30/0206: {Price or cost determination based on market factors}
- G06Q 50/188: {Electronic negotiation}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 67/5682: Policies or rules for updating, deleting or replacing the stored data
- G06F 3/06: Digital input from, or digital output to, record carriers {, e.g. RAID, emulated record carriers or networked record carriers}
- G06F 11/3485: {for I/O devices}
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L 67/535: {Tracking the activity of the user (network monitoring arrangements H04L43/00; recording of computer activity G06F11/34)}
- H04L 69/08: Protocols for interworking; Protocol conversion
- Y04S 40/20: Information technology specific aspects, e.g. CAD, simulation, modelling, system security
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y04S: SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS

## 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

### Claim 1

A computer-implemented method for encrypting files stored within a cloud storage site, the computer-implemented method comprising:
receiving a request to encrypt a data file located on a cloud storage site;
receiving an indication of a requested type of encryption method to utilize when encrypting the data file located on the cloud storage site,
wherein the requested type of encryption method is one of multiple types of encryption methods; and
determining whether the requested type of encryption method is supported by one or more application programming interfaces (APIs) provided by the cloud storage site;
when the requested type of encryption method is supported by the one or more APIs provided by the cloud storage site,
then utilizing the one or more APIs provided by the cloud storage site to encrypt the data file; and
when the requested type of encryption method is not supported by the one or more APIs provided by the cloud storage site,
then performing:
downloading a copy of the data file from the cloud storage site;
content indexing data in the downloaded copy of the data file by creating or updating at least one index associated with the data file;
encrypting the downloaded copy of the data file to create an encrypted version of the data file; and
sending the encrypted version of the data file to the cloud storage site via the one or more APIs to either—
overwrite the data file stored on the cloud storage site with the encrypted version of the data file, or
write the encrypted version of the data file to the cloud storage site and delete the data file stored on the cloud storage site.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising:
when the requested type of encryption method is supported by the one or more APIs provided by the cloud storage site, then utilizing a mapping to generate API calls to encrypt the data file.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising receiving one or more encryption keys from a user computer associated with the data file.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising transmitting APIs to the cloud storage site using at least one of hypertext transfer protocol (HTTP) and HTTP over Transport Layer Security/Secure Sockets Layer.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising providing a web-based search capability for searching for content in the data file, wherein the web-based search capability is performed without having to access data stored in the cloud storage site.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising receiving a request to compress a data file located on a cloud storage site, and determining whether the requested compression is supported by one or more application programming interfaces (APIs) provided by the cloud storage site.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, the computer-implemented method further comprising using a cloud storage site API to provide a command to encrypt the data file using an encryption method that does not result in the cloud storage site receiving a decryption key or does not result in the cloud storage site retaining information sufficient to decrypt the data file.

### Claim 8

A computer-implemented method for pruning files containing data, the computer-implemented method comprising:
receiving an indication to delete a first file, wherein the first file includes a first set of data, and
wherein the first file is stored at a cloud storage location;
determining whether the first set of data references a second set of data included in a second file located at the cloud storage location;
when the first set of data references the second set of data, then:
causing to be deleted at the cloud storage location any references to the second set of data by the first set of data; and
causing to be deleted at the cloud storage location the second file;
determining whether the first set of data is referenced by at least a third set of data included in a third file at the cloud storage location; and
when the first set of data is referenced by at least the third set of data, then:
deleting at the cloud storage location any references to the first set of data by the third set of data; and
storing an indication to delete the first file at the cloud storage location.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, the computer-implemented method further comprising:
causing the second file to be deleted by converting one or more generic file system commands to one or more vendor-specific calls for the cloud storage location.

### Claim 10 (depends on 8)

The computer-implemented method of claim 8, the computer-implemented method further comprising maintaining a content index for the first, second and third sets of data, and wherein the content index includes file names, logical descriptors for a client computer that originated each file, and a size of each file.

### Claim 11 (depends on 8)

The computer-implemented method of claim 8, wherein the cloud storage location is accessed over an HTTP protocol and wherein the cloud storage location is publicly available via a URL.

### Claim 12 (depends on 8)

The computer-implemented method of claim 8, wherein communications for determining whether the first set of data references the second set of data is performed using one or more application programming interfaces (APIs) provided by the cloud storage location.

### Claim 13

A computer-implemented method for utilizing cloud storage resources to store at least a first portion of at least one data file within a network attached storage (NAS) device, wherein the NAS device includes a NAS file system and a non-volatile data store, and wherein the NAS device is communicatively coupled to access the cloud storage resources, the computer-implemented method comprising:
accessing calls to or from the NAS file system for reading of data from, or writing of data to, the non-volatile data store of the NAS device,
wherein the at least one data file consists of multiple data blocks,
wherein the non-volatile data store of the NAS device stores the multiple data blocks of the at least one data file;
wherein the NAS file system of the NAS device controls the reading of data from or the writing of data to the multiple data blocks of the at least one data file, and
wherein the accessing includes identifying individual blocks or groups of blocks within the multiple data blocks of the at least one data file that the NAS file system of the NAS device reads data from or writes data to;
based on the accessing, identifying a portion of the multiple data blocks of the at least one data file that satisfies a data storage criteria;
storing content of the at least one data file to a content index; and
automatically transferring the identified portion of the multiple data blocks for storage by the cloud storage resources.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, wherein the automatically transferring of the identified portion of the multiple data blocks for storage by the cloud storage resources is performed over an HTTP protocol and wherein the cloud storage resources are publicly available via a URL.

### Claim 15 (depends on 13)

The computer-implemented method of claim 13, wherein the automatically transferring of the identified portion of the multiple data blocks for storage by the cloud storage resources is performed using one or more application programming interfaces (APIs) provided by the cloud storage resources.
