存储设备路径错误的处理方法以及相关装置与流程

文档序号:16246081发布日期:2018-12-11 23:35阅读:289来源:国知局
本申请实施例涉及数据存储领域,尤其涉及存储设备路径错误的处理方法以及相关装置。
背景技术
:多路径技术(multi-pathinput/output,mpio)通过一条及以上的物理链路来访问网络存储设备,并且可以使用容错、流量负载平衡以及细粒度的io调度策备等方式,为网络存储应用提供更高的可用性和性能优势。通常应用主机的操作系统中都有支持多路径功能的多路径软件,该多路径软件由多路径驱动程序,以及用于路径管理的多路径管理工具组成。多路径驱动程序是属于操作系统内核的模块,实现路径识别,路径聚合,路径选择(负载均衡),错误处理等功能。多路径管理工具运行于用户层,提供路径管理,性能数据统计功能。在应用主机采用存储多路径连接方式访问存储设备的情况下,若处理装置在发送io请求给存储设备的过程中出现错误,则处理装置调用错误处理函数处理该错误。在现有技术中,处理装置调用错误处理函数解决路径错误的错误处理机制是编译好的内核代码,该内核代码是不可修改的。因此,在处理装置开始运行之后,错误处理函数不可以修改。如果要修改错误处理函数,则需要重新编译内核代码,进而重新构建处理装置,于是降低了处理装置处理错误的灵活性。技术实现要素:本申请实施例提供了一种存储设备路径错误的处理方法以及相关装置,用于提高处理装置处理错误的灵活性。第一方面,本申请实施例提供了一种存储设备路径错误的处理方法,包括:当处理装置准备处理错误时,处理装置可以通过iocontrol接口获取第二错误代码决策表,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误;处理装置通过iocontrol接口获取第二错误代码决策表之后,处理装置可以根据该第二错误代码决策表处理该错误。本申请实施例中,错误代码决策表可以通过iocontrol接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过iocontrol接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了多路径软件处理错误的灵活性。根据第一方面,本申请实施例第一方面的第一种实施方式中,该第二错误代码决策表包括:操作系统接口层错误,小型计算机接口scsi命令层错误,与该操作系统接口层错误或该scsi命令层错误对应的处理规则。本申请实施例中,列举了第二错误代码决策表的内容,因此能够提高了方案的可行性。根据第一方面,本申请实施例第一方面的第二种实施方式中,根据该第二错误代码决策表处理该错误包括:将内核层的错误代码决策表替换为该第二错误代码决策表;根据该内核层的错误代码决策表对该错误进行处理。本申请实施例中,介绍了根据该第二错误代码决策表处理该错误的步骤,因此能够提高了方案的可行性。根据第一方面的第二种实施方式,本申请实施例第一方面的第三种实施方式中,该根据该内核层的错误代码决策表对该错误进行处理包括:当接收到错误提示消息时,确定该错误提示消息对应的目标错误;判断该内核层的错误代码决策表中是否存在与该目标错误对应的处理规则;若该内核层的错误代码决策表中存在与该目标错误对应的处理规则,则根据该处理规则对该目标错误进行处理。本申请实施例中,介绍了该内核层的错误代码决策表对该错误进行处理的步骤,因此能够提高了方案的可行性。根据第一方面,本申请实施例第一方面的第四种实施方式中,该方法还包括:若该内核层的错误代码决策表中不存在与该目标错误对应的处理规则否,则提示用户对该第二错误代码决策表进行修改。本申请实施例中,列举当判断该内核层的错误代码决策表中不存在与该目标错误对应的处理规则时的结果,因此能够增强了方案的实现灵活性。根据第一方面,本申请实施例第一方面的第五种实施方式中,该方法还包括:当向存储设备发送io请求出现错误时,获取错误路径代码,该错误路径代码用以指示该错误所在位置;判断第一错误代码决策表能否处理该错误,该处理该错误包括对路径进行参数更新;若该第一错误代码决策表不能处理该错误,则发送修改错误代码决策表的请求。本申请实施例中,当处理装置在向存储设备发送io请求的过程中出现错误时,处理装置将先判断第一错误代码决策表能否处理该错误,再根据判断结果执行下一步操作,因此能够增强了方案的实现灵活性。根据第一方面的第五种实施方式,本申请实施例第一方面的第六种实施方式中,判断第一错误代码决策表能否处理该错误,包括:获取该错误路径代码;查询该第一错误代码决策表中的表项;判断该第一错误代码决策表中是否有与该错误路径代码对应的该表项;若该第一错误代码决策表中有与该错误路径代码对应的该表项,则确定该第一错误代码决策表能够处理该错误;若该第一错误代码决策表中没有与该错误路径代码对应的该表项,则确定该第一错误代码决策表不能够处理该错误。本申请实施例中,介绍了判断第一错误代码决策表能否处理该错误的具体步骤,因此能够提高了方案的可行性。第二方面,本申请实施例提供了一种处理装置,该处理装置执行如前述第一方面中的方法,该处理装置包括:获取单元,用于通过iocontrol接口获取第二错误代码决策表,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误;处理单元,用于根据该第二错误代码决策表处理该错误。本申请实施例中,错误代码决策表可以通过iocontrol接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过iocontrol接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了处理装置处理错误的灵活性。根据第二方面,本申请实施例第二方面的第一种实施方式中,该第二错误代码决策表包括:操作系统接口层错误,小型计算机接口scsi命令层错误,与该操作系统接口层错误或该scsi命令层错误对应的处理规则。本申请实施例中,列举了第二错误代码决策表的内容,因此能够提高了方案的可行性。根据第二方面,本申请实施例第二方面的第二种实施方式中,该处理单元包括:替换子单元,用于将内核层的错误代码决策表替换为该第二错误代码决策表;处理子单元,用于根据该内核层的错误代码决策表对该错误进行处理。本申请实施例中,介绍了根据该第二错误代码决策表处理该错误的步骤,因此能够提高了方案的可行性。根据第二方面的第二种实施方式,本申请实施例第二方面的第三种实施方式中,该处理子单元包括:确定模块,用于当接收到错误提示消息时,确定该错误提示消息对应的目标错误;判断模块,用于判断该内核层的错误代码决策表中是否存在与该目标错误对应的处理规则;处理模块,用于当该内核层的错误代码决策表中存在与该目标错误对应的处理规则时,根据该处理规则对该目标错误进行处理。本申请实施例中,介绍了该内核层的错误代码决策表对该错误进行处理的步骤,因此能够提高了方案的可行性。根据第二方面,本申请实施例第二方面的第四种实施方式中,该处理装置还包括:提示单元,用于当该内核层的错误代码决策表中不存在与该目标错误对应的处理规则时,提示用户对该第二错误代码决策表进行修改。本申请实施例中,列举当判断该内核层的错误代码决策表中不存在与该目标错误对应的处理规则时的结果,因此能够增强了方案的实现灵活性。第三方面,本申请实施例提供了一种处理装置,该处理装置执行如前述第一方面中的方法,该处理装置包括:处理器、存储器、总线以及通信接口;该处理器、该存储器以及该输入/输出设备与该总线连接;处理器控制通信接口通过获取第二错误代码决策表,并将该第二错误代码决策表存储于存储器中,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误;处理器根据该第二错误代码决策表处理该错误。需要说明的是,该通信接口可以是iocontrol接口。第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行如前述第一方面中任一项的方法。第五方面,本申请实施例提供了一种计算机程序产品,其特征在于,当该计算机程序产品在计算机上运行时,使得计算机执行如前述第一方面中任一项的方法。第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持网络设备实现上述方面中所涉及的功能,例如,例如发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,该芯片系统还包括存储器,该存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。从以上技术方案可以看出,本申请实施例具有以下优点:本申请实施例中,错误代码决策表可以通过iocontrol接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过iocontrol接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了多路径软件处理错误的灵活性。附图说明图1为本申请实施例提供的一种存储域网络框架图;图2为本申请实施例提供的另一种存储域网络框架图;图3为本申请实施例提供的存储设备路径错误的处理方法的一种流程示意图;图4为本申请实施例提供的存储设备路径错误的处理方法的另一种流程示意图;图5为本申请实施例提供的一种处理装置示意图。具体实施方式本申请实施例提供了一种存储设备路径错误的处理方法以及相关装置,用于提高处理装置处理错误的灵活性。下面对本申请实施例涉及的一些术语进行介绍。处理装置:指具有多路径驱动软件的功能的几何体包含于该处理装置。错误:是一个提示出现网络错误的标志,是指导致系统不能按照用户意图工作的一切原因或事件,常见的有407错误、405错误、401错误和404错误。本申请实施例中,指多路径驱动程序在发送io请求给存储设备的过程中出现异常。错误处理:在程序设计过程中,由于某些错误的存在,致使程序无法正常运行,处理这些错误以使程序正确运行就称为错误处理。错误处理功能是衡量编译器性能的重要方面,它在帮助程序员尽快修改程序方面起到了非常重要的作用。下面对本申请实施例所适应的系统架构进行介绍。在企业级信息系统中,用于处理业务请求的应用主机(host)与存储数据的存储设备(storage)通过存储域网络(storageareanetwork,san)互相连接。为了提高冗余以及io吞吐量,通常采用存储多路径连接方式,即应用主机同时通过多条物理路径访问存储设备。如图1所示,应用主机上有两个初始端口ip0,ip1,存储设备上有两个目标端口tp0,tp1,通过san网络连接,应用主机访问存储设备中的逻辑单元(logicalunitnumber,lun)时,共有4条路径:path0(ip0,tp0),path1(ip0,tp1),path2(ip1,tp0),path3(ip1,tp1)。应用主机的操作系统中的多路径软件(multi-pathio,mpio)的结构如图2所示,该图为本申请实施例中处理装置的一部分。该处理装置至少包括多路径软件,而该多路径软件由内核层的多路径驱动程序和用户层的多路径管理工具组成。多路径驱动程序是属于操作系统内核的模块,实现路径识别,路径聚合,路径选择(负载均衡),错误处理等功能。多路径管理工具运行于用户层,提供路径管理,性能数据统计功能。本申请实施例从新定义了多路径驱动程序与多路径管理工具之间的iocontrol接口,并且,在用户层的多路径管理工具中设置了错误代码决策表配置文件,在内核层的多路径驱动程序中设置了错误代码决策表,以实现错误代码决策表在用户层和内核层之间的传输。该错误代码决策表配置文件包括错误代码决策表以及其他用户修改错误代码决策表时需要用到的文件。若多路径驱动程序通过选定的路径发送io请求给存储设备时发生错误,则多路径驱动程序的错误处理模块可以根据错误的类型,以及该错误代码决策表的指示,来决定如何处理这个io请求,以及如何处理该错误。本实施例中,需要说明的是,本申请实施例中的处理装置可以是服务器,或者服务器中的处理器,或者服务器中的芯片,或者其他装置,具体本此处不做限定。在本实施例以及后续实施例中,仅以处理装置为例进行说明。为便于理解,下面对本实施例中的具体流程进行描述,如图3所示,是本实施例提供的存储设备路径错误的处理方法,该方法中的处理装置执行如下步骤,包括:301、通过iocontrol接口获取第二错误代码决策表;当处理装置准备处理错误时,处理装置可以通过iocontrol接口获取第二错误代码决策表,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误。302、根据该第二错误代码决策表处理该错误。处理装置通过iocontrol接口获取第二错误代码决策表之后,处理装置可以根据该第二错误代码决策表处理该错误。本申请实施例中,错误代码决策表可以通过io控制接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过io控制接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了多路径软件处理错误的灵活性。上面对本实施例中的存储设备路径错误的处理方法进行了描述,下面对本实施例中的存储设备路径错误的处理方法的另一实施例进行介绍,如图3所示,本实施例中的存储设备路径错误的处理方法的另一实施例包括:401、通过输入输出控制iocontrol接口获取第二错误代码决策表;本实施例中,当用户修改第二错误代码决策表时,处理装置通过iocontrol接口获取第二错误代码决策表,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误。本实施例中,定义了一组iocontrol接口,该接口用以实现用户层的多路径管理工具与内核层的处理装置之间的错误代码决策表同步。当多路径管理工具通过调用此接口读取处理装置的错误代码决策表时,采用指令io_ctl(ctl_get_error_policy_table,void*table)。当多路径管理工具通过更新此接口读取处理装置的错误代码决策表时,采用指令io_ctl(ctl_set_error_policy_table,void*table)。该代码指程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。该代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。需要说明的是,本实施例中多路径管理工具更新或者读取该接口的指令不仅限于上述指令,本实施例以及后续实施例中,仅以上述两种代码为例进行说明。本实施例中,决策表是一种呈表格状的图形工具,适用于描述处理判断条件较多,各条件又相互组合、有多种决策方案的情况。错误代码决策表可以精确而简洁描述复杂逻辑的方式,将多个条件与这些条件满足后要执行动作相对应。与传统程序语言中的控制语句不同的是,该错误代码决策表能够将多个独立的条件和多个动作直接的联系清晰的表示出来。如表1所示,错误代码决策表至少包括:应用主机状态(host_status)、scsi命令层错误(scsi_status)、错误处理规则(action)、重发的次数(paramcount)、重发时间间隔(interval)和重发的次数上限(count)。表1402、将内核层的错误代码决策表替换为该第二错误代码决策表;本实施例中,处理装置将内核层中原有的内核层的错误代码决策表替换为第二错误代码决策表,该第二错误代码决策表是通过iocontrol接口从用户层中的多路径管理工具中获得的。本实施例中,内核层的错误代码决策表替换为该第二错误代码决策表,于是,当下一个更新错误代码决策表的时刻,该第二错误代码决策表为内核层的错误代码决策表。403、当接收到错误提示消息时,确定该错误提示消息对应的目标错误;本实施例中,当多路径驱动程序在向存储设备发送io请求时出现错误,处理装置将接收到错误提示消息,该错误提示消息可以是一个消息,也可以是多个消息,具体此处不做限定。该错误提示消息中携带错误路径代码,该错误路径代码用于指示该出现该错误的原因,该出现错误的原因包括:该错误所在位置、该错误的出错时间或该错误的出现次数。本实施例中,处理装置可以根据该错误提示消息中的错误路径代码确定对应的目标错误。该错误提示消息中还可以携带有错误提示次数、错误预警级数或者该错误的待处理时间,具体此处不做限定。404、判断该内核层的错误代码决策表中是否存在与该目标错误对应的处理规则;本实施例中,当处理装置接收错误提示消息并确定了目标错误之后,该判断该内核层的错误代码决策表中是否存在与该目标错误对应的处理规则,该内核层的错误代码决策表的内容与前文中的第二错误代码决策表中的参数相同,该处理规则指该内核层的错误代码决策表中的表项。如表1所示,错误代码决策表至少包括:应用主机状态(host_status)、scsi命令层错误(scsi_status)、错误处理规则(action)、重发的次数(paramcount)、重发时间间隔(interval)和重发的次数上限(count)。其中,至少有一种scsi命令层错误与至少一种错误的处理规则相对应。该错误代码决策表中的一种scsi命令层错误可以与多种错误的处理规则相对应,该错误代码决策表中的一种错误的处理规则可以与多种scsi命令层错误相对应。在本实施例以及后续实施例中,仅以一种scsi命令层错误与一种错误的处理规则相对应为例进行说明。下面以表1中的第一行和第二行为例对错误代码决策表进行解释。如表1所示,当目标错误所对应的错误路径代码中的应用主机状态为应用主机代码0且scsi命令层错误取scsi错误代码0时,该错误代码决策表中有对应的处理规则(action)。若该内核层的错误代码决策表中存在与该目标错误对应的处理规则,则执行步骤405;若该内核层的错误代码决策表中不存在与该目标错误对应的处理规则,则执行步骤406。405、根据该处理规则对该目标错误进行处理;本实施例中,当该内核层的错误代码决策表中存在与该目标错误对应的处理规则时,该处理装置根据该处理规则对该目标错误进行处理。下面以表1中的第一行和第四行为例对错误代码决策表进行解释。如表1所示,当目标错误所对应的错误路径代码中的应用主机状态为应用主机代码0且scsi命令层错误取scsi错误代码2时,该错误代码决策表中有对应的处理规则(action),该处理规则为通过其他路径重发io请求(retry_other),并且,当前重发的次数(paramcount)为2次,重发时间间隔(interva)为10个单位时间,重发的次数上限(count)为3次。该单位时间可以为0.001ms,也可以为0.002ms,还可以为0.0001ms,具体此处不做限定。406、提示用户对该第二错误代码决策表进行修改。本实施例中,当该内核层的错误代码决策表中不存在与该目标错误对应的处理规则时,该处理装置将提示用户对该第二错误代码决策表进行修改。当用户接收到该需要修改第二错误代码决策表的提示后,用户界面将显示内核层的第二错误代码决策表的表项,以及错误路径代码,或者其他可以指示用户如何修改第二错误代码决策表的信息,具体此处不做限定。用户根据该信息对第二错误代码决策表进行修改,得到第三错误代码决策表,之后执行步骤401,进入下一个修改错误代码决策表的循环。本申请实施例中,错误代码决策表可以通过io控制接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过io控制接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了多路径软件处理错误的灵活性。上面对本实施例中的存储设备路径错误的处理方法进行了介绍,下面对本实施例中的处理装置500进行介绍,如图5所示,本实施例中处理装置500的一个实施例包括:获取单元501,用于通过iocontrol接口获取第二错误代码决策表,该第二错误代码决策表为用户对第一错误代码决策表进行修改得到的,该第二错误代码决策表包括至少一个错误与处理该错误的规则的对应关系,该错误为处理装置给存储设备发送请求的过程中所出现的错误;处理单元502,用于根据该第二错误代码决策表处理该错误。该处理单元502包括:替换子单元5021,用于将内核层的错误代码决策表替换为该第二错误代码决策表;处理子单元5022,用于根据该内核层的错误代码决策表对该错误进行处理。该处理子单元5022包括:确定模块50221,用于当接收到错误提示消息时,确定该错误提示消息对应的目标错误;判断模块50222,用于判断该内核层的错误代码决策表中是否存在与该目标错误对应的处理规则;处理模块50223,用于当该内核层的错误代码决策表中存在与该目标错误对应的处理规则时,根据该处理规则对该目标错误进行处理。该处理装置500还包括:提示单元503,用于当该内核层的错误代码决策表中不存在与该目标错误对应的处理规则时,提示用户对该第二错误代码决策表进行修改。本申请实施例中,错误代码决策表可以通过io控制接口实现在处理装置的用户层和内核层的传输。无论处理装置在发送io请求给存储设备的过程中是否出现错误,处理装置可以随时接收修改错误代码决策表的指令,并通过io控制接口接收该指令中携带的第二错误代码决策表,并根据该指令中携带的第二错误代码决策表修改第一错误代码决策表。从而提高了多路径软件处理错误的灵活性。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例该方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1