掌桥专利:专业的专利平台
掌桥专利
首页

一种独立冗余磁盘阵列存储空间动态分配方法和装置

文献发布时间:2024-04-18 19:55:22


一种独立冗余磁盘阵列存储空间动态分配方法和装置

技术领域

本发明涉及计算机系统及存储技术领域,特别是涉及一种独立冗余磁盘阵列存储空间动态分配方法、一种独立冗余磁盘阵列存储空间动态分配装置、一种电子设备和一种存储介质。

背景技术

企业通常使用存储服务器进行数据的管理。一个大的企业,存储服务器数量可以达到成千上万台。其中RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)卡是存储服务器中的一个重要组件,RAID卡可以对硬盘进行批量管理,通过创建RAID阵列并在阵列上层创建卷以对外提供存储服务。但是目前针对RAID卡的存储空间分配方式存在前期对卷需要使用的空间预估有误,那会造成卷内空间的浪费,或者卷空间不够,这会给后续使用造成很大的困扰,进而导致存储空间被浪费。

发明内容

鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种独立冗余磁盘阵列存储空间动态分配方法、一种独立冗余磁盘阵列存储空间动态分配装置、一种电子设备和一种存储介质。

在发明的第一个方面,本发明实施例公开了一种独立冗余磁盘阵列存储空间动态分配方法,独立冗余磁盘阵列的存储空间划分为多个存储块,所述方法包括:

响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;

接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;

依据所述写入数据确定在所述逻辑卷中的第二指数位置;

响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;

将所述写入数据写入所述第二目标存储块。

可选地,所述方法还包括:

响应于所述第二指数位置与所述第一指数位置相同,将所述写入数据写入所述第一目标存储块。

可选地,所述方法还包括:

对所述多个存储块进行记录,生成存储空间记录表。

可选地,所述存储空间记录表由于所述多个存储块及其对应的特征值组成,所述特征值包括第一特征值和第二特征值;所述对所述多个存储块进行记录,生成存储空间记录表的步骤包括:

将所述多个存储块中分配的存储块记录为所述第一特征值;

将所述多个存储块中未分配的存储块记录为所述第二特征值。

可选地,所述方法还包括:

响应于所述第一特征值的数量大于预设阈值,生成存储空间警告信息。

可选地,所述方法还包括:

接收针对所述存储空间警告信息的扩容操作,对所述独立冗余磁盘阵列进行扩容。

可选地,所述将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表的步骤包括:

将所述多个存储块中的第一目标存储块分配给所述逻辑卷,将所述第一目标存储块与所述逻辑卷的第一指数位置进行映射,生成映射关系;

依据所述映射关系生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系转换为数据队列;

基于所述数据队列生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系记录为数组;

基于所述数组生成所述逻辑卷空间映射表。

可选地,所述写入数据包括第一逻辑块地址和第一数据长度;依据所述写入数据确定在所述逻辑卷中的第二指数位置的步骤包括:

在所述第一逻辑块地址上叠加所述第一数据长度,确定第一偏移地址;

依据所述第一偏移地址确定在所述逻辑卷中的第二指数位置。

可选地,所述方法还包括:

记录所述逻辑卷空间映射表中存储块的擦写记录;

依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放。

可选地,所述依据所述擦写记录对所述逻辑卷空间映射表中存储块进行释放的步骤包括:

响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;

从所述逻辑卷空间映射表中删除所述第三目标存储块。

可选地,所述方法还包括:

接收针对所述逻辑卷的读请求时,获取所述读请求的读取数据;

依据所述读取数据确定在所述逻辑卷中的第三指数位置;

依据所述第三指数位置,生成读出数据。

可选地,所述读取数据包括第二逻辑块地址和第二数据长度;依据所述读取数据确定在所述逻辑卷中的第三指数位置的步骤包括:

在所述第二逻辑块地址上叠加所述第二数据长度,确定第二偏移地址;

依据所述第二偏移地址确定在所述逻辑卷中的第三指数位置。

可选地,所述依据所述第三指数位置,生成读出数据的步骤包括:

响应于所述第三指数位置记录于所述逻辑卷空间映射表中,跳转至所述第二偏移地址;

从所述第二偏移地址读取数据,生成所述读出数据。

可选地,所述依据所述第三指数位置,生成读出数据的步骤还包括:

响应于所述第三指数位置不记录于所述逻辑卷空间映射表中,确定空值为所述读出数据。

可选地,所述多个存储块的大小相等。

在本发明的第二个方面,本发明实施例还公开了一种独立冗余磁盘阵列存储空间动态分配装置,独立冗余磁盘阵列的存储空间划分为多个存储块,所述装置包括:

创建模块,用于响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;

第一获取模块,用于接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;

写入位置确定模块,用于依据所述写入数据确定在所述逻辑卷中的第二指数位置;

分配模块,用于响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;

第一写入模块,用于将所述写入数据写入所述第二目标存储块。

在本发明的第三个方面,本发明实施例还公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的独立冗余磁盘阵列存储空间动态分配方法的步骤。

在本发明的第四个方面,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的独立冗余磁盘阵列存储空间动态分配方法的步骤。

本发明实施例包括以下优点:

本发明实施例通过响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;依据所述写入数据确定在所述逻辑卷中的第二指数位置;响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;将所述写入数据写入所述第二目标存储块。通过在将多个存储块进行统一管理,当创建一个逻辑卷时,预先只给其分配部分空间。当还针对该逻辑卷进行写入的空间没有进行实际空间分配时,再动态给其分配一个第二目标存储块,并且更新到对应逻辑卷空间映射表中,保证分配到逻辑卷的空间是和实际需要是一致的,不会造成存储空间的过多浪费;实现独立冗余磁盘阵列存储空间的高效利用,减少了存储空间的浪费。

附图说明

图1是现有的独立冗余磁盘阵列存储空间分配示意图;

图2是现有的独立冗余磁盘阵列存储空间占用示意图;

图3是本发明的一种独立冗余磁盘阵列存储空间动态分配方法实施例的步骤流程图;

图4是本发明的另一种独立冗余磁盘阵列存储空间动态分配方法实施例的步骤流程图;

图5是本发明的独立冗余磁盘阵列存储空间分配第一示意图;

图6是本发明的独立冗余磁盘阵列存储空间分配第二示意图;

图7是本发明的一种独立冗余磁盘阵列存储空间动态分配方法示例的流程图;

图8是本发明的一种独立冗余磁盘阵列存储空间动态分配装置实施例的结构框图;

图9是本发明实施例提供的一种电子设备的结构框图;

图10是本发明实施例提供的一种存储介质的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

通常一块独立冗余磁盘阵列卡一次性管理几十块硬盘,用户通过创建不同的独立冗余磁盘阵列以满足不同的数据读写或安全性要求。除了读写和安全性,如何能够充分利用硬盘存储空间也是一个需要重点关注的问题。当前普遍做法是,在独立冗余磁盘阵列上直接创建不同的逻辑卷对外提供使用。每个逻辑卷所占用的空间是恒定的,往往在创建卷时就被指定。如图1所示,使用5块硬盘构成了一个RAID5_A阵列,并在其上创建了3个卷LUN(逻辑卷)0、LUN1、LUN2、。其中每个逻辑卷占用了一部分存储空间,被占用的空间在后续过程中只能够由对应卷进行使用和读写。但这样的存储空间分配方式存在以下一些问题,如果前期对卷需要使用的空间预估有误,那会造成卷内空间的浪费,或者卷空间不够,这会给后续使用造成很大的困扰。如图2中,当条带表示卷中已被使用的空间。LUN2当前空间已经被完全使用,无法写入更多数据,影响了业务的进行。同时在LUN0和LUN1中还存在着大量的未使用空间,但这些空间无法被LUN2使用,这就造成了RAID阵列中存储空间的浪费。

参照图3,示出了本发明的一种独立冗余磁盘阵列存储空间动态分配方法实施例的步骤流程图;在本发明实施例中,独立冗余磁盘阵列的存储空间可以划分为多个存储块(StorageBlock),对多个存储块进行统一进行管理。

所述独立冗余磁盘阵列存储空间动态分配方法具体可以包括如下步骤:

步骤301,响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射。

在需要对独立冗余磁盘阵列创建逻辑卷时,可以从多个存储块中的确定出在创建逻辑卷时分配给其的部分的存储块,即第一目标存储块为创建逻辑块时分配的存储块。如从多个存储块中的确定一个未被分配的存储块为第一目标存储块。然后将第一目标存储块分配给逻辑卷,并且将第一目标存储块与逻辑卷的第一指数位置进行映射,生成逻辑卷空间映射表,即逻辑卷空间映射表记录在逻辑卷中,第一目标存储块与逻辑卷的第一指数位置的映射。其中,逻辑卷的第一指数位置为逻辑卷与分配的存储块对应的指数(index)位置。所述存储块可以为StorageBlock(存储块)。

步骤302,接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据。

在创建完成逻辑卷后,当前端需要对逻辑卷进行写操作时,会发起写入请求。接收针对逻辑卷的写入请求时,获取写入请求的写入数据。

步骤303,依据所述写入数据确定在所述逻辑卷中的第二指数位置。

依据写入数据确定需要在逻辑卷对应的存储块中的写入位置,即确定逻辑卷中的第二指数位置。第二指数位置为在逻辑卷中针对写入数据进行写入对应的指数(index)位置。

步骤304,响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表。

然后确定第二指数位置是否在基于逻辑卷空间映射表中存在与其相同的第一指数位置。在第二指数位置与第一指数位置不相同时,说明需要写入数据的位置并未实际分配有实际存储空间的存储块。此时,可以从多个存储块中,确定与第一目标存储块不同,且并未分配的存储块为第二目标存储块,并且将第二目标存储块更新到逻辑卷空间映射表中。

步骤305,将所述写入数据写入所述第二目标存储块。

将写入数据写入到第二目标存储块中,通过第二目标存储块对写入数据进行存储。

本发明实施例通过响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;依据所述写入数据确定在所述逻辑卷中的第二指数位置;响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;将所述写入数据写入所述第二目标存储块。通过在将多个存储块进行统一管理,当创建一个逻辑卷时,预先只给其分配部分空间。当还针对该逻辑卷进行写入的空间没有进行实际空间分配时,再动态给其分配一个第二目标存储块,并且更新到对应逻辑卷空间映射表中,保证分配到逻辑卷的空间是和实际需要是一致的,不会造成存储空间的过多浪费;实现独立冗余磁盘阵列存储空间的高效利用,减少了存储空间的浪费。

参照图4,示出了本发明的另一种独立冗余磁盘阵列存储空间动态分配方法实施例的步骤流程图;在本发明实施例中,可以将独立冗余磁盘阵列的存储空间平均分割为相同大小的多个存储块。所述独立冗余磁盘阵列存储空间动态分配方法具体可以包括如下步骤:

步骤401,响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射。

在本发明实施例中,当需针对独立冗余磁盘阵列创建一个逻辑卷时,可以将多个存储块中的第一目标存储块,预先只给该逻辑卷分配部分空间。并生成维护一张第一目标存储块同逻辑卷的第一指数位置之间的动态映射表,用来表示逻辑卷当前实际占用的空间。第一指数位置为逻辑卷实际分配的存储空间位置。

可以参照图5,当在RAID5_A阵列上创建LUN0、LUN1、LUN2时,实际只预先分配了部分空间。图5中存储块表示的是由多个条带组成的存储空间,这个大小可以在实际使用过程中按需进行设置。但存储块的尺寸在单个独立冗余磁盘阵列中一致。如图5所示创建LUN0时将其总空间大小设置为4个存储块,但实际只分配了1个第一目标存储块,LUN1配置为5个存储块,但是初始化时只分配了1个第一目标存储块。同样LUN2配置为3个存储块,但实际也只分配了1个第一目标存储块。

在本发明实施例中,对于述将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表的步骤包括:

子步骤S4011,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,将所述第一目标存储块与所述逻辑卷的第一指数位置进行映射,生成映射关系。

在生成逻辑卷空间映射表时,可以先将第一目标存储块分配给逻辑卷,并将第一目标存储块与第一指数位置进行映射,生成映射关系。

子步骤S4011,依据所述映射关系生成所述逻辑卷空间映射表。

再将映射关系进行存储,生成逻辑空间映射表。如下表所示,逻辑卷1的逻辑空间映射表中记录了第一目标存储块(Block0)与第一指数位置(index0)的映射关系。

进一步地,对于映射关系的存储记录可由数组或链表实现。

具体地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:将所述映射关系转换为数据队列;基于所述数据队列生成所述逻辑卷空间映射表。

在实际应用中,可以将映射关系转换为数据队列进行记录存储,通过数据队列生成逻辑卷空间映射表。

具体地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:将所述映射关系记录为数组;基于所述数组生成所述逻辑卷空间映射表。

在实际应用中,可以将映射关系转换为数组进行记录存储,通过数组生成逻辑卷空间映射表。其中数组的数据结构体可以根据实际需求进行设置,本发明实施例不作具体限定。

步骤402,接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据。

在初次分配了逻辑卷的第一目标存储块后,接收针对逻辑卷的写入请求,即当前端有写入请求时,获取写入请求的写入数据。

步骤403,依据所述写入数据确定在所述逻辑卷中的第二指数位置。

在得到写入数据后,依据写入数据记载的写入信息,确定在写入请求在逻辑卷中访问的第二指数位置。

在本发明的一可选实施例中,所述写入数据包括所述第一逻辑块地址和第一数据长度;依据所述写入数据确定在所述逻辑卷中的第二指数位置的步骤包括:在所述第一逻辑块地址上叠加所述第一数据长度,确定第一偏移地址;依据所述第一偏移地址确定在所述逻辑卷中的第二指数位置。

通过写入数据的第一逻辑块地址(LBA地址)和第一数据长度,计算出本次访问需要偏移的地址,即确定第一偏移地址,基于第一偏移地址确定其在逻辑卷中的指数位置,即第二指数位置。第二指数位置为写入请求访问的指数位置。

步骤404,响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表。

得到需要访问的第二指数位置后,可以将第二指数位置与第一指数位置进行对比,当第二指数位置与第一指数位置不相同时,即第二指数位置对应的存储空间并未实际分配给该逻辑卷,可以从多个存储块中,确定即第二指数位置对应第二目标存储块,将第二目标存储块分配给逻辑卷,并且将第二目标存储块更新到逻辑卷空间映射表中。如图6所示,可以将第二目标存储块(Block1)分配给逻辑卷。对应的逻辑卷空间映射表更新为如下表所示:

步骤405,将所述写入数据写入所述第二目标存储块。

将写入数据写入第二目标存储块中,通过第二目标存储块存储写入数据。

步骤406,响应于所述第二指数位置与所述第一指数位置相同,将所述写入数据写入所述第一目标存储块。

当第二指数位置与第一指数位置相同时,即第二指数位置对应的存储空间已经实际分配给该逻辑卷,响应于第二指数位置与第一指数位置相同,将写入数据写入第一目标存储块中,通过第一目标存储块存储写入数据。

步骤407,对所述多个存储块进行记录,生成存储空间记录表。

在本发明实施例中,在分配存储块的同时,会对多个存储块进行记录,记录每个存储块的分配使用情况,生成存储空间记录表。当有存储块的分配使用情况发生改变时,都会对存储空间记录表进行更新。

具体地,存储空间记录表由于所述多个存储块及其对应的特征值组成,所述特征值包括第一特征值和第二特征值;所述对所述多个存储块进行记录,生成存储空间记录表的步骤包括:将所述多个存储块中分配的存储块记录为所述第一特征值;将所述多个存储块中未分配的存储块记录为所述第二特征值。

在实际应用中,对将全部存储块中已经分配的存储块记录为第一特征值,将为分配的存储块记录为第二特征值。对于存储空间记录表可以参照下表,记录了独立冗余磁盘阵列每个存储块的使用情况;第一特征值为1、第二特征值为0。

步骤408,响应于所述第一特征值的数量大于预设阈值,生成存储空间警告信息。

在第一特征值的数量大于预设阈值时,说明实际剩余存储空间不足,可以响应于第一特征值的数量大于预设阈值,生成存储空间警告信息。通过存储空间警告信息提醒管理人员当前的独立冗余磁盘阵列实际剩余空间不足。

步骤409,接收针对所述存储空间警告信息的扩容操作,对所述独立冗余磁盘阵列进行扩容。

当管理人员接收存储空间警告信息后,可以对独立冗余磁盘阵列进行扩容,此时接收针对存储空间警告信息的扩容操作,对独立冗余磁盘阵列进行扩容。

步骤410,记录所述逻辑卷空间映射表中存储块的擦写记录。

在本发明实施例中,还会对逻辑卷空间映射表中存储块的擦写记录进行记录。

步骤411,依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放。

当擦写记录中发现该逻辑卷所分配的存储块空间空闲较长时间时,可以对该存储块空间对应的存储块,即第三目标存储块进行释放,以回收该存储空间。

在本发明的一可选实施例中,所述依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放的步骤包括:响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;从所述逻辑卷空间映射表中删除所述第三目标存储块。

当擦写记录中记录第三目标存储块被完全格式化或者写零等数据清空操作后,且超过预设时长未有数据继续写入的时候,对第三目标存储块进行释放,从逻辑卷空间映射表中删除第三目标存储块,将第三目标存储块返回到独立冗余磁盘阵列的可以存储块中,供其它逻辑卷进行使用。

步骤412,接收针对所述逻辑卷的读请求,获取所述读请求的读取数据。

此外,前端还会对逻辑卷进行读请求进行处理。接收针对逻辑卷的读请求时,可以获取读请求的读取数据。

步骤413,依据所述读取数据确定在所述逻辑卷中的第三指数位置。

在得到读取数据后,依据读取数据记载的读取信息,确定在读请求在逻辑卷中访问的第三指数位置。

在本发明的一可选实施例中,所述读取数据包括所述第二逻辑块地址和第二数据长度;依据所述读取数据确定在所述逻辑卷中的第三指数位置的步骤包括:在所述第二逻辑块地址上叠加所述第二数据长度,确定第二偏移地址;依据所述第二偏移地址确定在所述逻辑卷中的第三指数位置。

通过读取数据的第二逻辑块地址(LBA地址)和第二数据长度,计算出本次访问需要偏移的地址,即确定第二偏移地址,基于第二偏移地址确定其在逻辑卷中的指数位置,即第三指数位置。第三指数位置为读请求访问的指数位置。

步骤414,依据所述第三指数位置,生成读出数据。

依据第三指数位置对应的存储空间,从该存储空间中读出目标数据,生成读出数据。

在本发明的一可选实施例中,所述依据所述第三指数位置,生成读出数据的步骤包括:响应于所述第三指数位置记录于所述逻辑卷空间映射表中,跳转至所述第二偏移地址;从所述第二偏移地址读取数据,生成所述读出数据。

在实际应用中,当第三指数位置在逻辑卷空间映射表中记录,即对应映射空间存在于逻辑卷中,可以在逻辑卷中跳转至第三指数位置对应的第二偏移地址,并从第二偏移地址中读出相应的数据,生成读出数据,反馈给前端。

在本发明的一可选实施例中,所述依据所述第三指数位置,生成读出数据的步骤还包括:响应于所述第三指数位置不记录于所述逻辑卷空间映射表中,确定空值为所述读出数据。

在实际应用中,当第三指数位置不在逻辑卷空间映射表中记录,即对应映射空间并不存在于逻辑卷中,确定空值为读出数据。由逻辑卷层面直接返回内容0至前端。

本发明实施例通过响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;依据所述写入数据确定在所述逻辑卷中的第二指数位置;响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;将所述写入数据写入所述第二目标存储块;响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;从所述逻辑卷空间映射表中删除所述第三目标存储块。通过在将多个存储块进行统一管理,当创建一个逻辑卷时,预先只给其分配部分空间。当还针对该逻辑卷进行写入的空间没有进行实际空间分配时,再动态给其分配一个第二目标存储块,并且更新到对应逻辑卷空间映射表中,保证分配到逻辑卷的空间是和实际需要是一致的,不会造成存储空间的过多浪费;并且对逻辑卷中长期不使用的存储块进行回收,实现独立冗余磁盘阵列存储空间的高效利用,减少了存储空间的浪费。

为了使本领域技术人员能够更好地理解本发明实施例,下面通过一个例子对本发明实施例加以说明:

参照图7,示出了本发明的一种独立冗余磁盘阵列存储空间动态分配方法示例的流程图。

对于创建LUN(逻辑卷):

第一步:RAID卡进行创建LUN卷的操作。

第二步:创建LUN卷,并且创建保存LUN空间分配的映射表,实际只分配部分Block(存储块)到LUN卷中。

第三步:将RAID阵列的存储空间记录表对应Block位置置为1(第一特征值),表示此Block已被实际分配。

对于写LUN操作:

第一步:前端对指定LUN卷进行写操作,下发命令中包含了LBA(逻辑块地址)地址和对应的数据长度,和实际数据。

第二步:通过LBA和length(数据长度)计算待写入数据的每一段所位于的实际index(指数)位置是否已有Block被分配。计算公式为通过LBA / BlockSize(存储块尺寸)获取到index序号,通过LBA / BlockSize获取到对应写入内容在Block中的位置偏移。LBA的写入可能会跨多个Block,所以需要对LBA按length进行递增遍历到所有实际需要写入的index。获取到对应位置后,对内容进行写入,结束一次写入。假如对应index位置还未进行Block映射,则进入第三步。

第三步:需要写入的地址空间未进行实际Block空间分配,LUN从RAID阵列中申请Block空间。并将对应的Blcok空间映射到自己的LUN空间映射表中。再进行实际的写操作。

对于读LUN操作:

第一步:前端下发对LUN的读取操作,传递了参数LBA地址和length。

第二步:通过LBA地址和Length计算读取的空间是否在LUN的存储空间映射表中,如果在,则通过计算获取数据在Block中的偏移位置,进行数据读取,并返回给前端请求。读取操作结束。如果需要读取的index位置还未进行实际的Block空间映射,则继续进行第三步。

第三步:由LUN层组织对应的内容为0的数据,并填充到返回数据的对应位置中,返回给前端请求。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图8,示出了本发明的一种独立冗余磁盘阵列存储空间动态分配装置实施例的结构框图;在本发明实施例中,独立冗余磁盘阵列的存储空间划分为多个存储块。

所述独立冗余磁盘阵列存储空间动态分配装置具体可以包括如下模块:

创建模块801,用于响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;

第一获取模块802,用于接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;

写入位置确定模块803,用于依据所述写入数据确定在所述逻辑卷中的第二指数位置;

分配模块804,用于响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;

第一写入模块805,用于将所述写入数据写入所述第二目标存储块。

在本发明的一可选实施例中,所述装置还包括:

第二写入模块,用于响应于所述第二指数位置与所述第一指数位置相同,将所述写入数据写入所述第一目标存储块。

在本发明的一可选实施例中,所述装置还包括:

第一记录模块,用于对所述多个存储块进行记录,生成存储空间记录表。

在本发明的一可选实施例中,所述存储空间记录表由于所述多个存储块及其对应的特征值组成,所述特征值包括第一特征值和第二特征值;所述第一记录模块包括:

第一记录子模块,用于将所述多个存储块中分配的存储块记录为所述第一特征值;

第二记录子模块,用于将所述多个存储块中未分配的存储块记录为所述第二特征值。

在本发明的一可选实施例中,所述装置还包括:

存储空间警告信息生成模块,用于响应于所述第一特征值的数量大于预设阈值,生成存储空间警告信息。

在本发明的一可选实施例中,所述装置还包括:

扩容模块,用于接收针对所述存储空间警告信息的扩容操作,对所述独立冗余磁盘阵列进行扩容。

在本发明的一可选实施例中,所述创建模块801包括:

映射子模块,用于所述多个存储块中的第一目标存储块分配给所述逻辑卷,将所述第一目标存储块与所述逻辑卷的第一指数位置进行映射,生成映射关系;

逻辑卷空间映射表生成子模块,用于依据所述映射关系生成所述逻辑卷空间映射表。

在本发明的一可选实施例中,所述逻辑卷空间映射表生成子模块包括:

队列生成单元,用于将所述映射关系转换为数据队列;

第一逻辑卷空间映射表生成单元,用于基于所述数据队列生成所述逻辑卷空间映射表。

在本发明的一可选实施例中,所述逻辑卷空间映射表生成子模块包括:

数组生成单元,将所述映射关系记录为数组;

第二逻辑卷空间映射表生成单元,用于基于所述数组生成所述逻辑卷空间映射表。

在本发明的一可选实施例中,所述写入数据包括所述第一逻辑块地址和第一数据长度;所述写入位置确定模块803包括:

第一偏移地址确定子模块,用于在所述第一逻辑块地址上叠加所述第一数据长度,确定第一偏移地址;

写入位置确定子模块,用于依据所述第一偏移地址确定在所述逻辑卷中的第二指数位置。

在本发明的一可选实施例中,所述装置还包括:

第二记录模块,用于记录所述逻辑卷空间映射表中存储块的擦写记录;

释放模块,用于依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放。

在本发明的一可选实施例中,所述释放模块包括:

第一释放子模块,用于响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;

删除子模块,用于从所述逻辑卷空间映射表中删除所述第三目标存储块。

在本发明的一可选实施例中,所述装置还包括:

第二获取模块,用于接收针对所述逻辑卷的读请求,获取所述读请求的读取数据;

读取位置确定模块,用于依据所述读取数据确定在所述逻辑卷中的第三指数位置;

读出模块,用于依据所述第三指数位置,生成读出数据。

在本发明的一可选实施例中,所述读取数据包括所述第二逻辑块地址和第二数据长度;所述读取位置确定模块包括:

第二偏移子模块,用于在所述第二逻辑块地址上叠加所述第二数据长度,确定第二偏移地址;

读取位置确定子模块,用于依据所述第二偏移地址确定在所述逻辑卷中的第三指数位置。

在本发明的一可选实施例中,所述读出模块包括:

跳转子模块,用于响应于所述第三指数位置记录于所述逻辑卷空间映射表中,跳转至所述第二偏移地址;

第一读出子模块,用于从所述第二偏移地址读取数据,生成所述读出数据。

在本发明的一可选实施例中,所述读出模块还包括:

第二读出子模块,用于响应于所述第三指数位置不记录于所述逻辑卷空间映射表中,确定空值为所述读出数据。

在本发明的一可选实施例中,所述多个存储块的大小相等。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

参照图9,本发明实施例还提供了一种电子设备,包括:

处理器901和存储介质902,所述存储介质902存储有所述处理器901可执行的计算机程序,当电子设备运行时,所述处理器901执行所述计算机程序,以执行如本发明实施例任一项所述的独立冗余磁盘阵列存储空间动态分配方法。其中,独立冗余磁盘阵列的存储空间划分为多个存储块,所述独立冗余磁盘阵列存储空间动态分配方法包括:

响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;

接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;

依据所述写入数据确定在所述逻辑卷中的第二指数位置;

响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;

将所述写入数据写入所述第二目标存储块。

可选地,所述方法还包括:

响应于所述第二指数位置与所述第一指数位置相同,将所述写入数据写入所述第一目标存储块。

可选地,所述方法还包括:

对所述多个存储块进行记录,生成存储空间记录表。

可选地,所述存储空间记录表由于所述多个存储块及其对应的特征值组成,所述特征值包括第一特征值和第二特征值;所述对所述多个存储块进行记录,生成存储空间记录表的步骤包括:

将所述多个存储块中分配的存储块记录为所述第一特征值;

将所述多个存储块中未分配的存储块记录为所述第二特征值。

可选地,所述方法还包括:

响应于所述第一特征值的数量大于预设阈值,生成存储空间警告信息。

可选地,所述方法还包括:

接收针对所述存储空间警告信息的扩容操作,对所述独立冗余磁盘阵列进行扩容。

可选地,所述将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表的步骤包括:

将所述多个存储块中的第一目标存储块分配给所述逻辑卷,将所述第一目标存储块与所述逻辑卷的第一指数位置进行映射,生成映射关系;

依据所述映射关系生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系转换为数据队列;

基于所述数据队列生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系记录为数组;

基于所述数组生成所述逻辑卷空间映射表。

可选地,所述写入数据包括所述第一逻辑块地址和第一数据长度;依据所述写入数据确定在所述逻辑卷中的第二指数位置的步骤包括:

在所述第一逻辑块地址上叠加所述第一数据长度,确定第一偏移地址;

依据所述第一偏移地址确定在所述逻辑卷中的第二指数位置。

可选地,所述方法还包括:

记录所述逻辑卷空间映射表中存储块的擦写记录;

依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放。

可选地,所述依据所述擦写记录对所述逻辑卷空间映射表中存储块进行释放的步骤包括:

响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;

从所述逻辑卷空间映射表中删除所述第三目标存储块。

可选地,所述方法还包括:

接收针对所述逻辑卷的读请求时,获取所述读请求的读取数据;

依据所述读取数据确定在所述逻辑卷中的第三指数位置;

依据所述第三指数位置,生成读出数据。

可选地,所述读取数据包括所述第二逻辑块地址和第二数据长度;依据所述读取数据确定在所述逻辑卷中的第三指数位置的步骤包括:

在所述第二逻辑块地址上叠加所述第二数据长度,确定第二偏移地址;

依据所述第二偏移地址确定在所述逻辑卷中的第三指数位置。

可选地,所述依据所述第三指数位置,生成读出数据的步骤包括:

响应于所述第三指数位置记录于所述逻辑卷空间映射表中,跳转至所述第二偏移地址;

从所述第二偏移地址读取数据,生成所述读出数据。

可选地,所述依据所述第三指数位置,生成读出数据的步骤还包括:

响应于所述第三指数位置不记录于所述逻辑卷空间映射表中,确定空值为所述读出数据。

可选地,所述多个存储块的大小相等。

其中,存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

参照图10,本发明实施例还提供了一种计算机可读存储介质1001,所述存储介质1001上存储有计算机程序,所述计算机程序被处理器运行时执行如本发明实施例任一项所述的独立冗余磁盘阵列存储空间动态分配方法。其中,独立冗余磁盘阵列的存储空间划分为多个存储块,所述独立冗余磁盘阵列存储空间动态分配方法包括:

响应于针对所述独立冗余磁盘阵列创建逻辑卷,将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表;所述逻辑卷空间映射表用于记录在所述逻辑卷中,所述第一目标存储块与所述逻辑卷的第一指数位置的映射;

接收针对所述逻辑卷的写入请求,获取所述写入请求的写入数据;

依据所述写入数据确定在所述逻辑卷中的第二指数位置;

响应于所述第二指数位置与所述第一指数位置不相同,将所述多个存储块中的第二目标存储块分配给所述逻辑卷,并依据所述第二目标存储块更新所述逻辑卷空间映射表;

将所述写入数据写入所述第二目标存储块。

可选地,所述方法还包括:

响应于所述第二指数位置与所述第一指数位置相同,将所述写入数据写入所述第一目标存储块。

可选地,所述方法还包括:

对所述多个存储块进行记录,生成存储空间记录表。

可选地,所述存储空间记录表由于所述多个存储块及其对应的特征值组成,所述特征值包括第一特征值和第二特征值;所述对所述多个存储块进行记录,生成存储空间记录表的步骤包括:

将所述多个存储块中分配的存储块记录为所述第一特征值;

将所述多个存储块中未分配的存储块记录为所述第二特征值。

可选地,所述方法还包括:

响应于所述第一特征值的数量大于预设阈值,生成存储空间警告信息。

可选地,所述方法还包括:

接收针对所述存储空间警告信息的扩容操作,对所述独立冗余磁盘阵列进行扩容。

可选地,所述将所述多个存储块中的第一目标存储块分配给所述逻辑卷,生成逻辑卷空间映射表的步骤包括:

将所述多个存储块中的第一目标存储块分配给所述逻辑卷,将所述第一目标存储块与所述逻辑卷的第一指数位置进行映射,生成映射关系;

依据所述映射关系生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系转换为数据队列;

基于所述数据队列生成所述逻辑卷空间映射表。

可选地,所述依据所述映射关系生成所述逻辑卷空间映射表的步骤包括:

将所述映射关系记录为数组;

基于所述数组生成所述逻辑卷空间映射表。

可选地,所述写入数据包括所述第一逻辑块地址和第一数据长度;依据所述写入数据确定在所述逻辑卷中的第二指数位置的步骤包括:

在所述第一逻辑块地址上叠加所述第一数据长度,确定第一偏移地址;

依据所述第一偏移地址确定在所述逻辑卷中的第二指数位置。

可选地,所述方法还包括:

记录所述逻辑卷空间映射表中存储块的擦写记录;

依据所述擦写记录对所述逻辑卷空间映射表中第三目标存储块进行释放。

可选地,所述依据所述擦写记录对所述逻辑卷空间映射表中存储块进行释放的步骤包括:

响应于所述擦写记录为所述第三目标存储块进行数据清空,且超过预设时长未写入数据,对所述第三目标存储块进行释放;

从所述逻辑卷空间映射表中删除所述第三目标存储块。

可选地,所述方法还包括:

接收针对所述逻辑卷的读请求时,获取所述读请求的读取数据;

依据所述读取数据确定在所述逻辑卷中的第三指数位置;

依据所述第三指数位置,生成读出数据。

可选地,所述读取数据包括所述第二逻辑块地址和第二数据长度;依据所述读取数据确定在所述逻辑卷中的第三指数位置的步骤包括:

在所述第二逻辑块地址上叠加所述第二数据长度,确定第二偏移地址;

依据所述第二偏移地址确定在所述逻辑卷中的第三指数位置。

可选地,所述依据所述第三指数位置,生成读出数据的步骤包括:

响应于所述第三指数位置记录于所述逻辑卷空间映射表中,跳转至所述第二偏移地址;

从所述第二偏移地址读取数据,生成所述读出数据。

可选地,所述依据所述第三指数位置,生成读出数据的步骤还包括:

响应于所述第三指数位置不记录于所述逻辑卷空间映射表中,确定空值为所述读出数据。

可选地,所述多个存储块的大小相等。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种独立冗余磁盘阵列存储空间动态分配方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种存储空间处理的方法和装置
  • 一种磁盘阵列卡的控制方法、装置及电子设备
  • 独立磁盘冗余阵列的创建方法、装置及设备
  • 一种独立冗余磁盘阵列重构元数据查询的方法、装置
  • 一种独立冗余磁盘阵列卡控制方法和装置
技术分类

06120116402725