处理存储服务器中控制器重启的方法和相关设备及通信系统的制作方法
【专利摘要】本发明实施例公开了处理存储服务器中控制器重启的方法和相关设备及通信系统。处理存储服务器中控制器重启的方法包括:在存储服务器中的第一控制器将要重启前,存储服务器若接收到主机下发的与存储服务器中的第一逻辑单元相对应的业务访问指令,向主机发送与第一逻辑单元对应的单元关注条件信息,向主机发送第一错误码;在执行向主机发送与第一逻辑单元对应的单元关注条件信息的步骤和向主机发送第一错误码的步骤后,断开第一控制器与主机之间的连接,并在将第一逻辑单元的工作控制器由第一控制器切换为存储服务器中的第二控制器后重启第一控制器。本发明实施例的方案有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
【专利说明】处理存储服务器中控制器重启的方法和相关设备及通信系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及处理存储服务器中控制器重启的方法和相关设备及通信系统。
【背景技术】
[0002]当前,业界主流的存储服务器进行在线升级时会出现业务短暂停滞,最长时间可达到100秒以上。
[0003]存储服务器在线升级时,存储服务器中的主备控制器各重启一次,升级过程通常是:先升级备控制器,再重启备控制器,将备控制器切换为主控制器,将原主控制器切换为备控制器之后对其进行升级,之后升级重启该主控制器。当一个控制器重启,主机需一段时间感知与该重启的控制器关联的光钎链路的路径状态,这造成一段时间的业务的输入输出(I/O, Input/output)归零。而对于容忍度小的主机或容忍度小的业务场景来说,极端情况下可造成主机业务中断。
【发明内容】
[0004]本发明实施例提供一种处理存储服务器中控制器重启的方法和相关设备及通信系统,以期缩短因存储服务器中控制器重启而造成的主机业务的I/o归零的时间。
[0005]本发明实施例第一方面提供一种处理存储服务器中控制器重启的方法,可包括:在存储服务器中的第一控制器将要重启之前,所述存储服务器若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码;
[0006]其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用;
[0007]所述存储服务器在执行所述向所述主机发送与所述第一逻辑单元对应的单元关注条件信息的步骤和所述向所述主机发送第一错误码的步骤之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
[0008]结合第一方面,在第一种可能的实施方式中,
[0009]所述方法还包括:
[0010]所述存储服务器若接收到所述主机在接收到所述单元关注条件信息之后发送的查询Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示;
[0011]或者,
[0012]所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和所述第一错误码之后发送的Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指不;
[0013]或者,
[0014]所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和/或所述第一错误码之后发送的RTPG指令,则向所述主机发送用于指示出所述第二控制器将作为所述第一逻辑单元的工作控制器的指示。
[0015]结合第一方面或第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述存储服务器若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码,包括:
[0016]所述存储服务器若在设定时长之内接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对所述N条业务访问指令中的每条业务访问指令,向所述主机发送用于响应所述业务访问指令的与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送用于响应所述每条业务访问指令的第一错误码。
[0017]结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述设定时长为8?10秒。
[0018]结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述第一错误码为2/6/040C。
[0019]结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式或第一方面的第三种可能的实施方式或第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述单元关注条件信息为2/6/2A06。
[0020]本发明实施例第二方面提供一种存储服务器,包括:
[0021]接收响应单元,用于在所述存储服务器中的第一控制器将要重启前,若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码;
[0022]其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用;
[0023]重启控制单元,用于在所述接收响应单元向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
[0024]结合第二方面,在第一种可能的实施方式中,
[0025]所述接收响应单元具体用于,在所述存储服务器中的第一控制器将要重启之前,若在设定时长之内接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对所述N条业务访问指令中的每条业务访问指令,向所述主机发送用于响应所述业务访问指令的与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送用于响应所述每条业务访问指令的第一错误码。
[0026]结合第二方面或第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息之后发送的查询Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示;
[0027]或者,
[0028]所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息和所述第一错误码之后发送的Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示;
[0029]或者,
[0030]所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息和/或所述第一错误码之后发送的RTPG指令,则向所述主机发送用于指示出所述第二控制器将作为所述第一逻辑单元的工作控制器的指示。
[0031]结合第一方面的第一种可能的实施方式,在第三种可能的实施方式中,所述设定时长为8?10秒。
[0032]结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述第一错误码为2/6/040C。
[0033]结合第二方面或第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式或第二方面的第三种可能的实施方式或第二方面的第四种可能的实施方式,在第五种可能的实施方式中,所述单元关注条件信息为2/6/2A06。
[0034]本发明第三方面提供一种分布式存储系统,可包括:
[0035]多台如上述实施例所述的任意一种存储服务器。
[0036]本发明第四方面提供一种通信系统,可包括:
[0037]存储服务器和多台主机;
[0038]所述存储服务器用于,在所述存储服务器中的第一控制器将要重启之前,若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码;其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用;在执行所述向所述主机发送与所述第一逻辑单元对应的单元关注条件信息的步骤和所述向所述主机发送第一错误码的步骤之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
[0039]结合第四方面,在第一种可能的实施方式中,
[0040]所述存储服务器还用于,若接收到所述主机在接收到所述单元关注条件信息之后发送的查询Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示;
[0041]或者,
[0042]所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和所述第一错误码之后发送的Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指不;
[0043]或者,
[0044]所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和/或所述第一错误码之后发送的RTPG指令,则向所述主机发送用于指示出所述第二控制器将作为所述第一逻辑单元的工作控制器的指示。
[0045]结合第四方面或第四方面的第一种可能的实施方式,在第二种可能的实施方式中,在所述若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码的方面,所述存储服务器具体用于,所述存储服务器若在设定时长之内接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对所述N条业务访问指令中的每条业务访问指令,向所述主机发送用于响应所述业务访问指令的与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送用于响应所述每条业务访问指令的第一错误码。
[0046]结合第四方面的第二种可能的实施方式,在第三种可能的实施方式中,所述设定时长为8?10秒。
[0047]结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式或第四方面的第三种可能的实施方式,在第四种可能的实施方式中,所述第一错误码为2/6/040C。
[0048]结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式或第四方面的第三种可能的实施方式或第四方面的第四种可能的实施方式,在第五种可能的实施方式中,所述单元关注条件信息为2/6/2A06。
[0049]可以看出,在本发明实施例提供的技术方案之中,在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机及时感知链路状态变化的需求,也有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
【专利附图】
【附图说明】
[0050]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051]图1是本发明实施例提供的一种处理存储服务器中控制器重启的方法的流程示意图;
[0052]图2是本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图;
[0053]图3是本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图;
[0054]图4是本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图;
[0055]图5是本发明实施例提供的一种存储服务器的示意图;
[0056]图6是本发明实施例提供的另一种存储服务器的示意图;
[0057]图7是本发明实施例提供的另一种存储服务器的示意图;
[0058]图8是本发明实施例提供的一种分布式存储系统的示意图;
[0059]图9是本发明实施例提供的一种通信系统的示意图。
【具体实施方式】
[0060]本发明实施例提供一种处理存储服务器中控制器重启的方法和相关设备及通信系统,以期缩短因存储服务器中控制器重启而造成的主机业务的I/o归零的时间。
[0061]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0062]以下分别进行详细说明。
[0063]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三” “第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0064]本发明一种处理存储服务器中控制器重启的方法的一个实施例,其中,一种处理存储服务器中控制器重启的方法,可包括:在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到主机下发的与上述存储服务器中的第一逻辑单元(LUN)相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的单元关注条件(UA, Unit AttentionCondition)信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后,重启上述第一控制器。
[0065]参见图1,图1为本发明实施例提供的一种处理存储服务器中控制器重启的方法的流程示意图。如图1所示,本发明实施例提供的一种处理存储服务器中控制器重启的方法可包括以下内容:
[0066]101、在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN (其中,第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送
第一错误码。
[0067]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0068]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸ο
[0069]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0070]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0071]在本发明的一些实施例中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机发送第一错误码的时间,即,存储服务器可先向上述主机发送与上述第一 LUN对应的UA信息,而后再向上述主机发送第一错误码。当然,在一些场景中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间也可能晚于或同步于上述向上述主机发送第一错误码的时间。实践发现,在很多场景下,上述向上述主机发送与上述第一LUN对应的UA信息的时间,早于上述向上述主机发送第一错误码的时间,主机感知业务链路变化的情况更好。
[0072]102、上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后,重启上述第一控制器。
[0073]在本发明一些实施例中,上述存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。其中,上述NI和上述N2为正整数。其中,上述NI和上述N2小于或等于上述N。其中,上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0074]举例来说,上述存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒、25秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0075]又例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0076]再例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0077]在本发明的一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息之后发送的查询(Inquiry)指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0078]在本发明的又一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0079]在本发明的另一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的报告端口组状态(RTPG,report target port groups)指令,贝U可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0080]可以看出,本实施例提供的技术方案中,在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0081]为便于更好的理解和实施本发明实施例提供的上述方案,下面通过一些具体的应用场景进行举例说明。
[0082]参见图2,图2为本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图。如图2所示,本发明实施例提供的另一种处理存储服务器中控制器重启的方法可包括以下内容:
[0083]201、存储服务器升级存储服务器中的第二控制器。
[0084]202、存储服务器重启第二控制器。
[0085]203、存储服务器接收主机下发的与上述存储服务器中的第一 LUN (第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令。
[0086]此时假设第二控制器为备控制器,第一控制器为主控制器。
[0087]204、存储服务器向上述主机发送与上述第一 LUN对应的UA信息。
[0088]205、存储服务器向上述主机发送第一错误码。
[0089]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0090]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸ο
[0091]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0092]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0093]在本实施例中,存储服务器向上述主机发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机发送第一错误码的时间。
[0094]206、存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接。
[0095]207、存储服务器将上述第一 UA的工作控制器由上述第一控制器切换为上述第二控制器。
[0096]208、存储服务器升级上述第一控制器。
[0097]209、存储服务器重启上述第一控制器。
[0098]在本发明一些实施例中,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,可以包括:上述存储服务器若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。上述NI和上述N2为正整数。上述NI和上述N2小于或等于上述N。上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0099]例如存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0100]又例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0101]再例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0102]在本发明的一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息之后发送的查询(Inquiry)指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0103]在本发明的又一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0104]在本发明的另一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的报告端口组状态(RTPG,report target port groups)指令,贝U可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0105]可以看出,本实施例提供的技术方案中,在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0106]参见图3,图3为本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图。如图3所示,本发明实施例提供的另一种处理存储服务器中控制器重启的方法可包括以下内容:
[0107]301、存储服务器升级存储服务器中的第二控制器。
[0108]302、存储服务器重启第二控制器。
[0109]303、存储服务器接收主机下发的与上述存储服务器中的第一 LUN (第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令。
[0110]此时假设第二控制器为备控制器,第一控制器为主控制器。
[0111]304、存储服务器向上述主机发送第一错误码。
[0112]305、存储服务器向上述主机发送与上述第一 LUN对应的UA信息。
[0113]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0114]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸ο
[0115]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。[0116]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0117]在本实施例中,存储服务器向上述主机发送与上述第一 LUN对应的UA信息的时间,晚于上述向上述主机发送第一错误码的时间。
[0118]306、存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接。
[0119]307、存储服务器将上述第一 UA的工作控制器由上述第一控制器切换为上述第二控制器。
[0120]308、存储服务器升级上述第一控制器。
[0121]309、存储服务器重启上述第一控制器。
[0122]在本发明一些实施例中,上述存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。其中,上述NI和上述N2为正整数。其中,上述NI和上述N2小于或等于上述N。其中,上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0123]举例来说,上述存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0124]又举例来说,上述存储服务器若接收到主机下发的与上述存储服务器中的第一LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0125]再举例来说,上述存储服务器若接收到主机下发的与上述存储服务器中的第一LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0126]在本发明的一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息之后发送的查询(Inquiry)指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0127]在本发明的又一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0128]在本发明的另一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的报告端口组状态(RTPG,report target port groups)指令,贝U可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0129]可以看出,本实施例提供的技术方案中,在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0130]参见图4,图4为本发明实施例提供的另一种处理存储服务器中控制器重启的方法的流程示意图。如图4所示,本发明实施例提供的另一种处理存储服务器中控制器重启的方法可包括以下内容:
[0131]401、存储服务器升级存储服务器中的第二控制器。[0132]402、存储服务器重启第二控制器。
[0133]403、存储服务器接收主机下发的与上述存储服务器中的第一 LUN (第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令。
[0134]此时假设第二控制器为备控制器,第一控制器为主控制器。
[0135]404、存储服务器向上述主机发送第一错误码以及与上述第一 LUN对应的UA信息。
[0136]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0137]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸ο
[0138]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0139]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0140]在本实施例中,存储服务器可同步向上述主机发送第一错误码和与上述第一 LUN对应的UA信息。
[0141]405、存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接。
[0142]406、存储服务器将上述第一 UA的工作控制器由上述第一控制器切换为上述第二控制器。
[0143]407、存储服务器升级上述第一控制器。
[0144]408、存储服务器重启上述第一控制器。
[0145]在本发明一些实施例中,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,可以包括:上述存储服务器若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。其中,上述NI和上述N2为正整数。上述NI和上述N2小于或等于上述N。上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0146]例如存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0147]又例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0148]再例如,存储服务器若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,向上述主机发送第一错误码,可包括:上述存储服务器若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0149]在本发明的一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息之后发送的查询(Inquiry)指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0150]在本发明的又一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0151]在本发明的另一些实施例中,上述一种处理存储服务器中控制器重启的方法还可进一步包括:上述存储服务器若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的报告端口组状态(RTPG, report target portgroups)指令,贝U可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0152]可以看出,本实施例提供的方案中,在存储服务器中的第一控制器将要重启之前,上述存储服务器若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0153]下面以小型计算机系统接口(SCSI,Small Computer System Interface)的 SCSI主要命令(SPC, SCSI Primary Commands)协议的场景为例介绍一种可能的UA信息格式。
[0154]其中,SPC协议定义的UA信息具体可为2/6/2A06,在TlO中关于UA信息为2/6/2A06的解释包括:
[0155]Status:2 (check conditl/0n);
[0156]Sense key:2 (unit attentl/On);
[0157]ASC and ASCQ:2A06 (Asymmetric Access State Changed)。
[0158]其中,上述UA信息2/6/2A06所描述的UA指示路径状态发生变化,例如上述第一LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器。
[0159]实践发现,在多数情况下,如果存储服务器可在重启控制器(如重启第一控制器)之前向主机反馈UA信息,这样,该主机例如在使用RTPG指令进行查询之时,可以查询到存储服务器返回的路径状态信息(路径状态信息指示一个控制器不可用而另一个控制器最优),那么该主机就可感知路径状态变化,主机可提前将业务输入/输出指令的下发链路切换的最优控制器对应的链路上。实际上测试结果发现:部署Solaris、Windows或VMwareESX/ESXi等系统的主机可及时感知UA信息之后,将业务输入/输出指令的下发链路切换的最优控制器对应的链路上,而也有些操作系统的主机对UA信息并不敏感,经常没有及时进行业务输入/输出指令的下发链路的切换,因而可能造成的这些主机业务的1/0归零的时间较长。
[0160]深入研究和测试,通过对比相关错误码发现,对于即将重启的控制器对应的链路上收到的来自主机的业务输入/输出指令,如果存储服务器向该主机回复用于响应该业务输入/输出指令的第一错误码(如2/2/040C),这样可以让主机更加确定和快速感知路径状态的变化。
[0161]其中,在TlO中关于第一错误码为2/2/040C的解释包括:
[0162]Status:2 (check conditl/0n);
[0163]Sense key:2 (not ready);
[0164]ASC and ASCQ:040C(Logical Unit Not Accessible Target Port InunavailableState)。
[0165]那么,第一错误码2/2/040C是否适用于所有主机呢,经过研究和分析部署几类系统的主机有以下一些特点:
[0166]例如,部署SoIari s/ffindows/VMware ESX/ESXi等系统的主机,若存储服务器中的第一控制器重启,这类主机在第一控制器对应的链路上接收到响应业务输入/输出指令的UA信息(如2/6/2A06),这类主机可切换到存储服务器中的第二控制器对应的链路上下发业务输入/输出指令,这类主机可不需2/2/040C错误码的指引来进行链路切换。[0167]又举例来说,对于部署HP-UX等系统的主机,若存储服务器的第一控制器将重启,主机若在第一控制器对应的链路上接收到用于响应来自该主机的业务输入/输出指令的UA信息(如2/6/2A06),主机向存储服务器下发Inquiry指令而通常不下发RTPG指令。主机通过Inquiry指令向存储服务器查询第一控制器对应的链路是否正常,两次下发RTPG指令得到存储服务器响应的路径状态后,主机正常下发业务输入/输出指令,归零时间通常大于4秒。
[0168]又举例来说,对于部署MAC OS等系统的主机,若存储服务器的第一控制器将重启,主机在第一控制器对应的链路上接收到响应业务输入/输出指令的UA信息(如2/6/2A06)。该主机向存储服务器下发RTPG指令,对于存储服务器响应该RTPG指令而回复的UA信息(如2/6/2A06),主机通常是重新下发RTPG指令而不切换业务输入/输出指令的下发链路。但是主机接收到第一错误码(如2/2/040C)之后,上述主机通常会切换下发业务输入/输出指令的链路为第二控制器对应的链路,此时上述主机通常无归零时间。
[0169]又举例来说,对于部署AIX等系统的主机而言,若存储服务器的第一控制器将重启,该主机在第一控制器对应的链路上接收到用于响应来自该主机的业务输入/输出指令的UA信息(如2/6/2A06),主机在第一控制器对应的链路上下发测试单元将要(TUR,testunit ready)指令,若存储服务器反馈用于响应TUR指令的错误码(如2/2/040C),主机进一步在第一控制器对应的链路上下发用于查询标准页的Inquiry指令,存储服务器返回用于指示LUN未连接的指示信息,其中,存储服务器可在持续8秒钟之内向该主机反馈用于响应每个Inquiry指令的用于指示LUN未连接的指示。然后主机才在第二控制器对应的链路上下发RTPG指令,此时主机切换为向第二控制器对应的链路下发业务输入/输出指令,主机I/O归零时间通常为8秒。
[0170]又举例来说,对于部署Red hat/SUSE等系统的主机而言,若存储服务器的第一控制器将重启,主机在第一控制器对应的链路上接收到存储服务器反馈的用于响应来自该主机的业务输入/输出指令的UA信息(如2/6/2A06),主机通常不将业务输入/输出指令下发链路切换到第二控制器对应的链路上,如果主机再次接收到存储服务器反馈的错误码2/2/040C,主机通常将业务输入/输出指令下发链路切换到第二控制器对应的链路上,主机通常再次接到UA信息(如2/6/2A06)之后,需3秒后才重新下发业务输入/输出指令,且不会向存储服务器发送RTPG指令来查询路径状态,主机I/O归零时间通常为3秒。
[0171]总的来说,对UA信息(如2/6/2A06 )敏感的主机,通过在控制器重启前返回UA信息可解决问题,对于UA信息不敏感的主机,主机收到UA信息后可能继续下发业务输入/输出指令,此后存储服务器给主机回复用于响应业务输入/输出指令的错误码(如2/2040C)。实测发现,大部分主机对错误码(如2/2/040C)比较敏感,有些主机接收到错误码(2/2/040C)之后可能就业务归零,比如部署Windows或Solaris系统的主机。部署有些操作系统的主机在收到UA信息之后通常也不能让其切换下发业务输入/输出指令的链路,需存储服务器对该主机后续下发的业务输入/输出指令等回复错误码(如2/2/040C),如部署MAC OS等系统的主机。部署有些操作系统的主机在收到UA信息后,可能通过Inquiry指令来查询对应LUN的连接是否可用,再向存储服务器下发RTPG指令,例如部署HP-UX等系统的主机。部署有些操作系统的主机在收到UA信息后,不但依赖错误码(如2/2/040C),也需要利用Inquiry指令进行确认,并且不会在将要重启的控制器对应的链路上下发RTPG指令,例如部署AIX、RedHat等系统的主机。
[0172]根据上述的研究分析可以看出,若存储服务器将错误码和UA信息都反馈给主机(错误码(2/2/040C)例如可在UA信息之后反馈给主机)。而对于主机下发的Inquiry指令,包括查询标准页或其它页面(其它页面如0x83页、0x80页等等)的Inquiry指令,存储服务器可向主机回复用于响应Inquiry指令的用于指示LUN未连接的指示信息(例如向部署HP-UX系统的主机回复0x7c,向部署其他某些操作系统的主机回复0x20)。部署AIX系统的主机收到错误码(如2/2/040C)之后,还可能向存储服务器下发Inquiry命令,下发Inquiry命令之后持续8秒后该主机才在另外一个控制器上恢复业务,所以存储服务器可在8秒以上的设定时长之内向主机反馈错误码(如2/2/040C),以解决这种问题,例如设定时长可定为8秒、9秒、10秒等。
[0173]上述举例中只是描述了一些常见系统的情况,其它系统按照类似方式进行推导,此处不再一一赘述。
[0174]下面还提供用于实施上述方案的相关装置。
[0175]参见图5,本发明实施例还提供一种存储服务器500,可包括:接收响应单元510和重启控制单元520。
[0176]其中,接收响应单元510,用于在上述存储服务器中的第一控制器将要重启前,若接收到主机下发的与上述存储服务器中的第一逻辑单元相对应的业务访问指令,向上述主机发送与上述第一逻辑单元对应的UA信息,并向上述主机发送第一错误码。
[0177]其中,上述UA信息所描述的UA指示上述第一逻辑单元的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一逻辑单元无法访问和/或目标端口状态不可用。
[0178]重启控制单元520,用于在上述接收响应单元向上述主机发送与上述第一逻辑单元对应的UA信息,并向上述主机发送第一错误码之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一逻辑单元的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后,重启上述第一控制器。
[0179]在本发明的一些实施例中,接收响应单元510可具体用于,在上述存储服务器中的第一控制器将要重启之前,若在设定时长之内接收到主机下发的与上述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述业务访问指令的与上述第一逻辑单元对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0180]在本发明的一些实施例中,接收响应单元510还可用于,若接收到上述主机在接收到上述UA信息之后发送的Inquiry指令,则向上述主机发送用于指示第一逻辑单元当前连接不可用的指示;
[0181]或者,
[0182]接收响应单元510还可用于,若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一逻辑单元当前连接不可用的指不;
[0183]或者,
[0184]接收响应单元510还可用于,若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的RTPG指令,则向上述主机发送用于指示出上述第二控制器将作为上述第一逻辑单元的工作控制器的指示。
[0185]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0186]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0187]在本发明的一些实施例中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机发送第一错误码的时间,即,接收响应单元510可先向上述主机发送与上述第一 LUN对应的UA信息,而后再向上述主机发送第一错误码。当然,在一些场景中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间也可能晚于或同步于上述向上述主机发送第一错误码的时间。
[0188]可以看出,本实施例提供的技术方案中,存储服务器500中的第一控制器将要重启之前,存储服务器500若接收到某主机下发的与存储服务器500中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为存储服务器500中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于存储服务器500在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为存储服务器500中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器500中控制器重启而造成的主机业务的I/O归零的时间。
[0189]参见图6,图6为本发明实施例提供的一种存储服务器600的示意图,存储服务器600可包括至少一个总线601、与总线601相连的至少一个处理器602以及与总线601相连的至少一个存储器603。
[0190]其中,处理器602通过总线601,调用存储器603中存储的代码以用于在存储服务器600中的第一控制器将要重启之前,若接收到主机下发的与上述存储服务器中的第一LUN (其中,第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后,重启上述第一控制器。
[0191]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0192]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸ο
[0193]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0194]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0195]在本发明的一些实施例中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机发送第一错误码的时间,即,处理器602可先向上述主机发送与上述第一 LUN对应的UA信息,而后再向上述主机发送第一错误码。当然,在一些场景中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间也可能晚于或同步于上述向上述主机发送第一错误码的时间。
[0196]在本发明一些实施例中,上述处理器602若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可以包括:处理器602若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。其中,上述NI和上述N2为正整数。其中,上述NI和上述N2小于或等于上述N。其中,上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0197]例如上述处理器602若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器602若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0198]又举例来说,上述处理器602若接收到主机下发的与上述存储服务器中的第一LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器602若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0199]再例如,处理器602若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器602若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0200]在本发明的一些实施例中,处理器602还可用于,若接收到上述主机在接收到上述UA信息之后发送的Inquiry指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0201]在本发明的又一些实施例中,处理器602还可用于,若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一LUN当前连接不可用的指示。
[0202]在本发明的另一些实施例中,处理器602还可用于,若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的RTPG指令,则可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0203]可以看出,本实施例提供的方案中,存储服务器600中的第一控制器将要重启之前,存储服务器600若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0204]参见图7,图7是本发明另一实施例提供的终端设备700的结构框图。
[0205]其中,终端设备700可以包括:至少一个处理器701,至少一个网络接口 704或者其他用户接口 703,存储器705,至少一个通信总线702。通信总线702用于实现这些组件之间的连接通信。其中,该终端设备700可选的包含用户接口 703,包括:显示器(例如,触摸屏、LCD、CRT、全息成像(Holographic)或者投影(Projector)等)、点击设备(例如,鼠标,轨迹球(trackball)触感板或触摸屏等)、摄像头和/或拾音装置等。
[0206]其中,存储器702可以包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储器702中的一部分还可以包括非易失性随机存取存储器(NVRAM)。
[0207]在一些实施方式中,存储器705存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
[0208]操作系统7051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;[0209]应用程序模块7052,包含各种应用程序,用于实现各种应用业务。
[0210]应用程序模块7052中包括但不限于接收响应单元510和重启控制单元550等。
[0211]在本发明实施例中,通过调用存储器705存储的程序或指令,处理器701在存储服务器700中的第一控制器将要重启之前,若接收到主机下发的与上述存储服务器中的第一LUN (其中,第一 LUN可为存储服务器中的任意LUN)相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后,重启上述第一控制器。
[0212]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用。
[0213]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸o
[0214]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0215]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0216]在本发明的一些实施例中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机发送第一错误码的时间,即,处理器701可先向上述主机发送与上述第一 LUN对应的UA信息,而后再向上述主机发送第一错误码。当然,在一些场景中,上述向上述主机发送与上述第一 LUN对应的UA信息的时间也可能晚于或同步于上述向上述主机发送第一错误码的时间。
[0217]在本发明一些实施例中,上述处理器701若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可以包括:处理器701若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一 LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。其中,上述NI和上述N2为正整数。其中,上述NI和上述N2小于或等于上述N。其中,上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者,上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0218]例如上述处理器701若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器701若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机发送用于响应上述每条业务访问指令的第一错误码。
[0219]又例如,上述处理器701若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器701若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0220]再例如,处理器701若接收到主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码,可包括:处理器701若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机下发的与上述存储服务器中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机发送用于响应上述其中一条业务访问指令的第一错误码。
[0221]在本发明的一些实施例中,处理器701还可用于,若接收到上述主机在接收到上述UA信息之后发送的Inquiry指令,则可向上述主机发送用于指示第一 LUN当前连接不可用的指示。
[0222]在本发明的又一些实施例中,处理器701还可用于,若接收到上述主机在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机发送用于指示第一LUN当前连接不可用的指示。
[0223]在本发明的另一些实施例中,处理器701还可用于,若接收到上述主机在接收到上述UA信息和/或上述第一错误码之后发送的RTPG指令,则可向上述主机发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0224]可以看出,本实施例提供的方案中,存储服务器700中的第一控制器将要重启之前,存储服务器700若接收到某主机下发的与上述存储服务器中的第一 LUN相对应的业务访问指令,向上述主机发送与上述第一 LUN对应的UA信息,并向上述主机发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器在执行上述向上述主机发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机发送第一错误码的步骤之后,断开上述第一控制器与上述主机之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机感知链路状态变化的需求,有利于主机基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器中控制器重启而造成的主机业务的I/O归零的时间。
[0225]参见图8,本发明实施例还提供一种分布式存储系统,可包括:
[0226]多台存储服务器800,其中,存储服务器800可如上述实施例描述的任意一种存储服务器。
[0227]参见图9,本发明实施例还提供一种通信系统,可包括:
[0228]存储服务器910和多台主机920。
[0229]存储服务器910用于,在存储服务器910中的第一控制器将要重启之前,若接收到主机920下发的与上述存储服务器910中的第一逻辑单元相对应的业务访问指令,向主机920发送与上述第一逻辑单元对应的UA信息,并向主机920发送第一错误码;其中,上述UA信息所描述的UA指示上述第一逻辑单元的工作控制器将由上述第一控制器切换为上述存储服务器910中的第二控制器;上述第一错误码用于指示出上述第一逻辑单元无法访问和/或目标端口状态不可用;在执行上述向主机920发送与上述第一逻辑单元对应的UA信息的步骤和上述向主机920发送第一错误码的步骤之后,断开上述第一控制器与上述主机920之间的连接,并在将上述第一逻辑单元的工作控制器由上述第一控制器切换为上述存储服务器910中的上述第二控制器之后,重启上述第一控制器。
[0230]其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器910中的第二控制器;上述第一错误码用于指示出上述第一LUN无法访问和/或目标端口状态不可用。
[0231]其中,本发明各实施例提及的业务访问指令可以是业务输出指令或业务输入指令
坐寸o
[0232]在本发明的一些实施例中,上述第一错误码例如可为2/6/040C。
[0233]在本发明的一些实施例中,上述UA信息例如为2/6/2A06。
[0234]在本发明的一些实施例中,上述向上述主机920发送与上述第一 LUN对应的UA信息的时间,可早于上述向上述主机920发送第一错误码的时间,即存储服务器910可先向上述主机920发送与上述第一 LUN对应的UA信息,而后再向上述主机920发送第一错误码。当然,在一些场景中,上述向上述主机920发送与上述第一 LUN对应的UA信息的时间也可能晚于或同步于上述向上述主机920发送第一错误码的时间。实践发现,在很多场景下,上述向上述主机920发送与上述第一 LUN对应的UA信息的时间,早于上述向上述主机920发送第一错误码的时间,主机920感知业务链路变化的情况更好。
[0235]在本发明一些实施例中,存储服务器910若接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的业务访问指令,向上述主机920发送与上述第一 LUN对应的UA信息,并向上述主机920发送第一错误码,可包括:上述存储服务器910若在设定时长(其中,该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的其中NI条业务访问指令中的每条业务访问指令,向上述主机920发送用于响应上述NI条业务访问指令中的每条业务访问指令的与上述第一LUN对应的UA信息,并可针对上述N条业务访问指令中的其中N2条业务访问指令中的每条业务访问指令,向上述主机920发送用于响应上述N2条业务访问指令中的每条业务访问指令的第一错误码。上述NI和上述N2为正整数。其中,上述NI和上述N2小于或等于上述N。其中,上述NI条业务访问指令为上述N条业务访问指令的子集。上述N2条业务访问指令为上述N条业务访问指令的子集。其中,上述NI条业务访问指令与上述N2条业务访问指令的交集可为空集。或者上述NI条业务访问指令与上述N2条业务访问指令的交集可为非空集,举例来说,上述NI条业务访问指令可为上述N2条业务访问指令的子集,或者,上述N2条业务访问指令可为上述NI条业务访问指令的子集,或者,上述N2条业务访问指令和上述NI条业务访问指令可以部分相同。
[0236]例如上述存储服务器910若接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的业务访问指令,向上述主机920发送与上述第一 LUN对应的UA信息,并向上述主机920发送第一错误码,可包括:上述存储服务器910若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机920发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息,并向上述主机920发送用于响应上述每条业务访问指令的第一错误码。
[0237]又例如,存储服务器910若接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的业务访问指令,向上述主机920发送与上述第一 LUN对应的UA信息,并向上述主机920发送第一错误码,可包括:上述存储服务器910若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机920发送用于响应上述每条业务访问指令的第一错误码;并可针对上述N条业务访问指令中的其中一条业务访问指令(其中,该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机920发送用于响应上述其中一条业务访问指令的与上述第一 LUN对应的UA信息。
[0238]再例如,存储服务器910若接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的业务访问指令,向上述主机920发送与上述第一 LUN对应的UA信息,并向上述主机920发送第一错误码,可包括:上述存储服务器910若在设定时长(该设定时长例如为8?10秒、5秒、3秒、12秒、15秒或根据需要设定的其它时长)之内接收到主机920下发的与上述存储服务器910中的第一 LUN相对应的N条业务访问指令,则针对上述N条业务访问指令中的每条业务访问指令,向上述主机920发送用于响应上述每条业务访问指令的与上述第一 LUN对应的UA信息;并可针对上述N条业务访问指令中的其中一条业务访问指令(该其中一条业务访问指令例如可为上述N条业务访问指令中最后接收到一条业务访问指令、或为上述N条业务访问指令中最先接收到的一条业务访问指令或上述N条业务访问指令中的任意一条业务访问指令),向上述主机920发送用于响应上述其中一条业务访问指令的第一错误码。
[0239]在本发明的一些实施例中,存储服务器910还可用于,上述存储服务器910若接收到上述主机920在接收到上述UA信息之后发送的查询(Inquiry)指令,则可向上述主机920发送用于指示第一 LUN当前连接不可用的指示。
[0240]在本发明的又一些实施例中,存储服务器910还可用于,上述存储服务器910若接收到上述主机920在接收到上述UA信息和上述第一错误码之后发送的Inquiry指令,则向上述主机920发送用于指示第一 LUN当前连接不可用的指示。
[0241 ] 在本发明的另一些实施例中,存储服务器910还可用于,若接收到上述主机920在接收到上述UA信息和/或上述第一错误码之后发送的RTPG指令,则可向上述主机920发送用于指示出上述第二控制器将作为上述第一 LUN的工作控制器的指示。
[0242]可以看出,本实施例提供的方案中,在存储服务器910中的第一控制器将要重启之前,上述存储服务器910若接收到某主机920下发的与上述存储服务器910中的第一 LUN相对应的业务访问指令,向上述主机920发送与上述第一 LUN对应的UA信息,并向上述主机920发送第一错误码;其中,上述UA信息所描述的UA指示上述第一 LUN的工作控制器将由上述第一控制器切换为上述存储服务器910中的第二控制器;上述第一错误码用于指示出上述第一 LUN无法访问和/或目标端口状态不可用;由于上述存储服务器910在执行上述向上述主机920发送与上述第一 LUN对应的UA信息的步骤和上述向上述主机920发送第一错误码的步骤之后,断开上述第一控制器与上述主机920之间的连接,并在将上述第一 UA的工作控制器由上述第一控制器切换为上述存储服务器910中的上述第二控制器之后重启上述第一控制器,因此,有利于满足多种主机920感知链路状态变化的需求,有利于主机920基于其敏感的错误码和/或进行业务链路的切换,进而有利于缩短因存储服务器910中控制器重启而造成的主机920业务的I/O归零的时间。
[0243]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0244]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0245]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0246]上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0247]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0248]上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0249]以上上述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【权利要求】
1.一种处理存储服务器中控制器重启的方法,其特征在于,包括: 在存储服务器中的第一控制器将要重启之前,所述存储服务器若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码; 其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用; 所述存储服务器在执行所述向所述主机发送与所述第一逻辑单元对应的单元关注条件信息的步骤和所述向所述主机发送第一错误码的步骤之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
2.根据权利要求1所述的方法,其特征在于, 所述方法还包括: 所述存储服务器若接收到所述主机在接收到所述单元关注条件信息之后发送的查询Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示; 或者, 所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和所述第一错误码之后发送的Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示;` 或者, 所述存储服务器若接收到所述主机在接收到所述单元关注条件信息和/或所述第一错误码之后发送的报告端口组状态RTPG指令,则向所述主机发送用于指示出所述第二控制器将作为所述第一逻辑单元的工作控制器的指示。
3.根据权利要求1至2任一项所述的方法,其特征在于, 所述存储服务器若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码,包括: 所述存储服务器若在设定时长之内接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对所述N条业务访问指令中的每条业务访问指令,向所述主机发送用于响应所述业务访问指令的与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送用于响应所述每条业务访问指令的第一错误码。
4.根据权利要求3所述的方法,其特征在于, 所述设定时长为8~10秒。
5.根据权利要求1至4任一项所述的方法,其特征在于, 所述第一错误码为2/6/040C。
6.根据权利要求1至5所述的方法,其特征在于, 所述单元关注条件信息为2/6/2A06。
7.一种存储服务器,其特征在于,包括: 接收响应单元,用于在所述存储服务器中的第一控制器将要重启前,若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码; 其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用; 重启控制单元,用于在所述接收响应单元向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
8.根据权利要求7所述的存储服务器,其特征在于, 所述接收响应单元具体用于,在所述存储服务器中的第一控制器将要重启之前,若在设定时长之内接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的N条业务访问指令,则针对所述N条业务访问指令中的每条业务访问指令,向所述主机发送用于响应所述业务访问指令的与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送用于响应所述每条业务访问指令的第一错误码。
9.根据权利要求7至8任一项所述的存储服务器,其特征在于, 所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息之后发送的查询Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示; 或者, 所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息和所述第一错误码之后发送的Inquiry指令,则向所述主机发送用于指示第一逻辑单元当前连接不可用的指示; 或者, 所述接收响应单元还用于,若接收到所述主机在接收到所述单元关注条件信息和/或所述第一错误码之后发送的报告端口组状态RTPG指令,则向所述主机发送用于指示出所述第二控制器将作为所述第一逻辑单元的工作控制器的指示。
10.一种分布式存储系统,其特征在于,包括: 多台如权利要求7至9任一项所述的存储服务器。
11.一种通信系统,其特征在于,包括: 存储服务器和多台主机; 所述存储服务器用于,在所述存储服务器中的第一控制器将要重启之前,若接收到主机下发的与所述存储服务器中的第一逻辑单元相对应的业务访问指令,向所述主机发送与所述第一逻辑单元对应的单元关注条件信息,并向所述主机发送第一错误码;其中,所述单元关注条件信息所描述的单元关注条件指示所述第一逻辑单元的工作控制器将由所述第一控制器切换为所述存储服务器中的第二控制器;所述第一错误码用于指示出所述第一逻辑单元无法访问和/或目标端口状态不可用;在执行所述向所述主机发送与所述第一逻辑单元对应的单元关注条件信息的步骤和所述向所述主机发送第一错误码的步骤之后,断开所述第一控制器与所述主机之间的连接,并在将所述第一逻辑单元的工作控制器由所述第一控制器切换为所述存储服务器中的所述第二控制器之后,重启所述第一控制器。
【文档编号】G06F9/445GK103634388SQ201310601316
【公开日】2014年3月12日 申请日期:2013年11月22日 优先权日:2013年11月22日
【发明者】罗成凤 申请人:华为技术有限公司