CN112667147B - 用于容器化的应用的虚拟持久卷 - Google Patents
用于容器化的应用的虚拟持久卷 Download PDFInfo
- Publication number
- CN112667147B CN112667147B CN202010972152.3A CN202010972152A CN112667147B CN 112667147 B CN112667147 B CN 112667147B CN 202010972152 A CN202010972152 A CN 202010972152A CN 112667147 B CN112667147 B CN 112667147B
- Authority
- CN
- China
- Prior art keywords
- storage
- containerized
- data
- virtual
- instructions
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1461—Backup scheduling policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- 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
-
- 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/0614—Improving the reliability of storage 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
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)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及用于容器化的应用的虚拟持久卷。在示例中,从混合的存储类型获取多个不同的存储装载。容器化的存储虚拟化系统创建并管理虚拟持久卷,该虚拟持久卷聚合所获取的存储装载。虚拟持久卷的装载点被提供给容器化的应用。虚拟持久卷包括层次结构,该层次结构通过基于内容的签名使容器化的应用的数据对象与根对象相关。
Description
技术领域
本公开总体上涉及存储领域,并且更特别地涉及用于容器化的应用的虚拟持久卷。
背景技术
容器是一种虚拟化的类型。容器可以包括与依赖性和库封装在一起的应用。容器化的应用可以使用或生成持久数据。
发明内容
根据本公开的一方面,提供了一种非瞬态机器可读介质,其存储由处理资源可执行的指令,非瞬态机器可读介质包括:用以使管理哈希树中的数据的容器化的存储虚拟化系统实例化的指令;用以从容器化的应用接收对于存储的请求的指令;用以根据请求从混合的存储类型获取多个不同的存储装载的指令;用以创建虚拟持久卷的指令,虚拟持久卷由容器化的存储虚拟化系统管理并聚合多个不同的存储装载,其中虚拟持久卷包括哈希树,哈希树通过基于内容的签名使容器化的应用的数据对象与根对象相关;以及用以经由容器化的存储虚拟化系统向容器化的应用提供虚拟持久卷的装载点的指令。
根据本公开的另一方面,提供了一种方法,包括:由存储虚拟化系统从容器化的应用接收对于存储的请求;由存储虚拟化系统根据请求从本地存储类型和远程存储类型获取多个不同的存储装载;由存储虚拟化系统创建聚合多个不同的存储装载的虚拟持久卷,其中虚拟持久卷包括层次结构,层次结构通过基于内容的签名使容器化的应用的数据对象与根对象相关;以及由存储虚拟化系统向容器化的应用提供虚拟持久卷的装载点。
根据本公开的又一方面,提供了一种系统,包括:处理资源;以及存储指令的非瞬态机器可读介质,指令在被执行时使处理资源:使执行于处理资源上的容器化的存储虚拟化系统实例化,容器化的存储虚拟化系统管理哈希树中的数据,从容器化的应用接收对于存储的请求,根据请求从混合的存储类型获取多个不同的存储装载,创建虚拟持久卷,虚拟持久卷由容器化的存储虚拟化系统管理并聚合多个不同的存储装载,其中虚拟持久卷包括哈希树,哈希树通过基于内容的签名使容器化的应用的数据对象与根对象相关;以及经由容器化的存储虚拟化系统向容器化的应用提供虚拟持久卷的装载点。
附图说明
下面将参考以下附图描述各种示例。
图1描绘了创建虚拟持久卷的示例系统,该虚拟持久卷聚合多个不同的底层存储并被呈现给容器化的应用。
图2描绘了包括创建虚拟持久卷的示例方法。
图3描绘了包括用虚拟持久卷来执行数据服务的示例方法。
图4描绘了具有机器可读介质的示例系统,该机器可读介质包括用以创建虚拟持久卷的指令。
具体实施方式
容器技术是一种计算虚拟化范例,其中应用与依赖项和库一起被封装在容器中,以提供隔离的环境来运行该应用。这样的应用可以被称为容器化的应用。许多容器可以在单个操作系统上运行,但是每个容器与其他容器本质上是隔离的。以这种方式,容器范例可以被理解为将操作系统虚拟化。容器可能比诸如将硬件虚拟化的虚拟机的其他形式的虚拟化更轻。例如,每个虚拟机可以具有其自己的操作系统内核的副本,而与此相反,多个容器可以共享一个操作系统内核。
容器化的应用可能需要用以保留持久性数据的存储。容器编排器(orchestrator)可以提供为容器供应一些存储的能力。但是,存在许多类型的存储,包括但不限于对于容器而言是本地的、对于容器而言是远程的、硬件的(例如,本地附接的驱动器)、软件定义的(例如,文件系统、虚拟化或容器化的存储、经由API等被呈现的存储)、或具有上述各个方面的组合的存储。供应容器存储的先前工作可能无法提供容器环境的用户和管理员所期望的存储配置灵活性和数据服务的级别。例如,容器编排器可能限于为应用供应一种类型的存储。其他类型的系统可能会尝试将多个卷级联在一起成为单个卷,但是这样的级联可能不具有在不干扰用户对数据访问的情况下提供某些数据服务的灵活性。
相比之下,具有在容器环境中的虚拟持久卷中供应任何类型的存储的任何混合的能力并以高度虚拟化的方式管理该虚拟持久卷可以实现配置灵活性以及稳健、一致的数据服务,从而为容器用户(包括管理员)解锁效率和益处。虚拟持久卷可以使存储的基础混合与如何对数据进行抽象并将其呈现给诸如容器化的应用的数据消耗方解耦。因此,诸如分层、迁移、基于快照的备份、数据保护等数据服务可以以对于使用虚拟持久卷的容器化的应用是透明且非干扰的方式而在虚拟持久卷上被执行,并且也可以以一致且可预测的方式被执行,而不考虑构成虚拟持久卷的存储的基础混合。
为了提供前述技术优势,本文所描述的示例可以涉及一种容器化的存储虚拟化系统,其从容器化的应用接收对于存储的请求,根据该请求从本地和远程存储类型获取多个不同的存储装载,创建聚合多个不同的存储装载(并且因此聚合对应的本地和远程存储分配)的虚拟持久卷,以及将虚拟持久卷的装载点提供给容器化的应用。虚拟持久卷可以采取诸如默克尔树之类的层次结构的形式,该层次结构通过其基于内容的签名使容器化的应用的数据对象与根对象相关。根对象可以表示整个虚拟持久卷。而且,虚拟持久卷的装载点可以是容器化的存储虚拟化系统所理解的任何类型的存储访问抽象之一,诸如文件、块或键/值存储库。因此,借助于前述内容,可以创建虚拟持久卷,该虚拟持久卷将底层存储与容器化的应用解耦。
现在参考附图,图1描绘了支持并参与容器环境120的示例计算系统100。计算系统100包括处理资源102,该处理资源102可以包括微控制器、微处理器、(多个)中央处理单元核、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。计算系统100包括机器可读介质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上被执行(借助于执行与操作系统相关的某些指令105的处理资源102)并且操作系统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可以由各种厂商提供,并且可以将关联的存储系统暴露给容器存储接口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,诸如用于装载本地物理存储106的块适配器、用于访问作为块设备的本地文件系统108的堆栈文件和块适配器、或者其他存储适配器。
控制平面140包括策略引擎142和容器存储接口API(应用编程接口)144。在存储虚拟化系统130的初始化阶段期间,控制平面140可以从管理员或容器编排器122接收容器环境120中的可用容器存储接口插件128的列表。控制平面140还可以确认可用于数据路径132以用于安装本地存储的存储适配器139。控制平面140还可以维护与那些可用插件128中的每个相关联的存储的特性的列表,诸如性能特性(例如,延时、IOPS或每秒的输入/输出操作等)、安全特性(例如,加密、隔离等)、数据保护特性(例如,可用的RAID或独立磁盘冗余阵列、级别)、成本特性(例如,每GB的美元)或其他特性。
现在将在为容器化的应用124、126提供存储的上下文中描述数据路径功能132和控制平面功能140的功能性。诸如应用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可以是可用的,从远程存储160供应存储的分配。
如图1中所描绘的远程存储系统160可以表示文件系统(例如,网络附接的存储或NAS、文件服务器)、块存储系统(例如,存储区域网络或SAN、存储设备)或远程于计算系统100并且因此也远程于容器化的存储虚拟化系统130的任何其他类型的存储系统。例如,远程可以意味着计算系统100经由网络连接等与远程存储系统160通信。
虚拟化的存储162可以表示虚拟环境中的任何现有持久卷,诸如容器环境120中的持久卷,包括独立于容器化的存储虚拟化系统130的通过容器存储接口123供应的容器存储。在一些示例中,虚拟化的存储162可以表示由除系统130之外的另一容器存储虚拟化系统(例如,被托管在与计算系统100不同的节点上)所供应的容器存储。在一些示例中,虚拟化的存储162可以表示由基于虚拟机或管理程序(hypervisor)的软件定义的存储平台所提供的存储。
策略引擎142可以确定混合的前述存储类型。例如,策略引擎142可以将请求与可用的存储类型进行比较以标识最接近的匹配。为了说明,该请求可以要求一定量的高速存储和一定量的低成本、归档类存储。策略引擎可以确定物理存储106满足高速存储要求(例如,部分地由于本地性并且在该示例中是高速介质)并且块存储设备160满足低成本归档类要求。
随后,控制平面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对该存储请求的处理。
一旦根据策略引擎142已由控制平面140获取了一个或多个存储装载点(例如170、172、174、176或178),控制平面140就传递所获取的装载点到数据路径132。例如,通过将装载点与请求标识符相关联,控制平面140可以将装载点标识为与特定请求相关联。如将描述的,数据路径132消耗并混合装载点以创建由装载点180呈现给请求的容器化的应用124的虚拟持久卷156。以这种方式,与所获取的装载点相对应的所分配的存储(例如,170、172、174、176或178)可以被称为虚拟持久卷156的底层存储。因此,容器化的应用124读取数据并将数据写入虚拟持久卷156。在描述虚拟持久卷156的创建之前,将首先描述数据路径132的操作方面。
数据路径132包括存储虚拟化器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提供的每个装载点处的底层存储分配指派和/或划分为扩展区(或者也被称为微型卷)。通过与对象签名相关联地在对象索引154中存储虚拟地址而不是物理地址,并维护将给定虚拟地址映射到扩展区并因此映射到对应的底层存储的扩展区表,可以实现间接附加层。因此,为了基于虚拟地址对对象进行访问,卷管理器138可以首先使用扩展区表和虚拟地址的第一部分来标识由虚拟地址所针对的扩展区,然后使用虚拟地址的第二部分来在扩展区内对对象进行定位。以这种方式,通过仅更新扩展区表中的扩展区标识符,而不是更新对数据对象的大量内存或持久引用(即,对象索引154中的每个受影响的地址)并重新生成各种逻辑地址、索引和在管理存储系统时所利用的其他数据结构,可以以高效的方式执行诸如扩展区之间的迁移和分层之类的某些数据服务。
在存储虚拟化层150内,存储虚拟化器136维护由对象存储库152返回的一个或多个虚拟持久卷(在本文中也被称为虚拟PV)。在一些实施方式中,容器化的应用将以一对一的关系与虚拟PV相关联。例如,在图1的示例图示中,容器化的应用124与虚拟PV 156相关联,并且容器化的应用126与虚拟PV 158相关联。在一些实施方式中,每个虚拟PV由容器编排器122映射到由容器编排器122维护的对应的编排器持久卷,并且请求的容器化的应用124访问虚拟PV 156的存储,其是经由编排器持久卷来访问的。
在其他情况下,容器化的应用和虚拟PV可以以一对多、多对一或多对多的关系相关联。仅出于说明的目的,现在将参考虚拟PV 156来描述虚拟PV,但是应当理解,类似的描述可以应用于诸如虚拟PV 158之类的其他虚拟PV和未示出的其他虚拟PV。
在一种实施方式中,虚拟持久卷156可以是存储在对象存储库152中的元数据对象和数据对象的组织,其中该组织通过关联的基于内容的签名使数据对象向上与根对象分层地相关。在示例中,虚拟PV 156可以是默克尔树(也被称为哈希树)或任何其他层次布置(例如,有向无循环图等)。在层次默克尔树的情况下,数据对象可以位于任何分支的最低树级别(也被称为叶级别,其距离根对象最远)处,并且这样的数据对象可以被称为叶数据对象。如上所述,数据对象构成了容器化的应用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卷或与Amazon S3兼容的API)以及其他类型的装载点。以这种方式,可以将装载点理解为有助于完成存储访问抽象,因为向容器化的应用124提供容器化的应用124所需的任何类型的存储访问(例如,文件协议或块协议等),而不管构成虚拟PV 156的底层存储类型如何(例如,不管是基于软件的还是基于硬件的、块还是文件、本地还是远程等)。
装载点的类型,即抽象的类型,可以是用户选择的,或者可以根据请求存储的容器化的应用124而被预先定义(即,基于容器编排器122所指示的容器化的应用的类等等)。可以经由在控制平面140处接收到的存储请求将抽象的类型指示给容器化的存储虚拟化系统130。
在图1的示例中,以类似于上面针对容器化的应用124的虚拟PV 156的装载点180所描述的方式,容器化的存储虚拟化系统130还可以向容器化的应用126提供装载点182,以访问响应于从容器化的应用126到容器编排器122的存储的请求而创建的虚拟持久卷158。虚拟PV 156和虚拟PV 158都可以包括用于组织相应数据集的相应默克尔树,而对象存储库152以去重复的方式存储虚拟PV 156和158的数据。
在操作中(即,在虚拟PV 156被创建并且装载点180被提供给应用124之后),存储虚拟化系统130可以对经由装载点180的来自容器化的应用124的指向虚拟PV 156的输入/输出(I/O)请求提供服务。例如,为了服务通过装载点180接收的读取请求,存储虚拟化器136可以标识由读取请求寻址的虚拟PV中的数据对象的签名(即,其可以包括:基于读取请求的地址遍历虚拟PV的默克尔树结构),并从对象索引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可以以非干扰的方式一致地执行一组公共的数据服务,而不管是什么类型的底层存储构成虚拟PV156。借助于例如虚拟PV 156使底层存储与容器化的应用124解耦,可以使前述技术益处成为可能。
例如,数据服务提供方134可以执行高效的基于快照的备份数据服务。在一些实施方式中,通过从根对象开始以自上而下的迭代方式比较对象签名来查找不同的元数据和数据对象,可以高效地实现层次布置的虚拟PV 156的时间快照之间的差异。例如,在备份虚拟PV 156的当前状态(即,当前快照)的操作中,当前快照可以在主系统(例如,计算系统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可以将虚拟PV156的管理迁移到目的地计算系统110上的另一存储虚拟化系统,其中容器化的应用124已被迁移到其上。数据服务提供方134还可以迁移虚拟PV 156中的一些数据,诸如将对计算系统100而言是本地的数据对象(例如,在底层物理存储106上)迁移到不同计算系统110的物理存储,这对于维护虚拟PV 156的存储本地性和其他性能特性可能是有用的。这样的迁移可能涉及标识目的地计算系统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方案将虚拟PV 156的对象写入RAID集,RAID方案诸如RAID 1、RAID5或RAID 6。
数据服务提供方134还可以通过复制或镜像虚拟PV 156(为便于讨论,也被称为主虚拟PV)的数据来提供RAIN数据保护,以与RAIN架构原则保持一致地达到数据保护和高可用性的目的。在一些实施方式中,数据服务提供方134可以一开始当数据进入到存储虚拟化层150中时复制或镜像数据作为来自容器化的应用124的写入请求。在一些实施方式中,复制的数据可以形成虚拟PV副本,相对于对计算系统110而言是本地的主虚拟PV,该虚拟PV副本可以具有类似于虚拟PV的形式(例如,包括默克尔树),并且可以对不同计算系统110上的不同存储虚拟化系统而言是本地的并且可以由其来进行管理。附加地或备选地,虚拟PV副本可以由与构成主虚拟PV 156的底层存储不同和/或分离的底层存储构成。因此,如果主虚拟PV上的数据是不可恢复的,则可以使用故障转移过程从虚拟PV副本中恢复数据。
总而言之,借助于容器化的存储虚拟化系统130将各种类型的存储聚合到虚拟持久卷中,该虚拟持久卷可以被示为任何数目的可用存储抽象,容器存储数据路径可以是从端到端高度虚拟化的。因此,容器化的应用的用户可以在请求底层存储的任何组成以适应应用的性能需求(或其他需求)时被提供高度的灵活性,同时还能够使用适合于该应用的任何类型的抽象来消耗存储。此外,可以与底层存储的组成无关并且与被用来呈现虚拟PV的存储访问抽象的类型无关地提供一致的存储服务集。
图2和图3是描绘各种示例方法的流程图。在一些实施方式中,可以实质上同时或以与所示出的顺序不同的顺序执行方法的一个或多个框。在一些实施方式中,方法可以包括比所示出的更多或更少的框。在一些实施方式中,方法的一个或多个框可以在某些时间进行和/或可以重复。在一些实施方式中,方法的框可以被组合。
图2和图3中所示的方法可以以被存储在机器可读介质上的可执行指令(例如,诸如存储在机器可读介质104上的指令105)并且由处理资源(例如,诸如处理资源102)执行的可执行指令的形式和/或以电子电路的形式来实现。例如,方法的各方面可以在下面被描述为由计算系统上的存储虚拟化系统执行,其示例可以是上述计算系统100上的容器化的存储虚拟化系统130。换言之,在一些实施方式中,可以在基于硬件的处理资源上执行的容器中实现结合方法200和300描述的存储虚拟化系统的至少一部分。另外,出于说明目的,可以参考图1中所示的其他元件来描述以下描述的方法的其他方面。
图2是描绘示例方法200的流程图。方法200可以用于向容器化的应用提供虚拟持久卷形式的存储,其虚拟化其他类型的持久存储。方法200开始于框202,并继续至框204,其中存储虚拟化系统(例如130)从容器化的应用(例如124)接收对于存储的请求。在一些实施方式中,该请求可以由存储虚拟化系统的控制平面方面(例如140)来接收。此外,在一些实施方式中,该请求可以由容器化的应用提交给容器编排器(例如122),其继而又经由容器存储接口(例如123)将该请求传送到存储虚拟化系统。
在框206处,存储虚拟化系统(或者更特别地,其控制平面)根据请求从各种类型的可用存储中获取多个不同的存储装载。各种类型的存储可以被表征为本地或远程存储、硬件/物理存储或软件定义的存储、基于文件的存储、基于块的存储、基于对象的存储、云存储、任何其他类型的存储或上述类型的组合。
例如,本地存储类型可以包括对存储虚拟化系统而言是本地的存储(换言之,与存储虚拟化系统在其上执行的处理资源位于同一计算系统中),诸如可以作为块存储设备出现的本地附接的物理存储(例如106)、本地文件系统(例如108)或本地虚拟化存储卷(例如162)。远程存储可以包括例如在存储虚拟化系统外部并且由存储虚拟化系统通过诸如以太网、光纤通道等等的通信介质到达的存储系统。远程存储可以包括远程文件系统(例如160)、远程块存储系统(例如160)、云存储(例如164)(诸如公共云存储)或远程虚拟化存储卷。硬件或物理存储可以指的是本地附接的存储,例如(例如106)。软件定义的存储可以指的是例如不与特定硬件实现绑定的、可以作为软件被部署到包括虚拟化基础结构的多种基础结构类型中等等的存储。因此,总而言之,当履行请求时,存储虚拟化系统不限于单个类型的存储。
为了在框206处获取存储装载,存储虚拟化系统可以利用标准化的容器存储接口(例如与插件128串联的144和123)来从本地和远程存储类型中供应与多个不同存储装载相关联的至少一些存储。例如,存储虚拟化系统可以利用具有插件的标准化容器存储接口来从特定存储系统中供应存储分配,并从该存储系统接收所得到的装载点。对于一些存储类型,诸如本地附接的物理存储,存储虚拟化系统可以利用适配器(例如139)来直接供应存储分配以及所得到的存储装载点,而无需利用容器存储接口。在一些实施方式中,存储虚拟化系统的控制平面可以将所获取的装载点传递到存储虚拟化系统的数据路径部分(例如,132)。
在框208处,存储虚拟化系统(或更特别地,其数据路径)创建虚拟持久卷(例如156),该虚拟持久卷聚合在框206处获取的多个不同的存储装载。该虚拟持久卷包括层次结构,其通过基于内容的签名使容器化的应用的数据对象与根对象相关。虚拟持久卷的层次结构可以采取默克尔树(也被称为哈希树)的形式。数据对象可以被虚拟地存储在也为由存储虚拟化系统创建的其他虚拟PV提供服务的公共去重复的对象存储库(例如152)中。对象存储库可以经由对象索引将数据对象链接到底层存储上的实际存储位置。
在框210处,存储虚拟化系统向(例如,经由框204处接收到的请求)请求存储的容器化的应用提供虚拟持久卷的装载点。存储虚拟化系统可以能够提供与各种类型的存储访问抽象相关的多个装载点中的任何一个。例如,存储虚拟化系统可以将虚拟PV呈现为存储抽象的文件系统类型,并相应地导出文件系统装载点。作为另一示例,存储虚拟化系统可以将虚拟PV呈现为块存储系统,并相应地导出块设备装载点。作为另一示例,存储虚拟化系统可以将虚拟PV呈现为键/值对存储库,并相应地导出键/值对存储库装载点。方法200可以在框212处结束。
图3是描绘示例方法300的流程图,其可以用于对由方法200建立的虚拟持久卷执行各种生命周期动作。例如,在一些实现中,可以在方法200之后执行方法300。方法300始于框302,并继续到框304,其中存储虚拟化系统经由装载点(例如,上面在框208处创建的虚拟PV和经由框210提供的装载点)服务于指向虚拟PV的输入/输出(I/O)请求。例如,以先前关于图1描述的方式,容器化的应用(例如124)可以使用装载点(例如180)从虚拟PV(例如156)读取数据或将数据写入到虚拟PV(例如156)。
在框306处,存储虚拟化系统可以执行数据服务。可以用虚拟PV执行数据服务,而与不同的底层存储装载无关。换言之,无论什么类型的底层存储构成虚拟PV,都可以在虚拟PV上一致地执行数据服务。此外,可以在不修改虚拟PV的装载点的情况下执行数据服务,从而可以相对于容器化的应用透明或非干扰地提供数据服务。示例数据服务包括迁移、分层、基于快照的备份、复制和基于冗余的数据保护(例如RAIN和/或RAID)。可以如先前关于图1所描述的那样执行这样的数据服务。方法300可以在框308处结束。
图4描绘了示例系统400,其包括用处理资源402可执行的示例指令406、408、410、412、414、416(统称为指令406-416)编码的非瞬态机器可读介质404。在一些实施方式中,系统400可用于实现图1的容器化的存储虚拟化系统130,用于执行图2的方法200,以及执行图3的方法300。例如,指令406-416可以被包括在图1的指令105中。在一些实施方式中,关于图1-图3描述的功能性可以被包括在指令406-416中。
处理资源402可以包括微控制器、微处理器、(多个)中央处理单元内核、ASIC、FPGA和/或其他适于从机器可读介质404取回和/或执行指令来执行与各种示例相关的功能的硬件设备。附加地或备选地,处理资源402可以包括或耦合到电子电路或专用逻辑,以用于执行本文所述的指令的一些或全部功能性。
机器可读介质404可以是适合于存储可执行指令的任何介质,诸如RAM、ROM、EEPROM、闪存、硬盘驱动器、光盘等。在一些示例实施方式中,机器可读介质404可以是有形的非瞬态介质。机器可读介质404可以被设置在系统400内,在这种情况下,可执行指令可以被视为被安装或嵌入在系统400上。备选地,机器可读介质404可以是便携式(例如,外部)存储介质,并且可能是安装封装的一部分。
如下文中进一步描述的,可以用一组可执行指令406-416来编码机器可读介质404。应当理解,在另一实施方式中,被包括在一个盒中的部分或全部可执行指令和/或电子电路可以被包括在与附图中所示的不同盒中或未示出的不同盒中。系统400的一些实施方式可以包括比图4中示出的更多或更少的指令。
指令406在被执行时使处理资源402对容器化的存储虚拟化系统进行实例化,该系统管理层次结构(例如哈希树)中的数据。特别地,容器化的存储虚拟化系统维护去重复的对象存储库,其存储由以下描述的指令412创建的虚拟持久卷所引用的数据对象和元数据对象。在一些实施方式中,指令406可以与容器编排器协作以将存储虚拟化系统部署为容器化的应用。例如,图1的容器化的存储虚拟化系统130可以是由指令406实例化的容器化的存储虚拟化系统的示例。在一些实施方式中,要描述的指令408、410、412、414、416中的一个或多个可以形成存储虚拟化系统本身的功能性的一部分。
指令408在被执行时使处理资源402从容器化的应用接收对于存储的请求。指令410在被执行时使处理资源402根据经由指令408接收到的请求从混合的存储类型中获取多个不同的存储装载。例如,混合类型的存储可以包括本地存储类型的不同存储(即,不同存储设备)、远程存储类型的不同存储(即不同的存储设备)或本地存储类型中的至少一个存储和远程存储类型中的至少一个存储的组合。特别地,本地存储类型的示例包括对系统400而言是本地(例如,被安装在系统400中或被安装在系统400上)的存储,诸如本地附接的物理存储、本地文件系统或本地虚拟化存储。远程存储类型的示例包括远程文件系统、远程块存储系统、云存储或远程虚拟化存储。
在一些实现中,指令408可以使处理资源402利用标准化的容器存储接口来供应混合的存储类型中的至少一些并接收多个不同存储装载中的至少一些。标准化的容器存储接口可以与容器编排器和插件结合来操作,以从存储类型中供应分配。指令408还可以使处理资源402利用适配器(即,块适配器或文件适配器)来供应存储,特别是本地存储类型。
指令412在被执行时使处理资源402创建虚拟持久卷,该虚拟持久卷由容器化的存储虚拟化系统管理,并聚合多个不同的存储装载。在一种实施方式中,虚拟持久卷包括哈希树(例如,默克尔树),其通过基于内容的签名将叶级别数据对象与根对象相关。数据对象可以是来自容器化的应用124的数据,诸如文件或目录。
指令414在被执行时使处理资源402向容器化的应用提供虚拟持久卷的装载点。指令414可以包括多种类型的存储访问抽象和对应的装载点以从中选择。例如,指令414可以提供文件系统装载点以将虚拟PV呈现为文件系统,可以提供块设备装载点以将虚拟PV呈现为块存储设备,并且可以提供键/值存储库装载点将虚拟PV呈现为键/值对存储库。
指令416在被执行时使处理资源402利用虚拟持久卷执行数据服务。在一些实施方式中,可以在虚拟PV已经由指令412创建之后的任何时间执行指令416。由于数据服务可以主要用虚拟持久卷并且在存储虚拟化层处被执行,因此无论物理地存储虚拟持久卷数据的底层存储类型如何,都可以提供数据服务。可以在不考虑如何呈现虚拟PV(即,虚拟PV的存储访问抽象)的情况下提供数据服务。此外,无需修改虚拟持久卷的装载点,并且无需干扰容器化的应用对虚拟PV的访问。数据服务可以包括迁移、分层、基于快照的备份、复制或基于冗余的数据保护(例如RAID或RAIN),并且指令416可以以与上面关于图1所述的类似方式来执行这些数据服务。
在前面的描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有一些或所有这些细节的情况下实践实施方式。其他实施方式可以包括根据上述细节的修改、组合和变型。所附权利要求书旨在涵盖此类修改和变型。
Claims (21)
1.一种非瞬态机器可读介质,存储由处理资源可执行的指令,所述非瞬态机器可读介质包括:
用以使管理哈希树中的数据的容器化的存储虚拟化系统实例化的指令;
用以从容器化的应用接收对于存储的请求的指令;
用以从对所述容器化的存储虚拟化系统的控制平面可用的可用存储类型中确定匹配与所述请求相关联的要求的混合的存储类型的指令;
用以根据所确定的所述混合的存储类型获取多个不同的存储装载的指令;
用以响应于从所述容器化的应用接收到所述请求而创建虚拟持久卷的指令,所述虚拟持久卷由所述容器化的存储虚拟化系统管理、并聚合所述多个不同的存储装载,其中所述虚拟持久卷包括哈希树,所述哈希树通过基于内容的签名使所述容器化的应用的数据对象与根对象相关;以及
用以经由所述容器化的存储虚拟化系统向所述容器化的应用提供所述虚拟持久卷的装载点的指令。
2.根据权利要求1所述的非瞬态机器可读介质,其中所述混合的存储类型包括本地存储类型中的不同存储类型、远程存储类型中的不同存储类型、或所述本地存储类型中的至少一个存储类型和所述远程存储类型中的至少一个存储类型的组合。
3.根据权利要求2所述的非瞬态机器可读介质,其中
所述本地存储类型包括本地附接的物理存储、本地文件系统或本地虚拟化存储;并且
所述远程存储类型包括远程文件系统、远程块存储系统、云存储或远程虚拟化存储。
4.根据权利要求1所述的非瞬态机器可读介质,其中用以获取的所述指令包括用以以下的指令:利用标准化的容器存储接口来供应所述混合的存储类型中的至少一些存储类型,并且接收所述多个不同的存储装载中的至少一些存储装载。
5.根据权利要求1所述的非瞬态机器可读介质,其中所述容器化的存储虚拟化系统维护本机去重复的对象存储库,所述本机去重复的对象存储库存储所述虚拟持久卷的所述数据对象和其他虚拟持久卷的数据对象。
6.根据权利要求5所述的非瞬态机器可读介质,其中所述容器化的存储虚拟化将经由所述不同装载点被访问的至少一个存储分配指派给一个或多个扩展区,所述一个或多个扩展区提供针对所述至少一个存储分配的物理地址的间接附加层,以及
其中所述非瞬态机器可读介质还包括用以执行所述一个或多个扩展区上的数据服务的指令,所述数据服务包括分层或迁移。
7.根据权利要求1所述的非瞬态机器可读介质,还包括用以以下的指令:与所述不同的存储装载无关地、并且在不修改所述装载点的情况下,用所述虚拟持久卷来执行数据服务。
8.根据权利要求7所述的非瞬态机器可读介质,其中所述数据服务包括迁移、分层、基于快照的备份、复制和基于冗余的数据保护。
9.根据权利要求1所述的非瞬态机器可读介质,其中所述虚拟持久卷的所述装载点选自可用于用以提供的所述指令的存储访问抽象,包括文件系统装载点、块设备装载点和键/值存储库装载点。
10.一种方法,包括:
由存储虚拟化系统从容器化的应用接收对于存储的请求;
由所述存储虚拟化系统从对所述容器化的存储虚拟化系统的控制平面可用的可用存储类型中确定匹配与所述请求相关联的要求的混合的存储类型;
由所述存储虚拟化系统根据所确定的所述混合的存储类型从本地存储类型和远程存储类型获取多个不同的存储装载;
响应于从所述容器化的应用接收到所述请求,由所述存储虚拟化系统创建聚合所述多个不同的存储装载的虚拟持久卷,其中所述虚拟持久卷包括层次结构,所述层次结构通过基于内容的签名使所述容器化的应用的数据对象与根对象相关;以及
由所述存储虚拟化系统向所述容器化的应用提供所述虚拟持久卷的装载点。
11.根据权利要求10所述的方法,其中所述本地存储类型和所述远程存储类型包括:
本地附接的物理存储或本地文件系统;以及
远程文件系统、远程块存储系统或云存储。
12.根据权利要求10所述的方法,其中所述获取包括:利用标准化的容器存储接口来供应与来自所述本地存储类型和所述远程存储类型的所述多个不同的存储装载相关联的存储中的至少一些存储。
13.根据权利要求10所述的方法,其中所述存储虚拟化系统的至少部分在执行于基于硬件的处理资源上的容器中被实现。
14.根据权利要求10所述的方法,其中所述虚拟持久卷的所述数据对象和其他虚拟持久卷的数据对象被存储在本机去重复的对象存储库中,并且所述层次结构是哈希树。
15.根据权利要求10所述的方法,还包括:与所述不同的存储装载无关地、并且在不修改所述装载点的情况下,用所述虚拟持久卷来执行数据服务。
16.根据权利要求10所述的方法,其中所述虚拟持久卷的所述装载点选自可用于所述存储虚拟化系统的存储访问抽象,包括文件系统装载点、块设备装载点和键/值存储库装载点。
17.一种系统,包括:
处理资源;以及
存储指令的非瞬态机器可读介质,所述指令在被执行时使所述处理资源:
使执行于所述处理资源上的容器化的存储虚拟化系统实例化,所述容器化的存储虚拟化系统管理哈希树中的数据,
从容器化的应用接收对于存储的请求,
从对所述容器化的存储虚拟化系统的控制平面可用的可用存储类型中确定匹配与所述请求相关联的要求的混合的存储类型,
根据所确定的混合的存储类型,从混合的存储类型获取多个不同的存储装载,
响应于从所述容器化的应用接收到所述请求,创建虚拟持久卷,所述虚拟持久卷由所述容器化的存储虚拟化系统管理、并聚合所述多个不同的存储装载,其中所述虚拟持久卷包括哈希树,所述哈希树通过基于内容的签名使所述容器化的应用的数据对象与根对象相关;以及
经由所述容器化的存储虚拟化系统,向所述容器化的应用提供所述虚拟持久卷的装载点。
18.根据权利要求17所述的系统,还包括物理存储设备,
其中所述混合的存储类型包括:
所述物理存储设备或所述物理存储设备上的本地文件系统;以及
远程文件系统、远程块存储系统、云存储或远程虚拟化存储。
19.根据权利要求17所述的系统,其中使所述处理资源获取的所述指令包括使所述处理资源执行以下操作的指令:利用标准化的容器存储接口来供应所述混合的存储类型中的至少一些存储类型,并且接收所述多个不同的存储装载中的至少一些存储装载。
20.根据权利要求17所述的系统,其中所述非瞬态机器可读介质存储指令,所述指令在被执行时使所述处理资源:与所述不同的存储装载无关地、并且在不修改所述装载点的情况下,用所述虚拟持久卷来执行数据服务。
21.根据权利要求17所述的系统,其中所述虚拟持久卷的所述装载点选自可用于用以提供的所述指令的存储访问抽象,包括文件系统装载点、块设备装载点和键/值存储库装载点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/653,375 US11467775B2 (en) | 2019-10-15 | 2019-10-15 | Virtual persistent volumes for containerized applications |
US16/653,375 | 2019-10-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667147A CN112667147A (zh) | 2021-04-16 |
CN112667147B true CN112667147B (zh) | 2023-05-30 |
Family
ID=75155897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010972152.3A Active CN112667147B (zh) | 2019-10-15 | 2020-09-16 | 用于容器化的应用的虚拟持久卷 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11467775B2 (zh) |
CN (1) | CN112667147B (zh) |
DE (1) | DE102020120553A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11340807B2 (en) * | 2019-12-17 | 2022-05-24 | Vmware, Inc. | Mounting a shared data store of a server cluster on a client cluster for use as a remote data store |
US11727126B2 (en) * | 2020-04-08 | 2023-08-15 | Avaya Management L.P. | Method and service to encrypt data stored on volumes used by containers |
US11687267B2 (en) | 2020-04-14 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Containerized application manifests and virtual persistent volumes |
US20210334235A1 (en) * | 2020-04-23 | 2021-10-28 | Netapp, Inc. | Systems and methods for configuring, creating, and modifying parallel file systems |
US11163462B1 (en) * | 2020-04-29 | 2021-11-02 | EMC IP Holding Company LLC | Automated resource selection for software-defined storage deployment |
US11556372B2 (en) * | 2020-06-05 | 2023-01-17 | Vmware, Inc. | Paravirtual storage layer for a container orchestrator in a virtualized computing system |
US11194483B1 (en) * | 2020-06-05 | 2021-12-07 | Vmware, Inc. | Enriching a storage provider with container orchestrator metadata in a virtualized computing system |
US11693573B2 (en) | 2020-06-18 | 2023-07-04 | Hewlett Packard Enterprise Development Lp | Relaying storage operation requests to storage systems using underlying volume identifiers |
US11960773B2 (en) * | 2020-07-31 | 2024-04-16 | Hewlett Packard Enterprise Development Lp | Modifying virtual persistent volumes based on analysis of performance metrics |
CN113641311B (zh) * | 2021-10-18 | 2022-02-01 | 浩鲸云计算科技股份有限公司 | 一种基于本地盘的容器存储资源动态分配的方法和系统 |
CN114265563B (zh) * | 2021-12-31 | 2023-03-28 | 北京瑞莱智慧科技有限公司 | 基于云计算的对象存储方法、装置及存储介质 |
JP2023167703A (ja) * | 2022-05-12 | 2023-11-24 | 株式会社日立製作所 | 計算機システム、及び記憶領域割当制御方法 |
CN115576655B (zh) * | 2022-12-09 | 2023-04-14 | 浪潮电子信息产业股份有限公司 | 容器数据保护系统、方法、装置、设备及可读存储介质 |
CN116107515B (zh) * | 2023-04-03 | 2023-08-18 | 阿里巴巴(中国)有限公司 | 存储卷挂载与访问方法、设备及存储介质 |
CN116991324B (zh) * | 2023-08-08 | 2024-05-14 | 深圳市云存宝技术有限公司 | 一种基于存储虚拟化的云硬盘数据扩容方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1688981A (zh) * | 2002-08-09 | 2005-10-26 | 网络装置公司 | 通过在文件系统上将虚拟盘对象分层进行存储虚拟化 |
CN101809559A (zh) * | 2007-09-05 | 2010-08-18 | 伊姆西公司 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
US10127234B1 (en) * | 2015-03-27 | 2018-11-13 | Amazon Technologies, Inc. | Proactive optimizations at multi-tier file systems |
WO2019015288A1 (zh) * | 2017-07-20 | 2019-01-24 | 中兴通讯股份有限公司 | 数据持久化处理的方法、装置、系统及可读存储介质 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7159093B2 (en) | 2002-12-20 | 2007-01-02 | Veritas Operating Corporation | Development of a detailed logical volume configuration from high-level user requirements |
US7143260B2 (en) | 2002-12-20 | 2006-11-28 | Veritas Operating Corporation | Intermediate descriptions of intent for storage allocation |
US7383410B2 (en) | 2002-12-20 | 2008-06-03 | Symantec Operating Corporation | Language for expressing storage allocation requirements |
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 |
WO2007002398A2 (en) | 2005-06-24 | 2007-01-04 | Syncsort Incorporated | System and method for virtualizing backup images |
US7587570B2 (en) | 2006-05-31 | 2009-09-08 | International Business Machines Corporation | System and method for providing automated storage provisioning |
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 |
US8386610B2 (en) | 2007-12-31 | 2013-02-26 | Netapp, Inc. | System and method for automatic storage load balancing in virtual server environments |
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 |
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 |
US8983915B2 (en) * | 2011-08-01 | 2015-03-17 | Actifio, Inc. | Successive data fingerprinting for copy accuracy assurance |
US8775773B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Object storage system |
EP2828751B1 (en) | 2012-03-21 | 2019-05-01 | Tier 3, Inc. | Cloud application scaling framework |
US9043530B1 (en) | 2012-04-09 | 2015-05-26 | Netapp, Inc. | Data storage within hybrid storage aggregate |
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 |
US20140040889A1 (en) | 2012-08-03 | 2014-02-06 | International Business Machines Corporation | Facilitating Customer-Initiated Virtual Machine Migration and Swapping |
US9141305B2 (en) | 2012-12-05 | 2015-09-22 | 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 |
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 |
US10013196B2 (en) | 2014-09-26 | 2018-07-03 | EMC IP Holding Company LLC | Policy based provisioning of storage system resources |
US20170013046A1 (en) | 2014-11-18 | 2017-01-12 | Primarydata, Inc. | Data-centric data storage |
US10496488B2 (en) | 2014-12-31 | 2019-12-03 | Netapp, Inc. | Methods and systems for clone management |
US9740633B2 (en) | 2015-01-07 | 2017-08-22 | International Business Machines Corporation | Updatable address lookup application program interface |
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 |
US10216455B1 (en) | 2017-02-14 | 2019-02-26 | Veritas Technologies Llc | Systems and methods for performing storage location virtualization |
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 |
US10963349B2 (en) | 2017-08-25 | 2021-03-30 | Vmware, Inc. | Containerized application snapshots |
WO2019089044A1 (en) | 2017-11-03 | 2019-05-09 | Visa International Service Corporation | 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 |
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 |
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 |
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 |
-
2019
- 2019-10-15 US US16/653,375 patent/US11467775B2/en active Active
-
2020
- 2020-08-04 DE DE102020120553.8A patent/DE102020120553A1/de active Pending
- 2020-09-16 CN CN202010972152.3A patent/CN112667147B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1688981A (zh) * | 2002-08-09 | 2005-10-26 | 网络装置公司 | 通过在文件系统上将虚拟盘对象分层进行存储虚拟化 |
CN101809559A (zh) * | 2007-09-05 | 2010-08-18 | 伊姆西公司 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
US10127234B1 (en) * | 2015-03-27 | 2018-11-13 | Amazon Technologies, Inc. | Proactive optimizations at multi-tier file systems |
WO2019015288A1 (zh) * | 2017-07-20 | 2019-01-24 | 中兴通讯股份有限公司 | 数据持久化处理的方法、装置、系统及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11467775B2 (en) | 2022-10-11 |
CN112667147A (zh) | 2021-04-16 |
US20210109683A1 (en) | 2021-04-15 |
DE102020120553A1 (de) | 2021-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112667147B (zh) | 用于容器化的应用的虚拟持久卷 | |
US11954078B2 (en) | Cloning virtualized file servers | |
US11693575B2 (en) | Containerized application manifests and virtual persistent volumes | |
US20210240369A1 (en) | Virtual storage policies for virtual persistent volumes | |
US20230333947A1 (en) | Replication using shared content mappings | |
US11080232B2 (en) | Backup and restoration for a deduplicated file system | |
US11954220B2 (en) | Data protection for container storage | |
US11663084B2 (en) | Auto-upgrade of remote data management connectors | |
US10359968B1 (en) | Smart data movement among virtual storage domains | |
US12086473B2 (en) | Copying data using references to the data | |
CN113821298B (zh) | 使用底层卷标识符将存储操作请求中继到存储系统 | |
US20210200641A1 (en) | Parallel change file tracking in a distributed file server virtual machine (fsvm) architecture | |
US8996837B1 (en) | Providing multi-tenancy within a data storage apparatus | |
US10819656B2 (en) | Throttling network bandwidth using per-node network interfaces | |
US11960773B2 (en) | Modifying virtual persistent volumes based on analysis of performance metrics | |
US10042711B1 (en) | Distributed data protection techniques with cloning | |
WO2015123537A1 (en) | Virtual data backup | |
US11755417B2 (en) | Scaling single file snapshot performance across clustered system | |
US11675503B1 (en) | Role-based data access | |
US11397650B1 (en) | Methods and systems for protecting virtual machine data in networked storage systems | |
US20220391359A1 (en) | Distributed File System that Provides Scalability and Resiliency | |
US20230393787A1 (en) | Distributed File System with Disaggregated Data Management and Storage Management Layers | |
US20220391361A1 (en) | Distributed File System with Reduced Write and Read Latencies |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |