Storage array device resource configuration method, apparatus, device, and storage medium
By extending the CSI interface to define storage array information classes and information, periodically calculating the service level of storage array devices, and automatically matching the application type of container groups, the problem of uneven resource utilization of storage array devices in the Kubernetes CSI interface is solved, achieving efficient resource allocation and meeting business load requirements.
Patent Information
- Application Number
- CN202311428731.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-10-31
- Publication Date
- 2026-08-25
- Estimated Expiration
- 2043-10-31
AI Technical Summary
In existing technologies, the Kubernetes CSI interface cannot effectively manage storage array device resources, resulting in uneven resource usage and load imbalance, which cannot meet the actual business load requirements.
By extending the CSI interface to define storage array information classes and storage array information, the system periodically acquires and saves storage array information, calculates the service level of storage array devices based on a custom formula, and automatically matches the application type of container groups with the service level of storage array devices to achieve automated allocation of storage resources.
It maximizes the utilization of storage array device resources, reduces operational complexity, improves the efficiency and accuracy of resource allocation, and meets the needs of business workloads.
Smart Images

Figure CN117435138B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of server technology, and in particular to a method, apparatus, computer device, and storage medium for configuring storage array devices. Background Technology
[0002] With the rapid development of mobile internet, IoT, cloud computing / big data / artificial intelligence, data is growing at an unprecedented rate, making data storage, management, optimization, and utilization challenging. Container technology, represented by Docker, has rapidly gained popularity due to its simple, lightweight virtualization solutions and quick deployment capabilities; Docker, as the de facto standard for container runtimes, holds a market share of approximately 99%. Meanwhile, the demands of large-scale application deployments require a large number of server nodes for deployment, management, and orchestration. Kubernetes (K8s), a portable, scalable, and open-source container-centric management platform developed by Google, has become the de facto standard in container orchestration. K8s utilizes declarative configuration and automation to manage containers, uniformly scheduling and managing computing, network, and storage infrastructure resources based on user business needs. K8s employs a master-slave distributed architecture, consisting of a master node and worker nodes.
[0003] With Kubernetes (K8s) becoming the de facto standard in container orchestration, the CSI interface, primarily designed for K8s, has become the de facto standard for interfacing with storage in the container domain. CSI, short for Container Storage Interface, is the latest industry standard for "container storage interface," aiming to establish a standard storage call interface between container orchestration engines and storage systems. This interface provides storage services to container orchestration engines. However, the standard CSI interface still has the following problems: First, the management of storage resources (block devices, shared resources, etc.) still requires selecting a specific storage array before creating the corresponding storage resources; the operation is relatively complex, and the capacity and performance provided by the storage resources may not meet the actual business load. Second, it is impossible to maximize the utilization of storage array resources among multiple storage array devices managed by CSI plugins, potentially leading to uneven resource usage and load imbalance. Summary of the Invention
[0004] Therefore, it is necessary to provide a method, apparatus, computer equipment, and storage medium for configuring storage array resources to avoid uneven resource utilization and unbalanced load in storage array devices, in order to address the above-mentioned technical problems.
[0005] On the one hand, a method for configuring resources of a storage array device is provided, the method comprising:
[0006] The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin;
[0007] The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval.
[0008] The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0009] Define the application type of the container group in the CSI plugin, and match and associate the application type of the container group with the service level corresponding to the storage array device.
[0010] In response to the creation of storage resources on a container group through the CSI plugin, the application type of the container group is obtained, the service level of the matching storage array device is obtained according to the application type of the container group, and the creation of storage resources and container group binding are completed in the storage array device with the corresponding matching service level.
[0011] In one embodiment, the step of extending the CSI standard interface to define the storage array information class and storage array information, and defining multiple interfaces and corresponding interface fields includes:
[0012] Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number, storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity;
[0013] Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status;
[0014] Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned.
[0015] Define a fourth interface, the fields of which include obtaining the storage protocol or specification;
[0016] Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID;
[0017] Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy;
[0018] Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second, and CPU / memory usage.
[0019] Define an eighth interface, the fields of which include obtaining one or more of the following: FC / iSCSI / / RoCE storage;
[0020] Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
[0021] In one embodiment, the step of controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval includes:
[0022] Obtain a cluster of available capacity data for multiple storage array devices, and use the storage array device with the largest available capacity as a benchmark to calculate the available capacity coefficient CapacityRatio for each storage array device;
[0023] The number of read and write operations per second for multiple storage array devices is obtained. The average number of read and write operations per second for each storage array device within a second time period is calculated. The storage array device with the highest average number of read and write operations per second is used as the benchmark to calculate the IopsRatio coefficient for the number of read and write operations per second for each storage array device.
[0024] Obtain the input / output latency set of multiple storage array devices, calculate the average input / output latency value of each storage array device in the second time period, and calculate the input / output latency coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency.
[0025] Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx = a*CapacityRatio + b*IopsRatio - c*IodelayRatio. Control the CSI plug-in to sort the storage array devices in descending order according to their serviceability coefficient Lx, and configure the corresponding storage array devices into multiple service levels based on the descending order of their serviceability coefficient Lx.
[0026] In one embodiment, the step of obtaining a cluster of available capacity data sets of multiple storage array devices, and calculating the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity, includes:
[0027] The maximum value among the cluster available capacity data sets of multiple storage array devices is used as the storage array device with the largest available capacity, Max(CapacitySet).
[0028] The available capacity (Capacity) of each storage array device is obtained. Using the storage array device with the largest available capacity (Max(CapacitySet)) as a benchmark, the available capacity coefficient (CapacityRatio) of each storage array device is calculated using the formula Capacity / Max(CapacitySet), where the value of CapacityRatio ranges from (0, 1). In one embodiment, the step of obtaining the number of read / write operations per second for multiple storage array devices, calculating the average number of read / write operations per second for each storage array device within a second time period, and calculating the read / write operation coefficient (IopsRatio) of each storage array device based on the storage array device with the largest average number of read / write operations per second includes:
[0029] The number of read / write operations per second (bps) for multiple storage array devices is obtained. For each storage array device, the number of bps read / write operations per second is collected at Tn time points within the second duration. The sum of the bps read / write operations per second (∑IOPS) for each storage array device within the second duration (Tn time points) is calculated. The average number of bps read / write operations per second (avgIops) for each storage array device within the second duration is calculated using the formula ∑IOPS / Tn. The maximum value among the average number of bps read / write operations per second for multiple storage array devices within the second duration is obtained as the storage array device with the maximum average number of bps read / write operations per second (Max(avgIopsSet)). Based on the storage array device with the maximum average number of bps read / write operations per second (Max(avgIopsSet)), the coefficient IopsRatio for the number of bps read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value of IopsRatio ranges from (0, 1).
[0030] In one embodiment, the steps of obtaining the input / output latency set of multiple storage array devices, calculating the average input / output latency value of each storage array device within a second time period, and calculating the input / output latency coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency include:
[0031] Obtain the input / output latency set of multiple storage array devices. Each storage array device acquires input / output latency data at Tn time points within the second time period. Calculate the sum of input / output latency data ∑IO of each storage array device at Tn time points within the second time period. Calculate the average input / output latency avgIodelay of each storage array device within the second time period using the formula ∑IO / Tn.
[0032] The maximum value among the average input / output delays of multiple storage array devices over a second time period is taken as the storage array device with the maximum average input / output delay, Max(avgIodelaySet).
[0033] Using the storage array device Max(avgIodelaySet) with the maximum average input / output latency as a benchmark, the input / output latency coefficient IodelayRatio of each storage array device is calculated using the formula avgIodelay / Max(avgIodelaySet), where the value of IodelayRatio ranges from (0 to 1).
[0034] In one embodiment, the step of defining the application type of the container group in the CSI plugin and matching the application type of the container group with the service level corresponding to the storage array device includes:
[0035] In the CSI plugin, the application type of the container group is defined. The application type of the container group is configured with multiple levels, and an identifier field is set for the container group at each level of application type.
[0036] Container groups of multiple application types are matched and associated with multiple service levels corresponding to storage array devices.
[0037] On the other hand, a storage array device resource configuration apparatus is provided, the apparatus comprising:
[0038] The interface extension module is used to extend the definition of storage array information classes and storage array information for CSI interfaces, define multiple interfaces and corresponding interface fields, and implement resource storage array information classes, storage array information and corresponding interfaces in the CSI plugin;
[0039] The storage array information management module is used to control the CSI plug-in to periodically acquire the managed storage array information and save it to the database at a first time interval.
[0040] The service level management module is used to control the CSI plug-in to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0041] The container group management module is used to define the application type of a container group in the CSI plugin and match and associate the application type of the container group with the service level corresponding to the storage array device.
[0042] The storage resource matching management module is used to respond to the creation of storage resources on the container group through the CSI plugin, obtain the application type of the container group, obtain the service level of the matching storage array device according to the application type of the container group, and complete the creation of storage resources and container group binding in the storage array device with the corresponding matching service level.
[0043] In another aspect, a computer device is provided, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the computer program to perform the following steps:
[0044] The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin;
[0045] The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval.
[0046] The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0047] Define the application type of the container group in the CSI plugin, and match and associate the application type of the container group with the service level corresponding to the storage array device.
[0048] In response to the creation of storage resources on a container group through the CSI plugin, the application type of the container group is obtained, the service level of the matching storage array device is obtained according to the application type of the container group, and the creation of storage resources and container group binding are completed in the storage array device with the corresponding matching service level.
[0049] In another aspect, a computer-readable storage medium is provided having a computer program stored thereon, which, when executed by a processor, performs the following steps:
[0050] The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin;
[0051] The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval.
[0052] The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0053] Define the application type of the container group in the CSI plugin, and match and associate the application type of the container group with the service level corresponding to the storage array device.
[0054] In response to the creation of storage resources on a container group through the CSI plugin, the application type of the container group is obtained, the service level of the matching storage array device is obtained according to the application type of the container group, and the creation of storage resources and container group binding are completed in the storage array device with the corresponding matching service level.
[0055] The aforementioned storage array device resource configuration method, apparatus, computer equipment, and storage media, outside of the CSI interface standard, obtain relevant standard information about storage resources by custom-defining two types of resources: storage array information class and storage array information. Simultaneously, it periodically calculates and refreshes the service levels corresponding to the multiple managed storage array devices, and matches and associates the application types of container groups with the corresponding service levels of the storage array devices, laying a solid foundation for subsequent automated allocation of optimal resources. Based on the application type of the container group, it automatically selects the most suitable storage resources for creation and allocation; reducing the operational difficulty of allocating the most appropriate resources to business workloads and applications in the container domain, and lowering the barrier to entry. Attached Figure Description
[0056] To more clearly illustrate the technical solutions in the embodiments of the present invention, the accompanying drawings used in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings described below are only some embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0057] Figure 1 This is an application environment diagram of a storage array device resource configuration method in one embodiment of this application;
[0058] Figure 2 This is a flowchart illustrating a storage array device resource configuration method in one embodiment of this application;
[0059] Figure 3 This is a flowchart illustrating the steps of controlling the CSI plug-in to periodically calculate and refresh the service level corresponding to the multiple storage array devices under its management at a second time interval in one embodiment of this application.
[0060] Figure 4 This is a flowchart illustrating the steps of defining the application type of a container group in the CSI plugin and matching the application type of the container group (POD) with the service level corresponding to the storage array device in one embodiment of this application.
[0061] Figure 5 This is a structural block diagram of a storage array device resource configuration apparatus in one embodiment of this application;
[0062] Figure 6 This is an internal structural diagram of a computer device in one embodiment of this application. Detailed Implementation
[0063] To make the objectives, technical solutions, and advantages of this application clearer, the following detailed description is provided in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described herein are merely illustrative and not intended to limit the scope of this application.
[0064] As described in the background section, persistent data storage becomes a critical issue after containerizing and deploying applications. To address this, the container industry has evolved through various plugins, including the Docker Volume Plugin interface, K8sin-tree plugins (part of Kubernetes), and K8s out-tree plugins (decoupled from Kubernetes). The K8s out-tree plugins further comprise the older Flex Volume and the current CSI interface. The Kubernetes-facing CSI interface interfaces downwards with storage and upwards with orchestration systems such as Kubernetes, Swarm, Mesos, and Fleet. CSI plugins need to be deployed on Kubernetes master and worker nodes and interact with Kubernetes through various sidecars. Simultaneously, CSI plugins can interface with and manage multiple storage array devices, providing storage resources to Kubernetes through the CSI interface. However, the CSI interface cannot always match the actual storage capacity with the available storage resources, thus failing to maximize the utilization of storage array resources and resulting in uneven resource usage and load imbalance.
[0065] To address the aforementioned problems, this invention creatively proposes a storage array device resource configuration method, which is improved in the following three aspects:
[0066] (1) In addition to the standard CSI interface, a custom interface for obtaining storage information is defined based on the K8s operator. The CSI plugin implements the aforementioned custom interface, periodically obtains information such as storage capacity, capacity, input / output per second (IOPS), and resource usage of the storage array, and performs persistent data storage.
[0067] (2) Taking into account the storage array device's capabilities, capacity, input / output per second (IOPS), resource usage, etc., the CSI plugin calculates and refreshes the corresponding service level of the storage based on a custom formula for the managed storage array periodically; (3) When creating storage resources through the K8sCSI plugin, there is no need to select a specific storage array device; the CSI plugin obtains the application type running in the container group (POD) and automatically selects the appropriate service level storage to create storage resources.
[0068] The storage array device resource configuration method provided in this application can be applied to, for example... Figure 1In the application environment shown, the control terminal 102 communicates with the server 104 via a network. The control terminal 102 can be, but is not limited to, various personal computers, laptops, smartphones, tablets, and portable wearable devices. The server 104 can be a standalone server or a server cluster composed of multiple servers. The control terminal 102 is configured with Kubernetes and implements the definition of standard interfaces and fields by extending two custom resource storage array information classes and storage array information through the Kubernetes CSI plugin. The defined standard interfaces and fields standardize the acquired storage array information. The control terminal 102 manages the storage array devices of the server 104 through the custom CSI plugin, periodically acquiring the managed storage array information and calculating and refreshing the service levels of the managed multiple storage array devices. The CSI plugin ultimately achieves the ability to automatically select and create and allocate the most suitable storage resources based on application type, ensuring that the storage array devices are matched with the actual storage capacity requirements in a timely manner, while maximizing the utilization of storage array device resources.
[0069] Kubernetes is used to deploy applications using native resources such as PODs, Deployments, and Services. However, Kubernetes can also be extended to add new business logic to meet specific needs; this is where Operators come in. The main goal of an Operator is to translate an engineer's logic into code, enabling the automation of tasks that native Kubernetes cannot perform.
[0070] In one embodiment, such as Figure 2 As shown, a method for configuring storage array device resources is provided, which can be applied to... Figure 1 Taking server 104 as an example, the explanation includes the following steps:
[0071] Step S1: Extend the definition of the CSI interface to include the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin; Step S2: Control the CSI plugin to periodically acquire the managed storage array information at a first time interval and save it to the database;
[0072] Step S3: Control the CSI plug-in to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals;
[0073] Step S4: Define the application type of the container group (POD) in the CSI plugin, and match and associate the application type of the container group (POD) with the service level corresponding to the storage array device;
[0074] Step S5: In response to creating storage resources on a container group (POD) through the CSI plugin, the application type of the container group (POD) is obtained, the service level of the matching storage array device is obtained according to the application type of the container group (POD), and the creation of storage resources and binding of the container group (POD) are completed in the storage array device with the corresponding matching service level.
[0075] CSI is the standard interface in Kubernetes (k8s) for interacting with storage systems. It provides functions such as volume management, snapshot management, and capacity management, thus supporting various types of storage systems. A POD is the smallest deployable unit of computation that can be created and managed in Kubernetes. A POD is a group (or group of one or more) of containers; applications / content within a POD are colocated and scheduled together.
[0076] In this embodiment, the steps of extending the CSI standard interface to define the storage array information class and storage array information, and defining multiple interfaces and corresponding interface fields include:
[0077] Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number (SN), storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity;
[0078] Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status;
[0079] Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned.
[0080] Define a fourth interface, the fields of which include obtaining the storage protocol or specification;
[0081] Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID;
[0082] Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy;
[0083] Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second (IOPS), and CPU / memory usage.
[0084] Define an eighth interface, the fields of which include obtaining the storage protocol or specification;
[0085] Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
[0086] Operators are extension software for Kubernetes that leverage custom resource management applications and their components. The Kubernetes Operator pattern concept allows extending cluster capabilities by associating one or more custom resource controllers without modifying the Kubernetes code itself.
[0087] In addition to the CSI standard interface, based on the K8s Operator, two custom resources, StorageInfoClass and StorageInfo, are extended; StorageInfoClass is the storage array information class, and StorageInfo is the storage array information. Simultaneously, the following standard interfaces and fields are defined in the custom resources to standardize the obtained storage array information.
[0088]
[0089] The CSI plugin implements the two custom resources mentioned above and their corresponding standard interfaces. Through the aforementioned interfaces, the CSI plugin periodically obtains information such as cluster / pool / volume capacity, IOPS, controller / host / alarm / resource usage of the managed storage array devices at fixed intervals T1, and saves it to the corresponding database, thus persistently storing the obtained information.
[0090] like Figure 3 As shown, in this embodiment, the step of controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval includes:
[0091] Step S31: Obtain a cluster available capacity data set of multiple storage array devices, and calculate the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity; Step S32: Obtain the number of read / write operations per second (IOPS) value of multiple storage array devices, calculate the average number of read / write operations per second of each storage array device in the second time period, and calculate the number of read / write operations per second coefficient IopsRatio of each storage array device based on the storage array device with the largest average number of read / write operations per second.
[0092] Step S33: Obtain the input / output latency (IO latency) set of multiple storage array devices, calculate the average input / output latency (IO latency) value of each storage array device in the second time period, and calculate the input / output latency (IO latency) coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency (IO latency).
[0093] Step S34: Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency (IO latency) coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx = a*CapacityRatio + b*IopsRatio - c*IodelayRatio.
[0094] Step S35: Control the CSI plug-in to sort the storage array devices in descending order according to the serviceability coefficient Lx of each storage array device, and configure the corresponding storage array devices as multiple service levels according to the descending order of the serviceability coefficient Lx.
[0095] In this embodiment, the step of obtaining a cluster of available capacity data sets of multiple storage array devices, and calculating the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity, includes:
[0096] The maximum value among the cluster available capacity data sets of multiple storage array devices is used as the storage array device with the largest available capacity, Max(CapacitySet).
[0097] The available capacity (Capacity) of each storage array device is obtained. Using the storage array device with the maximum available capacity (Max(CapacitySet)) as a benchmark, the available capacity coefficient (CapacityRatio) of each storage array device is calculated using the formula Capacity / Max(CapacitySet). The value of CapacityRatio ranges from (0, 1). The maximum value of CapacityRatio is 1; a larger value is better, indicating a relatively larger available storage capacity.
[0098] For example, if the CSI plugin manages a total of 3 storage array devices, the corresponding available capacity and available capacity factor are shown in the table below:
[0099] Stor_A 100 (maximum) 100 / 100=1 Stor_B 70 70 / 100=0.7 Stor_C 80 80 / 100=0.8
[0100] The steps include calculating the average number of read / write operations per second (IOPS) for each storage array device over a second time period, and then calculating the IopsRatio coefficient for each storage array device based on the storage array device with the highest average number of read / write operations per second.
[0101] The number of read / write operations per second (IOPS) of multiple storage array devices is obtained. For each storage array device, the number of read / write operations per second (IOPS) data at Tn time points within the second time period is obtained. The sum of the number of read / write operations per second (IOPS) data of each storage array device at Tn time points within the second time period, ∑IOPS, is calculated. The average number of read / write operations per second (avgIops) of each storage array device within the second time period is calculated using the formula ∑IOPS / Tn.
[0102] The maximum value among the average number of read / write operations per second performed by multiple storage array devices within the second time period is obtained as the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second. Based on the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second, the coefficient IopsRatio of the number of read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value range of IopsRatio is (0, 1).
[0103] The maximum value of the IopsRatio coefficient is 1. The larger the value, the better, as a larger value indicates a relatively larger storage IOPS value.
[0104] For example, if the CSI plugin manages a total of 3 storage array devices, the corresponding average IOPS value and IOPS coefficient are shown in the table below:
[0105] Stor_A 3000 3000 / 5000=0.6 Stor_B 5000 (maximum) 5000 / 5000=1 Stor_C 1000 1000 / 5000=0.2
[0106] In this embodiment, the steps of obtaining the input / output latency (I / O latency) set of multiple storage array devices, calculating the average input / output latency (I / O latency) value of each storage array device within a second time period, and calculating the I / O latency coefficient (IodelayRatio) of each storage array device based on the storage array device with the largest I / O latency (I / O latency) include:
[0107] The input / output latency (IO latency) sets of multiple storage array devices are obtained. For each storage array device, a total of Tn time points of input / output latency (IO latency) data are obtained within the second time period. The sum of the input / output latency (IO latency) data of each storage array device at the Tn time points within the second time period, ∑IO, is calculated. The average value of the input / output latency (IO latency) of each storage array device within the second time period, avgIodelay, is calculated using the formula ∑IO / Tn.
[0108] The maximum value among the average values of input / output latency (IO latency) of multiple storage array devices within a second time period is obtained as the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency). Based on the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency), the input / output latency (IO latency) coefficient IodelayRatio of each storage array device is calculated using the formula avgIodelay / Max(avgIodelaySet), where the value range of IodelayRatio is (0, 1).
[0109] The maximum value of the IodelayRatio coefficient is 1. The smaller the value, the better, as a smaller value indicates a faster storage response to I / O.
[0110] For example, if the CSI plugin manages a total of 3 storage array devices, the corresponding average IO latency and IO latency coefficient are shown in the table below:
[0111] Stor_A 0.3 0.3 / 0.5=0.6 Stor_B 0.1 0.1 / 0.5=0.2 Stor_C 0.5 (maximum) 0.5 / 0.5=1
[0112] Based on the expert survey method, i valid questionnaires were distributed and collected from experts. The questionnaire is shown below:
[0113] 1 0.2 0.8 0.5 2 0.3 0.7 0.4 … … … … i ai bi ci
[0114] The received valid questionnaires are aggregated and their average value is calculated to obtain the weight values a, b, and c corresponding to the three parameters.
[0115] The step of controlling the CSI plugin to sort the storage array devices in descending order according to their serviceability coefficient Lx, and configuring the corresponding storage array devices into multiple service levels according to the descending order of their serviceability coefficient Lx, includes: controlling the CSI plugin to sort the storage array devices in descending order according to their serviceability coefficient Lx, and dividing the managed storage array devices into n service levels from high to low according to the ratio of P1:P2:P3:…:Pn, where n is a natural number.
[0116] The CSI plugin, in addition to available capacity, IOPS, and IO latency, reserves interfaces for obtaining other storage parameters, and also reserves the ability to calculate new weight parameters in the calculation of the storage serviceability coefficient Lx.
[0117] like Figure 4 As shown, in this embodiment, the step of defining the application type of the container group (POD) in the CSI plugin and matching and associating the application type of the container group (POD) with the service level corresponding to the storage array device includes: step S41, defining the application type of the container group (POD) in the CSI plugin, wherein the application type of the container group (POD) is configured with multiple levels, and an identifier field is set for each level of application type of the container group (POD).
[0118] Step S42: Match and associate the container groups (PODs) of multiple application types with the multiple service levels corresponding to the storage array devices one by one.
[0119] Specifically, through the CSI plugin, a new `appKind` field is defined in the `storageclass.yaml` file to identify the application type used in the corresponding pod; the `appKind` field can be configured with the following M levels:
[0120]
[0121] When creating storage resources for a running application (POD) using the CSI plugin, the plugin matches the configured `appKind` field with the three types of values specified therein to the three levels of storage services (A->L1; B->L2; C->L3; ...; M->Ln). If no storage service of the same level exists, a higher-level storage resource is selected for allocation. Here, M is a natural number, preferably M = n.
[0122] Understandably, this application can match storage array devices with container groups (PODs) of different application types based on multiple service levels. In this case, container groups (PODs) can be associated with service levels to form adaptive storage methods for different application types. This further identifies and recommends applications to run based on storage resources, and then automatically selects and allocates the most suitable storage resources according to the application type of the container group (POD).
[0123] Therefore, the storage array device resource configuration method also includes:
[0124] Acquire storage resources and identify key fields of the storage resources, and classify the running applications of the storage resources according to the key fields;
[0125] Based on the classification results of the running applications of the storage resources, select the matching container group (POD), and obtain the service level of the matching storage array device according to the application type of the container group. Complete the creation of storage resources and container group binding in the storage array device with the corresponding matching service level.
[0126] When a key field of a storage resource is identified as changing, if the application classification result of the storage resource changes, a matching container group (POD) is selected, and the service level of the matching storage array device is obtained according to the application type of the reselected container group. The storage resource is created and the container group is bound in the storage array device with the corresponding matching service level, and the container group before the change is bound to the storage array device with the service level that matches the application type of the reselected container group.
[0127] The aforementioned storage array device resource configuration method obtains relevant standard information about storage resources by defining two types of resources—storage array information class and storage array information—in addition to the CSI interface standard. Simultaneously, it periodically calculates and refreshes the service levels corresponding to the multiple managed storage array devices, and matches and associates the application type of container groups (PODs) with the corresponding service levels of the storage array devices, laying a solid foundation for subsequent automated allocation of optimal resources. Based on the application type of the container group (POD), it automatically selects the most suitable storage resources for creation and allocation; reducing the operational difficulty of allocating the most appropriate resources to business workloads and applications in the container domain, and lowering the barrier to entry.
[0128] It should be understood that, although Figures 2-4 The steps in the flowchart are shown sequentially as indicated by the arrows, but these steps are not necessarily executed in the order indicated by the arrows. Unless otherwise specified herein, there is no strict order in which these steps are executed, and they can be performed in other orders. Figures 2-4 At least some of the steps in the process may include multiple sub-steps or multiple stages. These sub-steps or stages are not necessarily completed at the same time, but can be executed at different times. The execution order of these sub-steps or stages is not necessarily sequential, but can be executed in turn or alternately with other steps or at least some of the sub-steps or stages of other steps.
[0129] In one embodiment, such as Figure 5 As shown, a storage array device resource configuration device 10 is provided, including: an interface expansion module 1, a storage array information management module 2, a service level management module 3, a container group management module 4, and a storage resource matching management module 5.
[0130] The interface extension module 1 is used to extend the definition of storage array information class and storage array information for CSI interface, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin.
[0131] The storage array information management module 2 is used to control the CSI plug-in to periodically acquire the managed storage array information and save it to the database at a first time interval.
[0132] The service level management module 3 is used to control the CSI plug-in to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0133] The container group management module 4 is used to define the application type of the container group (POD) in the CSI plugin and match and associate the application type of the container group (POD) with the service level corresponding to the storage array device.
[0134] The storage resource matching management module 5 is used to respond to the creation of storage resources on a container group (POD) through the CSI plugin, obtain the application type of the container group (POD), obtain the service level of the matching storage array device according to the application type of the container group (POD), and complete the creation of storage resources and binding of the container group (POD) in the storage array device with the corresponding matching service level.
[0135] like Figure 5 As shown, the storage array device resource configuration device 10 also includes a storage change management module 6.
[0136] The storage change management module 6 is used to acquire storage resources and identify key fields of the storage resources, classify the running applications of the storage resources according to the key fields, select a matching container group (POD) based on the classification result of the running applications of the storage resources, and obtain the service level of the matching storage array device according to the application type of the container group. The storage resources are created and the container group is bound in the storage array device with the corresponding matching service level. When the key fields of the storage resources are identified to change, if the classification result of the running applications of the storage resources changes, a matching container group (POD) is reselected, and the service level of the matching storage array device is obtained according to the application type of the reselected container group. The storage resources are created and the container group is bound in the storage array device with the corresponding matching service level, and the container group before the change is bound to the storage array device with the service level that matches the application type of the reselected container group.
[0137] In this embodiment, the steps of extending the CSI standard interface to define the storage array information class and storage array information, and defining multiple interfaces and corresponding interface fields include:
[0138] Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number (SN), storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity;
[0139] Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status;
[0140] Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned.
[0141] Define a fourth interface, the fields of which include obtaining the storage protocol or specification;
[0142] Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID;
[0143] Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy;
[0144] Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second (IOPS), and CPU / memory usage.
[0145] Define an eighth interface, the fields of which include obtaining one or more of the following: FC / iSCSI / / RoCE storage;
[0146] Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
[0147] In this embodiment, the step of controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval includes:
[0148] Obtain a cluster of available capacity data for multiple storage array devices, and use the storage array device with the largest available capacity as a benchmark to calculate the available capacity coefficient CapacityRatio for each storage array device;
[0149] Obtain the number of read / write operations per second (IOPS) values of multiple storage array devices, calculate the average number of read / write operations per second of each storage array device in the second time period, and calculate the IopsRatio coefficient of each storage array device based on the storage array device with the highest average number of read / write operations per second.
[0150] Obtain the input / output latency (IO latency) set of multiple storage array devices, calculate the average input / output latency (IO latency) value of each storage array device in the second time period, and calculate the input / output latency (IO latency) coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency (IO latency);
[0151] Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency (IO latency) coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx=a*CapacityRatio+b*IopsRatio-c*IodelayRatio.
[0152] The control CSI plugin sorts the storage array devices in descending order according to their serviceability coefficient Lx, and configures the corresponding storage array devices into multiple service levels based on the descending order of their serviceability coefficient Lx.
[0153] In this embodiment, the step of obtaining a cluster of available capacity data sets of multiple storage array devices, and calculating the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity, includes:
[0154] The maximum value among the cluster available capacity data sets of multiple storage array devices is used as the storage array device with the largest available capacity, Max(CapacitySet).
[0155] The available capacity (Capacity) of each storage array device is obtained. Using the storage array device with the largest available capacity (Max(CapacitySet)) as a benchmark, the available capacity coefficient (CapacityRatio) of each storage array device is calculated using the formula Capacity / Max(CapacitySet), where the value of CapacityRatio ranges from (0, 1). In this embodiment, the step of obtaining the number of read / write operations per second (IOPS) of multiple storage array devices, calculating the average number of read / write operations per second for each storage array device within a second time period, and calculating the IopsRatio coefficient of each storage array device based on the storage array device with the largest average number of read / write operations per second includes:
[0156] The number of read / write operations per second (IOPS) of multiple storage array devices is obtained. For each storage array device, the number of read / write operations per second (IOPS) data at Tn time points within the second time period is obtained. The sum of the number of read / write operations per second (IOPS) data of each storage array device at Tn time points within the second time period, ∑IOPS, is calculated. The average number of read / write operations per second (avgIops) of each storage array device within the second time period is calculated using the formula ∑IOPS / Tn.
[0157] The maximum value among the average number of read / write operations per second performed by multiple storage array devices within the second time period is obtained as the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second. Based on the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second, the coefficient IopsRatio of the number of read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value range of IopsRatio is (0, 1).
[0158] In this embodiment, the steps of obtaining the input / output latency (I / O latency) set of multiple storage array devices, calculating the average input / output latency (I / O latency) value of each storage array device within a second time period, and calculating the I / O latency coefficient (IodelayRatio) of each storage array device based on the storage array device with the largest I / O latency (I / O latency) include:
[0159] Obtain the input / output latency (IO latency) sets of multiple storage array devices. For each storage array device, obtain the input / output latency (IO latency) data at Tn time points within the second time period. Calculate the sum of the input / output latency (IO latency) data ∑IO for each storage array device at the Tn time points within the second time period. Calculate the average input / output latency (IO latency) avgIodelay for each storage array device within the second time period using the formula ∑IO / Tn. Obtain the maximum value among the average input / output latency (IO latency) of multiple storage array devices within the second time period as the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency). Based on the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency), calculate the input / output latency (IO latency) coefficient IodelayRatio for each storage array device using the formula avgIodelay / Max(avgIodelaySet), where the value range of IodelayRatio is (0, 1).
[0160] In this embodiment, the step of defining the application type of the container group (POD) in the CSI plugin and matching and associating the application type of the container group (POD) with the service level corresponding to the storage array device includes:
[0161] In the CSI plugin, the application type of the container group (POD) is defined. The application type of the container group (POD) is configured with multiple levels, and an identifier field is set for each level of application type of the container group (POD).
[0162] Container groups (PODs) of multiple application types are matched and associated with multiple service levels corresponding to storage array devices.
[0163] In the aforementioned storage array device resource configuration device, in addition to the CSI interface standard, two types of resources, storage array information class and storage array information, are defined by customization to obtain standard information related to storage resources. Simultaneously, the service levels corresponding to the managed multiple storage array devices are calculated and refreshed periodically, and the application type of container groups (PODs) is matched and associated with the corresponding service levels of the storage array devices, laying a solid foundation for subsequent automated allocation of optimal resources. Based on the application type of the container group (POD), the most suitable storage resources are automatically selected for creation and allocation; this reduces the operational difficulty of allocating the most suitable resources to business workloads and applications in the container domain, lowering the barrier to entry.
[0164] Specific limitations regarding the storage array device resource configuration apparatus can be found in the limitations of the storage array device resource configuration method described above, and will not be repeated here. Each module in the aforementioned storage array device resource configuration apparatus can be implemented entirely or partially through software, hardware, or a combination thereof. These modules can be embedded in or independent of the processor in the computer device in hardware form, or stored in the memory of the computer device in software form, so that the processor can call and execute the operations corresponding to each module.
[0165] In one embodiment, a computer device is provided, which may be a server, and its internal structure diagram may be as follows: Figure 6 As shown, the computer device includes a processor, memory, network interface, and database connected via a system bus. The processor provides computing and control capabilities. The memory includes non-volatile storage media and internal memory. The non-volatile storage media stores the operating system, computer programs, and the database. The internal memory provides an environment for the operation of the operating system and computer programs in the non-volatile storage media. The database stores storage array device resource configuration data. The network interface communicates with an external control terminal via a network connection. When the computer program is executed by the processor, it implements a storage array device resource configuration method.
[0166] Those skilled in the art will understand that Figure 6 The structure shown is merely a block diagram of a portion of the structure related to the present application and does not constitute a limitation on the computer device to which the present application is applied. Specific computer devices may include more or fewer components than those shown in the figure, or combine certain components, or have different component arrangements.
[0167] In one embodiment, a computer device is provided, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the computer program to perform the following steps:
[0168] The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin;
[0169] The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval.
[0170] The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0171] Define the application type of the container group (POD) in the CSI plugin, and match and associate the application type of the container group (POD) with the service level corresponding to the storage array device;
[0172] In response to creating storage resources on a container group (POD) via the CSI plugin, the application type of the container group (POD) is obtained, and the service level of the matching storage array device is obtained according to the application type of the container group (POD). The creation of the storage resources and the binding of the container group (POD) are then completed on the storage array device with the corresponding matching service level. In one embodiment, when the processor executes the computer program, it further implements the following steps:
[0173] The steps of extending the CSI standard interface to define the storage array information class and storage array information, and defining multiple interfaces and their corresponding fields include:
[0174] Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number (SN), storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity;
[0175] Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status;
[0176] Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned.
[0177] Define a fourth interface, the fields of which include obtaining the storage protocol or specification;
[0178] Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID;
[0179] Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy;
[0180] Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second (IOPS), and CPU / memory usage.
[0181] Define an eighth interface, the fields of which include obtaining one or more of the following: FC / iSCSI / / RoCE storage;
[0182] Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
[0183] In one embodiment, the processor, when executing a computer program, also performs the following steps:
[0184] The steps for controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval include:
[0185] Obtain a cluster of available capacity data for multiple storage array devices, and use the storage array device with the largest available capacity as a benchmark to calculate the available capacity coefficient CapacityRatio for each storage array device;
[0186] Obtain the number of read / write operations per second (IOPS) values of multiple storage array devices, calculate the average number of read / write operations per second of each storage array device in the second time period, and calculate the IopsRatio coefficient of each storage array device based on the storage array device with the highest average number of read / write operations per second.
[0187] Obtain the input / output latency (IO latency) set of multiple storage array devices, calculate the average input / output latency (IO latency) value of each storage array device in the second time period, and calculate the input / output latency (IO latency) coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency (IO latency);
[0188] Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency (IO latency) coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx=a*CapacityRatio+b*IopsRatio-c*IodelayRatio.
[0189] The control CSI plugin sorts the storage array devices in descending order according to their serviceability coefficient Lx, and configures the corresponding storage array devices into multiple service levels based on the descending order of their serviceability coefficient Lx.
[0190] In one embodiment, the processor, when executing a computer program, also performs the following steps:
[0191] The step of obtaining a cluster available capacity data set of multiple storage array devices and calculating the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity includes: obtaining the maximum value in the cluster available capacity data set of multiple storage array devices as the storage array device with the largest available capacity Max(CapacitySet);
[0192] The available capacity (Capacity) of each storage array device is obtained. Using the storage array device with the largest available capacity (Max(CapacitySet)) as a benchmark, the available capacity coefficient (CapacityRatio) of each storage array device is calculated using the formula Capacity / Max(CapacitySet), where the value of CapacityRatio ranges from (0, 1). In one embodiment, the processor, when executing the computer program, further implements the following steps:
[0193] The steps of obtaining the number of read / write operations per second (IOPS) values of multiple storage array devices, calculating the average number of read / write operations per second for each storage array device within a second time period, and calculating the IopsRatio coefficient for each storage array device based on the storage array device with the highest average number of read / write operations per second, include:
[0194] The number of read / write operations per second (IOPS) of multiple storage array devices is obtained. For each storage array device, the number of read / write operations per second (IOPS) data at Tn time points within the second time period is obtained. The sum of the number of read / write operations per second (IOPS) data of each storage array device at Tn time points within the second time period, ∑IOPS, is calculated. The average number of read / write operations per second (avgIops) of each storage array device within the second time period is calculated using the formula ∑IOPS / Tn.
[0195] The maximum value among the average number of read / write operations per second performed by multiple storage array devices within the second time period is obtained as the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second. Based on the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second, the coefficient IopsRatio of the number of read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value range of IopsRatio is (0, 1).
[0196] In one embodiment, the processor, when executing a computer program, also performs the following steps:
[0197] The steps of obtaining the input / output latency (I / O latency) set of multiple storage array devices, calculating the average input / output latency (I / O latency) value of each storage array device within a second time period, and calculating the I / O latency coefficient (IodelayRatio) of each storage array device based on the storage array device with the largest I / O latency (I / O latency) include:
[0198] Obtain the input / output latency (IO latency) sets of multiple storage array devices. For each storage array device, obtain the input / output latency (IO latency) data at Tn time points within the second time period. Calculate the sum of the input / output latency (IO latency) data ∑IO for each storage array device at the Tn time points within the second time period. Calculate the average input / output latency (IO latency) avgIodelay for each storage array device within the second time period using the formula ∑IO / Tn. Obtain the maximum value among the average input / output latency (IO latency) of multiple storage array devices within the second time period as the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency). Based on the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency), calculate the input / output latency (IO latency) coefficient IodelayRatio for each storage array device using the formula avgIodelay / Max(avgIodelaySet), where the value range of IodelayRatio is (0, 1).
[0199] In one embodiment, the processor, when executing a computer program, also performs the following steps:
[0200] The steps of defining the application type of a container group (POD) in the CSI plugin and matching the application type of the container group (POD) with the service level corresponding to the storage array device include:
[0201] In the CSI plugin, the application type of the container group (POD) is defined. The application type of the container group (POD) is configured with multiple levels, and an identifier field is set for each level of application type of the container group (POD).
[0202] Container groups (PODs) of multiple application types are matched and associated with multiple service levels corresponding to storage array devices.
[0203] For specific limitations on the steps a processor takes when executing a computer program, please refer to the limitations on the method of configuring storage array device resources mentioned above, which will not be repeated here.
[0204] In one embodiment, a computer-readable storage medium is provided having a computer program stored thereon, the computer program performing the following steps when executed by a processor:
[0205] The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin;
[0206] The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval.
[0207] The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals.
[0208] Define the application type of the container group (POD) in the CSI plugin, and match and associate the application type of the container group (POD) with the service level corresponding to the storage array device;
[0209] In response to creating storage resources on a container group (POD) via the CSI plugin, the application type of the container group (POD) is obtained, and the service level of the matching storage array device is obtained based on the application type of the container group (POD). The creation of the storage resources and the binding of the container group (POD) are then completed on the storage array device with the corresponding service level. In one embodiment, when the computer program is executed by the processor, the following steps are further implemented:
[0210] The steps of extending the CSI standard interface to define the storage array information class and storage array information, and defining multiple interfaces and their corresponding fields include:
[0211] Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number (SN), storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity;
[0212] Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status;
[0213] Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned.
[0214] Define a fourth interface, the fields of which include obtaining the storage protocol or specification;
[0215] Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID;
[0216] Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy;
[0217] Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second (IOPS), and CPU / memory usage.
[0218] Define an eighth interface, the fields of which include obtaining one or more of the following: FC / iSCSI / / RoCE storage;
[0219] Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
[0220] In one embodiment, when the computer program is executed by a processor, it further performs the following steps:
[0221] The steps for controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval include:
[0222] Obtain a cluster of available capacity data for multiple storage array devices, and use the storage array device with the largest available capacity as a benchmark to calculate the available capacity coefficient CapacityRatio for each storage array device;
[0223] Obtain the number of read / write operations per second (IOPS) values of multiple storage array devices, calculate the average number of read / write operations per second of each storage array device in the second time period, and calculate the IopsRatio coefficient of each storage array device based on the storage array device with the highest average number of read / write operations per second.
[0224] Obtain the input / output latency (IO latency) set of multiple storage array devices, calculate the average input / output latency (IO latency) value of each storage array device in the second time period, and calculate the input / output latency (IO latency) coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency (IO latency);
[0225] Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency (IO latency) coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx=a*CapacityRatio+b*IopsRatio-c*IodelayRatio.
[0226] The control CSI plugin sorts the storage array devices in descending order according to their serviceability coefficient Lx, and configures the corresponding storage array devices into multiple service levels based on the descending order of their serviceability coefficient Lx.
[0227] In one embodiment, when the computer program is executed by a processor, it further performs the following steps:
[0228] The step of obtaining a cluster available capacity data set of multiple storage array devices and calculating the available capacity coefficient CapacityRatio of each storage array device based on the storage array device with the largest available capacity includes: obtaining the maximum value in the cluster available capacity data set of multiple storage array devices as the storage array device with the largest available capacity Max(CapacitySet);
[0229] Obtain the available capacity (Capacity) of each storage array device. Using the storage array device with the maximum available capacity (Max(CapacitySet)) as the benchmark, calculate the available capacity coefficient (CapacityRatio) of each storage array device using the formula Capacity / Max(CapacitySet). The value of CapacityRatio ranges from (0 to 1).
[0230] In one embodiment, when the computer program is executed by a processor, it further performs the following steps:
[0231] The steps of obtaining the number of read / write operations per second (IOPS) values of multiple storage array devices, calculating the average number of read / write operations per second for each storage array device within a second time period, and calculating the IopsRatio coefficient for each storage array device based on the storage array device with the highest average number of read / write operations per second, include:
[0232] The number of read / write operations per second (IOPS) of multiple storage array devices is obtained. For each storage array device, the number of read / write operations per second (IOPS) data at Tn time points within the second time period is obtained. The sum of the number of read / write operations per second (IOPS) data of each storage array device at Tn time points within the second time period, ∑IOPS, is calculated. The average number of read / write operations per second (avgIops) of each storage array device within the second time period is calculated using the formula ∑IOPS / Tn.
[0233] The maximum value among the average number of read / write operations per second performed by multiple storage array devices within the second time period is obtained as the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second. Based on the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second, the coefficient IopsRatio of the number of read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value range of IopsRatio is (0, 1).
[0234] In one embodiment, when the computer program is executed by a processor, it further performs the following steps:
[0235] The steps of obtaining the input / output latency (I / O latency) set of multiple storage array devices, calculating the average input / output latency (I / O latency) value of each storage array device within a second time period, and calculating the I / O latency coefficient (IodelayRatio) of each storage array device based on the storage array device with the largest I / O latency (I / O latency) include:
[0236] Obtain the input / output latency (IO latency) sets of multiple storage array devices. For each storage array device, obtain the input / output latency (IO latency) data at Tn time points within the second time period. Calculate the sum of the input / output latency (IO latency) data ∑IO for each storage array device at the Tn time points within the second time period. Calculate the average input / output latency (IO latency) avgIodelay for each storage array device within the second time period using the formula ∑IO / Tn. Obtain the maximum value among the average input / output latency (IO latency) of multiple storage array devices within the second time period as the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency). Based on the storage array device Max(avgIodelaySet) with the maximum average input / output latency (IO latency), calculate the input / output latency (IO latency) coefficient IodelayRatio for each storage array device using the formula avgIodelay / Max(avgIodelaySet), where the value range of IodelayRatio is (0, 1).
[0237] In one embodiment, when the computer program is executed by a processor, it further performs the following steps:
[0238] The steps of defining the application type of a container group (POD) in the CSI plugin and matching the application type of the container group (POD) with the service level corresponding to the storage array device include:
[0239] In the CSI plugin, the application type of the container group (POD) is defined. The application type of the container group (POD) is configured with multiple levels, and an identifier field is set for each level of application type of the container group (POD).
[0240] Container groups (PODs) of multiple application types are matched and associated with multiple service levels corresponding to storage array devices.
[0241] For specific limitations on the steps implemented when a computer program is executed by a processor, please refer to the limitations on the method of configuring storage array device resources mentioned above, which will not be repeated here.
[0242] Those skilled in the art will understand that all or part of the processes in the methods of the above embodiments can be implemented by a computer program instructing related hardware. The computer program can be stored in a non-volatile computer-readable storage medium, and when executed, it can include the processes of the embodiments of the above methods. Any references to memory, storage, databases, or other media used in the embodiments provided in this application can include non-volatile and / or volatile memory. Non-volatile memory can include read-only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), or flash memory. Volatile memory can include random access memory (RAM) or external cache memory. By way of illustration and not limitation, RAM is available in various forms, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), dual data rate SDRAM (DDRSDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), Rambus direct RAM (RDRAM), direct memory bus dynamic RAM (DRDRAM), and memory bus dynamic RAM (RDRAM), etc.
[0243] The technical features of the above embodiments can be combined in any way. For the sake of brevity, not all possible combinations of the technical features in the above embodiments are described. However, as long as there is no contradiction in the combination of these technical features, they should be considered to be within the scope of this specification.
[0244] The embodiments described above are merely illustrative of several implementation methods of this application, and while the descriptions are relatively specific and detailed, they should not be construed as limiting the scope of the invention patent. It should be noted that those skilled in the art can make various modifications and improvements without departing from the concept of this application, and these all fall within the protection scope of this application. Therefore, the protection scope of this patent application should be determined by the appended claims.
Claims
1. A method for configuring resources in a storage array device, characterized in that, include: The CSI interface is extended to define the storage array information class and storage array information, define multiple interfaces and corresponding interface fields, and implement the resource storage array information class, storage array information and corresponding interfaces in the CSI plugin; The CSI plug-in is controlled to periodically acquire and save the managed storage array information to the database at a first time interval. The CSI plugin is controlled to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals. Define the application type of the container group in the CSI plugin, and match and associate the application type of the container group with the service level corresponding to the storage array device. In response to the creation of storage resources on a container group through the CSI plugin, the application type of the container group is obtained, the service level of the matching storage array device is obtained according to the application type of the container group, and the creation of storage resources and container group binding are completed in the storage array device with the corresponding matching service level.
2. The storage array device resource allocation method according to claim 1, characterized in that, The steps of extending the CSI interface to define the storage array information class and storage array information, and defining multiple interfaces and their corresponding fields include: Define a first interface, the fields of which include one or more of the following: manufacturer name, system information, product serial number, storage operating system version number, total capacity / available capacity / used capacity, total disk capacity, and storage capacity; Define a second interface, whose fields include one or more of the following: pool name, pool ID, total / available / used capacity, type, and status; Define a third interface, the fields of which include one or more of the following: volume name, volume ID, volume type, status, and compressed / thinned. Define a fourth interface, the fields of which include obtaining the storage protocol or specification; Define a fifth interface, the fields of which include obtaining one or more of the following: physical disk name, capacity, status, type, and disk group ID; Define a sixth interface, the fields of which include one or more of the following: obtain the stored alarm ID, alarm level, alarm time, alarm object, and processing strategy; Define a seventh interface, whose corresponding fields include one or more of the following: latency of storage array, pool, volume, port, number of read / write operations per second, and CPU / memory usage. Define an eighth interface, the fields of which include obtaining the storage protocol or specification; Define a ninth interface, the fields of which include obtaining one or more of the following about the hostname, host ID, host operating system type, and host operating system status on the storage array.
3. The storage array device resource allocation method according to claim 1, characterized in that, The steps for controlling the CSI plug-in to periodically calculate and refresh the service levels corresponding to the managed multiple storage array devices at a second time interval include: Obtain a cluster of available capacity data for multiple storage array devices, and use the storage array device with the largest available capacity as a benchmark to calculate the available capacity coefficient CapacityRatio for each storage array device; The number of read and write operations per second for multiple storage array devices is obtained. The average number of read and write operations per second for each storage array device within a second time period is calculated. The storage array device with the highest average number of read and write operations per second is used as the benchmark to calculate the IopsRatio coefficient for the number of read and write operations per second for each storage array device. Obtain the input / output latency set of multiple storage array devices, calculate the average input / output latency value of each storage array device in the second time period, and calculate the input / output latency coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency. Obtain the weight values a, b, and c corresponding to the available capacity coefficient CapacityRatio, the number of read / write operations per second coefficient IopsRatio, and the input / output latency coefficient IodelayRatio for each storage array device. Calculate the serviceability coefficient Lx for each storage array device using the formula Lx = a*CapacityRatio + b*IopsRatio - c*IodelayRatio. Control the CSI plug-in to sort the storage array devices in descending order according to their serviceability coefficient Lx, and configure the corresponding storage array devices into multiple service levels based on the descending order of their serviceability coefficient Lx.
4. The storage array device resource allocation method according to claim 3, characterized in that, The step of obtaining a cluster of available capacity data sets for multiple storage array devices, and calculating the available capacity coefficient CapacityRatio for each storage array device based on the storage array device with the largest available capacity, includes: The maximum value among the cluster available capacity data sets of multiple storage array devices is used as the storage array device with the largest available capacity, Max(CapacitySet). Obtain the available capacity (Capacity) of each storage array device. Using the storage array device with the maximum available capacity (Max(CapacitySet)) as the benchmark, calculate the available capacity coefficient (CapacityRatio) of each storage array device using the formula Capacity / Max(CapacitySet). The value of CapacityRatio ranges from (0 to 1).
5. The storage array device resource allocation method according to claim 3, characterized in that, The steps of obtaining the number of read / write operations per second for multiple storage array devices, calculating the average number of read / write operations per second for each storage array device within a second time period, and calculating the IopsRatio coefficient for each storage array device based on the storage array device with the highest average number of read / write operations per second, include: The number of read and write operations per second for multiple storage array devices is obtained. For each storage array device, the number of read and write operations per second is obtained at Tn time points within the second time period. The sum of the number of read and write operations per second for each storage array device at Tn time points within the second time period, ∑IOPS, is calculated. The average value of the number of read and write operations per second for each storage array device within the second time period, avgIops, is calculated using the formula ∑IOPS / Tn. The maximum value among the average number of read / write operations per second performed by multiple storage array devices within the second time period is obtained as the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second. Based on the storage array device Max(avgIopsSet) with the maximum average number of read / write operations per second, the coefficient IopsRatio of the number of read / write operations per second for each storage array device is calculated using the formula avgIops / Max(avgIopsSet), where the value range of IopsRatio is (0, 1).
6. The storage array device resource allocation method according to claim 3, characterized in that, The steps of obtaining the input / output latency set of multiple storage array devices, calculating the average input / output latency value of each storage array device within a second time period, and calculating the input / output latency coefficient IodelayRatio of each storage array device based on the storage array device with the largest input / output latency include: Obtain the input / output latency set of multiple storage array devices. Each storage array device acquires input / output latency data at Tn time points within the second time period. Calculate the sum of input / output latency data ∑IO of each storage array device at Tn time points within the second time period. Calculate the average input / output latency avgIodelay of each storage array device within the second time period using the formula ∑IO / Tn. The maximum value among the average input / output delays of multiple storage array devices over a second time period is taken as the storage array device with the maximum average input / output delay, Max(avgIodelaySet). Using the storage array device Max(avgIodelaySet) with the maximum average input / output latency as a benchmark, the input / output latency coefficient IodelayRatio of each storage array device is calculated using the formula avgIodelay / Max(avgIodelaySet), where the value of IodelayRatio ranges from (0 to 1).
7. The storage array device resource allocation method according to claim 1, characterized in that, The steps of defining the application type of the container group in the CSI plugin and matching and associating the application type of the container group with the service level corresponding to the storage array device include: In the CSI plugin, the application type of the container group is defined. The application type of the container group is configured with multiple levels, and an identifier field is set for the container group corresponding to each level of application type. Container groups of multiple application types are matched and associated with multiple service levels corresponding to storage array devices.
8. A resource allocation device for a storage array device, characterized in that, The device includes: The interface extension module is used to extend the definition of storage array information classes and storage array information for CSI interfaces, define multiple interfaces and corresponding interface fields, and implement resource storage array information classes, storage array information and corresponding interfaces in the CSI plugin; The storage array information management module is used to control the CSI plug-in to periodically acquire the managed storage array information and save it to the database at a first time interval. The service level management module is used to control the CSI plug-in to periodically calculate and refresh the service levels corresponding to the multiple storage array devices it manages at second intervals. The container group management module is used to define the application type of a container group in the CSI plugin and match and associate the application type of the container group with the service level corresponding to the storage array device. The storage resource matching management module is used to respond to the creation of storage resources on the container group through the CSI plugin, obtain the application type of the container group, obtain the service level of the matching storage array device according to the application type of the container group, and complete the creation of storage resources and container group binding in the storage array device with the corresponding matching service level.
9. A computer device, comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that, When the processor executes the computer program, it implements the steps of the method according to any one of claims 1 to 7.
10. A computer-readable storage medium having a computer program stored thereon, characterized in that, When the computer program is executed by a processor, it implements the steps of the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Storage resource processing method, system and equipment of container cluster management system
CN114281263A
Storage array remote replication
US20230137015A1