# US 12,181,976 B2 · Automatically determining optimal storage medium based on source data characteristics

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

- Number: US 12,181,976 B2
- Document ID: US12181976B2
- Status: Granted
- Kind: B2
- Application number: 17/570,875
- Filed: 2022-01-07
- Published: 2022-06-16
- Granted: 2024-12-31
- Earliest claimed: 2019-07-18
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Adam Brenner; Arun Murti; Mark D. Malamut; Joey C. Lei
- Web page: https://patentgrep.com/patent/US12181976B2

## CPC

- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 11/1451: {by selection of backup contents}
- G06F 3/0649: {Lifecycle management}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1458: {Management of the backup or restore process}
- G06F 16/2246: {Trees, e.g. B+trees}
- G06F 16/285: {Clustering or classification}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

One example method includes defining object groups by classifying each object in a backup saveset based on respective object types of the objects such that all objects in an object group are the same object type, assigning a different respective storage media type to each of the object groups, storing each object group at a respective storage target, representing each object group with a respective Merkle tree that includes a base hash, and mapping each base hash to the storage target where the object group associated with the Merkle tree that includes the base hash is stored.

## Claims

### Claim 1

A method, comprising:
defining object groups by classifying each object in a backup saveset based on compressibility and dedupability of the objects such that all objects in an object group are the same compressibility and dedupability;
assigning a different respective storage media type to each of the object groups;
storing each object group at a respective storage media type, wherein one storage media type for one object group is different from another storage media type for another object group, which is different from the one object group;
hashing each object in a respective object group to generate a base hash;
generating a Merkle tree of the respective object group based on base hashes of every object in the respective object group; and
mapping each base hash of the Merkle tree to a corresponding object of the respective object group associated with the Merkle tree that includes the base hash, wherein the corresponding object is stored in the respective storage media type.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein a Merkle tree is updated automatically when there is a change to an object that is represented in that Merkle tree.

### Claim 3 (depends on 1)

The method as recited in claim 1, wherein each of the Merkle trees is represented in a top-level Merkel tree that includes a root hash.

### Claim 4 (depends on 3)

The method as recited in claim 3, wherein the top-level Merkle tree is updated automatically when there is a change to one of the Merkle trees.

### Claim 5 (depends on 1)

The method as recited in claim 1, wherein the base hashes are mapped to the respective storage media types within a bitmap of a backup catalog.

### Claim 6 (depends on 1)

The method as recited in claim 1, wherein the method is performed automatically by a backup application, without requiring a user or other entity to classify the objects, or to assign storage media types to the objects.

### Claim 7 (depends on 1)

The method as recited in claim 1, wherein each leaf node in each Merkle tree is binary-encoded data that represents metadata for one of the objects that is represented in that Merkle tree.

### Claim 8 (depends on 1)

The method as recited in claim 1, wherein each Merkle tree comprises a hash for each object that is represented in that Merkle tree, and each hash is a hash of a combination of: one of the objects, and metadata related to that object.

### Claim 9 (depends on 1)

The method as recited in claim 1, wherein the base hash represents all the objects represented in the Merkle tree to which the base hash corresponds.

### Claim 10 (depends on 1)

The method as recited in claim 1, wherein a backup application accesses one of the Merkle trees when a change occurs that involves an object represented in that Merkle tree.

### Claim 11

A non-transitory storage medium having stored therein instructions that are executable by one or more hardware processors to perform operations comprising:
defining object groups by classifying each object in a backup saveset based on respective compressibility and dedupability of the objects such that all objects in an object group are the same compressibility and dedupability;
assigning a different respective storage media type to each of the object groups;
storing each object group at a respective storage media type, wherein one storage media type for one object group is different from another storage media type for another object group, which is different from the one object group;
hashing each object in a respective object group to generate a base hash;
generating a Merkle tree of the respective object group based on base hashes of every object in the respective object group; and
mapping each base hash of the Merkle tree to a corresponding object of the respective object group associated with the Merkle tree that includes the base hash, wherein the corresponding object is stored in the respective storage media type.

### Claim 12 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein a Merkle tree is updated automatically when there is a change to an object that is represented in that Merkle tree.

### Claim 13 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein each of the Merkle trees is represented in a top-level Merkel tree that includes a root hash.

### Claim 14 (depends on 13)

The non-transitory storage medium as recited in claim 13, wherein the top-level Merkle tree is updated automatically when there is a change to one of the Merkle trees.

### Claim 15 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein the base hashes are mapped to the respective storage media types within a bitmap of a backup catalog.

### Claim 16 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein the non-transitory storage medium is performed automatically by a backup application, without requiring a user or other entity to classify the objects, or to assign storage media types to the objects.

### Claim 17 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein each node in each Merkle tree is binary-encoded data that represents metadata for one of the objects that is represented in that Merkle tree.

### Claim 18 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein each Merkle tree comprises a hash for each object that is represented in that Merkle tree, and each hash is a hash of a combination of: one of the objects, and metadata related to that object.

### Claim 19 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein the base hash represents all the objects represented in the Merkle tree to which the base hash corresponds.

### Claim 20 (depends on 11)

The non-transitory storage medium as recited in claim 11, wherein a backup application accesses one of the Merkle trees when a change occurs that involves an object represented in that Merkle tree.
