本发明属于磁盘存储设计领域,特别涉及一种sas存储系统磁盘异常处理方法。
背景技术:
1、在sas(串行连接scsi)存储系统架构中,sas i/o控制器与软件配合,用于完成存储系统的磁盘管理、i/o的管理和收发、sas协议的处理等事务。sas i/o控制器可以实现在hba/raid卡。hba(host bus adapter,总线适配器)和raid(磁盘冗余阵列)通常作为主机和外围存储设备之间连接的桥梁,不仅可以扩展服务器外围存储设备连接的数量,而且能够支持不同接口协议之间的转换,丰富了服务器系统的功能,同时满足了多样化系统应用场景。典型的sas存储系统如图1所示。磁盘阵列系统中的expander即扩展器,负责路由交换以及业务转发的功能。
2、如图2所示,在sas存储系统中,sas i/o控制器从软件构造命令开始到经过sas控制器将i/o下发到磁盘,然后从磁盘返回响应再回到软件,整个数据通路需要经过多级模块的处理。为了提高性能,sas i/o都是并发设计的,所以在sas i/o数据通路上的多个处理环节都设置有i/o缓存,用于保存执行中的i/o信息,包括磁盘侧,也存在很多待执行的i/o指令。同时,sas控制器中还管理系统中的所有磁盘设备信息。
3、在sas i/o执行过程中,可能会因为链路异常或者其他原因发生异常。在sas协议中,定义了abort task和abort task set两种指令。当某个i/o出现异常时,软件可通过abort task来执行异常处理,磁盘收到abort task指令时,将磁盘中残留的异常目标指令清除,i/o通路上的各个环节也需要将异常目标指令执行清除动作,然后将abort task应答给应用层软件;当磁盘的某个task set发生异常时,通过abort task set来执行异常处理,处理流程与abort task类似,区别在于针对的磁盘task set内对应的所有i/o。在这个过程中,需要回收对应异常i/o的相关资源,包括相应的iptt号(initiator port transfertag,即command id,表示i/o的标记)、上下文缓存、i/o缓存等资源,最后恢复对磁盘的正常访问。
4、然而,通过上述两条指令执行异常处理必须满足的前提条件是,磁盘还能与hba卡进行正常通信。如果发生拔盘或者换盘的动作,则无法通过abort task和abort task set来执行i/o资源的回收。因此在执行磁盘热插拔或者换盘操作时,软件需要执行一些操作来满足两个关键的要求。第一,需要避免旧的i/o下发到新的磁盘上。第二,缓存在数据通路上的原磁盘的所有i/o资源都需要回收。
5、针对第一个要求,现有技术中,在软件检测到掉盘之后,将目标磁盘置为无效的方式来避免旧磁盘的i/o继续下发到链路上。针对第二个要求,传统的sas协议没有定义回收磁盘i/o的指令,通常做法是等待链路上的i/o都按照正常流程执行完成,通过自然排空的方式完成i/o回收。但是这种方法存在的以下不足。首先是效率太低,等待i/o自然排空的时间较长,且无法预测。其次,在盘侧的i/o可能无法自然回收,需要等待i/o超时。图3示出了以上常规处理流程。
6、鉴于以上问题,软件处理该异常时,处理流程将会比较复杂和被动。
技术实现思路
1、本发明的目的在于提供一种sas存储系统磁盘异常处理方法和装置,旨在解决磁盘异常情况下的i/o回收效率较低和处理流程复杂的问题。
2、根据本发明的第一方面,提供了一种sas存储系统磁盘异常处理方法,包括:
3、检测sas存储设备的状态,当满足发起sas存储设备终止指令的条件时,通过应用层软件将所述sas存储设备终止指令下发到所述hba;
4、响应于所述hba接收到所述sas存储设备终止指令,清空所述sas存储设备对应的i/o缓存,回收所述sas存储设备对应i/o的硬件资源,并向所述应用层软件返回所述sas存储设备终止指令的执行结果。
5、优选地,所述sas存储设备终止指令是目标磁盘终止指令,并且所述发起sas存储设备终止指令的条件包括以下任一项:
6、当目标磁盘发生异常,应用层软件需要对已经下发的所述目标磁盘对应的所有i/o执行abort操作时;
7、当应用层软件需要将所述目标磁盘从存储系统中删除时;或
8、当应用层软件需要执行换盘操作时。
9、优选地,所述清空所述sas存储设备对应的i/o缓存,回收所述sas存储设备对应i/o的硬件资源,进一步包括:
10、扫描sas控制器内部缓存,清空所述目标磁盘的所有i/o,回收对应于所述目标磁盘的每个i/o的硬件资源;
11、将所述目标磁盘的所有i/o状态应答给应用层软件,以通知应用层软件回收对应于所述目标磁盘的所有i/o的软件资源;
12、判断所述目标磁盘的所有i/o是否清空完毕,若否,返回继续执行清空操作。
13、优选地,所述sas存储设备终止指令是目标端口终止指令,并且所述发起sas存储设备终止指令的条件包括以下任一项:
14、当目标端口发生异常,应用层软件需要对已经下发的所述目标端口下所有磁盘对应的所有i/o进行终止执行和回收操作时;
15、当应用层软件需要将所述目标端口从存储系统中删除时;或
16、当应用层软件需要执行端口切换操作时。
17、优选地,所述清空所述sas存储设备对应的i/o缓存,回收所述sas存储设备对应i/o的硬件资源,进一步包括:
18、扫描sas控制器内部缓存,清空所述目标端口下所有磁盘的对应i/o,回收对应于所述目标端口下所有磁盘的每个i/o的硬件资源;
19、将所述目标端口的所有i/o状态应答给应用层软件,以通知应用层软件回收对应于所述目标端口下所有磁盘的所有i/o的软件资源;
20、判断所述目标端口下的所有i/o是否清空完毕,若否,返回继续执行清空操作。
21、根据本发明的第二方面,提供了一种sas存储系统磁盘异常处理装置,包括:
22、终止指令下发单元,用于检测sas存储设备的状态,当满足发起sas存储设备终止指令的条件时,通过应用层软件将所述sas存储设备终止指令下发到所述hba;
23、异常处理单元,用于响应于所述hba接收到所述sas存储设备终止指令,清空所述sas存储设备对应的i/o缓存,回收所述sas存储设备对应i/o的硬件资源,并向所述应用层软件返回所述sas存储设备终止指令的执行结果。
24、优选地,所述sas存储设备终止指令是目标磁盘终止指令,并且所述发起sas存储设备终止指令的条件包括以下任一项:
25、当目标磁盘发生异常,应用层软件需要对已经下发的所述目标磁盘对应的所有i/o执行abort操作时;
26、当应用层软件需要将所述目标磁盘从存储系统中删除时;或
27、当应用层软件需要执行换盘操作时。
28、优选地,所述异常处理单元进一步用于:
29、扫描sas控制器内部缓存,清空所述目标磁盘的所有i/o,回收对应于所述目标磁盘的每个i/o的硬件资源;
30、将所述目标磁盘的所有i/o状态应答给应用层软件,以通知应用层软件回收对应于所述目标磁盘的所有i/o的软件资源;
31、判断所述目标磁盘的所有i/o是否清空完毕,若否,返回继续执行清空操作。
32、优选地,所述sas存储设备终止指令是目标端口终止指令,并且所述发起sas存储设备终止指令的条件包括以下任一项:
33、当目标端口发生异常,应用层软件需要对已经下发的所述目标端口下所有磁盘对应的所有i/o进行终止执行和回收操作时;
34、当应用层软件需要将所述目标端口从存储系统中删除时;或
35、当应用层软件需要执行端口切换操作时。
36、优选地,所述异常处理单元进一步用于:
37、扫描sas控制器内部缓存,清空所述目标端口下所有磁盘的对应i/o,回收对应于所述目标端口下所有磁盘的每个i/o的硬件资源;
38、将所述目标端口的所有i/o状态应答给应用层软件,以通知应用层软件回收对应于所述目标端口下所有磁盘的所有i/o的软件资源;
39、判断所述目标端口下的所有i/o是否清空完毕,若否,返回继续执行清空操作。
40、相比于现有技术,本发明的技术方案通过自定义abort local by disk和abortlocal by port的硬件处理方式,基于磁盘或者基于端口的i/o异常处理时间由秒级提升到最大为毫秒级,使得异常处理效率显著提高,而且可以保证目标设备的i/o已经完全清理,不需要通过超时和扫描查询的方式来处理异常i/o,显著简化了软件处理流程。
41、本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。