掌桥专利:专业的专利平台
掌桥专利
首页

存储系统中的容器管理

文献发布时间:2023-06-19 19:20:08


存储系统中的容器管理

背景技术

如主机服务器等客户端计算系统可以执行主机应用程序并将主机应用程序使用的数据存储在如存储阵列等单独的计算系统中。存储阵列可以包括促进客户端计算系统与存储在存储阵列中的数据之间的连接的多个控制器(例如,存储控制器、阵列控制器等)。在一些示例中,多个控制器可以包括如处理资源、存储器资源等计算资源以对数据执行输入/输出(IO)操作(例如,读取操作/写入操作)。

附图说明

以下具体实施方式参考附图,其中:

图1是根据示例的执行容器管理的存储系统的框图;

图2是根据示例的用于管理存储系统中的容器的方法的流程图;

图3是根据另一个示例的执行容器管理的存储系统的框图;

图4是根据示例的用于在资源限制内管理存储系统中的容器的方法的流程图;

图5是根据示例的执行多个容器的管理的存储系统的框图;

图6是根据示例的用于管理存储系统中的多个容器的方法的流程图;以及

图7是根据示例的处理资源和机器可读介质的框图,该机器可读介质编码有用于管理存储系统中的容器的示例指令。

具体实施方式

计算系统(如存储阵列)和客户端计算设备(如服务器(例如,在数据中心中)或边缘计算设备(例如,物联网设备))可以是经由计算机网络进行通信以执行专用功能的单独设备。例如,客户端计算设备(在本文中称为主机设备)可以使用计算资源(如处理资源和存储器资源)来执行计算功能(例如,执行主机应用程序)并且存储阵列可以使用多个存储设备来执行存储功能(例如,存储数据)。在主机设备上执行的主机应用程序可以向存储阵列发送如输入/输出(IO)请求(例如,读取请求/写入请求)、重复数据删除(deduplication)请求、快照请求等请求。存储阵列可以处理从主机设备接收的请求并且对存储在多个存储设备中的数据执行与请求相对应的操作(例如,读取操作/写入操作、重复数据删除操作、快照操作)。

主机设备和存储阵列可以经由至少一个计算机网络(例如,网络附接存储装置(NAS)、存储区域网(SAN)或直接附接存储装置(DAS))来进行通信。在一些网络(如NAS和SAN)中,主机设备和存储阵列可以经由联网部件(例如,交换机、路由器等)来进行通信,而在DAS中,主机设备经由电缆(例如,主机总线适配器)来直接附接到存储阵列。与其他网络(如DAS网络)相比,一些网络(如SAN)可能更具可扩展性(scalable)。例如,在SAN中,单个存储阵列可以同时处理从多个主机设备接收的IO请求,而在DAS中,存储阵列可以处理从被耦接到存储阵列的单个主机设备接收的IO请求。

然而,在SAN中,由于(多个)主机设备与(多个)存储阵列之间的通信延迟,主机应用程序的性能可能会受到影响。例如,延迟的通信可能是由于(多个)主机设备和(多个)存储阵列在地理上彼此远离。在这种示例中,来自主机应用程序的请求(例如,IO请求)和对这种请求的响应可以通过主机设备与存储阵列之间的几个网络(即,几个跳跃(hop))来传播。这种主机应用程序在其执行期间可能会向存储阵列发送大量IO请求。对这种请求的响应有时可能包括大量数据,该大量数据可能消耗高带宽并需要相对长的时间来完成。因此,每个IO请求及其完成所经历的开销可能会影响主机应用程序的性能。

一些示例可以通过在存储阵列处本地执行主机应用程序来解决上述挑战。例如,存储阵列的一个或多个控制器可以包括如处理资源和存储器资源等计算资源,该计算资源可以不时地空闲。存储阵列可以能够使用在一个或多个控制器处可用的这种计算资源来全部或部分地执行主机应用程序。例如,可用计算资源可用于运行容器,在该容器中运行主机应用程序的全部或部分的容器化版本,该容器化版本在本文中可以被称为容器化应用程序。在本文所描述的示例中,容器技术是计算虚拟化范例,其中,应用程序连同依赖关系和库一起被封装在容器中以提供用于运行应用程序的隔离环境。许多容器可以在单个操作系统上运行,但是每个容器本质上与其他容器隔离。然而,存储阵列的一个或多个控制器的计算资源可能是有限的。例如,存储阵列可以使用在控制器处的大部分计算资源来处理从各种主机设备接收到的大量IO请求。在同一控制器处同时执行容器和处理如此大量的IO请求可能是不可行的。

为了解决这些问题,本文所描述的示例允许管理存储系统中的容器。一些示例可以在资源限制内在存储系统的控制器上执行一个或多个容器。一些示例可以基于在每个控制器处的资源可用性来从存储系统的多个控制器动态地选择控制器来运行容器。例如,如果资源可用性小于资源限制,则示例可以选择不同的控制器来执行容器。以这种方式,存储系统可以在不超过控制器处的资源限制的情况下在存储系统的控制器处执行容器。

本文所描述的示例可以进一步实现以预定时间在特定控制器处调度对容器的执行。在一些示例中,对容器的执行可以包括对存储系统的存储卷实施一个或多个批量操作。本文所描述的示例可以进一步实现监测容器的状态并且响应于检测到与容器相关联的失效事件而提供警报。以这种方式,存储阵列可以管理存储系统内的容器的生命周期。进一步地,本文所描述的示例可以通过在存储系统处实施操作(如重复数据删除操作或快照操作)来减少网络流量、带宽消耗和相关联的成本并且向目标客户端设备提供相关联的结果。

图1是根据本文所描述的示例的促进存储系统102中的容器管理的联网系统100的框图。存储系统102可以由包括多个控制器104-1、104-2等以及存储设备106的计算系统(如存储阵列、服务器、备份装置、通过虚拟化来组合存储功能、计算功能和网络功能的超融合(hyperconverged)系统等)来实施。尽管出于说明的目的,图1示出了有限数量的控制器104-1、104-2、存储设备106,但是存储系统102可以包括任何合适数量的控制器和任何合适数量的存储设备。

每个控制器104-1、104-2可以包括:相应处理资源108-1、108-2;存储(例如,编码有)指令的相应机器可读存储介质110-1、110-2;以及相应存储器资源112-1、112-2。控制器104-1、104-2的部件可以分别通过一条或多条总线115-1、115-2来进行通信。控制器104-1、104-2中的每一个可以物理地访问存储设备106(例如,通过电缆或(多个)其他通信信道)。存储设备106可以包括非易失性存储设备,如硬盘驱动器(HDD)、固态驱动器(SSD)(如闪速存储器驱动器)或者以非易失性方式存储数据的任何其他合适的设备。在一些示例中,存储设备106可以包括任何这种非易失性存储设备中的一个或多个的任何组合。在一些示例中,存储系统102可以以存储卷(标记为126-1到126-P,其中,“P”是大于1的整数)的形式将数据存储在存储设备106上。存储卷126-1至126-P可以是“虚拟卷”或逻辑单元号(“LUN”)等的集合。存储卷126-1至126-P中的每个存储卷可以包括由存储设备106支持的虚拟地址空间,使得当数据被存储到卷时,数据可以被存储到存储设备106(例如,当从缓存中被强制输出(flush)时等)。

在本文所描述的示例中,存储器资源112-1、112-2可以由随机存取存储器(RAM)、动态随机存取存储器(DRAM)等或其组合来实施。存储器资源112-1、112-2中的每一个可以由一个或多个物理存储器设备(例如,DRAM设备、双列直插式存储器模块(DIMM)等)来实施。在本文的一些示例中,存储器资源112-1、112-2可以由使用加载语义/存储语义的任何合适类型的易失性或非易失性存储器来实施。

在本文所描述的示例中,每个控制器可以包括网络接口,该网络接口可以是用于在如存储区域网络(SAN)等计算机网络上进行通信的任何合适的硬件设备。在图1的示例中,网络接口117-1、117-2可以是相应网络接口卡(NIC)、FC主机总线适配器(HBA)等,以通过一个或多个网络来进行通信。在图1的示例中,网络接口117-1、117-2可以通过网络118来进行通信,该网络可以包括例如SAN、局域网(LAN)、虚拟LAN(VLAN)、无线局域网(WLAN)、虚拟专用网(VPN)、因特网、内部专用集成电路(ASIC)和/或软件传输等或其组合。

控制器104-1、104-2可以接收来自外部设备的请求并响应于这种请求而对系统102中的存储卷实施各种功能和操作。在图1的示例中,外部设备可以是通过网络118耦接到存储系统102的多个主机设备116(标记为主机设备116-1到116-N,其中,“N”是大于2的整数)。在一些示例中,(多个)主机设备116-1至116-N可以经由网络接口117-1、117-2耦接到存储系统102,该网络接口可以包括多个主机端口(在图1中未示出)。主机设备116-1至116-N中的每一个可以与来自主机端口中的主机端口连接,从而将每个主机端口与特定主机设备相关联。

在一些示例中,主机设备116可以是基于被存储在存储设备106处的数据来向客户端(例如,图1中的目标客户端128)提供服务的(多个)服务器。在其他示例中,主机设备116可以包括最终用户设备或边缘计算设备(如IoT设备)。在图1的示例中,主机设备116-1可以执行一个或多个主机应用程序,该一个或多个主机应用程序向存储系统102发送IO请求,作为响应,存储系统可以实施与被存储在存储设备106中的数据相关的操作(例如,从存储设备106读取数据或将数据写入到存储设备106中)。容器存储库120可以维护多个容器镜像122-1至122-M(标记为容器镜像122-1到122-M,其中,“M”是大于或等于2的整数)。在本文所描述的示例中,容器镜像可以是可执行(例如,在容器运行时上)以运行容器的信息(例如,静态或二进制文件)。当容器镜像被执行时(例如,在容器运行时上),该容器镜像变成容器。在一些示例中,容器镜像可以在作为单独进程的一部分已经被验证或认证(例如,使用许可密钥)之后被存储在容器存储库120中。在本文所描述的示例中,容器镜像122-1至122-M中的每一个可以包括用于当容器镜像由处理资源执行时运行容器中的主机应用程序的全部或一部分的信息(例如,指令)。在一些示例中,容器镜像122-1至122-M可以包括与相应主机应用程序(或其一部分)相关联的机器可执行指令、程序、库、框架等。在一些示例中,容器镜像122-1至122-M可以是容器化应用程序、容器化应用程序群(pod)、虚拟机等。

在一些示例中,存储系统102的一个或多个控制器可以被配置为可以管理存储系统102中的容器的管理控制器。在图1的示例中,控制器104-1可以被配置为管理控制器。控制器104-1可以包括存储至少管理指令114的机器可读存储介质110-1,该管理指令可由处理资源108-1执行以管理对存储系统102中的控制器104-1或另一个控制器(例如,控制器104-2)上的容器的执行(如关于图2所描述的)。在图1的示例中,控制器104-2可以不被配置为管理控制器,因为控制器104-2的机器可读存储介质110-2可以不存储管理指令114。控制器104-2可能无法管理容器。在一些示例中,存储系统中的一个或多个控制器可以被配置为用于管理容器的管理控制器。

下文关于图1和图2描述示例。图2是用于管理存储系统102中的容器的示例方法200的流程图,其中,方法包括在资源限制内执行存储系统102中的容器。尽管下文参考图1的存储系统102描述了对方法200的执行,但可以利用适用于执行这些方法的其他系统(例如,图3的存储系统302、图5的存储系统502等)。另外地,该方法的实施方式不限制于这种示例。尽管图2的流程图示出了执行某些功能的具体顺序,但该方法不限于该顺序。例如,流程图中连续示出的功能可以以不同顺序执行,可以同时或部分同时或以其组合的形式执行。

参考图1和图2的示例,存储系统102可以管理从容器镜像122-1至122-M执行的容器。控制器104-1的处理资源108-1可以执行被存储在机器可读介质110-1中的管理指令114以执行方法200。在方法200的202处,控制器104-1可以从在主机设备116-1上执行的主机应用程序接收与容器镜像122-1相关联的容器规范124-1。例如,主机应用程序可以发送请求以在存储卷126-1至126-P上执行按需操作或者用于在稍后时间调度这种操作。请求可以包括容器规范124-1,该容器规范可以呈配置文件(例如,可扩展标记语言(XML)文件、pod清单文件、JavaScript对象表示法(JSON)文件、YAML文件等)的形式,配置文件包括用于执行一个或多个容器以及用于对存储卷实施操作的配置指令。操作的示例可以包括重复数据删除操作、快照操作、压缩操作、数据复制操作或对存储系统中的一个或多个存储卷执行的任何其他操作。

在一些示例中,容器规范124-1可以指定容器标识符、存储卷标识符、控制器标识符和资源限制。容器标识符可以是唯一地标识容器镜像的唯一标识符(如通用唯一标识符(UUID))。在一些示例中,容器标识符可以包括与容器镜像相关联的用于从容器存储库120下载有效容器镜像的许可密钥。存储卷标识符可以包括一个或多个存储卷的逻辑单元号(LUN)。控制器标识符可以指示容器必须在其上执行的控制器。资源限制可以指示可以在控制器处用于执行容器的计算资源的最大量或值。

在方法200的204处,控制器104-1可以基于容器规范124-1中指示的容器标识符来从容器存储库120获得容器镜像122-1。例如,控制器104-1可以通过网络118从容器存储库120下载容器镜像122-1。在一些示例中,控制器104-1可以向容器存储库120发送指示容器标识符(例如,容器镜像的UUID)的请求。控制器104-1可以从容器存储库120获得与容器标识符相对应的容器镜像122-1。在一些示例中,控制器104-1可以使用可以在容器规范中指示的许可密钥来认证容器镜像122-1。例如,容器镜像122-1可以被存储在控制器104-1的存储器资源112-1中。

在方法200的206处,控制器104-1可以基于在容器规范124-1中指定的存储卷标识符来从存储卷126-1至126-P中选择存储卷。在一些示例中,存储卷标识符可以指示识别主机总线适配器的控制器标识符、识别特定LUN的磁盘标识符、识别磁盘上特定分区的切片标识符等。控制器104-1可以使用在存储卷标识符中指定的这种标识符并将与标识符相对应的存储卷(例如,存储卷126-1)分配给容器镜像122-1。例如,将存储卷分配给容器镜像可以包括将存储卷与容器镜像之间的映射记录在数据库中(例如,在图3的持久性存储库340中)。数据库可以包括具有包括键-值对的多个行和列的表,其中,键可以包括容器镜像的标识符并且对应的值可以包括分配给那些容器镜像的存储卷的标识符。在一些示例中,控制器104-1可以使用(多个)存储卷与容器镜像之间的映射来控制(例如,授权)从容器镜像执行的(多个)容器以访问(多个)对应的存储卷并实施对应的存储卷上的操作(例如,读取操作/写入操作)。

在方法200的208处,控制器104-1可以基于控制器标识符来从控制器104-1、104-2中选择控制器。在一些示例中,控制器标识符可以指示控制器或控制器的部件的身份。例如,控制器标识符可以指示控制器(例如,控制器104-1)的主机端口(例如,在网络接口117-1中)。基于所指示的主机端口,控制器104-1可以选择包括所指示的主机端口的控制器(例如,控制器104-1)以用于执行容器122-1A。

在210处,控制器104-1可以授权从容器镜像之一执行的容器以访问一个或多个存储卷。例如,控制器104-1可以基于被存储在持久性存储库中的容器镜像和(多个)存储卷的标识符的映射来允许来自容器镜像的容器访问(多个)存储卷。在图1的示例中,控制器104-1可以允许容器122-1A在由处理资源执行时访问存储卷126-1。

在一些示例中,控制器104-1可以确定所选控制器处的资源可用性是否大于资源限制。资源可用性可以指示在控制器处可用(即,未被利用)的计算资源的水平。在控制器处的资源可用性和资源利用率可以根据准备好被利用的计算资源(如处理资源、存储器资源、网络资源等或其组合)的百分比来表示。例如,在控制器处,如果处理资源的利用率是60%并且存储器资源的利用率是80%,则处理资源的资源可用性可以是40%并且存储器资源的资源可用性可以是30%。可以将控制器104-1的资源可用性与资源限制进行比较,该资源限制指示在控制器处执行的容器可以利用的计算资源的最大量。

在方法200的212处,控制器104-1可以确定所选控制器处的计算资源可用性是否大于资源限制(即,在控制器处可用的计算资源的量大于允许容器利用的最大量)。例如,容器的资源限制可以指示允许容器消耗的处理资源108-1的最大量是30%并且允许容器消耗的存储器资源112-1的最大量是20%。如果处理资源108-1处的资源可用性是40%并且存储器资源112-1处的资源可用性是30%,则控制器104-1可以确定控制器104-1处的资源可用性大于资源限制。

响应于该确定,控制器104-1可以在控制器104-1的处理资源108-1上启动对容器的执行。例如,处理资源108-1可以运行容器122-1A,该容器访问存储卷126-1(如由虚线箭头160所示出的)并针对存储卷126-1实施操作。在各种示例中,对存储卷的操作可以包括读取操作、写入操作、压缩操作、重复数据删除操作、快照操作等。在一些示例中,容器可以使用本地访问方法(如标准便携式操作系统接口(POSIX)、异步输入输出(AIO)接口、因特网小型计算机系统接口(iSCSI)环回、vhost协议(例如,vhost SCSI))来从用户空间直接访问存储卷。在一些示例中,容器规范124-1可以指定目标客户端身份。目标客户端身份可以指示如服务器、用户设备等客户端设备(例如,目标客户端128)的身份,其中,可以传输容器122-1A的执行结果。控制器104-1可以向目标客户端128发送操作的结果。

在其他示例中,控制器104-1可以确定所选控制器处的资源可用性不大于资源限制(即,可以允许容器在控制器处消耗的计算资源的最大量超过在控制器处可用的计算资源的量)。例如,资源限制可以指示处理资源108-1的利用率最大值是30%并且存储器资源112-1的利用率最大值是20%,但是处理资源108-1的实际资源可用性是25%并且存储器资源112-1的资源可用性是15%。在这种示例中,控制器104-1可以确定控制器104-1处的资源可用性小于资源限制(即,计算资源不足)。响应于该确定,控制器104-1可以不执行容器122-1A。在一些示例中,控制器104-1可以选择具有资源可用性大于资源限制的另一个控制器。例如,控制器104-1可以确定第二控制器104-2的资源可用性大于资源限制。在这种示例中,控制器104-1可以将容器122-1A从第一控制器104-1的存储器资源112-1移动到第二控制器104-2的存储器资源112-2(如由虚线箭头170所示出的)。控制器104-1还可以允许容器122-1A在由第二控制器104-2的处理资源108-2执行时访问存储卷126-1(如由虚线箭头161所示出的)。处理资源108-2可以在第二控制器104-2上执行容器122-1A以对存储卷126-1实施操作。尽管在本文所图示的示例中,相对于存储器和处理资源测量描述了资源可用性和资源限制,但是应当理解,与控制器相关联的其他度量(例如,网络带宽、吞吐量等)可以用于确定服务位置(即,要利用哪个控制器)。

图3描绘了根据本主题的另一个示例的执行容器管理的存储系统302。下文关于图3和图4描述了示例。图4是用于管理存储系统302中的容器的示例方法400的流程图,其中,方法包括在资源限制内执行存储系统302中的一个或多个容器。尽管下文参考图3的存储系统302描述了对方法400的执行,但可以利用适用于执行这些方法的其他系统(例如,图1的存储系统102或图5的存储系统502等)。另外地,该方法的实施方式不限制于这种示例。尽管图4的流程图示出了执行某些功能的具体顺序,但该方法不限于该顺序。例如,流程图中连续示出的功能可以以不同顺序执行,可以同时或部分同时或以其组合的形式执行。

存储系统302可以包括控制器304-1(在本文中被称为“第一控制器”)、控制器304-2(在本文中被称为“第二控制器”)和控制器304-3(在本文中被称为“第三控制器”)。每个控制器304-1、304-2、304-3可以包括:相应处理资源308-1、308-2、308-3;相应机器可读存储介质310-1、310-2、310-3;以及相应存储器资源312-1、312-2、312-3。尽管为了清楚起见,在图3中所示出的存储系统302中图示了相对少量的控制器、处理资源、机器可读介质、存储器资源,但是本文所描述的示例中的存储系统可以包括更多或更少的控制器、处理资源、机器可读介质和存储器资源。

在图3的示例中,第一控制器304-1可以被配置为管理控制器。例如,第一控制器304-1的机器可读存储介质310-1可以存储可由处理资源308-1执行以管理存储系统302中的容器的至少管理指令314。在一些示例中,第一控制器304-1可以被配置为使用至少管理指令314来管理容器,而控制器304-2、304-3可能无法管理容器。在其他示例中,控制器304-1、304-2、304-3中的一个或多个可以被配置为用于管理存储系统302中的容器的管理控制器。控制器304-1、304-2、304-3的部件可以分别通过一条或多条总线315-1、315-2、315-3来进行通信。每个控制器304-1、304-2、304-3可以包括相应网络接口317-1、317-2、317-3,该相应网络接口可以是网络接口卡(NIC)、FC主机总线适配器(HBA)等以通过一个或多个计算机网络来进行通信。在图3的示例中,存储系统302可以被连接到SAN 318或任何其他网络,如关于图1所描述的网络118。

在图3的示例中,存储系统302还可以包括可以由任何合适类型的非易失性存储装置(例如,(多个)固态存储(SSD)设备,如(多个)闪速存储器设备、或(多个)硬盘驱动器(HDD)等)实施的持久性存储库340。存储系统302可以进一步包括接口342。接口342可以是用户接口,如存储系统302的图形用户接口(GUI)。例如,GUI可以允许用户“登录”到存储系统302并且可以与如触摸屏、键盘、鼠标等输入设备相关联。接口342可以由硬件和编程的任何组合来实施。存储系统302可以包括可以类似于关于图1所描述的存储设备106的存储设备306。

参考图3和图4的示例,存储系统302可以管理来自容器镜像322-1的多个容器。第一控制器304-1的处理资源308-1可以执行被存储在机器可读介质310-1中的管理指令314以执行方法400。在方法400的402处,第一控制器304-1可以从执行主机应用程序的主机设备(例如,图1的主机设备116-1)接收与容器镜像322-1相关联的容器规范324-1。容器规范324-1可以包括用于管理存储系统302中的容器322-1A的配置信息。在一些示例中,每个容器镜像的配置信息可以被存储在存储系统302的持久性存储库340中。在一些示例中,存储在持久性存储库340中的配置信息可以(例如,由存储管理员)经由接口342来手动修改。在各种示例中,配置信息可以包括容器标识符、存储卷标识符、控制器标识符和资源限制,如关于图1所描述的。配置信息还可以包括用于在存储系统302处执行来自容器镜像322-1的一个或多个容器的容器策略。容器策略可以包括管理容器执行的一组规则。在一些示例中,容器策略可以指示要在存储系统302中执行的多个容器。

在方法400的404处,第一控制器304-1可以配置有容器规范324-1以管理容器。例如,第一控制器304-1可以使用在容器规范324-1中指定的容器标识符来从容器存储库获得容器镜像322-1。第一控制器304-1可以基于在容器规范324-1中指定的存储卷标识符来选择存储卷。在一些示例中,存储卷标识符可以包括识别特定LUN的磁盘标识符、识别磁盘上特定分区的切片标识符等。在一些示例中,第一控制器304-1可以基于在容器策略中指示的要执行的容器数量来选择多个存储卷。例如,容器策略可以指示容器镜像的要被执行用于实施两个不同操作的两个容器。对于每个容器,第一控制器可以选择不同的存储卷。第一控制器304-1可以使用在存储卷标识符中指定的信息并分配与容器镜像322-1的标识符相对应的存储卷(例如,存储卷326-1、326-2)。例如,容器策略可以指示容器322-1A可以对存储卷326-1实施重复数据删除操作并且容器322-1B可以对不同的存储卷326-2实施快照操作。在一些示例中,将存储卷分配给容器镜像可以包括将存储卷与容器镜像之间的映射记录在数据库中(例如,在持久性存储库340中)。数据库可以包括具有包括键-值对的多个行和列的表,其中,键可以包括容器镜像的标识符并且值可以包括分配给该容器镜像的存储卷的标识符。

在方法400的406处,第一控制器304-1可以基于在容器规范324-1中指定的控制器标识符来选择第一组控制器。例如,第一控制器304-1可以确定容器规范324-1指示控制器304-1、304-2的身份并且可以选择控制器304-1、304-2。在方法400的408处,第一控制器304-1可以确定第一组控制器304-1、304-2中的每一个处的资源可用性是否大于容器规范中指定的资源限制。资源可用性可以指示在控制器304-1、304-2处可用(即,未被利用)的计算资源的水平。每个控制器304-1、304-2处的资源可用性和资源利用率可以根据计算资源(如处理资源、存储器资源等)的百分比来表示。例如,在控制器处,如果处理资源的利用率是60%并且存储器资源的利用率是80%,则处理资源的资源可用性可以是40%并且存储器资源的资源可用性可以是20%。可以将控制器304-1、304-2的资源可用性与资源限制进行比较,该资源限制指示在相应控制器处执行的容器可以利用的计算资源的最大量。

响应于确定第一组控制器304-1和304-2处的资源可用性大于资源限制,即,在第一组控制器处可用的计算资源的量大于允许容器利用的最大量(在408处为“是”),方法400可以进行到412。例如,对于容器,第一组控制器中的每个控制器处的资源限制可以指示允许容器消耗的处理资源的最大量是30%并且允许容器消耗的存储器资源的最大值是20%。如果处理资源308-1、308-2处的资源可用性是40%并且存储器资源312-1、312-2处的资源可用性是30%,则控制器304-1可以确定控制器304-1处的资源可用性大于资源限制。在方法400的412处,第一控制器304-1可以基于容器镜像与存储卷之间的分配来授权容器322-1A、322-1B以访问存储卷326-1、326-2。例如,第一控制器可以授权容器322-1A可以访问存储卷326-1(如由虚线箭头360所示出的)并且可以授权容器322-1B以访问存储卷326-2(如由虚线箭头370所示出的)。

响应于确定第一组控制器304-1和304-2处的资源可用性不大于资源限制(在408处为“否”),方法400可以进行到410。例如,对于容器,第一组控制器中的每个控制器处的资源限制可以指示例如允许容器消耗的处理资源的最大量是30%并且允许容器消耗的存储器资源的最大量是20%。如果处理资源308-2的资源可用性是35%并且存储器资源312-2的资源可用性是15%,则第一控制器304-1可以确定控制器304-2处的存储器资源的资源可用性小于资源限制(即,存储器资源不足)。在410处,第一控制器304-1可以选择具有资源可用性大于资源限制的第二组控制器。在图3的示例中,第一控制器304-1可以选择控制器304-1、304-3作为第二组控制器,其中,两个控制器处的资源可用性均可以大于资源限制。

在方法400的412处,第一控制器304-1可以授权容器访问存储卷326-1、326-2。例如,第一控制器304-1可以向容器322-1A提供从第一控制器104-1访问存储卷326-1并对其实施操作的许可(如由虚线箭头360所示出的)以及向容器322-1A提供从第二控制器104-2访问存储卷326-2并对其实施操作的许可(如由虚线箭头380所示出的)。在这种示例中,控制器304-1可以将容器322-1B从第二控制器的存储器资源312-2传递到第三控制器304-3的存储器资源312-3(如由虚线箭头390所示出的)。

在方法400的414处,所选组控制器的处理资源可以执行容器322-1A和322-1B。例如,在选择第一组控制器时,第一控制器304-1的处理资源308-1可以执行第一容器322-1A,并且第二控制器304-2的处理资源308-2可以执行第二容器322-1B。

在方法400的416处,第一控制器304-1可以确定该组控制器处的资源消耗是否大于资源限制。资源消耗可以指示由于对容器的执行而在控制器处消耗的计算资源(处理资源、存储器资源等)的量。在一些示例中,第一控制器304-1可以使用控制组来管理每个控制器处的容器的资源消耗。控制组可以包括多个容器,该多个容器具有如在容器规范中指示的公共资源限制。

响应于确定资源消耗大于资源限制,即,由容器消耗的计算资源的量超过资源限制(在416处为“是”),第一控制器304-1可以在所选组控制器处停止对容器的执行并且进行到410以选择另一组控制器。响应于确定一个或多个控制器处的资源消耗不大于资源限制(在416处为“否”),方法400可以进行到422。在422处,第一控制器304-1可以在执行容器之后向可以在容器规范324-1中指示的目标客户端发送操作的结果。

下文关于图5和图6描述示例。图5描绘了根据本主题的示例的执行多个容器的管理的存储系统502。图6是用于管理存储系统502中的多个容器的示例方法600的流程图,其中,方法600包括在资源限制内执行存储系统502中的容器以实施批量操作。尽管下文参考图5的存储系统502描述了对方法600的执行,但可以利用适用于执行这些方法的其他系统(例如,图1的存储系统102或图3的存储系统302等)。另外地,该方法的实施方式不限制于这种示例。尽管图6的流程图示出了执行某些功能的具体顺序,但该方法不限于该顺序。例如,流程图中连续示出的功能可以以不同顺序执行,可以同时或部分同时或以其组合的形式执行。

存储系统502可以包括控制器504-1、504-2和504-3,每个控制器包括:相应处理资源508-1、508-2、508-3;相应机器可读存储介质510-1、510-2、510-3;以及相应存储器资源512-1、512-2、512-3。控制器504-1、504-2、504-3及其部件可以类似于控制器304-1、304-2、304-3。尽管为了清楚起见,在图5中所示出的存储系统502中图示了相对少量的控制器、机器可读介质、存储器资源,但是本文所描述的示例中的存储系统可以包括更多或更少的控制器、机器可读介质和存储器资源。

在图5中所图示的示例中,第一控制器504-1可以包括存储至少管理指令514的机器可读存储介质510-1,该管理指令可由处理资源508-1执行以管理存储系统中的容器。在一些示例中,第一控制器504-1可以被配置为管理控制器并且能够使用至少管理指令514来管理多个容器,而控制器504-2、504-3可能无法管理多个容器。在其他示例中,控制器504-1、504-2、504-3中的一个或多个可以被配置为用于管理存储系统502中的多个容器的管理控制器。控制器504-1、504-2、504-3的部件可以分别通过一条或多条总线515-1、515-2、515-3来进行通信。每个控制器504-1、504-2、504-3可以包括网络接口517-1、517-2、517-3,该网络接口可以是相应网络接口卡(NIC)、FC主机总线适配器(HBA)等以通过一个或多个计算机网络来进行通信。在图5的示例中,存储系统502可以被连接到SAN 518或任何其他网络,如关于图1所描述的网络118。存储系统502还可以包括可以类似于图3的持久性存储库340和接口342的持久性存储库540和接口542。存储系统502可以包括可以类似于图1所描绘的存储设备106的存储设备506。

参考图5和图6的示例,存储系统502可以管理与多个容器镜像522-1、522-2、522-3相对应的容器以实施批量操作。第一控制器504-1的处理资源508-1可以执行被存储在机器可读介质510-1中的管理指令514以执行方法600。在方法600的602处,第一控制器504-1可以从执行主机应用程序的主机设备(例如,图1的主机设备116-1)接收容器规范524。在图5的示例中,容器规范524可以包括用于将被存储在存储系统502中的数据移动到另一个存储系统(在图5中未示出)的请求。例如,容器规范524可以与容器522-1、522-2、522-3相关联。每个容器可以被执行以实施用于将被存储在一个存储系统中的数据移动到另一个存储系统的一个或多个操作。例如,容器522-1可以实施重复数据删除操作,容器522-2可以实施快照操作并且容器522-3可以实施传递操作。在图5的示例中,容器规范524可以指定容器标识符、存储卷标识符、控制器标识符、资源限制以及用于在存储系统502处执行容器522-1A、522-2A、522-3A的容器策略。

在方法600的604处,第一控制器504-1可以基于在容器规范524中指定的容器标识符来从容器存储库(例如,图1的容器存储库120)获得容器镜像522-1、522-2、522-3。在方法600的606处,第一控制器504-1可以使用在容器规范524中指定的存储卷标识符来从一个或多个存储设备中选择存储卷526-1、526-2、526-3。

在方法600的608处,第一控制器504-1可以基于控制器标识符来识别控制器。在方法600的610处,第一控制器504-1可以基于与一个或多个控制器中的每一个相关联的资源可用性来将一个或多个识别的控制器包括在第一组控制器中。例如,第一控制器504-1可以基于在容器规范524中指示的控制器标识符来识别控制器504-1、504-2、504-3。第一控制器504-1可以确定所选控制器504-1、504-2、504-3的资源可用性是否大于在容器规范524中指示的资源限制。资源可用性可以指示在控制器504-1、504-2、504-3处可用(即,未被利用)的计算资源的水平。控制器504-1可以将控制器504-1、504-2、504-3的资源可用性与资源限制进行比较,该资源限制指示在控制器处执行的容器可以利用的计算资源的最大量。

在方法600的612处,当控制器504-1在第一组控制器中的相应控制器上执行时,该控制器可以授权容器以访问存储卷。例如,第一控制器504-1可以授权容器522-1A以访问存储卷526-1,可以授权容器522-2A以访问存储卷526-2并且可以授权容器522-3A以访问存储卷526-3。

在方法600的614处,第一控制器504-1可以确定是否在容器策略中定义了时间间隔。响应于确定在容器策略中定义了时间间隔(在614处为“是”),方法600进行到616。在616处,第一控制器504-1可以以该时间间隔分别调度由处理资源508-1、508-2、508-3对容器522-1A、522-2A、522-3A的执行。在这种示例中,处理资源508-1、508-2、508-3可以以周期性方式分别执行容器522-1A、522-2A、522-3A。响应于确定在容器策略没有定义时间间隔(在614处为“否”),方法600可以进行到618。在618处,处理资源508-1、508-2、508-3可以在相应控制器上执行容器522-1A、522-2A、522-3A。在一些示例中,处理资源508-1可以执行容器522-1A以对存储卷526-1实施重复数据删除操作。处理资源508-2可以执行容器522-2A以对存储卷526-2实施快照操作。处理资源508-3可以执行容器522-3A以对存储卷526-3实施传递操作。

在一些示例中,容器策略可以包括用于对批量中的一个或多个存储卷实施多个操作的批量操作命令。在图5的示例中,处理资源508-1、508-2、508-3可以执行容器522-1A、522-2A、522-3A以实施批量操作。在一些示例中,批量操作可以包括将对一个容器的执行结果作为输入转发给另一个容器。这种批量操作的示例可以包括重复数据删除操作、快照操作和传递操作中的一个或多个,每个操作通过执行容器来实施。例如,第一控制器504-1可以向第二控制器504-2的存储器资源512-2发送容器522-1A的执行结果590(例如,存储卷526-1的重复数据删除表示)。容器522-2A可以在其执行期间将结果590作为输入使用并向存储器资源512-3发送结果591(例如,存储卷526-1的重复数据删除表示的快照)。容器522-3A可以在其执行期间将结果591作为输入使用以实施传递操作(例如,传递到目标客户端)。

在其他示例中,批量操作可以包括在不同存储卷上单独实施的多个操作。在这种示例中,容器522-1A可以访问存储卷526-1(如由虚线箭头560所示出的),容器522-2A可以访问存储卷526-2(如由虚线箭头570所示出的)并且容器522-3A可以访问存储卷526-3(如由虚线箭头580所示出的)。处理资源508-1、508-2、508-3可以执行容器522-1A、522-2A、522-3A以对存储卷526-1、526-2、526-3实施操作。

在一些示例中,容器规范可以包括目标客户端。例如,第一控制器504-1可以向目标客户端(例如,图1的目标客户端设备128)发送操作的最终结果作为批量结果。在一些示例中,控制器504-1可以被配置为监测容器522-1A、522-2A、522-3A。例如,控制器504-1可以监测容器的状态以检测与容器相关联的失效事件的任何发生。响应于失效事件,第一控制器504-1可以执行动作以减轻失效事件。在图6的示例中,在620处,控制器504-1可以向主机设备发送指示失效事件的通知或警报。失效事件的一些示例可以包括从容器存储库未经授权地下载容器镜像、容器规范中的无效信息(如无效的容器标识符、存储标识符、控制器标识符、容器策略等)、由于对容器的执行而导致的计算资源的过度消耗、网络接口的可用性等。

移动到图7,描绘了根据示例的处理资源702和机器可读介质704的框图700,该机器可读介质编码有用于促进存储系统中的容器管理的示例指令。机器可读介质704可以是非暂态的并且替代性地被称为非暂态机器可读介质704。在一些示例中,机器可读介质704可以由处理资源702访问。在一些示例中,处理资源702可以表示关于图1所描述的存储系统102的处理资源108-1的一个示例。进一步地,机器可读介质704可以表示关于图1所描述的存储系统102的机器可读介质110-1的一个示例。

机器可读介质704可以是可以存储数据和/或可执行指令的任何电子、磁性、光学或其他物理存储设备。如本文中详细描述的,机器可读介质704可以编码有用于执行图2中所描述的方法200的可执行指令706、708、710、712、714和716(在下文中统称为指令706-716)。尽管未示出,但是在一些示例中,在不限制本公开的范围的情况下,机器可读介质704可以编码有某些附加的可执行指令以执行图2的方法200和/或由存储系统102执行的任何其他操作。

处理资源702可以是能够取得并执行被存储在机器可读介质704中的指令706-718或其组合的物理设备。在一些示例中,处理资源702可以获取、解码并执行被存储在机器可读介质704中的指令706-718以管理存储系统中的容器。例如,在某些示例中,作为取得并执行指令706-718的替代或附加,处理资源702可以包括至少一个IC、其他控制逻辑、其他电子电路或其包括用于执行旨在由图1的系统102执行的功能的多个电子部件的组合。

指令706在由处理资源702执行时可以使针对指令的处理资源702从耦接到存储系统的主机设备接收与容器相关联的容器规范。容器规范指定容器标识符、存储卷标识符、控制器标识符和资源限制。指令708在由处理资源702执行时可以使处理资源702基于容器标识符来从容器存储库获得容器镜像。指令710在由处理资源702执行时可以使处理资源702基于存储卷标识符来从存储系统中的一个或多个存储设备选择存储卷。指令712在由处理资源702执行时可以使处理资源702基于控制器标识符来从多个控制器中选择控制器。指令714在由处理资源702执行时可以使处理资源702授权容器以访问存储卷。进一步地,指令716在由处理资源702执行时可以使处理资源702响应于确定第一控制器处的资源可用性大于资源限制而在第一控制器上执行容器以在存储卷上实施操作。

在本文所描述的示例中,短语“基于”不是排他的,并且不应被理解为“排他地基于”。相反,本文所使用的短语“基于”是包括性的,并且与替代性短语“至少基于”或“至少部分地基于”含义相同。如此,在本文中描述为“基于”特定条件、数据等的任何确定、决定、比较等可以被理解为意味着该决定、比较等是至少基于(或至少部分地基于)条件、数据等,并且还可以是基于其他(多个)条件、数据等。在本文所描述的示例中,被描述为由“指令”执行的功能可以被理解为可以由那些指令在由处理资源执行时执行的功能。在其他示例中,关于指令所描述的功能可以由一个或多个引擎实施,该引擎可以是用于实施(多个)引擎的功能的硬件和编程的任何组合。

如本文所使用的,“计算系统”可以是服务器、存储设备、存储阵列、台式计算机或膝上型计算机、交换机、路由器或包括处理资源的任何其他处理设备或装备。在本文所描述的示例中,处理资源可以包括例如被包括在单个计算系统中或跨多个计算系统分布的一个处理器或多个处理器。如本文所使用的,“处理器”可以是中央处理单元(CPU)、核、基于半导体的微处理器、图形处理单元(GPU)、被配置为取得和执行指令的现场可编程门阵列(FPGA)、适用于取得和执行被存储在机器可读存储介质上的指令的其他电子电路、或其组合中的至少一者。在本文所描述的示例中,处理资源可以取出、解码和执行被存储在存储介质上的指令以执行关于被存储在存储介质上的指令所描述的功能。在其他示例中,关于本文所描述的任何指令而描述的功能可以以电子电路的形式、在机器可读存储介质上编码的可执行指令的形式或其组合的形式来实施。存储介质可以位于执行机器可读指令的计算系统中或远离计算系统但计算系统可访问(例如,经由计算机网络)以执行。在本文所图示的示例中,存储介质110-1、110-2可以各自由一个机器可读存储介质或多个机器可读存储介质实施。虽然存储介质110-1、110-2被图示为与物理存储器112-1、112-2分离,但是在一些实施例中,它们可以是分离的,而在其他实施例中,它们可以不是分离的。

在本文所描述的示例中,存储系统或存储阵列可以是包括多个存储设备和一个或多个控制器的计算系统以与主机设备交互并控制对存储设备的访问。在一些示例中,存储设备可以包括HDD、SSD或任何其他合适类型的存储设备或其任何组合。在一些示例中,(多个)控制器可以虚拟化由存储设备提供的存储容量以使主机能够访问由来自多个不同存储设备的存储空间构成的虚拟卷。

在其他示例中,以上关于本文所描述的指令而描述的功能可以由一个或多个引擎实施,该一个或多个引擎可以是用于实施(多个)引擎的功能的硬件和编程的任何组合。在本文所描述的示例中,硬件和编程的这种组合可以以多种不同的方式实施。例如,用于引擎的编程可以是被存储在至少一个非暂态机器可读存储介质上的处理器可执行指令并且用于引擎的硬件可以包括用于执行那些指令的至少一个处理资源。在一些示例中,硬件还可以包括用于至少部分地实施(多个)引擎中的至少一个引擎的其他电子电路。在一些示例中,至少一个机器可读存储介质可以存储当由至少一个处理资源执行时至少部分地实施(多个)引擎中的一些或全部的指令。在一些示例中,计算系统可以包括存储指令的至少一个机器可读存储介质和用于执行指令的至少一个处理资源。在其他示例中,引擎可以由电子电路实施。

如本文所使用的,“机器可读存储介质”可以是用于包含或存储如可执行指令、数据等信息的任何电子、磁性、光学或其他物理存储装置。例如,本文所描述的任何机器可读存储介质可以是RAM、EEPROM、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,HDD、SSD)、任何类型的存储盘(例如,压缩盘、DVD等)等中的任何一者或其组合。进一步地,本文所描述的任何机器可读存储介质可以是非暂态的。在本文所描述的示例中,一个或多个机器可读存储介质可以是物品(或制品)的一部分。物品或制品可以指代任何制造的单个部件或多个部件。在一些示例中,指令可以是安装包的一部分,该安装包在被安装时可以由处理资源执行以实施本文所描述的功能。本说明书(包括任何所附权利要求、摘要和附图)中所公开的全部特征、和/或如此公开的任何方法或过程的所有元素都可以组合为除了至少一些这种特征和/或元素相互排他的组合之外的任何组合。例如,本文关于图1至图7中的任何图所描述的功能可以结合本文关于图1至图7中的任何其他图所描述的功能而提供。

相关技术
  • 分布式存储系统中管理快照和差异位图生成方法和产品
  • 存储系统中存储设备的管理方法及存储系统
  • 数据存储系统和用于管理数据存储系统中逻辑路径的方法
技术分类

06120115870399