一种扩展卡及其磁盘上下线处理方法
技术领域
本申请涉及计算机存储技术领域,尤其涉及一种扩展卡及其磁盘上下线处理方法。
背景技术
串行连接SCSI(SAS),是新一代的小型计算机***接口(SCSI,SmallComputerSystemInterface)技术,和串行高级技术附件(SATA,SerialAdvancedTechnologyAttachment)接口相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储***的效能、可用性和扩充性,并且提供与SATA硬盘的兼容性。
SAS的接口技术可以向下兼容SATA。从接口标准上而言,SATA是SAS的一个子标准,因此SAS控制器可以直接操控SATA硬盘。由于SAS***的兼容性,使用户能够运用不同接口的硬盘来满足各类应用在容量上或效能上的需求,因此在扩充存储***时拥有更多的弹性,让存储设备发挥最大的投资效益。
在现有的支持6GSAS和SATA接口的扩展卡设备(expander)中,***会通过轮询的方式检测是否产生了磁盘上线或者下线事件,并进行处理。但是在某种特殊情况下,磁盘会在一段时间内不断产生上线,下线事件,产生异常,造成闪断现象。
发明内容
本申请提供了一种扩展卡的磁盘上下线处理方法,可以避免出现磁盘闪断现象。
本申请实施例提供的一种扩展卡的磁盘上下线处理方法,包括:
A、扩展卡的端口管理模块进行本次轮询处理,获取磁盘事件;
B、判断磁盘是否处于准备状态,若是,执行步骤C,否则执行步骤D;
C、进行磁盘准备状态的处理过程,然后进入下一个轮询周期,返回步骤A;
D、检查是否已记录磁盘非准备状态时间,若是,执行步骤E,否则执行步骤G;
E、判断已记录的磁盘非准备状态时间与当前***时间的差值是否大于预先设定的阈值,若是,执行步骤F,否则进入下一个轮询周期,返回步骤A;
F、进行磁盘非准备状态的处理过程,上报一次下线事件至驱动模块,然后进入下一个轮询周期,返回步骤A;
G、记录当前***时间作为磁盘非准备状态时间,进入下一个轮询周期,返回步骤A。
较佳地,步骤C进一步包括:清除已记录的磁盘非准备状态时间。
较佳地,所述阈值为5秒。
本申请实施例还提供了一种扩展卡,包括端口管理模块和驱动模块,所述端口管理模块包括:
轮询处理单元,用于进行轮询处理,获取磁盘事件;
第一判断单元,用于根据轮询处理单元获取的磁盘事件判断磁盘是否处于准备状态,若是通知磁盘处理单元进行磁盘准备状态的处理过程,否则使能时间检测单元;
时间检测单元,用于检查是否记录磁盘非准备状态时间,若未记录则记录当前***时间作为磁盘非准备状态时间;若是,判断已记录的磁盘非准备状态时间与当前***时间的差值是否大于预先设定的阈值,若是,通知磁盘处理单元进行磁盘非准备状态的处理过程,否则不做处理;
磁盘处理单元,用于根据通知进行磁盘准备状态或磁盘非准备状态的处理过程,在进行磁盘非准备状态的处理过程时上报一次下线事件至驱动模块。
较佳地,所述第一判断单元根据轮询处理单元获取的磁盘事件判断磁盘是否处于准备状态的结果为是,进一步通知时间检测单元清除已记录的磁盘非准备状态时间。
较佳地,所述阈值为5秒。
从以上技术方案可以看出,在端口管理模块将磁盘下线事件上报给驱动模块时,查询短时间之类该磁盘是否发生过下线事件,若是,则不上报,留给下一次轮询进行处理;如果没有,则上报。通过这种方式,将磁盘闪断时在短时间内产生的大量下线事件,只延迟上报一次,在不影响正常处理过程的情况下,解决了磁盘闪断的问题。同时,由于基于双控架构的存储设备在主控制器上线时会重置(reset)磁盘,此时从控制器会认为磁盘产生错误,在错误处理分支中也会reset磁盘,造成主从控不断reset磁盘的错误,本申请技术方案也很好地避免了这种情况的发生。由于磁盘上线在SCSI层是一个相对缓慢的过程,因此只要设置一个合适的延迟时间(例如5秒左右),则不会影响磁盘的正常上下线功能。
附图说明
图1为本申请实施例提供的磁盘上下线处理方法流程图。
具体实施方式
本申请技术方案通过修改磁盘上下线的处理方式,避免了闪断现象的发生。在端口管理模块将磁盘下线事件上报给驱动模块时,查询短时间之类该磁盘是否发生过下线事件,若是,则不上报,留给下一次轮询进行处理;如果没有,则上报。通过这种方式,将磁盘闪断时在短时间内产生的大量下线事件,只延迟上报一次,在不影响正常处理过程的情况下,解决了磁盘闪断的问题。
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
图1示出了本申请实施例提供的扩展卡的磁盘上下线处理方法流程,包括如下步骤:
步骤101:扩展卡的端口管理模块进行本次轮询处理,获取磁盘事件;
步骤102:判断磁盘是否处于准备(ready)状态,若是,执行步骤103,否则执行步骤105;
步骤103:清除已记录的磁盘非准备状态时间;
步骤104:进行磁盘准备状态的处理过程,然后进入下一个轮询周期,返回步骤101。
步骤105:检查是否记录磁盘非准备状态时间,若是,执行步骤106,否则执行步骤108;
步骤106:判断已记录的磁盘非准备状态时间与当前***时间的差值是否大于预先设定的阈值,若是,执行步骤107,否则进入下一个轮询周期,返回步骤101。本申请实施例中,所述阈值设置为5秒。
步骤107:进行磁盘非准备状态的处理过程,上报一次下线事件至驱动模块,然后进入下一个轮询周期,返回步骤101。
步骤108:记录当前***时间作为磁盘非准备状态时间,进入下一个轮询周期,返回步骤101。
本申请实施例还提供了一种扩展卡,包括端口管理模块和驱动模块,所述端口管理模块包括:
轮询处理单元,用于进行轮询处理,获取磁盘事件;
第一判断单元,用于根据轮询处理单元获取的磁盘事件判断磁盘是否处于准备状态,若是通知磁盘处理单元进行磁盘准备状态的处理过程,否则使能时间检测单元;
时间检测单元,用于检查是否记录磁盘非准备状态时间,若未记录则记录当前***时间作为磁盘非准备状态时间;若是,判断已记录的磁盘非准备状态时间与当前***时间的差值是否大于预先设定的阈值,若是,通知磁盘处理单元进行磁盘非准备状态的处理过程,否则不做处理;
磁盘处理单元,用于根据通知进行磁盘准备状态或磁盘非准备状态的处理过程,在进行磁盘非准备状态的处理过程时上报一次下线事件至驱动模块。
较佳地,所述第一判断单元根据轮询处理单元获取的磁盘事件判断磁盘是否处于准备状态的结果为是,进一步通知时间检测单元清除已记录的磁盘非准备状态时间。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。