CONTAINER MANAGEMENT IN A STORAGE SYSTEM
The storage system optimizes container management by selecting controllers based on resource availability and scheduling within limits, addressing communication delays and resource constraints to enhance performance and reduce costs.
Patent Information
- Application Number
- DE102022108672
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-10-08
- Filing Date
- 2022-04-10
- Publication Date
- 2024-12-19
- Estimated Expiration
- 2042-04-10
AI Technical Summary
In storage systems with geographically distant host devices and storage arrays, communication delays and high bandwidth consumption degrade host application performance due to the need to transmit large amounts of data over multiple networks, and running containers on storage array controllers with limited resources is not feasible.
Implementing a storage system that manages containers by dynamically selecting controllers based on resource availability, scheduling them within resource limits, and monitoring their status to prevent overload, thereby reducing network traffic and bandwidth consumption.
This approach enhances host application performance by optimizing resource utilization, reducing network traffic, and minimizing costs by executing operations locally on the storage system.
Smart Images

Figure 00000019_0000 
Figure 00000020_0000 
Figure 00000021_0000
Abstract
Description
BACKGROUND
[0001] A client computer system, such as a host server or the like, may run host applications and store data used by the host applications in a separate computer system, such as a storage array. The storage array may include a plurality of controllers (e.g., storage controllers, array controllers, or the like) that enable a connection between the client computer system and the data stored in the storage array. In some examples, the plurality of controllers may include computational resources, such as processing resources, storage resources, and the like, to perform input / output (IO) operations (e.g., read / write operations) on the data.
[0002] US 7 644 408 B2 describes a method for assigning a job to grid computers in a computer grid, which method comprises collecting information from the grid computers about the characteristics of the computer, grouping the computers into groups based on the characteristics, receiving a job from a customer, determining the characteristics required to execute the job, comparing the characteristics required to execute the job with the characteristics of the groups and transmitting the job to at least one of the grid computers in the group that has the required characteristics.
[0003] US 2012 / 0 005 673 A1 describes a storage manager that connects containers with VM images (virtual machines) and data of virtual storage devices within hosts.
[0004] US 2018 / 0 018 116 A1 describes a scheduler component of a block storage service that is initiated in a first container using a containerization technology. A log volume managed by a host operating system is mounted in the first container to allow the scheduler component access to the log volume.
[0005] US 2019 / 0 146 718 A1 relates to a plurality of computing devices communicatively connected to each other via a network, and each of the plurality of computing devices is operatively connected to one or more of a plurality of storage devices. SHORT DESCRIPTION
[0006] An article according to claims 1 to 9, a storage system according to claims 10 to 13 and a method according to claims 14 to 17 are disclosed. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The following detailed description refers to the drawings in which: Fig. is a block diagram of a storage system that performs container management, according to an example; Fig. is a flowchart of a method for managing containers in a storage system according to an example; Fig. is a block diagram of a storage system that performs container management according to another example; Fig. is a flowchart of a method for managing containers in a storage system within resource boundaries, according to an example; Fig. is a block diagram of a storage system that performs multiple container management, according to an example; Fig. is a flowchart of a method for managing multiple containers in a storage system, according to one example; and Fig. is a block diagram of a processing resource and a machine-readable medium encoded with example instructions for managing containers in a storage system, in accordance with an example. DETAILED DESCRIPTION
[0008] A computing system (e.g., a storage array) and a client computing device (e.g., a server (e.g., in a data center) or an edge computing device (e.g., an Internet of Things device)) may be separate devices that communicate over a computer network to perform specific functions. For example, the client computing device (referred to herein as the host device) may perform computing functions (e.g., running host applications) using computing resources (such as processing and memory resources), and the storage array may perform storage functions (e.g., storing data) using a variety of storage devices. The host applications running on the host device may send requests to the storage array, such as input / output (IO) requests (e.g., read / write requests), deduplication requests, snapshot requests, or the like.The storage array can process the requests received from the host device and perform operations corresponding to the requests (e.g., read / write operations, deduplication operations, snapshot operations) on the data stored in the plurality of storage devices.
[0009] The host device and the storage array can communicate through one or more computer networks (e.g., Network-Attached Storage (NAS), a Storage Area Network (SAN), or Direct-Attached Storage (DAS)). In some networks (e.g., NAS and SAN), a host device and a storage array can communicate through network components (e.g., a switch, router, etc.), whereas in DAS, a host device is directly connected to a storage array through a cable (e.g., a host bus adapter). Some networks, such as SANs, can be more scalable than other networks, such as DAS networks. For example, in SANs, a single storage array can handle IO requests from multiple host devices simultaneously, whereas in DAS, the storage array can handle IO requests from a single host device connected to the storage array.
[0010] However, in SANs, the performance of host applications can be impacted by delayed communication between host device(s) and storage array(s). For example, delayed communication may be due to the host device(s) and storage array(s) being geographically distant from each other. In such examples, a request (e.g., an IO request) from a host application and a response to such a request may be transmitted across multiple networks (i.e., multiple hops) between a host device and a storage array. Such a host application may send a large number of IO requests to a storage array during its execution. The response to such requests can sometimes include large amounts of data, consuming high bandwidth and requiring a relatively long time to complete. Therefore, the overhead incurred by each IO request and its completion can impact the performance of host applications.
[0011] Some examples may solve the above challenges by running a host application locally on a storage array. For example, one or more controllers of a storage array may contain compute resources, such as processing and memory resources, that are idle from time to time. The storage array may be capable of running all or part of the host application using such compute resources available at the one or more controllers. For example, the available compute resources may be used to run a container running a containerized version of all or part of the host application, which containerized version may be referred to herein as a containerized application.In the examples described here, container technology is a computer virtualization paradigm in which an application, along with dependencies and libraries, is packaged in a container to create an isolated environment for running the application. Many containers can run on a single operating system, but each container is inherently isolated from other containers. However, the computational resources of one or more storage array controllers may be limited. For example, a storage array may use the majority of a controller's computational resources to process a large number of IO requests from various host devices. Running multiple containers concurrently and processing such a large number of IO requests on the same controller may not be feasible.
[0012] To address these problems, the examples described here enable the management of containers in a storage system. Some examples can run one or more containers on a controller of a storage system within resource limits. Some examples can dynamically select a controller from among a plurality of controllers of a storage system to run a container based on resource availability at each of the controllers. For example, if resource availability is less than a resource limit, examples can select a different controller to run a container on. This allows the storage system to run containers on a controller of the storage system without exceeding the resource limits on the controller.
[0013] The examples described herein may further enable scheduling the execution of containers on a specific controller at a predetermined time. In some examples, executing the containers may include performing one or more batch operations on the storage media of the storage system. The examples described herein may further enable monitoring the status of a container and providing alerts in response to detecting a failure event associated with the container. In this way, the storage array may manage the lifecycles of containers within a storage system. Furthermore, the examples described herein may reduce network traffic, bandwidth consumption, and associated costs by performing operations (such as deduplication or snapshot operations) on the storage system and forwarding the corresponding results to the target client devices.
[0014] Fig. is a block diagram of a networked system 100 that facilitates the management of containers in a storage system 102 according to the examples described herein. The storage system 102 may be implemented by a computer system (e.g., a storage array, a server, a backup appliance, a hyperconverged system that combines storage, compute, and networking functions through virtualization, or the like) having a plurality of controllers 104-1, 104-2, etc., and storage devices 106. Although Fig. For illustrative purposes, FIG. 1 shows a limited number of controllers 104-1, 104-2 and storage devices 106, the storage system 102 may include any suitable number of controllers and any suitable number of storage devices.
[0015] Each controller 104-1, 104-2 may include a corresponding processing resource 108-1, 108-2, a corresponding machine-readable storage medium 110-1, 110-2 that stores instructions (e.g., encoded with), and a corresponding storage resource 112-1, 112-2. The components of the controllers 104-1, 104-2 may communicate via one or more buses 115-1, 115-2, respectively. Each of the controllers 104-1, 104-2 may physically access the storage devices 106 (e.g., via cables or other communication channels). The storage devices 106 may include non-volatile storage devices, such as a hard disk drive (HDD), a solid-state drive (SSD) (e.g., a flash drive), or any other suitable device for storing data in a non-volatile manner. In some examples, storage devices 106 may include any combination of one or more such non-volatile storage devices.In some examples, storage system 102 may store data on storage devices 106 in the form of storage volumes (denoted as 126-1 through 126-P, where "P" is an integer greater than 1). Storage volumes 126-1 through 126-P may be a collection of "virtual volumes" or logical unit numbers ("LUNs"), or the like. Each storage volume among storage volumes 126-1 through 126-P may include a virtual address space supported by storage devices 106, such that when data is stored in the volume, it may be stored in storage devices 106 (e.g., when flushed from cache, etc.).
[0016] In the examples described herein, the memory resources 112-1, 112-2 may be implemented by random access memory (RAM), dynamic random access memory (DRAM), or the like, or a combination thereof. Each of the memory resources 112-1, 112-2 may be implemented by one or more physical memory devices (e.g., DRAM devices, dual inline memory modules (DIMMs), or the like). In some examples, the memory resources 112-1, 112-2 may be implemented by any suitable type of volatile or non-volatile memory that uses load / store semantics.
[0017] In the examples described here, each of the controllers may include a network interface, which may be any suitable hardware device for communication in a computer network, such as a storage area network (SAN). In the example of Fig. The network interfaces 117-1, 117-2 can be corresponding network interface cards (NICs), FC host bus adapters (HBAs), or similar to communicate over one or more networks. In the example of Fig. the network interfaces 117-1, 117-2 may communicate over a network 118, which may include, for example, a SAN, a local area network (LAN), a virtual LAN (VLAN), a wireless local area network (WLAN), a virtual private network (VPN), the Internet, an internal application-specific integrated circuit (ASIC), and / or a software transport, or the like, or a combination thereof.
[0018] The controllers 104-1, 104-2 can receive requests from external devices and, in response to such requests, perform various functions and operations on the storage media in the system 102. In the example of Fig. The external devices may be a plurality of host devices 116 (referred to as host devices 116-1 through 116-N, where "N" is an integer greater than 2) connected to the storage system 102 via the network 118. In some examples, the host devices 116-1 through 116-N may be connected to the storage system 102 via the network interfaces 117-1, 117-2, which may include multiple host ports (in Fig. (not shown). Each of the host devices 116-1 through 116-N can be connected to a host port from the host ports, thereby associating each of the host ports with a specific host device.
[0019] In some examples, the host devices 116 may be servers that provide services to clients (e.g., a target client 128 in Fig. ). In other examples, the host devices 116 may be an end-user device or an edge computing device (e.g., an IoT device). In the example of Fig. A host device 116-1 may run one or more host applications that send IO requests to the storage system 102, which may then perform operations with respect to the data stored on the storage devices 106 (e.g., read data from or write data to the storage devices 106). The container repository 120 may manage a plurality of container images 122-1 through 122-M (referred to as container images 122-1 through 122-M, where "M" is an integer greater than or equal to 2). In the examples described herein, a container image may be information (e.g., a static or binary file) that can be executed (e.g., on a container runtime) to launch a container. When a container image is executed (e.g., on a container runtime environment), it becomes a container.In some examples, container images may be stored in container repository 120 after being validated or authenticated as part of a separate process (e.g., with a license key). In the examples described herein, each of container images 122-1 through 122-M may contain information (e.g., instructions) to execute all or part of a host application in a container when the container image is executed by the processing resources. In some examples, container images 122-1 through 122-M may contain machine-executable instructions, programs, libraries, frameworks, etc., associated with a corresponding host application (or part thereof). In some examples, container images 122-1 through 122-M may be a containerized application, a group of containerized applications, a virtual machine, or the like.
[0020] In some examples, one or more controllers of the storage system 102 may be configured as management controllers that can manage containers in the storage system 102. In the example of Fig. The controller 104-1 may be configured as a management controller. The controller 104-1 may include a machine-readable storage medium 110-1 storing at least management instructions 114 that may be executed by the processing resource 108-1 to manage the execution of containers on the controller 104-1 or another controller (e.g., controller 104-2) in the storage system 102 (as described with respect to Fig. described). In the example of Fig. Controller 104-2 may not be configured as a management controller because the machine-readable storage medium 110-2 of controller 104-2 cannot store management instructions 114. Controller 104-2 may not be capable of managing containers. In some examples, one or more of the controllers in the storage system may be configured as management controllers for managing containers.
[0021] Examples are given below in relation to the Fig. described. Fig. is a flowchart of an example method 200 for managing containers in storage system 102, the method comprising executing a container in storage system 102 within resource limits. Although the execution of method 200 is described below with reference to storage system 102 of Fig. described, other systems suitable for carrying out these methods may also be used (e.g., the memory system 302 of Fig. , the storage system 502 of Fig. . ä.). Furthermore, the implementation of this method is not limited to such examples. Although the flowchart in Fig. shows a specific order of execution of certain functions, the method is not limited to that order. For example, the functions shown sequentially in the flowchart may be executed in a different order, they may be executed concurrently or partially concurrently, or a combination thereof.
[0022] With reference to the examples in Fig. The storage system 102 may manage containers executed by the container images 122-1 through 122-M. The processing resource 108-1 of the controller 104-1 may execute the management instructions 114 stored in the machine-readable medium 110-1 to perform the method 200. At 202 of the method 200, the controller 104-1 may receive a container specification 124-1 associated with a container image 122-1 from a host application executing on the host device 116-1. For example, the host application may send a request to perform on-demand operations on the storage volumes 126-1 through 126-P or to schedule such operations at a later time. The request may include the container specification 124-1 stored in the form of a configuration file (e.g.,An XML (Extensible Markup Language) file, a Pod manifest file, a JavaScript Object Notation (JSON) file, a YAML file, or similar file, containing configuration instructions for running one or more containers and for performing operations on the storage media. Examples of operations might include a deduplication operation, a snapshot operation, a compression operation, a data replication operation, or any other operation performed on one or more storage volumes in a storage system.
[0023] In some examples, the container specification 124-1 may specify a container identifier, a storage volume identifier, a controller identifier, and a resource limit. The container identifier may be a unique identifier, such as a Universal Unique Identifier (UUID), that uniquely identifies a container image. In some examples, the container identifier may include a license key associated with the container image to download valid container images from the container repository 120. The storage volume identifier may include a logical unit number (LUN) of one or more storage volumes. The controller identifier may specify the controller on which the container must run. The resource limit may specify a maximum amount or value of compute resources that can be used on the controller to run the container.
[0024] In 204 of method 200, the controller 104-1 may obtain a container image 122-1 from the container repository 120 based on the container identifier specified in the container specification 124-1. For example, the controller 104-1 may download the container image 122-1 from the container repository 120 over the network 118. In some examples, the controller 104-1 may send a request specifying the container identifier (e.g., UUID of the container image) to the container repository 120. The controller 104-1 may obtain the container image 122-1 corresponding to the container identifier from the container repository 120. In some examples, the controller 104-1 may authenticate the container image 122-1 with a license key, which may be specified in the container specification. The container image 122-1 can, for example, be stored in the storage resource 112-1 of the controller 104-1.
[0025] At 206 of method 200, the controller 104-1 may select a storage volume from the storage volumes 126-1 through 126-P based on the storage volume identifier specified in the container specification 124-1. In some examples, the storage volume identifier may specify a controller identifier that identifies a host bus adapter, a disk identifier that identifies specific LUNs, a slice identifier that identifies a specific partition on the disk, or the like. The controller 104-1 may use such identifiers specified in the storage volume identifier and assign a storage volume (e.g., storage volume 126-1) corresponding to the identifiers to the container image 122-1. For example, assigning a storage volume to a container image may involve recording an association between the storage volume and the container image in a database (e.g., in a persistent store 340 of Fig. ). The database may include a table with multiple rows and columns containing key-value pairs, where the key may contain identifiers of container images and the corresponding values may contain identifiers of storage volumes assigned to those container images. In some examples, the controller 104-1 may use an association between the storage volume(s) and a container image to control (e.g., authorize) the container(s) running from the container image, access the corresponding storage volume(s), and perform operations (e.g., read / write operations).
[0026] At 208 of method 200, controller 104-1 may select a controller from controllers 104-1, 104-2 based on the controller identifier. In some examples, the controller identifier may indicate an identity of a controller or a component of the controller. For example, the controller identifier may indicate a host port (e.g., in network interface 117-1) of a controller (e.g., controller 104-1). Based on the specified host port, controller 104-1 may select the controller (e.g., controller 104-1) that includes the specified host port for executing container 122-1A.
[0027] At 210, the controller 104-1 may allow a container running from one of the container images to access one or more storage volumes. For example, based on the association of identifiers of a container image and the storage volume(s) stored in the persistent repository, the controller 104-1 may allow a container from the container image to access the storage volume(s). In the example of Fig. the controller 104-1 may allow the container 122-1A, when executed by a processing resource, to access the storage volume 126-1.
[0028] In some examples, controller 104-1 may determine whether the resource availability at the selected controller is greater than the resource limit. Resource availability may indicate the degree of available (i.e., unused) computing resources at a controller. Resource availability and resource utilization at a controller may be expressed as a percentage of computing resources, such as processing resources, storage resources, network resources, or the like, or a combination thereof, that are ready to be used. For example, if the utilization of processing resources is 60% and the utilization of storage resources is 80%, then the resource availability of processing resources may be 40% and the resource availability of storage resources may be 30%.The resource availability of the controller 104-1 can be compared to a resource limit, which specifies the maximum amount of computing resources that a container running on the controller may consume.
[0029] At 212 of method 200, the controller 104-1 may determine whether the availability of computing resources at the selected controller is greater than the resource limit (i.e., that the amount of computing resources available at the controller is greater than the maximum amount the container is permitted to use). For example, the resource limit for the container may indicate that the maximum amount of processing resources 108-1 that the container is permitted to consume is 30% and that the maximum amount of memory resources 112-1 that the container is permitted to consume is 20%. If the resource availability at the processing resources 108-1 is 40% and the resource availability at the memory resources 112-1 is 30%, the controller 104-1 may determine that the resource availability at the controller 104-1 is greater than the resource limit.
[0030] In response to the determination, controller 104-1 may initiate execution of the container on processing resources 108-1 of controller 104-1. For example, processing resources 108-1 may execute container 122-1A, which accesses storage volume 126-1 (as represented by dashed arrow 160) and performs operations on storage volume 126-1. In various examples, the operation on the storage volume may include a read operation, a write operation, a compression operation, a deduplication operation, a snapshot operation, or the like. In some examples, the containers may directly access the storage media from user space using local access methods, such as the Portable Operating System Standard Interface (POSIX), asynchronous input / output interfaces (AIO), Internet Small Computer Systems Interface (iSCSI) loopback, vhost protocols (e.g., vhost SCSI).In some examples, container specification 124-1 may specify a target client identity. The target client identity may specify an identity of a client device (e.g., target client 128), such as a server, a user device, or the like, to which a result of the execution of container 122-1A may be transmitted. Controller 104-1 may send the result of the operation to target client 128.
[0031] In other examples, controller 104-1 may determine that the resource availability at the selected controller is not greater than the resource limit (i.e., the maximum amount of compute resources the container is allowed to consume at the controller exceeds the amount of compute resources available at the controller). For example, the resource limit may indicate that the maximum utilization value of processing resources 108-1 is 30% and memory resources 112-1 is 20%, but the actual resource availability of processing resources 108-1 is 25% and the resource availability of memory resources 112-1 is 15%. In such examples, controller 104-1 may determine that the resource availability at controller 104-1 is less than the resource limit (i.e., that compute resources are insufficient). In response to this determination, controller 104-1 may not execute container 122-1A.In some examples, controller 104-1 may select another controller whose resource availability is greater than the resource limit. For example, controller 104-1 may determine that second controller 104-2 has resource availability greater than the resource limit. In such examples, controller 104-1 may move container 122-1A from storage resources 112-1 of first controller 104-1 to storage resources 112-2 of second controller 104-2 (as represented by dashed arrow 170). Controller 104-1 may also allow container 122-1A to access storage volume 126-1 when executed by processing resources 108-2 of second controller 104-2 (as represented by dashed arrow 161). The processing resources 108-2 may execute the container 122-1A on the second controller 104-2 to perform the operation on the storage volume 126-1.Although the examples presented here describe resource availability and resource constraints in terms of memory and processing resource measurements, other metrics (e.g., network bandwidth, throughput, or similar) associated with the controllers can also be used to determine the service location (i.e., which controller to use).
[0032] Fig. shows a storage system 302 that performs container management according to another example of the present subject matter. Examples are described below with respect to the Fig. described. Fig. is a flowchart of an example method 400 for managing containers in storage system 302, the method comprising executing one or more containers in storage system 302 within resource limits. Although the execution of method 400 is described below with reference to storage system 302 of Fig. described, other systems suitable for carrying out these methods may also be used (e.g., the memory system 102 of Fig. or the storage system 502 of Fig. or similar). Furthermore, the implementation of this method is not limited to such examples. Although the flowchart in Fig. shows a specific order of execution of certain functions, the method is not limited to that order. For example, the functions shown sequentially in the flowchart may be executed in a different order, they may be executed concurrently or partially concurrently, or a combination thereof.
[0033] The storage system 302 may include a controller 304-1 (referred to herein as a "first controller"), a controller 304-2 (referred to herein as a "second controller"), and a controller 304-3 (referred to herein as a "third controller"). Each controller 304-1, 304-2, 304-3 may include a corresponding processing resource 308-1, 308-2, 308-3, a corresponding machine-readable storage medium 310-1, 310-2, 310-3, and a corresponding storage resource 312-1, 312-2, 312-3. Although, for the sake of clarity, a relatively small number of controllers, processing resources, machine-readable media, and storage resources are shown in the Fig. illustrated storage system 302, the storage system in the examples described herein may include more or fewer controllers, processing resources, machine-readable media, and storage resources.
[0034] In the example of Fig. The first controller 304-1 may be configured as a management controller. For example, the machine-readable storage medium 310-1 of the first controller 304-1 may store at least management instructions 314 that may be executed by the processing resource 308-1 to manage containers in the storage system 302. In some examples, the first controller 304-1 may be configured to manage containers using the at least management instructions 314, while the controllers 304-2, 304-3 may not be enabled to manage containers. In other examples, one or more of the controllers 304-1, 304-2, 304-3 may be configured as a management controller for managing containers in the storage system 302. The components of the controllers 304-1, 304-2, 304-3 can communicate via one or more buses 315-1, 315-2 or 315-3.Each controller 304-1, 304-2, 304-3 may include corresponding network interfaces 317-1, 317-2, 317-3, which may be network interface cards (NICs), FC host bus adapters (HBAs), or the like, for communicating over one or more computer networks. In the example of . Fig. The storage system 302 may be connected to a SAN 318 or another network, such as a network 118 that is Fig. was described.
[0035] In the example of Fig. The storage system 302 may also include persistent storage 340, which may be implemented by any suitable type of non-volatile memory (e.g., a solid-state storage device (SSD), such as a flash device or a hard disk drive (HDD), or the like). The storage system 302 may further include an interface 342. The interface 342 may be a user interface, e.g., a graphical user interface (GUI) of the storage system 302. The GUI may allow a user to "log in" to the storage system 302 and may be associated with an input device such as a touchscreen, keyboard, mouse, etc. The interface 342 may be implemented by any combination of hardware and programming. The storage system 302 may include storage devices 306 analogous to the ones described in Fig. described storage devices 106.
[0036] With reference to the examples in Fig. the storage system 302 may manage multiple containers from the container image 322-1. The processing resource 308-1 of the first controller 304-1 may execute the management instructions 314 stored in the machine-readable medium 310-1 to perform the method 400. At 402 of the method 400, the first controller 304-1 may retrieve a container specification 324-1 associated with the container image 322-1 from a host device (e.g., the host device 116-1 of Fig. ) that executes a host application. The container specification 324-1 may include configuration information for managing a container 322-1A in the storage system 302. In some examples, the configuration information of each container image may be stored in the persistent repository 340 of the storage system 302. In some examples, the configuration information stored in the persistent repository 340 may be manually modified (e.g., by a storage administrator) via the interface 342. In various examples, the configuration information may include a container identifier, storage volume identifiers, controller identifiers, and resource limits, as described with respect to Fig. described. The configuration information may also include a container policy for executing one or more containers from the container image 322-1 in the storage system 302. The container policy may include a set of rules for executing a container. In some examples, the container policy may specify a number of containers to be executed in the storage system 302.
[0037] In 404 of method 400, the first controller 304-1 may be configured with the container specification 324-1 to manage the containers. For example, the first controller 304-1 may retrieve the container image 322-1 from the container repository using the container identifier specified in the container specification 324-1. The first controller 304-1 may select storage volumes based on the storage volume identifiers specified in the container specification 324-1. In some examples, the storage volume identifiers may include a disk identifier that identifies specific LUNs, a slice identifier that identifies a specific partition on a disk, or the like. In some examples, the first controller 304-1 may select multiple storage volumes based on the number of containers to run, as specified in the container policy.For example, the container policy may specify two containers of a container image to be executed to perform two different operations. For each container, the first controller may select a different storage volume. The first controller 304-1 may use the information specified in the storage volume identifiers and allocate storage volumes (e.g., storage volumes 326-1, 326-2) that correspond to the identifiers of the container image 322-1. For example, the container policy may specify that the container 322-1A may perform a deduplication operation on one storage volume 326-1 and the container 322-1B may perform a snapshot operation on a different storage volume 326-2. In some examples, associating a storage volume with a container image may include recording a mapping between the storage volume and the container image in a database (e.g., the persistent repository 340).The database may contain a table with multiple rows and columns containing key-value pairs, where the key may contain identifiers of container images and the value may contain identifiers of storage volumes assigned to that container image.
[0038] At 406 of method 400, the first controller 304-1 may select a first set of controllers based on the controller identifiers specified in the container specification 324-1. For example, the first controller 304-1 may determine that the container specification 324-1 specifies the identity of the controllers 304-1, 304-2 and may select the controllers 304-1, 304-2. At 408 of method 400, the first controller 304-1 may determine whether or not a resource availability at each of the first group of controllers 304-1, 304-2 is greater than the resource limits specified in the container specification. The resource availability may indicate a level of available (i.e., unused) computing resources at the controllers 304-1, 304-2. The resource availability and resource utilization at each controller 304-1, 304-2 may be expressed as a percentage of the computing resources, such asProcessing resources, memory resources, or the like. For example, if a controller has a processing resource utilization of 60% and a memory resource utilization of 80%, then the processing resource availability may be 40% and the memory resource availability may be 20%. The resource availability of controllers 304-1, 304-2 may be compared to resource limits, which specify a maximum amount of computing resources that containers running on the respective controllers may use.
[0039] In response to determining that the resource availability at the first set of controllers 304-1 and 304-2 is greater than the resource limits, that is, that the amount of computational resources available at the first set of controllers is greater than the maximum amount the containers are allowed to use ("YES" at 408), the method 400 may proceed to 412. For example, the resource limit at each controller of the first set of controllers may indicate that the maximum amount of processing resources the container is allowed to consume is 30% and that the maximum amount of memory resources the container is allowed to consume is 20%. If the resource availability at the processing resources 308-1, 308-2 is 40% and the resource availability at the memory resources 312-1, 312-2 is 30%, then the controller 304-1 may determine that the resource availability at the controller 304-1 is greater than the resource limits.At 412 of method 400, the first controller 304-1 may permit containers 322-1A, 322-1B to access storage media 326-1, 326-2 based on the association between the container images and the storage media. For example, the first controller may permit container 322-1A to access storage volume 326-1 (as represented by dashed arrow 360) and container 322-1B to access storage volume 326-2 (as represented by dashed arrow 370).
[0040] In response to determining that the resource availability at the first group of controllers 304-1 and 304-2 is not greater than the resource limits ("NO" at 408), the method 400 may proceed to 410. For example, for a container, the resource limit at each controller in the first group of controllers may indicate that the maximum amount of processing resources the container may consume is 30% and that the maximum amount of memory resources the container may consume is 20%. If the resource availability of the processing resources 308-2 is 35% and the resource availability of the memory resources 312-2 is 15%, the first controller 304-1 may determine that the resource availability of the memory resources at the controller 304-2 is below the resource limit (i.e., the memory resources are insufficient).At 410, the first controller 304-1 may select a second set of controllers whose resource availability is greater than the resource limit. In the example of . Fig. the first controller 304-1 may select the controllers 304-1, 304-3 as the second set of controllers, wherein the resource availability of both controllers may be greater than the resource limits.
[0041] At 412 of method 400, the first controller 304-1 may grant permission to the containers to access the storage media 326-1, 326-2. For example, the first controller 304-1 may grant permission to the container 322-1A to access and perform operations on the storage volume 326-1 from the first controller 104-1 (as shown by the dashed arrow 360), and to the container 322-1A to access and perform operations on the storage volume 326-2 from the second controller 104-2 (as shown by the dashed arrow 380). In such examples, the controller 304-1 may transfer the container 322-1B from the storage resources 312-2 of the second controller to the storage resources 312-3 of the third controller 304-3 (as shown by the dashed arrow 390).
[0042] At 414 of method 400, the processing resources of the selected set of controllers may execute containers 322-1A and 322-1B. For example, when selecting the first set of controllers, the processing resources 308-1 of the first controller 304-1 may execute the first container 322-1A, and the processing resources 308-2 of the second controller 304-2 may execute the second container 322-1B.
[0043] At 416 of method 400, the first controller 304-1 may determine whether the resource consumption in the group of controllers is greater than the resource limit. The resource consumption may indicate the amount of computational resources (processing resources, memory resources, or the like) consumed at the controllers due to the execution of containers. In some examples, the first controller 304-1 may manage the resource consumption of the containers at each controller using control groups. A control group may include multiple containers that share a common resource limit, as specified in the container specification.
[0044] In response to determining that resource consumption is greater than the resource limit, i.e., that the amount of computing resources consumed by the containers exceeds the resource limit ("YES" at 416), the first controller 304-1 may stop execution of the container in the selected group of controllers and proceed to 410 to select another group of controllers. In response to determining that resource consumption at one or more controllers is not greater than the resource limit ("NO" at 416), the method 400 may proceed to 422. At 422, after executing the container, the first controller 304-1 may send a result of the operation to a target client, which may be specified in the container specification 324-1.
[0045] Examples are given below in relation to the Fig. described. Fig. shows a storage system 502 that performs multiple container management according to an example of the present subject matter. Fig. is a flowchart of an example method 600 for managing multiple containers in storage system 502, wherein the method 600 includes executing containers in storage system 502 to perform a batch operation within resource limits. Although the execution of the method 600 is described below with reference to storage system 502 of Fig. described, other systems suitable for carrying out these methods may also be used (e.g., the memory system 102 of Fig. or the storage system 302 of Fig. . ä.). Furthermore, the implementation of this method is not limited to such examples. Although the flowchart in Fig. shows a specific order of execution of certain functions, the method is not limited to that order. For example, the functions shown sequentially in the flowchart may be executed in a different order, they may be executed concurrently or partially concurrently, or a combination thereof.
[0046] The storage system 502 may include controllers 504-1, 504-2, and 504-3, each containing a corresponding processing resource 508-1, 508-2, 508-3, a corresponding machine-readable storage medium 510-1, 510-2, 510-3, and a corresponding storage resource 512-1, 512-2, 512-3. The controllers 504-1, 504-2, 504-3 and their components may be analogous to the controllers 304-1, 304-2, 304-3. Although, for the sake of clarity, a relatively small number of controllers, machine-readable media, and storage resources are shown in the Fig. illustrated storage system 502, the storage systems in the examples described herein may include more or fewer controllers, machine-readable media, and storage resources.
[0047] In the Fig. In the illustrated example, the first controller 504-1 may include a machine-readable storage medium 510-1 storing at least management instructions 514 that can be executed by the processing resource 508-1 to manage containers in the storage system. In some examples, the first controller 504-1 may be configured as a management controller and enabled to manage multiple containers using at least management instructions 514, while the controllers 504-2, 504-3 may not be enabled to manage the multiple containers. In other examples, one or more of the controllers 504-1, 504-2, 504-3 may be configured as a management controller for managing the multiple containers in the storage system 502. The components of the controllers 504-1, 504-2, 504-3 may communicate via one or more buses 515-1, 515-2, and 515-3, respectively.Each controller 504-1, 504-2, 504-3 may include network interfaces 517-1, 517-2, 517-3, which may be corresponding network interface cards (NICs), FC host bus adapters (HBAs), or the like, for communicating over one or more computer networks. In the example of . Fig. The storage system 502 may be connected to a SAN 518 or another network, such as a network 118, which is Fig. The storage system 502 may also include a persistent repository 540 and an interface 542 analogous to the persistent repository 340 and interface 342 of Fig. The storage system 502 may include storage devices 506 analogous to those described in Fig. illustrated storage devices 106.
[0048] With reference to the examples in Fig. The storage system 502 may manage containers corresponding to multiple container images 522-1, 522-2, 522-3 to perform batch operations. The processing resource 508-1 of the first controller 504-1 may execute the management instructions 514 stored in the machine-readable medium 510-1 to perform the method 600. At 602 of the method 600, the first controller 504-1 may receive a container specification 524 from a host device (e.g., the host device 116-1 of Fig. ) that executes a host application. In the example of Fig. the container specification 524 may include a request to move data stored in the storage system 502 to another storage system (in Fig. not shown). Container specification 524 may, for example, be associated with containers 522-1, 522-2, and 522-3. Each container may be executed to perform one or more operations to move data stored in one storage system to another. For example, container 522-1 may perform a deduplication operation, container 522-2 may perform a snapshot operation, and container 522-3 may perform a transfer operation. In the example of Fig. the container specification 524 may specify container identifiers, storage volume identifiers, controller identifiers, resource limits, and a container policy for executing the containers 522-1A, 522-2A, 522-3A in the storage system 502.
[0049] At 604 of the method 600, the first controller 504-1 may retrieve the container images 522-1, 522-2, 522-3 from the container repository (e.g., container repository 120 of Fig. ) based on the container identifiers specified in the container specification 524. At 606 of the method 600, the first controller 504-1 may select storage media 526-1, 526-2, 526-3 from one or more storage devices using the storage media identifiers specified in the container specification 524.
[0050] At 608 of method 600, the first controller 504-1 may identify the controllers based on the controller identifiers. At 610 of method 600, the first controller 504-1 may include one or more of the identified controllers in a first set of controllers based on the resource availability associated with each of the one or more controllers. For example, the first controller 504-1 may identify the controllers 504-1, 504-2, 504-3 based on the controller identifiers specified in the container specification 524. The first controller 504-1 may determine whether the resource availability of the selected controllers 504-1, 504-2, 504-3 is greater than the resource limits specified in the container specification 524. Resource availability may indicate the level of available (i.e., unused) computing resources at controllers 504-1, 504-2, 504-3.The controller 504-1 may compare the resource availability of the controllers 504-1, 504-2, 504-3 with the resource limits that specify a maximum amount of computing resources that a container executing on the controller can use.
[0051] At 612 of method 600, controller 504-1 may permit containers to access the storage volumes when executing on the respective controllers of the first set of controllers. For example, first controller 504-1 may authorize container 522-1A to access storage volume 526-1, container 522-2A to access storage volume 526-2, and container 522-3A to access storage volume 526-3.
[0052] At 614 of method 600, the first controller 504-1 may determine whether or not a time interval is defined in the container policy. In response to determining that a time interval is defined in the container policy ("YES" at 614), the method 600 proceeds to 616. At 616, the first controller 504-1 may schedule execution of the containers 522-1A, 522-2A, 522-3A by the processing resources 508-1, 508-2, and 508-3, respectively, in the time interval. In such examples, the processing resources 508-1, 508-2, and 508-3 may execute the containers 522-1A, 522-2A, and 522-3A, respectively, at regular intervals. In response to determining that a time interval is not defined in the container policy ("NO" at 614), the method 600 may proceed to 618. At 618, the processing resources 508-1, 508-2, 508-3 may execute the containers 522-1A, 522-2A, 522-3A on the respective controllers.In some examples, processing resource 508-1 may execute container 522-1A to perform a deduplication operation on storage volume 526-1. Processing resource 508-2 may execute container 522-2A to perform a snapshot operation on storage volume 526-2. Processing resource 508-3 may execute container 522-3A to perform a transfer operation on storage volume 526-3.
[0053] In some examples, the container policy may contain batch commands for performing multiple operations on one or more storage devices in a batch. In the example of Fig. the processing resources 508-1, 508-2, 508-3 may execute the containers 522-1A, 522-2A, 522-3A to perform a batch operation. In some examples, the batch processing may include passing a result of the execution of one container to another container as input. An example of such a batch operation may include one or more deduplication operations, a snapshot operation, and a transfer operation, each performed by the execution of a container. For example, the first controller 504-1 may send a result 590 (e.g., a deduplicated representation of the storage volume 526-1) of the execution of the container 522-1A to the storage resource 512-2 of the second controller 504-2. The container 522-2A may use the result 590 as input during its execution and return a result 591 (e.g.,Send a snapshot of the deduplicated representation of the storage volume 526-1 to the storage resource 512-3. Container 522-3A may use the result 591 as input during its execution to perform a transfer operation (e.g., transfer to a target client).
[0054] In other examples, the batch operation may include multiple operations performed separately on different storage media. In such examples, container 522-1A may access storage volume 526-1 (as represented by dashed arrow 560), container 522-2A may access storage volume 526-2 (as represented by dashed arrow 570), and container 522-3A may access storage volume 526-3 (as represented by dashed arrow 580). Processing resources 508-1, 508-2, 508-3 may execute containers 522-1A, 522-2A, 522-3A to perform the operation on storage media 526-1, 526-2, 526-3.
[0055] In some examples, the container specification may include a target client. The first controller 504-1 may deliver a final result of the operations as a batch result to the target client (e.g., the target client device 128 of Fig. ). In some examples, the controller 504-1 may be configured to monitor the containers 522-1A, 522-2A, 522-3A. For example, the controller 504-1 may monitor the status of the container to detect the occurrence of a failure event associated with the containers. In response to the failure event, the first controller 504-1 may perform an action to mitigate the failure event. In the example of Fig. At 620, the controller 504-1 may send a notification or alert indicating the error event to a host device. Some examples of an error event may include unauthorized downloading of container images from the container repository, invalid information in the container specification (such as invalid container identifiers, storage identifiers, controller identifiers, container policies, or the like), excessive consumption of compute resources due to the execution of a container, the availability of network interfaces, or the like.
[0056] Fig. shows a block diagram 700 illustrating a processing resource 702 and a machine-readable medium 704 encoded with example instructions to facilitate the management of containers in storage systems according to an example. The machine-readable medium 704 may be non-transitory and is alternatively referred to as a non-transitory machine-readable medium 704. In some examples, the machine-readable medium 704 may be accessed by the processing resource 702. In some examples, the processing resource 702 may be an example of the processing resource 108-1 of the related Fig. described storage system 102. Furthermore, the machine-readable medium 704 may be an example of the machine-readable medium 110-1 of the storage system 102 described with respect to Fig. described storage system 102.
[0057] The machine-readable medium 704 may be any electronic, magnetic, optical, or other physical storage device capable of storing data and / or executable instructions. As described in detail herein, the machine-readable medium 704 may be embodied with executable instructions 706, 708, 710, 712, 714, and 716 (hereinafter collectively referred to as instructions 706-716) for performing the Fig. described method 200. Although not shown, in some examples, the machine-readable medium 704 may be encoded with certain additional executable instructions to perform the method 200 of Fig. and / or other operations performed by the storage system 102, without limiting the scope of the present disclosure.
[0058] The processing resource 702 may be a physical device capable of retrieving and executing the instructions 706-718 stored in the machine-readable medium 704, or combinations thereof. In some examples, the processing resource 702 may retrieve, decode, and execute the instructions 706-718 stored in the machine-readable medium 704 to manage containers in storage systems. In certain examples, alternatively or in addition to retrieving and executing the instructions 706-718, the processing resource 702 may include at least one IC, other control logic, other electronic circuitry, or combinations thereof, including a series of electronic components for performing the functions performed, for example, by the system 102 of Fig. should be executed.
[0059] Instructions 706, when executed by processing resource 702, may cause processing resource 702 to receive instructions to receive a container specification associated with the container from a host device coupled to the storage system. The container specification specifies a container identifier, a storage volume identifier, a controller identifier, and a resource boundary. Instructions 708, when executed by processing resource 702, may cause processing resource 702 to obtain a container image from a container repository based on the container identifier. Instructions 710, when executed by processing resource 702, may cause processing resource 702 to select a storage volume from one or more storage devices in the storage system based on the storage volume identifier.Instructions 712, when executed by processing resource 702, may cause processing resource 702 to select a controller from the plurality of controllers based on the controller identifier. Instructions 714, when executed by processing resource 702, may cause processing resource 702 to authorize the container to access the storage volume. Further, instructions 716, when executed by processing resource 702, may cause processing resource 702 to execute a container on the first controller to perform an operation on the storage volume if a resource availability at the first controller is determined to be greater than the resource limit.
[0060] In the examples described herein, the phrase "based on" is not exclusive and should not be understood as "based exclusively on." Rather, the phrase "based on" as used herein is inclusive and means the same as the alternative phrase "based at least on" or "based at least in part on." As such, any determination, decision, comparison, or the like described herein as being "based on" a particular condition, data, or the like may be understood to mean that the decision, comparison, or the like is at least based on (or at least in part based on) that condition, data, or the like, and may also be based on other conditions, data, or the like.In the examples described herein, functionality described as being performed by "instructions" can be understood as functionality that can be performed by those instructions when executed by a processing resource. In other examples, functionality described in terms of instructions can be implemented by one or more machines, which can be any combination of hardware and programming to implement the functionality of the machine(s).
[0061] A "computer system" may be a server, a storage device, a storage array, a desktop or laptop computer, a switch, a router, or other processing device or equipment that includes a processing resource. In the examples described herein, a processing resource may include, for example, one or more processors included in a single computer system or distributed across multiple computer systems. As used herein, a "processor" may be at least one central processing unit (CPU), a core, a semiconductor-based microprocessor, a graphics processing unit (GPU), a field-programmable gate array (FPGA) configured to fetch and execute instructions, other electronic circuitry capable of fetching and executing instructions stored on a machine-readable storage medium, or a combination thereof.In the examples described herein, a processing resource may retrieve, decode, and execute the instructions stored on a storage medium to perform the functions described with respect to the instructions stored on the storage medium. In other examples, the functions described with respect to the instructions described herein may be implemented in the form of electronic circuits, in the form of executable instructions encoded on a machine-readable storage medium, or a combination thereof. The storage medium may either be located within the computer system that executes the machine-readable instructions, or it may be remote from the computer system but accessible for execution (e.g., via a computer network). In the examples presented herein, the storage media 110-1, 110-2 may each be implemented by one or more machine-readable storage media.While the storage medium 110-1, 110-2 is illustrated as being separate from the physical memory 112-1, 112-2, in some embodiments they may be separate, while in other embodiments they may not be separate.
[0062] In the examples described herein, a storage system or storage arrangement may be a computer system that includes a plurality of storage devices and one or more controllers that interact with host devices and control access to the storage devices. In some examples, the storage devices may include HDDs, SSDs, or any other suitable type of storage device, or a combination thereof. In some examples, the controllers may virtualize the storage capacity provided by the storage devices to enable a host to access a virtual volume comprised of storage space from multiple different storage devices.
[0063] In other examples, the functions described above with respect to the instructions described herein may be implemented by one or more machines, which may be any combination of hardware and programming to implement the functions of the machine(s). In the examples described herein, such combinations of hardware and programming may be implemented in a variety of ways. For example, the programming for the motors may consist of processor-executable instructions stored on at least one non-transitory, machine-readable storage medium, and the hardware for the motors may include at least one processing resource to execute those instructions. In some examples, the hardware may also include other electronic circuitry to at least partially implement at least one of the machines.In some examples, the at least one machine-readable storage medium may store instructions that, when executed by the at least one processing resource, at least partially implement some or all of the engines. In such examples, a computer system may include the at least one machine-readable storage medium storing the instructions and the at least one processing resource for executing the instructions. In other examples, the engine may be implemented by electronic circuitry.
[0064] A "machine-readable storage medium" may be any electronic, magnetic, optical, or other physical storage medium that contains or stores information such as executable instructions, data, or the like. For example, any machine-readable storage medium described herein may be RAM, EEPROM, volatile memory, non-volatile memory, flash memory, a storage drive (e.g., an HDD, an SSD), any type of storage disk (e.g., a compact disc, a DVD, etc.), or the like, or a combination thereof. Furthermore, any machine-readable storage medium described herein may be non-transitory. In the examples described herein, a machine-readable storage medium or media may be part of an article (or article of manufacture). An article or article of manufacture may refer to a single manufactured component or to multiple components.In some examples, instructions may be part of an installation package that, when installed, may be executed by a processing resource to implement the functionality described herein. All features disclosed in this description (including any accompanying claims, abstracts, and drawings) and / or all elements of the disclosed methods or processes may be combined in any combination, except for combinations where at least some of these features and / or elements are mutually exclusive. For example, functionality described herein may be implemented with respect to any of the . Fig. in combination with functionalities described herein in relation to another of the Fig. be provided.
Claims
[1] A non-transitory, machine-readable storage medium (704) storing instructions executable by a storage system (102; 302; 502) comprising a plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3), the instructions being executable to: receive a container specification (124-1; 324-1; 524) from a host device (116) coupled to the storage system (102; 302; 502), the container specification (124-1; 324-1; 524) comprising a configuration file including a container identifier, a storage volume identifier, a controller identifier, and a resource limit; obtain a container image (122-1; 322-1; 522-1, 522-2, 522-3) from a container repository (120) based on the container identifier; select a storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3) stored on one or more storage devices (106; 306; 506) in the storage system (102; 302; 502) based on the storage volume identifier; selecting a first controller (104-1; 304-1; 504-1) from the plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) based on the controller identifier contained in the configuration file; to authorize a container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) to be executed from the container image (122-1; 322-1; 522-1, 522-2, 522-3) to access the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3); to determine whether or not the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) should be executed from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the first controller (104-1; 304-1; 504-1) to perform an operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3) based on whether or not a resource availability on the first controller (104-1; 304-1; 504-1) is greater than the resource limit; and in response to a determination that a resource availability at the first controller (104-1; 304-1; 504-1) is greater than the resource limit, and based on the authorization: execute the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the first controller (104-1; 304-1; 504-1) to perform an operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3). [2] The non-transitory, machine-readable storage medium (704) of claim 1, wherein the instructions further comprise instructions to: in response to a determination that the resource availability at the first controller (104-1; 304-1; 504-1) is not greater than the resource limit: based on the resource availability at a second controller (104-2; 304-2; 504-2), selecting the second controller (104-2; 304-2; 504-2) from the plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) to execute the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A); and execute the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the second controller (104-2; 304-2; 504-2) to perform the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3). [3] The non-transitory, machine-readable storage medium (704) of claim 2, wherein the container specification (124-1; 324-1; 524) specifies a target client (128), and wherein the instructions further comprise instructions to: in response to the operation, send a result of the operation to the target client. [4] The non-transitory, machine-readable storage medium (704) of claim 1, wherein the container specification (124-1; 324-1; 524) specifies a container policy, and wherein the container policy specifies a predetermined time interval to perform the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3). [5] The non-transitory machine-readable storage medium (704) of claim 4, wherein the instructions further comprise instructions to: to schedule an execution of the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the first controller (104-1; 304-1; 504-1) in the predetermined time interval, wherein the execution comprises performing the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3); and in response to the operation, send a result of the operation to a target client. [6] The non-transitory machine-readable storage medium (704) of claim 1, wherein the instructions further comprise instructions to: to monitor resource consumption of the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) on the first controller (104-1; 304-1; 504-1); and to determine whether resource consumption exceeds the resource limit. [7] The non-transitory, machine-readable storage medium (704) of claim 6, wherein the instructions further comprise instructions to: in response to a determination that the resource consumption is greater than the resource limit, to stop execution of the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) on the first controller (104-1; 304-1; 504-1). [8] The non-transitory machine-readable storage medium (704) of claim 6, wherein the instructions further comprise instructions to: in response to a determination that resource consumption is greater than the resource limit: select one or more controllers for executing the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A); and execute the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the one or more controllers to perform the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3). [9] The non-transitory, machine-readable storage medium (704) of claim 1, wherein the instructions further comprise instructions to: to monitor a container status associated with the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A); and in response to detecting an error event associated with the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) based on the container status, send a notification to the host device (116) indicating the error event. [10] A device comprising a non-transitory, machine-readable storage medium (704) according to claim 1. [11] A storage system (102; 302; 502) comprising: a plurality of storage devices (106; 306; 506); a plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3), wherein at least one controller of the plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) comprises at least one processing resource (702) and at least one non-transitory machine-readable storage medium (704) comprising instructions executable by the at least one processing resource (702) to: receive from a host device (116) coupled to the storage system (102; 302; 502) a request comprising a container specification (124-1; 324-1; 524), wherein the container specification (124-1; 324-1; 524) comprises a configuration file containing one or more container identifiers, storage volume identifiers, controller identifiers, a resource limit, and a container policy, wherein the container policy specifies batch operation commands; obtain one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) from a container repository (120) based on the one or more container identifiers included in the container specification (124-1; 324-1; 524); selecting storage volumes (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3) stored on the plurality of storage devices (106; 306; 506) based on the storage volume identifiers contained in the configuration file; selecting a first set of controllers from the plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) based on the controller identifiers contained in the configuration file, wherein selecting the first set of controllers comprises: Identifying a specific controller from the plurality of controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) based on the controller identifiers contained in the configuration file, and in response to a determination that resource availability at the particular controller is greater than the resource limit contained in the configuration file, including the particular controller in the first set of controllers; to allow one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) to be executed from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) to access one or more of the storage volumes (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3); and based on the batch operation commands in the container policy and the authorization, execute the one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) on the respective controllers of the first set of controllers to perform a batch operation. [12] The storage system (102; 302; 502) of claim 11, wherein the container specification (124-1; 324-1; 524) specifies a predetermined time interval, and wherein the instructions are executable by the at least one processing resource (702) to: to schedule execution of the one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) on the respective controllers in the predetermined time interval to perform the batch operation. [13] The storage system (102; 302; 502) of claim 11, wherein the batch operation instructions included in the container specification (124-1; 324-1; 524) comprise a first instruction to perform data deduplication and a second instruction to perform data transfer, and wherein executing the one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) on the respective controllers of the first set of controllers to perform the batch operation comprises executing a first container from a first container image on a first controller (104-1; 304-1; 504-1) of the first set of controllers and a second container from a second container image on a second controller (104-2; 304-2; 504-2) of the first set of controllers, wherein the first container (104-1; 304-1;504-1) performs data deduplication and the second container performs data transfer.; [14] The storage system (102; 302; 502) of claim 11, wherein the instructions are executable by the at least one processing resource (702) to: in response to a determination that a resource consumption of one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) executing on the first set of controllers is greater than the resource limit: select a second set of controllers for executing the one or more containers from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3); and execute the one or more containers (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the one or more container images (122-1; 322-1; 522-1, 522-2, 522-3) on the respective controllers of the second set of controllers. [15] A method (200) comprising: Receiving (202) a container specification (124-1; 324-1; 524) comprising a configuration file including a container identifier, a storage volume identifier, a controller identifier, and a resource limit at a management controller from a host device (116) coupled to a storage system (102; 302; 502) comprising a plurality of storage controllers; Obtaining (204) a container image (122-1; 322-1; 522-1, 522-2, 522-3) from a container repository (120) by the management controller based on the container identifier contained in the configuration file; Selecting (206) by the management controller a storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3) stored on one or more storage devices (106; 306; 506) in the storage system (102; 302; 502) based on the storage volume identifier contained in the configuration file; Authorizing (210), by the management controller, a container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) to be executed from the container image (122-1; 322-1; 522-1, 522-2, 522-3) to access the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3); Selecting (208) a first memory controller (104-1; 304-1; 504-1) from the plurality of memory controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) by the management controller based on the controller identifier contained in the configuration file; Determining (212) by the management controller whether or not to execute the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the first storage controller (104-1; 304-1; 504-1) to perform an operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3) based on whether or not a resource availability at the first storage controller is greater than the resource limit; in response to a determination that the resource availability at the first storage controller (104-1; 304-1; 504-1) is greater than the resource limit, and based on the authorization, executing the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the first storage controller (104-1; 304-1; 504-1) to perform the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3); and in response to an error event associated with the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A), sending a notification from the management controller to the host device (116) indicating the error event. [16] The method (200) of claim 15 comprising: in response to a determination that the resource availability at the first memory controller (104-1; 304-1; 504-1) is not greater than the resource limit: Selecting a second storage controller (104-2; 304-2; 504-2) from the plurality of storage controllers (104-1, 104-2; 304-1, 304-2, 304-3; 504-1, 504-2, 504-3) by the management controller to execute the container from the container image (122-1; 322-1; 522-1, 522-2, 522-3); and Executing the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) from the container image (122-1; 322-1; 522-1, 522-2, 522-3) on the second storage controller (104-2; 304-2; 504-2) to perform the operation on the storage volume (126-1 to 126-P; 326-1 to 326-P; 526-1, 526-2, 526-3). [17] The method (200) of claim 15, wherein the error event associated with the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) comprises: a detection that a resource consumption of the container (122-1A; 322-1A, 322-1B; 522-1A, 522-2A, 522-3A) on the first memory controller (104-1; 304-1; 504-1) is greater than the resource limit; or a detection that the container image (122-1; 322-1; 522-1, 522-2, 522-3) is not authenticated. [18] The method (200) of claim 17, comprising: in response to detecting that the container image (122-1; 322-1; 522-1, 522-2, 522-3) is not authenticated, authenticating the container image with a license key.
Citation Information
Patent Citations
Storage manager for virtual machines with virtual storage
US20120005673A1
Containerizing a block storage service
US20180018116A1
Tiering Data Strategy for a Distributed Storage System
US20190146718A1
System for assigning and monitoring grid jobs on a computing grid
US7644408B2
