存储卷创建方法、装置、服务器及存储介质与流程

文档序号:16324618发布日期:2018-12-19 05:51阅读:231来源:国知局
存储卷创建方法、装置、服务器及存储介质与流程

本发明实施例涉及数据存储技术,尤其涉及一种存储卷创建方法、装置、服务器及存储介质。

背景技术

本地存储指将数据存放在本地磁盘、移动硬盘、u盘、光盘等存储设备设备上的存储方式,相比于网络存储,本地存储能够提供更高效的io性能,且维护简单、操作便捷。

在本地存储的应用场景中,为了提高存储的使用效率,通常使用存储池来分配存储资源。如图1所示,现有的存储池由至少一个物理存储介质组成,根据用户的操作从存储池中分配存储卷,以供用户进行数据存储。这种存储架构的缺点在于,物理存储介质发生损坏时,存储池难以确定发生损坏的地址,进而无法正常分配存储卷,导致一旦物理存储介质发生损坏,将会导致整个存储池不可用。

可见,现有的数据存储方法在物理存储介质发生故障时,无法正常运行,稳定性差。



技术实现要素:

本发明实施例提供一种存储卷创建方法、装置、服务器及存储介质,以在物理存储介质发生故障时,能够正常运行,保持稳定性。

第一方面,本发明实施例提供了一种存储卷创建方法,包括:

获取待创建存储卷的属性信息和用于创建所述待创建存储卷的联合存储池的信息;

在所述联合存储池的信息对应的联合存储池中,选取目标子存储池,所述联合存储池包括至少一个子存储池;

根据所述待创建存储卷的属性信息,在所述目标子存储池中通过其中的物理存储介质创建存储卷。

第二方面,本发明实施例还提供了一种存储卷创建装置,该装置包括:

获取模块,用于获取待创建存储卷的属性信息和用于创建所述待创建存储卷的联合存储池的信息;

选取模块,用于在所述联合存储池的信息对应的联合存储池中,选取目标子存储池,所述联合存储池包括至少一个子存储池;

创建模块,用于根据所述待创建存储卷的属性信息,在所述目标子存储池中通过其中的物理存储介质创建存储卷。

第三方面,本发明实施例还提供了一种服务器,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一实施例所述的存储卷创建方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的存储卷创建方法。

本发明实施例提供了一种新的poolfederation存储架构,该存储架构在多个子存储池的上层添加一层联合存储池层,通过将多个子存储池联结起来组成一个更大的存储池,从而实现多个子存储池之间的调度。在poolfederation存储架构的基础上,本发明实施例通过获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息,并在联合存储池的信息对应的联合存储池中,选取目标子存储池;根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷,从而在物理存储介质发生损坏后,只会导致其隶属的子存储池不可用,而其它子存储池依然可用,进而整个存储架构是可用的,不受部分物理存储介质损坏的影响,能够安全运行,有良好的稳定性和安全性,从而顺利为应用程序分配存储资源,保证应用程序的正常运行。

附图说明

图1是现有技术中存储架构的结构示意图;

图2a是本发明实施例一提供的一种存储卷创建方法的流程图;

图2b是本发明实施例一提供的一种poolfederation存储架构的结构示意图;

图3是本发明实施例二提供的一种存储卷创建方法的流程图;

图4是本发明实施例三提供的一种存储卷创建方法的流程图;

图5是本发明实施例四提供的一种存储卷创建方法的流程图;

图6是本发明实施例五提供的一种存储卷创建装置的结构示意图;

图7是本发明实施例六提供的一种服务器的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图2a是本发明实施例一提供的一种存储卷创建方法的流程图,本实施例可适用于在本地存储的场景中,通过一存储架构创建存储卷的情况,本地存储中大量使用直连附加存储(directattachedstorage,das)机构,它的维护简单,操作快捷,io效率高。本实施例中的存储架构是das存储架构的一种。该方法可以由存储卷创建装置来执行,该装置可以由硬件和/或软件构成,并集成在服务器中。如图2a所示,具体包括如下步骤:

s110、获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息。

待创建存储卷用于提供给应用程序进行数据存储。待创建存储卷的属性信息包括但不限于待创建存储卷的申请空间大小、申请读写带宽等,其中,读写带宽包括:每秒读写操作的次数(input/outputoperationspersecond,iops)、每秒传送位数(bitspersecond,bps)或者每个读写调度周期占用物理存储介质的带宽比例等,每个读写调度周期占用物理存储介质的带宽比例例如是0.5个物理存储介质的带宽。

本发明实施例通过存储池联合(poolfederation)存储架构创建存储卷。图2b是本发明实施例一提供的一种poolfederation存储架构的结构示意图。如图2b所示,poolfederation存储架构的最上层是联合存储池(federationpool)层,这一层是用户可见的,具体地,federationpool层通常以服务的形式暴露给用户。

federationpool层包括至少一个联合存储池。如图2b所示,bronze表示比较廉价的安全性较低的低速存储服务,silver表示兼具安全性和吞吐量且性价比较高的存储服务,gold表示高速存储服务,iron表示高速但仅提供临时计算的存储服务。联合存储池的不同性能取决与其包括的子存储池后端存储、文件系统类型,物理存储介质的类型、数量、存储空间大小等。

联合存储池的信息能够指向或者标识一个联合存储池,例如联合存储池的地址、联合存储池的名称、联合存储池的总空间大小、联合存储池下属的物理存储介质的类型等。在一示例中,采用联合存储池的名称bronze、silver、gold、iron作为联合存储池的信息。

存储卷创建装置可通过多种方式获取待创建存储卷的属性信息和前述联合存储池的信息。在一可选实施方式中,存储卷创建装置通过通信链路接收客户端发送的存储卷配置文件,例如yaml文件或者json文件。接着,从存储卷配置文件中解析待创建存储卷的属性信息和前述联合存储池的信息。在另一可选实施方式中,存储卷创建装置通过命令行、配置界面或者浏览器获取用户输入的待创建存储卷的属性信息和前述联合存储池的信息。值得说明的是,任何能够访问服务器并向服务器中的存储卷创建装置提供待创建存储卷的属性信息和前述联合存储池的信息的方法都属于本发明的保护范围内。

s120、在联合存储池的信息对应的联合存储池中,选取目标子存储池,联合存储池包括至少一个子存储池。

每个联合存储池包括至少一个子存储池。在图2b中,poolfederation存储架构的第二层是子存储池(sub-pool)层。子存储池层包括至少一个子存储池,每个子存储池隶属于一个联合存储池。例如bronze包括3个子存储池:bronze1、bronze2和bronze3,bronze1、bronze2和bronze3采用devicemapper作为存储后端;silver包括2个子存储池:silver1和silver2,silver1和silver2采用devicemapper作为存储后端;gold包括2个子存储池:gold1和gold2,gold1和gold2采用aufs作为存储后端;iron包括1个子存储池:iron1,iron1采用tmpfs作为存储后端。

在联合存储池中,可任意选取一子存储池作为目标存储池,或者选取满足预设条件的子存储池作为目标存储池,预设条件可以是与待创建存储卷的属性信息匹配的条件或者开发人员自定义的条件。

s130、根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

如图2b所示,poolfederation存储架构的第三层是物理存储介质(storage)层,也是存储的物理实体层。物理存储介质包括但不限于物理磁盘、固态硬盘(solidstatedrives,ssd)、硬盘驱动器(harddiskdrive,hdd)等。其中,物理磁盘可能做raid来提升存储的io性能和安全性;而ssd由于出众的io吞吐,可以用来做io密集型的存储介质,或者也可以使用内存(memory)来作为临时计算的存储服务,短时间使用后可以迅速回收。

每个子存储池中可添加至少一个物理存储介质,图2b中每个子存储池添加了一个物理存储介质。

在目标子存储池中的物理存储介质中划分出与待创建存储卷的属性信息匹配的一块区域,用作数据存储,从而实现存储卷的创建。在图2b示出的poolfederation存储架构中,最后一层是存储卷(volume)层,存储卷层包括创建出的至少一个存储卷。

本发明实施例提供了一种新的poolfederation存储架构,该存储架构在多个子存储池的上层添加一层联合存储池层,亦即通过将多个子存储池联结起来组成一个更大的存储池,从而实现多个子存储池之间的调度。在poolfederation存储架构的基础上,本发明实施例通过获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息,并在联合存储池的信息对应的联合存储池中,选取目标子存储池;根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷,从而在物理存储介质发生损坏后,只会导致其隶属的子存储池不可用,而其它子存储池依然可用,进而整个存储架构是可用的,不受部分物理存储介质损坏的影响,能够安全运行,有良好的稳定性和安全性,从而顺利为应用程序分配存储资源,保证应用程序的正常运行。

进一步地,本实施例提供的方法还达到了以下技术效果:通过获取联合存储池的信息,在联合存储池中选取目标子存储池,进而创建存储卷,从而实现了基于联合存储池的信息创建存储卷的方案,对于用户来说,只需要配置联合存储池的信息和属性信息,就可以自动选取目标子存储池并创建存储卷,不需要关注底层的存储细节,从而减少了用户的操作,且优化了存储的配置。

在一些实施例中,在根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷之后,还包括存储卷的分配过程。具体地,获取待创建存储卷所需的文件系统类型和挂载点;将存储卷格式化为文件系统类型对应的文件系统;将存储卷挂载至挂载点。

存储卷创建装置可通过多种方式获取待创建存储卷所需的文件系统类型和挂载点,具体方式与待创建存储卷的属性信息和前述联合存储池的信息的获取方式相同,此处不再赘述。其中,待创建存储卷所需的文件系统类型指的是需要将创建出的存储卷格式化为的文件系统类型,例如xfs、ext4等,挂载点包括应用程序存储数据的目录或者应用程序所在的容器。在将格式化后的存储卷挂载至挂载点后,应用程序就可以直接使用该存储卷进行数据存储。

本实施例提供的方法使得本地存储架构能够应用于容器环境下的极速动态分配,减轻了大量应用工程师和集群管理员的工作负担。

实施例二

本实施例对上述实施例进一步优化,将s120具体为获取联合存储池中至少一个子存储池的运行状态;选取处于正常运行状态的子存储池为目标子存储池。图3是本发明实施例二提供的一种存储卷创建方法的流程图,具体包括以下步骤:

s210、获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息。

s210与s110相同,此处不再赘述。

s220、获取联合存储池中至少一个子存储池的运行状态。

本实施例中,接收物理存储介质的驱动器上传的扫描结果,根据扫描结果获取物理存储介质的状态,并根据物理介质的状态确定其隶属的子存储池的运行状态。

s230、选取处于正常运行状态的子存储池为目标子存储池,其中,处于正常运行状态的子存储池中的物理存储介质处于可用状态。

如果一子存储池中的物理存储介质处于可用状态,该子存储池处于正常运行状态,可以创建存储卷,将该子存储池的状态标记置为ready;如果一子存储池中的物理存储介质处于正在运行状态,该子存储池处于中间状态,例如正在创建其它存储卷或者正在删除存储卷,将该子存储池的状态标记置为unready;如果一子存储池中的物理存储介质处于下线或者未激活阶段,该子存储池处于待机状态,将该子存储池的状态标记置为pending,如果一子存储池中的物理存储介质处于损坏状态、掉线状态或者盘符错误等,该子存储池处于错误、不可用状态,将该子存储池的状态标记置为error。

本实施例中,如果子存储池的状态标记置为error,通知研发人员维修其中的物理存储介质。修复成功之后,该子存储池的状态标记重新置为ready。

s240、根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

本实施例中,通过获取联合存储池中至少一个子存储池的运行状态;选取其中的物理存储介质处于可用状态的子存储池为目标子存储池,进而在目标子存储池中通过其中的物理存储介质创建存储卷,从而在物理存储介质损坏后,能够选取其它正常运行的子存储池进行存储卷的创建,有效保证存储系统的稳定性和安全性,进而顺利为应用程序分配存储资源,保证应用程序的正常运行。

实施例三

本实施例对上述实施例进行进一步优化,具体将步骤s120限定为通过运行状态和分数综合选取目标子存储池。图4是本发明实施例三提供的一种存储卷创建方法的流程图,具体包括以下步骤:

s310、获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息。

示例性地,存储卷创建装置通过通信链路接收客户端以http的形式发送的存储卷配置文件,例如yaml文件或者json文件。格式和参数如下所示:

name:volume1

poolname:bronze/silver/gold/iron

size:500mi

iobandwidth(iops):200

其中,name是待创建存储卷的名称,poolname是联合存储池的名称,size是申请空间大小,iobandwidth是申请读写带宽,这里以iops进行说明。

接着,存储卷创建装置从存储卷配置文件中解析待创建存储卷的名称、联合存储池的名称、申请空间大小和申请读写带宽。

s320、获取联合存储池中至少一个子存储池的运行状态。

存储卷创建装置根据poolname找到对应的联合存储池,并扫描联合存储池下的所有子存储池的运行状态,子存储池的运行状态获取方法详见实施例二,此处不再赘述。

s330、根据至少一个子存储池的运行状态,确定处于正常运行状态的子存储池,其中,处于正常运行状态的子存储池中的物理存储介质处于可用状态。

根据扫描到的子存储池运行状态的不同,包括以下几种情况:

(1)如果子存储池的运行状态是ready,则继续执行s340。

(2)如果子存储池的运行状态是unready,存储卷创建装置将其放入等待队列,并等待预设时间后再次获取其运行状态,如果其运行状态是ready,则按照(1)执行;如果其运行状态仍然是unready,则跳过该子存储池进行下一个子存储池的状态扫描,并返回警告(warning)信息提示用户;如果其运行状态是pending,则按照(3)执行;如果其运行状态是error,则按照(4)执行。

(3)如果子存储池的运行状态是pending,存储卷创建装置打印包含该子存储池配置信息的error错误消息,并跳过该子存储池进行下一个子存储池的状态扫描。

(4)如果子存储池的运行状态是error,存储卷创建装置打印包含底层物理存储介质错误信息的error错误消息,并跳过该子存储池进行下一个子存储池的状态扫描。

(5)如果最终没有处于ready运行状态的子存储池,存储卷创建装置直接返回错误并打印每种状态的子存储池数量。

从上面可以看出,ready、unready、pending、error四种状态覆盖了所有可能出现的情况,并且无论处于哪种状态,存储卷创建装置均有应对策略,不会导致存储系统不可用,有利于物理存储介质的故障恢复和容灾。

s340、根据待创建存储卷的属性信息以及处于正常运行状态的子存储池的属性信息,对处于正常运行状态的子存储池进行打分。

待创建存储卷的属性信息包括待创建存储卷的申请空间大小和/或申请读写带宽,子存储池的属性信息至少包括子存储池的总空间大小、总读写带宽、已用空间大小、已用读写带宽中的一种。

在一可选实施方式中,将申请空间大小与总空间大小的比值作为该子存储池的得分,或者,将申请读写带宽与总读写带宽的比值作为该子存储池的得分,或者,将申请空间大小与总空间大小的比值,与申请读写带宽与总读写带宽的比值进行加权求和,得到该子存储池的得分。

在另一可选实施方式中,将子存储池的总空间大小减去已用空间大小,得到该子存储池的剩余空间大小;将申请空间大小与剩余空间大小的比值作为该子存储池的得分,或者,将该子存储池的总读写带宽减去已用读写带宽,得到该子存储池的剩余读写带宽,将申请读写带宽与剩余读写带宽的比值作为该子存储池的得分。

在又一可选实施方式中,根据下述公式,将处于正常运行状态的子存储池的总空间大小total_sizei减去已用空间大小used_sizei,得到处于正常运行状态的子存储池的剩余空间大小;将处于正常运行状态的子存储池的总读写带宽,即total_io_bandwidthi减去已用读写带宽,即used_io_bandwidthi,得到处于正常运行状态的子存储池的剩余读写带宽;将申请空间大小request_size与剩余空间大小的比值,与申请读写带宽request_io_bandwidth与剩余读写带宽的比值进行加权求和,得到处于正常运行状态的子存储池的得分。

其中,i是子存储池的序号,weight_size是request_size与剩余空间大小的比值对应的权重,weight_io_bandwidth是request_io_bandwidth与剩余读写带宽的比值对应的权重。

s350、将分数满足预设要求的子存储池作为目标子存储池。

预设要求与分数的计算方法有关,一般来说,满足预设要求的子存储池与待创建存储卷的属性信息更匹配,例如,子存储池的总空间大小或者剩余空间大小大于待创建存储卷的申请控制大小,子存储池的总读写带宽或者剩余读写带宽大于待创建存储卷的申请读写带宽。

示例性地,在采用上述公式计算子存储池的分数时,将分数大于预设阈值的任一子存储池作为目标子存储池,或者将分数最高的子存储池作为目标子存储池。

s360、根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

存储卷创建装置调用相应的存储后端的函数集根据申请空间大小和读写带宽去创建和分配相应的存储卷,并且将存储卷格式化为需要的文件系统。如果分配成功,这个存储卷将会返回给用户使用,然后将这个已经分配的存储卷加入到系统缓存,以方便高效率查询该存储卷隶属于哪个子存储池和哪个联合存储池。同时,将这个存储卷的空间大小和读写带宽加入到该子存储池的的used_sizei和used_io_bandwidthi中,以便在下一次创建存储卷的过程中对子存储池进行打分。

本实施例中,通过根据待创建存储卷的属性信息以及处于正常运行状态的子存储池的属性信息,对处于正常运行状态的子存储池进行打分;将分数满足预设要求的子存储池作为目标子存储池,从而在物理存储介质损坏后,能够选取其它正常运行的子存储池中分数满足预设要求的子存储池进行存储卷的创建,从而在有效保证存储系统的稳定性和安全性的同时,也保证了整个federationpool存储架构中的存储资源使用不会倾斜。这样,在federationpool存储架构中存储卷分配均匀,提高存储资源的利用率,避免存储空间和io的浪费以及单个物理存储介质负载过大,提高io性能,最终实现数据分布的均衡性。

实施例四

本实施例对上述实施例进行进一步优化,具体地,在获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息之前,还包括federationpool存储架构的联合存储池层、子存储池层和物理存储介质层的创建过程。图5是本发明实施例四提供的一种存储卷创建方法的流程图,如图5所示,包括以下步骤:

s410、获取待创建的至少一个联合存储池的信息、各联合存储池中至少一个子存储池的信息以及各子存储池中的物理存储介质的信息。

联合存储池的信息包括联合存储池的名称以及其中的子存储池的名称。各联合存储池中至少一个子存储池的信息包括:子存储池的名称、子存储池中物理存储介质的组合方式、后端存储、文件系统类型和其中的物理存储介质的信息。各子存储池中的物理存储介质的信息包括物理存储介质的名称、地址、版本等信息。

存储卷创建装置可通过多种方式获取s410中的信息。在一可选实施方式中,存储卷创建装置通过通信链路接收客户端发送的http请求,并从http请求中解析存储架构配置文件,例如yaml文件或者json文件。接着,从存储卷配置文件中解析待创建的至少一个联合存储池的信息、各联合存储池中至少一个子存储池的信息以及各子存储池中的物理存储介质的信息。示例性地,存储架构配置文件中的格式、参数及注释如下所示:

在另一可选实施方式中,存储卷创建装置通过命令行、配置界面或者浏览器获取用户输入的上述信息。值得说明的是,任何能够访问服务器并向服务器中的存储卷创建装置提供至少一个联合存储池的信息、各联合存储池中至少一个子存储池的信息以及各子存储池中的物理存储介质的信息的方法都属于本发明实施例的保护范围内。

本实施例中,至少一个子存储池可以是异构的,即具有不同的存储后端、磁盘数量、文件系统类型、物理存储介质的组合方式等。异构的子存储池由不同的存储后端创建,例如devicemapper、aufs、tmpfs等。异构的存储后端可以提供不同的存储性能,以满足用户的不同需求。当然,并不限于此,至少一个子存储也可以是同构的,即具有相同的存储后端、磁盘数量、文件系统类型、存储类型等。可以认为,各个子存储池是独立存在的,互不干扰。

s420、根据至少一个联合存储池的信息,创建至少一个联合存储池。

s430、根据各联合存储池中至少一个子存储池的信息,在对应联合存储池中创建至少一个子存储池。

s440、根据各子存储池对应的物理存储介质的信息,将对应的物理存储介质添加到对应的子存储池。

示例性地,存储卷创建装置解析存储架构配置文件的内容,将其翻译为golang程序的对象数组,程序按照每个对象的参数去调用对应的存储后端函数,根据“name”生成对应联合存储池和子存储池的名称,根据“driver”去调用不同的存储后端函数集,根据“devices”去使用不同的物理存储介质作为底层存储,根据“type”决定底层存储的组合方式,根据“filesystem”决定这个子存储池创建存储卷的文件系统类型。

s450、获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息。

s460、在联合存储池的信息对应的联合存储池中,选取目标子存储池,联合存储池包括至少一个子存储池。

s470、根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

本实施例中,通过获取待创建的至少一个联合存储池的信息、各联合存储池中至少一个子存储池的信息以及各子存储池中的物理存储介质的信息,并根据获取的信息自动创建出整个存储架构,从而简化了存储架构的创建过程,节省人力资源,提高创建的效率。而且,在多个子存储池异构、甚至具有不同的存储后端的情况下,联合存储池层能够实现该多个异构的、具有不同存储后端的子存储池的统一配置和调度,从而满足用户多种存储需求。

进一步地,本发明实施例采用本地存储系统内核中内置的文件系统进行存储架构的创建以及存储卷的创建和分配,如果本地系统是linux,则采用linux内核中内置的文件系统,使得io性能和存储卷分配性能较高,尤其在分配了大量的存储卷之后,依然保持较高的分配速率。

在上述实施例或下述实施例中,在根据各子存储池对应的物理存储介质的信息,将对应的物理存储介质添加到对应的子存储池之后,还包括存储容量的扩展方案,具体包括以下至少四个层次的扩展。

联合存储池层的扩展:调用至少一个联合存储池所在的联合存储池层的扩容接口,增加新的联合存储池,例如图2b中的iron。可选地,该扩容接口是应用程序编程接口(applicationprogramminginterface,api)。

子存储池层的扩展:调用至少一个联合存储池所在的联合存储池层的扩容接口,增加联合存储池中新的子存储池,例如图2b中gold2和iron1;和/或,调用子存储池的扩容接口,增加该子存储池的空间大小,例如增加gold1的空间大小;和/或,将存储设备通过小型计算机系统接口(smallcomputersysteminterface,scsi)接口或光纤通道直接连接到服务器上,以增加物理存储介质,将增加的物理存储介质添加到原有或新增的子存储池中,以增加对应子存储池的空间大小。

物理存储介质层的扩展:将存储设备通过scsi接口或光纤通道直接连接到服务器上,以增加物理存储介质,例如图2b中的memory和ssd。

存储卷层的扩展:调用存储卷的扩容接口,增加存储卷的空间大小。存储卷扩容后,根据存储卷增加的空间大小,更新其隶属的子存储池的属性信息和隶属的联合存储池的属性信息。其中,联合存储池的属性信息包括联合存储池的总空间大小、总读写带宽、已用空间大小、已用读写带宽等。

本实施例通过直接增加底层存储的数量实现poolfederation存储架构的纵向扩展;通过上述联合存储池层、子存储池层和存储卷层的扩展方案,水平扩展数据结构,进而横向增加存储容量,可见,poolfederation存储架构具有强大的横向和纵向扩展能力。

在上述实施例或下述实施例中,在根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷之后,还包括:从存储卷使用完毕的请求信息中,获取存储卷的信息;根据存储卷的信息,确定存储卷隶属的子存储池;在子存储池中删除存储卷。

在存储卷使用完毕后,用户向存储卷创建装置发送使用完毕的请求信息,该请求信息中包括存储卷的信息,例如存储卷的名称、其隶属的子存储池以及联合存储池、总空间大小、总读写带宽、已用空间大小、已用读写带宽、挂载点等。存储卷创建装置从该请求信息中获取上述存储卷的信息,并确定存储卷隶属的子存储池,以及在子存储池中删除该存储卷。由于该存储卷分配成功后加入到系统缓存,还需要删除系统缓存中的存储卷,并更新其隶属的子存储池的已用空间大小和已用读写带宽。

本实施例中,通过从存储卷使用完毕的请求信息中,获取存储卷的信息;根据存储卷的信息,确定存储卷隶属的子存储池;在子存储池中删除存储卷,从而能够根据请求信息实现存储卷迅速、及时地回收。尤其在容器环境中,需要能够迅速分配一块可用的存储空间给容器使用,同时在容器停止之后又能够迅速的回收,本实施例的技术方案能够应用于容器环境中,实现存储卷的快速分配和回收。

实施例五

图6是本发明实施例五提供的一种存储卷创建装置的结构示意图,包括:获取模块51、选取模块52和创建模块53。

获取模块51,用于获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息;

选取模块52,用于在联合存储池的信息对应的联合存储池中,选取目标子存储池,联合存储池包括至少一个子存储池;

创建模块53,用于根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

本发明实施例提供了一种新的poolfederation存储架构,该存储架构在多个子存储池的上层添加一层联合存储池层,通过将多个子存储池联结起来组成一个更大的存储池,从而实现多个子存储池之间的调度。在poolfederation存储架构的基础上,本发明实施例通过获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息,并在联合存储池的信息对应的联合存储池中,选取目标子存储池;根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷,从而在物理存储介质发生损坏后,只会导致其隶属的子存储池不可用,而其它子存储池依然可用,进而整个存储架构是可用的,不受部分物理存储介质损坏的影响,能够安全运行,有良好的稳定性和安全性,从而顺利为应用程序分配存储资源,保证应用程序的正常运行。

可选地,选取模块52在在联合存储池的信息对应的联合存储池中,选取目标子存储池中,具体用于:获取联合存储池中至少一个子存储池的运行状态;选取处于正常运行状态的子存储池为目标子存储池;其中,处于正常运行状态的子存储池中的物理存储介质处于可用状态。

可选地,选取模块52在在联合存储池的信息对应的联合存储池中,选取目标子存储池中,具体用于:获取联合存储池中至少一个子存储池的运行状态;根据至少一个子存储池的运行状态,确定处于正常运行状态的子存储池;根据待创建存储卷的属性信息以及处于正常运行状态的子存储池的属性信息,对处于正常运行状态的子存储池进行打分;将分数满足预设要求的子存储池作为目标子存储池;其中,处于正常运行状态的子存储池中的物理存储介质处于可用状态;待创建存储卷的属性信息包括待创建存储卷的申请空间大小和/或申请每秒读写操作的次数读写带宽,子存储池的属性信息至少包括子存储池的总空间大小、总读写带宽、已用空间大小、已用读写带宽中的一种,读写带宽包括每秒读写操作的次数iops、每秒传送位数bps或者每个读写调度周期占用物理存储介质的带宽比例。

可选地,选取模块52在根据待创建存储卷的属性信息以及子存储池的属性信息,对处于正常运行状态的子存储池进行打分时,具体用于:将处于正常运行状态的子存储池的总空间大小减去已用空间大小,得到处于正常运行状态的子存储池的剩余空间大小;将处于正常运行状态的子存储池的总读写带宽减去已用读写带宽,得到处于正常运行状态的子存储池的剩余读写带宽;将申请空间大小与剩余空间大小的比值,与申请读写带宽与剩余读写带宽的比值进行加权求和,得到处于正常运行状态的子存储池的得分。

可选地,获取模块51还用于获取待创建的至少一个联合存储池的信息、各联合存储池中至少一个子存储池的信息以及各子存储池中的物理存储介质的信息。创建模块53用于根据至少一个联合存储池的信息,创建至少一个联合存储池;根据各联合存储池中至少一个子存储池的信息,在对应联合存储池中创建至少一个子存储池;根据各子存储池对应的物理存储介质的信息,将对应的物理存储介质添加到对应的子存储池。

可选地,至少一个子存储池的信息包括:子存储池的名称、子存储池中物理存储介质的组合方式、后端存储、文件系统类型和子存储池中的物理存储介质的信息。

可选地,存储卷创建装置还包括扩容模块,用于在根据各子存储池对应的物理存储介质的信息,将对应的物理存储介质添加到对应的子存储池之后,执行以下操作中至少一种:调用至少一个联合存储池所在的联合存储池层的扩容接口,增加新的联合存储池;调用至少一个联合存储池所在的联合存储池层的扩容接口,增加联合存储池中新的子存储池;调用子存储池的扩容接口,增加子存储池的空间大小;调用存储卷的扩容接口,增加存储卷的空间大小。

可选地,存储卷创建装置还包括分配模块,用于在根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷之后,获取待创建存储卷所需的文件系统类型和挂载点;将存储卷格式化为文件系统类型对应的文件系统;将存储卷挂载至挂载点。

可选地,存储卷创建装置还包括删除模块,用于在根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷之后,从存储卷使用完毕的请求信息中,获取存储卷的信息;根据存储卷的信息,确定存储卷隶属的子存储池;在子存储池中删除存储卷。

本发明实施例所提供的存储卷创建装置可执行本发明任意实施例所提供的存储卷创建方法,具备执行方法相应的功能模块和有益效果。

实施例六

图7是本发明实施例六提供的一种服务器的结构示意图,如图7所示,该服务器包括处理器60、存储器61;服务器中处理器60的数量可以是一个或多个,图7中以一个处理器60为例;服务器中的处理器60、存储器61可以通过总线或其他方式连接,图7中以通过总线连接为例。

存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的存储卷创建方法对应的程序指令/模块(例如,存储卷创建装置中的获取模块51、选取模块52和创建模块53)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的存储卷创建方法。

存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

实施例七

本发明实施例七还提供一种其上存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种存储卷创建方法,该方法包括:

获取待创建存储卷的属性信息和用于创建待创建存储卷的联合存储池的信息;

在联合存储池的信息对应的联合存储池中,选取目标子存储池,联合存储池包括至少一个子存储池;

根据待创建存储卷的属性信息,在目标子存储池中通过其中的物理存储介质创建存储卷。

当然,本发明实施例所提供的一种其上存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的存储卷创建方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述存储卷创建装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1