SCSI代码分析(7)SCSI错误处理(续)

当前Linux SCSI层的错误处理机制在遇到问题时会阻塞整个SCSI主机上的所有IO,导致服务暂停。提出一种可能的优化方案,即改为基于SCSI设备的错误处理,通过为每个磁盘创建独立的错误处理线程,仅阻塞出错磁盘的IO,以减少对正常磁盘的影响。在无法通过设备级恢复操作解决问题时,再升级到阻塞主机级别进行更高级别的恢复操作。该想法有待进一步研究和实现。
摘要由CSDN通过智能技术生成

        当前LINUX社区SCSI层错误处理在整个错误处理期间是阻塞整个SCSI HOST上所有的IO的,也就是即使仅某个盘的IO出错,在错误处理阶段会阻塞所有的盘的IO(即使其他的盘都是正常的),会造成业务的暂时停顿,这是目前SCSI错误处理存在经常让人诟病的问题。

        分析完SCSI层的错误处理,个人认为可能可以优化,将基于SCSI HOST的错误处理变为基于SCSI DEVICE的错误处理(即尽可能只阻塞SCSI DEVICE的IO,而不是直接阻塞SCSI HOST的IO):

  1. 对每个盘单独创建一个错误处理线程,处理本盘的错误处理,当本盘出错时,仅阻塞本盘的IO,不影响其他盘的运行;
  2. 每个盘的错误处理中,恢复操作流程仍为:abort某个IO,若失败,对盘执行recover_lun/I_T_nexus_reset等恢复操作(SCSI DEVICE part恢复操作),若这些操作无法恢复错误,说明不仅仅是本盘的问题,升级到阻塞HOST上所有IO,待整个HOST所有IO状态明确后,进入SCSI HOS part恢复操作(控制器复位等)。

         目前只是初步考虑认为可行,真正实施修改需要考虑的细节应该有很多,待有时间再尝试。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值