# US 12,182,446 B2 · Container storage interface filter driver-based optimization of a storage system

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

- Number: US 12,182,446 B2
- Document ID: US12182446B2
- Status: Granted
- Kind: B2
- Application number: 18/086,137
- Filed: 2022-12-21
- Published: 2024-06-27
- Granted: 2024-12-31
- Earliest claimed: 2022-12-21
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Luis Pablo Pabón; Taher Vohra; Naveen Neelakantam
- Web page: https://patentgrep.com/patent/US12182446B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An illustrative method may include passing, by a container storage interface (CSI) filter driver, requests received by way of a node agent to a CSI driver associated with a storage system, the requests comprising requests for the CSI driver to perform control plane operations with respect to the storage system, wherein the node agent, the CSI filter driver, and the CSI filter all execute on a node of a cluster managed by a container orchestrator, and wherein the storage system is configured to store data associated with one or more containerized applications executing on the node; identifying, by the CSI filter driver based on the requests, attributes associated with the control plane operations; determining, by the CSI filter driver based on the attributes, a usage profile associated with the storage system; and performing, by the CSI filter driver based on the usage profile, an optimization operation.

## Claims

### Claim 1

A method comprising:
passing, by a container storage interface (CSI) filter driver, requests received by way of a node agent to a CSI driver associated with a storage system, the requests comprising requests for the CSI driver to perform control plane operations with respect to the storage system, wherein the node agent, the CSI filter driver, and the CSI driver all execute on a node of a cluster managed by a container orchestrator, and wherein the storage system is configured to store data associated with one or more containerized applications executing on the node;
identifying, by the CSI filter driver based on the requests, attributes associated with the control plane operations;
determining, by the CSI filter driver based on the attributes, a usage profile associated with the storage system, the usage profile representative of how the storage system is used in connection with the one or more containerized applications; and
performing, by the CSI filter driver based on the usage profile, an optimization operation with respect to how the storage system is used in connection with the one or more containerized applications.

### Claim 2 (depends on 1)

The method of claim 1, wherein the passing the requests to the CSI driver comprises:
generating, based on one or more attributes of the requests, commands configured to direct the CSI driver to perform the control plane operations; and
transmitting the commands to the CSI driver.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
providing, by the CSI filter driver, data representative of the attributes to a machine learning model;
wherein the determining the usage profile is based on an output of the machine learning model.

### Claim 4 (depends on 1)

The method of claim 1, wherein the determining the usage profile is further based on one or more attributes of the storage system.

### Claim 5 (depends on 1)

The method of claim 1, wherein the performing the optimization operation comprises providing a notification to a source of the request, the notification comprising a recommendation to use a different storage system for a particular containerized application.

### Claim 6 (depends on 5)

The method of claim 5, wherein the storage system and the different storage system are both attached to the cluster.

### Claim 7 (depends on 5)

The method of claim 5, wherein the different storage system is attached to a different cluster than the cluster.

### Claim 8 (depends on 1)

The method of claim 1, wherein:
the requests includes a request to provision a volume on the storage system for use with a particular containerized application included in the one or more containerized applications;
the performing the optimization operation comprises
selecting, based on the usage profile, a particular storage element within the storage system for the volume, and
directing the CSI driver to provision the volume on the particular storage element.

### Claim 9 (depends on 1)

The method of claim 1, wherein the control plane operations comprise provisioning one or more volumes on the storage system for use with the one or more containerized applications.

### Claim 10 (depends on 1)

The method of claim 1, wherein the control plane operations comprise one or more of deleting a volume on the storage system, mounting the volume, modifying a setting associated with the volume, generating a recovery dataset for data stored within the volume, or moving the volume to a different location.

### Claim 11 (depends on 1)

The method of claim 1, wherein the passing the requests to the CSI driver comprises passing the requests using a CSI protocol.

### Claim 12 (depends on 1)

The method of claim 1, wherein the container orchestrator is Kubernetes and the node agent comprises a kubelet.

### Claim 13

A system comprising:
a memory storing instructions; and
one or more processors communicatively coupled to the memory and configured to execute the instructions to implement a container storage interface (CSI) filter driver configured to perform a process comprising:
passing requests received by way of a node agent to a CSI driver associated with a storage system, the requests comprising requests for the CSI driver to perform control plane operations with respect to the storage system, wherein the node agent and the CSI filter driver execute on a node of a cluster managed by a container orchestrator, and wherein the storage system is configured to store data associated with one or more containerized applications executing on the node;
identifying, based on the requests, attributes associated with the control plane operations;
determining, based on the attributes, a usage profile associated with the storage system, the usage profile representative of how the storage system is used in connection with the one or more containerized applications; and
performing, based on the usage profile, an optimization operation with respect to how the storage system is used in connection with the one or more containerized applications.

### Claim 14 (depends on 13)

The system of claim 13, wherein the passing the requests to the CSI driver comprises:
generating, based on one or more attributes of the requests, commands configured to direct the CSI driver to perform the control plane operations; and
transmitting the commands to the CSI driver.

### Claim 15 (depends on 13)

The system of claim 13, wherein the process further comprises:
providing data representative of the attributes to a machine learning model;
wherein the determining the usage profile is based on an output of the machine learning model.

### Claim 16 (depends on 13)

The system of claim 13, wherein the determining the usage profile is further based on one or more attributes of the storage system.

### Claim 17 (depends on 13)

The system of claim 13, wherein the performing the optimization operation comprises providing a notification to a source of the request, the notification comprising a recommendation to use a different storage system for a particular containerized application.

### Claim 18 (depends on 13)

The system of claim 13, wherein:
the requests includes a request to provision a volume on the storage system for use with a particular containerized application included in the one or more containerized applications;
the performing the optimization operation comprises:
selecting, based on the usage profile, a particular storage element within the storage system for the volume, and
directing the CSI driver to provision the volume on the particular storage element.

### Claim 19

A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for implementing a container storage interface (CSI) filter driver configured to perform a process comprising:
passing requests received by way of a node agent to a CSI driver associated with a storage system, the requests comprising requests for the CSI driver to perform control plane operations with respect to the storage system, wherein the node agent and the CSI filter driver execute on a node of a cluster managed by a container orchestrator, and wherein the storage system is configured to store data associated with one or more containerized applications executing on the node;
identifying, based on the requests, attributes associated with the control plane operations;
determining, based on the attributes, a usage profile associated with the storage system, the usage profile representative of how the storage system is used in connection with the one or more containerized applications; and
performing, based on the usage profile, an optimization operation with respect to how the storage system is used in connection with the one or more containerized applications.

### Claim 20 (depends on 19)

The computer program product of claim 19, wherein the passing the requests to the CSI driver comprises:
generating, based on one or more attributes of the requests, commands configured to direct the CSI driver to perform the control plane operations; and
transmitting the commands to the CSI driver.
