US Pat. No. 9,633,033

HIGH AVAILABILITY DISTRIBUTED DEDUPLICATED STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of performing a storage operation in a distributed, deduplicated storage system, comprising:
receiving at a first secondary storage computing device of a plurality of secondary storage computing devices a request from
a client computing device to backup a file comprising a plurality of data blocks and stored in primary storage,

wherein a first deduplication database computing device of a plurality of deduplication database computing devices communicatively
coupled to the first secondary storage computing device is configured to store a first subset of signature blocks based at
least in part on a data block distribution policy and is designated as a failover deduplication database computing device
for a second deduplication database computing device of the plurality of deduplication database computing devices that is
configured to store, based at least in part on the data block distribution policy, a second subset of the signature blocks
that is different from and does not overlap with the first subset of the signature blocks,

wherein the plurality of deduplication database computing devices store the signature blocks corresponding to data blocks
stored in secondary storage, wherein the data blocks stored in the secondary storage correspond to data blocks stored in primary
storage, at least one signature block of the signature blocks comprising a signature of at least one data block of the plurality
of data blocks, location information of the at least one data block in the secondary storage, and a reference count value
indicative of a quantity of one or more references in the secondary storage to the at least one data block;

in response to the request and using one or more processors, calculating a signature of a particular data block of the plurality
of data blocks using a signature function;

identifying the second deduplication database computing device as the deduplication database computing device assigned to
store the signature of the particular data block;

determining that the second deduplication database computing device is unavailable; and
querying the first deduplication database computing device for the signature of the particular data block,
the method further comprising at least one of:
based at least in part on an indication from the first deduplication database computing device that the signature of the particular
data block does not reside in the first deduplication database computing device, store the signature in a failover index,
cause at least one storage device of the of the secondary storage to store a copy of the particular data block, and request
the first deduplication database computing device to store the signature of the particular data block and a location of the
copy of the particular data block, or

based at least in part on an indication from the first deduplication database computing device that the signature of the particular
data block resides in the first deduplication database computing device, cause at least one storage device of the of the secondary
storage to store a reference to a copy of the particular data block that is stored in the secondary storage.

US Pat. No. 9,286,086

ARCHIVING VIRTUAL MACHINES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of archiving virtual machines in a networked data storage system, comprising:
using one or more computing devices comprising computer hardware:
monitoring usage of a virtual machine (VM) executing on one or more client computing devices in a primary storage subsystem,
the VM associated with a virtualization application, wherein said monitoring is based at least in part on usage of resources
associated with the VM, the resources including one or more of: central processing unit (CPU), memory, storage, or network,
and wherein said monitoring is performed according to a storage policy indicating a threshold resource usage value for archiving
the VM;

in response to determining that the usage of the VM is less than or equal to the threshold resource usage value, using one
or more secondary storage controller computers comprising computer hardware, copying the VM from one or more primary storage
devices residing in the primary storage subsystem to one or more secondary storage devices residing in a secondary storage
subsystem to create a secondary copy of the VM;

creating a VM placeholder for the VM on the one or more primary storage devices; and
deleting the VM from the one or more primary storage devices,
wherein, subsequent to the deletion of the VM, the VM placeholder is recognized as the VM by the virtualization application
and the secondary copy of the VM is accessed using the VM placeholder, and

wherein said monitoring usage of a VM, said copying the VM, said creating the VM placeholder, and said deleting the VM occur
during a backup of data from the primary storage subsystem to the secondary storage subsystem.

US Pat. No. 9,256,606

SYSTEMS AND METHODS OF DATA STORAGE MANAGEMENT, SUCH AS DYNAMIC DATA STREAM ALLOCATION

Commvault Systems, Inc., ...

1. A method of transferring data from a source storage device to a magnetic disk storage medium, the method comprising:
determining an estimated amount of disk storage space required to store the data on the magnetic disk storage medium by estimating
at least a total size of the data, wherein the data includes multiple jobs each comprising one or more files, and wherein
a disk file system manages individual files on the magnetic disk storage medium;

instructing the disk file system that a single file is to be stored in the estimated amount of disk storage space to reserve
the estimated amount of disk storage space as a contiguous physical portion of disk storage space on the magnetic disk storage
medium before transferring the data to the magnetic disk storage medium;

allocating the reserved contiguous physical portion of disk storage space on the magnetic disk storage medium; and
transferring the data from the source storage device to the allocated contiguous physical portion of disk storage space on
the magnetic disk storage medium.

US Pat. No. 9,286,327

DATA STORAGE RECOVERY AUTOMATION

COMMVAULT SYSTEMS, INC., ...

1. A method of automating recovery of a networked data storage environment, comprising:
receiving an indication of user selection of a plurality of commands for inclusion in an automated data recovery package,
the plurality of commands comprising commands to at least:

install on at least one computing device of a second set of computer hardware devices an instance of a first data storage
component that was installed on at least one computing device of a first set of computer hardware devices, wherein the first
data storage component comprises a media agent module configured to manage data storage operations between one or more client
computing devices of the second set of computer hardware devices and one or more storage devices of the second set of computer
hardware devices,

use the installed instance of the first data storage component to copy at least a portion of a data store onto one or more
storage devices of the second set of computer hardware devices, the data store including a copy of production data that was
generated by one or more applications executing on one or more client computing devices of the first set of computer hardware
devices, and

install a storage manager module onto a computing device of the second set of computer hardware devices, the storage manager
module configured, for a given data storage operation, to instruct a particular media agent module installed on a computing
device of the second set of computer hardware devices to manage a given data storage operation;

generating, at a first point in time and by a first computing device, the automated data recovery package, the automated data
recovery package configured, upon execution, to cause a computing device to recover at least a portion of a data storage environment
implemented on the first set of computer hardware devices to the second set of computer hardware devices that is remote from
the first set of computer hardware devices; and

storing the automated data recovery package on first storage,
wherein the automated data recovery package is, at a second point in time later than the first point in time, accessed at
the first storage and invoked for execution on a second computing device that is remote from the first computing device, and

wherein execution of the automated data recovery package causes the second computing device to automatically execute the plurality
of commands to completion.

US Pat. No. 9,298,559

SYSTEMS AND METHODS FOR ANALYZING SNAPSHOTS

Commvault Systems, Inc., ...

1. A system for analyzing a snapshot of a set of data, the system comprising:
at least one processor;
a memory coupled to the at least one processor;
a copy component executed by the at least one processor and configured to create a full copy of the set of data, and to create
a copy of a log of changes made to the set of data after the full copy of the set of data was made,

wherein the set of data includes multiple data objects;
a snapshot component executed by the at least one processor and configured to—
create a first snapshot of the set of data at a first time,
wherein the first snapshot includes pointers to data in the set of data;
create a copy of the first snapshot at a second time,
wherein the second time is after the first time and
an interface and analysis component executed by the at least one processor and configured to—
receive a user request to access, via the first snapshot, at least one of the multiple data objects;
access, based on the received user request, the at least one of the multiple data objects,
wherein the access includes modifying the full copy of the set of data based on: the first snapshot, the log of changes, or
both the first snapshot and the log of changes; and

wherein the snapshot component is further configured to create, prior to the access, a snapshot of the copy of the first snapshot
and associated transaction logs;

wherein the system is further configured to—
receive an instruction to change at least a portion of the set of data to another state; and
change the set of data to the other state of based at least in part on the copy of the first snapshot.

US Pat. No. 9,164,850

SYSTEM AND METHOD FOR ARCHIVING OBJECTS IN AN INFORMATION STORE

Commvault Systems, Inc., ...

1. A non-transitory computer-readable medium storing instructions, which when executed by at least one data processing device
performs a method for restoring archived data, the method comprising:
selecting an indicator, or receiving selection of the indicator, wherein the indictor is associated with a data item,
wherein the data item is stored in a secondary storage device,
wherein the indicator is stored in a primary storage device,
wherein the primary and secondary storage devices are coupled via a network, and
wherein the indicator includes information identifying the data item;
based on the selected indicator, accessing the data item from the secondary storage device;
copying the data item to the primary storage device; and
removing, from the primary storage device, the indicator associated with the copied data item.

US Pat. No. 9,158,835

METHOD AND SYSTEM FOR OFFLINE INDEXING OF CONTENT AND CLASSIFYING STORED DATA

Commvault Systems, Inc., ...

1. In a data management system residing within a private computer network, a method for indexing content, comprising:
identifying a production copy having one or more production data files each having keywords and metadata,
wherein the production copy is available from a production data server within the private computer network;
identifying an offline copy from the private computer network,
wherein the offline copy includes one or more offline data files each having keywords and metadata, and
wherein the offline data files are copies of the one or more production data files, and
wherein the offline copy of the one or more offline data files is stored in one or more secondary storage devices;
restoring the identified offline copy to an intermediate server,
wherein the intermediate server is different from the production data server and
wherein the intermediate server has a higher availability than the secondary storage devices;
identifying keywords from the restored offline copy on the intermediate server,
wherein the identifying of the keywords is performed without use of the production data server and without accessing the production
copy;

creating a content index of the identified keywords on the intermediate server after the identifying of the keywords,
wherein the content index classifies the identified keywords based on at least one or more user-defined classifications,
wherein the user-defined classifications include administratively defined groups within an organization or organization departments,
wherein the content index is in an unencrypted form even when the offline copy is encrypted, and
wherein the creating of the content index is performed without affecting the production data server; and
updating the content index by associating the offline data files with the production data files.

US Pat. No. 9,178,842

SYSTEMS AND METHODS FOR MONITORING MESSAGING APPLICATIONS FOR COMPLIANCE WITH A POLICY

Commvault Systems, Inc., ...

1. A messaging system comprising:
a communication server comprising computer hardware and in communication with a plurality of client computing devices comprising
computer hardware, the communication server configured to initiate and administer messaging sessions between two or more of
the client computing devices;

a graphical user interface configured to provide input functionality allowing a user to specify criteria for identifying messages
of interest, wherein the identification takes place subsequent to delivery of the messages of interest and prior to storage
of those messages in a storage destination specified in a compliance policy;

one or more memory devices storing the compliance policy specifying at least the storage destination and the criteria entered
via the graphical user interface; and

a computing device executing a compliance agent and in communication with the plurality of clients and the one or more memory
devices, the compliance agent configured to:

access the compliance policy;
monitor the messaging sessions;
for a first monitored message including an audio data portion, convert the audio data portion to converted text;
subsequent to delivery of the first monitored message and prior to storage of the first monitored message in the storage destination
specified in the compliance policy, based at least on the criteria specified in the compliance policy for identifying messages
of interest, process the converted text to identify the first monitored message as a first identified message of a plurality
of messages of interest within the messaging sessions, wherein the identified messages of interest have files associated therewith
of at least a first type and a second type, where the files of the second type are generated with a different software application
than the files of the first type;

direct storage of identified messages to the storage destination specified in the compliance policy; and
convert those of the identified files that are not in the common file format type specified in the compliance policy to the
common file format type.

US Pat. No. 9,454,537

DATA OBJECT STORE AND SERVER FOR A CLOUD STORAGE ENVIRONMENT, INCLUDING DATA DEDUPLICATION AND DATA MANAGEMENT ACROSS MULTIPLE CLOUD STORAGE SITES

Commvault Systems, Inc., ...

1. A system for storing a set of data files to a cloud storage site, the system comprising memory and a processor that are
configured to:
provide multiple requests for cloud storage to two or more cloud storage sites,
wherein the multiple requests each include a request for data storage to a cloud storage site;
wherein the multiple requests each include—
information associated with a total size of the set of data files to be stored, and
requirements for the data storage for the set of files;
wherein the multiple requests each include at least one pricing rate request; and,
wherein the two or more cloud storage sites are respectively operated by two or more independent organizations;
receive a response from each at least two of the two or more cloud storage sites,
wherein each of the responses from the at least two cloud storage sites includes:
a current capacity that is determined based at least in part on:
a capacity policy that specifies preferences or criteria associated with data storage for that cloud storage site, and
a quotation policy that includes a set of preferences and criteria associated with generating a quote in response to received
requests; and

a pricing quote for a data storage job at that cloud storage site;
select one of the at least two cloud storage sites based on the received responses,
wherein the selecting is based at least in part on the pricing quote and the current capacity; and,
provide to the selected cloud storage site the set of data files to be stored according to the provided request, the selected
received response, or both the provided request and the selected received response.

US Pat. No. 9,367,548

SEARCH FILTERED FILE SYSTEM USING SECONDARY STORAGE, INCLUDING MULTI-DIMENSIONAL INDEXING AND SEARCHING OF ARCHIVED FILES

Commvault Systems, Inc., ...

1. A method of archiving a file to secondary storage in an information management system, the method comprising:
archiving a file to secondary storage, by a media agent component of the information management system that has been identified
for archiving the file, wherein the archiving comprises:

(a) dividing the file being archived into a plurality of independently accessible smaller portions of an archive copy of the
file, and

(b) multi-dimensional indexing of the file being archived, wherein the multi-dimensional indexing comprises:
(i) generating a file attribute index, which includes extrinsic information about the file being archived that is independent
of file contents, and

(ii) generating a content index of at least one of: text content, picture content, video content, and audio content of the
file being archived, and

(c) wherein each independently accessible smaller portion in the plurality of independently accessible smaller portions of
the archive copy is identified at least once in at least one of the file attribute index and the content index;

providing to a user of the information management system a fast-forward progression through the plurality of independently
accessible smaller portions of the archive copy without restoring each independently accessible smaller portion from secondary
storage,

wherein the fast-forward progression is based on searching at least one of the file attribute index and the content index;
and

restoring a first independently accessible portion of the archive copy to a user-device component of the information management
system without having to also restore the other independently accessible smaller portions of the archive copy,

wherein the first independently accessible smaller portion of the archive copy is found by a search filter searching at least
one of the file attribute index and the content index within the information management system.

US Pat. No. 9,323,466

SYSTEM AND METHOD FOR CLIENT POLICY ASSIGNMENT IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A data storage system comprising:
a plurality of client computing devices, each client computing device of the plurality of client computing devices comprising
computer hardware executing one or more software applications which generate primary data that is written to one or more primary
storage devices associated with the client computing device;

one or more storage manager computing devices in communication with the plurality of client computing device and configured
to:

in response to installation of the first client computing device, automatically determine that a first client configuration
profile template is appropriate for use with the first client computing device by determining that the first client configuration
profile template matches one or more desired performance characteristics or requirements of the first client computing device,
wherein the first client configuration profile template specifies one or more data storage operation schedule policies;

associate the first client configuration profile template with the first client computing device;
initiate a data storage operation in which primary data associated with the first client computing device of the plurality
of client computing devices is accessed from the one or more primary storage devices and written to one or more secondary
storage devices to create a secondary copy;

access the first client configuration profile template associated with the first client computing device;
store template information in association with the secondary copy on the one or more secondary storage devices, the template
information indicating an association of the first client configuration profile template with the secondary copy;

initiate a restore operation in which the secondary copy is restored to a second client computing device of the plurality
of client computing devices, the second client computing device being different than the first client computing device; and

in conjunction with the restore operation, review the template information; and
based on said review, associate the first client configuration template with the second client computing device.

US Pat. No. 9,286,398

SYSTEMS AND METHODS FOR RETRIEVING DATA IN A COMPUTER NETWORK

Commvault Systems, Inc., ...

1. A data retrieval system comprising:
a first computing device having a processor that supports operation of a software application and an interface module for
retrieving data for the software application;

at least a first media management device that identifies first storage locations of first migrated data moved from first storage
media to second storage media, the first storage locations of the first migrated data stored in a first index associated with
the first media management device;

at least a second media management device that identifies second storage locations of second migrated data moved from the
first storage media to the second storage media the second storage locations of the second migrated data stored in a second
index associated with the second media management device;

a backup map stored in computer memory that associates the first migrated data with the first media management device, the
backup map further associates the second migrated data with the second media management device; and

a retrieval manager that executes in one or more computer processors, the retrieval manager communicatively coupled to the
interface module of the first computing device and to at least the first and second media management devices; and

wherein in response to a request to retrieve the first and second migrated data, the retrieval manager identifies that the
first migrated data is associated with the first media management device based on the backup map, and in response to the retrieval
manager directing the first media management device to retrieve the first migrated data, the first media management device
retrieves the first migrated data from the second storage media based on the first storage locations of the first migrated
data stored in the first index associated with the first media management device; and

wherein the retrieval manager identifies that the second migrated data is associated with the second media management device
based on the backup map, and in response to the retrieval manager directing the second media management device to retrieve
the second migrated data, the second media management device retrieves the second migrated data based on the second storage
locations of the second migrated data stored in the second index associated with the second media management device.

US Pat. No. 9,268,602

SYSTEMS AND METHODS FOR PERFORMING DATA MANAGEMENT OPERATIONS USING SNAPSHOTS

Commvault Systems, Inc., ...

1. A method for creating snapshots of virtual machines, wherein the method is performed by a computing system having a processor
and memory, the method comprising:
receiving an indication of a discovery of one or more virtual machines are hosted by a primary virtual machine host,
creating snapshots of the one or more virtual machines hosted by the primary virtual machine host, wherein the snapshots of
the one or more virtual machines reference multiple data objects;

creating at least one index associated with the snapshots, wherein the index includes context information related to logical
locations of copies of the multiple data objects referenced by each of the snapshots;

exposing the snapshots of the one or more virtual machines to at least one second virtual machine host;
registering the one or more virtual machines on the at least one second virtual machine host via the exposed snapshots;
powering on the one or more virtual machines on the at least one second virtual machine host;
verifying that the snapshots of the one or more virtual machines were properly created based on the powering on of the one
or more virtual machines on the at least one second virtual machine host; and

in response to verifying that the snapshots were properly created, powering off the one or more virtual machines on the at
least one secondary virtual machine host.

US Pat. No. 9,262,226

DATA STORAGE RESOURCE ALLOCATION BY EMPLOYING DYNAMIC METHODS AND BLACKLISTING RESOURCE REQUEST POOLS

Commvault Systems, Inc., ...

1. A system having a processor for dynamically assigning data storage requests to data storage resources, the system comprising:
a means for receiving an initial request plan specifying how an alternate data path is to be chosen when preferred data storage
resources are not available;

a means for building a grid allocation table by grouping data storage resources in columns or rows of the grid allocation
table according to common characteristics of the data storage resources;

a means for assigning, when preferred resources are available, a row or column, respectively, of the grid allocation table
to a data allocation request using preferred data storage resources;

a means for assigning, when preferred data storage resources are not available, an alternate set of data storage resources
to the data storage request;

wherein each column or row of the grid allocation table operates independently on separate data storage requests;
a means for determining whether requested resources from a failed request comprise common or unique resources; and
a means for selectively adding the failed request to the blacklist table when the failed request corresponded to a common
resource, and not adding the failed request to the blacklist table when the failed request corresponded to a unique requested
resource.

US Pat. No. 9,063,938

SEARCH FILTERED FILE SYSTEM USING SECONDARY STORAGE, INCLUDING MULTI-DIMENSIONAL INDEXING AND SEARCHING OF ARCHIVED FILES

Commvault Systems, Inc., ...

1. A method of multi-dimensional indexing of a file being archived to secondary storage in an information management system,
comprising:
receiving, by a media agent component of the information management system that has been identified for archiving a file,
a command to begin multi-dimensional indexing of the file being archived;

performing multi-dimensional indexing of the file, by the media agent, in response to receiving the command, wherein the multi-dimensional
indexing comprises:

(i) generating, by the media agent, a file attribute index for the file,
wherein the file attribute index includes extrinsic information about the file and is independent of contents of the file,
and

(ii) creating, by the media agent, a content index for the file,
wherein the content index is based on at least one of: text content, and image content, and audio content within the file;
archiving the file to secondary storage, by the media agent,
wherein the file archiving operation includes dividing the file into multiple independently accessible smaller portions of
the file being archived,

wherein any one independently accessible smaller portion of the file being archived is identified at least once in at least
one of the file attribute index and the content index, and

may be later restored from secondary storage, to a user, without also restoring the other independently accessible smaller
portions of the file being archived;

storing, by the media agent, the file attribute index to a first location, the content index to a second location, and the
archived file to a third location; and

based on the multi-dimensional indexing of the archived file, providing to a user of the information management system a fast-forward
progression through a plurality of the independently accessible smaller portions of the archived file without individually
restoring each portion in the plurality from secondary storage,

wherein the fast-forward progression is based on searching of at least one of the file attribute index and the content index
within the information management system.

US Pat. No. 9,298,382

SYSTEMS AND METHODS FOR PERFORMING REPLICATION COPY STORAGE OPERATIONS

Commvault Systems, Inc., ...

1. A method for performing a storage operation using a replication copy, the method comprising:
determining with at least computer hardware that a replication copy is available on a second storage volume, the replication
copy comprises a second set of data that is a copy of at least a portion of a first set of data on a first storage volume;

based on a priority of a storage operation, automatically selecting with the computer hardware the replication copy to perform
the storage operation;

performing with the computer hardware, the storage operation on the second set of data associated with the replication copy
on the second storage volume rather than the first set of data on the first storage volume; and

creating a third set of data based on performing the storage operation on the second set of data.

US Pat. No. 9,170,890

COMBINED STREAM AUXILIARY COPY SYSTEM AND METHOD

Commvault Systems, Inc., ...

1. A system for transferring data in a storage system, the system comprising:
at least one media agent comprising computer hardware, the at least one media agent accesses a data source comprising primary
data stored in at least a first storage device, wherein the primary data in the first storage device comprises at least a
first portion of data associated with a first application having a first file type, and at least a second portion associated
with a second application having a second file type,

wherein the at least one media agent creates a first backup copy of the primary data wherein the at least one media agent
copies the first portion of data in the first storage device to a second storage device by performing one or more first copy
jobs, and copies the second portion of data in the first storage device to a third storage device by performing one or more
second copy jobs, each of the first and second copy jobs identified with an application identifier and a copy job identifier,
and

wherein the at least one media agent creates a second backup copy that orders the first and second portions of data for subsequent
restoration by combining the first and second copy jobs that share a copy job identifier, and then orders the combined first
and second copy jobs based at least in part on the order of the first and second application identifiers, and stores the ordered
first and second portions of data within the second backup copy.

US Pat. No. 9,152,685

SYSTEMS AND METHODS FOR MIGRATING COMPONENTS IN A HIERARCHICAL STORAGE NETWORK

Commvault Systems, Inc., ...

1. A storage system that automatically transfers a storage resource from a first storage operation cell to a second storage
operation cell, the storage system comprising:
a first storage operation cell comprising computer hardware, the first storage operation cell monitors primary data created
by one or more client computers, the primary data stored on one or more primary storage devices, the first storage operation
cell comprising at least a first storage manager and at least a first media agent;

wherein the first storage operation cell directs the first media agent to copy at least a first portion of the primary data
by copying the first portion of the primary data to one or more secondary storage devices to create secondary data of the
primary data, and wherein the first media agent creates a first index of the secondary data;

a second storage operation cell comprising computer hardware, the second storage operation cell monitors the primary data
created by the one or more client computers, the second storage operation cell comprising at least a second storage manager
and a second media agent;

wherein the second storage operation cell directs the second media agent to copy at least a second portion of the primary
data by copying the second portion of the primary data to the one or more secondary storage devices to create the secondary
data of the primary data, and wherein the second media agent creates a second index of the secondary data;

a third storage manager comprising computer hardware, the third storage manager automatically directs transfer of the first
media agent to the second storage operation cell based on a prediction of future utilization of a first operational characteristic;

wherein the second storage operation cell reconstitutes the first media agent and a copy of the first index in association
with the second storage operation cell;

wherein when the second storage operation cell determines that the copy of the first index is incomplete, the second storage
operation cell performs a restore operation from at least a portion of the secondary data stored in the one or more secondary
storage devices to restore the copy of the first index stored in association with the second storage operation cell; and

wherein after restoration of the copy of the first index stored in association with the second storage operation cell, the
second storage operation cell directs the first media agent to copy a second portion of the primary data to the one or more
secondary storage devices and update the copy of the first index.

US Pat. No. 9,128,883

DATA STORAGE RESOURCE ALLOCATION BY PERFORMING ABBREVIATED RESOURCE CHECKS BASED ON RELATIVE CHANCES OF FAILURE OF THE DATA STORAGE RESOURCES TO DETERMINE WHETHER DATA STORAGE REQUESTS WOULD FAIL

Commvault Systems, Inc, ...

1. A method of performing abbreviated resource checks to determine whether data storage requests would fail in a data storage
system, the method comprising:
receiving a list of data storage requests to be performed by the data storage system,
wherein the data storage requests in the list form part of a data backup operation, and
wherein each data storage request in the list specifies two or more data storage resources that are required to perform the
respective data storage request;

for a first data storage request, without having to perform the first data storage request itself, performing one or more
abbreviated checks to determine whether the first data storage request will fail,

wherein performing the one or more abbreviated checks includes:
(i) determining which of the two or more data storage resources specified by the first data storage request are physical resources,
(ii) selecting the data storage resources determined to be physical resources, and
(iii) performing, in an order based on relative chances of failure of the respective selected physical resources, one or more
physical checks of whether the selected physical resources are available to satisfy the first data storage request, the performing
the one or more physical checks including determining whether hardware for performing the first data storage request is working,

wherein the one or more physical checks of the selected physical resources are performed before any logical checks of the
selected physical resources may be performed; and

when the one or more abbreviated checks indicate that the first data storage request would fail if performed, then:
updating the received list of data storage requests by removing the first data storage request from the received list of data
storage requests to indicate that the first data storage request should not be performed,

wherein the updating is performed without attempting to perform the first data storage request and without performing a check
of all data storage resources required for performing the first data storage request.

US Pat. No. 9,111,220

SYSTEMS AND METHODS FOR STORAGE MODELING AND COSTING

Commvault Systems, Inc., ...

1. A method to predict storage use in a computer network, the method comprising:
directing with a first storage component comprising one or more computing devices comprising computer hardware, a second storage
component to copy at least a portion of primary data stored on at least a first storage resource to secondary data stored
on at least a second storage resource, wherein the first and second storage components are arranged in a hierarchy, and wherein
the second storage component identifies the second storage resource with a first identifier;

sending from the second storage component to the first storage component at least the first identifier associated with the
second storage resource;

directing with the first storage component, a third storage component to monitor usage associated with the second storage
resource, wherein the first and third storage components are arranged in a hierarchy, and wherein the third storage component
identifies the second storage resource with a second identifier;

sending from the third storage component to the first storage component, the second identifier associated with the second
storage resource, and usage data derived at least in part from the monitoring of the usage associated with the second storage
resource;

determining with the first storage component that the first identifier and the second identifier are associated with the second
storage resource; and

predicting, based at least in part on the usage data and with a computing device comprising computer hardware, one or more
of future storage media use, future media growth, future network bandwidth use, and future media agent use.

US Pat. No. 9,047,357

SYSTEMS AND METHODS FOR MANAGING REPLICATED DATABASE DATA IN DIRTY AND CLEAN SHUTDOWN STATES

CommVault Systems, Inc., ...

1. A system for performing data management operations, the system comprising:
at least one target computer comprising computer hardware that communicates with at least one source computer to receive information
about a source database stored on a first storage device;

at least one second storage device in communication with the target computer;
wherein the target computer replicates at least a portion of the source database to generate a target database on the second
storage device, the target database existing in a dirty shutdown state at a first time;

wherein the target computer copies at least a portion of the target database in the dirty shutdown state to create a first
copy, the first copy stored in the dirty shutdown state;

at a second time subsequent to creating the first copy, the target computer commits a plurality of data transactions to the
target database that puts the target database into a clean shutdown state;

wherein the target computer copies at least a portion of the target database in the clean shutdown state to create a second
copy that includes data corresponding to the plurality of committed data transactions, wherein the second copy is stored in
the clean shutdown state; and

wherein the target computer reverts the target database in the clean shutdown state back to the dirty shutdown state based
on differences between the first copy in the dirty shutdown state and the second copy in the clean shutdown state.

US Pat. No. 9,372,827

MIGRATION OF AN EXISTING COMPUTING SYSTEM TO NEW HARDWARE

Commvault Systems, Inc., ...

1. At least one non-transitory computer-readable storage medium storing instructions, which when executed by at least one
data processing device performs a method for migrating functionality of a source physical computing device to a destination
physical computing device, the method comprising:
identifying a non-production copy of data and metadata associated with a source physical computing device,
wherein an information management system maintains and stores the non-production copy of data and metadata,
wherein the information management system is capable of transferring data from the source physical computing device to the
destination physical computing device,

wherein the information management system includes a computing device;
determining a configuration of the source physical computing device;
determining a new configuration for a destination physical computing device based at least in part on the determined configuration
of the source physical computing device;

identifying a destination physical computing device to which functionality of the source physical computing device may be
migrated,

wherein the destination physical computing device has an existing configuration;
providing, via the information management system, the destination physical computing device with access to data and metadata
from the non-production copy, wherein the data and metadata from the non-production copy includes application-specific data
and metadata;

modifying the existing configuration of the destination physical computing device based at least in part on the new configuration
for the destination physical computing device,

wherein modifying the existing configuration of the destination physical computing device comprises modifying the existing
configuration to substantially match the new configuration for the destination physical computing device;

decommissioning the source physical computing device after migration is complete, wherein the source physical computing device
is inoperable after being decommissioned;

executing a routine to permanently wipe data and metadata from the decommissioned source physical computing device; and
notifying a party that the decommissioned source physical computing device is available by providing at least a partial description
of the decommissioned source physical computing device specification.

US Pat. No. 9,251,190

SYSTEM AND METHOD FOR SHARING MEDIA IN A COMPUTER NETWORK

Commvault Systems, Inc., ...

10. A method sharing a media volume in a network, the method comprising:
storing instructions in a non-transitory computer storage which perform the following acts when executed by one or more computing
devices;

storing multiple entries an index structure comprising that associate different media agents with one or more media volumes,
wherein at least one of the entries in the index data structure identifies that the first and second media agents share the
media volume and that the first media agent controls the media volume;

directing a first media agent to enter a deactivation state with respect to a media volume;
directing a second media agent to enter an activation state with respect to the media volume, by communicating with a listening
process on the second media agent that monitors messages when the second media agent is in an inactive state;

mounting the media volume with the second media agent and creating an access path to the media volume; and
updating the index data structure to reflect that the second media agent controls the media volume.

US Pat. No. 9,122,600

SYSTEMS AND METHODS FOR REMOTE MONITORING IN A COMPUTER NETWORK

Commvault Systems, Inc., ...

1. A method of error reporting in a computer network, the method comprising:
monitoring, with one or more first devices, one or more data migration operations that migrates data within a storage system,
wherein the one or more first devices have access privileges to migrated data;

detecting, with the one or more first devices, an error associated with a failed performance of the one or more data migration
operations;

receiving, with one or more second devices that do not possess access privileges to the migrated data, diagnostic information,
wherein the diagnostic information comprises information about the failed performance of the one or more data migration operations;

consulting, with the one or more second devices, an index to determine error response instructions based at least in part
on the diagnostic information; and

providing, with the one or more second devices, the error response instructions to the one or more first devices.

US Pat. No. 9,098,542

SYSTEMS AND METHODS FOR USING METADATA TO ENHANCE DATA IDENTIFICATION OPERATIONS

Commvault Systems, Inc., ...

1. A method for performing data identification operations involving electronic data, the method comprising:
receiving an index generated by a journal application, the index identifying data interactions made by at least one other
application to data objects stored on one or more primary storage devices;

updating, based on the index, first metadata stored in a first metabase, wherein the updating comprises accessing the data
objects to obtain the first metadata about the data objects;

receiving a query comprising selection criteria associated with moving data from the one or more primary storage devices to
one or more secondary storage devices;

identifying with the first metabase, one or more of the data objects which meet the selection criteria without accessing the
data objects stored on the primary storage device;

copying the one or more of the data objects identified by the first metabase to the one or more secondary storage devices;
and

storing second metadata in a second metabase, the second metadata comprising information about the one or more data objects
copied to the one or more secondary storage devices.

US Pat. No. 9,092,500

UTILIZING SNAPSHOTS FOR ACCESS TO DATABASES AND OTHER APPLICATIONS

Commvault Systems, Inc., ...

1. A computing device for providing access to multiple databases within a testing environment, the computing device comprising:
memory having multiple instructions; and
a processor coupled to the memory and configured to, in response to executing the instructions, instruct:
a snapshot component,
wherein the snapshot component is configured to create a clone of a snapshot, and
wherein the snapshot is of a volume of data containing developer build data; and
a management component configured to mount the clone of the snapshot to a virtual machine to provide the virtual machine,
within a testing environment, with access to a first and second database,

wherein providing the virtual machine with access to the first database enables the virtual machine to manipulate the clone
of the snapshot of the developer build data, without affecting the volume of data containing the developer build data,

wherein providing the virtual machine with access to the second database enables the virtual machine to test the developer
build data on production data stored in the second database;

a request component, wherein the request component is configured to provide a user interface to the virtual machine within
the test environment that:

lists versions of the developer build data available to be accessed by the virtual machine, and
receives a selection of an available version of the developer build data to be accessed by the virtual machine.

US Pat. No. 9,489,244

SEAMLESS VIRTUAL MACHINE RECALL IN A DATA STORAGE SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method of restoring virtual machines in a networked data storage system comprising:
receiving at one or more computing devices comprising computer hardware, an indication that a virtual machine placeholder
associated with a virtual machine has been accessed, wherein:

the virtual machine placeholder is created on one or more primary storage devices, and the virtual machine is deleted from
the one or more primary storage devices, during one or more backups that copied data associated with the virtual machine from
the primary storage subsystem to the secondary storage subsystem,

the virtual machine placeholder on the one or more primary storage devices is recognized as the virtual machine by one or
more virtualization applications, and

the virtual machine placeholder comprises information usable in restoring the virtual machine from the one or more secondary
storage devices to the one or more primary storage devices; and

in response to receiving the indication that the virtual machine placeholder has been accessed, instructing the one or more
computing devices comprising computer hardware to restore at least a portion of the virtual machine and the associated data
from the one or more secondary storage devices to the one or more primary storage devices.

US Pat. No. 9,483,363

USE OF TEMPORARY SECONDARY COPIES IN FAILOVER OPERATIONS

COMMVAULT SYSTEMS, INC., ...

1. An information management system configured to perform data protection operations in the event of lost connectivity with
a storage manager, the system comprising:
at least one client computing device residing in an information management cell and comprising one or more applications installed
thereon configured to generate primary data for storage in one or more primary storage devices in the information management
system, the client computing device further configured to execute first secondary copy software installed thereon to process
primary data generated by the one or more applications as part of a first secondary copy operation in which the primary data
is, at the direction of a first storage manager that is geographically remote from an information management cell in which
the at least one client computing system resides, copied to one or more secondary storage devices for storage as a first secondary
copy in a first secondary copy file format; and

a second storage manager installed on a computing device within the information management cell and configured to:
activate in response to loss of connectivity between the information management cell and the first storage manager;
instruct second secondary copy software installed on a computing device within the information management cell to perform
a second secondary copy operation in which the primary data generated by the applications installed on the at least one client
computing device is stored as a second secondary copy in a second secondary copy file format different than the first secondary
copy file format;

detect a reestablishment of connectivity to the first storage manager; and
subsequent to reestablishment of connectivity to the first storage manager, initiate a restore of the second secondary copy
stored in the second secondary copy file format to obtain restored data;

wherein one or more computing devices in the information management cell are configured to copy the restored data to the one
or more secondary storage devices for storage as a third secondary copy in the first secondary copy file format.

US Pat. No. 9,459,968

SINGLE INDEX TO QUERY MULTIPLE BACKUP FORMATS

Commvault Systems, Inc., ...

1. A computer program product comprising a non-transitory computer-readable storage medium having code stored thereon, the
code, when executed by a processor, causing the processor to implement a data copy method, the method comprising:
performing a first copy operation to generate first copy data in a snapshot format, without generating a corresponding index
to the first copy data for browsing the first copy data in the snapshot format;

performing a second copy operation on the first copy data in the snapshot format to generate second copy data in a second
copy format,

wherein the second copy data in the second copy format is data in a nested format that includes the first copy data in the
snapshot format; and

generating an index table comprising entries for one or more data items from the first copy data stored in the second copy
data in the second copy format,

wherein each entry includes—
data item identification information that identifies a data item associated with the entry;
first access information for the data item to allow access to the data item in the second copy data,
wherein the first access information comprises an archive file identification from a set of pre-determined archive file identification
values indicating that a corresponding archive file is storing data in the snapshot format,

second access information to allow access to the data item in the first copy data, thereby allowing direct access to the data
item based on information from the index table; and

format information for the data item that identifies a level of format nesting for the data item within the first copy data
and the second copy data.

US Pat. No. 9,164,692

SYSTEM AND METHOD FOR ALLOCATION OF ORGANIZATIONAL RESOURCES

Commvault Systems, Inc., ...

1. A method of identifying storage system resources to be added to a storage system, wherein the method is performed by a
computing system having a processor and memory, the method comprising:
storing primary data created by a plurality of software applications on a plurality of primary storage devices in a primary
storage system;

storing at least one or more secondary copies of the primary data on one or more secondary storage devices in a secondary
storage system;

managing with a storage manager, one or more secondary copy storage operations that copy at least a portion of the primary
data to create the one or more secondary copies using a plurality of media agents that transfer the secondary copies to the
secondary storage devices;

forecasting with the storage manager, a need for additional primary system resources in the primary storage system based at
least on the trend of the number of active media agents that transfer the secondary copies to the secondary storage devices;

identifying the one or more additional primary storage system resources to be added to the primary storage system based on
the forecasting;

forecasting with the storage manager, a need for additional secondary system resources in the secondary storage system based
at least on the trend of the number of active data agents in the primary storage system, wherein the active data agents monitor
the plurality of software applications in the primary storage system; and

identifying the one or more additional secondary system resources to be added to the second storage system that stores the
secondary copies based on the forecasting.

US Pat. No. 9,124,611

SYSTEMS AND METHODS FOR WRITING DATA AND STORAGE SYSTEM SPECIFIC METADATA TO NETWORK ATTACHED STORAGE DEVICE

Commvault Systems, Inc., ...

1. A method for managing data in a storage system, the method comprising:
receiving a request to store data on a Network-Attached Storage (NAS) Device, wherein the data comprises data files stored
on a first storage device with a first file management system, and the Network-Attached Storage (NAS) Device comprises a second
file management system that is different than the first file management system;

combining a plurality of the multiple data files in the source data into at least one chunk of data;
creating a first data structure that comprises a first header and the chunk of data;
receiving the first data structure at a file server comprising computer hardware, the file server remotely located from the
Network-Attached Storage (NAS) Device;

creating a second data structure with the file server, wherein the file server adds at least a second header and a trailer
to the first data structure, the second header comprising at least a set of file markers that identify the plurality of data
files in the chunk of data, the trailer comprising at least metadata about the plurality of data files in the chunk of data;
and

transferring the second data structure to the Network-Attached Storage (NAS) Device, wherein the second data structure is
stored with the second file management system.

US Pat. No. 9,104,340

SYSTEMS AND METHODS FOR PERFORMING STORAGE OPERATIONS USING NETWORK ATTACHED STORAGE

Commvault Systems, Inc., ...

1. A method for managing the storage of electronic data, the method comprising:
storing a first copy of one or more files at a first storage location within a first storage device, the first storage device
in communication with other devices via a network and comprising first computer hardware, an internal operating system, and
an internal file management system;

tracking the first copy of the one or more files stored in the first storage device with a data migrator that is external
to the first storage device, wherein the data migrator executes on second computer hardware that is externally located from
the first storage device;

processing at least one storage policy with the data migrator to determine when to migrate the first copy of the files on
the first storage device to one or more secondary storage devices;

accessing index data stored in a location external to the first storage device, the index data comprising information about
the first storage location within the first storage device;

subsequent to said accessing, using the index data to identify that the first copy of the files is stored in the first storage
location within the first storage device; and

migrating, with the data migrator, the first copy of the one or more files stored in the first storage location within the
first storage device to a second storage location in one or more secondary storage devices externally located from the first
storage device.

US Pat. No. 9,098,514

EFFICIENT DATA MANAGEMENT IMPROVEMENTS, SUCH AS DOCKING LIMITED-FEATURE DATA MANAGEMENT MODULES TO A FULL-FEATURED DATA MANAGEMENT SYSTEM

Commvault Systems, Inc., ...

1. A method for detecting and archiving idle virtual machines running on at least one computing device having primary data
storage, the method comprising:
automatically determining that a virtual machine has been idle for at least a first predefined period of time,
wherein the virtual machine is one of multiple virtual machines running on the at least one computing device,
wherein the virtual machine is stored on the primary data storage, and
wherein the virtual machine is associated with at least one virtual machine file;
in response to the determining that a virtual machine has been idle for at least a first predefined period of time, shutting
down the virtual machine,

after the virtual machine has been shut down for at least a second predefined period of time, copying the at least one virtual
machine file to a secondary storage device,

wherein copying the at least one virtual machine file to the secondary storage device includes replacing the at least one
virtual machine file in the primary data storage with a stub referring to a secondary copy of the at least one virtual machine
file on the secondary storage device.

US Pat. No. 9,495,251

SNAPSHOT READINESS CHECKING AND REPORTING

Commvault Systems, Inc., ...

1. An information management system configured to generate snapshots, the system comprising:
one or more media agents installed on one or more computing devices comprising computer hardware, the one or more media agents
configured to copy data between a primary storage subsystem and a secondary storage subsystem; and

one or more computing devices comprising computer hardware and configured to:
access a storage policy defining criteria associated with a snapshot operations in which snapshots of data in the primary
storage subsystem are taken, the criteria specifying one or more of:

(i) a frequency at which the snapshots are to be taken,
(ii) one or more primary storage devices residing in the primary storage subsystem from which the snapshots are to be taken,
(iii) or one or more secondary storage devices residing in the secondary storage subsystem in which the snapshots are to be
stored;

based on the storage policy, determine that a first snapshot operation is scheduled to be executed;
prior to the scheduled execution of the first snapshot operation, determine whether one or more of:
(i) the one or more primary storage devices specified in the storage policy, or
(ii) the one or more secondary storage devices specified in the storage policy, are available based at least in part on a
connectivity of one or more of the one or more media agents to the respective one or more primary storage devices or to the
respective one or more secondary storage devices; and

in response to a determination that the one or more of the one or more primary storage devices or the one or more secondary
storage devices are not available, generate a first report prior to the scheduled execution of the first snapshot operation,
the first report identifying one or more solutions or recommendations for resolving the unavailability of the one or more
of the one or more primary storage devices or the one or more secondary storage devices.

US Pat. No. 9,313,143

SYSTEMS AND METHODS FOR GRANULAR RESOURCE MANAGEMENT IN A STORAGE NETWORK

Commvault Systems, Inc., ...

1. A method for dynamically routing data to a plurality of storage operation paths in a data storage system, the method comprising:
accessing a first storage policy of a plurality of storage policies, the first storage policy comprising at least a first
storage operation path that associates at least a first media agent with a first storage device in a first static relationship;

accessing a second storage policy of the plurality of storage policies, the second storage policy comprising at least a second
storage operation path that associates a second media agent with the first storage device in a second static relationship,
wherein the second media agent conducts data to the first storage device via the second storage operation path;

automatically evaluating with one or more computer hardware processors, the first and second storage polices and the first
and second static relationships to determine that both the first and second storage polices use both the first and second
storage operation paths to conduct data to at least the first storage device;

reducing a number of the plurality of policies by automatically combining the first and second storage policies into one comprehensive
storage policy such that the first and second storage polices no longer exist as separate storage policies, wherein the comprehensive
storage policy associates at least the first and second storage operation paths to the first storage device in a dynamic relationship,
wherein both the first and second storage paths of the comprehensive storage policy conduct data to at least the first storage
device;

evaluating network operating conditions;
automatically adding at least a third storage operation path to the comprehensive storage policy based on network congestion
that is predicted to occur, wherein the third storage operation path is an alternate data path that is different than the
first and second storage operation paths;

dynamically allocating the third storage operation path in the comprehensive storage policy to conduct data to the first storage
device prior to the network congestion that is predicted to occur;

dynamically allocating with one or more computer hardware processors, at least one of the first and second storage operation
paths in the comprehensive storage policy to conduct data to the first storage device when the network congestion is not predicted
to occur.

US Pat. No. 9,286,110

SEAMLESS VIRTUAL MACHINE RECALL IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of archiving and restoring virtual machines in a networked data storage system, comprising:
using one or more computing devices comprising computer hardware:
determining whether to archive a virtual machine (VM) executing on one or more client computing devices residing in a primary
storage subsystem, the VM associated with a virtualization application, said determining based at least in part on usage data
associated with the VM;

in response to determining that the VM should be archived, instructing one or more secondary storage controller computers
comprising computer hardware to copy the VM and its associated data from one or more primary storage devices residing in the
primary storage subsystem to one or more secondary storage devices residing in a secondary storage subsystem;

creating a VM placeholder for the VM and storing the VM placeholder on the one or more primary storage devices, the VM placeholder
including information usable in restoring the VM from the one or more secondary storage devices;

deleting the VM and the associated data from the one or more primary storage devices;
subsequent to the deletion of the VM and the associated data, receiving an indication that the VM placeholder is accessed,
wherein the VM placeholder is recognized as the VM by the virtualization application; and

in response to receiving the indication that the VM placeholder is accessed, instructing the one or more secondary storage
controller computers to restore at least a portion of the VM and the associated data from the one or more secondary storage
devices to the one or more primary storage devices,

wherein said copying of the VM and its associated data, said creating the VM placeholder, and said deleting the VM and the
associated data occur during a backup of data from the primary storage subsystem to the secondary storage subsystem.

US Pat. No. 9,158,787

SYSTEMS AND METHODS FOR BYTE-LEVEL OR QUASI BYTE-LEVEL SINGLE INSTANCING

Commvault Systems, Inc, ...

1. A method of deduplicating data performed by one or more computing systems which are coupled to one or more storage devices
via a network, wherein the one or more computing system each comprise at least one processor and memory, and the one or more
storage devices include a searchable data structure and a first set of data, the method comprising:
receiving a second set of data;
dividing the second set of data into at least one block,
wherein the one block includes a total number of bytes;
accessing the searchable data structure;
determining whether one or more bytes of the one block are included in a portion of the first set of data in the searchable
data structure,

wherein the number of the one or more bytes is less than the total number of bytes of the one block;
replacing the one or more bytes with a reference to the portion of the first set of data when the one or more bytes of the
one block are included in the portion of the first set of data in the searchable data structure; and

causing the one block to be stored using the one or more storage devices.

US Pat. No. 9,507,525

METHODS AND SYSTEM OF POOLING STORAGE DEVICES

Commvault Systems, Inc., ...

1. A method for grouping storage devices comprising:
automatically detecting with at least one media management component comprising computer hardware, a change in the storage
characteristics of a first group of storage devices comprising at least first and second physical storage devices, and wherein
the first group of storage devices has at least a first set of future scheduled storage operations associated therewith;

automatically determining based on the first set of future scheduled storage operations, whether to add at least a third storage
device to the first group of storage devices;

automatically determining with the at least one media management component, availability of the least a third physical storage,
wherein determining the availability of the third storage device is based at least in part on whether the one or more of the
first set of future scheduled storage operations associated with the first group of storage devices conflicts with one or
more second set of future scheduled storage operations that are associated with the third storage device; and

automatically associating with the at least one media management component, the third physical storage device with the first
group of storage devices without the need of user intervention.

US Pat. No. 9,471,578

DATA STORAGE SYSTEM UTILIZING PROXY DEVICE FOR STORAGE OPERATIONS

CommVault Systems, Inc., ...

1. A method for performing a storage operation using a proxy secondary storage computing device, the method comprising:
receiving at a first computing device a first request to perform a first snapshot operation, the first snapshot operation
to be performed on a first data set associated with one or more software applications executing on a second computing device;

receiving at the first computing device a second request to perform a second snapshot operation, the second snapshot operation
to be performed on a second data set associated with one or more software applications executing on a third computing device;

wherein the first, second, and third computing devices form part of a networked storage system, the networked storage system
further comprising at least one storage device that is capable of performing snapshot operations;

forwarding, using the first computing device, the first request to the storage device, wherein the storage device performs
the first snapshot operation on the first data set in response to receipt of the first request;

forwarding, using the first computing device, the second request to the storage device, wherein the storage device performs
the second snapshot operation on the second data set in response to receipt of the second request;

receiving, at the first computing device, a first identifier associated with the first snapshot operation;
receiving, at the first computing device, a second identifier associated with the second snapshot operation;
forwarding the first identifier to the second computing device; and
forwarding the second identifier to the third computing device.

US Pat. No. 9,201,917

SYSTEMS AND METHODS FOR PERFORMING STORAGE OPERATIONS IN A COMPUTER NETWORK

Commvault Systems, Inc., ...

11. A system that retrieves data in a network, the system comprising:
a first storage controller computer that retrieves backup data stored in a shared physical memory, wherein the shared physical
memory is shared by different storage controller computers;

a second storage controller computer that retrieves backup data stored in the shared physical memory;
one or more storage policies that identify at least the first storage controller computer, wherein the one or more storage
policies further identify at least a second storage controller computer that serves as a failover storage controller computer
to retrieve the backup data stored in the shared physical memory; and

in response to a determination that the first storage controller computer is unable to perform the data retrieval operation,
a storage manager computer directs, based on one or more storage policies, the second storage controller computer to perform
the data retrieval operation to retrieve the backup data from the shared physical memory.

US Pat. No. 9,483,362

USE OF AUXILIARY DATA PROTECTION SOFTWARE IN FAILOVER OPERATIONS

COMMVAULT SYSTEMS, INC., ...

1. An information management cell configured to perform secondary copy operations, comprising:
at least one client computing device comprising one or more applications installed thereon configured to generate primary
data for storage in one or more primary storage devices residing in a primary storage subsystem in the information management
cell, the client computing device further configured to execute first secondary copy software installed thereon to process
a first set of the primary data as part of a first secondary copy operation, at the direction of a main storage manager that
is geographically remote from the information management cell;

at least one secondary storage computing device comprising computer hardware configured, at the direction of the main storage
manager, to copy the first set of the primary data processed by the first secondary copy software to one or more secondary
storage devices for storage as a first secondary copy in a first secondary copy file format; and

a failover storage manager installed on a computing device within the information management cell and configured to:
activate in response to loss of connectivity between the information management cell and the main storage manager; and
instruct second secondary copy software installed on at least one computing device within the information management cell
to perform a second secondary copy operation in which a second set of the primary data generated by the client computing device
is stored as a second secondary copy in a second secondary copy file format different than the first secondary copy file format;

the client computing device further configured to execute the first secondary copy software installed thereon to, subsequent
to reestablishment of the connectivity between the information management cell and the main storage manager, and at the direction
of the main storage manager, process a third set of the primary data as part of a third secondary copy operation,

the computer hardware of the secondary storage computing device further configured to, at the direction of the main storage
manager, copy the third set of the primary data processed by the first secondary copy software to the one or more secondary
storage devices for storage as a third secondary copy in the first secondary copy file format.

US Pat. No. 9,483,655

FILE BACKUP WITH SELECTIVE ENCRYPTION

Commvault Systems, Inc., ...

1. A method for backing up a file, the method comprising:
receiving, at a media agent hosted by a secondary computing device comprising one or more hardware processors, a command from
a storage manager to backup a file at a secondary storage device, the storage manager comprising one or more hardware processors
programmed to manage data within an information management system comprising a plurality of client computing devices and a
plurality of secondary computing devices;

receiving the file at the media agent from a data agent hosted by a client computing device from the plurality of client computing
devices, wherein the client computing device differs from the secondary computing device, wherein the media agent is programmed
as an interface to the secondary storage device for the client computing device, and wherein the data agent is programmed
as a data manager at the client computing device for managing data, including the file, stored at a primary storage device;

determining whether the file is an encrypted file;
in response to determining that the file is an encrypted file:
identifying an encryption algorithm used to encrypt the file;
storing metadata associated with the file, the metadata including an identity of the encryption algorithm; and
storing the file at the secondary storage device without performing an encryption process; and
in response to determining that the file is not an encrypted file:
encrypting the file to obtain an encrypted file; and
storing the encrypted file at the secondary storage device.

US Pat. No. 9,274,803

STORAGE OF APPLICATION SPECIFIC PROFILES CORRELATING TO DOCUMENT VERSIONS

Commvault Systems, Inc., ...

1. An apparatus, comprising:
at least one storage management module,
wherein the at least one storage management module is configured to manage storage of application specific profiles and corresponding
files among multiple storage media; and

wherein the at least one storage management module stores the application specific profile in a separate location from the
corresponding file; and

a processor for operating a software application,
wherein the software application generates an application specific profile each time a corresponding file is saved,
wherein the application specific profile includes most recent application settings used during editing of the corresponding
file, and

wherein the software application loads the application settings from the application specific profile while opening the corresponding
file.

US Pat. No. 9,262,435

LOCATION-BASED DATA SYNCHRONIZATION MANAGEMENT

Commvault Systems, Inc., ...

1. A computer-implemented method of synchronizing files between multiple client computers using location metadata, the computer-implemented
method comprising:
accessing, by a synchronization agent executing in computer hardware comprising one or more computer processors, synchronization
criteria for identifying files to synchronize between a first primary storage device associated with a first client computing
device and a second primary storage device associated with a second client computing device, wherein the synchronization criteria
indicates at least:

a target geographic location, and
that files having location metadata including a geographic location near the target geographic location are to be synchronized;
initiating, by a storage manager, a secondary copy operation, the secondary copy operation comprising:
copying one or more files stored in the first primary storage device to one or more secondary storage devices to create a
secondary copy including the one or more files;

accessing, by the synchronization agent, location metadata associated with each of the one or more files in the secondary
copy, wherein the location metadata includes at least one of Global Positioning System (GPS) coordinates, other geographic
coordinates, an Internet Protocol (IP) address, a street address, triangulated location information based on mobile tracking
with respect to telecommunications base stations, or location information created by computer-enabled location-based services;

reviewing the location metadata by the synchronization agent;
based at least in part on the review of the location metadata, identifying, by the synchronization agent, at least one file
in the secondary copy that meets the synchronization criteria for synchronization between the first primary storage device
and the second primary storage device;

accessing the at least one file from the secondary copy stored in the one or more secondary storage devices; and
communicating the accessed at least one file from the one or more secondary storage devices to the second client computing
device for storage in the second primary storage device to synchronize the at least one file between the first primary storage
device and the second primary storage device.

US Pat. No. 9,201,906

SYSTEMS AND METHODS TO PERFORM DATA BACKUP IN DATA STORAGE SYSTEMS

Commvault Systems, Inc., ...

1. A method of performing data back up in a data storage system, the method comprising:
receiving instructions to back up source data stored in one or more primary storage devices associated with a client computing
device, the source data being primary data generated by at least one software application executing on the client computing
device and stored in a format of the at least one software application;

replicating the source data to one or more replication storage devices different than the one or more primary storage devices
to generate replication data, the replication data stored in the native format of the at least one software application, wherein
the source data and the replication data are substantially synchronized with respect to one another;

based on a stored storage policy associated with the client computing device, initiating a backup operation in which a point
in time backup copy of the primary data is to be created on one or more secondary storage devices different than the one or
more primary storage devices and the one or more replication storage devices;

automatically determining with one or more processors whether the replication data stored in the one or more replication storage
devices is an accurate replication of the source data;

providing a notification that the replication data is faulty when the replication data is inaccurate;
consulting the stored storage policy to determine whether the stored storage policy permits back up from the source data when
the replication data is inaccurate;

when the replication data is inaccurate and the stored storage policy permits back up from the source data, completing the
backup operation by automatically copying with one or more processors the source data to the one or more secondary storage
devices to create the point in time backup copy, the point in time backup copy stored in a backup format different than the
native format for the at least one software application; and

associating the point in time backup copy with the source data.

US Pat. No. 9,251,186

BACKUP USING A CLIENT-SIDE SIGNATURE REPOSITORY IN A NETWORKED STORAGE SYSTEM

CommVault Systems, Inc., ...

1. A method of generating a backup data set for a client computing device by using a signature repository residing in a primary
storage subsystem, the method comprising:
for each respective client computing device of one or more client computing devices in a primary storage subsystem:
monitoring storage of a plurality of files formed of data blocks generated by one or more software applications running on
the respective client computing device,

wherein the plurality of files are stored as primary data in a primary data store associated with the respective client computing
device;

maintaining, by a repository agent executing on one or more processors in the primary storage subsystem, a repository indicating
at least which data blocks of the monitored files are stored in the primary storage subsystem,

wherein at least a first data block of the data blocks stored in a first primary data primary subsystem forms at least a portion
of a first file stored in the first primary data store and a second data block that matches the first data block is stored
in a second primary data store of the primary storage subsystem and forms at least a portion of a second file stored in the
second primary data store,

wherein the first file is generated b at least one software application running on a first client computing device associated
with the first primary data store and the second file is generated by at least one software application running on a second
client computing device associated with the second primary data store, and

wherein the first data block and the second data block are stored in a native format of the at least one software application
that generated the first data block and the second data block, respectively; and

in response to instructions to create a secondary copy of the first file in a secondary storage subsystem,
identifying a set of data blocks that do not have corresponding secondary copy data blocks stored in secondary storage subsystem,
the set of data blocks forming at least a portion of the first file and including the first data block;

querying the repository to identify at least a first group of data blocks of the set of data blocks for which matching data
blocks are stored in the primary storage subsystem, wherein the first group of data blocks includes the first data block;

identifying a location of the matching data blocks within the primary storage subsystem, wherein the matching data blocks
include at least the second data block; and

retrieving the matching data blocks from one or more of the data stores associated with the one or more client computing devices,
including the second data block stored in the second primary data store.

US Pat. No. 9,223,597

ARCHIVING VIRTUAL MACHINES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of managing resources associated with virtual machines in a networked data storage system, comprising:
using one or more computing devices comprising computer hardware:
monitoring usage of a virtual machine (VM) executing on one or more client computing devices in primary storage;
determining whether to reallocate one or more resources associated with the VM based on the usage and a plurality of factors;
and

in response to determining that the one or more resources associated with the VM should be reallocated:
reducing an amount of resources for the VM when the usage of the VM is above or equal to a threshold value; and
archiving the VM to secondary storage when the usage of the VM is below the threshold value, wherein the VM appears to be
accessible to a user after being archived from the primary storage,

wherein said monitoring usage of a VM, said determining whether to reallocate one or more resources associated with the VM,
said reducing an amount of resources for the VM, and said archiving the VM occur during a backup of data from the primary
storage to the secondary storage.

US Pat. No. 9,483,558

ASSESSING USER PERFORMANCE IN A COMMUNITY OF USERS OF DATA STORAGE RESOURCES

Commvault Systems, Inc., ...

1. A method of assessing users of a data storage system, the method comprising:
receiving, with a first computing device of a data storage system provider, configuration information relating to a deployed
configuration of a first data storage cell of a plurality of data storage cells and including one or more of: (1) a number
of installed data storage hardware components and (2) a number of installed data storage software components,

the plurality of data storage cells each located remotely from the first computing device, comprising a plurality of client
computing devices, and being configured to create and store one or more secondary copies of primary data generated by the
plurality of client computing devices;

receiving information relating to an incident opened by a user of the first data storage cell, the incident corresponding
to an instance where resources of the data storage system provider were expended in an attempt to resolve an issue reported
by the user associated with operation of the data storage cell;

with the first computing device, updating a performance metric associated with the user from an initial value to a new value
to reflect a negative impact on the performance metric resulting from the opening of the incident by the user, the initial
value of the performance metric based at least in part on one or more previous incidents opened by the user,

wherein the degree of the negative impact is based at least in part on the configuration information; and
storing the updated performance metric in electronic storage.

US Pat. No. 9,390,109

SYSTEMS AND METHODS TO DETECT DELETED FILES

COMMVAULT SYSTEMS, INC., ...

1. A method to protect data deleted between data protection operations in a data management system, the method comprising:
automatically monitoring, with a filter driver in a first computing device comprising computer hardware, data operations of
a client computing device;

when the data operation is a deletion operation, automatically identifying, with the filter driver, deletion data associated
with the deletion operation;

comparing, with the filter driver, a date/time of a last edit operation of the deletion data with a date/time of a previous
data protection operation associated with the deletion data;

when the date/time of the previous data protection operation is before the date/time of the last edit operation, automatically
converting, with the filter driver, the deletion data to a hidden file;

copying, with the filter driver, the hidden file to temporary storage;
identifying, with the filter driver, the copy of the hidden file in temporary storage for copying during a second data protection
operation; and

migrating, with a data agent in a second computing device comprising computer hardware, during the second data protection
operation, the identified copy of the hidden file stored in the temporary storage to secondary storage.

US Pat. No. 9,298,715

DATA STORAGE SYSTEM UTILIZING PROXY DEVICE FOR STORAGE OPERATIONS

CommVault Systems, Inc., ...

1. A method for creating a snapshot of a data store associated with a virtual machine using a proxy computing device on which
the virtual machine resides, the method comprising:
receiving a snapshot request at the proxy computing device, the proxy computing device having:
one or more processors,
one or more data stores,
a plurality of virtual machines instantiated on the proxy computing device, each of the plurality of virtual machines configured
to execute an operating system of the respective virtual machine, wherein the plurality of virtual machines are instantiated
using the one or more processors,

each of the plurality of virtual machines comprising a virtual data store comprising primary data generated by at least one
application executing on the respective virtual machine, wherein the virtual data stores of the plurality of virtual machines
share the one or more data stores, and a virtual data agent configured to manage backup storage operations of the respective
virtual machine,

a virtual machine manager configured to manage the use of the one or more processors and the one or more data stores by the
plurality of virtual machines, and

a data agent configured to manage backup storage operations of the proxy computing device,
wherein the snapshot request comprises a request by the virtual data agent of a first virtual machine of the plurality of
virtual machines to create a point-in-time snapshot copy of at least a portion of the virtual data store of the first virtual
machine, and wherein the proxy computing device forms part of a networked storage system comprising at least one storage device
that is configured to take snapshots representing point-in-time copies of data;

forwarding, by the data agent of the proxy computing device, the snapshot request to the storage device on behalf of the first
virtual machine, wherein a point-in-time snapshot of the portion of the virtual data store is created on the storage device
in response to the snapshot request;

receiving, at the proxy computing device, a snapshot identifier associated with the point-in-time snapshot; and forwarding
the snapshot identifier to the first virtual machine by the proxy computing device.

US Pat. No. 9,461,881

MIGRATION OF EXISTING COMPUTING SYSTEMS TO CLOUD COMPUTING SITES OR VIRTUAL MACHINES

Commvault Systems, Inc., ...

1. At least one tangible non-transitory computer-readable storage medium storing instructions, which when executed by at least
one data processing device perform a method for migrating functionality of a source physical computing device to a destination
virtual machine, the method comprising:
identifying a non-production copy of data and metadata associated with a source physical computing device,
wherein the non-production copy is stored on one or more non-production storage media separate from the source physical computing
device and separate from the destination virtual machine,

determining a configuration of the source physical computing device;
determining or establishing a desired configuration for a destination virtual machine,
wherein the configuration is based at least in part on the determined configuration of the source physical computing device;
creating a virtual machine based on the determined configuration of the source physical computing device;
providing the virtual machine with access to the one or more non-production storage media to thereby access the data and metadata
from the non-production copy of data and metadata associated with the source physical computing device,

wherein the data and metadata from the non-production copy includes application-specific data and metadata;
modifying a configuration of the virtual machine based at least in part on the determined or established configuration for
the destination virtual machine,

wherein modifying the virtual machine comprises modifying a configuration of the virtual machine to substantially match the
determined or established configuration for the destination virtual machine;

following the modifying, updating a mapping of an IP address of the source physical computing device, the destination virtual
machine, or both the source physical computing device and destination virtual machine,

such that client computing devices are directed or routed to the destination virtual machine instead of the source physical
computing following the modifying, and

such that, the source physical computing device is decommissionable after migration is complete, and
wherein the source physical computing device is inoperable after being decommissioned; and
disposing of the source physical computing device following decommissioning, including permanently wiping data and metadata
stored on the source physical computing device, and notifying a server associated with an intranet site or auction site that
the source physical computing device is available for use by other users in an organization or for sale to external parties,
wherein the notification includes a description or specification of the source physical computing device.

US Pat. No. 9,451,023

INFORMATION MANAGEMENT OF VIRTUAL MACHINES HAVING MAPPED STORAGE DEVICES

Commvault Systems, Inc., ...

1. At least one tangible non-transitory computer-readable storage medium storing instructions, which when executed by at least
one data processing device, perform a method for creating a secondary copy of data and metadata of a virtual machine that
has a mapped logical unit number, the method comprising:
discovering a virtual machine;
wherein the discovering includes determining a virtual disk for the virtual machine, and
wherein the virtual disk stores production or primary data used by the virtual machine;
discovering a mapped logical unit number (LUN) for the virtual machine,
wherein the LUN is a number used to identify a logical unit;
causing a snapshot of the virtual disk to be obtained,
wherein the snapshot is a set of pointers that reference data and metadata as the data and metadata existed at a particular
point in time;

causing a snapshot of the mapped LUN to be obtained; and,
creating a secondary copy of the virtual machine from the snapshot of the virtual disk or the snapshot of the mapped LUN.

US Pat. No. 9,418,149

AUTO SUMMARIZATION OF CONTENT

COMMVAULT SYSTEMS, INC., ...

1. A method of summarizing electronic data files during a storage event in a storage operation cell, the method comprising:
in the storage operation cell, which is managed by a storage manager component,
implementing a storage event for a primary copy of an electronic data file that originated on a client computer, wherein the
storage event comprises a migration operation of the electronic data file, wherein the migration operation generates a duplicate
copy of the electronic data file, which is designated a duplicate data file, wherein the duplicate data file is stored, by
a media agent component of the storage operation cell, to a secondary storage device in the storage operation cell;

during the storage event, analyzing the duplicate data file and summarizing the contents of the duplicate data file into a
summary, wherein a summary agent component of the storage operation cell performs the analyzing and the summarizing, based
on applying fuzzy logic, to synthesize the contents of the duplicate data file into the summary, wherein the summary is substantially
smaller than the primary copy of the electronic data file, and further wherein the summary comprises at least one link to
the duplicate data file;

storing the summary to at least one component of the storage operation cell; and
transmitting, in response to a keyword search directed at least in part to the duplicate data file in the secondary storage
device, at least a portion of the summary of the contents of the duplicate data file.

US Pat. No. 9,396,244

SYSTEMS AND METHODS FOR MANAGING REPLICATED DATABASE DATA

Commvault Systems, Inc., ...

1. A system for performing data management operations, the system comprising:
at least one target computer comprising computer hardware that communicates with at least one source computer to receive information
about a source database created by a native application, the source database stored on a first storage device;

the target computer replicates at least a portion of the source database to generate a target database on a second storage
device, the target database existing in a first state at a first time, wherein the target database in the first state is in
a first format that is readable by use of the native application;

the target computer copies at least a portion of the target database in the first state to create a first copy, the first
copy stored in the first state;

at a second time subsequent to creating the first copy, the target computer commits a plurality of data transactions to the
target database that puts the target database into a second state, wherein the target database in the second state is readable
offline without use of the native application;

the target computer copies at least a portion of the target database in the second state to create a second copy that includes
data corresponding to the plurality of committed data transactions, wherein the second copy is stored in the second state
that is readable offline without use of the native application; and

the target computer reverts the target database in the second state back to the first state that is in a first format that
is readable by use of the native application based on differences between the first copy in the first state and the second
copy in the second state.

US Pat. No. 9,116,633

INFORMATION MANAGEMENT OF VIRTUAL MACHINES HAVING MAPPED STORAGE DEVICES

Commvault Systems, Inc., ...

1. At least one tangible non-transitory computer-readable storage medium storing instructions in a memory, which when executed
by at least one data processing device perform a method for creating and using a backup copy of data and metadata of a virtual
machine that has a mapped logical unit number, the method comprising:
discovering a virtual machine;
discovering a virtual disk for the virtual machine;
discovering a mapped logical unit number (LUN) for the virtual machine, wherein the LUN is a number used to identify a logical
unit;

tracking the virtual machine, the virtual disk, and the mapped LUN in a data structure;
capturing a snapshot of the virtual disk,
wherein the snapshot is a set of pointers that reference data and metadata as the data and metadata existed at a particular
point in time;

capturing a snapshot of the mapped LUN;
creating a backup copy of the virtual machine from the snapshot of the virtual disk or the snapshot of the mapped LUN; and
reverting or restoring the virtual machine using the backup copy of the virtual machine.

US Pat. No. 9,378,035

SYSTEMS AND METHODS FOR REPURPOSING VIRTUAL MACHINES

Commvault Systems, Inc., ...

1. A method to be performed by a computing system for providing a virtual machine, the method comprising:
maintaining, by a virtual machine lifecycle management module, a list of virtual machines that are available for repurposing,
the maintaining comprising:

searching for idle virtual machines and archived virtual machines,
determining that a virtual machine is unavailable for repurposing because it is reserved,
computing an amount of time each virtual machine has been idle;
dynamically determining, whether each of a plurality of virtual machines has been idle for a predetermined period of time;
archiving, a respective virtual machine of the plurality of virtual machines that has been determined to be idle for the predetermined
period of time; and

replacing, the respective virtual machine with a stub that refers to the location of the archived virtual machine on a secondary
storage;

receiving a request to provide a virtual machine;
receiving a specification for the virtual machine, the specification comprising at least one configuration parameter for the
virtual machine, the at least one configuration parameter comprising an association with a value;

determining if a virtual machine on the list meets or exceeds the specification and is available for repurposing;
if there is not a virtual machine that is repurposable or there is not a virtual machine that meets or exceeds the specification,
creating a new virtual machine that meets or exceeds the specification;

if one or more virtual machines on the list is available for repurposing and the one or more virtual machines meets or exceeds
the specification, then selecting a virtual machine from the one or more virtual machines by:

selecting an idle virtual machine from among the one or more virtual machines based on it being the closest match to the specification,
if at least one of the one or more virtual machines is idle, and

selecting an archived virtual machine for repurposing based on it being the closest match to the specification, if no virtual
machine of the one or more virtual machines is idle;

repurposing the selected virtual machine, if a virtual machine has been selected, the repurposing comprising:
recovering the selected virtual machine from the second storage device, if the selected virtual machine is an archived virtual
machine;

reverting the selected virtual machine to a generic state from which a user can modify the selected virtual machine;
associating the selected virtual machine with the user; and
switching permissions or ownership of the selected virtual machine from a previous user to the user; and
updating the list to reflect that the selected virtual machine is unavailable.

US Pat. No. 9,311,121

ARCHIVING VIRTUAL MACHINES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of archiving virtual machines in a networked data storage system, comprising:
using one or more computing devices comprising one or more hardware processors coupled to memory:
monitoring usage of a virtual machine (VM) executing on one or more client computing devices residing in a primary storage
subsystem, the VM associated with one or more virtualization applications, wherein said monitoring is based on usage of resources
associated with the VM and is performed according to a storage policy for archiving the VM;

determining whether to archive the VM based on the usage of the VM;
in response to determining that the VM should be archived, using one or more secondary storage controller computers comprising
computer hardware, copying the VM from one or more primary storage devices residing in the primary storage subsystem to one
or more secondary storage devices residing in a secondary storage subsystem to create a secondary copy of the VM;

creating a VM placeholder for the VM on the one or more primary storage devices, the VM placeholder including information
for restoring the VM from the one or more secondary storage devices; and

deleting the VM from the one or more primary storage devices, wherein the VM appears to be accessible to a user after being
deleted from the one or more primary storage devices and is displayed as an active VM in a list of available VMs along with
VMs that have not been archived, and wherein the placeholder is recognized as the VM by the virtualization applications,

wherein said determining whether to archive the VM, said copying the VM, and said deleting the VM occur during a backup of
data from the primary storage subsystem to the secondary storage subsystem.

US Pat. No. 9,483,364

SYNCHRONIZATION OF LOCAL SECONDARY COPIES WITH A REMOTE STORAGE MANAGEMENT COMPONENT

COMMVAULT SYSTEMS, INC., ...

1. An information management cell with failover management capability, comprising:
a plurality of client computing devices comprising computer hardware at least one respective client computing device of the
plurality of client computing devices comprising data protection software installed thereon which is configured to, upon execution
on the respective client computing device, at the direction of a remote storage manager that is geographically remote from
the information management cell, process primary data generated by at least one application executing on the respective client
computing device; and

a plurality of secondary storage computing devices each comprising computer hardware configured to copy data received from
the plurality of client computing devices to one or more secondary storage devices during secondary copy operations, at the
direction of the remote storage manager that is geographically remote from the information management cell;

wherein a first secondary storage computing device of the plurality of secondary storage computing devices implements a failover
storage manager, the failover storage manager having reduced functionality as compared to the remote storage manager, wherein
the failover storage manager maintains a management database that is significantly smaller than that of the remote storage
manager;

the failover storage manager configured to, in the event of a loss of connectivity between the information management cell
and the remote storage manager:

access a stored storage policy;
initiate a secondary copy operation according to the storage policy in which a second secondary storage computing device of
the plurality of secondary storage computing devices is involved in the creation of a secondary copy on the one or more secondary
storage devices; and

generate a first identifier associated with the secondary copy,
wherein, subsequent to reestablishment of connectivity between the information management cell and the remote storage manager,
the information management cell and the remote storage manager synchronize with one another, and as part of the synchronization,
the failover storage manager is further configured to:

transmit the first identifier to the remote storage manager;
subsequent to the transmission of the first identifier, receive a second identifier from the remote storage manager; and
associate the second identifier received from the remote storage manager with the secondary copy in place of the first identifier,
the second identifier being different from the first identifier generated by the failover storage manager.

US Pat. No. 9,336,226

CRITERIA-BASED DATA SYNCHRONIZATION MANAGEMENT

Commvault Systems, Inc., ...

1. A computer-implemented method of synchronizing files between multiple client computers using file data, the computer-implemented
method comprising:
accessing, by a synchronization agent executing in computer hardware comprising one or more computer processors, user-defined
synchronization criteria for identifying files to synchronize between a first primary storage device associated with a first
client computing device and a second primary storage device associated with a second client computing device;

initiating, by a storage manager, a backup operation, the backup operation comprising:
identifying, according to a storage policy, one or more files stored in the first primary storage device; and
copying, according to the storage policy, the one or more files stored in the first primary storage device to one or more
secondary storage devices to create a backup including the one or more files;

reviewing, by the synchronization agent, metadata associated with each of one or more files in the backup;
based at least in part on a review of the accessed metadata, identifying, by the synchronization agent, at least one file
in the backup that meets the synchronization criteria for synchronization between the first primary storage device and the
second primary storage device;

accessing the at least one file from the backup stored in the one or more secondary storage devices; and
communicating the accessed at least one file from the one or more secondary storage devices to the second client computing
device for storage in the second primary storage device to synchronize the at least one file between the first primary storage
device and the second primary storage device.

US Pat. No. 9,236,079

SYSTEM AND METHOD FOR STORING REDUNDANT INFORMATION

Commvault Systems, Inc., ...

1. A computer system for restoring data from a sequential storage medium, wherein the data has been deduplicated, the system
comprising:
at least one processor;
at least one data storage device coupled to the at least one processor;
a receiving unit configured to receive a request to restore at least first and second different data objects from a deduplicated
copy of the first and second data objects,

wherein the deduplicated copy of the first and second data objects is stored on a sequential storage medium,
wherein the first and second data objects, prior to deduplication and storage on the sequential storage medium, had multiple,
identical instances, and

wherein the deduplicated copy contains one instance, stored on the sequential storage medium, of the first and second data
objects, and information describing one or more references to the one instance of the first and second data objects;

an identifying unit, in response to the received request, configured to—
when a requested first or second data object is stored as an instance, identify a location on the sequential storage medium
of the instance of the respective first or second data objects, and

when a requested first or second data object is stored as a reference to an instance, identify a location on the sequential
storage medium of the instance of the respective first or second data objects, and

configured to sort the identified locations; and
a restoring unit configured to restore the requested data objects to a random-access storage medium from the sorted locations
on the sequential storage medium.

US Pat. No. 9,405,635

MULTI-SOURCE RESTORE IN AN INFORMATION MANAGEMENT SYSTEM

Commvault Systems, Inc., ...

1. A method of restoring data from multiple storage devices in an information management system, the method comprising:
receiving a request to restore a set of one or more files including a first file from a secondary storage subsystem to a client
computing device residing in a primary storage subsystem, wherein the secondary storage subsystem comprises a plurality of
storage devices, and wherein at least two of the plurality of storage devices each store a separate copy of the first file;

using one or more devices comprising computer hardware, identifying a set of secondary storage computing devices residing
in the secondary storage subsystem, wherein each of the at least two storage devices is associated with at least one of the
secondary storage computing devices in the set of secondary storage computing devices;

using one or more devices comprising computer hardware, selecting a subset of the set of secondary storage computing devices
based on stored selection criteria, the subset comprising at least a first secondary storage computing device and a second
secondary storage computing device;

using the first secondary storage computing device, initiating a restore operation of a first copy of the first file stored
in a first storage device of the at least two of the plurality of storage devices, the first storage device associated with
at least the first secondary storage computing device; and

using the second secondary storage computing device, initiating a restore operation of a second copy of the first file stored
in a second storage device of the at least two of the plurality of storage devices, the second storage device associated with
at least the second secondary storage computing device.

US Pat. No. 9,367,702

AUTOMATIC FILE ENCRYPTION

Commvault Systems, Inc., ...

1. A method for automatically encrypting files, the method comprising:
by computer hardware comprising one or more processors:
detecting access to a first file, the first file stored in a primary storage system;
determining whether the access comprises a write access;
in response to determining that the access comprises a write access:
accessing file metadata associated with the first file;
accessing a set of encryption rules;
determining whether the file metadata satisfies the set of encryption rules; and
in response to determining that the file metadata satisfies the set of encryption rules:
identifying an application associated with the first file;
encrypting the first file to obtain a first encrypted file;
modifying an extension of the first encrypted file to include an encryption extension; and
associating the encrypted first file with the application, wherein associating the encrypted first file with the application
enables the encrypted first file to be displayed with identification information associated with the application.

US Pat. No. 9,811,423

PARTIAL FILE RESTORE IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of storing files in secondary storage in a data storage system, comprising:
using one or more computing devices comprising computer hardware:
initiating copying of a plurality of files from a primary storage subsystem to a secondary storage subsystem, wherein data
stored on the secondary storage subsystem is stored in one or more chunks, and each chunk is a logical data unit for storing
the data in the secondary storage subsystem in one or more secondary storage devices residing in the secondary storage subsystem;

copying a first portion of a first file of the plurality of files from the primary storage subsystem to a buffer for writing
to the secondary storage subsystem;

creating a first entry in an index for a first chunk of the one or more chunks, the index stored in association with the first
chunk in the secondary storage subsystem, the first entry corresponding to the first portion of the first file and comprising:

a first application offset determined by a software application that accessed the first file and that corresponds to the first
portion of the first file, wherein the first application offset designates a starting position within the first file of the
first portion of the first file to be restored from a secondary copy of the first file in the first chunk stored in the secondary
storage subsystem; and

a first secondary storage offset indicating a location of the first portion of the first file within the secondary copy of
the first file in the first chunk in the secondary storage subsystem;

copying a second portion of the first file from the primary storage subsystem to the buffer for writing to the secondary storage
subsystem;

creating a second entry in the index for the first chunk, the second entry corresponding to the second portion of the first
file and comprising:

a second application offset determined by the software application that accessed the first file and that corresponds to the
second portion of the first file, wherein the second application offset designates a starting position within the first file
of the second portion of the first file to be restored from the secondary copy of the first file in the first chunk stored
in the secondary storage subsystem; and

a second secondary storage offset indicating a location of the second portion of the first file within the secondary copy
of the first file in the first chunk in the secondary storage subsystem;

writing the first portion from the buffer to the location indicated by the first secondary storage offset and writing the
first entry to the first chunk in response to the first portion being written from the buffer; and

writing the second portion from the buffer to the location indicated by the second secondary storage offset and writing the
second entry to the first chunk in response to the second portion being written from the buffer,

wherein creation of the secondary copy involves a series of transactions in which data is written to the buffer and then written
from the buffer to the secondary storage subsystem, and wherein an amount of data written to the buffer in each transaction
is not predetermined.

US Pat. No. 9,189,170

EXTERNAL STORAGE MANAGER FOR A DATA STORAGE CELL

Commvault Systems, Inc., ...

1. A method of providing shared data storage management services to a plurality of data storage cells, comprising:
using a storage manager executing on one or more hardware processors:
receiving a request from a first data storage cell of a plurality of data storage cells to register at least a first component
of the first data storage cell such that the first component can utilize storage management services provided by the storage
manager, the plurality of data storage cells associated with respective organizations and implemented on respective local
area networks (LAN's), each data storage cell of the plurality of data storage cells configured to communicate with the storage
manager over a wide area network (WAN) and each data storage cell comprising at least:

one or more client computing devices each having at least one software application executing thereon generating production
data;

one or more secondary storage controller computers comprising computer hardware configured to perform storage operations at
the direction of the storage manager; and

one or more secondary storage devices configured to store copies of the production data,
wherein the one or more client computing devices, the one or more secondary storage controller computers, and the one or more
secondary storage devices are separate from the one or more hardware processors, wherein the production data and the copies
of the production data associated with the plurality of data storage cells are not accessible by the storage manager;

adding the first component to a waiting room data structure, the waiting room data structure including a list of entries corresponding
to components from the plurality of data storage cells which are pending registration with the storage manager;

subsequent to said adding, reviewing the contents of the waiting room data structure to detect that the first component is
in the waiting room data structure;

in response to detecting the first component is in the waiting room data structure:
associating the first component with a first group of one or more groups of data storage cell components of the first data
storage cell that are already registered by the storage manager;

assigning to the first component at least a first characteristic that is associated with the first group; and
registering the first component such that the first component can utilize the storage management services provided by the
storage manager;

receiving from the first data storage cell a request for a particular storage manager operation to be performed by the storage
manager on behalf of the first component; and

performing the storage manager operation on behalf of the first component and at least in part based on the first characteristic,
wherein said performing comprises instructing at least one of the secondary storage controller computers of the first data
storage cell to perform storage operations associated with the storage manager operation.

US Pat. No. 9,183,240

DISTRIBUTED INDEXING SYSTEM FOR DATA STORAGE

Commvault Systems, Inc., ...

1. A method of creating indexes of secondary copies of data, the method comprising;
copying primary data stored in one or more primary storage devices to one or more secondary storage devices, wherein copying
the primary data to the secondary storage device creates a secondary copy on the one or more secondary storage devices;

indexing a first portion of the secondary copy with a first index server, wherein indexing the first portion of the secondary
copy creates a first index of the first portion of secondary data;

indexing a second portion of the secondary copy with a second index server, wherein indexing the second portion of secondary
copy creates a second index of the second portion of secondary data;

copying the first index to the second index server so that the first index is available at both the first and second index
servers;

identifying that a plurality of requests for secondary data are associated with the first index; and
distributing the plurality of requests for the secondary data associated with the first index among the first and second index
servers to lessen a load on the first index server.

US Pat. No. 9,436,555

EFFICIENT LIVE-MOUNT OF A BACKED UP VIRTUAL MACHINE IN A STORAGE MANAGEMENT SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method for executing a backed up virtual machine on a host computing device without restoring an entire backup copy of
the virtual machine, based on pre-staging certain backed up data blocks to a media agent component of a storage management
system, the method comprising:
prior to execution of the virtual machine, receiving, by the media agent from a data agent component of the storage management
system, a profile of the virtual machine, wherein the media agent resides on a secondary storage computing device;

determining, by the media agent, based on the profile of the virtual machine, a first set of data blocks to be copied from
a backup copy of data associated with the virtual machine, wherein the backup copy is stored on a secondary storage device
in communication with the media agent, and wherein the backup copy comprises at least one of a configuration file and a virtual
disk associated with the virtual machine;

copying the first set of data blocks, by the media agent from the backup copy to a read-cache associated with the media agent
on the secondary storage computing device; and

launching execution of the virtual machine on the host computing device, based on the first set of data blocks, which set
of blocks is served by the media agent from the read-cache without restoring the entire backup copy of the virtual machine;

wherein continuing execution of the virtual machine on the host computing device is based on the media agent serving further
read requests without restoring the entire backup copy of the virtual machine; and

wherein the profile of the virtual machine comprises at least one indication of a file associated with the virtual machine,
which file is selected by a user via a file manager application, and wherein the backup copy also comprises a representation
of the file selected by the user.

US Pat. No. 9,509,652

METHOD AND SYSTEM FOR DISPLAYING SIMILAR EMAIL MESSAGES BASED ON MESSAGE CONTENTS

Commvault Systems, Inc., ...

1. At least one non-transitory, tangible computer-readable medium storing instructions which, when executed by a computing
system, cause the computing system to perform a method for displaying email messages to a user, the method comprising:
receiving an indication of a message received at a mailbox associated with the user;
generating a journal entry associated with the received message,
wherein the journal entry is part of a change journal that tracks changes made to the mailbox associated with the user, and
wherein the journal entry includes a path to the received message;
extracting content associated with the received message via the path to the received message;
accessing an index of content associated with indexing content within messages received at the mailbox associated with the
user;

identifying, via the index of content, other messages contained in the mailbox having content similar to the extracted content;
and

presenting the received message along with information associated with the identified other messages to the user.

US Pat. No. 10,033,813

EXTERNAL STORAGE MANAGER FOR A DATA STORAGE CELL

Commvault Systems, Inc., ...

1. A method of providing shared data storage management services to a plurality of data storage cells, comprising:using a storage manager comprising one or more hardware processors:
receiving a first registration request to register a first component of a first data storage cell of a plurality of data storage cells with the storage manager such that the first component becomes coupled with the storage manager, the first data storage cell located remotely from the storage manager and comprising at least: (i) one or more client computing devices comprising computer hardware and configured to generate primary data, and (ii) one or more secondary storage computing devices comprising computer hardware and configured to cause storage of secondary copies of the primary data at the direction of the storage manager;
determining, based on a parameter associated with the first component, that the first component is to be assigned to a first group of a plurality of groups associated with the storage manager, wherein the first group is associated with a first storage policy;
receiving a second registration request to register a second component of a second data storage cell of the plurality of data storage cells with the storage manager such that the second component becomes coupled with the storage manager, the second data storage cell located remotely from the storage manager and comprising at least: (i) one or more client computing devices comprising computer hardware and configured to generate primary data, and (ii) one or more secondary storage computing devices comprising computer hardware and configured to cause storage of secondary copies of the primary data at the direction of the storage manager;
determining, based on a parameter associated with the second component, that the second component is to be assigned to a second group of the plurality of groups that is different from the first group, wherein the second group is associated with a second storage policy;
receiving a request for a first operation to be performed by the storage manager on behalf of the first component;
performing the first operation on behalf of the first component according to the first storage policy;
receiving a request for a second operation to be performed by the storage manager on behalf of the second component; and
performing the second operation on behalf of the second component according to the second storage policy.

US Pat. No. 9,773,025

STORING A VARIABLE NUMBER OF INSTANCES OF DATA OBJECTS

Commvault Systems, Inc., ...

1. A system for storing multiple instances of a data object in a data storage network, wherein the data storage network includes
data storage devices coupled via a computer network, and wherein the computer network also couples to a computer storing a
primary copy of data that includes a first set of N number of the same data objects, the system comprising:
multiple data storage devices, wherein each of the multiple storage devices is distinct from, and coupled via the computer
network to, the computer;

a variable instance database configured to store information associated with secondary copies of the data that includes a
second set of reduced instanced data objects, wherein the information includes, for each data object of the reduced instanced
data objects of the second set:

a unique identifier generated for the reduced instanced data object, and
a number of instances of the reduced instanced data object, to store for the reduced instanced data object that is based on
a classification assigned to the reduced instanced data object,

wherein the number of instances of the reduced instanced data object is less than the N number of instances of the data object
stored in the primary copy of data,

wherein at least one of the reduced instanced data objects of the second set has multiple instances stored among the multiple
storage devices, and

wherein a pointer is stored in the variable instance database, to a storage location for each instance of the reduced instanced
data object;

a secondary storage computing device that includes a processor and is configured to:
receive an indication to perform a storage operation on the primary copy of the data, including the first set of N number
of the same data objects, where N is a number greater than 3,

wherein the indication specifies that fewer than N instances but greater than one instance of the N number of data objects
of the first set are to be stored, and

wherein each of the data objects of the first set are to be stored on a distinct one of the multiple storage devices;
generate a unique identifier for each of the N number of data objects of the first set;
access the variable instance database and for the N number of data objects of the first set, use the generated unique identifier
and the number of instances to store based on the classification assigned to the reduced instanced data object to determine
the fewer than N instances but greater than one instance to store for the first set of N number of data objects; and

store the fewer than N instances of the data object but greater than one instance of the data object on the multiple storage
devices.

US Pat. No. 9,665,591

HIGH AVAILABILITY DISTRIBUTED DEDUPLICATED STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A computer-implemented method of performing a storage operation in a distributed, deduplicated storage system, the method
comprising:
during a period of availability of a first deduplication database computing device of a plurality of deduplication database
computing devices and a second deduplication database computing device of the plurality of deduplication database computing
devices,

the plurality of deduplication database computing devices storing signature blocks corresponding to a plurality of data blocks
stored in one or more secondary storage devices of secondary storage, the plurality of data blocks corresponding to data blocks
received from primary storage,

at least one signature block of the signature blocks comprising a signature of at least one data block of the plurality of
data blocks, location information of the at least one data block in the one or more secondary storage devices, and a reference
count value indicative of a quantity of one or more references in the secondary storage to the at least one data block,

the first deduplication database computing device configured to store a first subset of the signature blocks based at least
in part on a data block distribution policy and designated as a failover deduplication database computing device for the second
deduplication database computing device that is configured to store, based at least in part on the data block distribution
policy, a second subset of the signature blocks that is different from and does not overlap with the first subset of the signature
blocks;

receiving at a secondary storage computing device comprising a failover index and communicatively coupled to the plurality
of deduplication database computing devices, a first set of one or more signatures corresponding to one or more data blocks
stored in primary storage;

identifying, based at least in part on the data block distribution policy, the second deduplication database computing device
as the deduplication database computing device assigned to store the first set of one or more signatures;

determining, based at least in part on a query of the failover index, that at least one signature of the first set of one
or more signatures matches at least one signature of a second set of one or more signatures that was stored in the first deduplication
database computing device during a previous period of unavailability of the second deduplication database computing device;

querying the first deduplication database computing device for the at least one signature of the first set of one or more
signatures;

receiving from the first deduplication database computing device a location of a copy of a data block corresponding to the
at least one signature of the first set of one or more signatures; and

storing in the secondary storage the location of the copy of the data block corresponding to the at least one signature of
the first set of one or more signatures.

US Pat. No. 9,633,056

MAINTAINING A DEDUPLICATION DATABASE

Commvault Systems, Inc., ...

1. A method for managing a deduplication database in a deduplication storage system, wherein the deduplication database stores
database entries comprising deduplication signatures corresponding to deduplication data blocks stored in secondary storage,
the method comprising:
by a secondary storage computing device comprising computer hardware, determining whether a working copy of a first database
entry of a plurality of database entries of a deduplication database exists in a local database residing in main memory of
the secondary storage computing device, wherein the deduplication database resides in one or more storage devices external
to the secondary storage computing device;

based at least on a determination that the working copy of the first database entry does not reside in the local database,
querying the deduplication database for the first database entry and generating the working copy of the first database entry
based at least on information received from the deduplication database in response to the querying;

modifying the working copy of the first database entry based on a storage operation involving a stored deduplication data
block corresponding to the first database entry;

detecting a triggering condition indicating that a plurality of working copies corresponding to a respective plurality of
database entries in the deduplication database should be merged with the deduplication database, the plurality of working
copies including the working copy of the first database entry contained in the local database; and

based at least on said detecting the triggering condition, updating the deduplication database by merging at least some contents
of the plurality of working copies with the deduplication database.

US Pat. No. 9,092,378

RESTORING COMPUTING ENVIRONMENTS, SUCH AS AUTORECOVERY OF FILE SYSTEMS AT CERTAIN POINTS IN TIME

Commvault Systems, Inc., ...

1. At least one computer-readable medium, excluding a transitory propagating signal, and carrying instructions, which when
executed by at least one data processor, restores a computing environment of a source device to a previous state of the computing
environment, comprising:
causing a state of the computing environment of the source device to be transferred to a secondary storage server or a cloud-based
computing system,

wherein the cloud-based computing system hosts a bootable computer-readable storage medium,
wherein the state of the computing environment corresponds to at least one set of data and configuration information associated
with the computing environment, and

wherein the secondary storage server hosts a virtual machine and accesses, via the virtual machine, the bootable computer-readable
storage medium at the cloud-based computing system;

receiving a request to restore the computing environment of the source device to a previous state,
wherein the previous state corresponds to an identified one of multiple sets of data and configuration information associated
with the computing environment of the source device,

wherein the request to restore the computing environment of the source device to a previous state is received via a restoration
interface, and,

wherein the restoration interface is configured to enable selection of the identified one of the multiple sets of data and
configuration information;

causing the identified one of the multiple sets of data and configuration information to be retrieved; and,
causing the previous state of the computing environment of the source device to be restored based on the retrieved one of
the multiple sets of data and configuration information.

US Pat. No. 10,108,652

SYSTEMS AND METHODS TO PROCESS BLOCK-LEVEL BACKUP FOR SELECTIVE FILE RESTORATION FOR VIRTUAL MACHINES

Commvault Systems, Inc., ...

1. A method to restore a selected file from block-level data protection of virtual machine files without restoring blocks of data associated with other than the selected file in a data management system, the method comprising:receiving, with a storage manager in a first computing device comprising computer hardware, an indication of a selected virtual file to restore from a file level table of virtual files associated with a virtual machine backed up by a block-level data protection operation, wherein the virtual machine is associated with a media agent and a host operating system of a host computing device having a file allocation table (FAT) comprising file information of the virtual files in an information store associated with the virtual machine;
using, with the media agent, a file index to locate transferred blocks of data in a secondary storage device that comprise at least a portion of the selected virtual file, the file index comprising file information for blocks of data transferred from the virtual machine to the secondary storage device during the block-level data protection operation, the file information comprising a location of the selected virtual file within the information store and obtained from the FAT of the host operating system during the block-level data protection operation;
automatically restoring, with the media agent, one or more transferred blocks of data in the secondary storage device that are associated with the at least the portion of the selected virtual file without restoring transferred blocks of data associated with other than the selected virtual file to create restored blocks of data;
using the file index to locate the at least the portion of the selected virtual file in the restored one or more blocks of data, automatically recreating, with the media agent, the selected virtual file from the restored one or more blocks of data to create a recreated file; and
automatically presenting, with the storage manager, the recreated file on a graphical user interface (GUI).

US Pat. No. 9,684,535

ARCHIVING VIRTUAL MACHINES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of archiving virtual machines in a networked data storage system, comprising:
using one or more computing devices comprising one or more hardware processors coupled to memory:
monitoring usage of a virtual machine (VM) executing on one or more client computing devices residing in a primary storage
subsystem, the VM having a first amount of computing resources, wherein monitoring the usage of the VM comprises obtaining
data relating to the usage of the VM during a backup of data from the primary storage subsystem to a secondary storage subsystem;

determining whether the usage of the VM satisfies an archival threshold condition for archiving the VM;
in response to determining that the usage of the VM satisfies the archival threshold condition for archiving the VM, copying
the VM from one or more primary storage devices associated with the one or more client computing devices residing in the primary
storage subsystem to one or more secondary storage devices residing in the secondary storage subsystem to create a secondary
copy of the VM;

creating a VM placeholder having a second amount of computing resources that is less than the first amount of computing resources
allocated to the VM, the VM placeholder including information for restoring the VM from the one or more secondary storage
devices;

deleting the VM from the one or more primary storage devices; and
restoring at least a portion of the VM from the secondary storage subsystem to the primary storage subsystem when the VM is
accessed.

US Pat. No. 9,632,882

GENERIC FILE LEVEL RESTORE FROM A BLOCK-LEVEL SECONDARY COPY

COMMVAULT SYSTEMS, INC., ...

1. A method for restoring data, comprising:
with a first computing device residing in a data storage system and comprising computer hardware,
interfacing with a device node instantiated on the first computing device to obtain file system metadata corresponding to
a block-level secondary copy, the block-level secondary copy representing a plurality of files stored across a plurality of
blocks on one or more secondary storage devices;

processing the obtained file system metadata with an operating system component executing on a processor of the first computing
device to construct a file system hierarchy corresponding to the block-level secondary copy and to mount the block-level secondary
copy onto the first computing device;

generating data for displaying a view of the file system hierarchy to a user; and
in response to a request initiated by user interaction with the view of the file system hierarchy to restore at least a first
file of the plurality of files of the block-level secondary copy, interfacing with the device node to request a read from
the one or more secondary storage devices of one or more first blocks of the plurality of blocks which correspond to the first
file,

wherein the device node initiates retrieval of the one or more first blocks from the one or more secondary storage devices,
and

wherein the at least one file is copied, using the one or more first blocks, to one or more primary storage devices associated
with the first computing device.

US Pat. No. 9,483,201

ADMINISTERING A SHARED, ON-LINE POOL OF DATA STORAGE RESOURCES FOR PERFORMING DATA STORAGE OPERATIONS

CommVault Systems, Inc., ...

1. A method of creating secondary copies of data associated with user computing devices in a shared storage pool, comprising:
using one or more computing devices comprising computer hardware:
receiving instructions to create a secondary copy of first data stored in primary storage associated with a first computing
device in a networked pool of computing devices;

in response to the instructions to create the secondary copy of the first data, accessing a data structure associated with
the first computing device that identifies a first subset of computing devices in the pool that are designated for sharing
storage resources with the first computing device, wherein the remaining computing devices in the pool that are not in the
subset are not designated for sharing storage resources with the first computing device;

instructing, by a storage manager residing on first computer hardware, the first computing device to transmit the first data
to a first media agent residing on second computer hardware and associated with at least one computing device in the pool
and which creates the secondary copy of the first data in storage resources associated with a second computing device in the
pool that is included in the first subset;

receiving instructions to create a secondary copy of second data stored in primary storage associated with a third computing
device in the pool;

in response to the instructions to create the secondary copy of the second data, accessing a data structure associated with
the third computing device that identifies a second subset of computing devices in the pool that are designated for sharing
storage resources with the third computing device, the second subset including the first computing device; and

instructing, by the storage manager, the third computing device to transmit the second data to a second media agent residing
on third computer hardware and associated with at least one computing device in the pool and which creates the secondary copy
of the second data in storage resources associated with the first computing device.

US Pat. No. 9,448,731

UNIFIED SNAPSHOT STORAGE MANAGEMENT

COMMVAULT SYSTEMS, INC., ...

1. A method for snapshot management in a storage management system that comprises one or more snapshot-capable storage arrays
hosting a plurality of logical unit numbers, the method comprising:
executing a unified-snapshot job that generates at most one snapshot for a logical unit number in the plurality of logical
unit numbers, regardless of the number of clients that store primary data to the respective logical unit number;

wherein the executing of the unified-snapshot job comprises:
discovering, by a storage manager, a first subclient of a first client and a second subclient of a second client which is
distinct from the first client,

wherein the first client generates first primary data that is stored to one or more logical unit numbers in the plurality
of logical unit numbers, and

wherein the first subclient represents a logical grouping of part of the first primary data, and
wherein the second client generates second primary data that is stored to at least one of the one or more logical unit numbers
storing the first primary data, and

wherein the second subclient represents a logical grouping of part of the second primary data,
discovering, by a media agent component of the storage management system, a first logical unit number in the plurality of
logical unit numbers, wherein the first logical unit number comprises (i) data of the first subclient and (ii) data of the
second subclient,

instructing, by the media agent, a first storage array that hosts the first logical unit number to generate and store a first
snapshot of the first logical unit number; and

registering, by at least one of the media agent and the storage manager: (a) a first association between the generated first
snapshot of the first logical unit number and the first subclient, and (b) a second association between the generated first
snapshot of the first logical unit number and the second subclient.

US Pat. No. 9,189,167

SHARED LIBRARY IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of administering access to a tape data storage library that is shared amongst a plurality of data storage cells
to manage copies of production primary data, the method comprising: using one or more computing devices comprising computer
hardware: allocating, by a library arbiter module executing on one or more computer processors and for each respective data
storage cell of a plurality of data storage cells, a subset of storage space in a tape data storage library for use by the
respective data storage cell, the tape data storage library residing in a secondary storage subsystem and including a plurality
of tape drives configured to load tape media in the tape data storage library, wherein access to the tape data storage library
is shared by the data storage cells and each of the data storage cells comprises:
one or more client computing devices residing in a primary storage subsystem and having at least one software application
executing thereon generating production data;

and one or more primary storage devices residing in the primary storage subsystem and associated with the one or more client
computing devices;

receiving, by the library arbiter module and from a first data storage cell of the plurality of data storage cells, a request
to access the subset of storage space allocated to the first data storage cell for performing a storage operation, the storage
operation to move data between the primary storage devices of the first data storage cell and the tape data storage library
in the secondary storage subsystem, the request including a number of tape drives requested to perform the storage operation;
automatically scheduling, by the library arbiter module, the request in relation to requests for access to the tape data storage
library by others of the plurality of data storage cells; and based on the scheduling, in response to determining that at
least some of the requested number of tape drives of the plurality of tape drives are available, assigning the at least some
of the requested number of tapes drives to the first data storage cell for providing the first data storage cell with temporary
access to its the allocated subset of storage space of the first data storage cell in the tape data storage library, the temporary
access being for a pre-defined interval of time; and determining whether to extend a duration of the pre-defined interval,
said determining comprising determining one or more of whether or not the storage operation associated with the request is
complete and whether or not the data storage cell that made the request is still utilizing the tape data storage library.

US Pat. No. 9,811,427

INFORMATION MANAGEMENT BY A MEDIA AGENT IN THE ABSENCE OF COMMUNICATIONS WITH A STORAGE MANAGER

COMMVAULT SYSTEMS, INC., ...

1. A system for protecting data while a storage manager is out of communication with other components in the system, the system
comprising:
a first computing device for hosting a storage manager;
a secondary storage device;
a secondary storage computing device in communication with (i) the secondary storage device and (ii) a client computing device,
the secondary storage computing device comprising:

executable logic, and
management parameters received from the storage manager in anticipation of the secondary storage computing device being out
of communication with the storage manager;

wherein, based at least in part on the executable logic and one or more of the management parameters,
the secondary storage computing device is configured to autonomously initiate and manage an information management job relative
to primary data accessible to the client computing device,

while out of communication with the storage manager and without being directed by the storage manager or by any other storage
manager, and

while the client computing device is also out of communication with the storage manager, and
wherein the information management job comprises a secondary copy operation for a portion of the primary data accessible to
the client computing device; and

wherein, based at least in part on the executable logic, the secondary storage computing device is further configured to transmit
to the storage manager after communications between the secondary storage computing device and the storage manager resume,
metadata that is based on the information management job.

US Pat. No. 9,563,518

INFORMATION MANAGEMENT BY A MEDIA AGENT IN THE ABSENCE OF COMMUNICATIONS WITH A STORAGE MANAGER

COMMVAULT SYSTEMS, INC., ...

1. A method comprising:
identifying, by a storage manager that manages an information management system without assistance from other storage managers,
a secondary storage computing device, which is a component of the information management system, and which receives and stores
management parameters from the storage manager when in communication with the storage manager,

as being a component that comprises executable logic for autonomously managing information management jobs in the information
management system, on behalf of the storage manager and while out of communication with the storage manager,

wherein the identifying is performed while the storage manager is in communication with the secondary storage computing device
and in anticipation of being out of communication with the secondary storage computing device, and

wherein the identifying is based at least in part on a management database associated with the storage manager;
based on the identifying, transmitting, by the storage manager to the identified secondary storage computing device one or
more management parameters for autonomously managing the information management jobs while the secondary storage computing
device is to be out of communication with the storage manager;

after communication with the secondary storage computing device resume,
receiving, by the storage manager, from the secondary storage computing device, metadata generated by the secondary storage
computing device while out of communication with the storage manager, wherein the metadata is based at least in part on the
secondary storage computing device having autonomously managed the information management jobs while out of communication
with the storage manager; and integrating the received metadata, by the storage manager, into the associated management database,

resulting in information management status becoming available to the storage manager for at least some information management
operations that occurred at the secondary storage computing device while the storage manager was out of communication with
the secondary storage computing device.

US Pat. No. 9,275,086

SYSTEMS AND METHODS FOR DATABASE ARCHIVING

Commvault Systems, Inc., ...

1. A method of archiving data generated by one or more database applications in a networked data storage system, the method
comprising:
using one or more computing devices comprising computer hardware:
receiving instructions to archive a logical subset of data in a stored database, the data organized in a plurality of tables,
generated by a first database application residing on a first client computing device of a plurality of client computing devices,
and stored in a first storage device associated with the first client computing device, the logical subset of data stored
in one or more first tables of the plurality of tables, a first data agent associated with the database application installed
on the first client computing device;

determining by the first data agent a relationship between the first tables and one or more other tables of the plurality
of tables, based at least in part on a native schema of the first database application;

identifying by the first data agent one or more data items referenced by the logical subset, based on the determined relationship
between the first tables and the other tables, the one or more data items stored in one or more second tables of the other
tables, the second tables referenced by the first tables;

extracting by the first data agent the logical subset and the identified data items in the first storage device;
selecting a first secondary storage controller computer from a plurality of secondary storage controller computers, the plurality
of secondary storage controller computers configured to perform storage operations for moving data between a primary storage
subsystem and a secondary storage subsystem;

copying by the first secondary storage controller computer the extracted logical subset and identified data items to one or
more secondary storage devices to create a secondary copy of the extracted logical subset and identified data items, said
copying comprising copying additional extracted database data accumulated on the first storage device prior to said receiving
the instructions, along with the extracted logical subset and identified data items, such that the additional extracted database
data and the extracted logical subset and identified data items are copied to the one or more secondary storage devices using
a fewer number of storage operations than individually copying the additional extracted database data and the extracted logical
subset and identified data items; and

following said copying, pruning by the first data agent the logical subset and the identified data items from the first storage
device, the logical subset being pruned prior to the identified data items,

wherein rules for said extracting, said copying, and said pruning are stored in a storage policy for moving data between the
primary storage subsystem and the secondary storage subsystem,

wherein the logical subset includes at least a first data item and the identified data items include at least one data item
referenced by the first data item.

US Pat. No. 9,218,376

INTELLIGENT DATA SOURCING IN A NETWORKED STORAGE SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method of sourcing data from storage associated with a pool of computing devices during a data storage operation associated
with one of the computing devices in the pool, the method comprising:
obtaining signatures corresponding to data units that form a data set associated with a data storage operation, the data set
corresponding to a version of one or more files of primary data of a first computing device in a pool of a plurality of computing
devices, each respective computing device in the pool storing primary data generated by one or more software applications
executing on the respective computing device, the primary data stored in at least one storage device associated with the respective
computing device,

wherein the storage devices of the computing devices in the pool store a plurality of data units of primary data including
at least the data set stored in the at least one storage device of the first computing device,

wherein each file of a plurality of files of primary data stored in the storage devices comprises at least one data unit of
the plurality of data units,

wherein at least a first data unit of the data set forms at least a portion of a first file of primary data stored in the
at least one storage device of the first computing device and a second data unit of the plurality of data units matches the
first data unit and forms at least a portion of a second file of primary data stored in the at least one storage device of
a second computing device of the plurality of computing devices, and

wherein the first file and the second file are generated by the one or more software applications executing on the first computing
device and the second computing device, respectively;

populating, by one or more processors, a shared signature repository that includes:
signatures corresponding to at least each data unit of the plurality of data units, wherein a first signature corresponds
to the first data unit and the second data unit; and

for each signature included in the signature repository, an indication as to one or more of the computing devices whose at
least one storage device includes an independently generated data unit that corresponds to the signature, wherein each independently
generated data unit forms at least a portion of a distinct file residing on the respective storage device, and wherein the
shared signature repository includes at least a first indication that indicates a first location of the first data unit in
the at least one storage device of the first computing device and a second location of the second data unit in the at least
one storage device of the second computing device;

comparing the obtained signatures, including a signature of the first data unit, with the signature repository to identify
one or more matching data units, including the second data unit, stored in the respective at least one storage device of the
computing devices in the pool, wherein each of the one or more matching data units forms at least a portion of a read/write
file residing in the respective storage device and is stored in a native format of the respective software application that
generated the respective matching data unit;

consulting, by one or more processors, a priority policy; and
based on the priority policy, and for at least the first data unit in the data set, determining to access the second data
unit rather than the first data unit for the data storage operation.

US Pat. No. 9,804,930

PARTIAL FILE RESTORE IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of partially restoring a secondary copy of a first file stored in a data storage system, comprising:
using one or more computing devices comprising computer hardware:
receiving an instruction to restore a portion of a secondary copy of a first file stored in a secondary storage subsystem
to a primary storage subsystem for use by a software application that generated the first file, wherein data in the secondary
storage subsystem, including the secondary copy of the first file, is stored in one or more chunks, and each chunk is a logical
data unit for storing the data in the secondary storage subsystem in one or more secondary storage devices in the secondary
storage subsystem,

the instruction comprising a starting application offset corresponding to a beginning of the portion of the first file to
be restored, the starting application offset associated with the software application;

identifying a chunk stored in the secondary storage subsystem that includes a part of the secondary copy corresponding to
the starting application offset;

accessing an index for the chunk, wherein the index is stored in the chunk and both the index and the chunk are stored in
the secondary storage subsystem, the index comprising a plurality of entries, a first entry in the plurality of entries providing
a mapping between a first application offset of the first file and a corresponding first secondary storage offset, a second
entry in the plurality of entries providing a mapping between a second application offset of a second file and a corresponding
second secondary storage offset,

wherein the first application offset is an offset within the first file and is associated with the software application, the
first secondary storage offset is an offset within the secondary copy of the first file, and the first secondary storage offset
within the secondary copy of the first file corresponds to the first application offset within the first file,

wherein the mapping between the first application offset of the first file and the corresponding first secondary storage offset
is stored in the first entry in response to data corresponding to the first application offset being written to a buffer for
storage in the secondary storage subsystem during creation of the secondary copy, wherein creation of the secondary copy involves
a series of transactions in which data is written to the buffer and then written from the buffer to the secondary storage
devices, and wherein an amount of data written to the buffer in each transaction is not predetermined;

iteratively searching application offsets of the plurality of entries in the index to determine that the first entry in the
plurality of entries is usable to locate a portion in the chunk that includes data corresponding to the starting application
offset; and

using the first secondary storage offset of the first entry to restore the portion in the chunk from the secondary storage
subsystem to the primary storage subsystem.

US Pat. No. 9,104,623

CLIENT-SIDE REPOSITORY IN A NETWORKED DEDUPLICATED STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method for restoring data to a client system from secondary storage, the method comprising:
providing one or more computer processors;
performing with a media agent executing in the one or more computer processors, a secondary copy operation that copies a plurality
of data blocks associated with primary storage in a client system to secondary storage located remotely from the primary storage,
wherein the client system communicates with the secondary storage via a wide area network and wherein the secondary copy operation
creates a secondary copy of the plurality of data blocks in the secondary storage;

during performance of the secondary copy operation, creating with the media agent, for each data block of the plurality of
data blocks a hash signature for each data block according to a deduplication scheme;

during performance of the secondary copy operation, further copying at least a portion of the data blocks and a first copy
of hash signatures associated with the data blocks to a client-side repository comprising at least computer memory, wherein
client-side repository is different than the secondary storage, and wherein the client system communicates with the client-side
repository over a local area network;

during performance of the secondary copy operation, populating an index in communication with the media agent with a second
copy of the hash signatures associated with the plurality of the data blocks stored in the secondary storage;

further creating with the media agent, age information associated with the time of the creation of the secondary copy of the
plurality of data blocks in the secondary storage;

storing in at least computer memory, the age information about the time of creation of the secondary copy of the plurality
of data blocks in secondary storage;

receiving at the media agent, a request to restore data to the client system;
consulting with the media agent, the age information to determine the time of the creation of the secondary copy in secondary
storage of at least one data block associated with the restore data;

based on the age information of the time of the creation of the secondary copy in secondary storage of the at least one data
block associated with the restore data, deciding with the media agent whether to query the client-side repository remote from
the secondary storage as to whether the client-side repository is populated with a copy of the at least one data block associated
with the restore data;

in response to determining that the age of creation of the secondary copy in secondary storage of the at least one data block
associated with the restore data satisfies a threshold age,

querying the client-side repository with the second copy of the hash signature from the index to determine whether the first
copy of the hash signature is stored in the client-side repository;

receiving an answer from the client-side repository indicating a result of the query; and
in response to the answer, accessing the at least one data block associated with the restore data from secondary storage for
transmission to the client system when the result indicates that the client-side repository is not populated with the first
hash signature, wherein the at least one data block associated with the restore data is restored from the client-side repository
to an information store of the client system via the local area network when the client-side repository is populated with
the first hash signature; and

in response to determining that the age of creation of the secondary copy in secondary storage of the at least one data block
associated with the restore data does not satisfy the threshold age, restoring the at least one data block from secondary
storage for transmission to the client system via the wide area network.

US Pat. No. 10,031,917

EFFICIENT VOLUME-LEVEL REPLICATION OF DATA VIA SNAPSHOTS IN AN INFORMATION MANAGEMENT SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method comprising:in an information management system managed by a storage manager, block-level replicating a source volume in a first block storage array to a destination volume in a second block storage array by way of a volume-replicating server interposed between and in communication with the first block storage array and the second block storage array, wherein the source volume comprises data generated by a first application executing on a first client computing device in communication with a first logical unit number configured on the first block storage array that comprises the source volume,
wherein the replicating comprises:
generating and storing, by the first block storage array, a first snapshot of the entire source volume,
after the first snapshot, detecting, by a first data agent associated with the first application and also executing on the first client computing device, changed blocks being written by the first application to the source volume,
generating and storing, by the first block storage array, after the first snapshot, a second snapshot of the entire source volume,
after the second snapshot, transmitting, by the first data agent executing on the client computing device to the volume-replicating server, a mapping of blocks that changed between the first snapshot and the second snapshot,
extracting, by the volume-replicating server from the second snapshot stored in the first block storage array, only the changed blocks according to the mapping received from the first data agent,
transferring, by the volume-replicating server to the destination volume in the second block storage array, only the extracted changed blocks, and
substituting, by the volume-replicating server, the changed blocks into the destination volume in place of corresponding pre-existing blocks therein, thereby replicating the second snapshot at the second block storage array for use by a second client computing device in communication with a second logical unit number comprising the destination volume;
performing a block-level restore operation of the replicated second snapshot in the destination volume at the second block storage array to the second client computing device,
wherein the block-level restore operation is performed at least in part by a second data agent associated with a second application, wherein the second application and the second data agent execute on the second client computing device;
on the second client computing device, activating the second application having access to the restored second snapshot in the destination volume as primary data therefor; and
wherein the volume-replicating server offloads the first client computing device from performing the extracting, transferring, and substituting operations to enable the second application to access the restored second snapshot in the destination volume on the second storage array.

US Pat. No. 9,940,059

FAST DEDUPLICATION DATA VERIFICATION

COMMVAULT SYSTEMS, INC., ...

1. A networked information management system configured to verify deduplication information, the networked information management system comprising:a storage manager comprising computer hardware configured to:
retrieve, from an electronically stored deduplication database, a chunk integrity table, wherein the chunk integrity table identifies a first data chunk, wherein the first data chunk is associated with a plurality of single instance file (SFile) containers, and wherein the chunk integrity table stores, for each SFile container in the plurality of SFile containers, an indication of whether the respective SFile container is verified;
retrieve, from a secondary storage subsystem, the first data chunk,
wherein the first data chunk comprises one or more data blocks;
for each data block in the first data chunk,
determine whether the respective data block comprises a link to one SFile container in the plurality of SFile containers;
perform a verification of the respective data block in response to a determination that the respective data block does not comprise the link; and
determine a verification status of the respective data block based on the indications of whether the SFile containers are verified stored in the chunk integrity table in response to a determination that the respective data block comprises the link.

US Pat. No. 9,430,491

REQUEST-BASED DATA SYNCHRONIZATION MANAGEMENT

COMMVAULT SYSTEMS, INC., ...

1. A computer-implemented method of providing access to files stored at one or more remote backup storage devices, the computer-implemented
method comprising:
initiating, by a storage manager, a backup operation, the backup operation comprising:
identifying, according to a storage policy, one or more original files stored in a first primary storage device associated
with a first client computing device; and

copying, according to a backup schedule specified by the storage policy, the one or more original files stored in the first
primary storage device to one or more remote backup storage devices to create one or more backup files that correspond to
the one or more original files;

receiving, at a second client computing device, a listing of the one or more backup files, wherein the one or more backup
files are designated to be synchronized to the second client computing device from the first client computing device, wherein
each of the first client computing device and the second client computing device are in communication with the one or more
remote backup storage devices that store backup copies of data associated with the first client computing device and the second
client computing device according to the storage policy;

initiating, by a synchronization agent executing on computer hardware comprising one or more computer processors, a background
process to communicate the one or more backup files from the one or more remote backup storage devices to the second client
computing device to synchronize the one or more backup files to the second client computing device; and

in response to a request for a particular file of the one or more backup files, wherein the request is entered by a user via
interaction with the second client computing device, and wherein the request is received after said initiating the background
process to communicate the one or more backup files to the second client computing device and prior to completion of communication
of the particular file to the second client computing device in the background process:

determining, by the synchronization agent, that the communication of the particular file to the second client computing device
is not yet complete;

modifying the background process to cause communication of the particular file from the one or more remote backup storage
devices to the second client computing device to complete the synchronization of the particular file to the second client
computing device, wherein synchronization of the one or more backup files other than the particular file remains unchanged;
and

providing the user access to the synchronized particular file at the second client computing device.

US Pat. No. 9,208,160

SYSTEM AND METHOD FOR PERFORMING AN IMAGE LEVEL SNAPSHOT AND FOR RESTORING PARTIAL VOLUME DATA

Commvault Systems, Inc., ...

1. A method in a computing system of creating snapshots for an information store, the method comprising:
performing a first snapshot of one or more first blocks of data stored in an information store at a first time;
obtaining file information that maps the changed blocks of data in the first snapshot to one or more file names;
performing a second snapshot of the one or more second blocks or data stored in the information store at a second time, the
second time occurring after the first time;

identifying changed blocks of data in the second snapshot that changed after the first time and before the second time;
obtaining file information that maps the changed blocks of data in the second snapshot to one or more files comprising one
or more file names;

storing the second snapshot in association with the file information;
automatically obtain copies of the changed blocks of data from the information store, and store the copies in association
with the second snapshot and the file information;

displaying in a user interface the one or more file names in the first snapshot at the first point in time, and the one or
more file names in the second snapshot at the second point in time, by accessing the file information stored in association
with the first and second snapshots; and

in response to a user request to restore at least one of the file names at the second point in time, using the file information
stored in association with the second snapshot to restore the one or more first blocks stored in the first snapshot and the
changed blocks stored in the second snapshot.

US Pat. No. 9,098,495

APPLICATION-AWARE AND REMOTE SINGLE INSTANCE DATA MANAGEMENT

Commvault Systems, Inc., ...

1. A system for copying files from a computer system at a first location to a second location, the system comprising:
a processor;
a storage operation manager component, coupled to the processor, that is configured to receive a request to copy a file or
data object from a computer system at a first location to a second location, wherein the first location and the second location
are geographically remote from each other;

a file cache component at the first location configured to:
receive the file or data object to be copied from the computer system; and
store the file or data object before it is copied to the second location; and
a single instance database component at the first location configured to:
generate a substantially unique identifier for the file or data object;
extract metadata associated with the file or data object,
wherein the extracted metadata describes at least three of the following:
permissions for the file or data object,
a property of the file or data object,
an access control list for the file or data object,
an identifier for the file or data object,
a size of the file or data object,
a creation date for the file or data object, and
an access date for the file or data object;
query the second location to determine whether the file or data object is already stored at the second location, including
sending the generated substantially unique identifier and extracted metadata to the second location;

in response to the query, receive a single response from the second location that indicates whether the file or data object
is already stored at the second location and that indicates whether the generated substantially unique identifier and extracted
metadata match a substantially unique identifier and extracted metadata from any files or data objects stored at the second
location;

when the file or data object is not already stored at the second location, copy the file or data object from the file cache
component to the second location; and

when the file or data object is already stored at the second location and the extracted metadata does not match extracted
metadata from the stored file or data object, copy the extracted metadata to the second location, thereby resulting in storing
two instances of metadata at the second location for a single stored instance for that file or data object;

wherein the single instance database component copies a file or data object from the file cache component to the second location
as part of a continuous data replication operation that automatically saves copies of all changes made to the file or data
object.

US Pat. No. 9,069,799

RESTORATION OF CENTRALIZED DATA STORAGE MANAGER, SUCH AS DATA STORAGE MANAGER IN A HIERARCHICAL DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. At least one tangible computer-readable medium storing instructions, which when executed by at least one data processing
device, perform recreating an original information management database for an information management network, wherein the
information management network does not have access to an acceptable secondary copy of the original information management
database, the instructions comprising:
receiving, by an information management server, instructions associated with identifying non-production storage media via
a user interface,

wherein the information management server provides information management services to client computing devices within the
information management network,

wherein the original information management database includes data identifying files stored by the information management
server and client computing devices associated with those files;

wherein the non-production storage media contain secondary copies of application data generated by the client computing devices
in the information management network; and

wherein the instructions indicate whether the information management server performs an automated search of the information
management network or a manual search of the information management network,

wherein when the instructions indicate a manual search, the instructions further include one or more of a network address
for at least one of the non-production storage media and an identifier of at least one of the non-production storage media;

identifying, with the information management server, non-production storage media within the information management network
in accordance with the received instructions;

scanning, with the information management server, the identified non-production storage media for metadata associated with
the secondary copies of the application data,

wherein the metadata includes headers at the beginning of a file within at least one of the secondary copies of the application
data, trailing file markers appended to the end of the file, or both headers and trailing file markers, and wherein the metadata
includes-information regarding files recorded in the original information management database, and

information regarding the client computing devices associated with each of the files;
retrieving the metadata from the non-production storage media, but not retrieving the secondary copies of the application
data; and

populating a reconstructed information management database with the retrieved metadata from the non-production storage media,
wherein the reconstructed information management database is substantially similar to the original information management
database.

US Pat. No. 9,058,117

BLOCK-LEVEL SINGLE INSTANCING

CommVault Systems, Inc., ...

1. A system for storing a single instance of a block of data in a data storage network, wherein the data storage network includes
multiple storage devices coupled via a computer network, and wherein the computer network also couples to one or more computing
devices having file systems on which files are stored, the system comprising:
one or more storage devices storing multiple blocks of data in one or more container files, wherein a file stored on a file
system of a computing device is comprised of one or more blocks of data;

one or more single instance databases storing, for at least some of the multiple blocks of data, an identifier of the stored
block of data, and a location of the stored block of data in a container file;

one or more index files storing, for at least some of the multiple blocks of data, a single flag indicating whether the stored
block of data is referred to in one or more metadata files on the one or more storage devices; and

a secondary storage computing device configured to—
receive data corresponding to one or more data storage jobs from the one or more computing devices,
wherein a data storage job is performed on one or more files stored on the file systems of the one or more computing devices,
and wherein the received data includes multiple blocks of data; and

for at least some of the multiple blocks of data in the received data—
determine an identifier of the received block of data;
determine if one of the single instance databases already stores the identifier;
when one of the single instance databases already stores the identifier,
determine the corresponding block of data in a container file,
store a reference to the corresponding block of data in one of the metadata files, and
updating the flag for the corresponding block of data in one of the index files; and
when none of the single instance databases already stores the identifier,
store the received block of data in a container file,
 wherein a container file includes stored blocks of data from more than one file stored on the one or more computing devices,
storing a reference to the received block of data in one of the metadata files, and
creating a new entry for the received block in one of the index files.

US Pat. No. 9,904,598

CONTENT-INDEPENDENT AND DATABASE MANAGEMENT SYSTEM-INDEPENDENT SYNTHETIC FULL BACKUP OF A DATABASE BASED ON SNAPSHOT TECHNOLOGY

COMMVAULT SYSTEMS, INC., ...

1. A computer-implemented method for synthesizing a block-level backup copy of a database in a storage management system based
on snapshots of the database, the method comprising executing on one or more computing devices the steps of:
generating a first snapshot of the database, which includes associated metadata, wherein the first snapshot is stored to a
first storage device,

wherein a database management system (DBMS) that executes on a client computing device component of the storage management
system performs operations that change data in the database;

storing, by a media agent component of the storage management system, a copy of the first snapshot to a second storage device;
after the first snapshot is generated, generating a plurality of successive snapshots of the database;
after each snapshot in the plurality of successive snapshots is generated,
identifying, by a data agent that is associated with the database management system, a respective set of data blocks which
changed in the database relative to corresponding data blocks in an immediately preceding snapshot, which set of identified
data blocks are designated changed data blocks for the respective snapshot, and

maintaining, by the data agent, a respective list of the changed data blocks for the respective snapshot;
extracting, by the media agent, the identified changed data blocks from the respective snapshot;
storing and indexing to the second storage device, by the media agent, a plurality of incremental backups of the database
corresponding to respective snapshots in the plurality of successive snapshots,

wherein a respective incremental backup comprises the changed data blocks extracted from the respective snapshot;
generating, based on the indexing, by the media agent, a synthetic full block-level backup of the database represented at
a given point in time,

wherein the synthetic full block-level backup is independent of database content and DBMS type, and comprises pointers to
most-current data blocks relative to the given point in time, including pointers to changed data blocks and skipping over
intermediate changed data blocks, as found by the media agent in the second storage device from: (a) the copy of the first
snapshot and (b) the plurality of incremental backups,

thereby resulting in the synthetic full block-level backup which represents the database at the given point in time;
storing, by the media agent to the second storage device, the synthetic full backup of the database;
reporting, by the media agent, completion of the synthetic full block-level backup of the database to a storage manager that
maintains records thereof; and

restoring the database from the synthetic full block-level backup in the second storage device without using a native restore
feature of the DBMS.

US Pat. No. 9,740,417

SECONDARY STORAGE OPERATION INSTRUCTION TAGS IN INFORMATION MANAGEMENT SYSTEMS

Commvault Systems, Inc., ...

1. A system configured to apply granular secondary storage operation management, the system comprising:
one or more secondary storage controller computers including computer hardware configured to copy data from a primary storage
subsystem to a secondary storage subsystem; and

a client computing device residing in the primary storage subsystem and comprising computer hardware, the client computing
device configured to:

in response to user interaction with a graphical user interface to associate a first tag of one or more tags with a first
file; and

store in association with one or more secondary storage controller computers, a plurality of tag rules, wherein at least one
of the plurality of tag rules is associated with the first tag;

in response to receiving instructions to perform, according to a storage policy, a secondary copy operation on a data set
in the primary storage subsystem including at least the first file and a second file one or more secondary storage controller
computers are configured to:

electronically access at least a first tag rule associated with the first tag;
perform on the first file at least a first secondary storage operation specified by the first tag rule associated with the
first tag; and

perform on the second file at least a second secondary storage operation specified by the storage policy,
wherein the first and second secondary storage operations are different.

US Pat. No. 9,753,955

FAST DEDUPLICATION DATA VERIFICATION

Commvault Systems, Inc., ...

1. A networked information management system configured to verify synchronization of deduplication information, the networked
information management system comprising:
a data storage computer comprising computer hardware configured to:
retrieve, from an electronically stored deduplication database, a primary table, wherein the primary table identifies data
blocks stored in a secondary storage device and data chunks associated with the data blocks, and wherein the primary table
comprises a primary identification for each identified data block;

generate, for a first data chunk of the data chunks identified in the primary table, a first value based on the primary identifications
of the identified data blocks;

generate, for the first data chunk identified in the primary table, a second value by squaring the primary identifications
of the identified data blocks that are associated with the first data chunk and summing the squared primary identifications;

store, for the first data chunk identified in the primary table, an identification of the first data chunk in a deduplication
chunk table;

store, for the first data chunk identified in the primary table, the first value associated with the first data chunk in the
deduplication chunk table;

store, for the first data chunk identified in the primary table, the second value associated with the first data chunk in
the deduplication chunk table; and

compare, for the first data chunk identified in the deduplication chunk table, the stored first value and the stored second
value with values derived from an instance file corresponding to the first data chunk to verify that information stored in
the primary table and information stored in the secondary storage device is synchronized.

US Pat. No. 9,639,297

SHARED NETWORK-AVAILABLE STORAGE THAT PERMITS CONCURRENT DATA ACCESS

Commvault Systems, Inc, ...

1. A method for providing multiple media agents with shared access over a fibre channel small computer system interface (SCSI)
interface to a storage device in a computer network, comprising:
in response to inquiry messages on SCSI interfaces to the storage device in the computer network, providing a shared operational
mode on the SCSI interfaces for a first media agent configured to perform a first data storage operation with the storage
device and a second media agent configured to perform a second data storage operation with the storage device,

wherein the storage device appears as a SCSI target device to the first media agent and the second media agent via an access
media agent, located at a storage area network (SAN) server, that is configured to arbitrate access to the storage device
by the first media agent and the second media agent configured to control the SAN sever to appear as a SCSI target to both
the first media agent and the second media agent, and

wherein the first media agent and the second media agent are configured to perform data storage operations associated with
the storage device for one or more client devices; and

mapping, via the access media agent, data storage operations between the first media agent and the storage device and data
storage operations between the second media agent and the storage device, via the controlled SAN server, to logically unique
channel numbers for the first media agent and the second media agent, to perform data storage operations over their respective
SCSI interfaces by concurrently sharing the storage device.

US Pat. No. 9,633,216

APPLICATION OF INFORMATION MANAGEMENT POLICIES BASED ON OPERATION WITH A GEOGRAPHIC ENTITY

Commvault Systems, Inc., ...

1. A method of providing data storage services for a first computing device, comprising:
determining, with a second computing device, a current location of the first computing device,
wherein the first computing device generates application data, and
wherein the second computing device is associated with providing the data storage services for the first computing device;
and

wherein the first computing device is a mobile device;
determining, with the second computing device, a country or geographic region corresponding to the current location of the
first computing device;

querying a data structure using the country or geographic region to determine which data storage rules apply to the determined
country or geographic region corresponding to the current location of the first computing device,

wherein the data storage rules are based on data retention regulations for the determined country or geographic region; and
applying, with the second computing device, a data storage policy to the application data generated by the first computing
device,

wherein the application data includes production copies of data created at the first computing device,
wherein the data storage policy includes creating at least one secondary copy of the application data,
wherein the data storage policy is applied based on the data storage rules determined by querying the data structure to apply
to the determined country or geographic region corresponding to the current location of the first computing device,

wherein the applied data storage policy includes:
a frequency with which secondary copies of the production copies of the application data are made,
a location to which the secondary copies of the production copies of the application data are stored,
a type of secondary copy of the production copies of the application data to be made, and
security measures to be applied to at least some of the application data stored on the first computing device.

US Pat. No. 9,448,892

SYSTEMS AND METHODS FOR MIGRATING COMPONENTS IN A HIERARCHICAL STORAGE NETWORK

Commvault Systems, Inc., ...

1. A storage system that automatically transfers a storage resource from a first storage operation cell to a second storage
operation cell, the storage system comprising:
a first storage operation cell comprising computer hardware, the first storage operation cell monitors primary data created
by one or more client computers, the primary data stored on one or more primary storage devices, the first storage operation
cell comprising at least a first storage manager and at least a first media agent;

wherein the first storage operation cell directs the first media agent to copy at least a first portion of the primary data
by copying the first portion of the primary data to one or more secondary storage devices to create secondary data of the
primary data, and wherein the first media agent creates a first index of the secondary data;

a second storage operation cell comprising computer hardware, the second storage operation cell monitors the primary data
created by the one or more client computers, the second storage operation cell comprising at least a second storage manager
and a second media agent;

wherein the second storage operation cell directs the second media agent to copy at least a second portion of the primary
data by copying the second portion of the primary data to the one or more secondary storage devices to create the secondary
data of the primary data, and wherein the second media agent creates a second index of the secondary data;

a third storage manager comprising computer hardware, the third storage manager automatically directs transfer of the first
media agent to the second storage operation;

wherein the second storage operation cell reconstitutes the first media agent in association with the second storage operation
cell;

wherein the third storage manager directs the transfer of management information associated with the first media agent from
the first storage operation cell to the second storage operation cell to create a copy of the management information on the
second storage operation cell;

wherein when the second storage operation cell determines that the copy of the first management is incomplete, the second
storage operation cell performs a restore operation from at least a portion of the management information stored in the one
or more secondary storage devices to restore the copy of the management information stored in association with the second
storage operation cell; and

wherein the copy of the first media agent and the copy of the management information are stored in association with the second
storage operation cell and the second storage operation cell directs the first media agent to copy a second portion of the
primary data to the one or more secondary storage devices.

US Pat. No. 9,417,968

EFFICIENTLY RESTORING EXECUTION OF A BACKED UP VIRTUAL MACHINE BASED ON COORDINATION WITH VIRTUAL-MACHINE-FILE-RELOCATION OPERATIONS

COMMVAULT SYSTEMS, INC., ...

1. A method for coordinating, in a storage management system, between a restoration of a virtual machine and a virtual-machine-file-relocation
operation, the method comprising:
copying, by a media agent, a first set of data blocks from a backup copy of data associated with the virtual machine to a
read-cache associated with the media agent,

wherein the backup copy is stored on a secondary storage device and comprises one or more configuration files and one or more
virtual disks, and

wherein the first set of data blocks is based on a profile of the virtual machine;
launching execution of the virtual machine on the host computing device, based at least in part on the first set of data blocks;
copying, by the media agent, a second set of data blocks from the backup copy to the read-cache,
wherein the virtual-machine-file-relocation operation comprises a logical transfer, according to a relocation sequence, of
the backup copy of data associated with the virtual machine to a destination on a primary storage device that is in communication
with the host computing device, and

wherein the second set of data blocks is based on the relocation sequence;
while the virtual machine executes on the host computing device prior to the virtual-machine-file-relocation operation, serving,
by the media agent, a read request for a data block, wherein serving the read request comprises:

(i) if the requested data block is not found in the read-cache, copying, by the media agent, the requested data block from
the backup copy to the read-cache, and

(ii) transmitting, by the media agent, the requested data block from the read-cache, wherein the read request is served at
a higher priority than copying the second set of data from the backup copy to the read-cache; and

while the virtual machine and the virtual-machine-file-relocation operation execute concurrently on the host computing device:
(A) serving, by the media agent, a read request for a data block, wherein serving the read request comprises: (i) if the requested
data block is not found in the read-cache, copying, by the media agent, the requested data block from the backup copy to the
read-cache, and (ii) transmitting, by the media agent, the requested data block from the read-cache, and

(B) copying, by the media agent, a third set of data blocks from the backup copy to the read-cache, wherein the third set
of data blocks is based on the relocation sequence of the virtual-machine-file-relocation operation, and wherein the read
request is served at the same priority as copying of the third set of data blocks.

US Pat. No. 9,405,632

DATA MINING SYSTEMS AND METHODS FOR HETEROGENEOUS DATA SOURCES

Commvault Systems, Inc., ...

1. A system for administering a storage network comprising heterogeneous source computing devices, the system comprising:
a first source computing device configured to store backup data in a backup format;
a second source computing device configured to store database data generated by a software application in a native format
associated with the software application;

a management console executing on a computing device that is in networked communication with the first and second source computing
devices;

a first data connector in communication with the management console and that is configured to access the backup data from
the first source computing device; and

a second data connector in communication with the management console and that is configured to obtain the database data from
the second source computing device,

wherein the management console is configured to:
provide a unified interface including on-screen graphics that are generated based at least in part on the backup data obtained
using the first data connector and the database data obtained using the second data connector;

receive a data operation request associated with the database data; and
process the database data obtained using the second data connector according to the native format associated with the software
application to obtain one or more individual elements of the database data.

US Pat. No. 9,405,928

DERIVING ENCRYPTION RULES BASED ON FILE CONTENT

Commvault Systems, Inc., ...

1. A data storage system comprising:
a content analyzer comprising computer hardware, the content analyzer configured to:
access a set of training files that include content designated as sensitive information; and
use one or more processing algorithms with respect to the set of training files to obtain a set of data tokens for each training
file, each of the data tokens from the set of data tokens comprising a portion of a training file from the set of training
files, the portion of the training file comprising content included in the training file, at least some of the training files
including at least some of the sensitive information;

an encryption rules generator comprising computer hardware, the encryption rules generator configured to:
use one or more algorithms to generate a set of encryption rules based on the set of data tokens obtained for each training
file, wherein at least some of the set of encryption rules are configured to identify a file to encrypt based at least in
part on a correspondence between portions of the file and at least some of the set of data tokens;

generate a prospective encryption rule based on an aggregated set of data tokens, the aggregated set of data tokens based
on the set of data tokens for each training file;

perform the prospective encryption rule using the set of training files:
determine a number of training files from the set of training files identified for encryption based on the prospective encryption
rule; and

responsive, at least in part, to the number of training files identified for encryption satisfying a threshold, adding the
prospective encryption rule to the set of encryption rules; and

an encryption processor comprising computer hardware, the encryption processor configured to encrypt the file based at least
in part on one of the encryption rules from the set of encryption rules.

US Pat. No. 9,405,482

FILTERED REFERENCE COPY OF SECONDARY STORAGE DATA IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of creating a filtered representation of secondary copy data in a networked data storage system, comprising:
using one or more media agents comprising computer hardware, copying data comprising a plurality of files residing in one
or more primary storage devices in a primary storage subsystem to one or more secondary storage devices in a secondary storage
subsystem to create a backup copy of the plurality of files, the plurality of files generated by applications executing on
one or more client computing devices in the primary storage subsystem;

further copying, with the one or more media agents, the data comprising the plurality of files to a reference copy data store
to create a reference copy of the plurality of files;

wherein the backup copy of the plurality of files is stored in the secondary storage subsystem in a backup format, and the
reference copy of the primary files is stored in the reference copy data store in a native format associated with the applications
that generated the plurality of files;

creating an index of the reference copy of the plurality of files with a reference copy module comprising computer hardware,
wherein the reference copy module stores the index in the reference copy data store;

accessing with the reference copy module rules for creating a filtered representation, the rules including filtering criteria
for identifying a subset of the plurality of files residing in the backup copy in the secondary storage subsystem;

identifying with the reference copy module, files that meet the filtering criteria based on the index of the reference copy
of the plurality of files stored in the reference copy data store without accessing the backup copy of the plurality of files
stored in the secondary storage subsystem and without accessing the plurality of files stored in the primary storage subsystem;

in response to determining that a first filtered representation includes at least a subset of the files that meet the filtering
criteria, creating with the reference copy module a second filtered representation that comprises a data structure that comprises
references to the subset of files associated with the first filtered representation and further comprises references additional
files that meet the filtering criteria; and

providing access to the second filtered representation, wherein the second filtered representation is viewable by a user and
shows a listing of the subset of files associated with the first filtered representation and the additional files that meet
the filtering criteria without accessing the backup copy of the plurality of files stored in the secondary storage subsystem
and without accessing the plurality of files stored in the primary storage subsystem.

US Pat. No. 9,262,449

AUTOMATED, TIERED DATA RETENTION

Commvault Systems, Inc., ...

1. A method for automatic, tiered data retention in a networked system, comprising:
with one or more storage controller computers comprising computer hardware,
electronically accessing a user-defined data retention policy comprising a set of classification criteria for assigning a
plurality of data items stored in a secondary storage subsystem to a plurality of retention containers having different retention
periods associated therewith, the plurality of data items having been copied from a primary storage subsystem to the secondary
storage subsystem;

automatically parsing through the plurality of data items to determine which of the data items contain an instance of a first
search term associated with a first retention container of the plurality of retention containers;

for one or more first data items that contain an instance of the first search term, assigning the first data items to the
first retention container at least in part based on the determination that the first data items contain the first search term,

wherein the first data items are scheduled for deletion from the first retention container after the first data items have
been retained for a duration that is at least as long as a first retention period associated with the first retention container;

automatically parsing through the plurality of data items to determine which of the data items contain an instance of a second
search term associated with a second retention container of the plurality of retention containers; and

for one or more second data items that contain an instance of the second search term, assigning the second data items to the
second retention container at least in part based on the determination that the second data items contain the second search
term,

wherein the second data items are scheduled for deletion from the second retention container after the second data items have
been retained for a duration that is at least as long as a second retention period associated with the second retention container.

US Pat. No. 9,256,622

SYSTEMS AND METHODS TO CONFIRM REPLICATION DATA ACCURACY FOR DATA BACKUP IN DATA STORAGE SYSTEMS

Commvault Systems, Inc., ...

1. A method of performing data backup in a data storage system, the method comprising:
receiving instructions to back up source data stored in one or more primary storage devices associated with a client computing
device, the source data being primary data generated by at least one software application executing on the client computing
device and stored in a native format of the at least one software application;

replicating the source data to one or more replication storage devices different than the one or more primary storage devices
to generate replication data, the replication data stored in the native format of the at least one software application, wherein
the source data and the replication data are substantially synchronized with respect to one another;

based on a stored storage policy associated with the client computing device, initiating a backup operation in which a point
in time backup copy of the primary data is to be created on one or more secondary storage devices different than the one or
more primary storage devices and the one or more replication storage devices;

automatically determining with one or more processors whether the replication data stored in the one or more replication storage
devices is an accurate replication of the source data;

automatically copying with one or more processors the replication data to the one or more secondary storage devices to create
the point in time backup copy when the replication data is accurate;

consulting the stored storage policy to determine whether the stored storage policy permits back up from the source data when
the replication data is inaccurate;

automatically copying with one or more processors the source data to the one or more secondary storage devices to create the
point in time backup copy when the replication data is inaccurate and the stored storage policy permits back up from the source
data, the point in time backup copy stored in a backup format different than the native format for the at least one software
application; and

associating the point in time backup copy with the source data.

US Pat. No. 9,218,374

COLLABORATIVE RESTORE IN A NETWORKED STORAGE SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method of restoring data to a first client computing device located in a primary storage subsystem using data blocks
of primary data residing in a data store associated with a second client computing device located in the primary storage subsystem,
the method comprising:
maintaining in a signature repository, data block signatures corresponding to data blocks of primary data and location information
of the data blocks of primary data within the primary storage subsystem, the data blocks of primary data being generated by
one or more corresponding source applications executing on at least one client computing device of a plurality of client computing
devices located within a primary storage subsystem, the data blocks of primary data for each respective client computing device
of the plurality of client computing devices stored in a native format of the one or more corresponding source applications
in a data store associated with the respective client computing device, wherein one or more secondary copy data blocks of
the data blocks of primary data are generated from the data blocks of primary data during a backup operation;

receiving a set of data block signatures corresponding to a set of secondary copy data blocks maintained in a secondary storage
subsystem, the set of secondary copy data blocks corresponding to a previous version of at least one file of primary data
of a first client computing device of the plurality of client computing devices and being stored in a non-native format of
the one or more corresponding source applications;

querying, using one or more processors, the signature repository to identify at least a first group of data block signatures
of the received set of data block signatures that reside in the signature repository, the first group of data block signatures
corresponding to a first group of data blocks of primary data stored in the data store associated with a second client computing
device of the plurality of client computing devices;

retrieving the first group of data blocks of primary data from the data store associated with the second client computing
device, wherein the first group of data blocks form at least a portion of one or more files stored in the native format of
the one or more corresponding source applications;

identifying a second group of data blocks of the of the set of secondary copy data blocks that do not reside in the primary
storage subsystem;

retrieving from secondary storage, the second group of data blocks; and
restoring the set of secondary copy data blocks to the data store associated with the first client computing device using
at least the first group of data blocks of primary data retrieved from the second client computing device and the second group
of data blocks retrieved from the secondary storage.

US Pat. No. 9,218,375

DEDICATED CLIENT-SIDE SIGNATURE GENERATOR IN A NETWORKED STORAGE SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method of maintaining a signature repository accessible by multiple client computing devices in a data storage system,
the method comprising:
tracking storage of a plurality of data units in a primary storage subsystem, the plurality of tracked data units corresponding
to primary data generated by one or more applications executing on a plurality of client computing devices that form the primary
storage subsystem, each data unit of the plurality of tracked data units forming at least a portion of at least one file stored
in the primary storage subsystem,

the primary data for each of the client computing devices stored in a primary data store associated with a respective client
computing device,

the primary storage subsystem in communication with a secondary storage subsystem that is separate from the primary storage
subsystem and is configured to maintain secondary copies of at least some of the primary data;

generating, by a signature agent executing on one or more processors in the primary storage subsystem, signatures corresponding
to the plurality of tracked data units; and

maintaining a signature repository including a signature block for at least each unique signature of the generated signatures,
where each signature block comprises:

the unique signature; and
one or more data unit entries, each entry corresponding to a distinct data unit of the plurality of tracked data units and
associated with the unique signature that is stored in the primary storage subsystem and that is generated by an application
of the applications executing on a distinct client computing device, wherein each entry identifies a client computing device
of the plurality of client computing devices that stores the corresponding distinct data unit, wherein at least one of the
signature blocks includes at least a first entry indicating that a first primary data store associated with a first client
computing device of the plurality of client computing devices stores a first data unit and that is associated with the unique
signature and a second entry indicating that a second primary data store associated with a second client computing device
of the plurality of client computing devices stores a second data unit that is associated with the unique signature,

wherein the first data unit forms at least a portion of a first file stored in the first primary data store and the second
data unit forms at least a portion of a second file stored in the second primary data store.

US Pat. No. 9,208,210

ROLLING CACHE CONFIGURATION FOR A DATA REPLICATION SYSTEM

Commvault Systems, Inc., ...

1. A method for performing data replication, the method comprising:
receiving, at one or more destination computers, copies of log entries stored in a memory of one or more source computers,
wherein the log entries stored in the memory of the one or more source computer are associated with data management operations
that modify data on one or more first storage devices, wherein the copies of the log entries on the one or more destination
computers are located remotely from the one or more source computers, wherein each copy of the log entries has a unique identifier
associated therewith;

replaying, on the one or more destination computers, the copies of the log entries to replicate the data stored on the one
or more first storage devices to create replicated data on one or more second storage devices; and

in response to an interruption in replaying the copies of the log entries on the one or more destination computers, using
a first unique identifier associated with a recently processed log entry on the one or more destination computers to identify
a subsequent log entry in the memory of the one or more source computers, wherein the subsequent log entry has a second unique
identifier that occurs after the first unique identifier of a most recently processed log entry; and

performing a mirror operation to synchronize the data stored on the one or more first storage devices with data stored on
the one or more destination computers when the subsequent log entry is no longer stored in the memory of the one or more source
computers.

US Pat. No. 10,133,507

SYSTEMS AND METHODS FOR MIGRATING COMPONENTS IN A HIERARCHICAL STORAGE NETWORK

Commvault Systems, Inc, ...

1. A method of automatically transferring a storage resource from a first storage operation cell to a second storage operation cell, the method comprising:monitoring a first operational characteristic of a first storage resource in the first storage operation cell wherein the first operational characteristic has an associated first threshold;
copying at least a first portion of the primary data to one or more secondary storage devices to create secondary data of the primary data;
identifying a second storage operation cell comprising a second storage resource having a second operational characteristic that does not exceed a second threshold;
determining whether at least a portion of the first storage resource may be transferred to the second storage operation cell such that the transfer is capable of causing the first operational characteristic to remain within the first threshold;
automatically transferring at least a portion of the first storage resource to the second storage operation cell if the first operational characteristic is near or exceeds the first threshold, and automatically transferring management information associated with the first storage operation cell to the second storage, operation cell; and
determining that the management information associated with the second storage operation cell is incomplete and performing a restore operation from at least a portion of the secondary data stored in the one or more secondary storage devices to restore the copy of the management information stored in association with the second storage operation cell.

US Pat. No. 10,126,973

SYSTEMS AND METHODS FOR RETAINING AND USING DATA BLOCK SIGNATURES IN DATA PROTECTION OPERATIONS

Commvault Systems, Inc., ...

1. A method of performing a copy operation, the method comprising:copying at least a first file comprising data blocks from a first storage device to a second storage device to create a secondary copy of the file comprising secondary copy data blocks,
embedding deduplication signatures for the secondary copy data blocks in the secondary copy of the first file, wherein the embedded deduplication signatures are physically or logically contiguously embedded in the secondary copy of the file with respect to the secondary copy data blocks; and
in response to a command to copy one or more of the secondary copy data blocks to a third storage device:
comparing the embedded deduplication signatures to deduplication signatures stored at the third storage device without re-generating the values of the embedded deduplication signatures;
if the comparison indicates that a copy of the one or more of the secondary copy data blocks is already stored on the third storage device, storing a reference to the copy of the one or more secondary copy data blocks stored on the third storage device instead of transmitting the one or more secondary copy data blocks to the third storage device; and
if the comparison indicates that the copy of the one or more of the secondary copy data blocks is not stored on the third storage device, transmitting the one or more secondary copy data blocks to the third storage device.

US Pat. No. 10,048,889

EFFICIENT LIVE-MOUNT OF A BACKED UP VIRTUAL MACHINE IN A STORAGE MANAGEMENT SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method for executing a backed up virtual machine on a host computing device without restoring an entire backup copy of the virtual machine, based on pre-staging certain backed up data blocks, the method comprising:prior to execution of the virtual machine,
copying a first set of data blocks, by a media agent component of a storage management system, from a backup copy of data stored on a secondary storage device in communication with the media agent to a read-cache associated with the media agent,
wherein the backup copy comprises at least one of a configuration file and a virtual disk associated with the virtual machine,
wherein the first set of data blocks is based on a profile of the virtual machine, and
wherein the media agent executes on a first computing device comprising one or more processors and corresponding computer memory;
launching execution of the virtual machine on a second computing device,
based on the first set of data blocks, wherein the first set of data blocks is served by the media agent from the read-cache, and
wherein the second computing device comprises one or more processors and corresponding computing memory;
during the execution of the virtual machine on the second computing device,
serving, by the media agent to the virtual machine, a read request for one or more data blocks that is issued by the virtual machine,
wherein the serving of the read request comprises:
(i) copying the requested one or more data blocks from the backup copy to the read-cache if the requested one or more data blocks are not found in the read-cache, and
(ii) transmitting the requested one or more data blocks from the read-cache to the virtual machine in response to the read request; and
wherein continuing the execution of the virtual machine on the second computing device is based on the media agent serving further data blocks to the virtual machine, and
wherein the further data blocks are copied from the backup copy to the read-cache without restoring the entire backup copy of the virtual machine.

US Pat. No. 9,930,118

SYSTEMS AND METHODS FOR GRANULAR RESOURCE MANAGEMENT IN A STORAGE NETWORK

Commvault Systems, Inc., ...

1. A method for consolidating storage policies within a storage operation network, the method comprising:accessing a first storage policy of a plurality of storage policies, the first storage policy comprising at least a first storage operation path that associates at least a first media agent with a first storage device in a first relationship;
accessing a second storage policy of the plurality of storage policies, the second storage policy comprising at least a second storage operation path that associates a second media agent with the first storage device in a second relationship, wherein the second media agent conducts data to the first storage device via the second storage operation path;
automatically evaluating with one or more computer hardware processors, the first and second storage policies and the first and second relationships to determine that both the first and second storage policies use both the first and second storage operation paths to conduct data to at least the first storage device;
consolidating the first and second storage policies into one comprehensive storage policy, wherein the comprehensive storage policy associates at least the first and second storage operation paths to the first storage device, wherein both the first and second storage paths of the comprehensive storage policy conduct data to at least the first storage device; and
automatically adding at least a third storage operation path to the comprehensive storage policy based on one or more network operating conditions that is predicted to occur, wherein the third storage operation path is an alternate data path that is different than the first and second storage operation paths.

US Pat. No. 9,928,144

STORAGE MANAGEMENT OF DATA USING AN OPEN-ARCHIVE ARCHITECTURE, INCLUDING STREAMLINED ACCESS TO PRIMARY DATA ORIGINALLY STORED ON NETWORK-ATTACHED STORAGE AND ARCHIVED TO SECONDARY STORAGE

COMMVAULT SYSTEMS, INC., ...

1. A method for automatically archiving primary data from a storage device to secondary storage and restoring it to the storage device when accessed, the method comprising:executing a monitoring utility on a network-attached storage device in a storage management system,
the network-attached storage device storing primary data that is accessible to a client computing device;
determining that a data set of primary data stored in the network-attached storage device satisfies an archiving criterion by analyzing, by a server component of the storage management system, at least some of the primary data stored in the network-attached storage device;
archiving the data set to a secondary storage device in the storage management system, wherein the archiving removes the archived data set from the network-attached storage device;
generating one or more stubs for the archived data set;
storing the one or more stubs to the network-attached storage device;
determining, by the server component, that a first access call from the client computing device is directed to first data in the archived data set, the first access call including one or more of an open call, a read call, and a write call, and (a) restoring the first data to the network-attached storage device, and (b) removing one or more stubs corresponding to the restored first data; and
serving the first access call, from the restored first data on the network-attached storage device, to the client computing device, without intervention from a user.

US Pat. No. 9,734,348

AUTOMATIC FILE ENCRYPTION

Commvault Systems, Inc., ...

1. A method for displaying encrypted files, the method comprising:
by a computer system comprising one or more hardware processors and a storage:
accessing an encrypted file, the encrypted file an encrypted version of an unencrypted file, the unencrypted file having an
extension that is different than an extension of the encrypted file;

accessing metadata associated with the encrypted file;
determining a file type of the unencrypted file based, at least in part, on the metadata;
determining an application associated with the unencrypted file, wherein the application is not installed on the storage of
the computer system and the application is capable of processing the unencrypted file;

associating the encrypted file with the application to maintain an association between the encrypted file and the application;
determining a role of a user accessing the encrypted file; and
outputting for display a reference to the encrypted file based, at least in part, on the file type and the role of the user,
wherein the reference to the encrypted file is configured to mimic, at least in part, the extension of the unencrypted file
when the role of the user comprises a first role, and wherein the reference to the encrypted file includes an encryption extension
when the role of the user comprises a second role.

US Pat. No. 9,652,283

CREATION OF VIRTUAL MACHINE PLACEHOLDERS IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of creating virtual machine placeholders in a networked data storage system comprising:
receiving usage data about one or more virtual machines existing on one or more primary storage devices, the one or more primary
storage devices comprising computer hardware;

creating a virtual machine placeholder for a first virtual machine of the one or more virtual machines existing on the one
or more primary storage devices based at least in part on usage of the first virtual machine,

the virtual machine placeholder is created at least in part during one or more backups that copy data associated with the
first virtual machine from the one or more primary storage devices to one or more secondary storage devices,

the virtual machine placeholder is recognized as the first virtual machine by one or more virtualization applications, and
wherein the virtual machine placeholder comprises information usable in restoring the first virtual machine from the one or
more secondary storage devices to the one or more primary storage devices;

replacing the first virtual machine with the first virtual machine placeholder in the one or more primary storage devices;
and

deleting at least a portion of the data associated with the first virtual machine from the one or more primary storage devices
during the one or more backups.

US Pat. No. 9,606,994

SYSTEMS AND METHODS FOR USING METADATA TO ENHANCE DATA IDENTIFICATION OPERATIONS

Commvault Systems, Inc., ...

1. A method for identifying data interactions performed within a computer network, the method comprising:
identifying data interactions made by at least one application to data objects stored on one or more primary storage devices;
obtaining with one or more processors comprising computer hardware, first metadata about the data objects from the one or
more primary storage devices;

updating with one or more processors comprising computer hardware, a first metabase with the first metadata;
receiving a query comprising selection criteria associated with moving data from the one or more primary storage devices to
one or more secondary storage devices;

identifying with the first metabase, one or more of the data objects which meet the selection criteria without accessing the
data objects stored on the primary storage device;

copying with one or more processors comprising computer hardware the one or more of the data objects identified by the first
metabase to the one or more secondary storage devices; and

storing second metadata in a second metabase, the second metadata comprising information about the one or more data objects
copied to the one or more secondary storage devices.

US Pat. No. 9,588,849

SYNCHRONIZING SELECTED PORTIONS OF DATA IN A STORAGE MANAGEMENT SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A storage management system for partial synchronization of primary data files based on backup and restore operations of
portions thereof, the storage management system comprising:
a first client computing device comprising a first data agent;
a first primary storage device in communication with the first client computing device, wherein the first primary storage
device comprises a first primary data file generated by the first client computing device, and wherein the first primary data
file comprises a first portion;

a second client computing device comprising a second data agent;
a second primary storage device in communication with the second client computing device, wherein the second primary storage
device comprises a second primary data file generated by the second client computing device, and wherein the second primary
data file comprises a second portion;

a secondary storage computing device comprising a media agent;
a secondary storage device in communication with the secondary storage computing device;
a storage manager in communication with the first client computing device, the second client computing device, and the secondary
storage computing device, wherein the storage manager comprises metadata for partially synchronizing the first primary data
file and the second primary data file in the storage management system;

wherein the first data agent is configured to:
receive, from the storage manager, first metadata that identifies the first portion of the first primary data file,
detect at least one change in the first portion of the first primary data file, and
back up, in conjunction with the media agent, the first portion of the first primary data file to a secondary copy of the
first portion,

wherein the secondary copy of the first portion is stored to the secondary storage device in a backup format; and
wherein the second data agent is configured to:
restore, in conjunction with the media agent,
the secondary copy of the first portion from the secondary storage device to the second portion of the second primary data
file on the second primary storage device,

thereby transforming the secondary copy of the first portion from the backup format to a native format accessible as primary
data to the second client computing device;

wherein after the backup and restore operations, the first portion of the first primary data file and the second portion of
the second primary data file are synchronized with each other without the rest of the first primary data file and the rest
of the second primary data file being respectively synchronized with each other,

thereby the first primary data file and the second primary data file being partially synchronized based on backup and restore
operations in the storage management system.

US Pat. No. 9,495,404

SYSTEMS AND METHODS TO PROCESS BLOCK-LEVEL BACKUP FOR SELECTIVE FILE RESTORATION FOR VIRTUAL MACHINES

COMMVAULT SYSTEMS, INC., ...

1. A method to process block-level data protection of virtual machine files for selective file-level restoration in a data
management system, the method comprising:
automatically identifying, with a storage manager in a first computing device comprising computer hardware, an information
store comprising virtual files associated with a virtual machine, wherein the virtual machine is associated with a media agent
in a second computing device comprising computer hardware, and a host operating system having a file allocation table (FAT)
comprising file information for each virtual file within the information store;

automatically transferring, with the media agent, blocks of data comprising the virtual files from the information store to
a secondary storage device during a block-level data protection operation of the virtual machine to create transferred blocks
of data in the secondary storage device;

automatically updating, with the media agent, a file index associating a location of a corresponding transferred block of
data in the secondary storage device;

accessing, with the media agent, the file information in the FAT of the host operating system during the block-level data
protection operation of the virtual machine; and

automatically associating in the file index, with the media agent, the file information associated with each block of data
that was transferred from the information store during the block-level data protection operation of the virtual machine with
the location of the corresponding transferred block of data in the secondary storage device;

wherein, using the file index to locate the transferred blocks of data in the secondary storage device that comprise at least
a portion of the selected virtual file, the media agent restores one or more transferred blocks of data in the secondary storage
device that are associated with the at least a portion of the selected virtual file without restoring transferred blocks of
data associated with other than the selected virtual file; and

wherein, using the file index to locate the at least a portion of the selected virtual file in the restored one or more blocks
of data, the media agent recreates the selected virtual file from the restored one or more blocks of data.

US Pat. No. 9,483,361

INFORMATION MANAGEMENT CELL WITH FAILOVER MANAGEMENT CAPABILITY

COMMVAULT SYSTEMS, INC. T...

1. An information management cell with failover management capability, comprising:
a plurality of computing devices comprising computer hardware, the plurality of computing devices including at least one client
computing device and at least one secondary storage computing device;

the client computing device having installed thereon one or more applications, first data protection software, and second
data protection software,

the computer hardware of the secondary storage computing device programmed to act as an interface between the client computing
device and one or more secondary storage devices during secondary copy operations, at the direction of the remote storage
manager that is geographically remote from the information management cell,

wherein the computer hardware of the client computing device is programmed via the first data protection software to, at the
direction of a remote storage manager that is geographically remote from the client computing device, process data generated
by the one or more applications according to a first secondary copy file format,

wherein the computer hardware of the client computing device is programmed via the second data protection software to, at
the direction of a failover storage manager installed on a computing device of the plurality of computing devices of the information
management cell, to process data generated by the one or more applications according to a second secondary copy file format,

wherein the failover storage manager is configured to, in the event of a loss of connectivity between the information management
cell and the remote storage manager:

access a stored storage policy; and
cause the client computing device and the secondary storage computing device to perform a secondary copy operation according
to the storage policy in which a secondary copy is written to the one or more secondary storage devices in the second secondary
copy file format, using the second data protection software.

US Pat. No. 9,485,311

EXTERNAL STORAGE MANAGER FOR A DATA STORAGE CELL

Commvault Systems, Inc., ...

1. A method of providing shared data storage management services to a plurality of data storage cells, comprising:
using a storage manager comprising one or more hardware processors:
receiving over a wide area network (WAN) a first request to allow a first component of a first data storage cell of a plurality
of data storage cells to utilize storage management services provided by the storage manager, the plurality of data storage
cells implemented on respective local area networks (LANs), the first data storage cell located remotely from the storage
manager and in communication with the storage manager over the WAN, the first data storage cell comprising at least:

(i) one or more client computing devices each having at least one software application installed thereon which generates primary
data,

(ii) one or more secondary storage controller computers comprising computer hardware configured to perform storage operations
at the direction of the storage manager, and

(iii) one or more secondary storage devices configured to store secondary copies of the primary data,
wherein the one or more client computing devices, the one or more secondary storage controller computers, and the one or more
secondary storage devices are separate from the one or more hardware processors,

wherein the primary data and the secondary copies of the primary data associated with the first data storage cell are not
accessible by the storage manager;

adding an entry corresponding to the first request to a data structure including a list of entries corresponding to other
pending requests from the plurality of data storage cells;

accessing from the data structure the entry corresponding to the first request;
accessing group information usable for assigning the first component to one of a plurality of groups associated with one or
more storage policies;

assigning, based on the group information, the first component to a first group of the plurality of groups associated with
a first storage policy;

receiving a request for a first operation to be performed by the storage manager on behalf of the first component; and
performing the first operation on behalf of the first component according to the first storage policy.

US Pat. No. 9,411,986

SYSTEM AND METHOD FOR ENCRYPTING SECONDARY COPIES OF DATA

Commvault Systems, Inc., ...

1. A data storage system that encrypts secondary copies of data, the system comprising:
at least one computer processor comprising computer hardware, the computer processor configured to perform a storage operation
that creates at least one secondary copy of data;

the computer processor further configured to calculate a completion time to create and encrypt at least a portion of the secondary
copy;

when the completion time exceeds a threshold time, the computer processor is configured to transfer the secondary copy to
at least one storage device without encrypting at least a portion of the secondary copy, and after transfer, encrypt one or
more unencrypted portions of the secondary copy; and

when the completion time is less than the threshold time, the computer processor is configured to encrypt at least a portion
of the secondary copy in association with performing the storage operation.

US Pat. No. 9,292,815

AUTOMATION OF DATA STORAGE ACTIVITIES

CommVault Systems, Inc., ...

1. A method for allocating execution of a data storage workflow suite within a networked data storage system comprising one
or more client computing devices having one or more processors and one or more secondary storage devices, the method comprising:
causing a computing device to display a plurality of data storage display objects, wherein the plurality of data storage display
objects are associated with a plurality of data storage activities, each of the plurality of data storage activities comprising
computer executable instructions for implementing a particular data storage activity;

receiving from the computing device relationship data between the plurality of data storage display objects, wherein the relationship
data indicates an order in which the data storage activities are to be performed;

generating a data storage workflow suite based at least in part on the received relationship data, the data storage workflow
suite comprising executable instructions for carrying out the plurality of data storage activities in the networked data storage
system, the plurality of data storage activities of the data storage workflow suite including at least a backup storage activity
in which primary data blocks forming at least a portion of one or more first files residing in primary storage are copied
and the copies are stored in secondary storage, and a restore storage activity in which secondary data blocks residing in
the secondary storage are restored to primary storage as one or more second files;

deploying the data storage workflow suite to at least two workflow engines, wherein each workflow engine executes on a separate
one of at least two computing devices;

receiving an instruction to initiate the data storage workflow suite;
based at least in part on the instruction to initiate the data storage workflow suite and based at least in part on an allocation
scheme, selecting, by one or more processors, a first workflow engine of the at least two workflow engines on which to execute
a first data storage activity comprising the backup storage activity for a first client computing device of the one or more
client computing devices, wherein at least a second of the at least two workflow engines is not selected, and wherein executing
the backup storage activity for the first client computing device comprises:

identifying a set of primary data blocks that do not reside in the secondary storage, wherein the set of primary data blocks
form at least a portion of one or more first files residing on a primary data store associated with the first client computing
device,

generating a copy of each of the set of primary data blocks, and
storing the copy of each of the set of primary data blocks in the secondary storage; and
following the backup storage activity and based at least in part on the relationship data of the data storage workflow suite,
identifying a second data storage activity of the data storage workflow suite to execute.

US Pat. No. 9,262,496

UNIFIED ACCESS TO PERSONAL DATA

Commvault Systems, Inc., ...

1. A method for managing distributed data in an information management system, comprising:
defining an information management policy for multiple different computing devices having data objects and associated with
the information management system,

wherein the multiple computing devices and the data objects are associated with a user,
wherein the user is one of multiple users associated within an organization,
wherein the multiple computing devices include at least one mobile computing device,
wherein the defining includes receiving input from an administrator of the information management policy, the user associated
with the multiple computing devices, or both the administrator and the user,

wherein the input selects which ones of the data objects to collect, manage and distribute in accordance with the information
management policy, and

wherein the input selects which ones of the multiple computing devices to which to distribute the selected data objects;
analyzing the data objects to generate an identifier for each data object;
indexing the identifier for each of the data objects in an object index,
wherein the object index associates a logical location of each data object with the respective identifier of each object;
receiving at least some of the data objects from the multiple computing devices,
wherein not all of the data objects exist on all of the multiple computing devices;
creating copies of the selected data objects in accordance with the information management policy;
creating a preview version for each of the selected data objects to enable the user to preview at least a portion of content
of the selected data objects,

wherein the preview version is based at least partially on the capabilities of the computing device that will display the
preview version to the user; and

distributing the copies and the preview version of the selected data objects to the selected ones of the multiple computing
devices in accordance with the information management policy.

US Pat. No. 9,213,848

INFORMATION MANAGEMENT OF DATA ASSOCIATED WITH MULTIPLE CLOUD SERVICES

Commvault Systems, Inc., ...

1. At least one non-transitory computer-readable medium carrying instructions for providing information management of data
objects from hosted services, comprising:
providing a user interface to enable a user to identify or access each of multiple hosted accounts provided by multiple, different
hosted services,

wherein the hosted services provide access, over a public network, to data objects associated with the user, and
wherein the data objects are accessible to the user via the hosted accounts provided by the hosted services;
managing data for a computing device and for other computing devices,
wherein the managing includes:
creating copies of data objects from the computing devices and
storing the copies to secondary storage devices in accordance with information management policies;
receiving definitions for an information management policy for the multiple hosted accounts via the user interface,
wherein the information management policy identifies at least one type of data object and a data storage policy for managing
copies of that type of data object;

causing copies of data objects to be requested from one of the hosted services via one of the multiple hosted accounts in
accordance with the information management policy for the multiple hosted accounts; and

receiving the copies of the data objects from the hosted service in response to the request.

US Pat. No. 9,116,850

CLIENT-SIDE REPOSITORY IN A NETWORKED DEDUPLICATED STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of restoring deduplicated data from secondary storage to a primary storage device, the method comprising:
receiving at a storage manager that comprises at least computer memory, a request to restore to the primary storage device
one or more files;

identifying a plurality of data blocks to be restored that correspond to the one or more files, wherein each of the one or
more files comprises more than one data block,

wherein the plurality of data blocks to be restored are stored in secondary storage and a first copy of deduplication signatures
corresponding to the plurality of data blocks to be restored is stored in secondary storage, the first copy of the deduplication
signatures is stored in association with one or more media agents, and

wherein a portion of the plurality of data blocks are stored in a client-side repository, and a second copy of deduplication
signatures corresponding to the portion of the plurality of data blocks is stored in the client-side repository remote from
the secondary storage and local to the primary storage device;

determining a most recent backup time of each of the plurality of data blocks to be restored, wherein the most recent backup
time indicates a most recent time at which a particular block of data was part of a backup operation;

based on the determined most recent backup time, removing one or more deduplication signatures from the set of deduplication
signatures to form a revised set of deduplication signatures;

forming a plurality of bundles of deduplication signatures from the revised set of deduplication signatures;
transmitting the plurality of bundles of deduplication signatures to the client-side repository;
receiving an indication from the client-side repository as to which data blocks corresponding to the revised set of deduplication
signatures are stored in the client-side repository, wherein the determination as to which data blocks are stored in the client-side
repository is based on a comparison of the revised set of deduplication signatures with the second copy of deduplication signatures
stored in the client-side repository; and

accessing data blocks not stored in the client-side repository from the secondary storage based on the first copy of deduplication
signatures stored in association with the one or more media agents and transmitting the data blocks not stored in the client-side
repository from the secondary storage to the primary storage device,

wherein data blocks that are stored in the client-side repository are transmitted from the client-side repository to the primary
storage device.

US Pat. No. 10,140,037

PARTIAL SHARING OF SECONDARY STORAGE FILES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of sharing a portion of a file in secondary storage, the method comprising:using one or more computing devices comprising computer hardware:
accessing index data associated with secondary copies of a plurality of files residing in a primary storage subsystem, the secondary copies stored in one or more secondary storage devices residing in a secondary storage subsystem;
based on the accessed index data, causing a graphical representation of a first file of the plurality of files to be displayed to a first user in a native view provided via a first client computing device of the first user residing in the primary storage subsystem, the first file corresponding to a first secondary copy stored in the one or more secondary storage devices;
receiving, from the first client computing device, a request to share a portion of the first file, wherein the request is based on selection of the portion of the first file by the first user from the native view;
in response to the request, generating a link to a selected portion of the first secondary copy corresponding to the selected portion of the first file; and
in response to activation of the link by a second user different from the first user, causing the selected portion of the first secondary copy to be restored for presentation to the second user, without causing the entire first secondary copy to be restored from the one or more secondary storage devices.

US Pat. No. 10,126,977

SYNCHRONIZING SELECTED PORTIONS OF DATA IN A STORAGE MANAGEMENT SYSTEM

Commvault Systems, Inc., ...

1. A storage management system for synchronizing portions but not entireties of primary data files based on backup and restore operations, the storage management system comprising:a first computing device comprising one or more processors and computer-readable memory;
a second computing device comprising one or more processors and computer-readable memory;
wherein the first computing device is configured to:
detect at least one change in a first portion of a first primary data file generated by the first computing device, and
back up the first portion of the first primary data file to a secondary copy of the first portion, which is in a backup format not accessible as primary data to the first computing device;
wherein the second computing device is configured to:
restore the secondary copy of the first portion to a second portion of a second primary data file generated by the second computing device,
thereby transforming the secondary copy of the first portion from the backup format to primary data that is accessible to the second computing device within the second primary data file;
a storage manager in communication with the first computing device and the second computing device, wherein the storage manager is configured to:
based on receiving from the first computing device notice of the at least one change in the first portion of the first primary data file, (a) instruct the first computing device to back up the first portion of the first primary data file to the secondary copy of the first portion, and (b) instruct the second computing device to restore the secondary copy of the first portion to the second portion of the second primary data file; and
wherein after the secondary copy of the first portion is restored to the second portion of the second primary data file, the first portion of the first primary data file and the second portion of the second primary data file are synchronized with each other without the rest of the first primary data file and the rest of the second primary data file being respectively synchronized with each other.

US Pat. No. 10,089,337

PREDICTING SCALE OF DATA MIGRATION BETWEEN PRODUCTION AND ARCHIVE STORAGE SYSTEMS, SUCH AS FOR ENTERPRISE CUSTOMERS HAVING LARGE AND/OR NUMEROUS FILES

Commvault Systems, Inc., ...

1. A computer-implemented method of predicting an amount of data storage needed when moving data from primary data storage to secondary or archive data storage, the method comprising:receiving, at a client computing device, a request to move data that satisfies at least one criterion,
wherein the moving of data is from a primary data storage system to a secondary data storage system, and
wherein the at least one criterion is related to age or size of data;
providing an initial database query based on the request,
wherein the initial database query is related to an initial table in an initial database;
building a nested database query from the initial database query according to a database schema,
wherein building the nested database query includes determining additional tables linked to the initial table;
predicting a size of data that will be returned as a result of executing the nested database query; and
providing the predicted size before moving the data from the primary data storage system to the secondary data storage system.

US Pat. No. 10,044,803

CONSOLIDATED PROCESSING OF STORAGE-ARRAY COMMANDS BY A SNAPSHOT-CONTROL MEDIA AGENT

COMMVAULT SYSTEMS, INC., ...

1. A method comprising:executing a first media agent on a first computing device that comprises one or more processors and associated computer memory, wherein one or more applications and a respective associated data agent also execute thereon, and
wherein the one or more applications directly read and write primary data on a storage array;
executing a second media agent on a second computing device that comprises one or more processors and associated computer memory, wherein the second media agent is in communication with the first media agent,
wherein the second media agent is configured to directly communicate operational commands to the storage array using a plurality of command devices that are configured on the second computing device, and
wherein the first computing device is configured without command devices for directly communicating operational commands to the storage array;
providing, by the second media agent, indirect communications of operational commands between the first media agent and the storage array by:
(a) receiving a first operational command that is issued by the first media agent and is directed at the storage array,
(b) transmitting the first operational command to the storage array using a first command device from the plurality of command devices configured on the second computing device,
(c) receiving a response to the first operational command from the storage array, and
(d) transmitting the response to the first media agent on the first computing device; and
wherein the providing by the second media agent of indirect communications of operational commands between the first media agent and the storage array offloads the first computing device that executes the first media agent from providing direct communications of operational commands between the first media agent and the storage array.

US Pat. No. 9,858,156

DEDICATED CLIENT-SIDE SIGNATURE GENERATOR IN A NETWORKED STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of maintaining a signature repository in a data storage system, the method comprising:
tracking storage of a plurality of data units in a primary storage subsystem, the plurality of data units stored in a native
format corresponding to one or more source applications, the primary storage subsystem in communication with a secondary storage
subsystem that is separate from the primary storage subsystem and is configured to maintain secondary copies of at least some
of the plurality of data units, the secondary copies stored in the secondary storage subsystem in a non-native format;

generating, by a signature agent executing on one or more processors signatures corresponding to the plurality of data units
in the primary storage subsystem during a copy operation to the secondary storage subsystem;

maintaining a secondary storage signature repository in the secondary storage subsystem and a primary storage signature repository
in the primary storage subsystem,

wherein the secondary storage signature repository comprises signature blocks for one or more unique signatures associated
with data units in the secondary storage subsystem;

wherein the primary storage signature repository in the primary storage subsystem comprises signature blocks for one or more
unique signatures of the generated signatures associated with data units in the primary storage subsystem, where the signature
blocks in the primary storage signature repository comprise:

the unique signature; and
one or more data unit entries, each entry corresponding to at least one of the of the plurality of data units in the primary
storage subsystem associated with the unique signature; and

wherein when a first data unit stored in a first location in the primary storage subsystem has the same unique signature as
a second data unit stored in a second location in the primary storage subsystem, modifying the associated signature block
in the primary storage signature repository to comprise:

a first data unit entry that identifies the first storage location in the primary storage subsystem, and
a second data unit entry that identifies the second storage location in the primary storage subsystem.

US Pat. No. 9,852,026

EFFICIENT APPLICATION RECOVERY IN AN INFORMATION MANAGEMENT SYSTEM BASED ON A PSEUDO-STORAGE-DEVICE DRIVER

COMMVAULT SYSTEMS, INC., ...

1. A method associated with a data agent that executes on a client computing device in a system, the method comprising:
mounting, to a first mount point of the client computing device, a destination volume on a primary storage device;
initiating a restore operation of backed up data from a secondary storage device to the destination volume on the primary
storage device, wherein the backed up data represents a copy of primary data generated by an application;

while the restore operation is proceeding to the destination volume using the first mount point, mounting, to the first mount
point of the client computing device, a pseudo-volume based on a driver executing on the client computing device;

starting the application on the client computing device, based on using the pseudo-volume for the application's primary data,
wherein, after starting the application, the restore operation continues to restore the backed up data to the destination
volume on the primary storage device substantially concurrently with the application,

thereby starting the application before the restore operation restores all of the backed up data to the destination volume;
in response to a write request comprising first data blocks issued by the application, storing the first data blocks to a
first data structure configured in the pseudo-volume;

wherein the using of the pseudo-volume for the application's primary data is managed by a data agent that executes on the
client computing device; and

in response to a read request for second data blocks issued by the application the data agent:
(i) supplies the second data blocks from the first data structure, when the second data blocks are found therein,
(ii) supplies the second data blocks from a second data structure configured in the pseudo-volume, when the second data blocks
were not found in the first data structure and were found in the second data structure, and

(iii) causes the second data blocks to be fetched from the backed up data in the secondary storage device when the second
data blocks were not found in either of the first data structure and the second data structure.

US Pat. No. 9,632,713

SECONDARY STORAGE EDITOR

Commvault Systems, Inc., ...

1. A method of editing secondary storage data associated with a backup, the method comprising:
under control of a hardware processor comprising digital logic circuitry,
performing a backup of a primary data store, said performing comprising storing backup data in a non-human readable format
on a secondary storage device and creating an index of the backup data, the index comprising original metadata associated
with the backup data;

electronically generating instructions for outputting a graphical user interface for presentation to a user, the graphical
user interface comprising functionality configured to enable the user to modify the original metadata associated with the
backup data;

receiving, from the graphical user interface, a user modification of the original metadata;
generating a modified index that reflects the user modification of the original metadata to create modified metadata, without
modifying the backup data;

maintaining the original metadata, which omits the user modification of the original metadata, in addition to maintaining
the modified index, which includes the modified metadata;

in response to a user request to browse the backup data, outputting a custom view of the backup data that reflects the user
modification of the original metadata; and

in response to a user request to restore the backup data, restoring the backup data to create restored data, said restoring
comprising:

retrieving the backup data from the secondary storage device;
identifying changes in the modified metadata compared to the original metadata;
applying the user modification of the original metadata to the backup data to create the restored data based at least in part
on the identified changes in the modified metadata as compared to the original metadata.

US Pat. No. 9,588,704

SECONDARY STORAGE OPERATION INSTRUCTION TAGS IN INFORMATION MANAGEMENT SYSTEMS

Commvault Systems, Inc., ...

1. A system configured to apply granular secondary storage operation management, the system comprising:
one or more secondary storage controller computers including computer hardware configured to copy data from a primary storage
subsystem to a secondary storage subsystem; and

a client computing device residing in the primary storage subsystem and comprising computer hardware, the client computing
device configured to:

in response to user interaction with a graphical user interface to associate a first tag of one or more tags with a first
file, store an identifier associated with the first tag in association with the first file; and

in response to receiving instructions to perform, according to a storage policy, a secondary copy operation on a data set
in the primary storage subsystem including at least the first file and a second file, forward the first file, the second file,
and the identifier associated with the first tag to the one or more secondary storage controller computers;

the one or more secondary storage controller computers further configured to:
based on a review of the identifier associated with the first tag, identify the first file as having been tagged with the
first tag;

electronically obtain rules associated with the first tag and for processing files associated with the first tag;
perform on the first file at least a first secondary storage operation specified by the rules associated with the first tag;
and

perform on the second file at least a second secondary storage operation specified by the storage policy,
wherein the first and second secondary storage operations are different.

US Pat. No. 9,563,514

ASSIGNMENT OF PROXIES FOR VIRTUAL-MACHINE SECONDARY COPY OPERATIONS INCLUDING STREAMING BACKUP JOBS

Commvault Systems, Inc., ...

1. A method comprising:
identifying one or more proxies in a storage management system that are eligible to back up a given virtual machine in a first
set of virtual machines in the storage management system,

wherein any one proxy among the one or more proxies represents one of:
(a) a first virtual machine that executes on a first computing device, wherein the first virtual machine executes a data agent
for virtual-machine backup, and

(b) a second computing device that executes a data agent for virtual-machine backup;
wherein the identifying comprises:
(i) determining (A) a set of candidate proxies that are candidates to back up the given virtual machine, and (B) a mode of
access available to each respective candidate proxy for accessing the given virtual machine's data as a source for backup,

wherein the mode of access has a predefined tier of preference;
(ii) classifying each candidate proxy in the set of candidate proxies based on the predefined tier of preference for the respective
candidate proxy's mode of access to the given virtual machine's data as the source for backup; and

(iii) defining one or more candidate proxies that are classified as having the highest-tier of preference as being eligible
to back up the given virtual machine; and

wherein the identifying is performed by a first data agent for virtual-machine backup that operates as a component of the
storage management system.

US Pat. No. 9,483,478

LIGHTWEIGHT MOUNTING OF A SECONDARY COPY OF FILE SYSTEM DATA

Commvault Systems, Inc., ...

1. A system comprising:
a computing device configured to:
transmit filtering criteria from a primary storage subsystem to a secondary storage subsystem, the secondary storage subsystem
including one or more secondary storage devices that contain a secondary copy of at least a portion of a file system;

receive at the primary storage subsystem, from the secondary storage subsystem, metadata corresponding to an abbreviated version
of the secondary copy, wherein the abbreviated version of the secondary copy comprises an identification of one or more data
objects in the secondary copy that satisfy the filtering criteria;

process the received metadata to display the abbreviated version of the secondary copy within a graphical user interface;
receive an indication of a selection of an identification of a first data object in the one or more data objects;
transmit, from the primary storage subsystem to the secondary storage subsystem, a request for a copy of the selected first
data object; and

receive the copy of the selected first data object from the secondary storage subsystem.

US Pat. No. 9,483,489

PARTIAL SHARING OF SECONDARY STORAGE FILES IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of sharing a portion of a file in secondary storage, the method comprising:
using one or more computing devices comprising computer hardware:
copying a plurality of files residing in a primary storage subsystem to one or more secondary storage devices residing in
a secondary storage subsystem to generate secondary copies of each of the plurality of files;

creating index data associated with the secondary copies of the plurality of files, the index data stored in the secondary
storage subsystem and including information sufficient to display at least some of the secondary copies of the plurality of
files in a native view within a graphical user interface (GUI) displayed to a user of a client computing device residing in
the primary storage subsystem, the native view configured to include a representation of a file system structure, wherein
the at least some of the secondary copies are presented and selectable within the native view;

receiving, from the client computing device, a request to share a portion of the secondary copy of a first file of the plurality
of files, the request initiated via selection of the secondary copy of the first file in the native view provided by the GUI;

in response to the request, generating a link to the portion of the secondary copy of the first file, the link including a
reference to a secondary copy offset in the secondary copy of the first file that corresponds to a position of the portion
within the first file; and

in response to receipt of an indication of a user selection of the link, causing a restore of the portion of the secondary
copy of the first file from the one or more secondary storage devices for presentation to a user, without restoring the entire
secondary copy of the first file from the one or more secondary storage devices.

US Pat. No. 9,342,537

INTEGRATED SNAPSHOT INTERFACE FOR A DATA STORAGE SYSTEM

CommVault Systems, Inc., ...

1. A data storage system, comprising:
a source system in communication with a destination system comprising a first storage device, the first storage device configured
to perform snapshot operations;

at least one software application executing on the source system and generating production data;
a snapshot management module executing on one or more processors and configured to:
receive a request to perform a snapshot operation involving a stored version of at least a portion of the production data
that resides on the first storage device;

determine that the first storage device is a first type of a plurality of types of storage devices, wherein each type of the
plurality of types corresponds to a different vendor and/or a different product from a particular vendor;

determine that the source system does not include built-in support for the first storage device based at least in part on
the determined first type;

communicate with the destination system to identify one or more functions for performing the requested snapshot operation
and that are defined at least in part by a programming interface specification residing on the source systems; and

invoke instances of the one or more identified functions that are in compliance with the programming interface specification
and are implemented specifically for storage devices of the first type,

wherein a snapshot engine residing on the first storage device is responsive to the invoking of the instances of the one or
more identified functions to perform the requested snapshot operation,

wherein the snapshot management module includes pre-configured functionality for interacting with storage devices having at
least a different type without using the programming interface specification to perform snapshot operations, and

wherein the pre-configured functionality includes one or more functions that are not in compliance with the programming interface
specification residing on the source system.

US Pat. No. 9,262,275

ARCHIVING DATA OBJECTS USING SECONDARY COPIES

Commvault Systems, Inc., ...

1. A non-transitory computer-readable storage medium storing computer-executable instructions, which when executed cause a
system to perform a method for archiving multiple data objects included in primary copy data, the method comprising:
for each of one or more data objects to be archived, replacing the data object in the primary copy data with a stub referencing
a secondary copy of the identified data object,

wherein the secondary copy of the multiple data objects is a first secondary copy of the multiple data objects;
determining that a first data object included in the primary copy data has been deleted;
if the primary copy data has been deleted less than a predetermined period of time, then producing a second secondary copy
of the first data object,

wherein the second secondary copy is produced from a first secondary copy of the first data object, and
providing, from the first secondary copy of other data objects except for the first data object, a corresponding second secondary
copy of the other data objects.

US Pat. No. 9,244,779

DATA RECOVERY OPERATIONS, SUCH AS RECOVERY FROM MODIFIED NETWORK DATA MANAGEMENT PROTOCOL DATA

Commvault Systems, Inc., ...

1. A method of handling a Network Data Management Protocol (“NDMP”) backup or copy operation, the method comprising:
receiving an original NDMP backup data stream from a client;
modifying the received original NDMP backup data stream by performing the following modification procedures upon the original
NDMP backup data stream: deduplication, encryption, and compression,

wherein the modification procedures create a modified version of the NDMP backup data stream;
storing the modified version of the NDMP backup data stream in stored chunks,
wherein each chunk is addressable by a physical offset and a physical length,
wherein each chunk represents a modified version of a contiguous subset of the original NDMP backup data stream, and,
wherein the client associates a logical offset and a logical length with the contiguous subset of the original NDMP backup
data stream that is represented by each chunk; and,

for each stored chunk, associating the stored chunk with:
the physical offset and physical length that permits addressing of the chunk,
the logical offset and logical length that the client associates with the contiguous subset of the original NDMP backup data
stream that is represented by the chunk, and

receiving a request for a certain subset of the original NDMP backup data stream, wherein the request includes a logical offset
and a logical length;

using the received logical offset and logical length to:
identify a stored chunk that comprises a modified version of at least a portion of the requested subset of the original NDMP
backup data stream, and

determine a physical offset and a physical length that permits addressing of the identified chunk;
reading at least a portion of the identified chunk using the determined physical offset and physical length;
converting the portion of the identified chunk by reversing the modification procedures that were previously performed upon
the original NDMP backup data stream in order to create a converted version of the portion of the identified chunk; and,

sending data from the converted version of the portion of the identified chunk that is at least a portion of the requested
subset of the original NDMP backup data stream.

US Pat. No. 9,110,602

CONTENT ALIGNED BLOCK-BASED DEDUPLICATION

COMMVAULT SYSTEMS, INC., ...

1. A deduplication system configured to determine deduplication block alignments within a data segment, the system comprising:
one or more computer processors comprising computer hardware;
a duplication module being executed by the one or more computer processors and configured to:
select one or more first block alignment indicator values for a deduplication block alignment function;
iteratively perform the deduplication block alignment function on data within a sliding window of the data segment, wherein
the sliding window comprises a sliding boundary;

establish a deduplication data block based at least in part on a determination that an output of the deduplication block alignment
function performed on the data matches one of the one or more first block alignment indicator values, indicating that a deduplication
block alignment has been found; and

deduplicate the deduplication data block; and
a criteria adjustment module configured to select one or more second block alignment indicator values to replace the one or
more first block alignment indicator values based at least in part on a determination that, for a threshold number of the
iterative performances of the deduplication block alignment function, the output of the deduplication block alignment function
performed on the data within the sliding window does not match any of the one or more first block alignment indicator values,
wherein the one or more second block alignment indicator values are used instead of the one or more first block alignment
indicator values for subsequent iterations of the deduplication block alignment function.

US Pat. No. 10,089,193

GENERIC FILE LEVEL RESTORE FROM A BLOCK-LEVEL SECONDARY COPY

Commvault Systems, Inc., ...

1. A method for restoring data, comprising:with a first computing device residing in a data storage system,
using an interface object to obtain file system metadata corresponding to a block-level secondary copy, the block-level secondary copy including a plurality of files stored across a plurality of blocks on one or more secondary storage devices;
processing the obtained file system metadata with a processor of the first computing device to mount the block-level secondary copy onto the first computing device;
in response to a request to restore at least one first file of the plurality of files of the block-level secondary copy, using the interface object to request a read from the one or more secondary storage devices of one or more first blocks of the plurality of blocks, the first blocks corresponding to the first file,
wherein the interface object initiates retrieval of the one or more first blocks from the one or more secondary storage devices, and
wherein the first file is copied, using the one or more first blocks, to one or more primary storage devices associated with the first computing device.

US Pat. No. 10,043,147

ASSESSING USER PERFORMANCE IN A COMMUNITY OF USERS OF DATA STORAGE RESOURCES

COMMVAULT SYSTEMS, INC., ...

1. A method of assessing users of a data storage system, the method comprising:determining, with a first computing device of a data storage system provider, first configuration information indicative of a hardware configuration, a software configuration, and/or corresponding complexity of a first data storage cell, the first data storage cell comprising one or more client computing devices and configured to create and store one or more secondary copies of primary data generated by the one or more client computing devices in the first data storage cell;
determining, with the first computing device, first incident information relating to a first incident in which resources of the data storage system provider were expended on behalf of a first user of the first data storage cell;
updating, with the first computing device, a performance metric associated with the first user to a first value based on the first incident, wherein the first value is based at least in part one or both of the first configuration information and the first incident information;
determining, with the first computing device, second configuration information indicative of a hardware configuration, a software configuration, and/or corresponding complexity of a second data storage cell, the second data storage cell comprising one or more client computing devices and configured to create and store one or more secondary copies of primary data generated by the one or more client computing devices in the second data storage cell;
determining, with the first computing device, second incident information relating to a second incident in which resources of the data storage system provider were expended on behalf of a second user of the second data storage cell; and
updating, with the first computing device, a performance metric associated with the second user to a second value based on the second incident, wherein the second value is based at least in part on one or both of the second configuration information and the second incident information.

US Pat. No. 9,823,978

USER-LEVEL QUOTA MANAGEMENT OF DATA OBJECTS STORED IN INFORMATION MANAGEMENT SYSTEMS

Commvault Systems, Inc., ...

1. A system comprising:
a quota manager in communication with a storage manager that manages an information management system, including backup operations
therein;

wherein the quota manager is configured to:
determine, based on information received from the storage manager, a total amount of storage that is occupied by data associated
with an end-user in the information management system,
wherein the data associated with the end-user comprises at least one of:
an instance of an object of primary data stored in primary storage and an instance of a secondary copy object stored in secondary
storage, and

identify, based on a selection of data received from the end-user, one or more instances of one or more data objects,
wherein the one or more identified instances comprise at least one instance of a secondary copy object that is associated
with the end-user and is stored in secondary storage of the information management system,

instruct the storage manager to implement one or more deletion operations of the one or more identified instances, so long
as each respective identified instance is not under legal hold,

following the one or more deletion operations, adjust the total amount of storage that is occupied by the data associated
with the end-user in the information management system, and

based on a determination that the total amount of storage exceeds a quota value for the end-user, instruct the storage manager
to block future backup operations for data associated with the end-user, which future backup operations are scheduled, based
on one or more storage policies in the storage manager, to generate secondary copy objects associated with the end-user,

wherein instructing the storage manager to block the future backup operations overrides the one or more storage policies,
and does not prevent the end-user from creating more objects of primary data in the information management system; and
(A) wherein when a respective identified instance of a secondary copy object is under legal hold, the respective identified
instance is not deleted but its associated storage amount is reduced from the total amount of storage associated with the
end-user, and

(B) wherein when a respective identified instance of an object of primary data is under legal hold, (i) a secondary copy thereof
is created, stored to secondary storage, and not deleted, (ii) the object of primary data is deleted and its associated storage
amount is reduced from the total amount of storage associated with the end-user, and (iii) a storage amount associated with
the created secondary copy also is not counted in the total amount of storage associated with the end-user.

US Pat. No. 9,720,736

JOB MANAGEMENT AND RESOURCE ALLOCATION IN A DATA PROTECTION SYSTEM

Commvault Systems, Inc., ...

1. A method for managing resource allocation in a data storage system, the method comprising:
with one or more computing devices in a networked data storage system,
initiating processing of a first data protection job of a plurality of data protection jobs;
asynchronously sending a resource allocation request for allocation of one or more computing resources within the data storage
system for use in performing the first data protection job, wherein the computing resources include one or more secondary
storage devices;

initiating processing of a second data protection job of the plurality of data protection jobs without waiting for completion
of the resource allocation request;

in response to the resource allocation request, locking one or more resource objects associated with the computing resources
such that the one or more resource objects become unmodifiable;

allocating, while the one or more resource objects are locked, a portion of the computing resources for use in performing
the first data protection job; and

subsequent to said allocating, unlocking the one or more resource objects associated with the computing resources such that
the one or more resource objects are no longer unmodifiable.

US Pat. No. 9,720,787

TABLE LEVEL DATABASE RESTORE IN A DATA STORAGE SYSTEM

CommVault Systems, Inc., ...

1. A method of restoring a database table from secondary storage in a data storage system, comprising:
using one or more computing devices comprising computer hardware:
receiving instructions to perform a table level restore for a first table of a plurality of database tables to restore the
first table from a secondary storage subsystem to a primary storage subsystem,

wherein the plurality of database tables is associated with a database application installed on one or more client computing
devices comprising computer hardware, and wherein a first secondary copy of data corresponding to a first subset of database
tables belonging to a first tablespace is stored in the secondary storage subsystem and comprises data relating to the first
subset of database tables, and a second secondary copy of data corresponding to a second subset of database tables belonging
to a second tablespace different than the first tablespace is stored in the secondary storage subsystem and comprises data
relating to the second subset of database tables, the first table belonging to the first tablespace;

accessing a first table metadata index for the first table, the first table metadata index comprising information specific
to the first table, the first table metadata index further comprising information for restoring (i) the first table, (ii)
a second table referenced by the first table and belonging to the first tablespace, and (iii) a third table referenced by
the first table and belonging to the second tablespace, the first table metadata index further comprising (i) a first location
within the first secondary copy that contains data corresponding to the first table, a second location within the first secondary
copy that contains data corresponding to the second table, and a third location within the second secondary copy that contains
data corresponding to the third table or (ii) information sufficient to locate data corresponding to the first and second
tables in the first secondary copy and to locate data corresponding to the third table in the second secondary copy, wherein
the first table metadata index was created prior to the receipt of the instructions to restore the first table; and

restoring the first table and the second table referenced by the first table from the secondary storage subsystem to the primary
storage subsystem without restoring the entire first secondary copy, and restoring the third table referenced by the first
table from the secondary storage subsystem to the primary storage subsystem without restoring the entire second secondary
copy.

US Pat. No. 9,652,335

SYSTEMS AND METHODS FOR RESTORING DATA FROM NETWORK ATTACHED STORAGE

Commvault Systems, Inc., ...

1. A method for managing data in a storage system, the method comprising:
receiving at a media agent component comprising computer hardware, a request to restore at least one requested data file from
a Network-Attached Storage (NAS) Device, wherein the at least one requested data file is restored to a first storage device
with a first file management system, and the Network-Attached Storage (NAS) Device comprises a second file management system
that is different than the first file management system;

directing with the media agent, a file processor to retrieve a data structure from the Network-Attached Storage (NAS) Device,
wherein a first data structure is retrieved with the second file management system, the first data structure comprising at
least a header, a chunk of data, and a trailer, the header comprising at least a set of file markers that identify a plurality
of data files in a chunk of data in the data structure, the trailer comprising at least metadata about the plurality of data
files in the chunk of data;

obtaining, with the file processor, the metadata in the trailer about the plurality of data files; and
reconstructing an index using the metadata, wherein the index is accessible by the media agent.

US Pat. No. 9,633,022

BACKUP AND RESTORATION FOR A DEDUPLICATED FILE SYSTEM

Commvault Systems, Inc., ...

1. A method of backing up data from a source file system of a computer device to a backup data storage system, the method
comprising:
checking whether a source file is locally stored on the source file system in a local deduplicated format of the source file
system by performing application programming interface (API) calls to an deduplication control module of the source file system
of the computer device to determine whether the source file is stored in the local deduplicated format,

wherein the deduplication control module controls deduplication operations associated with source files locally stored on
the source file system;

when the checking indicates that the source file is stored in the local deduplicated format, then
determining a block size value used to store the source file in the deduplicated format;
accessing, without a file read/write assistance from an operating system running on the computer device, a local deduplication
database to determine a location of a first data chunk of the source file stored in the deduplicated format on a local storage
device; and,

backing up the source file by accessing and selectively transferring the first data chunk and successive data chunks of the
source file by:

transferring a given data chunk, if the local deduplication database indicates that the given data chunk was not deduplicated;
and

transferring a deduplication record, without transferring the given datachunk, if the local deduplication database indicates
that the given data chunk was deduplicated; and

when the check indicates that the source file is stored without deduplication on the computer device, then backing up the
source file by transferring data chunks of the source file to the backup data storage system and performing deduplication
on the data chunks of the source file.

US Pat. No. 9,633,025

DATA STORAGE SYSTEM FOR ANALYSIS OF DATA ACROSS HETEROGENEOUS INFORMATION MANAGEMENT SYSTEMS

Commvault Systems, Inc., ...

1. An information management system configured to create graphical reports associated with a status of the information management
system, the system comprising:
a first information management cell having a first storage manager coupled, via a first network, to a first plurality of computing
devices,

wherein the first storage manager includes a first storage manager database to store a first data storage policy associated
with the first plurality of computing devices,

wherein the first data storage policy includes rules that determine a frequency by which the first storage manager causes
data that is stored by the first plurality of computing devices to be backed up by a secondary storage device,

wherein the first storage manager database is a first type of database; and
a second information management cell connected to the first information management cell and having a second storage manager
coupled, via a second, network to a second plurality of computing devices,

wherein the second storage manager includes a second storage manager database to store a second data storage policy associated
with the second plurality of computing devices,

wherein the second storage manager database is a second type of database that is different from the first type of database,
wherein the second storage manager includes a memory storing instructions,
wherein the second storage manager includes a processor coupled to the memory,
wherein the instructions are executable by the processor to cause the second storage manager to:
receive an input from a user to query the first storage manager database and the second storage manager database,
identify the first storage manager database as the first type of database and the second storage manager database as the second
type of database,

query the first storage manager database using a first set of query commands,
identify a data format of the information received in response to the first set of query commands as a first data format,
query the second storage manager database using a second set of query commands,
identify a data format of the information received in response to the second set of query commands as a second data format,
 wherein the first set of query commands are different from the second set of query commands and the first set of query commands
are based on identifying the first storage manager database as the first type of database,

normalize information received in response to the query of the first storage manager database to be compatible with the second
data format,

merge and sort the normalized results and information received in response of the query of the second storage manager into
an interim database associated with a report generation agent that generates the displayed reports,

 wherein the merged results represent database content for heterogeneous information management cells,
display a graphical report of the information in the interim database, based on the input received from the user;
populate a user interface with a list of content identifiers for views, tables, or columns of the first storage manager database
and of the second storage manager database,

wherein the instructions to cause the second storage manager to receive the input from the user includes instructions to cause
the second storage manager to receive user selections of some of the list of content identifiers with the user interface,

wherein the user interface includes with table names and column or row names from the common database format, and
wherein the interface is configured to permit the user to select sets of information displayed via the user interface, and
to query the first and second storage manager databases without requiring the user to be able to program in a database language.

US Pat. No. 9,633,232

SYSTEM AND METHOD FOR ENCRYPTING SECONDARY COPIES OF DATA

Commvault Systems, Inc., ...

1. A system of re-encrypting data copied to one or more secondary storage devices comprising:
a storage manager comprising at least computer hardware configured to process information about a data storage operation associated
with copying data stored on one or more primary storage devices to one or more secondary devices;

the storage manager further configured to estimate a completion time required to encrypt and copy the data;
when the completion time exceeds a threshold, the storage manager is configured to determine a first subset of the data to
store as a non-encrypted first subset;

an encryption component comprising at least computer hardware configured to encrypt a second subset of the data to store as
an encrypted second subset, wherein the encryption component is configured to encrypt the second subset based on a first encryption
scheme; and

the encryption component further decrypts the encrypted second subset associated with the first encryption scheme and re-encrypts
at least a portion of the second subset with a second encryption scheme, wherein at least a portion of the non-encrypted first
subset remains non-encrypted.

US Pat. No. 9,619,339

SYSTEMS AND METHODS TO CONFIRM REPLICATION DATA ACCURACY FOR DATA BACKUP IN DATA STORAGE SYSTEMS

Commvault Systems, Inc., ...

1. A method of storing secondary copies of data comprising:
replicating source data stored in one or more primary storage devices in a native format to one or more replication storage
devices different than the one or more primary storage devices to generate replication data, the replication data stored in
the native format;

initiating a backup operation that stores a backup copy of the source data on one or more secondary storage devices, wherein
the one or more secondary storage devices are different than the one or more primary storage devices and the one or more replication
storage devices, and wherein the backup copy is stored in a backup format that is different than the native format;

automatically determining with computer hardware comprising one or more processors whether the replication data stored in
the one or more replication storage devices is an accurate replication of the source data by comparing at least a portion
of the replication data with at least a portion of the source data;

when the replication data is accurate, instructing a media agent to automatically copy with one or more processors the replication
data to the one or more secondary storage devices to create the backup copy from the replication data, wherein the media agent
converts the replication data in the native format to a backup copy in a backup format, and wherein the media agent associates
the backup copy data with the source data as if the backup had been performed on the source data;

when the replication data is inaccurate, not performing the backup of the replication data and identifying a replication data
backup failure; and

when configuration settings prevent backup of the source data, instructing the media agent to automatically copy with one
or more processors the source data to the one or more secondary storage devices to create the backup copy, based at least
in part on a number of times the replication data backup failure has occurred, and instructing the media agent to associate
the backup copy with the source data.

US Pat. No. 9,575,673

ACCESSING A FILE SYSTEM USING TIERED DEDUPLICATION

COMMVAULT SYSTEMS, INC., ...

10. A method for using deduplication in a storage management system to provide a virtual machine executing in the storage
management system with access to a file system, the method comprising:
executing a pseudo-file-system driver on a client computing device that hosts a data agent component of the storage management
system, wherein the data agent is associated with the virtual machine, which is installed on the client computing device;

exposing to the virtual machine, by the pseudo-file-system driver, a first mount point for the file system;
instantiating the file system based on the exposing of the first mount point, wherein the file system is stored to a primary
storage device associated with the client computing device;

configuring an association between the file system and a corresponding deduplication database component of the storage management
system; and

invoking, by the pseudo-file-system driver, at least one deduplication job that moves some data from the file system in the
primary storage device to a secondary storage device component of the storage management system, and stores the moved data
in deduplicated form thereto based at least in part on the deduplication database.

US Pat. No. 9,557,929

DATA RECOVERY OPERATIONS, SUCH AS RECOVERY FROM MODIFIED NETWORK DATA MANAGEMENT PROTOCOL DATA

Commvault Systems, Inc., ...

1. A data storage system for reverting data to a previous state using point-in-time data, the system comprising:
means for receiving a request from a user to revert data to an earlier state at a previous time using previously obtained
point-in-time data;

means for presenting the user with an option to take a snapshot of a current state of the data;
means for determining whether the user has requested that a snapshot of the current state of the data be taken;
means for taking a snapshot of the current state of the data, when the user has requested that a snapshot of the current state
of the data be taken; and,

means for reverting the data using the previously obtained point-in-time data.

US Pat. No. 9,495,382

SYSTEMS AND METHODS FOR PERFORMING DISCRETE DATA REPLICATION

Commvault Systems, Inc., ...

1. A method for replicating data in a computer network from a source storage device to a destination storage device, the method
comprising:
replicating at a first time source data by copying the source data to create replication data,
wherein the source data is stored on at least one source storage device associated with a source system, the source system
comprising one or more source computer devices, the source data comprising a plurality of source files generated by one or
more applications executing on the source system, and

wherein the replication data is stored on at least one destination storage device associated with a replication system comprising
one or more replication computer devices, wherein the one or more replication computer devices are different than the one
or more source computer devices, the replication data comprising a plurality of destination files corresponding to the plurality
of source files;

following the replicating, identifying, by the source system, changed source files by tracking at a logical file level which
of the plurality of source files changed between the first time and a second time after the first time, wherein said tracking
comprises maintaining a journal file on the source storage device with entries identifying the changed source files at the
logical file level;

providing from the source system to the replication system, the changed source files at the logical file level by mounting
the changed source files on the replication system wherein the replication system uses the mounting to obtain the logical
file level associated with the changed source files;

using the one or more replication computer devices associated with the replication system to identify, based on the changed
source files at the logical file level, previously replicated destination files that are related to the changed source files;

performing with one or more of the source computer devices associated with the source system, a source snapshot of the source
data to capture a point-in-time copy of the source data on a block-by-block basis at the second time;

accessing, with the one or more replication computer devices associated with the replication system, data blocks in the source
snapshot with the mounting;

comparing, with the one or more replication computer devices associated with the replication system, the data blocks in the
source snapshot with data blocks in the previously replicated destination files stored on the at least one destination storage
device on a block-by-block basis to identify changed blocks in the changed source files in the source data;

replicating, with the one or more replication computer devices associated with the replication system, the changed blocks
of the changed source files by determining with the one or more replication computer devices which copies of the changed data
blocks to replicate from the source system to the at least one destination storage device; and

not replicating unchanged blocks associated with the changed source files.

US Pat. No. 9,483,511

STUBBING SYSTEMS AND METHODS IN A DATA REPLICATION ENVIRONMENT

Commvault Systems, Inc., ...

1. A computer-implemented method comprising:
receiving, in response to a communication from a first computing device, a modification instruction to modify a first portion
of data at a second computing device, at least a portion of the first portion of data received from the first computing device
at a point in time prior to receiving the communication from the first computing device, the first portion of data including
a stub file;

determining, based at least in part on whether the stub file includes a tag value, whether the stub file is of a first type
of stub file or a second type of stub file, wherein the first type of stub file indicates that the stub file was received
with the first portion of data from the first computing device and wherein the second type of stub file indicates that the
stub file was created at the second computing device after the first portion of data was received from the first computing
device;

in response to determining that the stub file is of the second type of stub file:
retrieving a data block from a secondary storage of the second computing device;
replacing the stub file with the data block to obtain a restored first portion of data; and
modifying the restored first portion of data based on the modification instruction.

US Pat. No. 9,405,631

SYSTEM AND METHOD FOR PERFORMING AN IMAGE LEVEL SNAPSHOT AND FOR RESTORING PARTIAL VOLUME DATA

Commvault Systems, Inc., ...

1. A computing system that restores data to an information store, the method comprising:
an information store;
at least one storage manager in communication with the information store, the at least one storage manager comprising computer
hardware; the storage manager directs performance of a first snapshot of the information store at a first point in time, the
first snapshot comprising first data about at least one file existing at the first point in time;

at least one media agent in communication with the at least one storage manager, the at least one media stores an index of
the first data in at least one map, wherein the at least one map associates the first data with the first snapshot;

the storage manager directs performance of a second snapshot of the information store at a second point in time occurring
after the first point in time, and identifying changed data in the second snapshot that changed after the first point in time,
wherein the changed data comprises portions of the at least one file that changed since the first point in time;

the at least one media agent stores an index of the changed data in the at least one map, wherein the at least one map associates
the changed data with the second snapshot; and

the at least one media agent restores to the information store a copy of the at least one file existing at the second point
in time using the map in association with the first and second snapshots to restore at least a portion of the at least one
file existing at the first point in time and the changed data existing at the second point in time.

US Pat. No. 9,239,687

SYSTEMS AND METHODS FOR RETAINING AND USING DATA BLOCK SIGNATURES IN DATA PROTECTION OPERATIONS

CommVault Systems, Inc., ...

1. A method of performing a copy operation, the method comprising:
accessing with computer hardware a deduplication signature table containing a plurality of signatures corresponding to data
blocks stored in at least one first storage device;

using the deduplication signature table, performing, with computer hardware, a first deduplicated copy operation of a plurality
of files from at least one second storage device to the first storage device thereby creating a deduplicated copy of the plurality
of files in the first storage device; and

with computer hardware and as part of a second deduplicated copy operation in which at least a subset of the plurality of
data blocks which form the deduplicated copy are copied from the first storage device to at least one third storage device,
for each respective data block in the subset:

accessing from the first storage device a previously stored signature corresponding to the respective data block and which
is stored separately from the deduplication signature table, the previously stored signature included in a first signature/data
word of a plurality of signature/data words which is associated with the respective data block and is embedded in a file that
includes others of the plurality of signature/data words associated with other data blocks in the subset, wherein first signature/data
words of the plurality of signature/data words each include a respective signature and a respective actual data block copy
stored physically or logically contiguously with respect to one another, and wherein second signature/data words of the plurality
of signature/data words each include a respective signature and a respective reference to an actual data block copy stored
physically or logically contiguously with respect to one another;

transmitting the previously stored signature to the third storage device, wherein the previously stored signature is transmitted
to the third storage device without re-generating the value of the previously stored signature using the respective data block;

receiving a message indicating whether a copy of the respective data block is already stored on the third storage device;
and

if the message indicates that the respective data block is not already stored on the third storage device:
accessing the respective data block from the first storage device; and
transmitting the respective data block to the third storage device.

US Pat. No. 10,126,949

SHARED LIBRARY IN A DATA STORAGE SYSTEM

Commvault Systems, Inc., ...

1. A method of administering access to a tape data storage library that is shared amongst a plurality of data storage cells to manage copies of primary data, the method comprising:using one or more computing devices comprising computer hardware:
assigning, for each respective data storage cell of a plurality of data storage cells, a subset of a plurality of tapes in a tape data storage library for use by the respective data storage cell the tape data storage library residing in a secondary storage subsystem and including a plurality of tape drives and a plurality of tape slots configured to hold the plurality of tapes, wherein access to the tape data storage library is shared by the data storage cells and each of the data storage cells comprises one or more client computing devices residing in a primary storage subsystem;
receiving from a first data storage cell of the plurality of data storage cells a first tape drive lease request to lease one or more tape drives for accessing the subset of tapes assigned to the first data storage cell to perform a first storage operation, the first storage operation associated with moving data between the primary storage subsystem and the tape data storage library, the first tape drive lease request including priority information associated with the first tape drive lease request;
determining a first priority level of the first tape drive lease request based on a combination of data-storage-cell-specific priority based on a first type of data that the first data storage cell is configured to generate, and lease-request-specific priority based on (i) a type of the data to be moved between the primary storage subsystem and the tape data storage library using the one or more tape drives to be leased, and (ii) a type of the first storage operation to be performed using the one or more tape drives to be leased such that tape drive lease requests to lease tape drives for retrieving data from the tape data storage library are prioritized over tape drive lease requests to lease tape drives for writing data to the tape data storage library;
receiving from a second data storage cell of the plurality of data storage cells a second tape drive lease request to lease one or more tape drives for accessing the subset of tapes assigned to the second data storage cell to perform a second storage operation, the second storage operation associated with moving data between the primary storage subsystem and the tape data storage library, the second tape drive lease request including priority information associated with the second tape drive lease request;
determining a second priority level of the second tape drive lease request based on a combination of data-storage-cell-specific priority based on a second type of data that the second data storage cell is configured to generate, and lease-request-specific priority based on (i) a type of the data to be moved between the primary storage subsystem and the tape data storage library using the one or more tape drives to be leased, and (ii) a type of the second storage operation to be performed using the one or more tape drives to be leased such that tape drive lease requests to lease tape drives for retrieving data from the tape data storage library are prioritized over tape drive lease requests to lease tape drives for writing data to the tape data storage library, wherein the second type of data that the second data storage cell is configured to generate is different from the first type of data that the first data storage cell is configured to generate;
in response to determining that the first priority level is higher than the second priority level, placing the first and second tape drive lease requests in a queue such that the first tape drive lease request is ahead of the second tape drive lease request in the queue; and
granting a first lease of one or more tape drives of the plurality of tape drives to the first data storage cell for providing temporary access to the subset of tapes assigned to the first data storage cell, the first lease associated with a lease duration for which access to the one or more tape drives is to be granted to the first data storage cell under the first lease.

US Pat. No. 10,091,146

SYSTEM AND METHOD FOR MONITORING AND COPYING MULTIMEDIA MESSAGES TO STORAGE LOCATIONS IN COMPLIANCE WITH A POLICY

Commvault Systems, Inc., ...

1. A computer system comprising:a plurality of first computing devices comprising computer hardware and one or more first storage devices, wherein the plurality of first computing devices electronically send a plurality of messages to a plurality of destinations during one or more instant messaging sessions using peer-to-peer networks, wherein at least a portion of the plurality of messages comprise multimedia messages in different file formats;
a graphical user interface (GUI) configured to provide input functionality allowing a user to specify a compliance policy comprising criteria for identifying multimedia messages of interest among the plurality of messages communicated between the first computing devices during one or more instant messaging sessions, wherein the compliance policy further identifies designated storage for storing copies of the messages of interest, and wherein the designated storage is different than storage associated with the plurality of destinations, wherein the compliance policy further defines a compliance file format that is different than the plurality of multimedia file formats; and
converting the compliance policy into recognition routines that are deployed in a plurality of compliance monitoring agents within the network, wherein the plurality of compliance monitoring agents within the network monitor the plurality of messages, the compliance monitoring agents comprising at least a second computing device comprising computer hardware that is in communication with the first computing devices, the plurality of compliance monitoring agents configured to:
monitor the plurality of messages within the instant messaging sessions using the peer-to-peer networks, with a session initiation protocol (SIP) comprising IGMP or DCHP snooping of data packets;
identify the multimedia messages in the plurality of messages monitored within the instant messaging sessions;
for at least a first multimedia message, where the first multimedia message comprises at least an audio data portion, automatically convert the audio data portion to converted text with speech recognition software;
compare the converted text to selection criteria to identify the copy of the first multimedia message as one of one or more identified messages of interest within the instant messaging sessions;
block the first multimedia message that meets the selection criteria from being sent to an intended destination; and
direct storage of the copy of the first multimedia message that meets the selection criteria by automatically directing conversion of the copy of the first multimedia message into the compliance file format to reduce the number of different file formats stored in the designated storage, and store the converted copies of the first multimedia message in the designated storage specified in the compliance policy.

US Pat. No. 10,075,527

INFORMATION MANAGEMENT OF DATA ASSOCIATED WITH MULTIPLE CLOUD SERVICES

CommVault Systems, Inc., ...

1. A non-transitory computer-readable medium carrying instructions for managing a file associated with social networking services, comprising:providing a user interface to enable a user to identify or access multiple accounts provided by different social networking services,
wherein the social networking services provide access to a file associated with the user;
creating a copy of the file for primary storage;
receiving a set of criteria and rules for an information management policy for the multiple accounts via the user interface,
wherein the information management policy identifies at least one type of file and a data storage policy for managing copies of that type of file; and
storing the copy of the file in accordance with the information management policy in secondary storage.

US Pat. No. 10,073,650

USING AN ENHANCED DATA AGENT TO RESTORE BACKED UP DATA ACROSS AUTONOMOUS STORAGE MANAGEMENT SYSTEMS

COMMVAULT SYSTEMS, INC., ...

1. A system comprising:a first storage manager for managing storage operations in a first storage management system;
a second storage manager for managing storage operations in a second storage management system, wherein the first storage management system and the second storage management system are autonomous from each other;
a secondary copy of data generated in the first storage management system;
a first computing device comprising a media agent that is a component of the first storage management system,
wherein the media agent is associated with the secondary copy of data;
a second computing device comprising a data agent and a registry key;
wherein the registry key is received from the second storage manager, and
wherein the registry key associates the data agent with the first storage manager for restore operations originating in the first storage management system;
wherein the data agent is configured to operate in both:
(a) a full-function client configuration in the second storage management system for participating in one or more storage operations for data generated by the second computing device which are managed by the second storage manager, and
(b) a restore-only client configuration in the first storage management system, based at least in part on the registry key that associates the data agent with the first storage manager,
wherein in the restore-only client configuration the data agent is configured to participate only in restore operations for secondary copies of data stored in the first storage management system which restore operations are managed by the first storage manager,
including a restore operation in which the media agent and the data agent restore the secondary copy of data from the first storage management system to at least one of the second computing device and a second data storage device in communication with the second computing device,
wherein the restored secondary copy of data is accessible to the second computing device as primary data.

US Pat. No. 9,983,936

VIRTUAL MACHINE CHANGE BLOCK TRACKING

Commvault Systems, Inc., ...

1. A system configured to backup a virtual machine, the system comprising:a client device comprising computer hardware, wherein the client device includes:
a virtual machine (VM) executed by a hypervisor, wherein the hypervisor comprises an I/O stack, wherein the VM comprises a virtual hard disk file and a change block bitmap file, and wherein the virtual hard disk file stores data associated with a virtual hard disk;
a driver module in the I/O stack of the hypervisor and under control of the hypervisor, wherein the driver module is configured to:
receive an instruction to track changes to the virtual hard disk;
in response to the instruction to track changes to the virtual hard disk,
generate an indication of a time when tracking of changes to the virtual hard disk began,
intercept a first write operation generated by the VM to store data in a first sector in response to the I/O stack receiving a request sent by the VM to perform a translation between a virtual location in the virtual hard disk indicated by the first write operation and a physical location in a local hard disk, wherein the request to perform the translation is sent by the VM to the I/O stack to determine the physical location in the local hard disk to store data corresponding to the first write operation,
determine an identity of the first sector based on the intercepted write operation,
determine an entry in the change block bitmap file that corresponds with the first sector, and
modify the entry in the change block bitmap file to indicate that data in the first sector has changed; and
a data agent configured to provide the indication of the time when tracking of changes to the virtual hard disk began to the driver module to obtain the change block bitmap file, the data agent further configured to gather data for use in performance of an incremental backup of the VM based on the change block bitmap file in response to an instruction from a storage manager, wherein the incremental backup comprises the data in the first sector.

US Pat. No. 9,870,164

RESTORE OF SECONDARY DATA USING THREAD POOLING

Commvault Systems, Inc., ...

1. A system for restoring data from secondary storage to primary storage, the system comprising:
a secondary storage controller computer comprising computer hardware and in communication with one or more secondary storage
devices in a secondary storage subsystem, the secondary storage controller computer configured to:

maintain a look-ahead thread pool having a number of look-ahead restore threads executing on one or more processors of the
secondary storage controller computer;

receive a restore request to restore a secondary copy of primary data from the one or more secondary storage devices in the
secondary storage subsystem to one or more primary storage devices in a primary storage subsystem;

select at least a first look-ahead restore thread in the look-ahead thread pool to use to process the restore request;
retrieve the secondary copy from the one or more secondary storage devices, by causing the first look-ahead thread in the
look-ahead thread pool to (i) process a data structure that includes a number of data blocks arranged in a first order within
the secondary copy, and (ii) generate a second order for reading the number of data blocks that is different from the first
order;

read the number of data blocks from the one or more secondary storage devices according to the second order;
forward the retrieved secondary copy to the primary storage subsystem for storage on the one or more primary storage devices;
and

adjust, based on one or more performance metrics associated with the first look-ahead restore thread of the look-ahead thread
pool, the number of look-ahead restore threads in the look-ahead thread pool.

US Pat. No. 9,740,702

SYSTEMS AND METHODS TO IDENTIFY UNPROTECTED VIRTUAL MACHINES

Commvault Systems, Inc., ...

1. A method to identify virtual machine stored storage policies in a data management system, the method comprising:
monitoring a first plurality of client devices that are physical machines that generate primary data stored on one or more
primary storage devices;

monitoring a second plurality of client devices that are virtual machines that generate primary data stored on one or more
primary storage devices;

directing one or more media agents to perform at least one data protection operation that copies the primary data stored on
one or more primary storage devices to create secondary data stored on one or more secondary storage devices, the at least
one data protection operation converts the primary data from a native format to secondary data in a backup format wherein
the backup format is different than the native format;

determining which of the first and second plurality of client devices are virtual machines, by automatically requesting, with
one or more computer processors comprising computer hardware, a first list of virtual machines in a data management system
from virtual machine management software;

receiving the first list of the virtual machines in the data management system in response to the request;
during the at least one data protection operation, automatically retrieving, with one or more computer processors, a second
list of virtual machines in the data management system from a storage manager, each virtual machine on the second list associated
with a stored storage policy of a plurality of stored storage policies contained in a management database, wherein each stored
storage policy includes a data structure specifying at least a type of data protection operation;

automatically comparing, with one or more computer processors, the first list with the second list;
automatically identifying, based at least in part on the comparison, and with one or more computer processors, one or more
unprotected virtual machines that are not associated with any stored storage policy;

automatically querying, with one or more computer processors, the unprotected virtual machines to obtain characteristics associated
with the unprotected virtual machines;

receiving from the unprotected virtual machines, in response to said querying, characteristics by which to associate the at
least one virtual machine with a stored storage policy, wherein the characteristics comprise: a cluster of computing entities
to which each of the unprotected virtual machines belong, a location of a datastore associated with each of the unprotected
virtual machines, a department to which each of the unprotected virtual machines is assigned, a name of each of the unprotected
virtual machines, a quest host name associated with each of the unprotected virtual machines, a resource pool associated with
each of the unprotected virtual machines and a type of virtual machine manager associated with each of the unprotected virtual
machines;

automatically comparing, with one or more computer processors, the received characteristics of the unprotected virtual machines
with pre-defined backup categories associated with the criteria for the different backup policies, wherein each of the pre-defined
categories are associated with a stored storage policy of the plurality of stored storage policies;

categorizing one or more matching unprotected virtual machines when the received characteristics match the criteria of the
cluster of computing entities, the location of the datastore, the department to which the unprotected virtual machine is assigned,
the name of the unprotected virtual machine, the quest host name, the resource pool, and the type of virtual machine manager
associated with the stored storage policy; automatically associating with one or more computer processors, the stored storage
policy of one of the pre-defined backup categories with the one or more matching unprotected virtual machines; and directing
the one or media agents during the at least one data protection operation to copy the primary data generated by the matching
unprotected virtual machines in the native format to the one or more secondary storage devices in the backup format based
on the associated stored storage policy.

US Pat. No. 9,753,812

GENERATING MAPPING INFORMATION FOR SINGLE SNAPSHOT FOR MULTIPLE APPLICATIONS

CommVault Systems, Inc., ...

1. An information management system configured to generate a snapshot of data relating to a plurality of applications, the
system comprising:
a primary storage device comprising a logical volume;
a client computing device configured to execute a first data agent, the first data agent being associated with a first application
executing on the client computing device, the client computing device further configured to execute a second data agent, the
second data agent being associated with a second application executing on the client computing device, data generated by the
first application and data generated by the second application being stored in the logical volume in the primary storage device;
and

a second computing device configured to execute a snapshot manager, the snapshot manager configured to:
communicate with the first data agent to check whether the first application is in a consistent state and communicate with
the second data agent to check whether the second application is in a consistent state; and

in response to receiving a first notification from the first data agent that the first application is in a consistent state
and a second notification from the second data agent that the second application is in a consistent state:

obtain a snapshot of the logical volume;
copy the snapshot of the logical volume to secondary storage using one or more media agents;
receive first metadata from the first data agent via the client computing device, the first metadata relating to how a first
directory that corresponds with the first application is organized, wherein the first directory is in a file system associated
with the logical volume;

receive second metadata from the second data agent via the client computing device, the second metadata relating to how a
second directory that corresponds with the second application is organized, wherein the second directory is in the file system
associated with the logical volume;

determine a first location within the snapshot that corresponds with how the first directory that corresponds with the first
application is organized as indicated in the first metadata;

determine a second location within the snapshot that corresponds with how the second directory that corresponds with the second
application is organized as indicated in the second metadata;

generate first mapping information that identifies the first location within the snapshot as a location where the data generated
by the first application is stored; and

generate second mapping information that identifies the second location within the snapshot as a location where the data generated
by the second application is stored.

US Pat. No. 9,720,849

TOKEN-BASED ENCRYPTION RULE GENERATION PROCESS

Commvault Systems, Inc., ...

1. A data storage system comprising:
a computing system comprising one or more hardware processors programmed to:
access a set of data tokens derived from a plurality of files comprising a set of training files, at least some of the set
of data tokens comprising content designated as sensitive information, each of the data tokens comprising a portion of content
of at least one file from the plurality of files;

generate a prospective encryption rule based at least in part on an aggregated set of data tokens, the aggregated set of data
tokens including data tokens that appear in more than one file from the plurality of files;

perform the prospective encryption rule on the plurality of files;
determine a number of files from the plurality of files identified for encryption by performance of the prospective encryption
rule;

responsive, at least in part, to the number of files identified for encryption satisfying a threshold number of files, add
the prospective encryption rule to a set of available encryption rules; and

responsive, at least in part, to the number of files identified for encryption not satisfying the threshold number of files,
iteratively modify the prospective encryption rule until the threshold number of files of the plurality of files are identified
for encryption by performance of the modified prospective encryption rule.

US Pat. No. 9,633,026

SYSTEMS AND METHODS FOR PROTECTING EMAIL DATA

COMMVAULT SYSTEMS, INC., ...

1. A method of protecting email data using email protection rules that are distributed amongst multiple computing devices,
the method comprising:
by a first computing device, accessing one or more email protection rules, the email protection rules comprising: (i) a first
portion including information usable to identify emails to forward to a second computing device, and (ii) a second portion
including information usable to determine which secondary storage controller computer of a plurality of secondary storage
controller computers to use in secondary copy operations associated with emails forwarded to the second computing device;

based at least partly on the first portion of the one or more email protection rules, instructing an email server application
to route emails processed by the email server application to the second computing device in addition to routing the emails
to intended recipients of the emails, wherein the second computing device is separate from a computing device on which the
email server application resides, and wherein the one or more email protection rules identify a group of one or more email
addresses and specify that the email server application is only to route emails to the second computing device for which at
least one of the intended recipients corresponds to one of the one or more email addresses in the group;

by the second computing device:
receiving an email from the email server application, at least one intended recipient of the email corresponding to one of
the one or more email addresses of the group;

accessing the second portion of the one or more email protection rules:
reviewing the second portion of the one or more email protection rules; and
based on the review of the second portion of the one or more email protection rules, determining a target secondary storage
controller computer of the plurality of secondary storage controller computers to which to route the email;

routing the email from the second computing device to the target secondary storage controller computer; and
storing the email in secondary storage to create a secondary copy of the email.

US Pat. No. 9,633,064

SYSTEMS AND METHODS OF UNIFIED RECONSTRUCTION IN STORAGE SYSTEMS

Commvault Systems, Inc., ...

1. A system for maintaining metadata in an electronic storage network comprising:
primary data stored on at least a first storage device;
at least a first and second media agents that create at least secondary copies of first and second portions of the primary
data on at least a second storage device, the first media agent creates a first set of metadata that is stored in a first
metadata storage device, and the second media agent creates a second set of metadata that is stored in a second metadata storage
device;

a centralized metadata storage device that stores at least a copy of the first set of metadata and a copy of the second set
of metadata, wherein the centralized metadata storage device is different than the first and second metadata storage devices;
and

at least one storage management component that:
associates the first media agent with the copy of the first set of metadata stored in the centralized metadata storage device;
associates the second media agent with the copy of the second set of metadata stored in the centralized metadata storage device;
and

reconstructs a loss of the portion of the first set of metadata on the first metadata storage device using the copy of the
first set of metadata stored on the centralized metadata storage device based on the association of the copy of the first
set of metadata with the first media agent.

US Pat. No. 9,590,886

SYSTEMS AND METHODS FOR DIFFERENTIAL HEALTH CHECKING OF AN INFORMATION MANAGEMENT SYSTEM

COMMVAULT SYSTEMS, INC., ...

1. A method for differential health-checking of storage operations before and after a triggering event defined as a restore
operation, the method comprising:
receiving, by a differential health-check module, a request for a differential health-check report for a timeframe comprising
storage operations managed by a storage manager in an information management system,

wherein the timeframe comprises a triggering event defined as a restore operation that comprises recovering data from a secondary
copy stored in the information management system using a first storage component of the information management system;

identifying, by the differential health-check module, a first time period that occurred before the triggering event defined
as the restore operation,

wherein the first storage component participated in one or more of the storage operations managed by the storage manager during
the first time period, and wherein the first storage component is one of:

(a) a data agent that arranged primary data into one or more secondary copy formats different from a primary data format and
transmitted the arranged data to a media agent, and

(b) the media agent that created one or more secondary copies based on the arranged data received from the data agent and
stored the one or more secondary copies to an associated secondary storage device;

identifying, by the differential health-check module, a second time period that occurred after completion of the triggering
event defined as the restore operation;

generating, by the differential health-check module, one or more queries for the storage manager regarding the first storage
component operating during the first time period and the second time period;

evaluating, by the differential health-check module, a first value of a first performance metric in the first time period,
wherein the first performance metric measures at least one characteristic of storage operations in which the first storage
component participated before and after the triggering event defined as the restore operation;

evaluating, by the differential health-check module, a second value of the first performance metric in the second time period;
generating, by the differential health-check module, an indication to a user of a comparison of the second value of the first
performance metric to the first value of the first performance metric,

wherein the comparison includes storage operations in which the first storage component participated during the first time
period and the second time period but does not include the triggering event defined as the restore operation.

US Pat. No. 9,588,972

EFFICIENT DATA MANAGEMENT IMPROVEMENTS, SUCH AS DOCKING LIMITED-FEATURE DATA MANAGEMENT MODULES TO A FULL-FEATURED DATA MANAGEMENT SYSTEM

Commvault Systems, Inc., ...

1. At least one computer-readable medium, excluding transitory signals, which when executed by at least one data processor,
performs a method for detecting and archiving idle virtual machines running on at least one computing device having primary
data storage, to thereby reclaim computing resources, the method comprising:
automatically determining that a virtual machine has been idle for at least a first period of time,
wherein the virtual machine is stored on the primary data storage, and
wherein the virtual machine is associated with at least one virtual machine data object;
in response to the determining that a virtual machine has been unused for at least a first period of time, freeing up the
computing resources associated with the virtual machine;

after at least a second period of time, copying the at least one virtual machine data object to a secondary storage device,
wherein copying the at least one virtual machine data object to the secondary storage device includes replacing the at least
one virtual machine data object in the primary data storage with a stub referring to a secondary copy of the at least one
virtual machine data object on the secondary storage device.

US Pat. No. 9,444,811

USING AN ENHANCED DATA AGENT TO RESTORE BACKED UP DATA ACROSS AUTONOMOUS STORAGE MANAGEMENT SYSTEMS

Commvault Systems, Inc., ...

1. A system for restoring a secondary copy of data generated in a local storage management system to a specially configured
client in a remote storage management system, the system comprising:
a first computing device comprising one or more hardware processors,
wherein the first computing device is a component of the remote storage management system and is configured to execute a data
agent;

a data storage device which is associated with the first computing device and which is also a component of the remote storage
management system;

wherein the data agent is configured to perform as both:
(i) a restore-only client of the local storage management system managed by a local storage manager,
based on an authentication certificate and a registry key for communicating with the local storage manager,
wherein the registry key associates the data agent and the local storage manager,
wherein the authentication certificate and registry key are received from a remote storage manager, and
wherein the restore-only client is a destination for restored data from the local storage management system but is not a source
of data for storage management operations in the local storage management system, and

(ii) a full-function client of the remote storage management system managed by the remote storage manager,
wherein the full-function client participates in storage management operations managed by the remote storage manager in the
remote storage management system;

wherein, as a restore-only client of the local storage management system, the data agent is configured to participate in a
restore operation managed by the local storage manager,

wherein in the restore operation a secondary copy of data generated in the local storage management system is restored to
the data storage device which is associated with the first computing device in the remote storage management system;

a second computing device comprising one or more hardware processors,
wherein the second computing device is configured to execute a media agent and is a component of the local storage management
system that generated the secondary copy; and

wherein the media agent is configured to transmit the secondary copy from the local storage management system to the data
agent performing as a restore-only client of the local storage management system.

US Pat. No. 9,996,534

EFFICIENTLY RESTORING EXECUTION OF A BACKED UP VIRTUAL MACHINE BASED ON COORDINATION WITH VIRTUAL-MACHINE-FILE-RELOCATION OPERATIONS

COMMVAULT SYSTEMS, INC., ...

1. A system for restoring a virtual machine to execute on a host computing device, based on coordination with a virtual-machine-file-relocation operation, the system comprising:the host computing device in communication with a first data storage device;
wherein the host computing device is configured to concurrently execute the virtual machine and the virtual-machine-file-relocation operation,
wherein the virtual-machine-file-relocation operation comprises a logical transfer to the first data storage device, based on a relocation sequence, of a copy of data associated with the virtual machine, wherein the copy of data comprises at least one of a configuration file and a virtual disk and is stored in a second data storage device;
a second computing device in communication with the host computing device,
wherein the second computing device comprises a media agent and a shared file system mounted to the host computing device, and
wherein the shared file system is configured as a recovery point for the virtual machine and as a source of data for the virtual-machine-file-relocation operation;
a third computing device that comprises a data agent;
wherein the data agent is configured to:
(a) instruct the media agent to copy from the copy of data associated with the virtual machine to the second computing device, a first set of data blocks based on a profile of the virtual machine,
(b) instruct the media agent to copy from the copy of data associated with the virtual machine to the second computing device, a second set of data blocks based on the relocation sequence of the virtual-machine-file-relocation operation, and
(c) instruct the media agent to respond to a read request for a data block issued by the virtual machine on the host computing device by:
(i) if the requested data block is not found on the second computing device, copying the requested data block from the copy of data from the second data storage device to the second computing device, and
(ii) transmitting the requested data block from the second computing device in response to the read request; and
wherein each of the computing devices comprises respective one or more hardware processors and computer-readable memory.

US Pat. No. 9,996,287

VIRTUAL MACHINE CHANGE BLOCK TRACKING

Commvault Systems, Inc., ...

1. A method of backing up a virtual machine, the method comprising:receiving an instruction to track changes to a virtual hard disk;
generating a token in response to receiving the instruction to track changes to the virtual hard disk;
intercepting, by a first driver under the control of a first hypervisor which executes on a first client computing device, a first write operation generated by a virtual machine (VM) to store data in a first sector of the virtual hard disk, wherein the VM is executed by the first hypervisor, wherein the VM comprises a virtual hard disk file and a change block bitmap file, and wherein the virtual hard disk file stores data associated with the virtual hard disk;
with the first client computing device, accessing the change block bitmap file by providing the token to the first driver and modifying a first entry in the change block bitmap file to indicate that data in the first sector has changed;
migrating the VM to a second hypervisor which executes on a second client computing device, such that the VM is executed by the second hypervisor following said migrating;
intercepting by a second driver under the control of the second hypervisor, a second write operation generated by the VM to store data in a second sector of the virtual hard disk; and
with the second client computing device,
accessing the change block bitmap file and modifying a second entry in the change block bitmap file to indicate that data in the second sector has changed,
receiving an instruction to begin an incremental backup of the VM, and
as part of the incremental backup of the VM, reviewing the first and second entries in the change block bitmap file to identify the first and second sectors as sectors to access in gathering data for use in performance of the incremental backup.

US Pat. No. 9,959,333

UNIFIED ACCESS TO PERSONAL DATA

Commvault Systems, Inc., ...

1. At least one computer readable medium, excluding transitory signals, and carrying instructions, which when executed by at least one data processor, performs a method for providing access to data, the method comprising:associating multiple computing devices with a user of an information management system,
wherein at least one of the multiple computing devices is a mobile device having wireless communication capabilities;
assigning information management policies to data from the multiple computing devices;
receiving multiple data objects from the multiple computing devices;
analyzing each data object to generate an identifier for each data object;
generating at least one preview version of each collected data object,
wherein the preview version is based at least partially on the capabilities of the computing device that will display the preview version to the user; and
providing the at least one preview version of a collected data object and the identifier of the collected data object to at least one of the multiple computing devices associated with the user.

US Pat. No. 9,928,001

EFFICIENTLY RESTORING EXECUTION OF A BACKED UP VIRTUAL MACHINE BASED ON COORDINATION WITH VIRTUAL-MACHINE-FILE-RELOCATION OPERATIONS

COMMVAULT SYSTEMS, INC., ...

1. A method executed by software instructions in one or more hardware processors for restoring execution of a virtual machine on a host computing device in a storage management system, based on coordination with a virtual-machine-file-relocation operation, the method comprising:prior to execution of the virtual machine by the host computing, device, which comprises at least one hardware processor,
determining, by a media agent component of the storage management system, based on a profile of the virtual machine, a first set of data blocks to be copied from a backup copy of data associated with the virtual machine,
wherein the media agent executes on a secondary storage computing device comprising at least hardware processor,
wherein the backup copy comprises at least one of a configuration file and a virtual disk associated with the virtual machine, and
wherein the backup copy is stored on a secondary storage device in communication with the secondary storage computing device;
copying the first set of data blocks, by the media agent, from the backup copy to an associated read-cache on the secondary storage computing device;
launching execution of the virtual machine on the host computing device, based on the first set of data blocks,
wherein the media agent serves the first set of data blocks from the read-cache; and
copying a second set of data blocks, by the media agent, from the backup copy to the read-cache,
wherein the second set of data blocks is based on a relocation sequence of the virtual-machine-file-relocation operation, and
wherein the virtual-machine-file-relocation operation comprises a logical transfer, according to the relocation sequence, of the backup copy to a primary storage device that is in communication with the host computing device.

US Pat. No. 9,846,620

TABLE LEVEL DATABASE RESTORE IN A DATA STORAGE SYSTEM

CommVault Systems, Inc., ...

1. A method of restoring a database table from secondary storage in a data storage system, comprising:
using one or more computing devices comprising computer hardware:
providing a user interface on a display device;
displaying a list of a plurality of database tables associated with a database application in the user interface, data associated
with the plurality of database tables being stored in a secondary storage subsystem as a part of a secondary copy of data
associated with the database application, the database application installed on one or more client computing devices comprising
computer hardware;

receiving an indication of a first table from the list of the plurality of database tables to restore;
accessing a first table metadata index stored separately from the secondary copy of the data associated with the database
application in response to receiving the indication of the first table, wherein the first table metadata index is specific
to the first table; and

restoring the first table and a second table from the list of the plurality of database tables that includes a value referenced
by a record in the first table from the secondary storage subsystem to a primary storage subsystem using the first table metadata
index without restoring all of the secondary copy of the data associated with the database application,

wherein the first table metadata index comprises information for restoring the first table and the second table that includes
the value referenced by the record in the first table, the first table metadata index comprising a location of the first table
in the secondary copy, and a location of the second table that includes the value referenced by the record in the first table
in the secondary copy or information for obtaining the location of the second table that includes the value referenced by
the record in the first table in the secondary copy, wherein the first table metadata index was created during a secondary
storage operation that created the secondary copy of the data associated with the database application.

US Pat. No. 9,710,253

MANAGING A SOFTWARE-PATCH SUBMISSION QUEUE

COMMVAULT SYSTEMS, INC., ...

4. A computer-implemented method for managing software patch submissions for integration into a working build, the method
comprising executing on a first computing device the steps of:
receiving, by the first computing device, a plurality of software patches from one or more second computing devices,
wherein each software patch comprises one or more executable software files and is submitted for integration into a first
set of executable software files that collectively defines a working build;

queueing, by the first computing device, the plurality of submitted software patches into a queue;
assigning, by the first computing device, to each software patch in the queue, a respective priority score based on at least
one of:

(a) a geographical location where the respective software patch was submitted to the queue for integration into the working
build,

(b) a time of day at a geographical location where the respective software patch was submitted to the queue for integration
into the working build,

(c) an indication that the respective software patch fixes a problem of an earlier software patch that failed integration
into the working build,

(d) an indication that the respective software patch previously had its priority score lowered due to a failed dependency
on an antecedent software patch and which dependency is currently satisfied,

(e) an indication that the respective software patch was successfully tested with one or more customers before being submitted
to the queue for integration into the working build,

(f) whether the respective software patch was submitted to the queue after a predefined deadline, and
(g) whether the respective software patch was submitted by a user who has at least one other software patch assigned to a
failed-patch pool;

selecting, by the first computing device, a first software patch from the queue as a next software patch to be integrated
into the working build,

wherein the first software patch has a highest priority score among the software patches in the queue, and
wherein another software patch arrived at the queue before the first software patch;
integrating the first software patch into the working build, resulting in an updated working build that comprises a functionality
of the first software patch; and

wherein the respective priority score of a given software patch in the queue is:
(a) raised on the indication that the given software patch fixes a problem of an earlier software patch that failed integration
into the working build,

(b) raised on the indication that the given software patch previously had its priority score lowered due to a failed dependency
on an antecedent software patch, and

(c) raised on the indication that the given software patch was successfully tested with one or more customers before being
submitted to the queue.

US Pat. No. 9,659,076

SYSTEMS AND METHODS FOR DATABASE ARCHIVING

COMMVAULT SYSTEMS, INC., ...

1. A method of archiving database data of a first database application in a networked data storage system, the method comprising:
with a first data agent separate from the first database application and executing on a first computing device comprising
computer hardware:

receiving instructions to archive a first subset of data in the first database, the first database organized as a plurality
of tables and stored in one or more first storage devices residing in a primary storage subsystem together with the first
computing device, the first subset of data contained in one or more first tables of the plurality of tables, the first database
generated by a first database application residing on the first computing device, wherein the primary storage subsystem stores
an aggregated group of data of the first database designated for archiving prior to said receiving instructions to archive
the first subset of data, the aggregated group of data being separate from the first database;

identifying a second subset of data in the first database, the second subset referenced by the first subset and contained
in one or more second tables of the plurality of tables;

obtaining the first and second subsets of data from the first database;
adding the first and second subsets to the aggregated group of data of the first database, the aggregated group of data including
data accumulated from a plurality of prior archiving requests such that archived data can be copied from the primary storage
subsystem to a secondary storage subsystem more efficiently and with less storage operations than in a piecemeal manner;

deleting at least the first and second subsets of data from the first database; and
subsequent to said adding, determining that the aggregated group of data designated for archiving, including the first and
second subsets, should be copied to one or more secondary storage devices in the secondary storage subsystem; and

with a secondary storage controller computer, copying the aggregated group of data from the primary storage subsystem to the
one or more secondary storage devices, and

wherein the first subset includes at least a first data item and the second subset includes at least one data item referenced
by the first data item.