# US 12,182,067 B2 · Containerization and serverless thread implementation for processing objects

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

- Number: US 12,182,067 B2
- Document ID: US12182067B2
- Status: Granted
- Kind: B2
- Application number: 17/242,448
- Filed: 2021-04-28
- Published: 2022-05-05
- Granted: 2024-12-31
- Earliest claimed: 2020-11-04
- Assignees: NetApp, Inc.
- Applicants: NetApp Inc.
- Inventors: Sharankumar Yelheri; Atul Ramesh Pandit; Tijin George; Kiran Nenmeli Srinivasan; Jeffrey David Prem
- Web page: https://patentgrep.com/patent/US12182067B2

## CPC

- 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 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1453: {using de-duplication of the data}
- G06F 11/1464: {for networked environments}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- G06F 11/3476: {Data logging (G06F11/14, G06F11/2205 take precedence)}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 69/04: Protocols for data compression, e.g. ROHC
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F 2201/80: Database-specific techniques
- G06F 2201/815: Virtual
- 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)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques are provided for on-demand creation and/or utilization of containers and/or serverless threads for hosting data connector components. The data connector components can be used to perform integrity checking, anomaly detection, and file system metadata analysis associated with objects stored within an object store. The data connector components may be configured to execute machine learning functionality to perform operations and tasks. The data connector components can perform full scans or incremental scans. The data connector components may be stateless, and thus may be offlined, upgraded, onlined, and/or have tasks transferred between data connector components. Results of operations performed by the data connector components upon base objects may be stored within sibling objects.

## Claims

### Claim 1

A method of processing a snapshot, snapshot data of the snapshot stored into objects within one or more storage structures of an object store, wherein the snapshot is represented by an object format of the objects where the snapshot data is structured according to a snapshot file system tree structure, the method comprising:
in response to receiving an operation targeting the snapshot, implementing a wrapper controller to preprocess the operation for determining an amount of work to be performed by functionality being requested by the operation;
determining, by the wrapper controller, a number of data connector components to instantiate based upon the amount of work to be performed;
instantiating the number of data connector components as a plurality of data connector components instantiated as containers on-demand for processing the operation; and
independently processing different portions of the snapshot file system tree structure using different data connector components of the plurality of data connector components for parallel execution of the operation by the plurality of data connector components upon the objects.

### Claim 2 (depends on 1)

The method of claim 1, wherein the independently processing different portions of the snapshot file system tree structure comprises:
processing first snapshot data of the snapshot represented by a first portion of the snapshot file system tree structure using a first data connector component.

### Claim 3 (depends on 2)

The method of claim 2, wherein the independently processing different portions of the snapshot file system tree structure comprises:
processing second snapshot data of the snapshot represented by a second portion of the snapshot file system tree structure using a second data connector component.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first snapshot data is processed by the first data connector in parallel with the second snapshot data being processed by the second data connector.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
traversing the snapshot file system tree structure to identify branches as the different portions of the snapshot file system tree structure, wherein a first branch comprises first snapshot data of the snapshot and a second branch comprises second snapshot data of the snapshot.

### Claim 6 (depends on 5)

The method of claim 5, wherein the first snapshot data is stored within a first object and the second snapshot data is stored within a second object.

### Claim 7 (depends on 5)

The method of claim 5, wherein the first snapshot data and the second snapshot data is stored within a first object.

### Claim 8 (depends on 1)

The method of claim 1, comprising:
deconstructing one or more data connector components of the plurality of data connector components on-demand in response to the operation completing.

### Claim 9 (depends on 1)

The method of claim 1, comprising:
migrating the objects from being stored within the object store to being stored within a destination object store.

### Claim 10 (depends on 1)

The method of claim 1, comprising:
copying the objects comprising the snapshot data of the snapshot to create copied objects representing a replicated copy of the snapshot.

### Claim 11 (depends on 1)

The method of claim 1, comprising
migrating an object from a first storage structure to a second storage structure based upon at least one of a load balancing consideration, a proximity of a region comprising the second storage structure with respect to a first operation to be performed upon the object, or a characteristic of the second storage structure.

### Claim 12 (depends on 1)

The method of claim 1,
wherein bits within a bitmap for the snapshot comprise values set to indicate whether the objects within the object store comprise the snapshot data of the snapshot.

### Claim 13 (depends on 12)

The method of claim 12, comprising:
utilizing the bitmap to identify the objects as comprising the snapshot data of the snapshot;
traversing the snapshot file system tree structure to identify one or more of the objects as comprising only unique snapshot data that is unique to the snapshot and not shared with other snapshots; and
performing a first operation upon the one or more of the objects.

### Claim 14 (depends on 12)

The method of claim 12, comprising:
utilizing the bitmap to identify a list of the objects that represent the snapshot.

### Claim 15

A non-transitory machine readable medium comprising instructions for performing a method of processing a snapshot, snapshot data of the snapshot stored into objects within one or more storage structures of an object store, wherein the snapshot is represented by an object format of the objects where the snapshot data is structured according to a snapshot file system tree structure, the method, when executed by a machine, causes the machine to:
in response to receiving a request targeting the snapshot, break down the request into a number of separate operations that can be processed in parallel;
determine a number of serverless threads to create on-demand for processing based upon the number of separate operations that can be processed in parallel;
create the number of serverless threads on-demand for execution through a serverless thread architecture, wherein each serverless thread is assigned a different operation of the number of separate operations that can be processed in parallel; and
independently process different portions of the snapshot file system tree structure using different serverless threads for parallel execution of the request by the serverless threads upon the objects.

### Claim 16 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the instructions cause the machine to:
deconstruct, by the serverless thread architecture, one or more of the serverless threads in response to the one or more serverless threads completing execution associated with the request.

### Claim 17 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the instructions cause the machine to:
trigger creation of the serverless threads to perform an integrity check upon a first object as the request based upon an event corresponding to a determination that a second object was identified as being corrupt, wherein the first object is identified as having a probability of being corrupt above a threshold probability based upon the second object being corrupt.

### Claim 18 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the instructions cause the machine to:
trigger creation of the serverless threads to perform an integrity check upon a first object as the request based upon an event corresponding to a failure associated with the object store, wherein the first object is identified as having a probability of being corrupt above a threshold probability based upon the failure of the object store.

### Claim 19 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the instructions cause the machine to:
create a set of serverless threads for execution through the serverless thread architecture for creating a catalog of snapshots stored within objects in the object store.

### Claim 20

A computing device for processing a snapshot, snapshot data of the snapshot stored into objects within one or more storage structures of an object store, wherein the snapshot is represented by an object format of the objects where the snapshot data is structured according to a snapshot file system tree structure, the computing device comprising:
a memory comprising machine executable code for performing a method; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
in response to receiving an operation targeting the snapshot, implement a wrapper controller to preprocess the operation for determining an amount of work to be performed by functionality being requested by the operation;
determine, by the wrapper controller, a number of data connector components to instantiate based upon the amount of work to be performed;
instantiate the number of data connector components as a plurality of data connector components instantiated as object store provider agnostic plugins on-demand for processing the operation; and
independently process different portions of the snapshot file system tree structure using different data connector components of the plurality of data connector components for parallel execution of the operation by the plurality of data connector components upon the objects.
