管理RAID的方法及装置与流程

文档序号:12824285阅读:222来源:国知局
管理RAID的方法及装置与流程

本发明实施例涉及存储控制领域,特别涉及一种管理raid的方法及装置。



背景技术:

独立冗余磁盘阵列(英文:redundantarraysofindependentdisks,缩写:raid)是一种将多块独立的硬盘按不同方式组合起来形成一个逻辑硬盘,从而提供比单个硬盘更高的存储性能的技术。

在目前的raid存储系统中,为了便于容量管理,当包含不同容量的多块硬盘时,存储系统首先将各个较大容量硬盘的容量修改为该存储系统中最小容量硬盘对应的容量,在计算存储系统容量时,针对每一块硬盘,按照修改后的容量来计算总的可用容量。

在实现本发明实施例的过程中,发明人发现现有技术至少存在以下问题:

现有技术中将各个较大容量硬盘的容量按照存储系统中最小的硬盘容量进行修改的处理方式浪费的硬盘容量较多,导致存储系统的容量空间利用率较低。



技术实现要素:

为了解决现有技术中将各个较大容量硬盘的容量按照存储系统中最小的硬盘容量进行修改的处理方式浪费的硬盘容量较多,导致存储系统的容量空间利用率较低的问题,本发明实施例提供了一种管理raid的方法及装置。所述技术方案如下:

第一方面,本发明实施例提供了一种管理raid的方法,该方法应用在存储系统中,所述存储系统包括至少两个硬盘组和控制器,所述每个硬盘组所包括的硬盘具有相同的容量类型参数,所述容量类型参数用于指示所述硬盘的容量;所述方法由控制器执行,包括:接收raid管理指令,所述管理指令包括所述至少两个硬盘组中的raid需要的最大成员盘数;判断所述每个硬盘组所包含的硬盘的数量是否满足所述最大成员盘数;当第一硬盘组所包括的硬盘的数量不满足所述最大成员盘数时,确定与所述第一硬盘组的容量类型参数最接近的第二硬盘组的容量类型参数,所述第二硬盘组的容量类型参数小于所述第一硬盘组的容量类型参数;将所述第一硬盘组的容量类型参数修改为所述第二硬盘组的容量类型参数;根据所述修改后的容量类型参数,在所述至少两个硬盘组中进行raid管理,所述raid管理包括:创建raid、删除raid或者创建包含所述至少两个硬盘组的硬盘区域。

本发明实施例提供的管理raid的方法,当第一硬盘组所包括的硬盘的数量不满足至少两个硬盘组中的raid需要的最大成员盘数时,将第一硬盘组的容量类型参数修改为与第一硬盘组的容量类型参数最接近的第二硬盘组的容量类型参数,该第二硬盘组的容量类型参数小于第一硬盘组的容量类型参数;并根据所述修改后的容量类型参数,在所述至少两个硬盘组中进行raid管理,在对各个较大容量硬盘的容量进行修改时,只要使存储系统中每一个硬盘组的硬盘数都满足存储系统中的raid所需要的最大成员盘数即可,不需要将各个较大容量硬盘的容量按照存储系统中最小的硬盘容量进行修改,从而达到减少容量浪费的效果。

结合第一方面,在第一方面的第一种实现方式中,当所述raid管理指令用于指示创建raid时,所述至少两个硬盘组中的raid需要的最大成员盘数为:待创建的raid包含的成员盘数;或者,待创建的raid包含的成员盘数与预设的盘数阈值两者之间的较大值。在创建raid时,根据待创建的raid的成员盘数对各个硬盘组的容量进行动态调整,避免容量浪费。

结合第一方面,在第一方面的第二种实现方式中,当所述raid管理指令用于指示删除raid时,所述至少两个硬盘组中的raid需要的最大成员盘数为:将待删除的raid删除后,所述至少两个硬盘组中剩余的raid对应的成员盘数的最大值;或者,将待删除的raid删除后,所述至少两个硬盘组中剩余的raid对应的成员盘数的最大值与预设的盘数阈值两者之间的较大值。在删除raid时,根据剩余的raid的成员盘数的最大值对各个硬盘组的容量进行动态调整,避免容量浪费。

结合第一方面,在第一方面的第三种实现方式中,当所述raid管理指令用于指示创建包含所述至少两个硬盘组的硬盘区域时,所述至少两个硬盘组中的raid需要的最大成员盘数为预设的盘数阈值。在硬盘区域建立之初,通过预先设置的盘数阈值对各个硬盘组的容量进行初步调整,使得在创建成员盘数小于该预先设置的盘数阈值的raid时,不需要对各个硬盘组的容量进行修改,减少容量修改的次数,降低系统复杂度。

结合第一方面,或者第一方面的第一至三种实现方式中的任意一种实现方式,在第一方面的第四种实现方式中,在判断每个硬盘组所包含的硬盘的数量是否满足所述最大成员盘数之前,还包括:检测所述至少两个硬盘组的组数m是否大于预设的组数阈值n,m和n为正整数;当m大于n时,确定所述至少两个硬盘组中,容量类型参数第n大的第三硬盘组;将所述至少两个硬盘组中,容量类型参数最大的m-n个硬盘组的容量类型参数修改为所述第三硬盘组的容量参数。为存储系统设置最大支持的硬盘组数,简化运算复杂度。

第二方面,本发明实施例提供了一种控制器,所述控制器包括至少一个单元,该至少一个单元用于实现上述第一方面或第一方面中任意一种可能的实现方式所提供的管理raid的方法。

第三方面,本发明实施例提供了一种存储系统,所述系统包括用于实现上述第一方面或第一方面中任意一种可能的实现方式所提供的管理raid的方法的控制器。

第四方面,本发明实施例还提供了一种计算机可读介质,该计算机可读介质存储有用于实现第一方面或第一方面中任意一种可能的实现方式所提供的管理raid的方法的指令。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本发明一个示意性实施例所示出的存储系统的硬件架构图;

图1b是图1a所示的示意性实施例涉及的一种硬盘空间结构图;

图1c是图1a所示的示意性实施例涉及的一种域空间分配管理程序的构成图;

图2是本发明一个示意性实施例提供的管理raid的方法的流程图;

图3a是本发明一示意性实施例提供的容量类型参数修改方法的流程图;

图3b是图3a所示的示意性实施例涉及的容量类型参数修改示意图;

图4是本发明一个实施例提供的管理raid的装置的框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

请参考图1a,其示出了本发明一个示意性实施例所示出的存储系统的硬件架构图。该硬件架构包括以下硬件设备:磁盘阵列110、主机120以及连接该磁盘阵列110和主机120的控制器130。

磁盘阵列110中包含有若干个硬盘112。该若干个硬盘112分为至少两个硬盘组,每个硬盘组所包括的硬盘具有相同的容量类型参数,该容量类型参数用于指示硬盘的容量。

请参考图1b,其示出了图1a所示的示意性实施例涉及的一种硬盘空间结构图,磁盘阵列110中的每个硬盘的容量空间按照存放数据的类型,又可以分为数据库管理空间(英文:datebasespace,缩写:dbspace)、元数据空间(英文:metaspace)空间、业务数据空间(英文:dataspace)空间以及写入孔空间(英文:writehole)。其中,dbspace用于存放配置类数据,该空间并不是硬盘区域中所有硬盘都拥有,通常是一个存储引擎中第1框的前4块硬盘才具有这个空间;metaspace用于存放元数据,dataspace用于存放业务数据,writehole用于存放未完整下盘的分条相关数据。在本发明实施例中,组成总硬盘区域以及各个子硬盘区域的硬盘空间指的是各个硬盘中的metaspace和dataspace,本发明中后续对硬盘的容量进行修改就是指对硬盘中这两个空间的容量进行修改。

主机120是与控制器130相连接的用户管理设备,比如,可以是一台个人电脑。用户通过主机120向控制器130下发各种管理指令,比如,创建硬盘区域、创建硬盘组、删除硬盘组以及容量查询等,控制器130根据主机下发的管理指令进行相应的管理操作。

如1a所示,该控制器130包含处理单元132和接口单元134。其中,接口单元132可以包括多个接口,其中一部分接口用于与主机120进行通信,另一部分接口用于连接磁盘阵列110。

处理单元132包括运算逻辑部件、寄存器部件以及控制部件等,其可以是独立的中央处理器,或者也可以是嵌入式处理器,比如微处理器(英文:microprocessorunit,缩写:mpu)、微控制器(英文:microcontrollerunit,缩写:mcu)或者数字信号处理器(英文:embeddeddigitalsignalprocessor,缩写:edsp)等。

可选的,控制器130还包括存储器136、高速缓存器138、总线1310等部件。其中:存储器136与高速缓存器138分别通过总线1310与处理单元132相连。高速缓存器138用于缓存与磁盘阵列110读写的数据,以及计算过程中的一些中间数据。

存储器136由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(英文:staticrandomaccessmemory,简称:sram),电可擦除可编程只读存储器(英文:electricallyerasableprogrammableread-onlymemory,简称:eeprom),可擦除可编程只读存储器(英文:erasableprogrammablereadonlymemory,简称:eprom),可编程只读存储器(英文:programmableread-onlymemory,简称:prom),只读存储器(英文:readonlymemory,简称:rom),磁存储器,快闪存储器,磁盘或光盘。存储器136可用于存储软件程序以及模块。

如1a所示,存储器136可存储操作系统1362、至少一个功能所需的应用程序模块1364。操作系统1362可以是实时操作系统(realtimeexecutive,rtx)、linux、unix、windows或osx之类的操作系统。应用程序模块1364可以包括系统控制模块1364a、卷业务管理模块1364b、缓存加速模块1364c、磁盘解释管理模块1364d以及域空间分配管理模块1364e。处理单元132可以执行系统控制模块1364a,以实现用户命令解析、命令下发、用户配置、对象管理、系统流程控制、信息反馈、事件通知以及告警发送等功能;或者,处理单元132可以执行卷业务管理模块1364b,以实现用户卷的创建、删除、查询以及逻辑卷到物理存储的映射等功能;或者,处理单元132可以执行缓存加速模块1364c,以实现业务数据及元数据的缓存以及读写加速等功能;或者,处理单元132可以执行磁盘解释管理模块1364d,以实现磁盘识别、定位、读写以及磁盘管理等功能;或者,处理单元132还可以执行域空间分配管理模块1364e,以实现、元数据的布局、空间分配、空间回收、空间管理、容量计算、容量同步、容量刷新以及空间维护等功能。

在本示意性实施例中,存储系统支持创建包含至少两个硬盘组的硬盘区域,并以该硬盘区域为整体,在该硬盘区域包含的至少两个硬盘组中创建或删除raid。

在本示意性实施例中,存储系统可以将部分较大容量硬盘的容量修改为次大容量,以达到减少容量浪费的效果。请参考图1c,其示出了图1a所示的示意性实施例涉及的一种域空间分配管理程序的构成图,在本示意性实施例所示的方案中,域空间分配管理模块1364e可以包括:指令接收模块1364e1、判断模块1364e2、参数确定模块1364e3、参数修改模块1364e4以及管理模块1364e5。

指令接收模块1364e1,用于接收raid管理指令,所述管理指令包括所述至少两个硬盘组中的raid需要的最大成员盘数。

判断模块1364e2,用于判断所述每个硬盘组所包含的硬盘的数量是否满足所述最大成员盘数。

参数确定模块1364e3,用于当第一硬盘组所包括的硬盘的数量不满足所述最大成员盘数时,确定与所述第一硬盘组的容量类型参数最接近的第二硬盘组的容量类型参数,所述第二硬盘组的容量类型参数小于所述第一硬盘组的容量类型参数。

参数修改模块1364e4,用于将所述第一硬盘组的容量类型参数修改为所述第二硬盘组的容量类型参数。

管理模块1364e5,用于根据所述修改后的容量类型参数,在所述至少两个硬盘组中进行raid管理,所述raid管理包括:创建raid、删除raid或者创建包含所述至少两个硬盘组的硬盘区域。

可选的,域空间分配管理模块1364e还可以包括:检测模块1364e6以及硬盘组确定模块1364e7。

检测模块1364e6,用于在所述判断单元判断每个硬盘组所包含的硬盘的数量是否满足所述最大成员盘数之前,检测所述至少两个硬盘组的组数m是否大于预设的组数阈值n,m和n为正整数;

硬盘组确定模块1364e7,用于当m大于n时,确定所述至少两个硬盘组中,容量类型参数第n大的第三硬盘组;

所述参数修改模块1364e4,还用于将所述至少两个硬盘组中,容量类型参数最大的m-n个硬盘组的容量类型参数修改为所述第三硬盘组的容量参数。

请参考图2,其示出了本发明一个示意性实施例提供的管理raid的方法的流程图。该管理raid的方法可以用于图1a所示的存储系统中,由控制器130来执行。该管理raid的方法可以包括:

步骤201,接收raid管理指令,该管理指令包括该至少两个硬盘组中的raid需要的最大成员盘数。

其中,该raid管理指令可以是用户通过主机下发的指令,比如,用户在主机的交互界面中进行raid管理(创建raid、删除raid或者创建包含该至少两个硬盘组的硬盘区域等)操作时,主机向控制器下发该raid管理指令。或者,该raid管理指令也可以是控制器检测到有相关的管理操作时自动生成的指令。

其中,管理指令包括的,该至少两个硬盘组中的raid需要的最大成员盘数可以有如下几种情况:

1)当该raid管理指令用于指示创建包含该至少两个硬盘组的硬盘区域时,该至少两个硬盘组中的raid需要的最大成员盘数为预设的盘数阈值。

2)当该raid管理指令用于指示创建raid时,该至少两个硬盘组中的raid需要的最大成员盘数为:待创建的raid包含的成员盘数;或者,待创建的raid包含的成员盘数与预设的盘数阈值两者之间的较大值。

在本示例性实施例中,存储系统中的一个raid由若干个磁盘块集合(英文:chunkgroup,缩写:ckg)组成,每个ckg包含n个磁盘块,且该n个磁盘块分属于n个硬盘,n就是该raid的成员盘数。存储系统在为raid分配一个磁盘块集合时,通过一定的随机选择算法随机选择n个硬盘,并从随机选择出的n个硬盘中各取一个磁盘块来组成磁盘块集合。而存储系统通过随机选择算法随机选择n个硬盘时,剩余容量相同的硬盘,被选中的概率也相同,当存储系统中包含至少两个对应不同的容量类型参数的硬盘组时,若不对各个硬盘组中的硬盘做任何处理,直接按照上述方法建立raid时,会出现以下情况:每一个硬盘组中的硬盘各自剩余的容量近似相等,而不同硬盘组中的硬盘各自剩余的容量则不同,当有部分硬盘组中硬盘的容量被全部分配出去,而其它有剩余容量的硬盘组中各个硬盘的总数量不足n时,存储系统将会显示该硬盘组还有部分可用容量,如果此时用户根据该可用容量发出新建存储池的指令,且该存储池对应raid的成员盘数为n,则存储系统将无法完成该存储池的建立,导致存储系统出错。分析上述问题容易看出,只要使每一个硬盘组中的硬盘的数量都不小于在存储系统中创建的raid的成员盘数的最大值,即可以避免上述问题。因此,在本示例性实施例中,当raid管理指令指示创建一个raid时,可以将raid管理指令中包含的,该至少两个硬盘组中的raid需要的最大成员盘数设置为待创建的raid包含的成员盘数,这样,当有一个新的raid需要创建时,只需要使得每一个硬盘组的硬盘数量都小于待创建的raid的硬盘数,即可以保证该raid能够建立成功。

在本示例性实施例中,存储系统首先创建包含该至少两个硬盘组的硬盘区域,然后以该硬盘区域为整体,在该硬盘区域中创建或者删除raid。在实际应用中,在硬盘区域中建立的各个raid中,大部分的raid的成员盘数都集中在某个区间内,只有少部分的raid的成员盘数超出该区间,因此,为了避免后续频繁修改硬盘组中的硬盘的容量,在硬盘区域建立之初,可以通过预先设置的盘数阈值对各个硬盘组的容量进行初步调整,使得在创建成员盘数小于该预先设置的盘数阈值的raid时,不需要对各个硬盘组的容量进行修改,减少容量修改的次数,降低系统运算复杂度。其中,该盘数阈值可以根据预测的大部分raid的成员盘数所处的区间来设置。比如,目前的raid分为典型raid和非典型raid,其中,典型raid支持的最大成员盘数为10,非典型raid支持的最大成员盘数可以远大于10,用户在存储系统中建立的raid大多为典型raid,只有少部分是非典型raid,因此,可以将该预先设置的盘数阈值设置为10。相应的,当raid管理指令指示创建一个raid时,可以将raid管理指令中包含的,该至少两个硬盘组中的raid需要的最大成员盘数设置为待创建的raid包含的成员盘数与预设的盘数阈值两者之间的较大值。

3)当该raid管理指令用于指示删除raid时,该至少两个硬盘组中的raid需要的最大成员盘数为:将待删除的raid删除后,该至少两个硬盘组中剩余的raid对应的成员盘数的最大值;或者,将待删除的raid删除后,该至少两个硬盘组中剩余的raid对应的成员盘数的最大值与预设的盘数阈值两者之间的较大值。

当在存储系统中删除一个raid,且该raid是存储系统中成员盘数最多的一个raid时,为了降低容量浪费,可以对存储系统的至少两个硬盘组中的硬盘的容量进行重新调整,因此,在本示例性实施例中,当该raid管理指令用于指示删除raid时,可以将该至少两个硬盘组中的raid需要的最大成员盘数设置为删除raid后剩余的raid对应的成员盘数的最大值,或者,考虑到上述预先设置的盘数阈值的问题,也可以将该至少两个硬盘组中的raid需要的最大成员盘数设置为删除raid后剩余的raid对应的成员盘数的最大值与预设的盘数阈值两者之间的较大值。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行指令接收模块1364e1来实现。

步骤202,判断该每个硬盘组所包含的硬盘的数量是否满足该最大成员盘数。

可选的,在本示例性实施例中,存储系统可以从容量类型参数最大的一个硬盘组开始,依次判断各个硬盘组所包含的硬盘的数量是否满足该最大成员盘数。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行判断模块1364e2来实现。

步骤203,当第一硬盘组所包括的硬盘的数量不满足该最大成员盘数时,确定与该第一硬盘组的容量类型参数最接近的第二硬盘组的容量类型参数,该第二硬盘组的容量类型参数小于该第一硬盘组的容量类型参数。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行参数确定模块1364e3来实现。

步骤204,将该第一硬盘组的容量类型参数修改为该第二硬盘组的容量类型参数。

若第一硬盘组所包括的硬盘的数量满足该最大成员盘数,则保持该第一硬盘组的容量类型参数不变。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行参数修改模块1364e4来实现。

步骤205,根据该修改后的容量类型参数,在该至少两个硬盘组中进行raid管理。

其中,该raid管理包括:创建raid、删除raid或者创建包含该至少两个硬盘组的硬盘区域。

此外,本示例性实施例所示的方案,在对至少两个硬盘组的容量类型参数进行修改时,还可以统计容量类型参数修改而导致的修改浪费容量,并根据该修改浪费容量计算该至少两个硬盘组的可用容量和已用容量。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行管理模块1364e5来实现。

综上所述,本示意性实施例所示的方法,当第一硬盘组所包括的硬盘的数量不满足至少两个硬盘组中的raid需要的最大成员盘数时,将第一硬盘组的容量类型参数修改为与第一硬盘组的容量类型参数最接近的第二硬盘组的容量类型参数,该第二硬盘组的容量类型参数小于第一硬盘组的容量类型参数;并根据该修改后的容量类型参数,在该至少两个硬盘组中进行raid管理,在对各个较大容量硬盘的容量进行修改时,只要使存储系统中每一个硬盘组的硬盘数都满足存储系统中的raid所需要的最大成员盘数即可,不需要将各个较大容量硬盘的容量按照存储系统中最小的硬盘容量进行修改,从而达到减少容量浪费的效果。

按照上述方案,每当建立或者删除一个raid,都需要判断每一个硬盘组的硬盘数量是否满足需求,若建立一个硬盘区域的硬盘组的数量很多,则每次建立或者删除raid时,进行判断和修改容量类型参数的次数也会很多,系统运算复杂度也相应增加,为了降低系统运算复杂度,对此,请参考图3a,其示出了本发明一示意性实施例提供的容量类型参数修改方法的流程图,在存储系统执行上述图2中的步骤202之前,还可以执行一下步骤211至步骤213所示的容量类型参数修改方法:

步骤211,检测该至少两个硬盘组的组数m是否大于预设的组数阈值n,m和n为正整数。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行检测模块1364e6来实现。

步骤212,当m大于n时,确定该至少两个硬盘组中,容量类型参数第n大的第三硬盘组。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行硬盘组确定模块1364e7来实现。

步骤213,将该至少两个硬盘组中,容量类型参数最大的m-n个硬盘组的容量类型参数修改为该第三硬盘组的容量参数。

本示例性实施例中,为存储系统设置一个硬盘组数阈值n,若至少两个硬盘组的组数m大于n,则将对应容量类型参数最大的几个硬盘组的容量类型参数进行修改,使得修改后存储系统中的硬盘组数不超过n,从而简化存储系统的运算复杂度。

具体例如,结合图2和图3a对应实施例中的容量类型参数修改方法,假设该硬盘组有36块硬盘,分别为:10块230g硬盘,6块200g硬盘,11块180g硬盘,4块150g硬盘,3块120g硬盘以及2块100g硬盘,硬盘组最大支持的容量种数为5。存储系统接收到raid管理指令后,获得管理指令中包含的,至少两个硬盘组中的raid需要的最大成员盘数为11。请参考图3b,其示出了图3a所示的示意性实施例涉及的容量类型参数修改示意图,其中,由于该硬盘组中包含6种不同容量的硬盘,则按照上述方案,需要将容量从小到大排列后第5种容量以后的硬盘的容量修改为第5种硬盘的容量,即将11块230g的硬盘的容量修改成200g,此时,200g的硬盘变为16块,不小于11,则保持200g的硬盘的容量不变;继续看下一种次大容量的硬盘,即180g硬盘,其中,180g硬盘为11块,不小于11,则保持180g硬盘不变;继续看150g的硬盘,由于150g的硬盘为4块,小于11,则将150g的硬盘的容量修改为120g,此时,120g硬盘为7块,仍然小于11,继续将7块120g的硬盘的容量修改为100g,最终,相当于100g盘为9块,此时,该硬盘组的总容量为:100g*9+180g*11+200g*16=6080g。

其中,该步骤可以由图1a所示的存储系统中控制器130的处理单元132执行参数修改模块1364e4来实现。

综上所述,本示意性实施例所示的方法,在在判断每个硬盘组所包含的硬盘的数量是否满足该最大成员盘数之前,存储系统还可以检测该至少两个硬盘组的组数m是否大于预设的组数阈值n,m和n为正整数;当m大于n时,确定该至少两个硬盘组中,容量类型参数第n大的第三硬盘组;将该至少两个硬盘组中,容量类型参数最大的m-n个硬盘组的容量类型参数修改为该第三硬盘组的容量参数,为存储系统设置最大支持的硬盘组数,从而简化存储系统的运算复杂度。

可选的,存储系统中存储的数据还有备份要求,即需要在该至少两个硬盘组中留下部分容量作为备份容量,这部分备份容量称为热备容量。本发明中,热备容量可以按照各个硬盘组中的硬盘的容量来分配,即对应每一个硬盘组,分配该硬盘组中的k个硬盘空间作为热备空间,以保证该硬盘组中最多k块硬盘发生故障时,能够找到足够的容量空间对发生故障的硬盘进行数据重组;其中,k可以称为热备盘数,k为大于或者等于1的整数。比如,至少两个硬盘组中的一个硬盘组包含10个300g容量的硬盘,k的数值为1,则需要从该至少两个硬盘组中分配出1*300g的容量空间作为这10个300g硬盘中的数据的热备空间,且这300g的热备空间以磁盘块或者磁盘块集合为单位分散在该至少两个硬盘组中。考虑上述热备要求,在本发明中,上述预先设置的盘数阈值也可以是10+x,x为10对应的热备盘数;当raid管理指令指示创建一个raid时,可以将至少两个硬盘组中的raid需要的最大成员盘数设置为待创建的raid包含的成员盘数与该待创建的raid包含的成员盘数对应的热备盘数之和与预先设置的盘数阈值之间的较大值;当该raid管理指令用于指示删除raid时,可以将该至少两个硬盘组中的raid需要的最大成员盘数设置为删除raid后剩余的raid对应的成员盘数的最大值与该最大值对应的热备盘数之和,与预设的盘数阈值两者之间的较大值。

下面,本发明将以一个可能的具体实现方式为例进行说明,该具体实现方式将综合考虑硬盘区域中的raid成员盘数、热备盘数以及预先设置的盘数阈值。

请参考表1,其示出了本发明一个可能的实现方式提供的,某类型raid的成员盘数与备份盘数的对应表。

表1

在表1中,每个raid成员盘数区间对应两种不同的热备盘数,分别为高热备和低热备,在本示意性实施例中,一个新创建的raid可以由用户自主选择采用高热备或者低热备。比如,典型raid的最大支持成员盘数为10,参照表1,该最大支持成员盘数对应的高热备盘数和低热备盘数均为1(如果该最大支持成员盘数对应的高热备盘数和低热备盘数不同,则以用户设置为准);当创建一个具有36个成员盘的非典型raid时,若用户选择采用高热备时,则成员盘数36对应的热备盘数为3,若用户选择采用低热备,则成员盘数36对应的热备盘数则为2。

存储系统接收创建硬盘区域的raid管理指令,该raid管理指令中包含预设的盘数阈值11(即典型raid支持的最大成员盘数10与该最大成员盘数对应的热备盘数1的和)。存储系统首先结合上述图2和图3a所示的方法对组成一个硬盘区域的至少两个硬盘组的容量类型参数进行修改,将修改后的各个硬盘组的硬盘的容量之和作为该硬盘区域的基础总容量,同时记录修改浪费容量,可选的,在本发明中,当通过预设的盘数阈值对至少两个硬盘组的容量类型参数进行修改时,该修改浪费容量可以设置为0。同时将该预设的盘数阈值11记录为修改阈值。

当用户创建一个raid时,存储系统获取该待创建的raid的成员盘数与该成员盘数对应的热备盘数之和,并比较该待创建的raid的成员盘数与该成员盘数对应的热备盘数之和与已记录的修改阈值之间的大小关系,若该待创建的raid的成员盘数与该成员盘数对应的热备盘数之和大于已记录的修改阈值,则将该待创建的raid的成员盘数与该成员盘数对应的热备盘数之和设置为新的修改阈值。同时存储系统还生成raid管理指令,当修改阈值有更新时,该raid管理指令中包含的至少两个硬盘组中的raid需要的最大成员盘数为更新后的修改阈值,存储系统根据该更新后的修改阈值,结合图2和图3a所示的方法对至少两个硬盘组的容量类型参数进行修改,并记录修改后至少两个硬盘组的总容量,将上面所述的基础总容量减去本次修改后的至少两个硬盘组的总容量就获得本次修改的修改浪费容量。若修改阈值没有更新,则该raid管理指令中可以不包含该至少两个硬盘组中的raid需要的最大成员盘数,存储系统也不对至少两个硬盘组的容量类型参数进行修改。

比如,若待创建的raid的成员盘数为5,查询表1获得对应热备盘数为1,则5+1=6,小于11,此时,保持修改阈值为11不变。若待创建的raid的成员盘数为13,用户选择热备方式为高热备,则查询表1确定对应的热备盘数为2,13+2=15,大于11,此时,将修改阈值更新为15。

当用户删除一个raid时,存储系统获取该删除该raid之后,存储系统首先判断待删除的raid的成员盘数与该成员盘数对应的热备盘数之和是否等于已记录的修改阈值,若待删除的raid的成员盘数与该成员盘数对应的热备盘数之和不等于已记录的修改阈值,则保持已记录的修改阈值不变,若等于,则进一步获取剩余的各个raid的成员盘数的最大值与该最大值对应的热备盘数之和,并比较该最大值与该最大值对应的热备盘数之和与预设的盘数阈值11之间的大小关系,若该最大值与该最大值对应的热备盘数之和大于11,则将该最大值与该最大值对应的热备盘数之和作为新的修改阈值,否则,将11作为新的修改阈值。同时存储系统还生成raid管理指令,同样的,当修改阈值有更新时,该raid管理指令中包含的至少两个硬盘组中的raid需要的最大成员盘数为更新后的修改阈值,存储系统根据该更新后的修改阈值,结合图2和图3a所示的方法对至少两个硬盘组的容量类型参数进行修改。若修改阈值没有更新,则该raid管理指令中可以不包含该至少两个硬盘组中的raid需要的最大成员盘数,存储系统也不对至少两个硬盘组的容量类型参数进行修改。

在以硬盘区域为整体进行容量计算时,可以获取该硬盘区域中的已分配容量和热备容量,计算该硬盘区域的已用容量为:已分配容量+修改浪费容量,计算该硬盘区域的可用容量为:基础总容量-已分配容量-热备容量-修改浪费容量。

其中,已分配容量是指已经分配出去作为数据存储空间的容量,比如,分配给存储系统中的各个raid的容量,以及,当存储系统中还包含独立存储的数据时,分配给这些独立存储的数据的容量。

需要说明的是,在上述实现方式中,当上述修改阈值变大时,修改浪费容量也可能会变大,当修改浪费容量大于基础总容量-已分配容量-热备容量时,为了避免输出的可用容量为负值,当修改浪费容量大于基础总容量-已分配容量-热备容量时,将修改浪费容量更新为基础总容量-已分配容量-热备容量。

请参考图4,其示出了本发明一个实施例提供的管理raid的装置的框图。该装置可以通过硬件或者软硬结合的方式实现为图1所示实施环境的控制器130的部分或者全部,用以执行如图2或图3a所示方法中的全部或者部分步骤。该装置可以包括:

指令接收单元401,具有与指令接收模块1364e1相同或相似的功能;

判断单元402,具有与判断模块1364e2相同或相似的功能;

参数确定单元403,具有与参数确定模块1364e3相同或相似的功能;

参数修改单元404,具有与参数修改模块1364e4相同或相似的功能;

管理单元405,具有与管理模块1364e5相同或相似的功能;

检测单元406,具有与检测模块1364e6相同或相似的功能;

硬盘组确定单元407,具有与硬盘组确定模块1364e7相同或相似的功能。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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