一种基于虚拟磁盘层的检测Raid磁盘拔出的方法及装置的制造方法

文档序号:8472736阅读:432来源:国知局
一种基于虚拟磁盘层的检测Raid磁盘拔出的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种基于虚拟磁盘层的检测Raid磁盘拔出的方法及装置。
【背景技术】
[0002]Raid在收到磁盘拔出事件时,将进入降级或者失效状态。
[0003]传统的磁盘拔出都是物理上的拔出事件。首先通过磁盘监控技术比如smart工具来监测磁盘健康状态,当发现磁盘即将损坏或已经损坏,通过告警模块通知人工替换。损坏的磁盘拔出必须通过人工进行,进而OS监测到磁盘硬件拔出,产生事件通知,由Raid的事件通知层通知到Raid。
[0004]在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
[0005]1.必须在磁盘即将损坏的时间片区内及时通知到人,由人手动拔出磁盘。若磁盘监控或人工处理不及时导致磁盘已经损坏,则会导致大量数据错误;
[0006]2.手工拔出磁盘事件通知到Raid时间周期较长,需要秒级时间。
[0007]由OS监测到磁盘硬件拔出,产生块设备plugout事件的时间是秒级的,在处理大量1的情况下,秒级的延迟将产生大量的1错误,要屏蔽掉这些错误,Raid的错误retry需要设置到秒级,导致磁盘拔出那个时间点会产生秒级的1停顿(重试)。

【发明内容】

[0008]为解决上述技术问题,本发明提出了一种基于虚拟磁盘层的检测Raid磁盘拔出的方法及装置,自动发现磁盘错误并自动通知Raid磁盘拔出,可以提高Raid的健壮性,减少非自动化的错误,同时还和即刻发现磁盘物理拔出方法相结合,使得物理拔出磁盘事件在有1的时候立即通知到Raid,消除磁盘拔出那个时间点可能的1停顿。
[0009]本发明提供了一种基于虚拟磁盘层的检测Raid磁盘拔出的方法,该方法包括:
[0010]建立虚拟磁盘层VSD,所述VSD将磁盘阵列Raid的几何空间划分为保留区和数据区,所述保留区包括超级块区、位图bitmap索引区、坏块重定向索引区和坏块重定向数据区;
[0011]在坏块重定向过程中,所述虚拟磁盘层VSD实时检测所述坏块重定向数据区的磁盘坏块数量,当所述磁盘坏块数量超出设定阈值时,通知所述Raid磁盘拔出;
[0012]在执行读写操作时,所述虚拟磁盘层VSD实时检测所述读写操作是否有错误码返回,当所述错误码为磁盘介质错误时,通知所述Raid磁盘拔出。
[0013]优选地,所述设定阈值小于等于所述Raid实际可容忍的坏块数量。
[0014]优选地,所述通知所述Raid磁盘拔出具体为:通过调用内部接口启动预设线程执行,通知所述Raid磁盘拔出。
[0015]优选地,所述内部接口启动所述预设线程执行时,若所述预设线程还没有执行完毕,则返回,否则启动所述预设线程执行。
[0016]优选地,所述内部接口与磁盘物理拔出时所调用的底层接口相同。
[0017]相应的,本发明还提出了一种基于虚拟磁盘层的检测Raid磁盘拔出的装置,所述装置包括:
[0018]VSD建立模块,用于建立虚拟磁盘层VSD,所述VSD将磁盘阵列Raid的几何空间划分为保留区和数据区,所述保留区包括超级块区、位图bitmap索引区、坏块重定向索引区和坏块重定向数据区;
[0019]第一检测模块,用于在坏块重定向过程中,所述虚拟磁盘层VSD实时检测所述坏块重定向数据区的磁盘坏块数量,当所述磁盘坏块数量超出设定阈值时,通知所述Raid磁盘拔出;
[0020]第二检测模块,用于在执行读写操作时,所述虚拟磁盘层VSD实时检测所述读写操作是否有错误码返回,当所述错误码为磁盘介质错误时,通知所述Raid磁盘拔出。
[0021]优选地,所述设定阈值小于等于所述Raid实际可容忍的坏块数量。
[0022]采用本发明提出的一种基于虚拟磁盘层的检测Raid磁盘拔出的方法及装置,通过在VSD坏块重定向功能的基础上,主动发现磁盘不可用;在VSD执行1返回错误时,若是磁盘介质错误等相关的错误码,则主动发现磁盘不可用;采用统一的、内核进程上下文的不可重入的接口来通知磁盘阵列Raid,与磁盘物理拔出调用相同的底层接口,使得本发明能自动发现磁盘错误并自动通知Raid磁盘拔出,提高了 Raid的健壮性,减少非自动化的错误。物理拔出磁盘事件在有1的时候立即通知到Raid,消除磁盘拔出那个时间点可能的1停顿。
【附图说明】
[0023]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0024]图1为本发明实施例一提出的一种基于虚拟磁盘层的检测Raid磁盘拔出的方法流程图;
[0025]图2为本发明实施例中提出的vsd_plugout_bbr接口函数的工作流程图;
[0026]图3为本发明实施例二提出的一种基于虚拟磁盘层的检测Raid磁盘拔出的装置模块图。
【具体实施方式】
[0027]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]图1为本发明实施例一提出的一种基于虚拟磁盘层的检测Raid磁盘拔出的方法流程图,如图1所示,该方法包括以下步骤:
[0029]SlOl,建立虚拟磁盘层VSD,所述VSD将磁盘阵列Raid的几何空间划分为保留区和数据区,所述保留区包括超级块区、位图bitmap索引区、坏块重定向索引区和坏块重定向数据区等;
[0030]S102,在坏块重定向过程中,所述虚拟磁盘层VSD实时检测所述坏块重定向数据区的磁盘坏块数量,当所述磁盘坏块数量超出设定阈值时,通知所述Raid磁盘拔出。其中,所述设定阈值小于等于所述Raid实际可容忍的坏块数量。
[0031]S103,在执行读写操作时,所述虚拟磁盘层VSD实时检测所述读写操作是否有错误码返回,当所述错误码为磁盘介质错误时,通知所述Raid磁盘拔出。
[0032]其中,步骤S102和步骤S103中,通知所述Raid磁盘拔出具体为:通过调用内部接口启动预设线程执行,通知所述Raid磁盘拔出。所述内部接口启动所述预设线程执行时,若所述预设线程还没有执行完毕,则返回,否则启动所述预设线程执行。本发明实施例中,通过调用vsd_plugout_bbr接口启动一个新线程执行特定VSD对象的plugout,当时启动新线程执行时,若之前的线程还在执行,则返回。
[0033]其中,所述内部接口与磁盘物理拔出时所调用的底层接口相同。采用统一的、内核进程上下文的不可重入的接口来通知磁盘阵列Raid,与磁盘物理拔出调用相同的底层接口,使得本发明能自动发现磁盘错误并自动通知Raid磁盘拔出,提高了 Raid的健壮性,减少非自动化的错误。物理拔出磁盘事件在有1的时候立即通知到Raid,消除磁盘拔出那个时间点可能的1停顿。
[0034]本发明实施例,为了让磁盘阵列raid更好的记录各种状态,适应各种磁盘,本发明引入了虚拟磁盘Virtual Storage Disk层,简称VSD。VSD将磁盘的几何空间做了重新划分,分为保留区和数据区。保留区由超级块区,bitmap索引区,坏块重定向索引区,坏块重定向数据区等组成。在VSD层实现了支持双控制器的高效的坏块重定向功能,与具体操作系统OS,磁盘Disk无关,具有很高的兼容性和扩展性。VSD在坏块重定向过程中发现重定向数据块区即将满了,则可断定该磁盘不可用了(坏块个数超过了可以容忍的值),这时可以
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1