卷的空间分配方法和装置与流程

文档序号:11582040阅读:234来源:国知局
卷的空间分配方法和装置与流程

本发明涉及存储领域,尤其涉及一种卷的空间分配方法和装置。



背景技术:

传统的存储系统是以物理磁盘作为raid(redundantarraysofindependentdisks,磁盘阵列)成员盘,一般组成raid的成员盘数是个位数级别。虚拟化资源池pool的存储系统使用虚拟磁盘,即使用卷作为raid的成员盘,通过将虚拟磁盘划分成小块进行地址映射,让更多的小块虚拟磁盘和小块虚拟磁盘之间建立raid关系网。虚拟化pool存储系统一般有数十到上百个成员盘。当存储系统有磁盘发生故障的时候。传统的raid存储系统的磁盘重建性能会受限于热备磁盘的性能。而虚拟化pool存储系统在磁盘发生故障时,虚拟化pool的存储系统的恢复速度远大于传统raid存储系统。

相对于传统raid存储系统,虚拟化pool存储系统因为将虚拟磁盘划分成了小块,使原本连续的地址访问有可能会变成随机访问。然而当发生故障时,需要重建的i/o(input/output,输入输出端口)就是典型的顺序i/o,当所述磁盘块划分的较小时,重建i/o的连续性降低,使得重建i/o的性能降低。现有的解决上述问题的方法为增大对所述磁盘块的划分,增大所述磁盘块的大小可以减少顺序i/o变成随机i/o的概率,但是增大磁盘块会带来热点迁移的问题,热点迁移的磁盘块越大,对热点的把控就会越不准确,使得整体的热点迁移效果变差。



技术实现要素:

本发明的主要目的在于提供一种卷的空间分配方法及装置,解决顺序访问i/o性能差,且不能兼顾热点迁移效果的技术问题。

为实现上述目的,本发明提供的一种卷的空间分配方法,包括步 骤:

获取待创建的卷的空间大小;

根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小;

根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。

优选地,所述根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷的步骤包括:

将所述卷划分成分配粒度as的大小;

根据所述as的大小在每个存储层中分配对应的空间给所述卷;

根据地址映射粒度ck建立所述卷到所述资源池的地址映射表,所述as是所述ck的整数倍。

优选地,所述根据所述as的大小在每个存储层中分配对应的空间给所述卷的步骤之后,还包括:

当某个存储层的空间分配完之后,重新建立所述存储层,或者分配新的空间给所述存储层;

当重新建立所述存储层或者分配新的空间给所述存储层失败时,检测所述存储层的as内是否有未分配的ck;

若所述存储层的as内有未分配的ck,则根据所述ck的大小在每个存储层中分配对应的空间给所述卷。

优选地,所述根据ck建立所述卷到所述资源池内的地址映射表,所述as是所述ck的整数倍的步骤之后,还包括:

当侦测到热点迁移的指令时,以ck作为热点迁移的粒度对资源池内的资源进行迁移。

优选地,所述根据ck建立所述卷到所述资源池内的地址映射表,所述as是所述ck的整数倍的步骤之后,还包括:

当所述存储层中的磁盘出现故障时,根据所述存储层中磁盘的个数和磁盘阵列参数,同时启动多个as的重建。

优选地,所述根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小的步骤之后,还包括:

判断所述资源池中是否存在固态硬盘;

若所述资源池中存在固态硬盘,则所述根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷的步骤包括:

将固态硬盘对应存储层中的卷划分成ck的大小,根据所述ck的大小在固态硬盘中分配对应的空间给所述卷,根据ck建立所述卷到所述资源池的地址映射表。

此外,为实现上述目的,本发明还提供一种卷的空间分配装置,所述装置包括:

获取模块,用于获取待创建的卷的空间大小;

计算模块,用于根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小;

分配模块,用于根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。

优选地,所述分配模块包括:

划分单元,用于将所述卷划分成分配粒度as的大小;

第一分配单元,用于根据所述as的大小在每个存储层中分配对应的空间给所述卷;

建立单元,用于根据地址映射粒度ck建立所述卷到所述资源池的地址映射表,所述as是所述ck的整数倍。

优选地,所述分配模块还包括:

处理单元,用于当某个存储层的空间分配完之后,重新建立所述存储层,或者分配新的空间给所述存储层;

检测单元,用于当重新建立所述存储层或者分配新的空间给所述存储层失败时,检测所述存储层的as内是否有未分配的ck;

第二分配单元,用于若所述存储层的as内有未分配的ck,则根据所述ck的大小在每个存储层中分配对应的空间给所述卷。

优选地,所述分配模块还包括迁移单元,用于当侦测到热点迁移的指令时,以ck作为热点迁移的粒度对资源池内的资源进行迁移。

优选地,所述分配模块还包括启动单元,用于当所述存储层中的磁盘出现故障时,根据所述存储层中磁盘的个数和磁盘阵列参数,同时启动多个as的重建。

优选地,所述卷的空间分配装置还包括判断模块,用于判断所述资源池中是否存在固态硬盘;

所述分配模块,还用于将固态硬盘对应存储层中的卷划分成ck的大小,根据所述ck的大小在固态硬盘中分配对应的空间给所述卷,根据ck建立所述卷到所述资源池的地址映射表。

本发明通过计算卷在资源池中占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷,使所述卷能够利用资源池内多个物理磁盘的性能,通过分配较大的连续空间as来实现了i/o在卷上的连续访问能够有效的转换成在存储层磁盘上的连续访问,减少磁头转动对磁盘的性能的影响,提高顺序访问i/o的性能,同时通过设置较小的映射粒度ck,将所述as切成多个ck来建立地址映射表,进而兼顾热点迁移的效果。

附图说明

图1为本发明卷的空间分配方法第一实施例的流程示意图;

图2为本发明卷的空间分配方法第二实施例的流程示意图;

图3为本发明卷的空间分配方法第三实施例的流程示意图;

图4为本发明卷的空间分配方法第四实施例的流程示意图;

图5为本发明卷的空间分配装置第一实施例的功能模块示意图;

图6为本发明卷的空间分配装置第二实施例的功能模块示意图;

图7为本发明卷的空间分配装置第三实施例的功能模块示意图;

图8为本发明卷的空间分配装置第四实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的主要解决方案是:获取待创建的卷的空间大小;根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小;根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。通过计算卷在资源池占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷,使所述卷能够利用资源池内多个存储层的性能,通过分配较大的连续空间as来实现了i/o在卷上的连续访问能够有效的转换成在磁盘上的连续访问,减少磁头转动对磁盘的性能的影响,提高顺序访问i/o的性能,同时通过设置较小的映射粒度ck,将所述as切成多个ck来建立地址映射表,进而兼顾热点迁移的效果。

由于现有的存储系统在重建i/o时连续性较低,使得重建的性能降低,且热点迁移的整体效果不佳。

基于上述问题,本发明提供一种卷的空间分配方法。

参照图1,图1为本发明卷的空间分配方法第一实施例的流程示意图。

在本实施例中,所述卷的空间分配方法包括:

步骤s10,获取待创建的卷的空间大小;

步骤s20,根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小;

虚拟化资源池pool存储系统获取其用户指定待创建的卷的空间大小,根据所述卷的空间大小和其用户预设的分配策略,计算所述卷在所述pool中占用每个存储层的空间大小,得到所述卷占用每个存储层的空间大小。所述虚拟化pool存储系统的存储阵列的volume层到pool层有一层地址空间的映射(当卷为thin卷时,除了所述映射外,还会有一层thin卷的映射。所述thin卷是指有自动精简配置功能 的卷。所述自动精简配置是一种存储管理的特性,核心原理是“欺骗”客户端操作系统,让客户端操作系统认为已经分配了很大逻辑资源,比如客户端操作系统看到一个2tb(terabyte,太字节)的逻辑资源,而实际上网络存储设备上只为这个资源分配了几十或者几百gb(gigabyte,十亿字节)的物理空间,其余空间都是虚拟出来的。随着应用程序写入越来越多的数据,物理存储利用率也会越来越高,当实际分配的物理空间不足时,再分配额外的物理空间,随需扩展)。所述pool内有三个层级,分别为tier0,tier1,tier2。所述tier0级为ssd(solidstatedrives,固态硬盘),tier1级为sas(serialattachedscsi,串行连接scsi接口),tier2级为sata(serialata,串口硬盘)。如当所述虚拟化pool存储系统用户定义所述卷的空间为100gb,所述预设的分配策略为tier0,tier1和tier2层级的卷在所述pool内存储层的空间分配比例为2:3:5,则所述虚拟化pool存储系统根据所述预设的分配策略计算得出所述卷在所述pool内的ssd的空间为20gb,在sas的空间为30gb,在sata的空间为50gb。

步骤s30,根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。

虚拟化pool存储系统根据计算得到的所述卷占用所述pool内每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。如所述虚拟化pool存储系统根据所述卷在所述pool内的ssd,sas和sata内空间的大小,在所述pool内ssd中分配20gb的空间给所述卷,在所述pool内的sas中分配30gb的空间给所述卷,在所述pool内的sata中分配50gb的空间给所述卷。

本实施例通过计算卷在资源池中占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷,使所述卷能够利用资源池内多个物理磁盘的性能,通过分配较大的连续空间as来实现了i/o在卷上的连续访问能够有效的转换成在存储层磁盘上的连续访问,减少磁头转动对磁盘的性能的影响,提高顺序访问i/o的性能,同时通过设置较小的映射粒度ck,将所述as切成多个ck来建立地址映射表,进而兼顾热点迁移的效果。

参照图2,图2为本发明卷的空间分配方法第二实施例的流程示意图,基于第一实施例提出本发明卷的空间分配方法第二实施例。

在本实施例中,所述步骤s30包括:

步骤s31,将所述卷划分成分配粒度as的大小;

步骤s32,根据所述as的大小在每个存储层中分配对应的空间给所述卷;

虚拟化pool存储系统根据计算得到的所述卷占用每个存储层的空间大小,当所述存储层内的磁盘为机械盘或者是ssd时,将所述卷在其pool内每个存储层中的空间大小划分成as(allocsize,分配粒度)的大小,并根据所述as的大小,在所述存储层内的磁盘阵列组raidgroup中分配对应的空间给所述卷。

步骤s33,当某个存储层的空间分配完之后,重新建立所述存储层,或者分配新的空间给所述存储层;

步骤s34,当重新建立所述存储层或者分配新的空间给所述存储层失败时,检测所述存储层的as内是否有未分配的ck;

步骤s35,若所述存储层的as内有未分配的ck,则根据所述ck的大小在每个存储层中分配对应的空间给所述卷。

当所述虚拟化pool存储系统中所述pool内某个存储层的raidgroup的空间已分配完时,则新建所述存储层的raidgroup或者从所述pool内其它存储层内分配新的物理空间给所述存储层的raidgroup扩容。当所述存储层的raidgroup新建或者扩容成功后,所述虚拟化pool存储系统将所述pool内存储层中的raidgroup空间分配给卷。当所述存储层的raidgroup新建或者扩容失败时,所述虚拟化pool存储系统则从头开始检查空间分配完的存储层的raidgroup中的as内是否有未分配的ck,当所述as内存在未分配的ck时,以ck为粒度来分配空间给所述卷;若所述as内的ck已分配完,则表明所述存储层的空间分配失败。所述虚拟化pool存储系统根据其用户设置的分配策略选择从所述pool内其它存储层中分配空间给所述存储层的raidgroup,或者提示所述用户所述存储层的raid group中的空间分配失败,即创建卷失败。

步骤s36,根据地址映射粒度ck建立所述卷到所述资源池的地址映射表,所述as是所述ck的整数倍。

当所述虚拟化pool存储系统为所述pool内存储层的卷分配了as的空间之后,根据ck(chunk,地址映射粒度)建立所述卷内ck到所述pool内ck的地址映射表。所述as是所述ck的整数倍。如一个as可以由4个ck组成。所述卷内ck的id(identification,身份标识符)与所述pool内ck的id一一对应。当所述虚拟化pool存储系统建立了所述卷内ck到所述pool内ck的地址映射表时,所述虚拟化pool存储系统已为所述卷分配空间,创建所述卷成功。所述虚拟化pool存储系统通过所述卷从所述pool内不同存储层的raidgroup上分配空间,以使所述卷能够利用pool内多个物理磁盘的性能。所述as不会设置的太大,所述as最大设置为从所述pool内物理磁盘上划分的小块组成的raidgroup的大小。

步骤s37,当侦测到热点迁移的指令时,以ck作为热点迁移的粒度对资源池内的资源进行迁移。

当所述虚拟化pool存储系统侦测到所述pool内的热点迁移指令时,以ck作为热点迁移的粒度对所述pool内的资源进行迁移。如当所述虚拟化pool存储系统在读写数据时,发现所述pool内sas中的某些数据使用频繁,则将这些使用频繁的数据以ck为粒度迁移到ssd内。当所述虚拟化pool存储系统pool内的sas迁移后,可能会导致as内部出现空洞,则当所述sas内按照as已经不能分配空间给所述卷时,再选择as内空洞的ck来分配空间给所述卷。

本实施例通过计算卷在资源池中每个存储层的空间分配比例,将存储层内的空间按照as分配给对应的卷,并按照ck建立所述卷到所述资源池内的地址映射表。实现了使用as的大小进行空间分配,使用ck进行热点迁移,在保持较小的粒度迁移的同时,提高了顺序i/o访问的性能。

参照图3,图3为本发明卷的空间分配方法第三实施例的流程示 意图,基于第二实施例提出本发明卷的空间分配方法第三实施例。

在本实施例中,所述步骤s33之后,还包括:

步骤s38,当所述存储层中的磁盘出现故障时,根据所述存储层中磁盘的个数和磁盘阵列参数,同时启动多个as的重建。

当虚拟化pool存储系统的pool内存储层中的某个磁盘出现故障时,所述虚拟化pool存储系统需要重建i/o,重建的i/o都是顺序的i/o。当所述虚拟化pool存储系统在重建i/o的时候,要要保证充分利用所述存储层内所有磁盘的性能,因此需要所述pool内存储层中多个raidgroup中的as能够并发进行。并发的as数取决于所述pool内存储层中磁盘的数量以及所述磁盘中raid参数。如当所述pool内存储层中磁盘的数量以及所述磁盘中raid参数决定重建i/o时并发的as数为4个,则所述磁盘重建的i/o并发数为4,即在每个as内部顺序下发重建i/o,类似于多路的顺序流。在一个as的内部,也会根据主机i/o的繁忙程度来限制重建i/o的并发数。

本实施例通过当资源池中存储层的磁盘出现故障时,同时启动多个as重建i/o,提高了磁盘故障时i/o的重建性能。

参照图4,图4为本发明卷的空间分配方法第四实施例的流程示意图,基于第一实施例提出本发明卷的空间分配方法第四实施例。

在本实施例中,所述步骤s20之后,还包括:

步骤s40,判断所述资源池中是否存在固态硬盘;

若所述资源池中存在固态硬盘,则所述步骤s30还包括:

步骤s39,将固态硬盘对应存储层中的卷划分成ck的大小,根据所述ck的大小在固态硬盘中分配对应的空间给所述卷,根据ck建立所述卷到所述资源池的地址映射表。

虚拟化pool存储系统判断其pool内的存储层是否存在ssd,当所述pool内的存储层存在ssd时,在对所述ssd中的raidgroup空间进行分配时,可以以ck为粒度进行,其它不存在ssd的存储层以as为粒度进行空间分配。当所述虚拟化pool存储系统将卷上的空间划分成ck的大小后,从所述ssd分配ck大小的空间给所述卷。 若所述ssd中raidgroup的ck大小的空间分配完成之后,所述虚拟化pool存储系统新建所述ssd中的raidgroup,或者从所述pool内其它存储层中分配新的物理空间给所述ssd的raidgroup进行扩容。当新建所述ssd的raidgroup或者对所述ssd的raidgroup扩容后,所述虚拟化pool存储系统将所述pool内的ssd中raidgroup的ck大小的空间分配给所述卷。当所述ssd层的raidgroup新建或者扩容失败时,所述虚拟化pool存储系统根据其用户设置的分配策略选择从所述pool内其它存储层中分配空间给所述ssd的raidgroup,或者提示所述用户所述ssd的raidgroup中的空间分配失败,即创建卷失败。

本实施例通过将ssd层磁盘阵列组中的空间按照ck分配给对应的卷。实现了当虚拟化pool存储系统的pool内存在ssd时,保持较小的粒度迁移的同时,提高了顺序i/o访问的性能。

本发明进一步提供一种卷的空间分配装置。

参照图5,图5为本发明卷的空间分配装置第一实施例的功能模块示意图。

在本实施例中,所述卷的空间分配装置包括:

获取模块10,用于获取待创建的卷的空间大小;

计算模块20,用于根据所述卷的空间大小和预设的分配策略,计算所述卷占用资源池中每个存储层的空间大小;

虚拟化资源池pool存储系统获取其用户指定待创建的卷的空间大小,根据所述卷的空间大小和其用户预设的分配策略,计算所述卷在所述pool中占用每个存储层的空间大小,得到所述卷占用每个存储层的空间大小。所述虚拟化pool存储系统的存储阵列的volume层到pool层有一层地址空间的映射(当卷为thin卷时,除了所述映射外,还会有一层thin卷的映射。所述thin卷是指有自动精简配置功能的卷。所述自动精简配置是一种存储管理的特性,核心原理是“欺骗”客户端操作系统,让客户端操作系统认为已经分配了很大逻辑资源,比如客户端操作系统看到一个2tb(terabyte,太字节)的逻辑资源, 而实际上网络存储设备上只为这个资源分配了几十或者几百gb(gigabyte,十亿字节)的物理空间,其余空间都是虚拟出来的。随着应用程序写入越来越多的数据,物理存储利用率也会越来越高,当实际分配的物理空间不足时,再分配额外的物理空间,随需扩展)。所述pool内有三个层级,分别为tier0,tier1,tier2。所述tier0级为ssd(solidstatedrives,固态硬盘),tier1级为sas(serialattachedscsi,串行连接scsi接口),tier2级为sata(serialata,串口硬盘)。如当所述虚拟化pool存储系统用户定义所述卷的空间为100gb,所述预设的分配策略为tier0,tier1和tier2层级的卷在所述pool内存储层的空间分配比例为2:3:5,则所述拟化pool存储系统根据所述预设的分配策略计算得出所述卷在所述pool内的ssd的空间为20gb,在sas的空间为30gb,在sata的空间为50gb。

分配模块30,用于根据计算得到的所述卷占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。

虚拟化pool存储系统根据计算得到的所述卷占用所述pool内每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷。如所述虚拟化pool存储系统根据所述卷在所述pool内的ssd,sas和sata内空间的大小,在所述pool内ssd中分配20gb的空间给所述卷,在所述pool内的sas中分配30gb的空间给所述卷,在所述pool内的sata中分配50gb的空间给所述卷。

本实施例通过计算卷在资源池中占用每个存储层的空间大小,在每个存储层中分配对应的空间给所述卷,使所述卷能够利用资源池内多个物理磁盘的性能,通过分配较大的连续空间as来实现了i/o在卷上的连续访问能够有效的转换成在存储层磁盘上的连续访问,减少磁头转动对磁盘的性能的影响,提高顺序访问i/o的性能,同时通过设置较小的映射粒度ck,将所述as切成多个ck来建立地址映射表,进而兼顾热点迁移的效果。

参照图6,图6为本发明卷的空间分配装置第二实施例的功能模块示意图,基于第一实施例提出本发明卷的空间分配装置第二实施 例。

在本实施例中,所述分配模块30还包括:

划分单元31,用于将所述卷划分成分配粒度as的大小;

第一分配单元32,用于根据所述as的大小在每个存储层中分配对应的空间给所述卷;

虚拟化pool存储系统根据计算得到的所述卷占用每个存储层的空间大小,当所述存储层内的磁盘为机械盘或者是ssd时,将所述卷在其pool内每个存储层中的空间大小划分成as(allocsize,分配粒度)的大小,并根据所述as的大小,在所述存储层内的磁盘阵列组raidgroup中分配对应的空间给所述卷。

处理单元33,用于当某个存储层的空间分配完之后,重新建立所述存储层,或者分配新的空间给所述存储层;

检测单元34,用于当重新建立所述存储层或者分配新的空间给所述存储层失败时,检测所述存储层的as内是否有未分配的ck;

第二分配单元35,用于若所述存储层的as内有未分配的ck,则根据所述ck的大小在每个存储层中分配对应的空间给所述卷。

当所述虚拟化pool存储系统中所述pool内某个存储层的raidgroup的空间已分配完时,则新建所述存储层的raidgroup或者从所述pool内其它存储层内分配新的物理空间给所述存储层的raidgroup扩容。当所述存储层的raidgroup新建或者扩容成功后,所述虚拟化pool存储系统将所述pool内存储层中的raidgroup空间分配给卷。当所述存储层的raidgroup新建或者扩容失败时,所述虚拟化pool存储系统则从头开始检查空间分配完的存储层的raidgroup中的as内是否有未分配的ck,当所述as内存在未分配的ck时,以ck为粒度来分配空间给所述卷;若所述as内的ck已分配完,则表明所述存储层的空间分配失败。所述虚拟化pool存储系统根据其用户设置的分配策略选择从所述pool内其它存储层中分配空间给所述存储层的raidgroup,或者提示所述用户所述存储层的raidgroup中的空间分配失败,即创建卷失败。

建立单元36,用于根据地址映射粒度ck建立所述卷到所述资源 池的地址映射表,所述as是所述ck的整数倍。

当所述虚拟化pool存储系统为所述pool内存储层的卷分配了as的空间之后,根据ck(chunk,地址映射粒度)建立所述卷内ck到所述pool内ck的地址映射表。所述as是所述ck的整数倍。如一个as可以由4个ck组成。所述卷内ck的id(identification,身份标识符)与所述pool内ck的id一一对应。当所述虚拟化pool存储系统建立了所述卷内ck到所述pool内ck的地址映射表时,所述虚拟化pool存储系统已为所述卷分配空间,创建所述卷成功。所述虚拟化pool存储系统通过所述卷从所述pool内不同存储层的raidgroup上分配空间,以使所述卷能够利用pool内多个物理磁盘的性能。所述as不会设置的太大,所述as最大设置为从所述pool内物理磁盘上划分的小块组成的raidgroup的大小。

迁移单元37,用于当侦测到热点迁移的指令时,以ck作为热点迁移的粒度对资源池内的资源进行迁移。

当所述虚拟化pool存储系统侦测到所述pool内的热点迁移指令时,以ck作为热点迁移的粒度对所述pool内的资源进行迁移。如当所述虚拟化pool存储系统在读写数据时,发现所述pool内sas中的某些数据使用频繁,则将这些使用频繁的数据以ck为粒度迁移到ssd内。当所述虚拟化pool存储系统pool内的sas迁移后,可能会导致as内部出现空洞,则当所述sas内按照as已经不能分配空间给所述卷时,再选择as内空洞的ck来分配空间给所述卷。

本实施例通过计算卷在资源池中每个存储层的空间分配比例,将存储层内的空间按照as分配给对应的卷,并按照ck建立所述卷到所述资源池内的地址映射表。实现了使用as的大小进行空间分配,使用ck进行热点迁移,在保持较小的粒度迁移的同时,提高了顺序i/o访问的性能。

参照图7,图7为本发明卷的空间分配装置第三实施例的功能模块示意图,基于第二实施例提出本发明卷的空间分配装置第三实施例。

在本实施例中,所述分配模块30还包括:

启动单元38,用于当所述存储层中的磁盘出现故障时,根据所述存储层中磁盘的个数和磁盘阵列参数,同时启动多个as的重建。

当虚拟化pool存储系统的pool内存储层中的某个磁盘出现故障时,所述虚拟化pool存储系统需要重建i/o,重建的i/o都是顺序的i/o。当所述虚拟化pool存储系统在重建i/o的时候,要要保证充分利用所述存储层内所有磁盘的性能,因此需要所述pool内存储层中多个raidgroup中的as能够并发进行。并发的as数取决于所述pool内存储层中磁盘的数量以及所述磁盘中raid参数。如当所述pool内存储层中磁盘的数量以及所述磁盘中raid参数决定重建i/o时并发的as数为4个,则所述磁盘重建的i/o并发数为4,即在每个as内部顺序下发重建i/o,类似于多路的顺序流。在一个as的内部,也会根据主机i/o的繁忙程度来限制重建i/o的并发数。

本实施例通过当资源池中存储层的磁盘出现故障时,同时启动多个as重建i/o,提高了磁盘故障时i/o的重建性能。

参照图8,图8为本发明卷的空间分配装置第四实施例的功能模块示意图,基于第一实施例提出本发明卷的空间分配装置第四实施例。

在本实施例中,所述卷的空间分配装置还包括:

判断模块40,用于判断所述资源池中是否存在固态硬盘;

若所述资源池中存在固态硬盘,则所述分配模块30,还用于将固态硬盘对应存储层中的卷划分成ck的大小,根据所述ck的大小在固态硬盘中分配对应的空间给所述卷,根据ck建立所述卷到所述资源池的地址映射表。

虚拟化pool存储系统判断其pool内的存储层是否存在ssd,当所述pool内的存储层存在ssd时,在对所述ssd中的raidgroup空间进行分配时,可以以ck为粒度进行,其它不存在ssd的存储层以as为粒度进行空间分配。当所述虚拟化pool存储系统将卷上的空间划分成ck的大小后,从所述ssd分配ck大小的空间给所述卷。 若所述ssd中raidgroup的ck大小的空间分配完成之后,所述虚拟化pool存储系统新建所述ssd中的raidgroup,或者从所述pool内其它存储层中分配新的物理空间给所述ssd的raidgroup进行扩容。当新建所述ssd的raidgroup或者对所述ssd的raidgroup扩容后,所述虚拟化pool存储系统将所述pool内的ssd中raidgroup的ck大小的空间分配给所述卷。当所述ssd层的raidgroup新建或者扩容失败时,所述虚拟化pool存储系统根据其用户设置的分配策略选择从所述pool内其它存储层中分配空间给所述ssd的raidgroup,或者提示所述用户所述ssd的raidgroup中的空间分配失败,即创建卷失败。

本实施例通过将ssd层磁盘阵列组中的空间按照ck分配给对应的卷。实现了当虚拟化pool存储系统的pool内存在ssd时,保持较小的粒度迁移的同时,提高了顺序i/o访问的性能。

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

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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