专利名称:一种存储系统自动精简配置的方法
技术领域:
本发明涉及服务器存储系统,具体地说是一种存储系统自动精简配置的方法。
背景技术:
如图I所示,简单的说,实际的物理存储设备可能并没有这么多,而让操作系统认为有这么大的存储空间。因此,自动精简配置必须能够支持动态扩容,在实际的物理存储设备设备空间占满前,使用自动精简配置的动态扩容方法扩充实际的存储空间,才能保证用户系统的正常使用。否则,操作系统因为其并不知实际物理容量情况,而使用并不存在的存储空间,将造成不可估量的严重问题。目前自动精简配置在EMC、IBM、HDS, HP 3PAR等国外存储厂商的存储系统中已经广泛运用,但是国内厂商在该领域还是稍显薄弱。 HP 3PAR的自动精简配置总体来说有很多优点,例如其单位存储单元为16KB,这是一种非常精细的颗粒度很高的自动精简配置,相比一些更加粗糙的实现方式,3PAR的自动精简配置容量节约达到最大化,能够有更明显的性能效果,并且其自动精简配置是完全自动化的自动精简配置,在传统的未使用自动精简配置的存储环境中,通常会给一些应用程序配置大量冗余容量(通常是实际需要的3倍或更多)的原因,即是为了避免手动重复配置行为所带来的复杂性和中断。如果自动精简配置仍然离不开手动设定的,就仍然会保留大量的原有的复杂性。但是,HP 3PAR的自精简实现上,尤其在回收上,其独特的ASIC芯片协助处理。EMC与IBM的自精简实现特征,在分配和预警等方面与两家公司软件技术能力出众不无关系,在对POOL和LUN (或者叫Volume)的处理上,都是基于虚拟化技术,在读写性能均衡上有独到之处,但是在空间回收方面,都存在比较大的难题,实现也都是在其他附加软件应用上进行实现,而不是提供通用的回收机制。HDS的动态预配置不是完全自动的。仍然需要手动去创建阵列组以及LDEV,并且将其分配给HDP池。在完全自动化的实现方式中,存储系统能够通过合适的RAID保护级别或者性能服务水平自动的创建阵列组或者HDP池卷,并且能实时的把这些卷加入HDP池中,而且整个过程完全不受人为因素的干扰。同时,HDS的动态预配置卷(HDP)以42MB为存储单元。相比3PAR提供16KB的单位存储池,这个大小非常粗糙。另外一个方面,大的存储单元分配容量同样意味着需要更少的元数据来描述一个虚拟卷,这时,有助于自动精简配置表现出良好的性能。但是这种粗略的自动精简配置可能会在实际操作中带来一定的威胁,因为自动精简配置分配存储单元的时候不会考虑这部分存储单元的空间是已经格式化的还是初始状态的,因此当应用需要格式化一些已分配出去的存储空间时,过大的存储单元会导致潜在的运行风险。如果这些未格式化的初始状态的存储空间遍布整个卷,他们将消耗更多的存储单元内的空间。这些国外厂商中,3PAR的最大区别在于,3PAR的自动精简配置完全构建于底层架构之上,而不是作为一项附加的软件功能提供给存储系统。因而更加透明、也更加自动化。而其他的厂商,比如NetApp、HDS和HP,自动精简配置的方法大都是从RAID组当中创建存储资源池,用户跟以前一样分配LUNs和卷,但实际上系统只是在欺骗硬件。当实际磁盘使用增长,存储管理员必须调整他们卷的分配,这种自动精简配置可能会导致手动操作多一些,元数据处理更加繁杂。面对国外厂商的技术垄断以及封锁,本发明提供一种自动精简配置系统架构,该架构不像HP 3PAR那样采用专属芯片协助处理,采用虚拟化技术去实现,采用双B+树进行元数据管理、修改存储协议提供动态容量回收功能,并通过修改利用SSD的协议,在操作系统层面提供预警机制,实现自动化自动精简配置,不但具有高性能,并且具有回收功能,存储单元粒度可根据实际应用调控。
发明内容
本发明的目的是提供一种存储系统自动精简配置的方法。
本发明的目的是按以下方式实现的,该系统包括5个功能模块,它们分别为池组织模块I);精简分配模块2);精简回收模块3);动态扩容模块4);预警模块5),各功能模块说明如下
1)池组织模块
池组织就是对每一个分配的存储单元block元数据的记录和管理,本系统中,采取逻辑上管理两个设备数据设备和元数据设备;
在池组织模块中,元数据的管理是比较复杂的,因为自动精简配置需要管理数据设备上每一个数据块,而且还要有结构来描述存储池和精简卷等,所以需要大量的元数据来管理这些内容,因此,单独分配一个设备来存储元数据的信息,这个设备称为元数据设备,元数据设备用以存储数据设备中存储单元的分配信息以及自精简存储池操作产生的元数据信息,而数据设备,则是按照存储单元粒度进行切割的实际存储设备,该设备中无元数据信息;
由此可见,池组织模块元数据的管理需要管理两个设备,元数据设备和数据设备,因此,需要针对这两个设备分别管理,在这里就需要一套空间映射space-map的管理机制来记录每个存储单元的映射情况,辅助元数据的管理,同时,这套机制不光可以辅助实现元数据的管理,还能够充当新存储单元的分配器,存储单元的粒度也是在池组织模块中定义的;
元数据管理的空间映射的管理机制包含两种实现方式
管理实际设备——数据设备的实现方式;管理元数据空间——元数据设备的实现方式;在池组织模块中,元数据管理包含这两种实现方式,元数据的管理需要这两种实现方式共同作用,从而实现池组织元数据全面的管理;
2)精简分配模块
在精简分配模块中,系统使用写时分配技术,物理磁盘容量只有在应用程序写真实数据到逻辑卷时才进行分配,简单理解就是只有在有写请求的时候,才会按需从空闲的资源池中分配新的块给该请求;在精简分配模块中,当有写请求时,针对该请求所对应的存储单元首先,要查找元数据中保存的元数据信息,这里分为两种请况
a)找到,说明该block存储单元已完成映射,因此直接将其映射到池设备;b)未找到,说明该block未完成映射,则需要对该请求进行延迟处理,随后在精简分配主线程中完成该请求的操作;
针对未找到的情况,还需后续处理该写请求,主要是分配新的存储单,完成该存储单元的映射,并能在下一次的处理中,因为其已完成映射,所以就能完成这个写请求的操作;
3)精简回收模块
文件系统层获悉空间释放情况发通知给底层存储系统,底层存储接收释放通知,丢弃相应的存储单元;
精简回收包括两个层面应用程序所在的文件系统层;实际数据所在的存储系统层,而这其中一个重要的问题是文件系统与存储系统的通信机制问题,文件系统不会有精简的“意识”,当一份空间不再被使用时,没有现成的机制去通报这些情况,而底层的存储系统层也不会主动回收空间,除非你“告诉”它,因此就需要设计一套文件系统与存储系统的通信机制;
针对通信机制的问题,要设计文件系统与底层块驱动,通过支持discard来实现文件系统与存储系统的通信,目前,discard支持是为优化Iinux内核对SSD的支持,而在ext4和xfs文件系统是添加的一套机制;
discard是Iinux的术语,是为通知存储设备这些扇区不再存储有效数据,其本质就是文件系统通过discard告诉底层的SSD盘哪些扇区可以被删除,使用类似的这种通信机制去修改SCSI协议,能更好的支持自动精简配置的精简回收功能,并且不需要采取第三方工亘.
.,N 9
因此,设计类似discard支持的通信机制,在精简回收模块,当文件系统删除某个文件后,通过discard通知底层存储设备该文件对应的一块区域不再存储有效数据,在底层进行回收;
4)动态扩容模块
实现存储池pool容量的扩充;动态扩容主要逻辑
a)根据上层传入的扩容参数或扩容完的映射表信息,计算扩容完的存储单元的数量;
b)使用空间映射机制完成扩容的实现,即实现存储池,也就是池组织模块I)中数据设备的扩容;
c)计算底层存储池需要扩容的存储单元的数量;
循环逐次处理每个存储单元的初始化信息,这里主要是在数据设备元数据中中分配新的block记录数据块映射的扩容信息;然后保存扩容的信息;
扩容循环结束后,修改数据设备的容量大小;
提交池的元数据刷新至磁盘;
5)空间预警模块
底层或内核态的检测预警信息,有则通知用户层或用户态,用户层或用户态的监听预
S I R ,
自动精简配置空间预警模块主要实现当空间容量已经达到预警阀值,由底层或内核态 向用户层或用户态报警;
空间预警模块要分为两部分,分别为内核态和用户态,需要实现内核态和用户态的通信;空间预警模块主要逻辑为1)在内核态,检测空间容量是否达到预警阀值;
2)当达到预警阀值,向用户态发送预警信息;
3)用户态监测预警信息,接收预警信息,通知管理员;
但是如何将内核态的信息,捕捉后,通知用户态,是空间预警模块的最基本技术点。自动精简配置技术扩展了存储管理功能,虽然实际分配的物理容量小,但可以为操作系统动态提供超大容量的虚拟存储空间。随着应用写入的数据越来越多,实际存储空间也可以及时扩展,而无需手动扩展。换句话说,自动精简配置提供的是“运行时空间”,可以显著减少已分配但是未使用的存储空间。本发明的有益效果是采用该架构不需像HP 3PAR那样采用专属芯片协助处理分配与回收,采用虚拟化技术去实现,采用双B+树进行元数据管理、修改存储协议提供动态容量回收功能,并通过修改利用SSD的协议,在操作系统层面提供预警机制,实现自动化自 动精简配置,不但具有高性能,并且具有回收功能,存储单元粒度可根据实际应用调控。自动精简配置存储方案能够给操作系统提供大容量的虚拟驱动器。操作系统在分配磁盘空间时认为有这么大的磁盘空间,因此随着企业数据量的增加,企业可以考虑情况分步增加存储设备,不需要对操作系统进行调整。这就相当于是实现了存储设备的热插拔功能,可以提高磁盘设备的存储效率和灵活性。
图I是自动精简配置示意 图2是架构主要模块示意 图3是系统架构总体流程 图4是空间映射信息区分处理;
图5是discard通信机制不意 图6是普通逻辑卷扩容与本发明的扩容流程对比;
图7是空间预警模块主要逻辑示意图。
具体实施例方式参照说明书附图对本发明的方法作以下详细地说明。本发明主要的需解决的技术包括
1)虚拟地址映射
虚拟地址空间对应用主机的映射机制,从而在不中断数据访问情况下,动态提升存储系统使用空间;
2)容量再回收功能
自动精简配置能够动态回收已分配的空间,但是如何回收已分配出去的物理空间,并将空间重新分配再使用是自动精简配置的难题;
3)虚拟存储空间管理
动态扩展的虚拟存储池需要保持存储访问性能的高效,因此需要研究性能优化的数据分布算法、轻量级的数据迁移算法和高效的数据平衡算法,最大限度地降低存储池的扩展并行访问造成的影响,降低数据移动的次数,实现系统访问的高度并行;4)空间分配的动态报警机制
需综合利用多种因素,包括应用程序的运行情况、存储空间的消耗情况、存储系统的组织形式及初始化时间、文件系统格式化时所消耗的代价等,自适应地改变自动精简配置的报警机制,避免固定分配报警机制或者分配限制机制所面临的灵活性和安全性不足的问题。该架构完全基于软件实现自动精简配置,不需要借助特殊的专属芯片,并支持动态回收和存储单元粒度动态可调,并提供空间预警。该架构主要由5个功能模块,如图所示,它们分别为池组织模块、精简分配模块、精简回收模块、动态扩容模块和预警模块组成。从该架构中可以看出,只有扩容模块、精简分配模块与精简回收模块直接可以与 用户进行交互,用户可以发起与这3个模块相关的指令,进行相应的自精简控制,而对于预警模块,用户只有被动接收容量是否达到预警,可以查询,但是不可控制该模块的工作。对于池组织模块,属于该架构核心模块,对用户透明。如图3所示,对于来自用户的请求,该架构首先判断该请求是否涉及回收,如果涉及回收,则查询池组织模块,调用精简回收模块的处理流程,回收容量并更新池组织的元数据;如果该请求不涉及回收,为正常的读写请求,则区分读写,如是读请求,则通过精简分配模块查询在池组织中的具体存储单元,进行处理,如果是写请求,则会判断是否超出预警模块的设置,如果超出,预警模块则会直接向用户发出告警,如果不超出预警阀值,则提交精简分配处理,精简分配模块则从池组织模块中分配具体的存储单元进行处理。各功能模块说明如下
I)池组织模块
池组织就是对每一个分配的存储单元(block)元数据的记录和管理。本架构中,采取逻辑上管理两个设备数据设备和元数据设备;
在池组织模块中,元数据的管理是比较复杂的,因为自动精简配置需要管理数据设备上每一个数据块,而且还要有结构来描述存储池和精简卷等,所以需要大量的元数据来管理这些内容。因此,本发明单独分配一个设备来存储元数据的信息,这个设备称为元数据设备。元数据设备用以存储数据设备中存储单元的分配信息以及自精简存储池操作产生的元数据信息,而数据设备,则是按照存储单元粒度进行切割的实际存储设备,该设备中无元数据信息;
由此可见,池组织模块元数据的管理需要管理两个设备(元数据设备和数据设备),因此需要针对这两个设备分别管理。在这里就需要一套空间映射(space-map)的管理机制来记录每个存储单元的映射情况,辅助元数据的管理。同时,这套机制不光可以辅助实现元数据的管理,还能够充当新存储单元的分配器。存储单元的粒度也是在池组织模块中定义的;
元数据管理的空间映射的管理机制包含两种实现方式
管理实际设备——数据设备的实现方式;管理元数据空间——元数据设备的实现方
式;
在池组织模块中,元数据管理包含这两种实现方式,元数据的管理需要这两种实现方式共同作用,从而实现池组织元数据全面的管理。图4简单说明在磁盘上的逻辑示意;2)精简分配模块
在精简分配模块中,本发明使用写时分配技术,物理磁盘容量只有在应用程序写真实数据到逻辑卷时才进行分配。简单理解就是只有在有写请求的时候,才会按需从空闲的资源池中分配新的块给该请求;
在精简分配模块中,当有写请求时,针对该请求所对应的存储单元
首先,要查找元数据中保存的元数据信息,这里分为两种请况
a)找到,说明该block(存储单元)已完成映射,因此直接将其映射到池设备;
b)未找到,说明该block未完成映射,则需要对该请求进行延迟处理,随后在精简分配主线程中完成该请求的操作; 针对未找到的情况,还需后续处理该写请求,主要是分配新的存储单,完成该存储单元的映射,并能在下一次的处理中,因为其已完成映射,所以就可以完成这个写请求的操作;
3)精简回收模块
文件系统层获悉空间释放情况发通知给底层存储系统。底层存储接收释放通知,丢弃相应的存储单元;
精简回收包括两个层面应用程序所在的文件系统层;实际数据所在的存储系统层。而这其中一个重要的问题是文件系统与存储系统的通信机制问题。文件系统不会有精简的“意识”,当一份空间不再被使用时,没有现成的机制去通报这些情况。而底层的存储系统层也不会主动回收空间,除非你“告诉”它。因此就需要设计一套文件系统与存储系统的通信机制;
针对通信机制的问题,本发明架构中,设计文件系统与底层块驱动通过支持discard来实现文件系统与存储系统的通信。目前,discard支持是为优化Iinux内核对SSD的支持,而在ext4和xfs文件系统添加的一套机制;
discard是Iinux的术语,是为通知存储设备这些扇区不再存储有效数据。其本质就是文件系统通过discard告诉底层的SSD盘哪些扇区可以被删除,使用类似的这种通信机制去修改SCSI协议,可以更好的支持自动精简配置的精简回收功能,并且不需要采取第三方工具;
因此,本发明设计类似discard支持的通信机制,在精简回收模块,当文件系统删除某个文件后,通过discard通知底层存储设备该文件对应的一块区域不再存储有效数据,可以在底层进行回收;
4)动态扩容模块
实现存储池(pool)容量的扩充;
动态扩容主要逻辑
a)根据上层传入的扩容参数(扩容完的映射表信息),计算扩容完的存储单元的数量;
b)使用空间映射机制完成扩容的实现,即实现存储池,也就是模块I中数据设备的扩
容;
c)计算底层存储池需要扩容的存储单元的数量;
循环逐次处理每个存储单元的初始化信息。这里主要是在数据设备元数据中中分配新的block记录数据块映射的扩容信息;然后保存扩容的信息;扩容循环结束后,修改数据设备的容量大小;
提交池的元数据刷新至磁盘;
图6是普通逻辑卷扩容示意图与本发明的扩容流程对比
5)空间预警模块
底层(内核态)检测预警信息,有则通知用户层(用户态)。用户层(用户态)监听预警信
息;
自动精简配置空间预警模块主要实现当空间容量已经达到预警阀值,由底层(内核态)向用户层(用户态)报警。 空间预警模块要分为两部分,分别为内核态和用户态,需要实现内核态和用户态的通信,空间预警模块主要逻辑为
1)在内核态,检测空间容量是否达到预警阀值;
2)当达到预警阀值,向用户态发送预警信息;
3)用户态监测预警信息,接收预警信息,通知管理员;
主要逻辑示意图如图7所示
空间预警模块的主要逻辑如上图所示,但是如何将内核态的信息,捕捉后,通知用户态,是空间预警模块的最基本技术点。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1. 一种存储系统自动精简配置的方法,其特征在于系统包括5个功能模块,它们分别为池组织模块I);精简分配模块2);精简回收模块3);动态扩容模块4);预警模块5),各功能模块说明如下 1)池组织模块 池组织就是对每一个分配的存储单元block元数据的记录和管理,本系统中,采取逻辑上管理两个设备数据设备和元数据设备; 在池组织模块中,元数据的管理是比较复杂的,因为自动精简配置需要管理数据设备上每一个数据块,而且还要有结构来描述存储池和精简卷等,所以需要大量的元数据来管理这些内容,因此,单独分配一个设备来存储元数据的信息,这个设备称为元数据设备,元数据设备用以存储数据设备中存储单元的分配信息以及自精简存储池操作产生的元数据信息,而数据设备,则是按照存储单元粒度进行切割的实际存储设备,该设备中无元数据信息; 由此可见,池组织模块元数据的管理需要管理两个设备,元数据设备和数据设备,因此,需要针对这两个设备分别管理,在这里就需要一套空间映射space-map的管理机制来记录每个存储单元的映射情况,辅助元数据的管理,同时,这套机制不光可以辅助实现元数据的管理,还能够充当新存储单元的分配器,存储单元的粒度也是在池组织模块中定义的; 元数据管理的空间映射的管理机制包含两种实现方式 管理实际设备——数据设备的实现方式;管理元数据空间——元数据设备的实现方式;在池组织模块中,元数据管理包含这两种实现方式,元数据的管理需要这两种实现方式共同作用,从而实现池组织元数据全面的管理; 2)精简分配模块 在精简分配模块中,系统使用写时分配技术,物理磁盘容量只有在应用程序写真实数据到逻辑卷时才进行分配,简单理解就是只有在有写请求的时候,才会按需从空闲的资源池中分配新的块给该请求;在精简分配模块中,当有写请求时,针对该请求所对应的存储单元首先,要查找元数据中保存的元数据信息,这里分为两种请况 a)找到,说明该block存储单元已完成映射,因此直接将其映射到池设备; b)未找到,说明该block未完成映射,则需要对该请求进行延迟处理,随后在精简分配主线程中完成该请求的操作; 针对未找到的情况,还需后续处理该写请求,主要是分配新的存储单,完成该存储单元的映射,并能在下一次的处理中,因为其已完成映射,所以就能完成这个写请求的操作; 3)精简回收模块 文件系统层获悉空间释放情况发通知给底层存储系统,底层存储接收释放通知,丢弃相应的存储单元; 精简回收包括两个层面应用程序所在的文件系统层;实际数据所在的存储系统层,而这其中一个重要的问题是文件系统与存储系统的通信机制问题,文件系统不会有精简的“意识”,当一份空间不再被使用时,没有现成的机制去通报这些情况,而底层的存储系统层也不会主动回收空间,除非你“告诉”它,因此就需要设计一套文件系统与存储系统的通信机制;针对通信机制的问题,要设计文件系统与底层块驱动,通过支持discard来实现文件系统与存储系统的通信,目前,discard支持是为优化Iinux内核对SSD的支持,而在ext4和xfs文件系统是添加的一套机制; discard是Iinux的术语,是为通知存储设备这些扇区不再存储有效数据,其本质就是文件系统通过discard告诉底层的SSD盘哪些扇区可以被删除,使用类似的这种通信机制去修改SCSI协议,能更好的支持自动精简配置的精简回收功能,并且不需要采取第三方工亘.N 9 因此,设计类似discard支持的通信机制,在精简回收模块,当文件系统删除某个文件后,通过discard通知底层存储设备该文件对应的一块区域不再存储有效数据,在底层进行回收; 4)动态扩容模块 实现存储池pool容量的扩充;动态扩容主要逻辑 a)根据上层传入的扩容参数或扩容完的映射表信息,计算扩容完的存储单元的数量; b)使用空间映射机制完成扩容的实现,即实现存储池,也就是池组织模块I)中数据设备的扩容; c)计算底层存储池需要扩容的存储单元的数量; 循环逐次处理每个存储单元的初始化信息,这里主要是在数据设备元数据中中分配新的block记录数据块映射的扩容信息;然后保存扩容的信息; 扩容循环结束后,修改数据设备的容量大小; 提交池的元数据刷新至磁盘; 5)空间预警模块 底层或内核态的检测预警信息,有则通知用户层或用户态,用户层或用户态的监听预θ I R >ι ι', 自动精简配置空间预警模块主要实现当空间容量已经达到预警阀值,由底层或内核态向用户层或用户态报警; 空间预警模块要分为两部分,分别为内核态和用户态,需要实现内核态和用户态的通信;空间预警模块主要逻辑为 1)在内核态,检测空间容量是否达到预警阀值; 2)当达到预警阀值,向用户态发送预警信息; 3)用户态监测预警信息,接收预警信息,通知管理员; 但是如何将内核态的信息,捕捉后,通知用户态,是空间预警模块的最基本技术点。
全文摘要
本发明提供一种存储系统自动精简配置的方法,自动精简配置通常用于存储系统中,旨在给操作系统提供大容量的虚拟驱动器。自动精简技术可以虚拟提供超过实际的容量空间给上层,即让操作系统认为可以使用的容量大于实际提供给它的实际容量。这主要是因为企业中的数据往往是在逐渐增加,而不是一开始就有这么多,采用自动精简配置可以提高存储容量的利用率。自动精简配置存储方案能够给操作系统提供大容量的虚拟驱动器。操作系统在分配磁盘空间时认为有这么大的磁盘空间,因此随着企业数据量的增加,企业可以考虑情况分步增加存储设备,不需要对操作系统进行调整。这就相当于是实现了存储设备的热插拔功能,可以提高磁盘设备的存储效率和灵活性。
文档编号G06F3/06GK102968279SQ20121045320
公开日2013年3月13日 申请日期2012年11月13日 优先权日2012年11月13日
发明者王恩东, 张宇, 文中领 申请人:浪潮电子信息产业股份有限公司