CN114064197A - 基于对性能度量的分析来修改虚拟持久卷 - Google Patents
基于对性能度量的分析来修改虚拟持久卷 Download PDFInfo
- Publication number
- CN114064197A CN114064197A CN202110438133.7A CN202110438133A CN114064197A CN 114064197 A CN114064197 A CN 114064197A CN 202110438133 A CN202110438133 A CN 202110438133A CN 114064197 A CN114064197 A CN 114064197A
- Authority
- CN
- China
- Prior art keywords
- storage
- virtual
- application
- volume
- virtual persistent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及基于对性能度量的分析来修改虚拟持久卷。示例实现涉及虚拟持久卷。在示例中,存储虚拟化系统接收与容器化应用对虚拟持久卷的使用相关的性能度量。性能度量是在应用数据存储库配置文件中被标识的,并且应用数据存储库配置文件是基于容器化应用的应用清单被标识的。虚拟持久卷是基于对性能度量的分析来修改的。
Description
背景技术
容器是一种虚拟化。容器可以包括与相关性(dependency)和库(library)打包在一起的应用。容器化应用可以使用或生成持久数据。
附图说明
各种示例将在下面参照以下附图进行描述。
图1描绘了创建虚拟持久卷的示例系统,该虚拟持久卷聚合多个不同的基础存储装置并被呈现给容器化应用。
图2描绘了基于与虚拟持久卷的使用相关的性能度量来修改虚拟持久卷的示例系统。
图3描绘了包括基于与虚拟持久卷的使用相关的性能度量来修改虚拟持久卷的示例方法。
图4描绘了示例方法,该示例方法包括分析性能度量以标识存储类别并使用所标识的存储类别来供应新的基础存储卷。
图5描绘了具有机器可读介质的示例系统,该机器可读介质包括用于基于与虚拟持久卷的使用相关的性能度量来修改虚拟持久卷的指令。
具体实施方式
容器技术是一种计算虚拟化范例,其中应用与相关性和库一起被打包到容器中,以提供用于运行该应用的隔离环境。这种应用可以被称为容器化应用。许多容器可以在单个操作系统上运行,但是每个容器与其他容器固有地隔离。通过这种方式,容器范例可以被理解为使操作系统虚拟化。容器可能比虚拟化硬件的其他形式的虚拟化(诸如虚拟机)更轻便。例如,每个虚拟机可以具有它自己的操作系统内核的副本,而与之相比,多个容器可以共享操作系统内核。
容器化应用可能需要存储装置以保留持久数据。容器编排器(诸如Kubernetes)可以提供为容器供应一些存储装置的能力。然而,存在许多类型的存储装置,包括但不限于容器本地的、远离容器的、硬件(例如本地附接的驱动器)、软件定义的存储装置(例如文件系统、虚拟化或容器化的存储装置、经由API呈现的存储装置等)或具有前述方面的组合的存储装置。供应容器存储装置的先前工作可能无法提供容器环境的用户和管理员期望的存储配置灵活性和数据服务的级别。例如,容器编排器可能仅被限于为应用供应一种类型的存储装置。其他类型的系统可能会尝试将多个卷一起串接为单个卷,但是这种串接可能不具有在不中断对数据的用户访问的情况下提供某些数据服务的灵活性。
为了解决挑战并提供灵活且健壮的容器可访问的持久存储装置,本文描述的示例涉及一种存储虚拟化系统及其策略引擎,该存储虚拟化系统及其策略引擎可以创建聚合多个不同的基础存储卷的虚拟持久卷,该基础存储卷可以是从容器环境中可用的不同类型的存储系统供应的。虚拟持久卷可以采取诸如Merkle树等分层结构的形式,该分层结构通过其基于内容的签名使容器化应用的数据对象与根对象相关。
在最初创建虚拟持久卷之后,容器化应用的与存储相关的性能需求可能会发生变化,诸如在应用负载增加(例如读取或写入IOPS(每秒输入/输出操作)增加、时延增加等),自动缩放应用或改变应用工作负载的性质(例如从面向写入的操作转换为面向读取的操作,反之亦然,转换为面向档案存储的操作等)的实例中。在这种情况下,容器化应用的持久存储装置被自动优化以响应应用的不断变化的与存储相关的性能需求将非常有用。
因此,本文描述的其他示例涉及监测和分析容器化应用和/或存储虚拟化系统本身的性能度量的存储虚拟化系统(例如特别是相对于处置虚拟持久卷的操作的其数据路径组件而言)。存储虚拟化系统可以基于性能度量来修改虚拟持久卷。例如,在实现中,存储虚拟化系统可以标识在容器环境中可用的一个或多个存储类别,该存储类别可以更优化地履行通过性能度量的分析确定的容器化应用的性能要求。然后,存储虚拟化系统可以从那些标识出的存储类别中供应一个或多个新的基础存储卷,并将虚拟持久卷修改为包括那些新的基础存储卷。凭借前述内容,存储虚拟化系统可以自动地(例如无需人工干预)并定期地(例如实时、近实时、基于调度等)优化虚拟持久卷的性能,以反映关联的容器化应用的存储要求。
现在参照附图,图1描绘了支持并参与容器环境120的示例计算系统100。计算系统100包括处理资源102,该处理资源102可以包括微控制器、微处理器、(多个)中央处理单元核心、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。计算系统100包括机器可读介质104,该机器可读介质104可以是非瞬态的,并且包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘驱动器等。
处理资源102可以执行存储在机器可读介质104上的指令105(即,程序或软件代码)以执行计算系统100的功能,诸如提供容器编排器122和容器化的存储系统130,如将在下面进一步描述的。更具体地,容器化的存储虚拟化系统130的组件中的每个组件可以被实现为可执行指令105,包括数据服务提供方134、存储虚拟器136、卷管理器138、适配器139、策略引擎142和容器存储接口API 144。容器化应用124、126和容器存储接口插件128也可以被实现为可执行指令105中所包括的指令。附加地或备选地,处理资源102可以包括用于执行本文描述的功能性的电子电路系统。
计算系统100还可以包括其他硬件组件,诸如物理存储装置106。物理存储装置106可以包括任何物理存储设备(诸如硬盘驱动器、固态驱动器等)或者多个这种存储设备(例如磁盘阵列),并且可以被本地附接(即,安装)在计算系统100中。在一些实现中,物理存储装置106可以作为块存储设备来访问。
在一些情况下,计算系统100还可以包括本地文件系统108,其可以被实现为物理存储装置106之上的层。例如,操作系统107可以在计算系统100上执行(凭借处理资源102执行与操作系统相关的某些指令105),并且操作系统107可以提供文件系统108以将数据存储在物理存储装置106上。
计算系统100可以例如经由有线和/或无线网络与诸如计算系统110等其他计算系统通信。其他计算系统可以类似于计算系统100,并且可以分别至少包括处理资源和机器可读介质。计算系统100和110可以分别执行软件(即,处理资源102执行某些指令105)以部署容器编排器122的节点。换言之,容器编排器122可以具有包括加入集群的计算系统的容器编排器节点的集群架构。容器编排器122充当平台以跨计算系统集群部署和管理容器化应用。容器编排器122、从中部署的容器化应用以及其他容器资源(诸如容器存储装置)被视为位于容器环境120内。与之相比,其他元件可以在容器环境120外部运作,诸如计算系统100的本地文件系统108和操作系统107。
为了说明的目的,在图1中,容器化应用124和126经由容器编排器122被本地部署在计算系统100上。因此,可以说应用124、126远离其他节点,诸如计算系统110。容器化应用124、126可以表示微服务、用户应用等,并且有时可以被简称为容器。容器环境120还可以托管集群中的其他计算系统本地的容器化应用(未示出)。
容器编排器122还部署了将在下面被更详细地描述的容器化的存储虚拟化系统130。在图1的示例中,容器化的存储虚拟化系统130也在计算系统100及其处理资源102上本地执行。在一些实现中,尽管集群中的其他计算系统的其他容器化的存储虚拟化系统未在图1中被描绘,但是它们也被包括在容器环境120中。例如,容器化的存储虚拟化系统130可以用作具有集群架构的存储虚拟化平台中的节点,其中多个容器化的存储虚拟化系统(其中至少一些可以在不同且分离的物理计算系统上执行)协作以存储和管理存储虚拟化层中的数据。
容器编排器122还可以包括标准化的容器存储接口123。容器存储接口123具有插件架构,并且可以使用多个可用的容器存储接口插件128中的一个对应的容器存储接口插件128从存储源中以持久卷的形式供应存储装置。“供应”存储装置可以指分配一定数量的存储容量并使该分配可用于消费者的过程。插件128可以由各种供应者提供,并且可以将关联的存储系统暴露(即,使其可供使用和/或消耗)于容器存储接口123。插件的非限制性示例包括块协议插件(例如基于互联网小型计算机系统接口或iSCSI协议)、文件协议插件(例如基于网络文件系统或NFS协议、通用互联网文件系统或CIFS协议、服务器消息块或SMB协议)、公共云持久卷插件以及基于任何其他存储类型的其他插件(例如自定义驱动器)。为了方便起见,各个插件128在本文中可以被称为插件128(例如块协议插件128或文件协议插件128)。插件128可以根据该插件的要求在容器环境120中进行安装和设立过程(例如填充凭证或其他配置细节)。在一些情况下,一个或多个插件128可能作为容器化应用运行。然而,通过插件128供应的持久卷可能仅被限于与该插件相对应的单一类型的存储装置。与之相比,本文公开的容器化的存储虚拟化系统130有利地可以用于创建混合多种基础存储类型的持久卷。
容器化的存储虚拟化系统130(也称为存储虚拟化系统130)在一个或多个容器内运行,并且可以在可执行指令105中被实现。将变得显而易见的是,存储虚拟化系统130在请求应用和通过容器存储接口123供应的一个或多个存储分配之间提供额外的存储虚拟化层。存储虚拟化系统130包括数据路径132和控制平面140。数据路径132包括数据服务提供方134、存储虚拟器136和卷管理器138。数据路径132还可以包括用于访问本地存储装置(即,存储虚拟化系统130被托管的同一计算系统100上的存储装置)的存储适配器139,诸如用于挂载(mount)本地物理存储装置106的块适配器、用于访问作为块设备的本地文件系统108的堆叠式的文件和块适配器或其他存储适配器。
控制平面140包括策略引擎142和容器存储接口API(应用编程接口)144。在存储虚拟化系统130的初始化阶段期间,控制平面140可以从管理员或容器编排器122接收容器环境120中的可用容器存储接口插件128的列表。控制平面140还可以确认可用于数据路径132以挂载本地存储装置的存储适配器139。控制平面140还可以维护与那些可用插件128中的每个插件128相关联的存储装置的特性列表,诸如性能特性(例如时延、IOPS或每秒输入/输出操作等)、安全特性(例如加密、隔离等)、数据保护特性(例如可用的RAID或独立磁盘的冗余阵列、级别)、成本特性(例如每GB美元)或其他特性。
数据路径功能132和控制平面功能140的功能性现在将在向容器化应用124、126提供存储装置的上下文中被描述。诸如应用124等容器化应用可以向容器编排器122请求存储装置。例如,应用124可能需要持久卷来存储数据。在一些实现中,应用124可以随请求传递一个或多个要求,诸如容量要求、性能要求(例如时延、IOPS等)、数据保护要求(例如RAID级别)、成本要求(例如每GB美元)、安全要求、层列要求(例如所指定的冷存储量和热存储量)或其他要求。在一些实现中,响应于该请求,容器编排器122可以维护称为编排器持久卷的存储抽象。
容器编排器122可以使用容器存储接口123来通过控制平面140的容器存储接口API 144将请求发送给存储虚拟化系统130(接口144充当服务器)。通过这种方式,容器化的存储虚拟化系统130可以被理解为充当容器编排器122的存储提供方。在一些实现中,控制平面140可以向该请求指派标识符,使得每个请求可以被单独地标识,尤其是相对于将以本文描述的方式为每个请求供应的存储装置。
容器编排器122的策略引擎142分析请求,以确定哪些类型的存储装置满足该请求的要求。例如,控制平面140可以具有可用于存储供应的以下类型中的一种或多种:物理存储装置106、本地文件系统108、远程存储系统160、虚拟化存储装置162或公共云存储装置164。附加地,可能存在所描绘的任何一种类型的存储装置中的多于一种存储装置,但为了清楚说明而未被示出。例如,多个远程存储装置160可以是可用的,通过它们供应存储装置的分配。
图1所描绘的远程存储系统160可以表示文件系统(例如网络附接的存储装置或NAS、文件服务器)、块存储系统(例如存储区域网络或SAN、存储设备)或远离计算系统100因此也远离容器化的存储虚拟化系统130的任何其他类型的存储系统。例如,远离可能意味着计算系统100经由网络连接等与远程存储系统160通信。
虚拟化存储装置162可以表示虚拟环境中的任何现有持久卷,诸如容器环境120中的持久卷,包括通过容器存储接口123所供应的独立于容器化的存储虚拟化系统130的容器存储装置。在一些示例中,虚拟化存储装置162可以表示由除系统130之外的另一容器存储虚拟化系统所供应的容器存储装置(例如托管在与计算系统100不同的节点上)。在一些示例中,虚拟化存储装置162可以表示由基于虚拟机或管理程序的软件定义的存储平台提供的存储装置。
策略引擎142可以确定前述存储类型的混合。例如,策略引擎142可以将请求与可用存储类型进行比较以标识最接近的匹配。为了说明,该请求可以要求一定数量的高速存储装置和一定数量的低成本档案类存储装置。策略引擎可以确定物理存储装置106满足高速存储要求(例如部分地由于局部性并且在该示例中是高速介质),并且块存储设备160满足低成本档案类要求。例如相对于图2,策略引擎142的附加示例实现是在本文中进一步描述的。
随后,控制平面140利用适配器139和/或容器存储接口插件128来以所确定的混合供应每种存储类型,并为每个供应的存储装置获取挂载点。挂载点允许消费者访问所供应的存储装置,诸如下面将被描述的数据路径132。
作为本地供应的示例,控制平面140可以使用来自适配器139的块适配器来供应来自物理存储装置106的分配,并获取本地块挂载点170(例如本地主机设备挂载点)以访问该分配。作为另一示例,控制平面140可以使用堆叠式的文件和块适配器来供应来自本地文件系统108的分配,并且获取本地文件系统挂载点172以作为块设备(即,“文件作为块设备”)访问该分配。
为了经由插件128供应存储装置,控制平面140经由容器存储接口API 144与存储接口123进行通信,以请求插件128从其关联的存储装置中供应分配并将挂载点提供回控制平面140。作为示例,假设远程存储系统160表示远程块设备(例如计算系统100外部的SAN存储阵列),则控制平面140可以请求(经由144和123)块协议插件128(例如基于iSCSI协议)供应来自块型远程存储系统160的分配,并提供远程卷挂载点174(例如iSCSI目标和LUN或逻辑单元号)以访问该分配。作为另一示例,远程存储系统160可以表示远程文件设备(例如NAS文件服务器),并且控制平面140可以(经由144和123)请求文件协议插件128(例如基于NFS协议)供应来自文件型远程存储系统160的分配,并提供远程卷挂载点174(例如NFS下的IP地址和导出名称)来访问该分配。在一些实现中,代替使用适配器139,控制平面140可以利用块协议插件128来从物理存储装置106进行供应,或者利用文件协议插件128来从本地文件系统108进行供应。
作为通过插件进行供应的另一示例,控制平面140可以请求(经由144和123)与虚拟化存储装置162相匹配的插件128从虚拟化存储装置162供应分配并提供虚拟化存储挂载点176来访问该分配。作为另一示例,控制平面140可以请求(经由144和123)公共云插件128从公共云存储装置164供应分配。作为回报,公共云插件128可以提供公共云持久卷挂载点178来访问该分配。
尽管图1描绘了本地块挂载点170、本地文件系统挂载点172、远程卷挂载点174、虚拟化存储挂载点176和公共云持久卷挂载点178,或多或少的挂载点和任何组合的挂载点可以由控制平面140请求并经由适配器139或插件128获取。在各种实例中,多个本地块挂载点170、多个本地文件系统挂载点172、多个远程卷挂载点174、多个虚拟化存储挂载点176和/或多个公共云持久卷挂载点178可以由控制平面140请求和获取。而且,存储系统160和远程挂载点174可以分别表示相同或不同的一种或多种类型的远程存储装置及其挂载点,包括块、文件或其他类型的可远程访问存储装置。由控制平面140请求和获取的存储挂载点的特定组合可以取决于来自容器化应用124的存储请求,并且更具体地,可以取决于策略引擎142对该存储请求的处置。
一旦一个或多个存储挂载点(例如170、172、174、176或178)已经由控制平面140根据策略引擎142获取了,则控制平面140将所获取的挂载点传递给数据路径132。例如,控制平面140可以通过将挂载点与请求标识符关联来将挂载点标识为与特定请求相关联。如将被描述的,数据路径132消耗并混合(即,聚合)挂载点,以创建由挂载点180呈现给请求容器化应用124的虚拟持久卷156。通过这种方式,与所获取的挂载点(例如170、172、174、176或178)相对应的所分配的存储装置可以被称为虚拟持久卷156的基础存储装置(或类似地,后端存储装置)。因此,容器化应用124读取数据并将数据写入虚拟持久卷156。在描述虚拟持久卷156的创建之前,数据路径132的操作方面将被首先描述。
数据路径132包括存储虚拟器136,该存储虚拟器136维护基于对象的存储虚拟化层150。存储虚拟化层150的目的是将数据的存储位置(即,经由挂载点170、172、174、176和/或178访问的存储分配)与数据如何被呈现给数据的消费者(例如容器化应用124)分离。通过这种方式,诸如迁移、备份、快照、复制、去重、压缩等数据服务可以对基础存储装置的任何混合被执行,并且减少、最小化甚或不会对数据的消费者造成干扰。
存储虚拟化层150的一个方面在于,存储虚拟器136将数据作为“对象”存储在对象存储库152中。更具体地,对象存储库152可以存储不同类型的对象,包括数据对象和元数据对象。与容器化应用124相关的数据(包括文件和/或目录)包括一个或多个数据对象。元数据对象尤其可以用于以有用且有序的方式组织数据对象,如下面将被描述的。例如,在一些实现中,对象存储库中的每个数据对象可以是固定量的数据,诸如4或8千位字节的数据,并且元数据对象也可以是固定量的数据,诸如1千位字节。
基于对象的存储虚拟化层150可能不同于块级存储装置(例如在SAN中实现并经由诸如iSCSI或光纤信道等存储协议呈现)和文件级存储装置(例如管理文件分层结构中的数据并且经由诸如NFS或SMB/CIFS等文件级协议被呈现的文件系统),尽管基于对象的存储虚拟化层150可以位于块或文件级存储协议的基础上(例如通过经由挂载点180、182的抽象,如将被描述的)。
存储虚拟器136维护对象索引154,该对象索引154针对对象存储库152中的每个对象(数据对象和元数据对象)追踪签名、物理地址和引用计数器。使用诸如SHA-1、SHA-256、MD5等散列函数,对象的签名可以是该对象内容的密码摘要。因此,签名也可以被称为基于内容的签名。对象索引154中的引用计数器是指关联对象在存储虚拟化层150中跨所有虚拟持久卷(包括156、158)引用的次数。
对象索引154中的物理地址是指对象的实际物理位置。在一些示例中,尽管对象存储库152可以被理解为用于描述存储虚拟化层150内的对象的存储追踪的存储构造,但是也可以理解的是,对象被物理地存储在物理地址处的基础存储装置上。因为数据路径132可以消耗多个存储挂载点,所以特定的挂载点可以是物理地址的一部分。附加地,物理地址可以包括给定挂载点的存储分配内的位置。例如,如果挂载点从属于物理存储装置106,则物理地址可以包括逻辑块号。如果挂载点从属于公共云存储装置164,则物理地址可以包括对应的托管提供方的语法中对云对象的引用。卷管理器138被配置为执行对指定物理地址(诸如存储在对象索引154中的物理地址)的数据读取和写入。
在一些实现中,容器化的存储虚拟化系统130可以利用在对象索引154和对象的实际物理位置之间的附加间接层。在这种实现中,卷管理器138可以将控制平面140提供的每个挂载点处的基础存储分配指派和/或划分为扩展(extent)(或也称为迷你卷)。附加间接层可以通过与对象签名相关联地在对象索引154中存储虚拟地址而非物理地址,并维护将给定虚拟地址映射到扩展并因此映射到对应的基础存储装置的扩展表来实现。因此,为了基于虚拟地址访问对象,卷管理器138可以首先使用扩展表和虚拟地址的第一部分来标识虚拟地址所针对的扩展,然后使用虚拟地址的第二部分将对象定位在扩展内。通过这种方式,某些数据服务(诸如扩展之间的迁移和层列)可以通过仅更新扩展表中的扩展标识符来以高效方式执行,而不是更新对数据对象的大量内存或持久引用(即,对象索引154中的每个受影响的地址),并重新生成各种逻辑地址、索引和用于管理存储系统的其他数据结构。
在存储虚拟化层150内,存储虚拟器136维护由对象存储库152支持的一个或多个虚拟持久卷。在一些实现中,容器化应用将与虚拟PV以一对一关系相关联。例如,在图1的示例说明中,容器化应用124与虚拟PV 156相关联,并且容器化应用126与虚拟PV 158相关联。在一些实现中,每个虚拟PV由容器编排器122映射到由容器编排器122维护的对应编排器持久卷,并且请求容器化应用124访问虚拟PV 156的存储装置是通过经由编排器持久卷来访问的。
在其他情况下,容器化应用和虚拟PV可能以一对多、多对一或多对多的关系关联。仅出于说明的目的,虚拟PV现在将参照虚拟PV 156来描述,尽管应该理解的是,相似的描述可以适用于其他虚拟PV,诸如虚拟PV 158和未示出的其他虚拟PV。
在实现中,虚拟持久卷156可以是存储在对象存储库152中的元数据对象和数据对象的组织,其中该组织通过关联的基于内容的签名使数据对象与根对象分层地相关。在示例中,虚拟PV 156可以是Merkle树(也称为散列树)或任何其他分层布置(例如有向非循环图等)。在分层Merkle树的情况下,数据对象可以位于任何分支的最低树级别(也称为叶级别,与根对象最远),并且这种数据对象可以被称为叶数据对象。如上所述,数据对象构成了容器化应用124的数据,诸如文件和目录。
在分层布置内,父对象是指包括子对象的签名作为其内容的对象。例如,叶级数据对象的父对象是元数据对象,该元数据对象存储其子叶级数据对象的签名作为其内容。通过这种方式,每个级别的对象的签名被收集在分层布置中更高的下一级别的父对象中,直到根对象被到达为止。因此,根对象也是元数据对象,该元数据对象存储相应子对象的签名作为内容。从另一角度来看,分层布置在从根对象到叶级别的方向上扩张–任何给定级别的元数据对象都可以扩张到由预定义分支因子指示的多个子节点。元数据对象可能能够存储至少等于分层布置的分支因子的签名数量,使得它可以保有所有子对象的签名。
虚拟PV的数据的任何改变(即,新数据、修改后的数据、所删除的数据)都将转化为一个或多个叶级数据对象的内容的改变,这将促使这些改变后的数据对象的基于内容的签名的改变,这将导致内容和签名改变通过父节点向上传播到根对象。因此,在给定的时间点(也称为时间快照)的虚拟PV 156可以由其根对象唯一地标识,并且更具体地,由其根对象签名来标识。
虚拟PV 156的另一方面是,在一些实现中,来自容器化应用124中的给定文件或目录可以被存储在虚拟PV 156内的对应子树布置中。换言之,虚拟PV 156可以被描写为子树,每个子树对应于容器化应用124的相应文件或目录。
因为文件和目录包括一个或多个数据对象,并且那些数据对象通过引用关联的数据对象签名被布置在虚拟PV 156及其子树中,所以在一些实现中,数据对象中的每个数据对象都可以被物理地存储在对象存储库152中仅一次,并由它们的相应签名在虚拟PV 156中的多个元数据对象中或在存储虚拟化层150中的任何其他虚拟PV(例如158)中被引用。因此,数据可以由存储虚拟器136通过这种方式去重。类似地,元数据对象可以被存储一次并且由对应签名引用多次。数据对象或元数据对象在存储虚拟化层150中被引用的次数可以被记录在对象索引154的对应引用计数器中。在一些实现中,与后处理或近线去重相比,数据的去重可以在写入操作期间被内联地执行,并且通过这种方式,数据的存储可以被描述为在存储虚拟化层150中以及虚拟PV 156、158之间被本机地去重。
在安全被考虑的用例中,包括多租户场景,单独的对象存储可以针对每个敏感的安全域被使用。因此,敏感数据可以被隔离到受保护的对象存储库,而无需参与不在安全域内的其他虚拟PV的去重。
为了使容器化应用124访问虚拟PV 156,数据路径132可以提供挂载点180。数据路径132可以提供多种类型的挂载点中的任何类型的挂载点,包括但不限于块类型挂载点(例如iSCSI兼容的)、文件类型挂载点(例如在用户空间或FUSE接口中的文件系统或者NFS、SMB或CIFS兼容的)、键/值共享挂载点(例如noSQL卷或亚马逊S3兼容的API)以及其他类型的挂载点。通过这种方式,挂载点可以被理解为有助于完整的存储访问抽象,因为容器化应用124被提供有哪种类型的存储访问被容器化应用124需要(例如文件协议或块协议等),不管构成虚拟PV 156的基础存储类型如何(例如不管基于软件还是基于硬件、块或文件,本地还是远程等)。
挂载点的类型(即,抽象类型)可以是用户选择的,或者可以根据请求存储装置的容器化应用124来预定义(即,基于容器编排器122指示的容器化应用的类别等)。抽象类型可以经由在控制平面140处接收到的存储请求被指示给容器化的存储虚拟化系统130。
在图1的示例中,容器化的存储虚拟化系统130还可以通过类似于上面针对容器化应用124的虚拟PV 156的挂载点180描述的方式向容器化应用126提供挂载点182,以访问响应于对从容器化应用126到容器编排器122的存储装置的请求而创建的虚拟持久卷158。虚拟PV 156和158都可以包括用于组织相应数据集的相应Merkle树,而对象存储库152以去重方式存储两个虚拟PV 156和158的数据。
在操作中(即,在虚拟PV 156被创建并且挂载点180被提供给应用124之后),存储虚拟化系统130可以经由挂载点180服务于来自容器化应用124的指向虚拟PV 156的输入/输出(I/O)请求。例如,为了提供通过挂载点180接收的读取请求,存储虚拟器136可以标识由读取请求寻址的虚拟PV中的数据对象的签名(即,可以包括基于读取请求的地址遍历虚拟PV的Merkle树结构),并从对象索引154确定那些数据对象签名的物理地址。在一些实现中,数据对象的物理地址可以指定数据对象被存储的基础存储分配的挂载点(例如一个或多个挂载点170、172、174、176或178)。然后,经由卷管理器138的存储虚拟化系统可以使用物理地址(或者如上所述,使用虚拟地址和扩展表)读取数据对象,并且通过挂载点180将所读取的数据返回给容器化应用124。
为了提供写入请求,在示例实现中,存储虚拟器136可以从容器化应用124接收要被写入虚拟PV 156的数据,基于基于内容的签名检查该数据是否包括该对象存储库152新的任何数据对象,并将新的数据对象(即,数据存储库中已经不存在的数据对象)写入对象存储库。在一些实现中,存储虚拟器136可以在写入对象存储库152之前压缩新的数据对象。写入对象存储库152的过程具体地可以涉及控制新的数据对象被写入哪个基础存储分配(例如106、108、160、162或164)。在一些实现中,容器化应用可以在写入请求中指示将数据写入哪个基础存储分配。在一些实现中,新数据可以被默认写入虚拟PV 156的本地存储部分,诸如本地附接的物理存储装置106,其可以提供针对频繁访问而优化的“热”层存储装置。在一些实现中,容器化应用可以指示用于写入数据的特定策略或服务级协定,并且存储虚拟化系统可以确定哪个基础存储分配满足该策略或SLA。然后,存储虚拟化系统利用与该基础存储分配相对应的挂载点(例如170、172、174、176或178)来写入数据对象。存储虚拟化系统还将数据对象的签名添加到虚拟PV 156的元数据对象。
表示由根对象签名本机地去重和唯一地标识的虚拟PV 156中的数据可以实现高效的数据服务,包括由数据服务提供方134提供的数据服务。例如,数据服务提供方134可以执行但不限于基于快照的备份、复制、迁移、层列、基于冗余的数据保护(例如独立节点的冗余阵列,也称为RAIN;或RAID)或其他能力。数据服务提供方134可以以对容器化应用124透明或无中断的方式利用虚拟PV 156执行数据服务。例如,数据服务可以在不修改挂载点180的情况下被执行,并且在一些数据服务的情况下,无需来自用户、容器化应用124或容器编排器122的输入或指令(例如配置细节、设立命令等)。而且,在一些示例中,数据服务提供方134可以操纵主要在存储虚拟化层150处的数据,使得数据服务的执行方式与不同的基础存储挂载和虚拟PV 156的特定组成无关。换言之,数据服务提供方134可以一致地执行通用的数据服务集合,不管哪种类型的基础存储装置以无中断方式构成虚拟PV 156。凭借例如虚拟PV 156使底层存储装置与容器化应用124分解,前述技术益处可以成为可能。
例如,数据服务提供方134可以执行高效的基于快照的备份数据服务。在一些实现中,分层布置的虚拟PV 156的时间快照之间的差异可以通过以自顶向下的迭代方式从根对象开始比较对象签名以找到不同的元数据和数据对象来高效地实现。例如,在备份虚拟PV156的当前状态(即,当前快照)的操作中,当前快照可以在主系统(例如计算系统100)上,并且较旧的先前备份的快照可能已经存在于备份系统(例如计算系统110)。在该示例中,当前快照和较旧快照之间的差异可以通过以先前描述的方式比较快照的签名来确定,并且备份系统可以被搜索以确定是否不同的元数据或数据对象已经存在于备份系统上(即,备份系统的对象存储库中)。仅不存在的那些元数据或数据对象从主系统被复制到备份系统,从而减少数据业务量并改善备份时间。在其他实现中,代替或除了备份系统之外,基于快照的备份可以以类似的方式在相同的主系统上进行。
例如,基于快照的备份可以在不中断容器化应用124的情况下在调度的基础上被执行。而且,基于快照的备份可以主要在软件虚拟化层150上被执行,从而避免直接管理每个单独的基础存储装置的复杂性。与备份过程类似,还原过程也可以继续将要被还原的元数据或数据对象与已存在于还原目标上的对象进行比较,并仅传输不存在于还原目标上的数据。
数据服务提供方134也可以执行迁移操作。迁移可以在虚拟PV 156内的不同基础存储装置之间移动数据对象,包括在不同本地存储装置之间,本地与远程存储装置之间,不同远程存储装置之间,不同公共云存储装置之间,公共云存储装置与非公共云存储装置(本地或远程的)之间或基础存储装置的其他组合之间移动数据对象。通过将移动数据对象的新物理地址与对象索引154中未改变的基于内容的签名相关联,迁移是在存储虚拟化层150处处置的,从而使迁移对容器化应用124透明。
作为另一示例,数据服务提供方134可以将虚拟PV 156迁移到不同的计算系统。例如,在一些情况下,使用虚拟PV 156将虚拟PV 156迁移到接近工作负载可能是有用的。在示例场景中,出于负载平衡或另一原因,容器编排器122可以将容器化应用124移动到不同的计算系统(例如从源计算系统100到目的地计算系统110),并且虚拟PV 156可能需要被迁移以接近容器化应用124。在一些实现中,存储虚拟化系统130可以将虚拟PV 156的管理迁移到容器应用124已被迁移到的目的地计算系统110上的另一存储虚拟化系统。数据服务提供方134还可以迁移虚拟PV 156中的一些数据,诸如将计算系统100本地的数据对象(例如在基础物理存储装置106上)迁移到不同计算系统110的物理存储装置,这对于维护虚拟PV156的存储本地性和其他性能特性可能是有用的。这种迁移可能涉及标识目的地计算系统110是否已经具有要被迁移的元数据或数据对象的副本,并仅传输不存在于目的地计算系统110上的数据对象。同时,相同的挂载点180可以针对容器化应用124被维护并且不中断。
数据服务提供方134还可以在虚拟PV 156内执行数据层列,即,在不同类型的基础存储装置之间移动数据,该基础存储装置可以提供不同的特性并遵守不同的存储策略。例如,如先前所描述的,层列可以凭借将虚拟PV 156的构成存储分配指派和/或划分为不同程度来实现。在某些触发条件下,数据服务提供方134(在一些实现中与卷管理器138结合)可以将数据对象从一个扩展移动到不同扩展,并相应地更新扩展表。示例触发条件可以包括数据的安全状况提高,这可能会导致数据服务提供方134将该数据从公共云存储装置164移动到非云存储装置106、108、160或162;数据的老化,这可能会导致数据服务提供方134将该数据移动到档案类别的存储装置(例如远程存储装置160);最近对数据的频繁访问,这可能会导致数据服务提供方134将该数据移动到高性能存储装置(例如本地物理存储装置106);或其他类型的条件。凭借在存储虚拟化层150处移动和管理数据,数据层列可以在任何类型的基础存储装置上被执行,而不会中断挂载点180或容器化应用124。
数据服务提供方134还可以支持基于冗余的数据保护。例如,数据服务提供方134可以提供RAID数据保护。例如,数据服务提供方134(在一些实现中与卷管理器138结合)可以跨基础存储分配或在基础存储分配内创建RAID集合(例如在本地物理存储装置106包括驱动器集合的情况下)。数据服务提供方134可以以软件RAID控制器为特征或与硬件RAID控制器协作以根据诸如RAID 1、RAID5或RAID 6等RAID方案将虚拟PV 156的对象写入RAID集合。
数据服务提供方134还可以通过复制或镜像虚拟PV 156(为了便于讨论,也称为主虚拟PV)的数据来提供RAIN数据保护,以便与RAIN架构原则一致地达到数据保护和高可用性的目的。在一些实现中,当数据进入存储虚拟化层150作为来自容器化应用124的写入请求时,数据服务提供方134可以在开始时复制或镜像数据。在一些实现中,复制的数据可以形成虚拟PV复制品,其可以具有类似于虚拟PV的形式(例如包括Merkle树),并且可以相对于计算系统100本地的主虚拟PV由不同计算系统110上的不同的存储虚拟化系统管理并本地化。附加地或备选地,虚拟PV复制品可以包括与构成主虚拟PV 156的基础存储装置不同和/或分离的基础存储装置。因此,如果主虚拟PV上的数据不可恢复,则数据可以使用故障转移程序从虚拟PV复制品还原。
总而言之,凭借容器化的存储虚拟化系统130将各种类型的存储装置聚合为虚拟持久卷(可以被呈现为任何数量的可用存储抽象),容器存储数据路径可以从头到尾被高度虚拟化。因此,容器化应用的用户可以在请求基础存储装置的任何组成以适合应用的性能需求(或其他需求)时提供高度的灵活性,同时还能够使用适合于该应用的任何类型的抽象来消耗该存储装置。而且,不管基础存储装置的组成如何以及不管用于呈现虚拟PV的存储访问抽象的类型如何,一致的存储服务集合都可以被提供。
图2描绘了包括策略引擎242的示例系统。图2还描绘了其他元件,包括容器编排器222、容器存储接口223、容器化应用224、数据路径232、容器存储接口API 244和一个或多个存储插件(例如存储插件A 228-1、存储插件B 228-2、存储插件C 228-3)。在一些实现中,图2的前述元件可以被视为存在于同一容器环境内。策略引擎242和图2的元件(即,222、223、224、232、244、228-1、228-2、228-3)可以分别被实现为硬件或硬件和程序的任何组合,以实现本文描述的它们的相应功能性。例如,程序可以是存储在非瞬态机器可读存储介质上的处理器可执行指令,并且硬件可以包括用于取回和/或执行那些指令的处理资源。例如,这种机器可读介质和处理资源可以在许多方面中分别类似于图1的机器可读介质104和处理资源102。硬件也可以包括电子电路系统或逻辑。
容器编排器222在许多方面中都可以类似于上述容器编排器122。容器编排器222可以用作用于部署和管理容器化应用的平台,诸如容器化应用224,其可以类似于上述容器化应用124、126。容器化应用224可以包括一个或多个容器或与其相关联,该一个或多个容器可以分别包括一个或多个微服务,并且一个或多个容器可以被组织为一个或多个盒(pod)。
容器编排器222可以包括容器存储接口223,该容器存储接口223可以类似于上述容器存储接口123。容器存储接口223可以使插件能够向容器编排器222和关联的容器环境(可以类似于上述容器环境120)暴露(即,使其可供使用和/或消耗)存储系统。例如,存储A插件228-1可以将存储系统229-1暴露于容器编排器222,存储B插件228-2可以将存储系统229-2暴露于容器编排器222,而存储C插件228-3可以将存储系统229-3暴露于容器编排器222。插件228-1、228-2和228-3(也通常称为(多个)插件228)可以类似于上述插件128以及任何存储系统229-1、229-2和229-3(也通常称为存储装置、(多种)存储类型或(多个)存储系统229)可以是本地存储设备(例如本地附接的磁盘驱动器)、本地或远程存储阵列、软件定义的存储装置、云存储装置等,并且可能与上述任何存储系统或存储类型类似,诸如物理存储装置106、本地文件系统108、远程存储系统160、虚拟化存储装置162或公共云存储装置164。
针对被部署在容器编排器222处的存储插件228,容器编排器222可以维护称为存储类别的对象,该对象包括描述关联存储装置229的参数(例如键/值对的形式)。存储类别可以描述所提供的存储装置的特性(例如可通过容器存储接口223提供为持久卷),并且所描述的特性可以包括服务质量级别、备份策略、容量、成本、性能(例如IOPS、时延)、冗余、恢复时间目标(RTO)、恢复点目标(RPO)或其他度量。不同的存储类别可能描述了不同的存储产品。在一些实例中,与一个供应者相关联的存储装置229可以具有多个存储类别。来自不同供应者的不同存储装置229可以具有不同的存储类别。由于不同的存储类别可能使用不同的参数,因此存储类别在供应者之间甚或在供应者内部可能是非标准化的。
在图2中,存储A插件228-1可以具有至少一个关联的存储A存储类别226-1,存储B插件228-2可以具有至少一个关联的存储B存储类别226-2,并且存储C插件228-3可以具有至少一个关联的存储C存储类别226-3。诸如存储A存储类别226-1、存储B存储类别226-2和存储C存储类别226-3等存储类别在本文中通常可以被称为(多个)存储类别226。尽管三个存储插件228、三个存储系统229和三个存储类别226在图2中被描绘为示例,但是或多或少的存储插件、存储系统和/或存储类别可能存在并在各种实现中可用。
在一些实现中,策略引擎242可以形成存储虚拟化系统的至少一部分,该存储虚拟化系统本身可以是包括一个或多个微服务的容器化应用。例如,策略引擎242可以用作图1的容器化的存储虚拟化系统130或形成其一部分,并且更具体地,可以用作图1的控制平面140和/或策略引擎142或形成其一部分。如将被描述的,策略引擎242对于虚拟化控制平面操作以向容器化应用(例如应用224)提供由一种或多种类型的可用存储装置支持的虚拟持久卷来满足策略目标可能是有用的,尽管可用的存储类型由非标准化存储类别描述。而且,如下面将被描述的,策略引擎242可以基于例如关联的容器化应用的与存储相关的性能需求来智能且自动地优化虚拟持久卷。
策略引擎242可以包括一个或多个元件和/或与一个或多个元件交互,每个元件可以被实现为硬件或硬件和程序的任何组合,以实现本文描述的它们的相应功能性。在一些实现中,策略引擎242可以包括调度器246、发现代理248、包括供应器252和优化器253的虚拟PV管理器250、卷扩展和副本管理器254、容器存储接口映射256、数据路径管理器258和/或应用存储监测器259。在一些实现中,策略引擎242可以经由容器存储接口API 244(可以类似于上述的容器存储接口API 144)与容器存储接口223通信(例如双向通信)。在一些实现中,策略引擎242可以例如经由数据路径管理器258与数据路径232通信,该数据路径232可以类似于上述数据路径132。
发现代理248可以确定在容器环境中哪些插件228和关联的存储装置229可用。附加地,发现代理248可以取回与所发现的(多个)插件228和存储装置229相对应的存储类别226,并将所取回的存储类别226注册到策略引擎242。例如,发现代理248可以通过查询容器编排器222或容器存储接口223来收集关于插件228、存储装置229和存储类别226的前述信息。
在一些实现中,发现代理248可以在策略引擎242所属的存储虚拟化系统的启动时或初始化阶段期间操作和/或可以在存储虚拟化系统运行时周期性地操作。作为说明,容器环境的非限制性示例可以包括三至六种类型的存储插件228。在各种实现中,每个插件228可以有一个或多个存储类别。
如上面所讨论的,策略引擎242注册的存储类别226可能是非标准化的。换言之,不同的存储类别可以使用不同的参数,或更具体地,针对定义为键/值对的参数使用不同的键和/或不同的值。策略引擎242可以利用通用图式260将每个存储类别226转化为对应的存储配置文件。例如,存储A存储类别226-1可以被转化为存储A配置文件262-1,存储B存储类别226-2可以被转化为存储B配置文件262-2,依此类推。诸如存储A存储配置文件262-1和存储B存储配置文件262-2等存储配置文件在本文中通常可以被称为(多个)存储配置文件262。在一些实现中,通用图式260可以基于例如管理员对存储类别226的了解来手动编码。通用图式260可以被理解为供应者特定的存储类别参数和通用语言之间的映射。在一些实现中,如下面将被描述的,通用图式260的通用语言可以与虚拟PV存储类别227的创建相关地设计。在一些实现中,存储配置文件262可以是静态的,因为预计它们在转化后不会改变。
为了说明,如果存储A存储类别226-1和存储B存储类别226-1中的相同性能级别分别具有值A和B,并且因此被转化为存储A配置文件262-1和存储B配置文件262-2中的相同性能级别值X,则通用图式260可能是有用的。因此,存储配置文件262-1和262-2(分别从存储类别226-1和226-2进行转化)使用通用语言来描述分别用于存储装置229-1和229-2的存储产品。
策略引擎242还可以向容器编排器222呈现或发布一个或多个虚拟PV存储类别227。虚拟PV存储类别227可以与存储类别226一起被暴露于用户。类似于存储类别226,虚拟PV存储类别227可以描述可供应的持久卷的特性,尤其是可从策略引擎242或从包括策略引擎242的存储虚拟化系统供应的持久卷。在一些实现中,虚拟PV存储类别227和根据虚拟PV存储类别227供应的虚拟PV可以被认为具有或满足默认或初始存储策略。
不同的虚拟PV存储类别227可以被呈现或发布给容器编排器222,诸如用于不同服务级别的存储类别,诸如金、银、青铜或动态的,每个服务级别具有不同的参数。例如,不同的虚拟PV存储类别227中的每个存储类别可以由管理员出于不同的虚拟存储策略目的而设计,或者可以由提供策略引擎242的供应者预定义。出于说明的目的,图2所描绘的虚拟PV存储类别227是“动态H”存储类别,其参数为:类型:层列式、性能:高、成本:高以及自动优化:是。这种参数可用于确定虚拟PV的初始配置(例如具有“高”性能和成本的初始配置,并且其他中等或低性能动态类别也可能可用),并且虚拟PV可以由优化器253修改(由于“自动优化:是”参数),如下所述。另一示例虚拟PV存储类别(未示出)可以是“银”存储类别,其参数为:类型:层列式、性能:中等、成本:中等以及自动优化:否,该存储类别可能未由优化器253自动优化。
与存储类别226不同,虚拟PV存储类别227本机地符合通用图式260。换言之,虚拟PV存储类别227的键/值对与通用图式260使用相同的语言,并且不需要进一步转化。在一些实现中,虚拟PV存储类别227可以被首先定义,并且通用图式260可以基于虚拟PV存储类别227的参数来创建。
应用224可以自主地或经由用户输入来向容器编排器222请求持久卷。该请求还可以包括供应要求,诸如虚拟PV存储类别227是所请求的持久卷期望的存储类别的指示。例如,随请求传递的其他要求可能包括期望的容量。容器编排器222例如可以依次经由容器存储接口223和容器存储接口API 244将创建卷请求230传递给策略引擎242。在一些实现中,容器编排器222可以提取虚拟PV存储类别227的参数,并将参数和请求230一起传递给策略引擎242。请求230可以由虚拟PV管理器250在策略引擎242内接收。
虚拟PV管理器250可以包括用于操纵由策略引擎242管理的虚拟PV的各种运算符,包括供应新的虚拟PV,删除虚拟PV,处置针对虚拟PV的读/写I/O请求的运算符或其他运算符。这些运算符可以分别是硬件或者硬件和程序的组合,以实现其相应功能性。例如,虚拟PV管理器250可以包括供应器252运算符以供应新的虚拟PV。虚拟PV管理器250还可以包括优化器253,该优化器253基于与那些虚拟PV相关联的相应性能度量来自动优化虚拟PV。虚拟PV管理器250及其供应器252和优化器253的功能性现在将更详细地被讨论。
响应于请求230,供应器252开始创建虚拟PV的过程,该过程最终将作为虚拟PV280(即,至少包括卷标识符)被返回给容器编排器222,以作为持久存储装置由容器化应用224消费或使用。供应器252确定虚拟PV存储类别227在请求230中被标识为要创建的虚拟PV的期望类型。供应器252然后评估所请求的虚拟PV存储类别227中的每个参数,并确定哪个存储配置文件262具有可以满足并履行虚拟PV存储类别227参数的对应参数。在一些实现中,虚拟PV存储类别227中的参数是最小值,使得存储配置文件262中的对应参数的最接近匹配超过了存储类别227中的参数值。虚拟PV存储类别227参数与存储配置文件262的参数的这种匹配凭借虚拟PV存储类别227和与通用图式260兼容并且用通用图式260的语言的所有存储配置文件262成为可能。例如,如果所请求的参数指示性能:高,则供应器252将标识还包括性能:高的存储配置文件262。
在一些实现中,供应器252可以在最佳拟合的基础上将虚拟PV存储类别227的参数与存储配置文件262的参数进行匹配。例如,如果匹配或超过虚拟PV存储类别227参数的存储配置文件262的参数未被找到,则最接近的参数可以被选择。例如,如果所请求的参数指示性能:高,则供应器252可以选择具有性能:中等的存储配置文件,而不是具有性能:低的其他存储配置文件。
在一些实现中,供应器252还可以确定将虚拟PV存储类别227与特定存储配置文件262进行匹配是否将违反关联插件228的资源限制或配额,并且如果将发生违反,则避免匹配到该插件228。在一些实现中,供应器252可以使用带外查询命令(例如不经由插件228、容器存储接口API 244或容器存储接口223)来检查存储装置229的剩余容量。
在一些实现中,供应器252可以确定多个存储配置文件262(例如多于一个)可以被组合以满足虚拟PV存储类别227的参数。例如,请求230可以请求性能:高和2太字节(TB)的容量。然而,在该说明中,由于剩余容量或其他资源限制,具有性能:高参数的存储配置文件262-1和262-2被限制为1TB卷。在该实例中,供应器252可以确定组合来自存储配置文件262-1和262-2中的每个存储配置文件的1TB容量以履行对2TB性能:高的请求。
在一些情况下,供应器252可以确定单个存储配置文件262履行虚拟PV存储类别227的所有参数。在一些情况下,供应器252可以确定多个不同的存储配置文件262被需要以履行虚拟PV存储类别227的参数。例如,虚拟PV存储类别227可以是层列类型的,并且可以指定第一参数中的高性能的主存储装置(例如具有低时延和/或高IOPS)和档案类存储装置(例如具有低成本和/或高写入速度)以用于第二参数中的备份。在该示例中,为了说明的目的,假设存储A配置文件262-1与高性能存储阵列229-1相关联,并且存储B配置文件262-2与档案/备份存储系统相关联,供应器252可以确定第一参数由存储A配置文件262-1履行,并且第二参数由存储B配置文件262-2履行。
最终,供应器252可以创建虚拟PV存储类别227的参数到用作存储类别226的代理的一个或多个存储配置文件262的参数的映射,使得虚拟PV存储类别227的参数被履行。因此,供应器252还标识将被用于构成具有虚拟PV存储类别227的特性的虚拟PV的插件228(对应于所映射的存储配置文件262)。
供应器252与容器存储接口映射256协调,以使用与它们关联的存储类别226从与所映射的配置文件262相关联的存储插件228中的每个存储插件228中供应卷。供应器252通知容器存储接口映射256供应器252标识并映射到虚拟PV存储类别227的配置文件262和插件228,并且容器存储接口映射256使用由供应器252标识的插件228来处置虚拟PV存储类别227中的每个参数与一个或多个供应卷的低级更换。在该过程中,容器存储接口映射256可以将虚拟PV存储类别227的参数转化为存储类别226中的参数,然后使用插件228和那些转化后的参数来供应卷(因为插件228与存储类别226兼容)。使用插件228供应卷可以类似于上面在图1中使用插件128描述的供应。
为了说明,如果供应器252确定存储A配置文件262-1履行虚拟PV存储类别227的第一参数,则容器存储接口映射256可以使用通用图式260将该第一参数转化为存储A存储类别226-1的对应参数,然后经由容器存储接口API 244和容器存储接口223向存储A插件228-1发出创建卷请求270,该请求指示已转化的存储A存储类别226-1参数(并且在一些示例中是诸如容量等附加参数)。依次地,存储A插件228-1根据请求270从存储系统229-1供应存储装置,例如卷272,并返回可以由卷标识符或持久卷对象或用于处置供应卷的其他控制平面部件标识的卷272。容器存储接口映射256可以针对虚拟PV存储类别227的每个参数顺序地或并行地重复该过程。尽管为了清楚和易于说明,图2描绘了具有插件228的一个供应请求,但是应该理解的是,在一些实例中,卷可以根据供应器252确定的映射从多于一个插件228供应。
在一些实现中,卷扩展和复制管理器254和/或数据路径管理器258(与数据路径232结合)可以提供用于创建和/或管理虚拟PV的另一功能性。卷扩展和复制管理器254的功能性可以与数据路径管理器258/数据路径232互操作,或者可以独立于数据路径管理器258/数据路径232。
在一些实现中,数据路径管理器258可以将供应信息266发送给数据路径232。供应信息266可以是关于经由插件228供应以履行虚拟PV存储类别227的卷的信息,诸如存储装置的(多种)类型、卷标识符等(例如标识关于卷272的信息)。数据路径232然后可以以与上面相对于图1描述的方式类似的方式消耗那些供应卷以创建虚拟PV。具体地,数据路径232可以将虚拟PV创建为存储在对象存储库中的元数据对象和数据对象的组织(例如Merkle树),这些元数据对象和数据对象通过关联的基于内容的签名而与根对象分层地相关。在一些实现中,分层组织的对象存储库支持的虚拟PV作为虚拟PV 280被返回给容器编排器222,并且如上所述,数据路径232可以涉及服务I/O请求。
扩展(也称为迷你卷)是指虚拟PV内的组织单位。虚拟PV可以包括单个扩展(例如对应于单个供应卷)或多个扩展。扩展可以与经由插件228或其细分供应的特定卷对准。将虚拟PV划分为扩展可以允许将I/O有效地定向到预期的目标,诸如在层列存储装置的情况下,针对热数据具有高性能的层列扩展,而针对冷数据则具有档案或备份层列扩展。通过这种方式,单个虚拟PV可以具有自动内置的层列能力,从而使数据层列变得简单,并且对于用户和管理员来说是不可见的。在另一示例中,扩展对于管理将被组合以满足虚拟PV存储类别的给定参数的单独卷可能有用。卷扩展和复制管理器254可以使用扩展表以与上面相对于图1描述的方式类似的方式来管理扩展,或者可以将这种管理的一些或全部卸载给数据路径232。
在一些实现中,卷扩展和复制管理器254可以在虚拟PV的整个生命周期中协调由虚拟PV存储类别227指定的备份策略。在供应阶段期间(即,在供应器252从配置文件262标识主存储装置和备份存储装置以履行虚拟PV存储类别227之后),卷扩展和复制管理器254可以与容器存储接口映射256协调以首先供应备份卷(例如经由插件228-2从备份存储系统229-2供应),然后使用将备份卷标识为复制目标的供应请求供应主存储卷(例如经由插件228-1从主存储系统229-1供应)。然后,托管主存储卷的存储系统(例如存储系统229-1)可以利用其自身的复制机制将数据备份到在供应请求中标识的备份卷(例如在存储系统229-2处)。在一些实现中,调度器246可以操作来以一定频率或调度(例如如在虚拟PV存储类别227中所定义的)调度备份。在每个调度的实例处,调度器246可以指示主存储卷插件(例如228-1)将数据备份到目标备份卷。通过这种方式,单个虚拟PV 280可以包括自动备份,从而简化了用户和管理员的备份配置和维护。
一旦一个或多个卷已经根据虚拟PV存储类别227到(多个)存储配置文件262的映射经由插件228被供应,卷映射就被记录在虚拟化映射264数据结构中,其将构成的供应卷映射到正在创建的虚拟PV。作为映射的一个示例,如果VOL(2)是从存储A插件228-1供应的(例如VOL(2)是卷272的卷标识符),并且VOL(3)是从存储B插件228-2供应的以履行虚拟PV存储类别227,然后包括VOL(2)和VOL(3)的VIRTUAL_PV(1)(虚拟PV 280的卷ID)的映射被记录到图2所描绘的虚拟化映射264中。应该理解的是,前述内容仅是说明,并且虚拟PV可以包括更多或更少的供应卷。当多个虚拟PV被请求时(例如针对相同的虚拟PV存储类别或不同的虚拟PV存储类别),附加映射被存储在虚拟化映射264数据结构中。在这种意义上,虚拟化映射264数据结构可以被认为是动态的,因为随着新的虚拟PV被创建,新的映射可以被添加,并且随着虚拟PV被删除,现有的映射可以被删除。
策略引擎242可以通过经由容器存储接口API 244和容器存储接口223将至少虚拟持久卷标识符281(例如卷ID VIRTUAL_PV(1))发送给容器编排器222来返回虚拟PV 280,并且容器编排器222可以依次向容器化应用224提供对虚拟PV 280的访问。容器编排器222可以将虚拟PV 280的虚拟PV标识符281附接或关联至容器编排器222的元数据中的容器化应用224。随后,容器化应用224可以执行对虚拟PV 280的读取和/或写入操作。策略引擎242所属的存储虚拟化系统可以通过用映射到虚拟PV 280的存储装置229的卷介导这些I/O请求来提供指向虚拟PV 280的I/O请求。
在各种实现和场景中,由策略引擎242提供的虚拟PV 280的性质可以不同。例如,如果单个基础卷是针对虚拟PV存储类别227映射并供应的,那么策略引擎242可以直接将供应卷(例如卷272)作为虚拟PV 280来提供,而无需涉及数据路径232。在另一示例中,单个基础供应卷(例如卷272)可以被传递给数据路径232,并如上所述被虚拟化(例如作为由基于内容的签名标识的对象的分层结构),并且该数据路径虚拟化存储装置被提供为虚拟PV280。在另一示例中,多个基础卷是针对虚拟PV存储类别227映射并供应的,这些卷是通过数据路径232被虚拟化的,如上所述,并且数据路径虚拟化存储装置被提供为虚拟PV 280。例如,在图2中,以虚线描绘的虚拟PV 280包括来自存储系统229-1的卷和来自存储系统229-2的卷,这是使用它们的相应插件228-1和228-2供应的。
凭借前述内容,策略引擎242可以以自动化的方式标识和构造定制的存储装置的组成,以满足由在容器编排器222处暴露的虚拟PV存储类别227所表示的策略目标。策略引擎242可以利用存储插件228和存储类别226的生态系统,而无需花费大量的人工编写代码来支持每个插件228。而且,策略引擎242可以提高容器化应用的移动性,因为当容器化应用移动到新的容器环境时,策略引擎242可以通过在该新容器环境中可用和可发现的存储装置在该新容器环境中自动构造正确的持久存储装置。
如先前所提到的,由策略引擎242响应于创建卷请求230并根据虚拟PV存储类别227最初创建和提供的虚拟PV 280可以被认为具有默认存储策略。即,虚拟PV 280最初可以具有基于例如由管理员创建的预定义虚拟PV存储类别的特性。在一些实现中,策略引擎242可以基于关于请求容器化应用224的信息来进一步调谐虚拟PV 280,以努力为该应用224进一步优化虚拟PV 280。该调谐可以在容器化应用224使用虚拟PV 280作为持久存储装置之前或同时发生。
为了开始调谐,策略引擎242可以使用虚拟PV 280的卷标识符281来请求并从容器编排器222中读取附接至该卷标识符的容器化应用224的应用清单282。例如,所部署的容器化应用224可以由一个或多个对象(例如Kubernetes对象)表示,并且那些对象可以被表达为一个或多个JSON(JavaScript对象符号)或YAML(YAML不是标记语言)文件。清单282是那些对象(例如YAML文件)的集合,并且清单282可以被理解为容器化应用224的定义。
清单282的对象可以分别包括与容器化应用224相关联的标签。因此,为了找到清单282,策略引擎242可以使用虚拟PV 280的卷标识符来找到具有该卷标识符的持久卷对象,读取该持久卷对象的标签,并找到具有相同标签的其他对象。
清单282可以指示属性,诸如例如名称、容器化应用224所基于的图像、多个复制品(例如多个计算复制品,可能与缩放相关)、标签、容器化应用224是其成员的盒定义、正在使用容器化应用224或与容器化应用224相关的另一应用的指示或其他属性。示例图像可能包括Postgres、Nginx、MongoDB、MySQL或其他图像。这种细节可以不与创建卷请求230通信,因此策略引擎242将不会接收到关于经由创建卷请求230请求的存储装置将被用于什么或容器化应用224的性质是什么的任何符号。
策略引擎242可以通过将清单282的信息与图2所描绘的一个或多个预配置的应用数据存储库配置文件(诸如应用数据存储库配置文件A 284-1和应用数据存储库配置文件B284-2)(通常也称为(多个)应用数据存储库配置文件284)进行比较来分析应用清单282,尽管更多或更少的应用数据存储库配置文件可以在不同示例中可用。然后,策略引擎242可以标识与清单相匹配的特定应用数据存储库配置文件。例如,应用数据存储库配置文件284中的每个应用数据存储库配置文件284是预定的,如将在下面被讨论的,以为对应的应用类型提供定制的存储装置。在一些实现中,应用数据存储库配置文件284可以包括匹配标准元数据,该匹配标准元数据指示配置文件是针对哪种应用类型而定制的,包括诸如名称、图像名称、标签、复制品数量(例如计算复制品)和/或其他属性等元数据。策略引擎242可以标识应用清单282的属性与应用数据存储库配置文件284的匹配标准元数据信息之间的最佳拟合匹配(即,最佳拟合匹配可以是与其他应用数据存储库配置文件相比的与清单282的信息匹配更多的应用数据存储库配置文件)。最佳拟合匹配可以基于各种逻辑、规则、滤波、加权等或其任何组合(例如在一些实现中,容器图像名称匹配可以被最重地加权)。
应用数据存储库配置文件284可以是描述由特定应用使用的数据存储库的特性的配置文件,并且更具体地,该特性可以针对特定应用被优化。应用数据存储库配置文件284可以基于对相应应用类型的存储使用的理解来预配置。应用数据存储库配置文件284可以由开发人员手动预配置,或者使用机器学习技术以半自动或自动方式进行预配置。在一些实现中,例如应用数据存储库配置文件284可以是人类可读的文本文件。
配置文件284所基于的存储使用的理解可以以各种方式获得。例如,在一些情况下,与给定图像相关联的应用类型可以被假设为使用某种类型的存储装置,基于域专业知识或基于对图像的源代码的分析(例如如果是开源的)。在其他示例中,应用类型的实例可以被部署,并且在实例运行时,与存储装置相关的调用(例如在文件系统层处)可以被拦截,或者其他与存储装置相关的行为可以被观察到(例如I/O模式等)。这些测试观察结果和拦截的调用可以被分析,以推断出存储使用。通过前述任何方法确定的存储使用可以包括缓存模式、I/O模式、复制行为或其他特性,其可以被用作关于对应的应用类型如何使用存储装置的第一类提示。各种应用类型可以根据任何前述方法来分析,并且应用类型可以包括同一应用图像的不同部署配置(例如快速Postgres实例、小型Postgres实例、大型Postgres实例)。在一些实现中,所分析的应用类型可以基于所部署的容器化应用的最常见和/或最流行的类型来选择。
每个应用数据存储库配置文件284可以被构造为包括用于配置虚拟PV以与针对对应的应用类型确定的存储使用对准的存储参数。存储参数可以指定虚拟PV的各个方面,诸如基础存储装置的类型(例如具有期望的性能或成本特性)、存储容量、层列、复制策略、备份策略、数据优先级策略或其他存储属性。各种应用类型及其配置的存储使用可能有很大的不同,因此在应用数据存储库配置文件284中指定的存储参数也可能不同。除了存储参数之外,应用数据存储库配置文件284还可以指示将由优化器253用于为对应的应用类型自动优化存储装置(例如虚拟持久卷)的相关性能度量,如下面将被描述的。一旦被构造,应用数据存储库配置文件284就可以可用于策略引擎242,以用于基于应用清单调谐虚拟PV。
在一些实现中,配置文件引擎242可以接收并存储一个或多个定制应用数据存储库配置文件。例如,用户可以创建定制应用数据存储库配置文件以添加到预配置的应用数据存储库配置文件284。例如,定制应用数据存储库配置文件对于具有特定应用和存储部署的用户可能是有用的,该特定应用和存储库部署不是预配置的应用数据存储库配置文件284所预期的。定制应用数据存储库配置文件的作者还可以提供关联的匹配标准元数据和最佳拟合算法。
返回到调谐功能性,在策略引擎242已经标识与应用清单282相匹配的应用数据存储库配置文件284之后,策略引擎242(经由虚拟PV管理器250、容器存储接口映射256、卷扩展和复制品管理器254和/或数据路径管理器258的上述功能性)可以根据所标识的应用数据存储库配置文件284的存储参数来修改虚拟PV 280,使得虚拟PV 280具有更新的以应用为中心的存储策略。在许多实例中,修改可以以对容器化应用224透明且无中断的方式对虚拟PV 280进行,特别是如果虚拟PV 280通过数据路径232被虚拟化和抽象化并且修改是在数据路径232或基础存储装置229处进行的(例如对数据的扩展或基于对象的分层布置的修改)。对虚拟PV 280的构成卷的任何改变都可以在虚拟化映射264中被更新,而无需改变虚拟PV 280的卷标识符。在一些实现中,策略引擎242不需要将关于已修改的虚拟PV 280的任何更新发送给容器编排器222,因为卷标识符与修改之前保持相同。
策略引擎242还可以包括优化器253,该优化器253与应用存储监测器259和监测系统290结合可以按以下方式自动优化虚拟PV。由动态存储类别(例如自动优化:是)创建的虚拟PV可以由优化器253标记以进行优化。例如,部分地取决于度量收集的频率,优化可以由优化器253实时或近实时常规地、周期性地或基于调度地执行。优化可以涉及基于对与虚拟PV的使用和操作相关的从容器化应用及其微服务中抓取或收集的性能度量的分析来修改虚拟PV的组成。如上所述,优化可以基于应用数据存储库配置文件的参数在调谐或不调谐的情况下执行。
性能度量的示例来源将被首先描述。在一些实现中,度量仪表化可以被包括在数据路径232和/或容器化应用224中(或其一个或多个微服务中)以收集分别关于数据路径232和/或容器化应用224的性能的度量292和度量294。度量292、294可以是计数器(例如单调递增的值)、量表(例如可以上升或下降的值)、直方图或其他形式的时间序列性能数据。度量292、294可以包括与处理器(CPU)或存储器使用相关的一般性能数据、与存储相关的性能信息(诸如读取IOPS、写入IOPS、每次读取的时延、每次写入的时延等)或其他类型的性能信息。度量中的每个度量可以由度量名称来标识。在一些实现中,度量292、294可以被监测系统290推到网关或暴露以被拉取(例如作为HTTP端点)。度量292、294的仪表化和呈现可以根据标准,诸如为Prometheus定义的标准。
度量292可以涉及数据路径232本身的性能。在一些实现中,数据路径232可以正在管理多个虚拟PV,并且数据路径232可以被仪表化以针对每个虚拟PV单独地提供性能度量。在一些实现中,基于数据路径232和服务I/O中的那些后端到基础存储卷的交互,数据路径232还可以被仪表化以提供与后端存储系统229相关联的性能度量。
针对要被优化的虚拟PV(诸如虚拟PV 280),策略引擎242(尤其是优化器253)可以使用虚拟PV标识符来找到与使用该虚拟PV 280的容器化应用224相关联的应用清单282。基于应用清单282,策略引擎242可以标识与容器化应用224相关联的微服务,该微服务可以用作抓取性能度量的目标。
策略引擎242还可以以上述方式(例如通过匹配元数据,诸如图像名称)来标识与应用清单282相匹配的应用数据存储库配置文件284。所标识的应用数据存储库配置文件284可以指示哪些特定的性能度量作为输入与优化器253相关,以优化与匹配所标识的应用数据存储库配置文件284的应用类型所使用的数据存储库(即,虚拟PV280)。例如,应用数据存储库配置文件284可以指示要被收集的度量包括以下一个或多个:读取IOPS、写入IOPS、组合读写IOPS、每次读取的时延、每次写入的时延、CPU使用、存储器使用或其他性能度量。应用数据存储库配置文件284还可以指示度量要相对于特定虚拟PV被收集(例如其中数据路径232可以针对每个虚拟PV单独地导出数据路径性能度量)。在度量292、294之间的可用度量众多并且对于优化虚拟PV 280具有不同的相关性或效用的情况下,收集相关度量的这种指示可能是有用的,因为在一些情况下,度量是出于许多其他目的而收集的。应用数据存储库配置文件284还可以指示从哪些目标收集性能度量,诸如容器化应用(例如224)、数据路径232和/或与虚拟PV 280的使用相关的其他相关应用或微服务。
在一些实现中,应用数据存储库配置文件284还可以包括要取回的度量与特定于容器化应用的对应的不同度量名称之间的度量名称映射。由于容器化应用的开发人员之间的不标准化,可能会出现不同的度量名称,但是这种不同的度量名称可以被视为有效地引用相同或类似的度量。
例如,监测系统(也可以称为监测服务器)可以在容器环境中被提供,以直接(例如通过抓取仪表化的微服务的HTTP端点)或经由用于推送度量的网关从仪表化的应用或其微服务收集度量。监测系统290可以是容器化应用本身,其在容器环境中的处理资源上执行。监测系统290可以是单个监测系统或监测系统的集合。
在一些实现中,与启动仪表化应用相关,监测系统可以在容器环境中启动。例如,监测系统290可以针对数据路径232作为微服务、数据路径232所属的存储虚拟化系统或容器化应用224启动。在一些实现中,监测系统290可以被配置为即使监测系统290没有为该特定应用启动,也可以从任何仪表化的容器化应用收集度量。在一些实现中,监测系统290可以包括从另一监测系统收集度量的监测系统,并且这种监测系统290可以被称为监测联盟。在一些实现中,监测系统290可以是开始从多个容器化应用收集度量的中央监测服务。监测系统290还可以例如通过平均度量来处理所收集的度量。监测系统290的示例实现可以包括Prometheus服务器。
策略引擎242可以根据在应用数据存储库配置文件284中定义的任何度量和目标并使用从应用清单282确定的目标信息配置监测系统290。在一些实现中,示例监测系统290可以是使用指示目标(例如HTTP端点)、度量名称、采样率和/或其他参数的YAML文件来配置的。度量名称可以基于应用数据存储库配置文件284中所包括的映射而特定于目标。如此配置的监测系统290可以从度量292和/或度量294收集期望的度量,并将所收集的度量存储为度量296。
策略引擎242可以包括应用存储监测器259,以从监测系统290接收一些或全部度量296,并将那些接收到的度量提供给优化器253。在一些实现中,应用存储监测器259可以经由监测系统290的API从监测系统290拉取度量296。应用存储监测器259可以指定要收集的度量296的时间范围。
优化器253可以分析由应用存储监测器259接收到的度量,以确定虚拟PV 280的优化战略。例如,优化器253可以包括指示某些动作以响应于从度量中观察到的某些值或趋势在虚拟PV 280上执行的预配置逻辑或规则。示例动作可以包括向虚拟PV 280添加容量,修改虚拟PV 280的基础卷组成,启用或禁用存储服务(例如层列、快照、复制、迁移、基于冗余的数据保护、缓存或其他服务)或其他动作。添加容量或修改基础卷组成可以通过以上述方式添加作为数据路径232所管理的扩展的基础卷来实现。
例如,当优化器253确定特定存储配置文件262(因此存储类别226)的特性更适合于应用224如何基于从度量观察到的值或趋势使用虚拟PV 280时,优化器253可以修改虚拟PV 280的组成。可以有助于这种确定的存储配置文件262的特性包括上述特性,诸如性能:高/中等/低以及介质类型(例如硬盘驱动器、固态磁盘等)的指示、介质性能(例如硬盘驱动器为7200RPM或5400RPM)、最大支持的IOPS或其他存储特性。在根据度量标识出适合实际存储装置的一个或多个存储配置文件262之后,优化器253可以与供应器252结合操作,以从那些存储配置文件262供应一个或多个新的基础卷,并将虚拟PV 280的数据迁移到这些新的(多个)基础卷,从而将虚拟PV 280修改为虚拟PV 280'。虚拟PV 280’的基础卷组成可以在虚拟化映射264中更新,但是虚拟PV 280’可以通过与虚拟PV 280相同的虚拟PV标识符281来标识。
优化器253响应于度量而修改虚拟PV组成或服务的逻辑的一些非限制性示例现在将被描述。在一些实现中,优化器253可以确定度量指示I/O向着更面向读取的方向转换(例如通过增加读取IOPS和/或降低写入IOPS度量来指示),并且优化器253可以尝试标识表示对读取操作有利的存储装置的存储配置文件262,诸如SSD(固态磁盘)或NVMe(快速非易失性存储器)类存储装置。另一方面,如果优化器确定度量指示I/O向着更面向写入的方向转换,则优化器253可以避免表示可能受到写入带宽限制的存储装置的存储配置文件262,诸如SSD。
在一些实现中,优化器253可以确定度量指示虚拟PV 280以只读容量(例如持续零写入IOPS或低于阈值的写入IOPS)被使用。作为响应,优化器253可以尝试标识表示档案类存储装置的存储配置文件262,其可以更换(通过迁移)虚拟PV 280的一些或全部。
在一些实现中,优化器253可以确定度量指示增加的时延。作为响应,优化器253可以尝试标识存储配置文件262,该存储配置文件262表示比虚拟PV 280中当前使用的性能和/或可伸缩性更高的存储系统,该存储配置文件262可以被添加到虚拟PV 280或可以更换(通过迁移)一些或所有虚拟PV 280。例如,优化器253可以维护供应者系统的性能排名,并且可以将排名与存储类别262中的系统名称进行交叉引用。
在一些实现中,优化器253可以确定度量指示读取IOPS、写入IOPS或总IOPS处于或接近虚拟PV 280的基础存储装置的最大支持IOPS。作为响应,优化器253可以尝试标识具有更高支持的IOPS的存储配置文件262,其可以被添加到虚拟PV 280或可以更换(通过迁移)虚拟PV 280的一些或全部。
在一些实现中,优化器253可以确定虚拟PV 280的I/O的数量(例如由读取IOPS、写入IOPS或总IOPS指示)已增加或正在增加。作为响应,优化器253可以使数据路径管理器258发出供应信息266,以在虚拟PV 280的数据路径232处启用缓存服务,或者在虚拟PV 280的数据路径232处分配附加缓存。
在一些实现中,优化器253可以分析与虚拟PV 280所使用的后端存储系统的性能相关的度量,并且可以检测后端存储系统之间的负载不平衡。例如,过载的后端存储系统可能是瓶颈。作为响应,优化器253可以标识与过载后端可比或具有更高性能的存储配置文件262,并且可以供应要被添加到虚拟PV 280或更换虚拟PV 280的一些或全部的新基础卷,以改善负载平衡。
图3和4是描绘了各种示例方法的流程图。在一些实现中,方法的一个或多个框可以基本上被同时执行或以与所示出的顺序不同的顺序被执行。在一些实现中,一种方法可以包括比所示出的框更多或更少的框。在一些实现中,方法的一个或多个框可以在某些时间进行和/或可以重复。在一些实现中,方法的框可以被组合。
图3和4所示的方法可以以存储在机器可读介质上并由处理资源执行的可执行指令的形式和/或以电子电路系统的形式来实现。例如,方法的各个方面可以在下面被描述为由存储虚拟化系统执行,其示例可以是在上述计算系统100的硬件处理器资源102上运行的容器化的存储虚拟化系统130,并且更具体地可以由这种存储虚拟化系统的策略引擎(诸如上述策略引擎242)执行。附加地,出于非限制性说明的目的,下面描述的方法的其他方面可以参照图2所示的其他元件来描述。
图3是描绘了示例方法300的流程图。方法300开始于框302并继续至框304,其中存储虚拟化系统可以基于虚拟持久卷280被分配的容器化应用224的应用清单282从多个应用数据存储库配置文件284中标识应用数据存储库配置文件(例如284-1)。例如,如上所述,存储虚拟化系统可以使用虚拟PV 280的虚拟PV标识符来定位应用清单282,并且可以将应用清单292的元数据(例如图像名称等)与应用数据存储库配置文件284的元数据进行匹配。应用数据存储库配置文件284可以包括为特定应用类型预配置的存储参数,并且还可以通过名称指示与优化该特定应用类型所使用的存储装置(例如虚拟PV)相关的性能度量。而且如上所述,虚拟PV 280包括来自至少一个基础存储卷272的存储虚拟化系统的数据路径232。
在一些实现中,存储虚拟化系统可以配置监测系统290以从仪表化应用及其微服务中抓取性能度量,特别是在框304中标识的应用数据存储库配置文件284-1中命名的度量。性能度量可以是存储性能度量,诸如IOPS(读取IOPS和/或写入IOPS)、时延(读取和/或写入时延)或其他度量。从中收集度量的示例目标包括数据路径232,它可以提供关于数据路径的与虚拟PV 280的输入/输出操作相关的存储性能度量。从中收集度量的附加或替代示例目标包括容器化应用224。监测系统290存储所收集的度量296。
在框306中,存储虚拟化系统接收在应用数据存储库配置文件284中指示的性能度量。在一些实现中,存储虚拟化系统(例如经由API调用)从监测系统290提取度量。
在框308中,存储虚拟化系统基于在框306中接收到的对性能度量的分析来修改虚拟PV 280。方法300在框312中结束。通过这种方式,存储虚拟化系统可以利用微服务监测框架来自动优化虚拟持久卷。
图4是描绘了示例方法400的流程图。方法400开始于框402,并继续至框404,其中存储虚拟化系统确定与虚拟PV 280相关联的存储类别(例如根据虚拟PV 280已被创建的存储类别227)是否是动态类型。如果存储类别不是动态类型(在框404中为“否”),则方法400不对虚拟PV 280执行优化,并且进行到框416中的结束。如果存储类别是动态类型(在框404中为“是”),则方法400继续到框406。
在许多方面中,框406可以类似于框304。在框406中,存储虚拟化系统基于利用虚拟PV 280的容器化应用224的应用清单282来标识应用数据存储库配置文件284。框408可以类似于框306。在框408中,存储虚拟化系统接收指示容器化应用224如何使用虚拟PV 280的性能度量。如上所述,度量可以从监测系统290上的度量296中提取,该监测系统290被配置为根据应用数据存储库配置文件284从仪表化应用或微服务中抓取度量。
在框410中,存储虚拟化系统分析在框408中接收到的性能度量。存储虚拟化系统确定性能度量的趋势,诸如上面参照优化器253描述的趋势,并尝试标识由存储配置文件262表示的在容器环境中可用的一个或多个存储类别226,这些存储类别226已针对所确定的趋势被优化或与所确定的趋势相匹配。
在框412中,存储虚拟化系统使用在框410中标识的一个或多个存储类别226(经由对应的存储配置文件262)来供应新的基础存储卷。
在框414中,存储虚拟化系统通过包括在框412中供应的新的基础存储卷基于对在框410中执行的分析来修改虚拟PV 280(例如修改为虚拟PV 280’)。在一些实现中,虚拟PV280可以通过将新的基础存储卷添加到虚拟PV 280来修改,并且在一些场景中,通过将数据从现有的基础存储卷迁移到新的基础存储卷来修改。虚拟PV 280到基础存储卷的映射可以在虚拟化映射264中被更新。
方法400在框416中结束。存储虚拟化系统可以针对虚拟PV 280周期性地重复方法400。
图5描绘了示例系统500,该示例系统500包括用由处理资源502可执行的示例指令编码的非瞬态机器可读介质504。在一些实现中,系统500可能分别用于实现图1的存储虚拟化系统130或图2的策略引擎242的各个方面或者执行图3和4的方法300和/或400的各个方面。例如,在机器可读介质504上编码的指令可以被包括在图1的指令105中。在一些实现中,关于图2描述的功能性可以被包括在机器可读介质504上编码的指令中。
处理资源502可以包括微控制器、微处理器、(多个)中央处理单元核心、ASIC、FPGA和/或适合于取回和/或执行来自机器可读介质504的指令以执行与各种示例相关的功能的其他硬件设备。附加地或备选地,处理资源502可以包括或被耦合至电子电路系统或专用逻辑,以执行本文描述的指令的一些或所有功能性。
机器可读介质504可以是适合于存储可执行指令的任何介质,诸如RAM、ROM、EEPROM、闪存、硬盘驱动器、光盘等。在一些示例实现中,机器可读介质504可以是有形的非瞬态介质。机器可读介质504可以被设置在系统500内,在这种情况下,可执行指令可以被视为安装或嵌入到该系统上。备选地,机器可读介质504可以是便携式(例如外部)存储介质,并且可以是安装包的一部分。
如下面在本文中进一步描述的,机器可读介质504可以用可执行指令集来编码。应该理解的是,在交替实现中,一个框内所包括的部分或所有可执行指令和/或电子电路可以被包括在附图所示的不同框或者未示出的不同框中。一些实现可以包括比图5所示的指令更多或更少的指令。
参照图5,机器可读介质504包括指令506、508、510。指令506在被执行时使处理资源502基于虚拟PV被分配的容器化应用的应用清单来从分别包括为相应应用类型预配置的存储参数的多个应用数据存储库配置文件中标识应用数据存储库配置文件。虚拟PV包括来自至少一个基础存储卷的存储虚拟化系统的数据路径。
所标识的应用数据存储库配置文件指示与优化虚拟PV相关的性能度量。性能度量与容器化应用对虚拟持久卷的使用相关,并且可以包括例如IOPS(例如读取IOPS、写入IOPS、总IOPS)、时延(例如读取时延、写入时延)或其他与存储相关的性能度量。在一些示例中,性能度量可以是关于数据路径的存储性能度量,并且在其他示例中,可以是关于数据路径的与虚拟PV的I/O操作(而不是其他虚拟PV的I/O操作)特别相关的存储性能度量。在一些示例中,性能度量是容器化应用的存储性能度量。
在一些实现中,机器可读介质504包括用于在容器环境中配置监测系统的指令,以从与数据路径或容器化应用相关的仪表化应用或微服务中抓取在所标识的应用数据存储库配置文件中指示的性能度量,并将所抓取的度量存储在监测系统处。监测系统可能已在容器环境中为存储虚拟化系统启动或与存储虚拟化系统一起启动。
指令508在被执行时使处理资源502接收性能度量。在一些实现中,指令508可以使处理资源502经由例如API调用或其他接口部件从监测系统中取回性能度量。如上所述,所取回的性能度量可能来自数据路径、容器化应用或两者。
指令510在被执行时使处理资源502基于对性能度量的分析来修改虚拟PV。在一些实现中,机器可读介质504包括用于执行分析的指令,该指令包括根据性能度量从容器环境中可用的存储类别中标识存储类别(即,某些性能度量或度量趋势可能会触发逻辑以搜索具有特定参数的存储类别,如上面相对于优化器253的示例中所描述的),并确定虚拟PV将被修改为包括使用所标识的存储类别供应的新的基础存储卷。
在一些实现中,机器可读介质504可以包括其他指令。例如,附加指令可以使处理资源502根据虚拟PV的存储类别(例如虚拟PV存储类别)是否是动态类型来确定执行指令506、508、510。
在前述描述中,许多细节被陈述以提供对本文公开的主题的理解。然而,实现可以在没有这些细节中的一些或所有细节的情况下被实践。其他实现可以包括对上面讨论的细节的修改、组合和变型。其意图是以下权利要求覆盖这种修改和变型。
Claims (20)
1.一种存储指令的非瞬态机器可读介质,所述指令用于容器环境中的存储虚拟化系统的策略引擎,所述指令在被执行时使处理资源:
基于虚拟持久卷被分配到的容器化应用的应用清单,从多个应用数据存储库配置文件中标识应用数据存储库配置文件,所述多个应用数据存储库配置文件分别包括为相应应用类型预配置的存储参数,其中所述虚拟持久卷包括所述存储虚拟化系统的、来自至少一个基础存储卷的数据路径,并且所标识的所述应用数据存储库配置文件指示与优化所述虚拟持久卷相关的性能度量;
接收所述性能度量,所述性能度量与所述容器化应用对所述虚拟持久卷的使用相关;以及
基于对所述性能度量的分析来修改所述虚拟持久卷。
2.根据权利要求1所述的非瞬态机器可读介质,其中所述性能度量是与所述虚拟持久卷的输入/输出操作相关的所述数据路径的存储性能度量,以及
接收所述性能度量包括:从在所述容器环境中为所述存储虚拟化系统启动的监测系统中取回所述存储性能度量。
3.根据权利要求1所述的非瞬态机器可读介质,其中所述性能度量是所述容器化应用的存储性能度量。
4.根据权利要求1所述的非瞬态机器可读介质,其中所述性能度量包括:所述数据路径的与所述虚拟持久卷的操作相关的第一存储性能度量、以及所述容器化应用的第二存储性能度量。
5.根据权利要求1所述的非瞬态机器可读介质,其中所述指令在被执行时使所述处理资源:根据所述虚拟持久卷的存储类别是否是动态类型,来控制是否接收与所述虚拟持久卷的使用相关的存储性能度量,并且基于所述存储性能度量来修改所述虚拟持久卷。
6.根据权利要求1所述的非瞬态机器可读介质,其中对所述性能度量的所述分析包括:根据所述性能度量从所述容器环境中可用的存储类别中标识存储类别,并且确定所述虚拟持久卷将被修改为包括使用所标识的所述存储类别供应的新的基础存储卷。
7.根据权利要求2所述的非瞬态机器可读介质,其中所述存储性能度量包括每秒输入/输出和时延。
8.一种方法,包括:
由基于处理器的存储虚拟化系统,基于虚拟持久卷被分配到的容器化应用的应用清单来从多个应用数据存储库配置文件中标识应用数据存储库配置文件,所述多个应用数据存储库配置文件分别包括为相应应用类型预配置的存储参数,其中所述虚拟持久卷包括所述存储虚拟化系统的、来自至少一个基础存储卷的数据路径,并且所标识的所述应用数据存储库配置文件指示与优化所述虚拟持久卷相关的性能度量;
由所述存储虚拟化系统接收所述性能度量,所述性能度量与所述容器化应用对所述虚拟持久卷的使用相关;以及
由所述存储虚拟化系统基于对所述性能度量的分析来修改所述虚拟持久卷的组成。
9.根据权利要求8所述的方法,其中所述性能度量是所述数据路径的与所述虚拟持久卷的输入/输出操作相关的存储性能度量,以及
接收所述性能度量包括:从在所述容器环境中为所述存储虚拟化系统启动的监测系统中取回所述存储性能度量。
10.根据权利要求8所述的方法,其中所述性能度量是所述容器化应用的存储性能度量。
11.根据权利要求8所述的方法,其中所述性能度量包括:所述数据路径的与所述虚拟持久卷的操作相关的第一存储性能度量、以及所述容器化应用的第二存储性能度量。
12.根据权利要求8所述的方法,还包括:基于所述虚拟持久卷的存储类别是否是动态类型,来控制是否执行所述接收和所述修改。
13.根据权利要求8所述的方法,还包括:
从所述容器环境中可用的存储类别中标识与所述性能度量相匹配的存储类别,以及
使用所标识的所述存储类别来供应新的基础存储卷,
其中新修改所述虚拟持久卷包括:将所述新的基础存储卷添加到所述虚拟持久卷,并且将所述虚拟持久卷的现有数据迁移到所述新的基础存储卷。
14.根据权利要求9所述的方法,其中所述存储性能度量包括每秒输入/输出和时延。
15.一种系统,包括:
处理资源;以及
非瞬态机器可读介质,存储用于存储虚拟化系统的指令,所述指令在被执行时使所述处理资源:
基于虚拟持久卷被分配到的容器化应用的应用清单,从多个应用数据存储库配置文件中标识应用数据存储库配置文件,所述多个应用数据存储库配置文件分别包括为相应应用类型预配置的存储参数,其中所述虚拟持久卷包括所述存储虚拟化系统的、来自至少一个基础存储卷的数据路径,并且所标识的所述应用数据存储库配置文件指示与优化所述虚拟持久卷相关的性能度量;
接收所述性能度量,所述性能度量与所述容器化应用对所述虚拟持久卷的使用相关;以及
基于对所述性能度量的分析来修改所述虚拟持久卷。
16.根据权利要求15所述的系统,其中所述性能度量是所述虚拟持久卷、而非其他虚拟持久卷的所述数据路径的存储性能度量,所述存储性能度量包括每秒输入/输出和时延,以及
接收所述性能度量包括:从在所述容器环境中为所述存储虚拟化系统启动的监测系统中取回所述存储性能度量。
17.根据权利要求15所述的系统,其中所述性能度量是所述容器化应用的存储性能度量。
18.根据权利要求15所述的系统,其中所述性能度量包括:所述数据路径的与所述虚拟持久卷的操作相关的第一存储性能度量、以及所述容器化应用的第二存储性能度量。
19.根据权利要求15所述的系统,其中所述指令在被执行时使所述处理资源:根据所述虚拟持久卷的存储类别是否是动态类型,来控制是否接收与所述虚拟持久卷的使用相关的存储性能度量,并且基于所述存储性能度量来修改所述虚拟持久卷。
20.根据权利要求15所述的系统,其中所述指令在被执行时使所述处理资源:
从所述容器环境中可用的存储类别中标识与所述性能度量相匹配的存储类别,以及
使用所标识的所述存储类别来供应新的基础存储卷,其中所述新的基础存储卷被用于修改所述虚拟持久卷。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/947,419 | 2020-07-31 | ||
US16/947,419 US11960773B2 (en) | 2020-07-31 | 2020-07-31 | Modifying virtual persistent volumes based on analysis of performance metrics |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064197A true CN114064197A (zh) | 2022-02-18 |
Family
ID=79300748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110438133.7A Pending CN114064197A (zh) | 2020-07-31 | 2021-04-22 | 基于对性能度量的分析来修改虚拟持久卷 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11960773B2 (zh) |
CN (1) | CN114064197A (zh) |
DE (1) | DE102021109502A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102438329B1 (ko) * | 2020-08-06 | 2022-08-31 | 주식회사 파수 | 가상 파일 관리 방법, 장치, 컴퓨터 프로그램 및 기록 매체 |
US11663233B2 (en) * | 2021-03-10 | 2023-05-30 | EMC IP Holding Company LLC | Reliable virtual machine discovery and storage association |
US11960763B2 (en) * | 2021-04-23 | 2024-04-16 | EMC IP Holding Company LLC | Load balancing combining block and file storage |
Family Cites Families (117)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442700B1 (en) * | 1999-08-10 | 2002-08-27 | Intel Corporation | Thermal control within systems having multiple CPU performance states |
US6457135B1 (en) * | 1999-08-10 | 2002-09-24 | Intel Corporation | System and method for managing a plurality of processor performance states |
US6823516B1 (en) * | 1999-08-10 | 2004-11-23 | Intel Corporation | System and method for dynamically adjusting to CPU performance changes |
US20020120741A1 (en) * | 2000-03-03 | 2002-08-29 | Webb Theodore S. | Systems and methods for using distributed interconnects in information management enviroments |
US20020152305A1 (en) * | 2000-03-03 | 2002-10-17 | Jackson Gregory J. | Systems and methods for resource utilization analysis in information management environments |
US7143260B2 (en) * | 2002-12-20 | 2006-11-28 | Veritas Operating Corporation | Intermediate descriptions of intent for storage allocation |
US7159093B2 (en) * | 2002-12-20 | 2007-01-02 | Veritas Operating Corporation | Development of a detailed logical volume configuration from high-level user requirements |
US7383410B2 (en) * | 2002-12-20 | 2008-06-03 | Symantec Operating Corporation | Language for expressing storage allocation requirements |
US7162575B2 (en) * | 2002-12-20 | 2007-01-09 | Veritas Operating Corporation | Adaptive implementation of requested capabilities for a logical volume |
US7143259B2 (en) * | 2002-12-20 | 2006-11-28 | Veritas Operating Corporation | Preservation of intent of a volume creator with a logical volume |
US7519814B2 (en) | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
US7627724B2 (en) * | 2004-06-21 | 2009-12-01 | Microsoft Corporation | Persistent, real-time determination of the freshness of changeable data associated with a container |
ATE497210T1 (de) * | 2005-06-24 | 2011-02-15 | Syncsort Inc | System und verfahren zum virtualisieren von backup-bildern |
JP4201783B2 (ja) * | 2005-08-04 | 2008-12-24 | 富士通マイクロエレクトロニクス株式会社 | キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法 |
US7587570B2 (en) * | 2006-05-31 | 2009-09-08 | International Business Machines Corporation | System and method for providing automated storage provisioning |
JP4896593B2 (ja) * | 2006-06-05 | 2012-03-14 | 株式会社日立製作所 | 性能監視方法、計算機及び計算機システム |
US8949827B2 (en) * | 2007-06-22 | 2015-02-03 | Red Hat, Inc. | Tracking a virtual machine |
US8984504B2 (en) * | 2007-06-22 | 2015-03-17 | Red Hat, Inc. | Method and system for determining a host machine by a virtual machine |
US7930476B1 (en) | 2007-12-28 | 2011-04-19 | Emc Corporation | Application aware storage resource provisioning |
EP2248003A1 (en) * | 2007-12-31 | 2010-11-10 | Netapp, Inc. | System and method for automatic storage load balancing in virtual server environments |
JP2009238114A (ja) * | 2008-03-28 | 2009-10-15 | Hitachi Ltd | ストレージ管理方法、ストレージ管理プログラム、ストレージ管理装置およびストレージ管理システム |
US8307177B2 (en) | 2008-09-05 | 2012-11-06 | Commvault Systems, Inc. | Systems and methods for management of virtualization data |
US8291159B2 (en) | 2009-03-12 | 2012-10-16 | Vmware, Inc. | Monitoring and updating mapping of physical storage allocation of virtual machine without changing identifier of the storage volume assigned to virtual machine |
US8856783B2 (en) * | 2010-10-12 | 2014-10-07 | Citrix Systems, Inc. | Allocating virtual machines according to user-specific virtual machine metrics |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
JP2011059970A (ja) * | 2009-09-10 | 2011-03-24 | Hitachi Ltd | 外部接続構成におけるボリューム割り当て方法 |
US20110112798A1 (en) * | 2009-11-06 | 2011-05-12 | Alexander Branover | Controlling performance/power by frequency control of the responding node |
US20110124409A1 (en) * | 2009-11-25 | 2011-05-26 | Baynes Nick | Graphical object customization based on performance metrics |
US20110126197A1 (en) | 2009-11-25 | 2011-05-26 | Novell, Inc. | System and method for controlling cloud and virtualized data centers in an intelligent workload management system |
US9317368B2 (en) * | 2010-07-14 | 2016-04-19 | Nimble Storage, Inc. | Unified management of storage and application consistent snapshots |
US8327373B2 (en) | 2010-08-24 | 2012-12-04 | Novell, Inc. | System and method for structuring self-provisioning workloads deployed in virtualized data centers |
US9705730B1 (en) | 2013-05-07 | 2017-07-11 | Axcient, Inc. | Cloud storage using Merkle trees |
US20120117029A1 (en) | 2010-11-08 | 2012-05-10 | Stephen Gold | Backup policies for using different storage tiers |
US8904126B2 (en) | 2010-11-16 | 2014-12-02 | Actifio, Inc. | System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage |
US8621461B1 (en) * | 2010-11-22 | 2013-12-31 | Netapp, Inc. | Virtual machine based operating system simulation using host ram-based emulation of persistent mass storage device |
US8650377B2 (en) * | 2011-06-02 | 2014-02-11 | Hitachi, Ltd. | Storage managing system, computer system, and storage managing method |
WO2012168967A1 (en) * | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Storage apparatus and data management method |
US8688650B2 (en) | 2011-08-01 | 2014-04-01 | Actifio, Inc. | Data fingerprinting for copy accuracy assurance |
US8775773B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Object storage system |
US8650359B2 (en) | 2011-08-26 | 2014-02-11 | Vmware, Inc. | Computer system accessing object storage system |
US8775774B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Management system and methods for object storage system |
US20140130055A1 (en) * | 2012-02-14 | 2014-05-08 | Aloke Guha | Systems and methods for provisioning of storage for virtualized applications |
WO2013142210A1 (en) | 2012-03-21 | 2013-09-26 | Tier3, Inc. | Cloud application scaling framework |
US9043530B1 (en) | 2012-04-09 | 2015-05-26 | Netapp, Inc. | Data storage within hybrid storage aggregate |
US8793466B2 (en) | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
US9921752B2 (en) * | 2012-05-04 | 2018-03-20 | Netapp, Inc. | Systems, methods, and computer program products providing read access in a storage system |
US10140139B1 (en) * | 2012-06-19 | 2018-11-27 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US9021476B1 (en) * | 2012-06-19 | 2015-04-28 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
US9135046B1 (en) * | 2012-06-19 | 2015-09-15 | Bromium, Inc. | Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up |
US9201779B2 (en) * | 2012-06-27 | 2015-12-01 | Hitachi, Ltd. | Management system and management method |
US20140040889A1 (en) * | 2012-08-03 | 2014-02-06 | International Business Machines Corporation | Facilitating Customer-Initiated Virtual Machine Migration and Swapping |
GB2505179A (en) * | 2012-08-20 | 2014-02-26 | Ibm | Managing a data cache for a computer system |
WO2014088445A1 (en) | 2012-12-05 | 2014-06-12 | Emc Corporation | Storage resource usage analysis for customized application options |
US9310977B2 (en) * | 2012-12-14 | 2016-04-12 | Biscotti Inc. | Mobile presence detection |
US10241709B2 (en) * | 2013-12-09 | 2019-03-26 | Vmware, Inc. | Elastic temporary filesystem |
US10500441B2 (en) * | 2014-02-04 | 2019-12-10 | Lagree Technologies, Inc. | Pilates exercise routine system and method |
US9436391B1 (en) * | 2014-03-28 | 2016-09-06 | Formation Data Systems, Inc. | Efficient scalable I/O scheduling |
US9442669B2 (en) * | 2014-08-06 | 2016-09-13 | International Business Machines Corporation | Cost-effective IAAS (infrastructure-as-a-service) cloud storage based on adaptive virtual disks (AVD) |
US10380026B2 (en) | 2014-09-04 | 2019-08-13 | Sandisk Technologies Llc | Generalized storage virtualization interface |
US9800575B1 (en) * | 2014-09-24 | 2017-10-24 | Ebay Inc. | Assigning storage responsibility in a distributed data storage system with replication |
WO2016048185A1 (en) * | 2014-09-26 | 2016-03-31 | Emc Corporation | Policy based provisioning of storage system resources |
US20170013046A1 (en) * | 2014-11-18 | 2017-01-12 | Primarydata, Inc. | Data-centric data storage |
US10387263B2 (en) * | 2014-12-31 | 2019-08-20 | Netapp, Inc. | Centralized management center for managing storage services |
US9740633B2 (en) * | 2015-01-07 | 2017-08-22 | International Business Machines Corporation | Updatable address lookup application program interface |
US10127234B1 (en) | 2015-03-27 | 2018-11-13 | Amazon Technologies, Inc. | Proactive optimizations at multi-tier file systems |
US9910613B2 (en) * | 2015-03-30 | 2018-03-06 | Ebay Inc. | Volume admission control for high-performance distributed data storage system |
US9817578B2 (en) * | 2015-06-05 | 2017-11-14 | Ebay Inc. | Data storage space recovery |
US10055420B1 (en) | 2015-06-30 | 2018-08-21 | EMC IP Holding Company LLC | Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata |
US9667725B1 (en) * | 2015-08-06 | 2017-05-30 | EMC IP Holding Company LLC | Provisioning isolated storage resource portions for respective containers in multi-tenant environments |
US9940041B2 (en) * | 2015-09-21 | 2018-04-10 | International Business Machines Corporation | Copy-redirect on write |
US9798474B2 (en) | 2015-09-25 | 2017-10-24 | International Business Machines Corporation | Software-defined storage system monitoring tool |
US10166478B2 (en) * | 2015-09-30 | 2019-01-01 | International Business Machines Corporation | Predictive recommendations for skills development |
US10191944B2 (en) * | 2015-10-23 | 2019-01-29 | Oracle International Corporation | Columnar data arrangement for semi-structured data |
US10180886B2 (en) * | 2015-11-16 | 2019-01-15 | Red Hat, Inc. | Recreating a computing environment using tags and snapshots |
US20170177224A1 (en) * | 2015-12-21 | 2017-06-22 | Oracle International Corporation | Dynamic storage transitions employing tiered range volumes |
US10326744B1 (en) | 2016-03-21 | 2019-06-18 | EMC IP Holding Company LLC | Security layer for containers in multi-tenant environments |
US10498726B2 (en) | 2016-03-22 | 2019-12-03 | International Business Machines Corporation | Container independent secure file system for security application containers |
US10503623B2 (en) | 2016-04-29 | 2019-12-10 | Ca, Inc. | Monitoring containerized applications |
US10355945B2 (en) | 2016-09-21 | 2019-07-16 | International Business Machines Corporation | Service level management of a workload defined environment |
US10432483B1 (en) * | 2016-09-26 | 2019-10-01 | Amazon Technologies, Inc. | General-purpose metrics publishing with variable resolution |
US10223024B2 (en) | 2016-10-12 | 2019-03-05 | Oracle International Corporation | Storage controller for provisioning storage services for an application based upon application-specific requirements |
US9678683B1 (en) | 2016-11-01 | 2017-06-13 | Red Hat, Inc. | Lazy persistent storage volume provisioning |
US10397236B1 (en) * | 2016-12-12 | 2019-08-27 | Amazon Technologies, Inc. | Anamoly detection and recovery of a corrupted computing resource |
US10229270B2 (en) | 2016-12-23 | 2019-03-12 | Amazon Technologies, Inc. | Host attestation |
US10223361B2 (en) | 2017-01-18 | 2019-03-05 | Netapp, Inc. | Methods and systems for restoring a data container archived at an object-based storage |
US10216455B1 (en) | 2017-02-14 | 2019-02-26 | Veritas Technologies Llc | Systems and methods for performing storage location virtualization |
US10528290B2 (en) | 2017-02-23 | 2020-01-07 | Arrikto Inc. | Multi-platform data storage system supporting containers of virtual storage resources |
CA3055987C (en) * | 2017-03-23 | 2023-03-14 | Dh2I Company | Highly available stateful containers in a cluster environment |
US10909554B2 (en) * | 2017-03-24 | 2021-02-02 | Verizon Patent And Licensing Inc. | Analyzing big data to determine a data plan |
US10606494B2 (en) * | 2017-04-17 | 2020-03-31 | StorageOS Limited | System and method for managing volumes of data in a block storage system as a function of a short condition register and a long condition register |
US10452298B2 (en) * | 2017-05-09 | 2019-10-22 | Microsoft Technology Licensing, Llc | Portable file-backed virtual storage class memory |
US10270469B2 (en) * | 2017-05-24 | 2019-04-23 | Vmware, Inc. | Efficient data write approach for distributed multi-mirror erasure coding system |
CN110019081B (zh) | 2017-07-20 | 2023-04-07 | 中兴通讯股份有限公司 | 数据持久化处理方法、装置、系统及可读存储介质 |
US10963349B2 (en) | 2017-08-25 | 2021-03-30 | Vmware, Inc. | Containerized application snapshots |
US10963171B2 (en) | 2017-10-16 | 2021-03-30 | Red Hat, Inc. | Compressibility instrumented dynamic volume provisioning |
EP4220465A1 (en) * | 2017-11-03 | 2023-08-02 | Visa International Service Association | Secure identity and profiling system |
US10742690B2 (en) | 2017-11-21 | 2020-08-11 | Juniper Networks, Inc. | Scalable policy management for virtual networks |
US11392363B2 (en) * | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11126755B2 (en) | 2018-01-30 | 2021-09-21 | Hewlett Packard Enterprise Development Lp | Object signatures in object stores |
US10838624B2 (en) | 2018-01-31 | 2020-11-17 | Hewlett Packard Enterprise Development Lp | Extent pool allocations based on file system instance identifiers |
US10565125B2 (en) | 2018-02-27 | 2020-02-18 | Hewlett Packard Enterprise Development Lp | Virtual block addresses |
CN108718328A (zh) | 2018-04-04 | 2018-10-30 | 珠海宜心家居有限公司 | 一种虚拟存储的收纳方法 |
US10698622B2 (en) | 2018-05-22 | 2020-06-30 | International Business Machines Corporation | Maintaining container to storage volume relations |
US10732868B2 (en) | 2018-08-02 | 2020-08-04 | Red Hat, Inc. | Implementing a base set of data storage features for containers across multiple cloud computing environments |
US11507403B2 (en) | 2019-01-24 | 2022-11-22 | Vmware, Inc. | Host computing systems determination to deploy virtual machines based on disk specifications |
US10963287B2 (en) * | 2019-03-27 | 2021-03-30 | Amazon Technologies, Inc. | Reducing request latency in a multi-tenant web service host |
US10999408B2 (en) * | 2019-04-05 | 2021-05-04 | Sap Se | Automated cloud computing tenant deployment service |
US10922213B2 (en) | 2019-05-29 | 2021-02-16 | Red Hat, Inc. | Embedded quality indication data for version control systems |
GB2600289A (en) * | 2019-07-11 | 2022-04-27 | Elo Labs Inc | Interactive personal training system |
US11436033B2 (en) * | 2019-10-11 | 2022-09-06 | International Business Machines Corporation | Scalable virtual memory metadata management |
US11467775B2 (en) * | 2019-10-15 | 2022-10-11 | Hewlett Packard Enterprise Development Lp | Virtual persistent volumes for containerized applications |
US11775353B2 (en) * | 2019-10-23 | 2023-10-03 | Schlumberger Technology Corporation | Mapping workloads to cloud infrastructure |
US11593497B2 (en) * | 2019-10-30 | 2023-02-28 | EMC IP Holding Company LLC | System and method for managing sensitive data |
US20210173815A1 (en) * | 2019-12-04 | 2021-06-10 | International Business Machines Corporation | Automatically dispositioning of copies of data |
US20200241999A1 (en) * | 2020-03-25 | 2020-07-30 | Intel Corporation | Performance monitoring for short-lived functions |
US11693573B2 (en) * | 2020-06-18 | 2023-07-04 | Hewlett Packard Enterprise Development Lp | Relaying storage operation requests to storage systems using underlying volume identifiers |
US11636280B2 (en) * | 2021-01-27 | 2023-04-25 | International Business Machines Corporation | Updating of statistical sets for decentralized distributed training of a machine learning model |
-
2020
- 2020-07-31 US US16/947,419 patent/US11960773B2/en active Active
-
2021
- 2021-04-15 DE DE102021109502.6A patent/DE102021109502A1/de active Pending
- 2021-04-22 CN CN202110438133.7A patent/CN114064197A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021109502A1 (de) | 2022-02-03 |
US11960773B2 (en) | 2024-04-16 |
US20220035574A1 (en) | 2022-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693575B2 (en) | Containerized application manifests and virtual persistent volumes | |
US11467775B2 (en) | Virtual persistent volumes for containerized applications | |
US11687500B1 (en) | Updating metadata for a synchronously replicated dataset | |
US20210240369A1 (en) | Virtual storage policies for virtual persistent volumes | |
US9372710B2 (en) | Virtual machine dependency | |
US20230229637A1 (en) | Intelligent file system with transparent storage tiering | |
US11693573B2 (en) | Relaying storage operation requests to storage systems using underlying volume identifiers | |
US9116803B1 (en) | Placement of virtual machines based on page commonality | |
AU2011312036B2 (en) | Automatic replication and migration of live virtual machines | |
US11960773B2 (en) | Modifying virtual persistent volumes based on analysis of performance metrics | |
US20170177895A1 (en) | In-situ cloud data management solution | |
US20200142628A1 (en) | Data reduction reporting in storage systems | |
US11477280B1 (en) | Integrating cloud storage services | |
JP2023502909A (ja) | インテリジェント・データ・プール | |
Salam et al. | Deploying and Managing a Cloud Infrastructure: Real-World Skills for the CompTIA Cloud+ Certification and Beyond: Exam CV0-001 | |
US20220091744A1 (en) | Optimized Application Agnostic Object Snapshot System | |
US10846011B2 (en) | Moving outdated data from a multi-volume virtual disk to a backup storage device | |
US9483294B2 (en) | Deferring the cost of virtual storage | |
US11797208B2 (en) | Backend deduplication awareness | |
US20240111718A1 (en) | In-band file system access | |
US20240103919A1 (en) | Optimizing Virtual Storage System Architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |