# US 10,769,025 B2 · Indexing a relationship structure of a filesystem

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

- Number: US 10,769,025 B2
- Document ID: US10769025B2
- Status: Granted
- Kind: B2
- Application number: 16/427,791
- Filed: 2019-05-31
- Published: 2020-07-23
- Granted: 2020-09-08
- Earliest claimed: 2019-01-17
- Assignees: Cohesity, Inc.
- Applicants: Cohesity, Inc.
- Inventors: Apurv Gupta; Akshat Agarwal
- Web page: https://patentgrep.com/patent/US10769025B2

## CPC

- G06F 11/1451: {by selection of backup contents}
- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 16/182: Distributed file systems
- G06F 16/1837: {Management specially adapted to peer-to-peer storage networks (topology management mechanisms of peer-to-peer networks H04L67/1042)}
- G06F 16/9027: {Trees}
- G06F 11/1469: {Backup restoration techniques}
- G06F 2201/80: Database-specific techniques
- 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 or more storage locations of file inodes in a data source to be backed up are identified. Filesystem metadata information is extracted from the one or more identified storage locations. At least one item of the extracted filesystem metadata information includes a reference to a parent inode. The extracted filesystem metadata information is stored in a data structure. The contents of the data structure are analyzed to index a relationship structure of file system contents of the data source.

## Claims

### Claim 1

A method, comprising:
identifying one or more storage locations associated with a plurality of inodes in a data source to be backed up, wherein the one or more identified storage locations of the plurality of inodes include one or more data ranges in a disk file of the data source which correspond to the plurality of inodes;
extracting information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to a storage system, wherein at least one item of the extracted information associated with the plurality of inodes includes a reference to a parent inode, wherein extracting the information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to the storage system includes copying the extracted information associated with the plurality of inodes to a first storage tier of the storage system and storing the extracted information associated with the plurality of inodes in one or more data structures that are stored in the first storage tier of the storage system, wherein the one or more data structures include one or more key-value stores; and
analyzing contents of the one or more data structures to index a relationship structure of the plurality of inodes of the data source, wherein analyzing the contents of the one or more data structures includes:
scanning the one or more key-value stores; and
generating the index of the relationship structure of the plurality of inodes of the data source based on the scanning of the one or more key-value stores.

### Claim 2 (depends on 1)

The method of claim 1, wherein identifying the one or more storage locations associated with the plurality of inodes in the data source to be backed up includes issuing a plurality of concurrent read requests for the one or more identified storage locations.

### Claim 3 (depends on 1)

The method of claim 1, wherein the storage system is configured to access the data source to be backed up using a distributed file system protocol.

### Claim 4 (depends on 1)

The method of claim 1, wherein one of the one or more data structures corresponds to a plurality of files.

### Claim 5 (depends on 1)

The method of claim 1, wherein one of the one or more data structures corresponds to a plurality of directories.

### Claim 6 (depends on 1)

The method of claim 1, wherein the one or more data structures include a plurality of entries corresponding to the plurality of inodes, each entry associates an inode identifier with metadata information associated with an inode having the inode identifier.

### Claim 7 (depends on 6)

The method of claim 6, wherein the metadata information associated with the inode having the inode identifier includes the reference to a corresponding parent inode.

### Claim 8 (depends on 1)

The method of claim 1, wherein analyzing the contents of the one or more data structures includes
determining parent relationships of inodes associated with the one or more data structures.

### Claim 9 (depends on 8)

The method of claim 8, further comprising reconstructing a filesystem tree structure based on the determined parent relationships.

### Claim 10

A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
identifying one or more storage locations associated with a plurality of inodes in a data source to be backed up, wherein the one or more identified storage locations of the plurality of inodes include one or more data ranges in a disk file of the data source which correspond to the plurality of inodes;
extracting information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to a storage system, wherein at least one item of the extracted information associated with the plurality of inodes includes a reference to a parent inode, wherein extracting the information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to the storage system includes copying the extracted information associated with the plurality of inodes to a first storage tier of the storage system and storing the extracted information associated with the plurality of inodes in one or more data structures that are stored in the first storage tier of the storage system, wherein the one or more data structures include one or more key-value stores; and
analyzing contents of the one or more data structures to index a relationship structure of the plurality of inodes of the data source, wherein analyzing the contents of the one or more data structures includes:
scanning the one or more key-value stores; and
generating the index of the relationship structure of the plurality of inodes of the data source based on the scanning of the one or more key-value stores.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein to identify the one or more storage locations associated with the plurality of inodes in the data source to be backed up includes issuing a plurality of concurrent read requests for the one or more identified storage locations.

### Claim 12 (depends on 10)

The computer program product of claim 10, wherein the first storage tier of the storage system is comprised of one or more solid state drives.

### Claim 13 (depends on 11)

The computer program product of claim 11, wherein the storage system is configured to access the data source to be backed up using a distributed file system protocol.

### Claim 14 (depends on 10)

The computer program product of claim 10, wherein the one or more data structures include a plurality of entries corresponding to the plurality of inodes, each entry associated an inode identifier with metadata information associated with an inode having the inode identifier.

### Claim 15 (depends on 14)

The computer program product of claim 14, wherein the metadata information associated with the inode having the inode identifier includes the reference to a corresponding parent inode.

### Claim 16 (depends on 10)

The computer program product of claim 10, wherein analyzing the contents of the one or more data structures further comprises computer instructions for
determining parent relationships of inodes associated with the one or more data structures; and
reconstructing a filesystem tree structure based on the determined parent relationships.

### Claim 17

A system, comprising:
a processor configured to:
identify one or more storage locations associated with a plurality of inodes in a data source to be backed up, wherein the one or more identified storage locations of the plurality of inodes include one or more data ranges in a disk file of the data source which correspond to the plurality of inodes;
extract information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to a storage system, wherein at least one item of the extracted information associated with the plurality of inodes includes a reference to a parent inode, wherein to extract the information associated with the plurality of inodes from the one or more identified storage locations of the data source to be backed up to the storage system, the processor is configured to copy the extracted information associated with the plurality of inodes to a first storage tier of the storage system and store the extracted information associated with the plurality of inodes in one or more data structures that are stored in the first storage tier of the storage system, wherein the one or more data structures include one or more key-value stores; and
analyze contents of the one or more data structures to index a relationship structure of the plurality of inodes of the data source, wherein to analyze the contents of the one or more data structures, the processor is configured to:
scan the one or more key-value stores; and
generate the index of the relationship structure of the plurality of inodes of the data source based on the scan of the one or more key-value stores; and
a memory coupled to the processor and configured to provide the processor with instructions.
