# US 11,442,916 B2 · Flat object storage namespace in an object storage system

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

- Number: US 11,442,916 B2
- Document ID: US11442916B2
- Status: Granted
- Kind: B2
- Application number: 16/853,980
- Filed: 2020-04-21
- Published: 2021-10-21
- Granted: 2022-09-13
- Earliest claimed: 2020-04-21
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: Richard Parvin Jernigan, IV; Roger Warren Cox
- Web page: https://patentgrep.com/patent/US11442916B2

## CPC

- G06F 16/1824: {implemented using Network-attached Storage [NAS] architecture (distributed or networked storage systems G06F3/067; protocols for distributed storage of data in a network H04L67/1097)}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/162: {Delete operations (erasing in storage systems G06F3/0652)}
- G06F 16/182: Distributed file systems
- G06F 16/24552: {Database cache management}
- G06F 16/24554: {Unary operations; Data partitioning operations}
- G06F 16/28: Databases characterised by their database models, e.g. relational or object models
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system, method, and machine-readable storage medium for maintaining an object storage system data are provided. In some embodiments, an object manager may receive a request to perform an operation on an object. The object storage system includes a first database of a first type and a second database of a second type. The object manager may identify a first record stored in the first database. The first record includes a name marker indicating a range of object names covered by the second database and includes a file handle referencing the second database. The range of object names includes the object name. Additionally, the object manager may identify a second record stored in the second database. The second record includes the object name and includes a file handle referencing the object. The object manager may perform the operation on the object in accordance with the request.

## Claims

### Claim 1

A method comprising:
receiving, by an object manager, a request to perform an operation on an object having an object name, the object being stored in an object storage system that includes a first database of a first type and one or more databases of a second type;
identifying, by the object manager, a first record stored in the first database, the first record including a name marker indicating a range of object names covered by a second database of the second type and a first volume identifier referencing a first volume and a first inode, within the first volume, indicating a first location at which the second database is stored, and the range of object names including the object name;
identifying, by the object manager, a second record stored in the second database, the second record including the object name and including a second volume identifier referencing a second volume and a second inode, within the second volume, indicating a second location at which the object is stored; and
performing, by the object manager, the operation on the object in accordance with the request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the operation is at least one of a write operation, a store operation, a read operation, or a delete operation.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
caching, by the object manager, one or more records of a table-of-contents (TOC) database into the first database.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
merging the second database with a third database to create a fourth database in response to a determination that a size of the second database is less than a first merge threshold and a size of the third database is less than a second merge threshold, the third database and the fourth database being of the second type.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
partitioning the second database storing a plurality of records into a third database and a fourth database in response to a determination that a size of the second database exceeds a split threshold, the third database storing a first subset of the plurality of records, and the fourth database storing a second subset of the plurality of records.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
updating the first record in the first database in response to a determination that the second database has been partitioned into a third database and a fourth database, the updated first record including an updated name marker and an updated volume identifier file handle, the updated name marker indicating that the third database of the second type covers a subset of the range of object names, and the updated volume identifier file handle referencing a third location at which the third database is stored.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
inserting a third record into the first database in response to a determination that the second database has been partitioned into a third database and a fourth database, the third record including a second name marker and a third volume identifier file handle, the second name marker indicating that the third database covers a subset of the range of object names, and the third volume identifier file handle referencing a third location at which the third database is stored.

### Claim 8 (depends on 1)

The method of claim 1, wherein the one or more databases of the second type represents a flat namespace storing one or more object names.

### Claim 9 (depends on 1)

The method of claim 1, wherein the first database is a cache.

### Claim 10

A non-transitory machine-readable medium having stored thereon instructions for performing a method of processing an operation on an object, comprising machine executable code which when executed by at least one machine, causes the machine to:
receive, by an object manager, a request to perform the operation on the object having an object name, wherein an object storage system includes a first database of a first type and a second database of a second type;
search, by the object manager, the first database for a first record including a name marker and a first volume identifier, the name marker indicating a range of object names covered by the second database, the first volume identifier referencing a first volume and a first inode, within the first volume, indicating a first location of the second database, and the range of object names including the object name;
search, by the object manager, the second database for a second record including the object name and including a second volume identifier, the second volume identifier referencing a second volume including the object; and
perform, by the object manager, the operation on the object in accordance with the request.

### Claim 11 (depends on 10)

The non-transitory machine-readable medium of claim 10, wherein the operation is at least one of a write operation, a read operation, a store operation, or a delete operation.

### Claim 12 (depends on 10)

The non-transitory machine-readable medium of claim 10, wherein the second database and the object are stored at a common volume.

### Claim 13 (depends on 10)

The non-transitory machine-readable medium of claim 10, further comprising code, which causes the machine to:
merge the second database with a third database to create a fourth database in response to a determination that a size of the second database is less than a first merge threshold and a size of the third database is less than a second merge threshold.

### Claim 14 (depends on 10)

The non-transitory machine-readable medium of claim 10, further comprising code, which causes the machine to:
partition the second database storing a plurality of records into a third database and a fourth database in response to a determination that a size of the second database exceeds a split threshold, wherein the third database stores a first subset of the plurality of records, and the fourth database stores a second subset of the plurality of records.

### Claim 15 (depends on 10)

The non-transitory machine-readable medium of claim 10, further comprising code, which causes the machine to:
remove the second database from the object storage system after the second database is partitioned into a third database and a fourth database.

### Claim 16

A computing device comprising:
a memory containing a machine-readable medium comprising machine executable code having stored thereon instructions for performing a method of storing an object in an object storage system; and
a processor coupled to the memory, the processor configured to execute the machine executable code to:
receive, by an object manager, a request to store the object in the object storage system, the object have an object name, and the object storage system including a first database of a first type and one or more databases of a second type;
identify, by the object manager, a first record stored in the first database, the first record including a name marker indicating a range of object names covered by a second database of the second type and a chapter database volume identifier referencing a first volume and a first inode, within the first volume, indicating a first location at which the second database is stored, and the range of object names including the object name;
store, by the object manager, the object at a second location; and
insert, by the object manager, a second record into the second database, the second record including the object name and an object volume identifier, and the object volume identifier referencing the second volume and a second inode, within the second volume, indicating a second location.

### Claim 17 (depends on 16)

The computing device of claim 16, wherein the processor is configured to execute the machine executable code to:
allocate, by the object manager, storage at the second location for storing the object.

### Claim 18 (depends on 16)

The computing device of claim 16, wherein the processor is configured to execute the machine executable code to:
cache, by the object manager, one or more records of a table-of-contents (TOC) database into the first database.

### Claim 19 (depends on 16)

The computing device of claim 16, wherein the second database and the object are stored at different volumes.

### Claim 20 (depends on 16)

The computing device of claim 16, wherein the one or more databases of the second type represents a flat namespace storing one or more object names.
