一种磁盘损坏扇区屏蔽方法及装置的制作方法

文档序号:6373102阅读:387来源:国知局
专利名称:一种磁盘损坏扇区屏蔽方法及装置的制作方法
技术领域
本发明涉及网络存储技术,尤其涉及一种网络存储设备中RAID阵列的磁盘坏道屏蔽方法及装置。
背景技术
·
在网络存储设备中,通常会使用多个磁盘构建RAID阵列。一个RAID阵列中包括有多个磁盘。而磁盘在实际使用中具有有限的使用寿命。如果磁盘存在多个坏道(通常是指有扇区损坏的空间,比如一个条带中的条带块)则可能会导致磁盘无法继续使用(判断标准有很多),磁盘会被踢出RAID阵列,RAID阵列从冗余状态变为无冗余状体。此时必须通过增加新的磁盘进行重建变为冗余状态。当RAID阵列中的磁盘中存在坏道时,其可能引发以下几个问题问题一数据丢失风险。不同的冗余度的RAID阵列允许同时损坏的磁盘数不同。RAID5允许坏掉一块磁盘,而RAID6允许同时坏掉2块磁盘。当RAID5阵列中有磁盘存在坏道而被阵列踢出,此时阵列降为无冗余状态。在重建完成前如再有一块磁盘坏掉,则此时RAID数据丢失。问题二 硬盘容量浪费问题。RAID阵列允许损坏的磁盘越多,也就阵列容量浪费也就越多。比如RAID5中有3块磁盘,其实际只有2块硬盘的容量提供用户使用,另一块是存放校验数据的。而RAID6中4块磁盘组成的阵列实际也只有2块磁盘的有效容量。如果只是因为一点坏道而引起的磁盘被踢,则大大降低了磁盘的使用寿命。针对上述问题,现有技术采用坏道扇区替换技术。其实现原理是这样的当IO写磁盘不成功,有坏道错误返回,则将此IO进行拆分,逐个下发写磁盘,最后定位到坏道,将此坏道的地址进行标记,重新映射到一个集中的坏道替换区间,则下次读写此坏道时,转到坏道替换空间,获取需要的数据。目前在实际应用中普遍是每个磁盘可以允许一定数量的扇区损坏,支持对坏道扇区进行替换。然而由于磁盘长时间使用,且业务量日益增大,硬盘的损坏日趋严重且日益集中,按照一个一个扇区的替换无疑存在性能的较大损失且实现复杂。比如说当磁盘中存在IOM大小的连续坏道,则要进行20480次替换,每次替换都涉及到拆分以及搜索算法的使用。这无疑非常影响性能。进一步来说,由于磁盘的某块地方存在物理坏道,久而久之,会繁衍到此磁盘的周边物理区域也坏掉,则此块磁盘也会不久被RAID踢出,无疑磁盘的使用寿命也没有延长。

发明内容
有鉴于此,本发明提供一种磁盘损坏扇区屏蔽装置,应用于网络存储设备上,该网络存储设备包括RAID阵列,其中该RAID阵列包括多个物理磁盘;该装置包括数据写入单元、错误处理单元以及扩容单元;其中
数据写入单元,用于根据预先创建的空间映射表中保存的映射关系将虚拟磁盘上的数据写入到RAID阵列的一个或多条带上,所述虚拟磁盘的虚拟空间通过空间映射表中保存的映射关系映射到RAID阵列中的一个或多个物理段的物理空间上,其中每个物理段均包括至少一个条带;错误处理单元,用于在当前写入数据的条带存在损坏扇区时按照预设的存储空间大小选定一个故障物理段,所述故障物理段至少包括当前存在损坏扇区的条带,且故障物理段所包括的存储空间大小小于等于当前条带所在的物理段的大小;扩容单元,用于从RAID阵列剩余存储空间中选定一个替换物理段,所述替换物理段的大小大于或等于所述故障物理段,该段扩容单元进一步用于将空间映射表中映射到该故障物理段的物理空间上的虚拟磁盘的虚拟空间重新映射到替换物理段上大小对应的物理空间上。 本发明还提供一种磁盘损坏扇区屏蔽方法,应用于网络存储设备上,该网络存储设备包括RAID阵列,其中该RAID阵列包括多个物理磁盘;该方法包括A、根据预先创建的空间映射表中保存的映射关系将虚拟磁盘上的数据写入到RAID阵列的一个或多条带上,所述虚拟磁盘的虚拟空间通过空间映射表中保存的映射关系映射到RAID阵列中的一个或多个物理段的物理空间上,其中每个物理段均包括至少一个条带;B、在当前写入数据的条带存在损坏扇区时按照预设的存储空间大小选定一个故障物理段,所述故障物理段至少包括当前存在损坏扇区的条带,且故障物理段所包括的存储空间大小小于等于当前条带所在的物理段的大小;C、从RAID阵列剩余存储空间中选定一个替换物理段,所述替换物理段的大小大于或等于所述故障物理段,该段扩容单元进一步用于将空间映射表中映射到该故障物理段的物理空间上的虚拟磁盘的虚拟空间重新映射到替换物理段上大小对应的物理空间上。本发明巧妙地运用了 VD技术以及段扩容技术来解决现有物理磁盘上存在损坏扇区的问题,有效地规避了现有解决方案中屏蔽损坏扇区严重影响网络存储设备计算性能的问题。


图I是本发明一种实施方式中磁盘损坏扇区屏蔽装置的逻辑结构图。图2是本发明一种实施方式中磁盘损坏扇区屏蔽方法的处理流程图。图3是本发明一种实施方式中磁盘损坏扇区屏蔽过程示意图。
具体实施例方式请参考图I以及图2。本发明一种磁盘损坏扇区屏蔽装置,应用于网络存储设备上。网络存储设备包括RAID阵列以及存储控制器,存储控制器的硬件结构与计算机类似,包括CPU以及内存等基本硬件。以计算机程序实现为例(并不排除其他实现方式),该磁盘损坏扇区屏蔽装置包括数据写入单元、错误处理单元以及扩容单元。所述装置在使用前的准备以及运行的过程包括步骤步骤101,扩容单元使用RAID阵列的至少一个段创建至少一个VD,并相应更新空间映射表中VD的虚拟空间与物理段的物理空间之间的映射关系。VD (虚拟磁盘,Virtual Disk)技术已经在存储领域有一定规模的应用。VD可以支持两个或多个不连续的空闲物理段从逻辑上组合成连续的虚拟磁盘空间。因此VD的虚拟空间既可以映射到一个连续的物理空间,也可以通过映射整合多个非连续的物理空间,这样就能解决RAID阵列中物理磁盘分配时产生的碎片问题,提高物理磁盘的利用率。当上层VD的虚拟空间需要扩容时,可以再添加几个物理段加入现有VD,目前VD可以支持几十个甚至更多的物理段。VD对于用户或者用户的业务来说就是其能看到磁盘。用户或者用户应用程序看到的磁盘空间事实上是虚拟空间。因此扩容单元在创建VD时需要在空间映射表中建立虚拟磁盘空间与物理空间映射关系,将这些虚拟空间相应映射到物理空间上去,也就是分配给该VD的一个或者多个物理段的物理空间。步骤102,数据写入单元根据空间映射表中保存的映射关系将VD的数据写入RAID阵列的一个或者多个条带中。步骤103,错误处理单元;用于在确定当前写入数据的条带存在损坏扇区时,按照预设的存储空间大小选定一个故障物理段。步骤104,扩容单元从RAID阵列剩余存储空间中选定一个替换物理段,所述替换物理段的大小大于或等于所述故障物理段;扩容单元取消空间映射表中该故障物理段与对应的虚拟磁盘空间之间的映射关系,在空间映射表中新增该替换物理段与对应的虚拟磁盘空间之间的映射关系。对于用户或者用户的应用程序而言,业务数据是写入到VD中的,然而实际上VD收到的数据需要根据前述映射关系进一步写到RAID阵列的物理空间中去。如前所述,RAID阵列的物理空间会被划分为多个段,而每个段通常会包括一个或者多个条带(大部分情况下是很多个条带)。RAID阵列的操作单位是条带,因此数据写入单元是以条带为单位执行的。数据如何写到条带属于广泛知晓的技术知识,不再细述。数据写到条带的过程中可能会发生写错误,此时数据写入单元会收到写入错误的提示,这样意味着当前条带存在一个或者多个损坏扇区。本发明并不需要像现有技术那样将整个写入数据进行拆分定位到具体哪个扇区损坏了。本发明只需要知道当前条带有损坏扇区即可。此时数据写入单元可以通知错误处理单元进行处理,错误处理单元可以按照预定的策略将包括当前条带在内的一个连续的物理空间选定为故障物理段。需要说明的是这个故障物理段的大小应小于等于当前发生扇区损坏的条带所在的物理段。在优选的实施方式中这里的预定策略可以是以该条带为中心选择一段连续的物理空间作为故障物理段,这样做可以将存在损坏扇区的条带的周围物理空间都作为故障物理段进行对待,可以避免下次该区域内再次出现错误。在大小上可以选定一个100或者200M的存储空间作为故障物理段,如果选取过大则可能浪费磁盘,选择过小则无法有效避免再次出现写入错误,因此可以设计为故障物理段的所包括的存储空间大小小于等于当前条带所在的物理段的大小的20%。当然这里的预定策略可以是其他策略,比如仅仅是当前发生扇区损坏的条带,或者是条带大小的N倍(N为不小于2的自然数),又或者并非以该条带为中心进行选定,可以左右不对称进行选定,但无论如何选取,故障物理段至少要将这个发生扇区损坏的条带包括在内。
选定了故障物理段之后,错误处理单元可以将故障物理段的大小通知扩容单元。VD处理单元可以先判断RAID阵列当前剩余的存储空间是否大于等于该故障物理段,如果是则扩容单元可以从RAID阵列的剩余存储空间(通常为未分配给其他VD的保留空间)中选定一个替换物理段,替换物理段的大小不能小于前述的故障物理段;否则返回错误提示给错误处理单元或者管理员。如果扩容单元选定了替换物理段,此时扩容单元需要将选定的故障物理段从VD中剥离,也就是说确保用户再访问VD时,不会映射到故障物理段的物理空间上来,因此扩容单元需要对空间映射表进行更新,将原来映射到故障物理段物理空间的VD虚拟磁盘空间重新映射到替换物理段对应大小的物理空间上。如前所述由于替换物理段不小于故障物理段,因此映射关系的更新不会受到影响。在映射关系更新之后,扩容单元可以通知数据写入单元将当前数据重新写入,此时数据写入单元根据更新后的空间映射表将数据写到替换物理段的条带中。 由于使用了新的替换物理段,VD空间并没有缩小,用户依然可以按照原来的方式向VD中写入数据,只不过如果替换物理段大小比故障物理段大的话,用户可以发现VD空间变大了,如果替换物理段大小与故障物理段一样大,则用户不会感知到空间大小的变化。进一步来说,考虑到故障物理段可能包括多个条带,剥离之后这些用户数据将对用户不可见,因此为了提高用户的体验,数据写入单元可以在重新映射之前进一步读取故障物理段各个条带上的数据,并将读取到的数据写入到替换物理段的条带上。在优选的实施方式中,故障物理段以及替换物理段都是连续的物理空间,因此可以按顺序进行数据的搬迁,同样,前述空间映射表的更新也可以采用这样顺序进行更新的方式。比如说故障物理段的条带I到条带10--对应到替换物理段的条带I到条带10。请进一步参考图3,图3清晰地展示了本发明如何利用基于VD的段扩容来实现对故障物理段的替换的。假设VD原来只从RAID阵列中多个磁盘(TOs)构成的物理空间中分配到了一个段,由于VC原始段在数据写入过程中发现有扇区损坏,此时左侧的原始段被拆分为三段,中间为故障物理段。分别对应到右侧的新段1,段3以及段2,其中段3为替换物理段。在现有技术中,VD技术以及段扩容技术主要是为了解决用户存储空间进行弹性扩容的问题,而本发明巧妙地运用了 VD技术以及段扩容技术来解决现有物理磁盘上存在损坏扇区的问题,有效地规避了现有解决方案中屏蔽损坏扇区严重影响网络存储设备计算性能的问题。由于本发明中引入了故障物理段,其可以扩展到条带周围的物理空间,这部分物理空间可以被屏蔽掉,避免后续再被访问到,这样就有效缓解损坏扇区周围被访问而导致损坏的扩散。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种磁盘损坏扇区屏蔽装置,应用于网络存储设备上,该网络存储设备包括RAID阵列,其中该RAID阵列包括多个物理磁盘;该装置包括数据写入単元、错误处理单元以及扩容单元;其特征在于 数据写入単元,用于根据预先创建的空间映射表中保存的映射关系将虚拟磁盘上的数据写入到RAID阵列的ー个或多条带上,所述虚拟磁盘的虚拟空间通过空间映射表中保存的映射关系映射到RAID阵列中的ー个或多个物理段的物理空间上,其中每个物理段均包括至少ー个条带; 错误处理单元;用于在当前写入数据的条带存在损坏扇区时按照预设的存储空间大小选定ー个故障物理段,所述故障物理段至少包括当前存在损坏扇区的条带,且故障物理段所包括的存储空间大小小于等于当前条带所在的物理段的大小; 扩容单元,用于从RAID阵列剩余存储空间中选定ー个替换物理段,所述替换物理段的大小大于或等于所述故障物理段,该段扩容单元进ー步用于将空间映射表中映射到该故障物理段的物理空间上的虚拟磁盘的虚拟空间重新映射到替换物理段上大小对应的物理空间上。
2.如权利要求I所述的装置,其特征在于,所述数据写入単元进ー步用于在虚拟磁盘的虚拟空间重新映射后,根据更新后的空间映射表将当前需要写入的数据重新写入到替换物理段的条带上。
3.如权利要求I所述的装置,其特征在于,所述数据写入単元,进ー步用于读取故障物理段中各个条带的数据并将读取到的数据复制到所述替换物理段对应条带上。
4.如权利要求3所述的装置,其特征在干,所述数据写入单元进一步用于在无法读取故障物理段中某个磁盘上的数据时,根据RAID阵列对应的RAID校验算法使用该数据所在条带上的其他磁盘的数据计算出该数据,并将计算得到的数据写入到替换物理段条带上。
5.如权利要求I所述的装置,其特征在于,所述故障物理段的大小为条带大小的N倍,N为大于等于2的自然数,且故障物理段的所包括的存储空间大小小于等于当前条带所在的物理段的大小的20%。
6.一种磁盘损坏扇区屏蔽方法,应用于网络存储设备上,该网络存储设备包括RAID阵列,其中该RAID阵列包括多个物理磁盘;其特征在于,该方法包括 A、根据预先创建的空间映射表中保存的映射关系将虚拟磁盘上的数据写入到RAID阵列的ー个或多条带上,所述虚拟磁盘的虚拟空间通过空间映射表中保存的映射关系映射到RAID阵列中的ー个或多个物理段的物理空间上,其中每个物理段均包括至少ー个条带; B、在当前写入数据的条带存在损坏扇区时按照预设的存储空间大小选定ー个故障物理段,所述故障物理段至少包括当前存在损坏扇区的条带,且故障物理段所包括的存储空间大小小于等于当前条带所在的物理段的大小; C、从RAID阵列剩余存储空间中选定ー个替换物理段,所述替换物理段的大小大于或等于所述故障物理段,该段扩容单元进ー步用于将空间映射表中映射到该故障物理段的物理空间上的虚拟磁盘的虚拟空间重新映射到替换物理段上大小对应的物理空间上。
7.如权利要求6所述的方法,其特征在于,还包括 D、在虚拟磁盘的虚拟空间重新映射后,根据更新后的空间映射表将当前需要写入的数据重新写入到替换物理段的条带上。
8.如权利要求6所述的方法,其特征在于,还包括 E、读取故障物理段中各个条带的数据并将读取到的数据复制到所述替换物理段对应条带上。
9.如权利要求8所述的方法,其特征在于,所述步骤E还包括 在无法读取故障物理段中某个磁盘上的数据时,根据RAID阵列对应的RAID校验算法使用该数据所在条带上的其他磁盘的数据计算出该数据,并将计算得到的数据写入到替换物理段条带上。
10.如权利要求6所述的方法,其特征在于,所述故障物理段的大小为条带大小的N倍,N为大于等于2的自然数,且故障物理段的所包括的存储空间大小小于等于当前条带所在的物理段的大小的20%。
全文摘要
本发明提供一种磁盘损坏扇区屏蔽方法,应用于网络存储设备上,该方法包括A、根据预先创建的空间映射表中保存的映射关系将虚拟磁盘上的数据写入到RAID阵列的条带上;B、在当前写入数据的条带存在损坏扇区时按照预设的存储空间大小选定一个故障物理段,所述故障物理段至少包括当前存在损坏扇区的条带;C、从RAID阵列剩余存储空间中选定一个替换物理段,将空间映射表中映射到该故障物理段的物理空间上的虚拟磁盘的虚拟空间重新映射到替换物理段上大小对应的物理空间上。本发明巧妙地运用了VD技术以及段扩容技术来解决现有物理磁盘上存在损坏扇区的问题。
文档编号G06F12/02GK102799533SQ20121023819
公开日2012年11月28日 申请日期2012年7月10日 优先权日2012年7月10日
发明者李艳 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1