# US 11,907,590 B2 · Using infrastructure-as-code (‘IaC’) to update a cloud-based 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,907,590 B2
- Document ID: US11907590B2
- Status: Granted
- Kind: B2
- Application number: 17/513,085
- Filed: 2021-10-28
- Published: 2022-02-17
- Granted: 2024-02-20
- Earliest claimed: 2018-11-18
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Naveen Neelakantam; Joshua Freilich
- Web page: https://patentgrep.com/patent/US11907590B2

## CPC

- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0617: {in relation to availability}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0632: {by initialisation or re-initialisation of storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0662: {Virtualisation aspects}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/5005: {to service a request}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- G06F 11/2071: {using a plurality of controllers}
- G06F 11/2092: {Techniques of failing over between control units}
- 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/3409: {for performance assessment}
- G06F 11/3447: {Performance evaluation by modeling}
- G06F 16/9035: Filtering based on additional data, e.g. user or group profiles
- H04L 41/082: the condition being updates or upgrades of network functionality
- 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]
- G06F 3/0658: {Controller construction arrangements}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- 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)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Using Infrastructure-as-Code (‘IaC’) to update a cloud-based storage system, including: monitoring one or more performance metrics associated with a cloud-based storage system; generating, based on the performance metrics, a configuration template for the cloud-based storage system, wherein the configuration template specifies a target state for the cloud-based storage system; and updating the cloud-based storage system using the configuration template.

## Claims

### Claim 1

A method comprising:
monitoring one or more performance metrics associated with a cloud-based storage system;
generating, based on the performance metrics, a target state for the cloud-based storage system;
generating, based on the target state and a current state of the cloud-based storage system, one or more transitional codified states, each transitional codified state comprises one or more configuration templates for the cloud-based storage system, wherein each configuration template specifies service or component architectures; and
updating the cloud-based storage system by applying the one or more transitional codified states and using the one or more configuration templates.

### Claim 2 (depends on 1)

The method of claim 1 wherein the performance metrics include a number of input/output (‘I/O’) operations that are directed to the cloud-based storage system.

### Claim 3 (depends on 1)

The method of claim 1 wherein the performance metrics include an amount of storage utilized in the cloud-based storage system.

### Claim 4 (depends on 1)

The method of claim 1 wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more service level agreements associated with the cloud-based storage system are being met.

### Claim 5 (depends on 1)

The method of claim 1 wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more latency targets associated with input/output (‘I/O’) operations that are directed to the cloud-based storage system are being met.

### Claim 6 (depends on 1)

The method of claim 1 wherein the target state for the cloud-based storage system includes additional cloud computing resources for supporting a storage controller application than are included in the current state for the cloud-based storage system.

### Claim 7 (depends on 1)

The method of claim 1, wherein generating the one or more transitional codified states comprises querying a repository storing a plurality of transitional codified states.

### Claim 8 (depends on 7)

The method of claim 7, wherein the repository stores one or more encodings of allowable transitions between the plurality of transitional codified states.

### Claim 9 (depends on 8)

The method of claim 8, wherein the allowable transitions are encoded according to one or more rules for preventing a disruptive upgrade.

### Claim 10

An apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
monitoring one or more performance metrics associated with a cloud-based storage system;
generating, based on the performance metrics, a target state for the cloud-based storage system;
generating, based on the target state and a current state of the cloud-based storage system, one or more transitional codified states, each transitional codified state comprises one or more configuration templates for the cloud-based storage system, wherein each configuration template specifies service or component architectures; and
updating the cloud-based storage system by applying the one or more transitional codified states and using the one or more configuration templates.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more service level agreements associated with the cloud-based storage system are being met.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more latency targets associated with input/output (‘I/O’) operations that are directed to the cloud-based storage system are being met.

### Claim 13 (depends on 10)

The apparatus of claim 10, wherein the performance metrics include at least one of: a number of input/output (‘I/O’) operations that are directed to the cloud-based storage system or an amount of storage utilized in the cloud-based storage system.

### Claim 14

A computer program product disposed upon a computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:
monitoring one or more performance metrics associated with a cloud-based storage system;
generating, based on the performance metrics, a target state for the cloud-based storage system;
generating, based on the target state and a current state of the cloud-based storage system, one or more transitional codified states, each transitional codified state comprises one or more configuration templates for the cloud-based storage system, wherein each configuration template specifies service or component architectures; and
updating the cloud-based storage system by applying the one or more transitional codified states and using the one or more configuration templates.

### Claim 15 (depends on 14)

The computer program product of claim 14, wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more service level agreements associated with the cloud-based storage system are being met.

### Claim 16 (depends on 14)

The computer program product of claim 14, wherein monitoring one or more performance metrics associated with a cloud-based storage system includes determining whether one or more latency targets associated with input/output (‘I/O’) operations that are directed to the cloud-based storage system are being met.

### Claim 17 (depends on 14)

The computer program product of claim 14, wherein the performance metrics include at least one of: a number of input/output (‘I/O’) operations that are directed to the cloud-based storage system or an amount of storage utilized in the cloud-based storage system.
