# US 12,602,364 B2 · Scalable object storage

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

- Number: US 12,602,364 B2
- Document ID: US12602364B2
- Status: Granted
- Kind: B2
- Application number: 16/824,105
- Filed: 2020-03-19
- Published: 2021-09-23
- Granted: 2026-04-14
- Earliest claimed: 2020-03-19
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Huamin Chen; Kefu Chai
- Web page: https://patentgrep.com/patent/US12602364B2

## CPC

- G06F 16/2255: {Hash tables}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 16/2219: {Large Object storage; Management thereof}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

According to one example, a method includes receiving from a client device, a data object for storage within an object storage system, performing a plurality of hashes on the data object tenant profile data associated with the data object to determine one of a plurality of object storage devices to which to store the data object, and autoscaling the object storage device based on active compute jobs associated with data objects stored on the object storage device.

## Claims

### Claim 1

A method comprising:
receiving from a client device, a data object for storage within an object storage system, the data object comprising data and metadata associated with the data;
performing a first hash on the data of the data object;
determining, based on the first hash, a placement group for the data object, the placement group being associated with a plurality of object storage devices comprising a subset of total available object storage devices within the object storage system;
performing at least one subsequent hash on tenant profile data of the metadata associated with the data;
selecting, based on the at least one subsequent hash, between two or more object storage devices of the plurality of object storage devices to determine a first object storage device to store the data object, the first object storage device being one of the plurality of object storage devices in the placement group;
storing the data object on the first object storage device;
in response to storing the data object on the first object storage device, updating a tenant reference counter indicative of a number of active compute jobs operating on a plurality of data objects stored on the first object storage device, the plurality of data objects comprising the data object; and
autoscaling an amount of a computing resource allocated to the first object storage device based on the number of active compute jobs associated with the plurality of data objects stored on the first object storage device.

### Claim 2 (depends on 1)

The method of claim 1, wherein the tenant reference counter further indicates how many tenants currently have active compute jobs associated with the plurality of data objects stored on the first object storage device.

### Claim 3 (depends on 2)

The method of claim 2, wherein autoscaling the amount of the computing resource allocated to the first object storage device based on the number of active compute jobs further comprises designating additional computing resources to the first object storage device as the tenant reference counter increases.

### Claim 4 (depends on 2)

The method of claim 2, wherein autoscaling the amount of the computing resource allocated to the first object storage device based on the number of active compute jobs further comprises releasing resources for the first object storage device in response to the tenant reference counter decreasing.

### Claim 5 (depends on 1)

The method of claim 1, further comprising shutting down the first object storage device if there are no tenants with active compute jobs associated with the plurality of data objects stored on the first object storage device.

### Claim 6 (depends on 1)

The method of claim 1, wherein the at least one subsequent hash is performed on information of the tenant profile data that indicates a division within a tenant organization.

### Claim 7 (depends on 6)

The method of claim 6, further comprising performing another hash on the tenant profile data on information of the tenant profile data that indicates a subdivision within the tenant organization.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first object storage device comprises a virtual machine.

### Claim 9

A method comprising:
receiving from a client device a data object for storage within an object storage system, the data object comprising data and metadata associated with the data;
determining a placement group comprising a plurality of object storage devices to store the data object by a first hash on the data of the data object, the plurality of object storage devices comprising a subset of total available object storage devices within the object storage system;
performing a plurality of subsequent hashes on tenant profile data of the metadata associated with the data;
determining, based on the plurality of subsequent hashes, a first object storage device of the plurality of object storage devices in the placement group to store the data object;
storing the data object on the first object storage device;
in response to storing the data object on the first object storage device, updating the tenant profile data to indicate a number of active compute jobs operating on the first object storage device; and
autoscaling an amount of a computing resource allocated to the first object storage device based on the number of active compute jobs operating on a plurality of data objects stored on the first object storage device.

### Claim 10 (depends on 9)

The method of claim 9, wherein performing the plurality of subsequent hashes comprises performing a second hash on information in the tenant profile data that identifies a tenant.

### Claim 11 (depends on 10)

The method of claim 10, wherein performing the plurality of subsequent hashes further comprises performing a third hash on information in the tenant profile data that identifies a division of an organization associated with the tenant.

### Claim 12 (depends on 11)

The method of claim 11, wherein performing the plurality of subsequent hashes further comprises performing a fourth hash on information in the tenant profile data that identifies a subdivision of the organization associated with the tenant.

### Claim 13 (depends on 9)

The method of claim 9, further comprising maintaining a number of tenants that have active compute jobs operating on the plurality of data objects stored in the first object storage device.

### Claim 14 (depends on 13)

The method of claim 13, wherein autoscaling the amount of the computing resource allocated to the first object storage device based on the number of active compute jobs comprises, in response to determining that the number of tenants has increased, assigning more computing resources to the first object storage device.

### Claim 15 (depends on 13)

The method of claim 13, wherein autoscaling the amount of the computing resource allocated to the first object storage device based on the number of active compute jobs comprises, in response to determining that the number of tenants has decreased, decreasing computing resources assigned to the first object storage device.

### Claim 16

A system comprising:
a processor; and
a memory comprising machine readable instructions that, when executed by the processor, cause the system to:
receive from a client device, a data object for storage within an object storage system, wherein the data object comprises data and metadata associated with the data;
perform a first hash on data of the data object;
determine, based on the first hash, a placement group for the data object, the placement group being associated with a plurality of object storage devices comprising a subset of total available object storage devices within the object storage system;
perform at least one subsequent hash on tenant profile data of the metadata associated with the data;
select, based on the at least one subsequent hash, between two or more object storage devices of the plurality of object storage devices to determine a first object storage device to store the data object, the first object storage device being one of the plurality of object storage devices in the placement group;
store the data object on the first object storage device;
in response to storing the data object on the first object storage device, updating the tenant profile data to indicate a number of active compute jobs operating on the first object storage device; and
autoscaling an amount of a computing resource allocated to the first object storage device based on the number of active compute jobs operating on a plurality of data objects stored on the first object storage device.

### Claim 17 (depends on 16)

The system of claim 16, wherein to autoscale the amount of the computing resource allocated to the first object storage device based on active compute jobs, the instructions further cause the system to maintain a tenant reference count, the tenant reference count indicating how many tenants currently have active compute jobs associated with the data objects stored on the first object storage device.

### Claim 18 (depends on 16)

The system of claim 16, wherein the instructions further cause the system to shut down the first object storage device if there are no tenants with active compute jobs associated with the data objects stored on the first object storage device.
