本申请涉及存储领域,尤其涉及一种lun存储单元的管理机制。
背景技术:
thick-lun(thicklogicalunitnumber,胖逻辑单元号),是一种常用的lun实现技术。在thick-lun创建时,通常可基于用户指定的容量需求,从raid中分配与该容量需求大小相同的存储空间,并记录该存储空间的逻辑地址映射关系。
然而,创建thick-lun需要用户在创建之初对业务所需容量有合理的预估,如果容量过小,需要存储设备和业务系统均支持手动扩容,才能进一步扩展存储空间。如果容量过大,会造成存储空间的极大浪费。因此如何有效地管理lun的存储空间成为业界亟待解决地问题。
技术实现要素:
有鉴于此,本申请提供一种lun存储单元的管理方法及装置,用以通过将thick-lun转换成thin-lun实现动态有效管理lun存储单元的存储空间。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种lun存储单元的管理方法,所述方法应用于存储设备,所述存储设备包括若干个预先创建的胖逻辑单元号thick-lun存储单元,所述方法包括:
接收到将所述thick-lun存储单元切换为瘦逻辑单元号thin-lun存储单元的切换指令;
响应于所述切换指令,确定将所述thick-lun存储单元转换为thin-lun存储单元的转换策略;其中,所述存储设备中预配置了多种转换策略;
基于确定出的所述转换策略将所述thick-lun存储单元转换为所述thin-lun存储单元。
根据本申请的第二方面,提供一种lun存储单元的管理装置,所述装置应用于存储设备,所述存储设备包括若干个预先创建的胖逻辑单元号thick-lun存储单元,所述装置包括:
接收单元,用于接收到将所述thick-lun存储单元切换为瘦逻辑单元号thin-lun存储单元的切换指令;
确定单元,用于响应于所述切换指令,确定将所述thick-lun存储单元转换为thin-lun存储单元的转换策略;其中,所述存储设备中预配置了多种转换策略;
转换单元,用于基于确定出的所述转换策略将所述thick-lun存储单元转换为所述thin-lun存储单元。
本申请提出一种lun存储单元的管理方法,存储设备在接收到针对将所述thick-lun存储单元切换为瘦逻辑单元号thick-lun存储单元的切换指令时,存储设备可确定从thick-lun存储单元向thin-lun存储单元的转换策略,并可将该thick-lun存储单元中已使用的单位空间的元数据结构重构为与thin-lun存储单元相同的元数据结构,并释放未使用的单位空间。存储设备还可将该thicklun存储单元对应的io处理机制转换为该thin-lun存储单元对应的io处理机制,从而完成将该thick-lun存储单元转换为thin-lun存储单元。
由于在thick-lun存储单元的存储空间不足,或者出现大量的存储空间浪费时,存储设备可动态将部分thick-lun存储单元转换为thin-lun存储单元,转换成随时用,随时分配存储空间的机制,同时释放未使用的单位空间,使得存储设备有更多的可进行分配的单位空间,因此可更为有效、合理地管理各个lun的存储空间。
附图说明
图1是本申请一示例性实施例示出的一种存储设备的架构示意图;
图2是本申请一示例性实施例示出的一种lun存储单元的管理方法的流程图;
图3是本申请一示例性实施例示出的一种thick-lun存储单元对应的bitmap示意图;
图4(a)是本申请一示例性实施例示出的一种thick-lun存储单元对应的bitmap示意图;
图4(b)是本申请一示例性实施例示出的一种thick-lun存储单元对应的逻辑地址索引树的示意图;
图5是本申请另一示例性实施例示出的一种thick-lun存储单元对应的bitmap示意图;
图6是本申请另一示例性实施例示出的一种thick-lun存储单元对应的逻辑地址映射表的示意图;
图7是本申请另一示例性实施例示出的一种thick-lun存储单元对应的bitmap行的示意图;
图8是本申请另一示例性实施例示出的一种thick-lun存储单元对应的bitmap的示意图;
图9是本申请另一示例性实施例示出的一种thick-lun存储单元对应的辑地址映射表的示意图;
图10是本申请一示例性实施例示出的一种lun存储单元的管理装置的硬件结构图;
图11是本申请一示例性实施例示出的一种lun存储单元的管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在存储设备中,一般采用虚拟化技术,通过多级映射关系实现lun存储单元的访问。
例如,如图1所示,图1是本申请一示例性实施例示出的一种存储设备的架构示意图。存储设备中可包括多个物理磁盘,该多个物理磁盘中的任意几个物理磁盘可组成raid阵列。在raid阵列中可划分出一段存储空间提供给lun存储单元。该lun存储单元对用户可见,用户可直接对lun进行访问。
通常,lun可有多种类型,比如thick-lun、thin-lun等。
其中,对于thick-lun来说,在创建thick-lun时,存储设备可基于用户指定的容量,在raid中为所述thick-lun分配与该用户指定的容量相同的存储空间。
例如,用户指定的容量为100gb,存储设备可从raid1中为该创建的thick-lun分配100gb的存储空间。假设分配的100gb的存储空间是从raid1的500gb-600gb的一段存储空间,此时该分配的存储空间的逻辑地址映射关系可表示为【1,500,100】。其中,1表示raid阵列的编号,500可表示为raid阵列上分配出的空间的起始地址,100表示分配的存储空间的长度。
然而,采用thick-lun,用户需要在对存储空间的规划之初,对该存储设备对应的业务容量有合理的预估。如果预估的容量过小,需要存储设备和业务系统均支持手动扩容才可进一步扩展存储空间。如果预估的容量过大,则造成存储空间的极大浪费。
对于thin-lun来说,在创建thin-lun存储单元时,存储设备可为该thin-lun存储单元分配部分用户指定的容量大小的存储空间。在用户使用该thin-lun存储单元时,如果为该thin-lun存储单元分配的容量不足,则可在为该thin-lun分配存储空间。
例如,假设用户指定的容量为100gb,存储设备可从raid中为该thin-lun存储单元分配10gb的存储空间。
由于thin-lun存储单元基本可做到随用随分,所以可有效地解决thick-lun存储空间的浪费。但是,但是thin-lun存储单元对应的逻辑映射地址映射关系更为复杂,所以可造成thin-lun访问延时、元数据占用存储空间大等问题。
基于此,本申请提出一种lun存储单元的管理方法,存储设备在接收到针对将所述thick-lun存储单元切换为瘦逻辑单元号thick-lun存储单元的切换指令时,存储设备可确定从thick-lun存储单元向thin-lun存储单元的转换策略,并可将该thick-lun存储单元中已使用的单位空间的元数据结构重构为与thin-lun存储单元相同的元数据结构,并释放未使用的单位空间。存储设备还可将该thick-lun存储单元对应的io处理机制转换为该thin-lun存储单元对应的io处理机制,从而完成将该thick-lun存储单元转换为thin-lun存储单元。
由于在thick-lun存储单元的存储空间不足,或者出现大量的存储空间浪费时,存储设备可动态将部分thick-lun存储单元转换为thin-lun存储单元,转换成随时用,随时分配存储空间的机制,同时释放未使用的单位空间,使得存储设备有更多的可进行分配的单位空间,因此可更为有效、合理地管理lun的存储空间。
参见图2,图2是本申请一示例性实施例示出的一种lun存储单元的管理方法的流程图,该方法可包括步骤201至步骤203。
步骤201:存储设备接收到将所述thick-lun存储单元切换为瘦逻辑单元号thin-lun存储单元的切换指令。
其中,上述单位空间,可以是指基于raid可提供的最小划分单位,将lun存储单元(不论是thick-lun,还是thin-lun)对应的存储空间划分成的若干个小的存储空间。换句话来说,该所有的单位空间可组成该lun对应的总的存储空间。
例如,假设thick-lun存储单元对应的存储空间为100gb,那么单位空间可为1g,该存储空间由100个单位空间组成。
为了更清楚描述本申请所提供的lun存储单元的管理方法,下面先对本申请提供的thick-lun存储单元对应的元数据的结构和thin-lun存储单元对应的元数据结构进行详细地介绍。
在thick-lun存储单元中,本申请为该thick-lun存储单元的元数据增加了写bitmap。该写bitmap可代表真实的thick-lun存储单元的存储空间。换句话来说,存储设备可通过计算该bitmap每一比特位在该bitmap中的位置,获取与该比特位对应的真实的存储空间逻辑地址。
上述与该thick-lun存储单元对应的写bitmap包括若干个bitmap行,各bitmap行与上述各单位空间一一对应。在实际应用中,该单位空间可由若干个最小单位空间组成。每个bitmap中包含若干个比特位,每个比特位可表示最小单位空间。
例如,参见图3,图3是本申请一示例性实施例示出的一种thick-lun存储单元对应的bitmap示意图。
假设,thick-lun存储单元被分配的存储空间为100gb,是raid1中的500gb-600gb划分给该thick-lun存储单元,单位空间为1gb,假设最小单位空间为8kb,则与该thick-lun对应的bitmap有100行,每行具有128k个比特位。
该thick-lun存储单元对应的元数据还包括逻辑地址映射关系,该逻辑地址映射关系可表示单位空间的逻辑地址信息。
仍以图3为例,上述bitmap的第一行的前两个置1的比特位对应的单位空间中已使用的最小单位空间的逻辑地址映射关系可记为【1,500,2】。
在thin-lun存储单元中,thin-lun存储单元对应的元数据包括一级写bitmap,二级写bitmap和逻辑地址映射关系。
其中,一级写bitmap包括若干个比特位,各比特位与上述各单位空间一一对应,同时每一个比特位还对应与二级写bitmap一一对应。换句话来说,每一个二级写bitmap可对应一个上述单位空间。在实际应用中,该单位空间可由若干个最小单位空间组成。每个二级写bitmap中包含若干个比特位,每个比特位表示可表示最小单位空间。
参见图4(a),图4(a)是本申请一示例性实施例示出的一种thin-lun存储单元对应的bitmap示意图。
假设,thin-lun存储单元被分配的存储空间为10gb,是将raid1中的30gb-40gb划分给该thin-lun存储单元,单位空间为1gb,最小单位空间为8k。则与该thin-lun存储单元对应的一级写bitmap具有10个有效的比特位。每个比特位对应一个二级写bitmap,每个二级写bitmap具有128k个bit位。
该thin-lun的已使用最小单位空间的逻辑地址映射关系可包括:该已使用最小单位空间对应的比特位在二级写bitmap中的位置信息所代表的逻辑地址,以及该二级写bitmap对应的一级写bitmap的比特位在一级写bitmap中的位置信息所代表的逻辑地址的映射关系。
仍以,图4(a)为例,图4(a)中所画的置1的比特位对应的最小单位空间的逻辑地址映射关系可表示为【0,0,0,3】,其中第一个0表示该bit为对应的最小单位空间中储存的数据所属的写io请求中的携带的逻辑地址,第二个0表示一级写bitmap中的第一个比特位的序号,第三个0表示二级写bitmap中的第一比特位的序号,3表示最小单位空间的3倍。
然后存储设备可以以写io请求携带的逻辑地址为索引,建立如图4(b)所示的逻辑地址索引树。
在完成上述thin-lun存储单元和thick-lun存储单元的元数据结构,下面对本申请提供的lun存储单元的管理方法进行详细地说明。
在本申请实施例中,在thick-lun存储单元的存储空间不足,或者出现大量的存储空间浪费时,存储设备可动态将部分thick-lun存储单元转换为thin-lun存储单元,转换成随时用,随时分配存储空间的机制,同时释放未使用的单位空间,使得存储设备有更多的可进行分配的单位空间,因此可更为有效、合理地管理各个lun的存储空间。
在实现时,存储设备可为管理人员提供一个可视化的交互界面,管理人员通过该交互界面可以查看到该存储设备中的各个lun存储单元信息,如lun存储单元的类型(包括thick-lun),lun存储单元对应的存储空间容量,lun存储单元已使用的单位空间容量。管理人员可通过存储设备为其提供的各个lun存储单元信息,以及业务情况来确定是否需要对存储设备的系统空间进行重新规划。例如,当某些thick-lun存储单元原始规划的存储空间不满足其业务需求,或者某些thick-lun存储单元规划的存储空间过大时,管理人员可对该存储设备的系统空间进行重新规划。比如,管理人员将一些原始规划存储空间过大的thick-lun存储单元转化为thin-lun存储单元,以释放未使用的单位空间供其他lun使用。管理人员还可以将一些原始规划存储空间不足的thick-lun存储单元转化为thin-lun存储单元,以使存储设备自动为该转化后的thin-lun存储单元分配额外的存储空间。
管理人员在确定将哪些thick-lun存储单元转换为thin-lun存储单元后,可通过上述可视化界面,向该存储设备下发切换指令。
当然,存储设备还可自动判断thick-lun存储单元是否满足切换为该述thin-lun存储单元的切换条件。
其中,切换条件可包括:所述存储设备的系统未使用空间低于预设的系统容量阈值,并且所述thick-lun存储单元中写入的数据量远小于该thick-lun存储单元的总容量,且在预设的时间段内,该thick-lun写入的数据量未增加,或者所述thick-lun存储单元与新增的高级服务不匹配,需要切换成与该高级服务匹配的thin-lun存储单元。
需要说明的是,上述“远小于”可以理解为上述thick-lun存储单元的总容量与该thick-lun存储单元写入的数据量的差值大于预设的容量阈值,该预设的容量阈值可以以数量级表示。通常情况下,该预设的容量阈值可以为大于等于103的数量级,当然,管理员可基于实际应用对该预设的容量阈值进行设定。
高级服务可以包括重复数据删除服务,压缩服务。这里不对切换条件和高级服务进行具体地限定。
在判断时,在一种可选的实现方式中,管理人员还可通过该交互界面,给存储设备下发配置信息,例如,该配置信息可为上述预设的容量阈值、预设的系统容量阈值等。存储设备可检测本设备的系统的未使用空间的容量,当该未使用空间低于预设的系统容量阈值时,存储设备可分别判断每个thick-lun存储单元中写入的数据量是否远小于该thick-lun存储单元的总容量,且在预设的时间段内,该thick-lun存储单元写入的数据量是否增加。当任意thick-lun存储单元写入的数据量远小于该thick-lun存储单元的总容量,且在预设的时间段内该thick-lun存储单元写入的数据量未增加时,存储设备可向管理人员发送针对该满足转换条件的thick-lun的转换提示信息。
在另一种可选的实现方式中,当存储设备检测到任意thick-lun存储单元与新增的高级服务不符时,如重复数据删除服务、压缩服务等高级服务,存储设备可向管理人员发送针对该满足转换条件的thick-lun的转换提示消息。
管理人员在接收到上述提示消息后,在确认将提示消息中对应的thick-lun存储单元进行转换时,可通过上述可视化界面,向该存储设备下发切换指令。
步骤202:存储设备响应于所述切换指令,确定将所述thick-lun存储单元转换为thin-lun存储单元的转换策略;其中,所述存储设备中预配置了多种转换策略。
在本申请实施例中,存储设备可相应于接收到针对将所述thick-lun存储单元切换为瘦逻辑单元号thin-lun存储单元的切换指令,存储设备可确定从所述thick-lun存储单元向thin-lun存储单元的转换策略。
在实现时,存储设备可判断已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比是否高于预设阈值。
在一种可选的实现方式中,衡量已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比,可以通过所有已使用的单位空间对应的bitmap行中置1的比特位的个数之和与该写bitmap中所有的比特位总和的比值来进行衡量。
在判断时,存储设备可累加所有已使用的单位空间对应的bitmap行中置1的比特位的个数,将该累加得的个数之和除以该写bitmap中所有的比特位的总和,得到的比值即为上述已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比。存储设备可判断该占比是否高于预设阈值。
在另一种可选的实现方式中,衡量已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比,可通过每个已使用单位空间对应的bitmap行中置1的比特位的个数之和与该bitmap行的比特位总和的比值来衡量。
在判断时,存储设备可分别累加每个已使用单位空间对应的bitmap行中置1的比特位的个数,然后将各累加得到的比特位个数之和分别除以与之对应的bitmap行中的比特位总数,得到各已使用单位空间对应的bitmap行中置1的比特位的个数之和与该bitmap行的比特位总和的比值。如果预设数量的计算得到的比值高于预设阈值,则认为该已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比高于预设阈值。
当然,存储设备判断与所述已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比是否高于预设阈值还有很多方法,在这里不对其进行具体地限定。
如果该占比高于预设阈值,则确定该转换策略为性能优先转换策略。
如果该占比不高于上述预设阈值,则可进一步判断系统负荷是否高于预设的负荷阈值。如果所述系统负荷高于该负荷阈值,则确定所述转换策略为性能优先转换策略,如果所述系统负荷不高于该负荷阈值,则确定所述转换策略为空间优先转换策略。
需要说明的是,性能优先转换策略主要是对已使用的单位空间进行元数据的重构,而空间优先的转换策略则是将一些已使用的单位空间中的数据复制到另一些已使用的单位空间中,并对该另一些已使用的单位空间进行元数据重构。系统负荷可以理解为系统资源,系统负荷高于预设负荷阈值,则可表明系统资源不足,使得系统不足以进行数据复制等复杂的操作。
还需要说明的是,上述系统负荷可基于系统资源消耗程度,系统压力等参数进行表征。上述预设阈值、负荷阈值可由管理人员根据实际情况进行设定,也可由存储设备动态生成,这里不对其进行具体地限定。
当然,对于上述转换策略的确定,存储设备还可通过用户手动选择转换策略来实现。这里,不对存储设备确定转换策略进行特别地限定。
步骤203:存储设备基于该转换策略将所述thick-lun存储单元转换为thin-lun存储单元。
在本申请实施例中,确定上述转换策略后,存储设备可先查找所述thick-lun存储单元中已使用的单位空间。
在查找时,在实现时,存储设备可在与该thick-lun存储单元对应的bitmap中查找置1的比特位,并记录该置1的比特位所在的bitmap行,通过记录的bitmap行确定已使用的单位空间,并记录该已使用的单位空间的逻辑地址映射关系。
仍以图3为例,可记录的已使用的单位空间的逻辑地址映射关系分别为【1,500,1】、【1,501,1】、【1,599,1】。
然后,存储设备可基于确定的转换策略对该已使用的单位空间对应的元数据的结构进行重构,以使重构后的所述已使用的单位空间对应的元数据的结构与所述thin-lun对应的元数据的结构相同。
在本申请实施例中,转换策略可包括性能优先转换策略和空间优先转换策略。
1)性能优先转换策略
性能优先转换策略的核心主要是将已使用的单位空间的元数据重构为thin-lun存储单元对应的元数据结构,并释放未使用的单位空间,同时生成将原有的与thick-lun存储单元对应的io处理机制转换为与转换后的thin-lun存储单元对应的io处理机制。
该性能优先转换策略的优点在于,消耗更少的系统资源,在已使用的单位空间中的已使用部分占thick-lun存储单元总空间的占比过高时,也可使用。
在该性能优先转换策略中,将thick-lun存储单元转换为thin-lun存储单元的过程可包括:为所述已使用的单位空间生成与转换后的thin-lun存储单元对应的一级写bitmap和二级写bitmap,为该已使用的单位空间生成与该转换后的thin-lun存储单元对应的逻辑地址映射关系,释放未使用的存储空间,以及将该thicklun存储单元对应的io处理机制转换为该thin-lun存储单元对应的io处理机制。
其中,a)一级写bitmap和二级写bitmap的创建
在实现时,存储设备可创建一级写bitmap,该一级写bitmap中的每个比特位与上述单位空间一一对应。存储设备可在该一级写bitmap中选择任意的比特位来代表与该thick-lun存储单元中各已使用的单位空间,并将该一级写bitmap中与该thick-lun存储单元中各已使用的单位空间对应的比特位置1。
存储设备可为各已使用的单位空间分别创建对应的二级写bitmap,并基于各使用的单位空间对应的thick-lun的写bitmap中的bitmap行中的各比特位的取值,更新所述二级写bitmap。
仍以图3所示为例,并结合图5对一级写bitmap和二级写bitmap的创建进行详细地说明。
存储设备可创建一级写bitmap。假设逻辑地址映射关系为【1,500,1】、【1,501,1】、【1,599,1】的已使用的单位空间依次对应于图5所示的一级写bitmap的前三个bit位,存储设备可将该前三个比特位置1。
存储设备还可为这三个已使用的单位空间生成二级写bitmap。
对于逻辑地址映射关系为【1,500,1】已使用的单位空间来说,存储设备可基于该单位空间对应的如图3所示的bitmap行各比特位的取值,如第一行中的各比特位的取值,更新该二级写bitmap,使得该二级写bitmap与该bitmap行相同。
对于逻辑地址映射关系为【1,501,1】、【1,599,1】也可采用上述方法,生成与之对应的二级写bitmap,在这里不再赘述。
b)与thin-lun对应的逻辑地址映射关系的创建
在本申请实施例中,存储设备可更新各二级写bitmap中置1的比特位对应的逻辑地址映射关系。
在实现时,存储设备可以基于二级写bitmap中置1的比特位在该二级写bitmap中的位置信息,以及各二级写bitmap在该一级写bitmap中的位置信息,将该各已使用的单位空间的逻辑地址映射关系更换为与thin-lun对应的逻辑地址映射关系。
存储设备可通过逻辑地址索引树或者b+树等组织形式,组织该更换后的与thin-lun对应的逻辑地址映射关系。
仍以图3所示为例,并结合图5和图6,图5中逻辑地址映射关系为【1,500,1】对应的二级写bitmap中,该二级写bitmap中置1的比特位的逻辑地址映射关系可被转换为【0,0,0,2】,其中,第一个0表示该携带该置1的比特位对应的数据的写io请求中携带的逻辑地址,第二个0表示在一级写bitmap中,该二级写bitmap对应的比特位在该一级写bitmap中的序号,第二个0表示该置1的比特位在二级写bitmap中的偏移中的序号,2表示占用两个比特位,即最小单位空间的2倍。
同理,逻辑地址映射关系为【1,501,1】、【1,599,1】的二级写bitmap中,该二级写bitmap中置1的比特位的逻辑地址映射关系可被分别转换为【1gb,1,0,3】和【100gb-8kb,2,128k-1,1】。
如图6所示,存储设备可以以写io请求中携带的逻辑地址为索引,如,0,1gb,100gb-8k,基于逻辑地址索引树对这三个逻辑地址映射关系进行组织,形成如图6所示的逻辑地址映射表。
在本申请实施例中,存储设备可将未使用的单位空间释放掉。在转换成thin-lun存储单元后,在接收到新的写io请求后,存储设备可基于thin-lun存储单元处理io请求的机制,将该写io请求中携带的数据写入至上述已使用单元中的未使用部分,同时为该数据生成与该thin-lun存储单元对应的元数据。当上述已使用的单位空间被写满时,存储设备可为该thin-lun存储单元分配新的存储空间。
2)空间优先转换策略
空间优先的转换策略的核心可以是将一些已使用的单位空间中的数据复制到另一些已使用的单位空间中,并对该另一些已使用的单位空间进行元数据重构。
空间优先转换策略的优点在于通过数据复制,可以合理利用一些已使用的单位空间中的未使用部分,同时释放掉一些已使用的空间,更加增加了存储设备可分配的存储空间。但是,数据复制需要消耗大量的系统资源,以及在当在已使用的单位空间中的已使用部分占thick-lun存储单元总空间的占比过高时,即使进行数据复制,也很难释放更多的已使用的单位空间。
当然,该空间优先的转换策略可以在性能优先转换策略执行之后,进一步执行。
在该空间优先转换策略中,将thick-lun存储单元转换为thin-lun存储单元的过程可包括:将非目标已使用的单位空间中的数据复制在目标已使用的单位空间,为该目标已使用的单位空间生成与转换后的thin-lun存储单元对应的一级写bitmap和二级写bitmap,为该目标已使用的单位空间生成与该转换后的thin-lun存储单元对应的逻辑地址映射关系,释放未使用的以及非目标已使用的单位空间,以及将该thick-lun存储单元对应的io处理机制转换为该thin-lun存储单元对应的io处理机制。
a)数据复制
在实现时,存储设备可从上述记录的已使用的单位空间中选定出目标单位空间。存储设备可将上述已使用的单位空间中的其他单位空间对应的写bitmap行中置1的比特位对应的数据,按照预设的顺序写入至所述目标单位空间中的目标位置,并将该目标单位空间对应的bitmap行中的与该目标位置对应的比特位置1。
在完成数据复制后,存储设备可将该其他单位空间释放。
需要说明的是,目标单位空间可以为一个,也可以为多个。
例如,仍以图3为例,并结合图7,假设选定出的目标单位空间的原逻辑地址映射关系为【1,500,1】,存储设备可将逻辑地址映射关系分别为【1,501,1】、【1,599,1】的已使用单位空间的数据复制至该目标单位空间中,并将将该目标单位空间对应的bitmap行中的与写入位置对应的比特位置1,最终该目标单位空间对应的bitmap行可为如图7所示的bitmap行。
b)一级写bitmap和二级写bitmap的创建
在实现时,存储设备可创建一级写bitmap,该一级写bitmap中的每个比特位与上述单位空间一一对应。存储设备可在该一级写bitmap中选择任意个比特位,来代表与该thick-lun中各目标已使用的单位空间,并将该一级写bitmap中与该thick-lun中各目标单位空间对应的比特位置1。
存储设备可为各目标单位空间分别创建对应的二级写bitmap,并基于各目标单位空间对应的数据复制后所生成的bitmap行中的各比特位的取值,更新所述二级写bitmap。
仍以图3和图7所示为例,并结合图8,假设存储设备选定的目标单位空间为逻辑地址映射关系【1,500,1】对应的已使用的单位空间,将其他非目标单位空间中的数据复制至该目标单位空间后,生成如图7所示的bitmap行。
存储设备可创建一级写bitmap,假设逻辑地址映射关系为【1,500,1】对应于图8所示的一级写bitmap的第一个bit位,存储设备可将该前三个比特位置1。
然后,存储设备可将该单位空间对应的如图7所示的bitmap行中的各比特位的取值,复制在该二级写bitmap中,生成如图8所示与该目标已使用空间对应的二级写bitmap。
c)与thin-lun对应的逻辑地址映射关系的创建
在本申请实施例中,存储设备可更新各二级写bitmap中置1的比特位对应的逻辑地址映射关系。
在实现时,存储设备可以基于二级写bitmap中置1的比特位在该二级写bitmap中的位置信息,以及各二级写bitmap在该一级写bitmap中的位置信息,将该各目标单位空间的逻辑地址映射关系更换为与thin-lun对应的逻辑地址映射关系。
存储设备可通过逻辑地址索引树或者b+树等组织形式,组织该更换后的与thin-lun对应的逻辑地址映射关系。
仍以图3所示为例,并结合图8和图9,图8中逻辑地址映射关系为【1,500,1】对应的二级写bitmap中,该二级写bitmap中置1的比特位的逻辑地址映射关系可被转换为【0,0,0,2】、【1gb,0,2,3】和【100gb-8kb,0,5,1】。
如图9所示,存储设备可以以写io请求中携带的逻辑地址为索引,如,0,1gb,100gb-8kb,基于逻辑地址索引树对这三个逻辑地址映射关系进行组织,形成如图9所示的逻辑地址映射表。
在本申请实施例中,存储设备可将未使用的单位空间释放掉。在转换成thin-lun存储单元后,在接收到新的写io请求后,存储设备可基于thin-lun存储单元处理io请求的机制,将该写io请求中携带的数据写入至上述已使用单元中的未使用部分,同时为该数据生成与该thin-lun存储单元对应的元数据。当上述已使用的单位空间被写满时,存储设备可为该thin-lun存储单元分配新的存储空间。
本申请提出一种lun存储单元的管理方法,存储设备在接收到针对将所述thick-lun存储单元切换为瘦逻辑单元号thick-lun存储单元的切换指令时,存储设备可确定从thick-lun存储单元向thin-lun存储单元的转换策略,并可将该thick-lun存储单元中已使用的单位空间的元数据结构重构为与thin-lun存储单元相同的元数据结构,并释放未使用的单位空间。存储设备还可将该thick-lun存储单元对应的io处理机制转换为该thinlun存储单元对应的io处理机制,从而完成将该thick-lun存储单元转换为thin-lun存储单元。
由于在thick-lun存储单元的存储空间不足,或者出现大量的存储空间浪费时,存储设备可动态将部分thick-lun存储单元转换为thin-lun存储单元,转换成随时用,随时分配存储空间的机制,同时释放未使用的单位空间,使得存储设备有更多的可进行分配的单位空间,因此可更为有效、合理地管理lun的存储空间。
与前述lun存储单元的管理方法的实施例相对应,本申请还提供了lun存储单元的管理装置的实施例。
本申请lun存储单元的管理装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图10所示,为本申请lun存储单元的管理装置所在存储设备的一种硬件结构图,除了图10所示的处理器、内存、网络出接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该存储设备的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图11,图11是本申请一示例性实施例示出的一种lun存储单元的管理装置的框图。所述装置应用于存储设备,该存储设备包括若干个预先创建的胖逻辑单元号thick-lun存储单元,该装置可包括:接收单元1101、确定单元1102、转换单元1103。
其中,接收单元1101,用于接收到将所述thick-lun存储单元切换为瘦逻辑单元号thin-lun存储单元的切换指令;
确定单元1102,用于响应于所述切换指令,确定将所述thick-lun存储单元转换为thin-lun存储单元的转换策略;其中,所述存储设备中预配置了多种转换策略;
转换单元1103,用于基于确定出的所述转换策略将所述thick-lun存储单元转换为所述thin-lun存储单元。
根据一个示例,所述转换单元1103,具体用于查找所述thick-lun存储单元中已使用的单位空间;对所述已使用的单位空间对应的元数据的结构进行重构;其中,重构后的所述已使用的单位空间对应的元数据的结构与所述thin-lun对应的元数据的结构相同;释放未使用的单位空间;以及,将所述thick-lun存储单元对应的io处理机制转换为所述thin-lun存储单元对应的io处理机制。
根据另一个示例,所述thick-lun对应的元数据包括写存储位图bitmap和逻辑地址映射关系;其中所述写bitmap包括若干个bitmap行,各bitmap行与所述thick-lun存储单元中的各单位空间一一对应;所述thin-lun对应的元数据包括一级写bitmap、若干个二级写bitmap、以及逻辑地址映射关系;其中所述若干个二级写bitmap与所述一级写bitmap中的各比特位一一对应;所述转换策略包括性能优先策略和空间优先策略;
当确定出所述转换策略为性能优先转换策略时,所述转换单元1103,进一步用于创建一级写bitmap;其中,所述一级写bitmap中包括若干个比特位,各比特位与所述thick-lun存储单元的各单位空间一一对应;将所述一级写bitmap中与所述thicklun中各已使用的单位空间对应的比特位置1;为各已使用的单位空间分别创建对应的二级写bitmap,并基于各已使用的单位空间对应的所述写bitmap中的bitmap行中各比特位的取值更新所述二级写bitmap;以及,更新各二级写bitmap中置1的比特位对应的逻辑地址映射关系。
根据另一个示例,当确定出所述转换策略为空间优先转换策略时,所述转换单元1103,进一步用于从所述已使用的单位空间中选定出目标单位空间;
将与其他单位空间对应的bitmap行中置1的比特位对应的已存储数据,按照预设的顺序写入所述目标单位空间中的目标位置,将该目标单位空间对应的bitmap行中与所述目标位置对应的比特位置1,并释放所述其它单位空间;创建一级写bitmap;其中,所述一级写bitmap中包括若干个比特位,各比特位与所述thick-lun存储单元的各单位空间一一对应;将一级写bitmap中与所述目标单位空间对应的比特位置1;以及,为所述目标单位空间创建对应的二级写bitmap,并基于该目标单位空间对应的所述bitmap行中的各比特位的取值,更新所述二级写bitmap;更新各二级写bitmap中置1的比特位对应的逻辑地址映射关系。
根据另一个示例,所述确定单元1102,具体用于判断与所述已使用单位空间对应的bitmap行中置1的比特位对应的已存储数据所占用空间在所述thick-lun存储单元的总空间的占比是否高于预设阈值,如果该占比高于所述预设阈值,则确定所述转换策略为性能优先转换策略;如果所述占比不高于所述预设阈值,则进一步判断系统负荷是否高于预设的负荷阈值;如果所述系统负荷高于所述负荷阈值,则确定所述转换策略为性能优先转换策略;如果所述系统负荷不高于所述负荷阈值,则确定所述转换策略为空间优先转换策略。
根据另一个示例,所述装置还包括:判断单元1104,用于判断所述thick-lun存储单元是否满足切换为所述thin-lun存储单元的切换条件;当所述thick-lun存储单元满足所述切换条件时,向用户发出转换提示消息。
根据一个示例,所述转换条件包括:所述存储设备的系统未使用空间低于预设的系统容量阈值,并且所述thick-lun存储单元中写入的数据量远小于该thick-lun存储单元的总容量,且在预设的时间段内,该thick-lun写入的数据量未增加;或者所述thick-lun存储单元与新增的高级服务不匹配。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。