存储系统及用于其的方法
技术领域
本发明一般而言涉及数据存储,并且具体而言涉及管理在薄(thin)和厚供给存储池(thick provisioned storage pool)中创建的厚和薄数据卷。
背景技术
在计算机存储阵列(在本文中也称为存储系统或存储子系统)中,盘分区和逻辑卷管理用来管理诸如硬盘驱动器的物理存储设备。在盘分区中,单个存储设备被分成称为分区的多个逻辑存储单元,由此就好像它是多个盘一样来对待一个物理存储设备。逻辑卷管理提供在大容量存储设备上分配空间的方法,该方法比常规的分区方案更灵活。特别地,卷管理器可以把把区域(区域是具有特定长度的字节序列,通常是一兆字节)级联、条块化到一起(stripe together)或者以别的方式组合成更大的虚拟区域,管理员可以调整这种虚拟区域的尺寸或者移动它,有可能不需要中断系统的使用。
以上描述是作为这个领域中相关技术的一般概述给出的,并且不应当被认为是承认它所包含的任何信息构成与本专利申请相抵的现有技术。
发明内容
根据本发明的实施例,提供了包括一个或多个存储设备以及处理器的存储系统,该处理器布置成:把这一个或多个存储设备配置为多个物理存储单元,其中每个物理存储单元都具有存储粒度;在这一个或多个存储设备上配置具有物理数目个物理存储单元和逻辑数目个逻辑存储单元的薄供给存储池,其中物理数目小于逻辑数目;并且,在接收到创建具有所请求数目个物理存储单元的厚数据卷的请求后,识别薄供给池中可用的物理存储单元的可用数目;并且,在确定所请求的数目小于可用数目后,从薄供给存储池向厚数据卷分配所请求数目个物理存储单元。
根据本发明的实施例,提供了包括一个或多个存储设备以及处理器的存储系统,该处理器布置成:把一个或多个存储设备配置为多个物理存储单元,其中每个物理存储单元都具有存储粒度;接收创建所请求的多个数据卷的请求,其中所请求的多个数据卷中每一个都具有所请求的最大物理尺寸;响应于存储粒度,确定其总存储尺寸大于或等于所请求的物理尺寸总数的物理存储单元的最小数目;从一个或多个存储设备分配该最小数目个物理存储单元;并且在端到端配置中连续地把所请求的多个数据卷存储到所分配的物理存储单元。
根据本发明的实施例,还提供了包括一个或多个存储设备以及处理器的存储系统,该处理器布置成:把这一个或多个存储设备配置为多个物理存储单元;配置多个存储池,这多个存储池中每一个都具有一个或多个相应的池属性;定义包括这多个存储池的分组池;并且在接收到创建具有一个或多个卷属性并且包括所请求数目个物理存储单元的数据卷的请求后,响应于其一个或多个池属性与其一个或多个卷属性之间的比较而识别给定的存储池;检测给定的存储池中可用数目个物理存储单元;并且,在确定所请求的物理存储单元的数目大于物理存储单元的可用数目后,计算包括从所请求的物理存储单元的数目减去物理存储单元的可用数目的数目;并且在分组池中把计算出的数目个物理存储单元传送到所识别的存储池。
附图说明
本文参考附图仅仅作为例子描述本公开内容,其中:
图1是根据本发明的实施例、示意性地说明存储系统的框图;
图2是根据本发明的实施例、布置成管理厚和薄供给存储池中的厚和薄数据卷的存储系统的模块的框图;
图3是根据本发明的第一实施例、示意性地说明在薄供给存储池中创建给定厚卷的方法的流程图;
图4A和4B是根据本发明的第二实施例、在以端到端配置存储多个数据卷的存储系统中的存储单元的框图;
图5是根据本发明的第二实施例、示意性地说明以端到端配置存储多个数据卷的方法的流程图;及
图6是根据本发明的第三实施例、示例性地说明管理分组存储池的方法的流程图。
具体实施方式
薄供给(thick provisioning)是在存储系统中用来优化可用存储的利用的方法。代替把所有请求的物理数据块(在本文中被称为存储单元)预先分配给数据卷,薄供给实现存储单元向数据卷的按需分配。这种方法有助于消除几乎所有的“空白”(即,分配给数据卷但没有存储任何数据的存储单元),由此比诸如厚供给的存储分配方法提高存储利用率,其中厚供给向各个数据卷分配可能保持不用(即,不存储任何数据)的存储单元。
薄供给实现过度分配(或者过度订阅)机制,这种机制使得存储系统能够看到比已经在存储系统自身上物理保留的更多的附加存储容量。在薄供给中,物理存储空间或者是物理存储空间或者是逻辑存储空间,其中物理存储空间或者被保留或者被使用。保留的物理存储空间包括分配给存储池(存储池在下文中描述)的存储空间量,而被使用的存储空间包括当前用来存储数据的保留的物理存储空间量。对于给定的数据卷,逻辑空间包括给定卷的所报告的容量,并且对于给定的存储池,逻辑空间包括用于池中所有数据卷的最大尺寸。
过度分配使数据卷的增长有灵活性,而不需要准确地预测给定的数据卷将增长多少。相反,存储单元增长变得有序。阵列上的物理存储容量仅仅在数据真正被主计算机(或者诸如SCSI主机或服务器的另一实体)写时才被指定,而不是在存储卷最初被分配时就指定。服务器,并且通过扩展还有驻留在其上的应用,看到来自储存器的完全尺寸的数据卷,但是储存器本身只在它们被写时才分配数据块。
在实现薄供给的存储系统中,数据卷可以从存储池创建,其中数据卷或者是厚卷或者是薄卷,并且其中存储池或者是薄供给池或者是厚供给池。其逻辑尺寸大于其物理尺寸的存储池可以被称为薄供给存储池,而其逻辑尺寸等于其物理尺寸的存储池可以被称为厚供给存储池。同样,其逻辑尺寸大于其物理尺寸的数据卷可以被称为薄卷,而其逻辑尺寸等于其物理尺寸的数据卷可以被称为厚卷。在有些实施例中,厚卷可以包括作为薄卷创建但是其物理尺寸等于其逻辑尺寸的给定卷(即,完全分配的薄卷)。
本发明的实施例提供了用于管理薄和厚供给存储池以便创建厚和薄卷的方法和系统。如下文中所描述的,第一实施例包括用于从薄供给池创建厚卷的方法和系统,第二实施例包括用于在一个或多个存储单元中“端到端地”存储多个数据卷的方法和系统,并且第三实施例包括用于定义和管理包括多个厚和/或薄供给存储池的分组池的方法和系统。
在第一实施例中,一个或多个存储设备可以配置为多个物理存储单元,其中每个物理存储单元都具有存储粒度。在配置一个或多个存储设备后,可以在这一个或多个存储设备上配置薄供给的存储池,其中薄供给的存储池具有物理数目个物理存储单元和逻辑数目个逻辑存储单元,其中物理数目小于逻辑数目。在接收到创建具有所请求数目个物理存储单元的厚数据卷的请求后,可以识别薄供给池中可用的物理存储单元的可用数目。在确定所请求的数目小于可用数目后,可以从薄供给存储池向厚数据卷分配所请求数目个物理存储单元。
在第二实施例中,一个或多个存储设备可以配置为多个物理存储单元,其中每个物理存储单元都具有存储粒度。在配置一个或多个存储设备后,可以接收创建所请求的多个数据卷的请求,其中所请求的多个数据卷中每一个都具有所请求的最大物理尺寸。响应于存储粒度,确定其总存储尺寸大于或等于所请求的物理尺寸总数的物理存储单元的最小数目。可以从存储设备中的一个或多个分配该所确定的最小数目个物理存储单元,并且在端到端配置中连续地把所请求的多个数据卷存储到所分配的物理存储单元。
在第三实施例中,一个或多个存储设备可以配置为多个物理存储单元。在配置一个或多个存储设备之后,可以配置多个存储池,这多个存储池中每一个都具有一个或多个相应的池属性,并且可以定义分组池,该分组池包括多个存储池。在接收到创建具有一个或多个卷属性并且包括所请求数目个物理存储单元的数据卷的请求后,响应于其一个或多个池属性与其一个或多个卷属性之间的比较而识别给定的存储池。在识别出给定的存储池后,可以检测给定的存储池中可用数目个物理存储单元。在确定所请求的物理存储单元的数目大于物理存储单元的可用数目时,计算包括从所请求的物理存储单元的数目减去物理存储单元的可用数目的数目,并且在分组池中把计算出的数目个物理存储单元传送到所识别的存储池。
当执行管理程序以便实现每个都具有虚拟化储存器的多个虚拟机时,除了由给定虚拟机使用的给定数据卷,通常还定义相应的元卷(meta volume)来存储用于虚拟机及其相应的虚拟化储存器的配置数据。由于存储系统支持不断增长数目个虚拟机实例,因此本发明的实施例使存储系统能够高效地利用存储空间。
图1是根据本发明的实施例、示意性地说明数据处理存储子系统20的框图。在图1中示出的特定子系统(也称为存储系统)的给出是为了方便本发明的解释。但是,如本领域技术人员将认识到的,本发明可以利用其它计算环境实践,诸如具有不同体系架构和能力的其它存储子系统。
存储子系统20从一个或多个主计算机22接收输入/输出(I/O)请求,这些I/O请求是在数据卷上的逻辑地址读或写数据的命令。任意数量的主计算机22通过本领域中已知的方式,例如利用网络,耦合到存储子系统20。在本文中,作为例子,假设通过结合数据连接24和主机总线适配器(HBA)28的存储区域网络(SAN)26耦合主计算机22和存储子系统20。逻辑地址规定数据卷内一定范围的数据块,在本文中作为例子假设每个块包含512个字节。例如,在给定主计算机22上的数据处理应用中使用的10KB数据记录将需要20个块,给定的主计算机可以把它规定为存储在包括数据卷的块1000至1019的逻辑地址。存储子系统20可以在SAN系统中操作或者作为SAN系统操作。
存储子系统20包括耦合在分别利用数据连接30和44并且分别结合适配器32和42的SAN 26和私有网络46之间的群集存储控制器34。在有些配置中,适配器32和42可以包括主机总线适配器(HBA)或InfiniBandTM架构。群集存储控制器34实现存储模块36的群集,有些存储模块包括接口38(在适配器32和42之间通信)以及高速缓存40。通过数据连接48,每个存储模块36负责多个存储设备50,如所示出的。
如前面所描述的,每个存储模块36还包括给定的高速缓存40。但是,将认识到,存储子系统20中所使用并且与群集存储控制器34结合的高速缓存40的数目可以是任何方便的数目。虽然存储子系统20中的全部高速缓存40都可以按基本相同的方式操作并且包括基本类似的元件,但这并不是必需。每个高速缓存40可以在尺寸上大致相等并且假设,作为例子,以一对一的对应性与一组物理存储设备50耦合,其中物理存储设备50可以包括盘。在一种实施例中,物理存储设备可以包括这种盘。本领域技术人员将能够使本文的描述适应不同尺寸的高速缓存。
存储设备50的每个集合都包括多个慢和/或快存取时间的大容量存储设备,在下文中假设是多个硬盘。图1示出了耦合到存储设备50的相应集合的高速缓存40。在有些配置中,存储设备50的集合包括一个或多个硬盘,或者可以具有不同性能特点的固态驱动器(SSD)。响应于I/O命令,作为例子,给定的高速缓存40可以在给定存储设备50的可寻址物理位置读或写数据。在图1所示的实施例中,高速缓存40能够在存储设备50上实行某些控制功能。或者,这些控制功能可以由诸如链接到高速缓存40的盘控制器(未示出)的硬件设备来实现。
每个存储模块36可操作成监视其状态,包括关联的高速缓存40的状态,并且把配置信息发送到存储子系统20的其它部件,例如,导致阻塞间隔的配置变化,或者限制接受对物理储存器集合的I/O请求的比率(rate)。
命令和数据从HBA 28到群集存储控制器34和到每个高速缓存40的路由可以经网络和/或交换机来执行。在本文中,作为例子,HBA 28可以通过SAN 26的至少一个交换机(未示出)耦合到存储模块36,其中交换机可以是具有数字交叉连接功能的任何已知的类型。附加地或者作为选择,HBA 28可以耦合到存储模块36。
在有些实施例中,具有连续逻辑地址的数据可以在模块36之间并且在每个模块中的存储设备内分布。或者,数据可以利用其它算法分配,例如,字节或块交织。一般而言,这增加带宽,例如,通过允许SAN中的卷或者网络附连的储存器中的文件同时从多于一个给定的存储设备50读取或写到其中。但是,这种技术需要各种存储设备之间的协调,并且在实践当中可能需要对存储设备的任何故障的复杂供给,以及用于处理错误检查信息的策略,例如,用于存储关于所分配数据的奇偶校验信息的技术。实际上,当逻辑单元分区以足够小的粒度分配时,与单个逻辑单元关联的数据可以跨全部存储设备50。
虽然为了说明的简化而没有明确示出这种硬件,但是群集存储控制器34可以适于结合某些硬件,诸如机架安装系统、中平面(midplane)和/或背平面(backplane),来实现。实际上,在一种实施例中的私有网络46可以使用背平面来实现。诸如以上提到的交换机、处理器、控制器、存储器设备等的附加硬件也可以结合到群集存储控制器34中及存储子系统20中的别的地方,同样如本领域技术人员将认识到的。另外,各种软件部件、操作系统、固件等可以集成到一个存储子系统20中。
存储设备50可以包括高容量硬盘驱动器和固态盘驱动器的组合。在有些实施例中,每个存储设备50可以包括逻辑存储设备。在实现小型计算机系统接口(SCSI)协议的存储系统中,每个逻辑存储设备可以被称为逻辑单元,并且当使其可以被给定的主计算机22访问时,被称为逻辑单元号(LUN)。虽然每个LUN可以作为单个逻辑单元来寻址,但是LUN可以包括高容量硬盘驱动器和/或固态盘驱动器的组合。
图2是根据本发明第一实施例的给定模块36的框图。在本文所述的实施例中,每个存储设备50被分成多个存储单元60(在本文中也称为块或数据块),其中每个存储单元包括具有固定尺寸的字节序列。虽然图2所示的例子示出存储在单个存储设备上的每个存储单元60,但是每个存储单元可以包括在多个存储设备50之间散布的多个存储空间“片”。
模块36包括模块处理器62和存储器64,该存储器64配置为存储具有条目68的存储池定义表66、具有条目72的分组池定义表70、具有条目76的卷定义表74以及具有条目80的存储映射表78。在操作中,存储控制器34中的管理器节点(未示出)可以配置为管理一个或多个存储池,并且管理一个或多个存储池当中每一个中的一个或多个数据卷。
存储控制器34上每个给定的存储池在存储定义给定存储池的元数据的存储池定义表66中具有对应的条目68。每个条目68包括存储池标识符82、池属性84、池逻辑尺寸86及池物理尺寸88。池逻辑尺寸86包括给定存储池可用的逻辑存储单元60的数目,并且池物理尺寸88包括给定存储池可用的物理存储单元60的数目。
属性84描述给定池中的数据如何存储。属性84的例子包括,但不限于,池类型指示器和存储类。池类型指示器可以指示给定的存储池是厚池还是薄池。通常,在给定存储池中创建的卷继承给定存储池的属性(例如,池类型指示器)。换句话说,在厚池中创建的卷是厚卷,而在薄池中创建的卷是薄卷。在存储设备50包括小容量快速硬盘、大容量较慢硬盘和固态驱动器(SSD)的组合的实施例中,存储类属性可以指示什么类型的存储设备50要用来向给定的池提供存储单元60。设备50的附加例子包括,但不限于,串行高级SCSI(SAS)驱动器和串行ATA高级技术附件(SATA)驱动器。
在操作中,通过执行诸如由位于加州Palo Alto的VMware公司生产的ESXTM或ESXiTM的管理程序(hypervisor),给定的主计算机22可以实现具有虚拟化存储的虚拟化环境。为了实现应用程序虚拟化环境,存储控制器34可以耦合到用于存储意识的虚拟存储API(vStorage APIs for Storage Awareness)(VASATM)提供者模块107,该模块107包括VASA处理器108和VASA存储器109。当执行管理程序时,VASA提供者模块107为给定的主计算机22提供一组API,为了管理功能,这组API使存储控制器34能够与管理程序交互。
如下文解释的,处理器62可以组合多个存储池,以创建分组池。换句话说,分组池具有多个“子池”。分组池可以配置为具有在其相应的子池之间移动存储单元60的能力。
存储控制器34上每个给定的分组池在存储关于构成给定分组池的存储池的信息的分组池定义表70中具有一个或多个对应的条目72。每个条目72包括分组池标识符90和存储池标识符92。例如,如果给定的分组池包括三个存储池,则分组池定义表可以存储用于给定的存储池的三个条目72,其中这三个条目中每个条目都存储用于给定分组池的存储池标识符以及各自不同的存储池标识符92。在备选实现中,给定的池标识符90可以具有一个或多个存储池标识符92。
存储控制器34上每个给定的数据卷在存储定义给定卷的元数据的卷定义表74中具有对应的条目76。每个条目76包括卷标识符94、卷尺寸96、卷分配的尺寸98和存储池标识符100。存储池标识符100识别在向给定卷分配物理和/或逻辑存储单元时可以使用的给定存储池。如前面所描述的,给定的存储池指示给定的卷是薄卷还是厚卷。
存储设备50上每个给定的存储单元60在指示给定存储单元的状态的存储映射表78中具有对应的条目80。每个条目80包括存储单元标识符102、卷标识符104和存储池标识符106。如果给定的存储单元没有被存储控制器34使用,则卷标识符104和存储池标识符106都为空。如果给定的存储单元目前指定给给定的存储池但是目前没有指定给给定的数据卷,则卷标识符104为空而存储池标识符106指示给定的存储池。如果给定的存储单元目前指定给给定的数据卷,则卷标识符104指示给定的数据卷并且存储池标识符106指示给定的存储池。
处理器62和108通常包括通用计算机,该通用计算机在软件中被编程,以执行本文所述的功能。软件可以例如经网络按电子形式下载到模块36和VASA模块107,或者它可以在非暂时性有形介质上提供,诸如光、磁或电子存储介质。或者,处理器的一些或全部功能可以由专用或可编程数字硬件部件或者利用硬件和软件元件的组合来执行。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
在薄池中创建厚数据卷
图3是根据本发明的实施例、示意性地说明利用来自薄池的存储单元60创建厚数据卷的方法的流程图。在初始化步骤110中,处理器62初始化存储设备50。为了初始化存储设备50,处理器62首先把存储设备配置为多个存储单元60,使得每个存储单元都具有存储粒度(即,固定的尺寸)。
在配置步骤112中,通过向薄池指定逻辑数目个存储单元60和物理数目个存储单元60,处理器62配置薄供给存储池(在本文中也称为薄池)。逻辑存储单元60的所指定逻辑数目包括薄池的逻辑尺寸,并且存储单元60的所指定物理数目包括薄池的物理尺寸。在薄供给存储池中,物理数目小于逻辑数目(即,薄池的物理尺寸小于薄池的逻辑尺寸)。
在配置薄池的时候,处理器62可以向表66添加给定的条目68,利用薄池的元数据组装给定的条目69,识别存储映射表78中与指定给薄池的存储单元关联的一个或多个条目80,并且更新所识别的一个或多个条目80中的存储池标识符,以指示一个或多个存储单元60被指定给了薄池。
在接收步骤114中,处理器62接收从薄池创建包括所请求数目个存储单元60的厚数据卷的请求,并且在接收到该请求后,在识别步骤116中,处理器识别该薄池中可用的可用数目个存储单元60。在图2所示的配置中,存储单元60的可用数目包括存储池定义表66中其存储池标识符82匹配该薄池的给定条目68中的池物理尺寸88。
在比较步骤118中,如果薄池具有创建所请求厚卷的足够数目个存储单元60,则在分配步骤120中,处理器62把所请求数目个存储单元60分配给卷并且该方法结束。返回步骤118,如果薄池不具有创建所请求厚卷的足够数目个存储单元60,则在失败步骤122中,处理器62使卷创建请求失败,并且该方法结束。
在有些实施例中,处理器62可以基于薄供给存储池中数据卷的数目以及每个数据卷中存储的相应的数据量来确定物理存储单元的可用数目。为了检测薄池是否具有足够数目个存储单元60,处理器62可以检查所请求的数目是否小于可用数目,并且,通过首先向卷定义表74添加条目76、然后在所添加的条目中更新指示所请求的厚卷的卷标识符94、把存储单元60的所请求数目存储到卷逻辑尺寸96和卷的分配尺寸98并且更新存储池标识符100以指示厚池,处理器可以分配所请求数目个存储单元60。
然后,处理器62可以识别存储映射表78中卷标识符104指示该薄池且卷标识符104为空的所请求数目个条目80(即,具有所识别的条目的存储单元被分配给薄池但是没有分配给任何数据卷)并且更新所识别的一个或多个条目(80)中的卷标识符104,以指示所请求的厚卷。最后,处理器62可以在存储池定义表66中定位用于厚池的条目68,并且在被定位的条目68中,把池逻辑尺寸86和池物理尺寸88减小存储单元60的所请求数目。
在有些实施例中,处理器62可以确定在薄池中可用的逻辑存储单元的数目,并且,在确定存储单元的所请求数目小于薄池中可用的逻辑存储单元的数目后,从薄池分配所请求数目个存储单元60。在操作中,处理器62可以基于薄供给存储池中数据卷的数目以及存储粒度来确定在薄供给存储池中可用的逻辑存储单元的数目。在更多实施例中,在检查逻辑存储单元的可用数目后,在确定所请求的数目大于或等于逻辑存储单元的可用数目后,处理器62可以使请求失败(类似于步骤122)。
端到端地存储卷
如果数据卷使用比固定尺寸块的尺寸(在本文中也称为粒度)小的空间,则把数据存储到诸如存储单元60的固定尺寸块的存储系统会浪费存储资源。例如,如果粒度是16GB并且存储系统存储十个4GB的卷,则存储系统通常向每个卷分配一个16GB的存储单元60,由此分配了160GB的存储空间来存储40GB的数据。类似地,如果存储系统分配两个16GB的存储单元60来存储18GB的卷,则存储系统向卷分配了14GB额外的存储空间。
图4A和4B是在端到端配置中存储多个数据卷130的存储单元60的框图,而图5是根据本发明的实施例、示意性地说明在端到端配置中存储数据卷的方法的流程图。图4A和4B中所示的例子示出三个存储单元60,每个单元都具有12GB的粒度,这三个存储单元60可以通过向标识号附加字母来区分,因此存储单元包括存储单元60A-60C。同样,图中所示的七个数据卷130可以通过向标识号附加字母来区分,因此数据卷包括数据卷130A-130G。
在初始化步骤140中,处理器62初始化存储设备50。为了初始化存储设备50,处理器62首先把存储设备50配置为多个存储单元60,使得每个存储单元都具有存储粒度(即,固定的尺寸)。
在接收步骤142中,处理器62接收创建多个卷130的请求,所请求的多个数据卷中每一个都具有所请求的最大物理尺寸。在确定步骤144中,响应于存储粒度,处理器62确定在端到端配置中存储这多个卷所需的存储单元60的最小数目,其中这个最小数目包括存储单元60的其总存储尺寸大于或等于所请求物理尺寸的总数的存储粒度数的最小倍数。
为了确定存储单元60的最小数目,处理器62可以把所请求的物理尺寸的总数向上舍入到存储粒度的下一个倍数。例如,如果存储粒度是12GB并且所请求的物理尺寸的总数是6GB,则存储单元60的最小数目是一(即,一个12GB粒度)。类似地,如果所请求的物理尺寸的总数是16GB,则存储单元60的最小数目是二(即,包括24GB存储空间的两个12GB粒度)。
在分配步骤146中,处理器62把所确定数目个存储单元60从给定的存储池分配给多个数据卷。最后,在存储步骤148中,在端到端配置中处理器62把多个卷存储到所分配的存储单元60,并且该方法结束。换句话说,当在端到端配置中存储多个卷时,处理器62把多个卷连续地存储到所分配的存储单元60,就好像这多个卷是单个卷一样。
在图4A所示的例子中,多个卷包括具有总的所请求物理尺寸12GB的卷130A、130B和130C,其中卷130A具有5GB的物理尺寸,卷130B具有2GB的物理尺寸,并且卷130C具有6GB的物理尺寸。由于12GB也是存储单元60的存储粒度,因此处理器62可以分配单个存储单元60A以在端到端配置中存储卷130A-130C(并且没有浪费的存储空间),如图4A中所示。
在把单个给定的存储单元60分配给单个给定的卷130的实施例中,存储映射表具有用于给定存储单元的单个给定条目80,并且给定条目当中的卷标识符指示给定的卷。但是,在处理器62把给定的存储单元60分配给多个卷130的实施例中,存储映射表78可以对这多个卷当中的每一个具有不同的条目,并且偏移量(未示出)可以包括在不同的条目中。
在图4A所示的例子中,处理器62可以向存储映射表78添加三个条目80。在第一个添加的条目中,卷标识符104可以引用卷130A、存储单元标识符102可以引用具有相应偏移量“0”的给定存储单元(即,用于卷130A的数据存储在给定存储单元的开始处)。在第二个添加的条目中,卷标识符104可以引用卷130B,存储单元标识符102可以引用具有相应偏移量“5”的给定的存储单元(即,用于卷130B的数据从给定的存储单元的第五千兆字节处开始存储)。最后,在第三个添加的条目中,卷标识符104可以引用卷130C,存储单元标识符102可以引用具有相应偏移量“7”的给定的存储单元(即,用于卷130C的数据从给定的存储单元的第七千兆字节处开始存储)。
在图4B所示的例子中,多个卷包括卷130D、130E、130F和130G,其中每个卷都具有5GB的物理尺寸,并且总的或者所请求的物理尺寸为20GB。由于存储单元60具有12GB的存储粒度,因此处理器62可以分配两个存储单元60B和60C以在端到端的配置中存储卷130D-130G,如图4B中所示。由于20GB的总的所请求物理尺寸小于两个存储粒度(24GB),因此图4B中所示的例子有4GB未用的空间132。此外,如图中所示,处理器62可以把卷130F配置为跨存储单元60A和60B。
虽然图5的流程图中给出的方法示出处理器62一次分配多个卷130,但是,利用以下的逻辑,随后在端到端配置中把附加卷130存储到给定存储单元60被认为在本发明的主旨与范围内:
BEGIN
接收存储具有所请求尺寸的附加卷的请求;
IF所请求的尺寸>=粒度
分配存储该附加卷所需的最小数目个存储单元;
把附加卷存储到所分配的存储单元中;
ELSEIF定位了之前分配的具有未用存储空间的存储单元
IF未用的空间>=所请求的尺寸
在端到端配置中把附加卷存储到所识别的存储单元中;
ELSE
向附加卷分配存储单元;
把附加卷存储到该存储单元;
ENDIF
ENDIF
END
定义和管理分组池
如上所述,给定的存储池可以或者是厚池或者是薄池。本发明的实施例提供了用于定义被称为分组池的第三种类型池的方法和系统。给定的分组池包括至少两个子池,包括薄池和/或厚池的任意组合。
图6是根据本发明的实施例、示意性地说明管理分组池中的存储单元60的方法的流程图。在初始化步骤150中,处理器62初始化存储设备50。为了初始化存储设备50,处理器62首先把存储设备配置为多个存储单元60,使得每个存储单元都具有存储粒度(即,固定的尺寸)。
在配置步骤152中,处理器62配置零个或多个薄供给存储池(在本文中也称为薄池)和零个或多个厚供给存储池(在本文中也称为厚池),以便配置多个存储池。在本发明的实施例中,处理器62可以配置薄和/或厚池的任意组合,只要配置至少两个存储池就可以。
为了配置给定的存储池,处理器62可以向给定的存储池指定初始逻辑数目个存储单元60和初始物理数目个存储单元60。存储单元60的所指定逻辑数目包括给定存储池的逻辑尺寸,而存储单元60的所指定物理数目包括给定存储池的物理尺寸。
在配置给定存储池的时候,处理器62可以向表66添加给定的条目68、利用给定的池的元数据组装给定的条目69、识别存储映射表78中与指定给薄池的存储单元关联的一个或多个条目80,并且更新所识别的一个或多个条目80中的存储池标识符,以指示一个或多个存储单元60被指定给了给定的池。
在步骤152中配置存储池后,处理器62可以向每个存储池分配相应数目个存储单元。在有些实施例中,如下文中解释的,用于配置为厚池的给定存储池的存储单元60的相应数目可以是零。
在定义步骤154中,处理器62定义包括在步骤152中配置的一个或多个存储池的分组池。例如,处理器62可以定义包括一个薄池和两个厚池的分组存储池。为了定义包括一个薄池和两个厚池的分组存储池,处理器62可以首先向分组池定义70添加三个条目72。然后,处理器62可以更新第一个添加的条目72,使得分组池标识符90指示所定义的分组池并且存储池标识符92指示要包括在该分组池中的厚池,更新第二个添加的条目72,使得分组池标识符90指示所定义的分组池并且存储池标识符92指示要包括在该分组池中的第一个薄池,并且更新第三个添加的条目72,使得分组池标识符90指示所定义的分组池并且存储池标识符92指示要包括在该分组池中的第二个薄池。
在第一比较步骤156中,如果处理器62接收到向分组池添加数据卷的请求,该请求包括一个或多个卷属性,则在识别步骤158中,处理器比较这一个或多个卷属性与分组池中给定的存储池的一个或多个池属性当中的每一个,并且响应于该比较而识别给定的存储池。换句话说,处理器62识别其相应池属性最类似于所请求卷属性的给定存储池,以便识别分组池中最佳匹配的存储池。
为了识别最佳匹配的存储池,请求可以包括所请求的卷的一个或多个属性,并且处理器62可以利用接收到的一个或多个卷属性计算卷得分,利用相应存储池的一个或多个池属性为分组池中每个相应的存储池计算相应的池得分,并且识别其相应池得分最接近卷得分的给定池。
卷属性的例子包括,但不限于:
·卷类型,指示所请求的卷是否包括(a)具有第一物理尺寸(即,物理存储单元60的数目)和第二逻辑尺寸(即,逻辑存储单元60的数目)的薄卷,其中第一数目小于第二数目),(b)具有第三物理尺寸和第四逻辑尺寸的薄卷,其中第三数目等于第四数目,及(c)具有第五物理尺寸和第六逻辑尺寸的薄卷,其中第五数目等于第六数目。
·用于卷的存储类,指示用于卷的优选存储设备类型。存储类的例子包括,但不限于盘驱动器、固态驱动器(SSD)、串行高级SCSI(SAS)驱动器和串行ATA高级技术附件(SATA)驱动器。例如,当定义给定的数据卷时,系统管理员可以在请求中指示优选的存储类。
·存储卷的虚拟机的身份。如上所述,如果处理器62执行管理程序来实现虚拟化存储,则给定池属性84可以指示与给定的数据卷(即,给定的SLU)关联的给定虚拟机的身份,并且在处理器从给定的虚拟机接收请求的情况下,处理器可以向存储用于虚拟机的现有卷的第一存储池指定更高的得分并且向没有存储用于虚拟机的任何卷的第二存储池指定较低的得分。
·卷尺寸。所请求的卷的尺寸可以指示用于所请求的卷的存储单元60的所请求数目。在操作中,根据所请求数目个存储单元60如何“适配”每个存储池,处理器62可以指定较高的得分。通过给实体的尺寸打分,处理器62可以为所请求的数据卷定位“最佳适配”。
池类型的例子包括,但不限于:
·指示给定的存储池是厚池还是薄池的池类型。
·指示在给定池中用来存储存储单元的存储设备类型的池存储类。池存储类的例子包括盘驱动器、SSD、SAS驱动器和SATA驱动器。
·虚拟机的身份。如上所述,如果处理器62执行管理程序来实现虚拟化存储,则给定池属性84可以指示与给定的存储池关联的给定虚拟机的身份。如上所述,在处理器从给定的虚拟机接收到卷创建请求后,处理器62可以向存储用于虚拟机的现有卷的第一存储池指定更高的得分并且向没有存储用于该给定虚拟机的任何卷的第二存储池指定较低的得分。
·可用空间。给定池的可用空间可以指示可用(即,没有分配给任何数据卷)的存储单元60的数目。如上所述,在接收到创建具有所请求尺寸的数据卷的请求后,根据所请求数目个存储单元60如何“适配”每个存储池,处理器62可以指定较高的得分。
在第二比较步骤160中,如果处理器62检测到所识别的“最佳匹配”存储池具有所请求数目个存储单元60可用,则在第一分配步骤162中,处理器把所识别的存储池中所请求数目个存储单元60分配给所请求的卷。但是,如果存储单元60的所请求数目大于所识别的池中可用的存储单元的数目,则在第二分配步骤164中,处理器62计算包括从存储单元的所请求数目中减去存储单元的可用数目的数目,从分组池中的另一个存储池传送计算出的数目个存储单元60,并且在执行传送后,把所请求数目个存储单元分配给所请求的卷。
为了确定需要传送多少存储单元60,处理器62可以计算包括从存储单元的所请求数目中减去所识别的池中存储单元的可用数目的数目。在计算出这个数目之后,处理器62就可以在分组池中(即,从分组池中另一个存储池)把计算出的数目个存储单元60传送到所识别的存储池。
在有些实施例中,所识别的池包括第一给定存储池,并且,通过识别分组池中具有计算出的数目个存储单元可用的第二给定存储池并且把计算出的数目个存储单元从第二给定存储池传送到第一给定存储池,处理器62可以传送计算出的数目个存储单元。例如,在步骤154中,处理器62可以定义具有包括一个厚池的第一给定存储池和包括一个薄池的第二给定存储池的分组池,并且把所有逻辑和物理存储单元60都分配给薄池。换句话说,最初没有逻辑和/或物理区域指定给厚池。
在这个例子中,在接收到在分组池中创建具有所请求数目个存储单元60的厚卷的请求后,处理器62可以把所请求数目个存储单元(即,物理的和逻辑的)从薄池传送到厚池,并且把传送的存储单元60分配给所请求的卷。在从薄池向厚池传送所请求数目个存储单元60后,处理器62可以把薄池的存储单元的逻辑数目(即,逻辑尺寸)和存储单元的物理数目(即,物理尺寸)减小所请求的数目。
因此,在这个例子中,厚池总是100%被利用,因为厚池中的所有逻辑和物理存储单元都被指定给了一个或多个卷。
在第三比较步骤166中,如果在实现这个例子的配置中处理器62接收到从分组池的厚池删除厚卷的请求,则在删除该厚卷后,在传送步骤168中处理器把厚卷的存储单元60传送回分组池的薄池,把薄池的存储单元的逻辑数目和存储单元的物理数目增加所请求的数目,并且该方法继续到步骤156。
返回步骤166,如果处理器62没有接收到从分组池的厚池删除厚卷的请求,则该方法继续到步骤156。返回步骤156,如果处理器62没有接收到向分组池添加数据卷的请求,则该方法继续到步骤166。
在有些实施例中,图6所示流程图中的一些或全部步骤可以由VASA处理器107执行(即,代替如上所述的模块处理器62)。
如上所述,当实现存储虚拟化时,处理器62可以为在处理器上执行的每个虚拟机实例创建“元”卷。在本发明的实施例中,处理器62可以为每个虚拟机实例创建包括单个厚池和两个薄池的分组池。在操作中,分组池可以允许自由(物理)存储单元60在单个原子操作中在分组池中的任意两个池之间移动,从而很容易使存储单元60的给定集合能够用于薄或厚卷,其中所述单个原子操作使得存储自动化能够实时移动资源。
存储自动化使得存储系统能够把耗时或重复的任务封装到最佳实践策略中,这种策略可以按命令启动或者经事件触发,需要很少或者不需要人的干预。存储自动化可以包括(a)自动化的供给,(b)按需的容量,(c)主机透明的数据移动,(d)热点消除,(e)透明的数据迁移,(f)信息生命周期管理,及(g)公用存储(utilitystorage)。实现存储自动化的存储阵列所面临的问题当中有并发的映射请求以及维持一致的映射。
在操作中,厚池和第一个薄池可以用来存储数据卷。第一薄池中的薄卷的逻辑尺寸可以利用标准业务和最佳实践来计算。第二个薄池可以用作存储所有元卷(即,不代表客人操作系统盘镜像或快照的任何卷)的元池。给定具体的管理程序技术,可以确定一个或多个标准尺寸(例如,保持配置信息的元卷的尺寸,平均存储器尺寸等)的元卷。利用这些标准尺寸,可以定义不仅基于每个容器要支持的虚拟机的数目来确定元池的正确尺寸而且更重要地是可以确定卷的正确逻辑尺寸以便正确规划正确的物理和逻辑尺寸的算法。当存储阵列具有大卷粒度(例如,大于10GB)并且管理程序具有许多其尺寸至少比该粒度小50%的元卷时,这是极其重要的。如果没有为元卷适当规划空间分配的能力,则在物理资源被耗尽之前池就会很快用光逻辑资源。
在有些实施例中,可以使用算法来基于虚拟机的数目以及它们的平均存储器尺寸确定元池的正确尺寸,由此使得存储系统能够预先创建多个元卷。当一次创建多个小的卷时,本发明的实施例可以使得存储系统能够更空间高效并且把多个元卷一起打包到之前如果单独创建单个卷的话会被单个卷使用的单个存储粒度中。
此外,处理器62可以报告存储空间使用情况,作为分配给DATA卷的存储单元60的数目,并且依据所分配/支持的VM,例如:207/800VM分配
由此使得存储管理员能够更有效地执行容量规划。
在操作中,处理器62可以执行软件应用,该软件应用请系统管理员经系统控制台(未示出)输入要经管理程序执行的虚拟机(VM)实例的期望数目以及用于这些实例的平均存储器和盘尺寸。此外,当实现薄供给存储时,管理员的输入可以指示它应当物理分配的百分比以及过度供给的目标量。
在从系统管理员接收到输入后,处理器62可以创建其尺寸可以利用下式确定的厚池M:
(NumVMs)*(TotalStorageSize)*(100-ThinStorage/100) (1)
其中NumVMs包括所请求的VM的数目,TotalStorageSize包括可用存储的数量,而ThinStorage包括TotalStorageSize的百分比。然后,处理器62可以创建其物理尺寸利用下式计算的薄池N:
PhysicalSize=(NumVMs)*(TotalStorageSize)*(100-ThinStorage/100) (2)
并且其逻辑尺寸利用下式计算:
(ThickSize)*(Overprovision) (3)
其中ThickSize包括薄池中厚卷的尺寸并且Overprovision包括指示过度供给量的百分比(即,>100%)。
然后,处理器62可以创建其尺寸可以通过管理程序的元卷设置确定的薄元池O。假设每个VM具有尺寸为X的卷A和尺寸为Y的卷B,以下公式可以用来计算物理和逻辑尺寸:
PhysicalSize=(NumVols)*(X+Y+...) (4)
LogicalSize=(NumVols)*(granularity/Y+granularity/Y+...) (5)
其中NumVols包括薄池中所请求数据卷的数目并且granularity包括存储阵列的存储粒度。
然后,处理器62可以利用以下函数调用来创建分组池pool_name:
grouped_pool_creategp=pool_name thick=M thin=N meta=0 (6)
最后一步是让处理器62预先创建元卷。要创建的元卷的数目可以作为总的VM的百分比来确定,或者是固定的数目(例如,10个),或者可以通过使用存储粒度的倍数来确定,以计算最小化系统中任何剩余存储空间的数目。这个计算出的数目n对每个元卷可以不同。给定n和尺寸X,处理器62可以执行以下函数:
create_multiple_volume size=X vol1=A1,A2,A3,A4,....,An-1,An (7)
最后一步是让处理器62预先创建元卷。要创建的元卷的数目可以作为总的VM的百分比来确定,或者是固定的数目(例如,10个),或者可以通过使用存储粒度的倍数来确定,以计算最小化系统中任何剩余存储空间的数目。这个计算出的数目n对每个元卷可以不同。给定n和尺寸X,处理器62可以执行以下函数:
create_multiple_volume size=X,Y,X,Y,X,Y,X,Y,X,Y,X,Y,...
vol1=A1,B1,A2,B2,A3,B3,A4,B4,....,An-1,Bn-1,An,Bn
在实现存储自动化的实施例中,存储自动化实体可以执行以下操作:
·维持空闲元卷的池,然后在接收到创建每个元卷的请求后指定给VM。当池几乎被耗尽时,存储自动化实体可以如上所述地创建新的元卷集合。
·在接收到创建薄或厚卷的请求后,存储自动化实体在按所请求的卷的类型确定的薄或厚池中创建所请求的卷。
·在存储系统配置为使得能够在薄和厚卷之间共享物理存储的实施例中,存储自动化实体最初可以把所有物理存储都指定给薄池。在接收到创建厚卷的每个命令时,存储自动化实体可以首先执行诸如以下的命令
grouped_pool_move_capacitygp=pool_name source=N target=M size=X (8)
以便把存储单元60从薄池移动到厚池,然后利用移动后的存储单元创建厚卷。在分配确保厚卷可以成功创建所需的实际空间后,空间可以移动到厚池。
·为了简化空间报告,当管理程序查询空间时,存储自动化实体可以只报告薄和厚池的组合状态。此外,存储自动化实体可以报告元池,但是实体可以从不报告元池的大规模过度供给,而是报告元池的物理尺寸作为元池的物理和逻辑尺寸。
·在接收到创建存储自动化实体识别为元卷的卷的命令后,实体可以忽略所请求的池并且总是在元卷中放置这些卷。响应可以指示卷是以所请求的存储类型创建的,并且,如果被查询,则存储自动化实体可以继续在卷被请求时而不是在卷被真正创建时报告卷被创建。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
将认识到,以上所述的实施例是作为例子阐述的,并且本发明不限于在上文中特别示出和描述的实施例。更恰当地说,本发明的范围既包括上文所述的各种特征的组合和子组合,也包括在阅读以上描述后本领域技术人员可以想到并且没有在现有技术中公开的这些特征的变体和修改。