CN102984002A - 一种处理i/o超时的方法和装置 - Google Patents
一种处理i/o超时的方法和装置 Download PDFInfo
- Publication number
- CN102984002A CN102984002A CN2012104906961A CN201210490696A CN102984002A CN 102984002 A CN102984002 A CN 102984002A CN 2012104906961 A CN2012104906961 A CN 2012104906961A CN 201210490696 A CN201210490696 A CN 201210490696A CN 102984002 A CN102984002 A CN 102984002A
- Authority
- CN
- China
- Prior art keywords
- path
- request
- sends
- transmission
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种处理I/O超时的方法和装置,能够减少I/O超时的概率,同时减轻处理I/O请求的负担。所述方法包括:接收服务器发送的取消任务请求消息;在接收到取消任务请求消息后,若确定接收到通过第一路径发送的I/O请求,执行通过第一路径发送的I/O请求所请求的读写操作,并向服务器发送取消任务请求消息的响应消息;接收服务器通过第二路径发送的I/O请求;若通过第二路径发送的I/O请求与通过第一路径发送的I/O请求相同,将与通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为第二路径;最后将通过第一路径发送的I/O请求的操作结果,通过第二路径发送给服务器。本发明应用于计算机领域。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种处理I/O超时的方法和装置。
背景技术
为了提高数据传输的可靠性,避免单点故障,应用服务器与存储系统之间往往采用多条路径相连的方式。多路径软件负责管理多条路径,在首选路径发生故障时切换到备用路径,以保证业务不中断。
从路径故障发生到I/O(Input/Output,输入/输出)请求切换到备用路径的这段时间,下发I/O请求的上层应用将一直处于阻塞状态,等待I/O请求返回给多路径软件处理,因此多路径软件处理I/O请求切换的时间将影响到上层应用被阻塞的时间,是多路径软件的一项重要技术指标。
其中,路径故障通常包括路径断连和I/O请求超时。在路径断连的场景下,HBA(Host Bus Adapter,主机总线适配器)可以明确感知到路径中断,并立即返回I/O请求失败,通知多路径软件切换到备用路径重新处理,所以多路径软件可以快速切换I/O请求到备用路径。
在I/O请求超时的场景下,多路径软件必须等到超时时间达到上层应用预设的超时时间之后才能触发I/O请求超时错误,同时切换I/O请求到备用路径,这通常需要30s以上,针对这种情况下I/O请求切换时间过长的问题,现有技术提出了如下解决方法:
通过多路径软件设置下发给HBA的超时时间,通过减小设置的I/O请求的超时时间,可以更早返回I/O请求的超时错误,进而缩短切换到备用路径的时间。例如:多路径软件设置下发给HBA的超时时间为5S,当超时发生后,所述HBA向所述存储阵列下发abort task(取消任务)任务管理命令取消该I/O请求,当所述存储阵列返回I/O请求取消成功后,所述HBA还要清除自身内部该I/O请求的信息后再给所述多路径软件返回I/O请求的超时错误。
该方法虽然可以缩短在路径由于误码、丢帧的原因导致的I/O请求超时的场景下I/O请求切换时间过长的问题,但是I/O请求超时也可能在存储阵列内部压力大或异常时出现,在这种情况下,上述方法不仅不能解决I/O请求超时的问题,反而会频频触发I/O请求超时,使那些正在存储阵列内部处理的I/O请求被取消并重新处理,进一步加重存储阵列的处理负担,增加I/O超时的概率。
发明内容
本发明的实施例提供一种处理I/O超时的方法和装置,能够减少I/O超时的概率,同时减轻处理I/O请求的负担。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种处理输入/输出I/O超时的方法,该方法包括:
接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;
接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;
接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
在第一种可能的实现方式中,根据第一方面,该方法还包括:
接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息;
在接收所述服务器通过所述第二路径发送的I/O请求后,还包括:
若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作;
将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
在第二种可能的实现方式中,根据第一方面或第一种可能的实现方式,若确定接收到所述通过第一路径发送的I/O请求后,还包括:
对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求;
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
在第三种可能的实现方式中,根据第二种可能的实现方式,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,还包括:
删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
在第四种可能的实现方式中,根据第一方面至第三种可能的实现方式,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
第二方面,一种处理输入输出I/O超时的装置,所述装置包括接收单元、处理单元、发送单元;
所述接收单元,用于接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;
所述处理单元,用于在所述接收单元接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作;
所述发送单元,用于向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;
所述接收单元,还用于接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;
所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
所述发送单元,还用于将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
在第一种可能的实现方式中,根据第二方面,所述发送单元,还用于在所述接收单元接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息;
所述处理单元,还用于在所述接收单元接收所述服务器通过所述第二路径发送的I/O请求后,若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作;
所述发送单元,还用于将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
在第二种可能的实现方式中,根据第二方面或第一种可能的实现方式,所述处理单元,还用于若确定接收到所述通过第一路径发送的I/O请求后,还对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求;
所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
所述处理单元,还用于若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
在第三种可能的实现方式中,根据第二种可能的实现方式,所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
在第四种可能的实现方式中,根据第二方面至第三种可能的实现方式,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
基于上述技术方案的描述,本发明实施例提供了一种处理I/O超时的方法和装置。所述方法包括:接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;在接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;最后将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
该方法由于在接收到所述取消任务请求消息后,并没有真正取消所述通过第一路径发送的I/O请求,从而在接收服务器通过第二路径发送的携带有第一标记的I/O请求后,通过信息匹配,匹配到所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,进而继承所述通过第一路径发送的I/O请求的处理状态,减少了I/O超时的概率,同时减轻了处理I/O请求的负担。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种部署了多路径软件的环境;
图2为本发明实施例提供的一种处理I/O超时的方法;
图3为本发明实施例提供的另一种处理I/O超时的方法;
图4为本发明实施例提供的一种处理I/O超时的装置;
图5为本发明实施例提供的另一种处理I/O超时的装置。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在部署了多路径软件的环境中,如图1所示,上层应用、多路径软件、主机总线适配器HBA均存在于服务器中。其中,所述多路径软件负责管理多条路径,当首选路径发生故障时切换到备用路径,以保证业务不中断;所述主机总线适配器是一个在应用服务器和存储阵列间提供I/O处理和物理连接的电路板和/或集成电路适配器。
在对I/O请求操作时,在服务器的内部,上层应用首先下发相应的I/O请求给多路径软件,然后通过所述多路径软件选择所述I/O请求的第一路径。在所述服务器确定所述第一路径后,通过所述第一路径发送所述I/O请求给存储阵列,由所述存储阵列执行所述I/O请求所请求的读写操作,最后将操作结果通过所述第一路径返回给所述服务器。
在发生I/O请求超时的问题时,通过所述存储阵列与所述服务器的交互,完成整个处理过程。其中,在此过程中,在所述服务器的内部,需要所述主机总线适配器的驱动和多路径软件进行交互,完成第一路径到第二路径的切换过程。
需要说明的是,本发明实施例中提到的所述第一路径和所述第二路径不具有任何特殊的含义,仅指代是不同的路径。
实施例一、
本发明实施例提供了一种处理I/O超时的方法,具体如图2所示,该方法包括:
201、接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求。
在所述服务器通过第一路径发送I/O请求后,若存在误码、丢帧的问题使I/O请求无法到达存储阵列,或I/O请求虽然到达所述存储阵列,但存储阵列内部压力大,都会触发I/O超时的问题,这种情况下,所述服务器会向所述存储阵列发送取消任务请求消息,请求取消通过第一路径发送的I/O请求。
202、接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
对于所述服务器来说,在下发所述I/O请求时,所述I/O请求的内容具体包括三部分:第一,请求到达存储阵列;第二,请求由所述存储阵列对所述I/O请求执行读写操作;第三,请求在所述读写操作结束时返回操作结果。其中,第一部分和第三部分属于所述存储阵列与所述服务器之间的交互,第二部分是由所述存储阵列单独完成的。第二部分即所述存储阵列执行所述通过第一路径发送的I/O请求所请求的读写操作。
在接收到服务器发送的取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于存储阵列自身压力大、处理慢造成的。此时所述存储阵列并没有真正的取消对所述I/O请求的读写操作,而是在向所述服务器发送所述取消任务请求消息的响应消息的同时,继续执行所述通过第一路径发送的I/O请求所请求的操作。
根据SCSI协议,I/O请求超时后启动器(启动器是SCSI的概念,其实体就是服务器中的HBA)需要向目标器(其实体就是存储阵列)发送取消任务请求消息,请求取消该I/O请求,当目标器返回所述I/O请求取消成功后,为了避免对同一个I/O请求重复处理而导致数据破坏的问题,所述启动器还要清除自身内部该I/O请求的信息,即保证该I/O请求从启动器到目标器的整个流程都取消,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
本实施例提供的处理I/O请求超时的方法,可以遵循SCSI协议的处理流程,在标准环境下使用(即不影响HBA和操作系统的行为,不以来定制的HBA或操作系统进行修改)。所以此时,在所述服务器接收所述取消任务请求消息的响应消息后,服务器内部的HBA还要清除自身内部该I/O请求的信息,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
关于所述服务器内部的处理与交互过程,本发明实施例不作具体限定。
203、接收所述服务器通过所述第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求。
其中,所述第一标记是在所述I/O请求的CDB(CommamdDescriptor Block,命令描述块)中设置的,以标识该I/O请求为超时重发的I/O请求。
204、若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述存储阵列通过所述CDB识别出该I/O请求为超时重发的I/O请求,就会将该I/O请求和所述正处理的I/O请求进行匹配,其中,匹配可通过该I/O请求要访问的磁盘对象、读写方向、访问地址、长度进行匹配,匹配成功后,将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径,即该I/O请求消息不再关联之前的第一路径,而是关联现在的第二路径。
需要说明的是,所述I/O请求的返回路径是指当所述存储阵列执行完所述I/O请求所请求的读写操作后,将操作结果返回给服务器时所经过的路径。
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,说明所述存储阵列之前接收到所述I/O请求,则本次I/O请求超时是由于存储阵列自身内部压力大、处理慢造成的。
205、将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
基于上述技术方案的描述,本发明实施例提供了一种处理I/O超时的方法。所述方法包括:接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;在接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;最后将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
该方法由于在接收到所述取消任务请求消息后,并没有真正取消所述通过第一路径发送的I/O请求,从而在接收服务器通过第二路径发送的携带有第一标记的I/O请求后,通过信息匹配,匹配到所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,进而继承所述通过第一路径发送的I/O请求的处理状态,减少了I/O超时的概率,同时减轻了处理I/O请求的负担。
实施例二、
本发明实施例提供了一种处理I/O超时的方法,具体如图3所示,该方法包括:
301、接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求。
在所述服务器通过第一路径发送I/O请求后,若存在误码、丢帧的问题使I/O请求无法到达存储阵列,或I/O请求虽然到达所述存储阵列,但存储阵列内部压力大,都会触发I/O超时的问题,这种情况下,所述服务器会向所述存储阵列发送取消任务请求消息,请求取消通过第一路径发送的I/O请求。
302、接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求。
在接收到服务器发送的取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于存储阵列自身压力大、处理慢造成的。
这里对所述通过第一路径发送的I/O请求设置第二标记是为了后续进行匹配时,有针对性的进行匹配。
303、执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
对于所述服务器来说,在下发所述I/O请求时,所述I/O请求的内容具体包括三部分:第一,请求到达存储阵列;第二,请求由所述存储阵列对所述I/O请求执行读写操作;第三,请求在所述读写操作结束时返回操作结果。其中,第一部分和第三部分属于所述存储阵列与所述服务器之间的交互,第二部分是由所述存储阵列单独完成的,第二部分即所述存储阵列执行所述通过第一路径发送的I/O请求所请求的读写操作。
在接收到服务器发送的取消任务请求消息之后,所述存储阵列并没有真正的取消对所述I/O请求的读写操作,而是在向所述服务器发送所述取消任务请求消息的响应消息的同时,继续执行所述通过第一路径发送的I/O请求所请求的操作。
根据SCSI协议,I/O请求超时后启动器(启动器是SCSI的概念,其实体就是服务器中的HBA)需要向目标器(其实体就是存储阵列)发送取消任务请求消息,请求取消该I/O请求,当目标器返回所述I/O请求取消成功后,为了避免对同一个I/O请求重复处理而导致数据破坏的问题,所述启动器还要清除自身内部该I/O请求的信息,即保证该I/O请求从启动器到目标器的整个流程都取消,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
本实施例提供的处理I/O请求超时的方法,可以遵循SCSI协议的处理流程,在标准环境下使用(即不影响HBA和操作系统的行为,不以来定制的HBA或操作系统进行修改)。所以此时,在所述服务器接收所述取消任务请求消息的响应消息后,服务器内部的HBA还要清除自身内部该I/O请求的信息,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
关于所述服务器内部的处理与交互过程,本发明实施例不作具体限定。
304、接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息。
接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于误码、丢帧导致的,此时存储阵列直接向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。。
305、接收所述服务器通过所述第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求。
其中,所述第一标记是在所述I/O请求的CDB(CommamdDescriptor Block,命令描述块)中设置的,以标识该I/O请求为超时重发的I/O请求。
306、若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述存储阵列通过所述CDB识别出该I/O请求为超时重发的I/O请求,就会将该I/O请求和所述存储阵列中设置取消标记的I/O请求进行匹配,其中,匹配可通过该I/O请求要访问的磁盘对象、读写方向、访问地址、长度进行匹配,匹配成功后,将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径,即该I/O请求消息不再关联之前的第一路径,而是关联现在的第二路径。
这里将所述通过第二路径发送的I/O请求和所述存储阵列中设置第二标记的I/O请求进行匹配,缩小了匹配的范围,使所述通过第二路径发送的I/O请求在匹配时更有针对性,节省了匹配的时间。
需要说明的是,所述I/O请求的返回路径是指当所述存储阵列执行完所述I/O请求所请求的读写操作后,将操作结果返回给服务器时所经过的路径。
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,说明所述存储阵列之前接收到所述I/O请求,则本次I/O请求超时是由于存储阵列自身内部压力大、处理慢造成的。
307、删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
删除与所述通过第二路径发送的I/O请求匹配成功的I/O请求的第二标记,使之不再关联其它的I/O请求,这样可以防止误操作。
当然,也可以有其它的方式使之不再关联其它的I/O请求,本发明实施例对此不作具体限定。
308、将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
309、若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
若将所述通过第二路径发送的I/O请求和所述存储阵列中设置第二标记的I/O请求进行匹配时,没有匹配成功,说明所述存储阵列并没有接收到所述I/O请求,进而说明本次的I/O请求超时是由于误码、丢帧引起的。
310、将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
基于上述实施例的描述,当出现所述存储阵列由于内部压力大造成I/O请求超时的问题时,执行步骤301、302、303、305、306、307、308;当出现由于误码、丢帧的原因造成I/O请求超时的问题时,执行步骤301、304、305、309、310。
可选的,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
通过判断所述操作结果是否携带第三标记,可以准确识别I/O请求超时的路径故障,若所述操作结果携带第三标记,说明本次I/O请求超时是由于所述存储阵列内部压力大、处理慢造成的;
若所述操作结果没有携带第三标记,说明本次I/O请求超时是由于误码、丢帧的原因造成的。
在识别出路径故障后,可以更加有效的管理路径,例如如果是所述存储阵列内部压力大、处理慢造成的I/O请求超时,就可以控制I/O请求发送的速度或采用更为有效的方式进行管理,本发明实施例旨在说明一种处理I/O超时的方法,对如何管理路径不作具体限定。
当然,在出现误码、丢帧造成的I/O请求超时的问题时,现有技术也可以解决,采用本方案重点在于解决因存储阵列内部压力大造成的I/O请求超时的问题,在解决存储阵列因内部压力大造成的I/O请求超时的问题的同时,也可以解决误码、丢帧造成的I/O请求超时的问题,同时可以准确识别是何种I/O请求的超时的故障,带来了进一步的有益效果。
基于上述技术方案的描述,本发明实施例提供了一种处理I/O超时的方法。所述方法包括:接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;在接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;最后将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
该方法由于在接收到所述取消任务请求消息后,并没有真正取消所述通过第一路径发送的I/O请求,从而在接收服务器通过第二路径发送的携带有第一标记的I/O请求后,通过信息匹配,匹配到所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,进而继承所述通过第一路径发送的I/O请求的处理状态,减少了I/O超时的概率,同时减轻了处理I/O请求的负担。
实施例三、
本发明实施例提供了一种处理I/O超时的装置40,具体如图4所示,所述装置40包括接收单元41、处理单元42、发送单元43。
所述接收单元41,用于接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求。
在所述服务器通过第一路径发送I/O请求后,若存在误码、丢帧的问题使I/O请求无法到达所述装置40,或I/O请求虽然到达所述装置40,但所述装置40内部压力大,都会触发I/O超时的问题,这种情况下,所述服务器会向所述装置40发送取消任务请求消息,请求取消通过第一路径发送的I/O请求。
所述处理单元42,用于在所述接收单元41接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作。
对于所述服务器来说,在下发所述I/O请求时,所述I/O请求的内容具体包括三部分:第一,请求到达所述装置40;第二,请求由所述装置40对所述I/O请求执行读写操作;第三,请求在所述读写操作结束时返回操作结果。其中,第一部分和第三部分属于所述装置40与所述服务器之间的交互,第二部分是由所述装置40单独完成的。第二部分即所述装置40执行所述通过第一路径发送的I/O请求所请求的读写操作。
所述发送单元43,用于向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
在所述接收单元41接收到服务器发送的取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于所述装置40自身压力大、处理慢造成的。此时所述装置40并没有真正的取消对所述I/O请求的读写操作,而是在向所述服务器发送所述取消任务请求消息的响应消息的同时,继续执行所述通过第一路径发送的I/O请求所请求的操作。
根据SCSI协议,I/O请求超时后启动器(启动器是SCSI的概念,其实体就是服务器中的HBA)需要向目标器(其实体就是存储阵列)发送取消任务请求消息,请求取消该I/O请求,当目标器返回所述I/O请求取消成功后,为了避免对同一个I/O请求重复处理而导致数据破坏的问题,所述启动器还要清除自身内部该I/O请求的信息,即保证该I/O请求从启动器到目标器的整个流程都取消,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
本实施例提供的处理I/O请求超时的方法,可以遵循SCSI协议的处理流程,在标准环境下使用(即不影响HBA和操作系统的行为,不以来定制的HBA或操作系统进行修改)。所以此时,在所述服务器接收所述取消任务请求消息的响应消息后,服务器内部的HBA还要清除自身内部该I/O请求的信息,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
关于所述服务器内部的处理与交互过程,本发明实施例不作具体限定。
所述接收单元41,还用于接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求。
其中,所述第一标记是在所述I/O请求的CDB(CommamdDescriptor Block,命令描述块)中设置的,以标识该I/O请求为超时重发的I/O请求。
所述处理单元42,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述处理单元42通过所述CDB识别出该I/O请求为超时重发的I/O请求,就会将该I/O请求和所述正处理的I/O请求进行匹配,其中,匹配可通过该I/O请求要访问的磁盘对象、读写方向、访问地址、长度进行匹配,匹配成功后,将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径,即该I/O请求消息不再关联之前的第一路径,而是关联现在的第二路径。
需要说明的是,所述I/O请求的返回路径是指当所述处理单元42执行完所述I/O请求所请求的读写操作后,将操作结果返回给服务器时所经过的路径。
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,说明所述接收单元41之前接收到所述I/O请求,则本次I/O请求超时是由于所述装置40自身内部压力大、处理慢造成的。
所述发送单元43,还用于将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
可选的,所述发送单元43,还用于在所述接收单元41接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息。
接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于误码、丢帧导致的,此时所述装置40直接向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
所述处理单元42,还用于在所述接收单元41接收所述服务器通过所述第二路径发送的I/O请求后,若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
若将所述通过第二路径发送的I/O请求和所述装置40中的I/O请求进行匹配时,没有匹配成功,说明所述装置40并没有接收到所述I/O请求,进而说明本次的I/O请求超时是由于误码、丢帧引起的。
所述发送单元43,还用于将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
可选的,所述处理单元42,还用于若确定接收到所述通过第一路径发送的I/O请求,还对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求。
所述处理单元42,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述处理单元42,还用于若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
这里将所述通过第一路径发送的I/O请求设置第二标记,然后在所述通过第二路径发送的I/O请求进行匹配时,将所述通过第二路径发送的I/O请求和所述通过第一路径发送的设置第二标记的I/O请求进行匹配,缩小了匹配的范围,使所述通过第二路径发送的I/O请求在匹配时更有针对性,节省了匹配的时间。
可选的,所述处理单元42,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
删除与所述通过第二路径发送的I/O请求匹配成功的I/O请求的第二标记,使之不再关联其它的I/O请求,这样可以防止误操作。
当然,也可以有其它的方式使之不再关联其它的I/O请求,本发明实施例对此不作具体限定。
可选的,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
通过判断所述操作结果是否携带第三标记,可以准确识别I/O请求超时的路径故障,若所述操作结果携带第三标记,说明本次I/O请求超时是由于所述装置40内部压力大、处理慢造成的;
若所述操作结果没有携带第三标记,说明本次I/O请求超时是由于误码、丢帧的原因造成的。
在识别出路径故障后,可以更加有效的管理路径,例如如果是所述装置40内部压力大、处理慢造成的I/O请求超时,就可以控制I/O请求发送的速度或采用更为有效的方式进行管理,本发明实施例旨在说明一种处理I/O超时的方法,对如何管理路径不作具体限定。
当然,在出现误码、丢帧造成的I/O请求超时的问题时,现有技术也可以解决,采用本方案重点在于解决因所述装置40内部压力大造成的I/O请求超时的问题,在解决所述装置40因内部压力大造成的I/O请求超时的问题的同时,也可以解决误码、丢帧造成的I/O请求超时的问题,同时可以准确识别是何种I/O请求的超时的故障故障,带来了进一步的有益效果。
需要说明的是,所述装置40具体为存储阵列。
本发明实施例提供了一种处理I/O超时的装置,所述装置包括:接收单元、处理单元、发送单元。所述接收单元接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;所述处理单元在所述接收单元接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并且所述发送单元向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;所述接收单元还接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述处理单元还将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;最后所述发送单元将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
该装置由于在接收到所述取消任务请求消息后,并没有真正取消所述通过第一路径发送的I/O请求,从而在接收服务器通过第二路径发送的携带有第一标记的I/O请求后,通过信息匹配,匹配到所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,进而继承所述通过第一路径发送的I/O请求的处理状态,减少了I/O超时的概率,同时减轻了处理I/O请求的负担。
实施例四、
本发明实施例还提供了一种处理I/O超时的装置50,具体如图5所示,所述装置50包括输入接口51、处理器52、输出接口53。
所述输入接口51,用于接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求。
在所述服务器通过第一路径发送I/O请求后,若存在误码、丢帧的问题使I/O请求无法到达所述装置50,或I/O请求虽然到达所述装置50,但所述装置50内部压力大,都会触发I/O超时的问题,这种情况下,所述服务器会向所述装置50发送取消任务请求消息,请求取消通过第一路径发送的I/O请求。
所述处理器52,用于在所述输入接口51接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作。
对于所述服务器来说,在下发所述I/O请求时,所述I/O请求的内容具体包括三部分:第一,请求到达所述装置50;第二,请求由所述装置50对所述I/O请求执行读写操作;第三,请求在所述读写操作结束时返回操作结果。其中,第一部分和第三部分属于所述装置50与所述服务器之间的交互,第二部分是由所述装置50单独完成的。第二部分即所述装置50执行所述通过第一路径发送的I/O请求所请求的读写操作在所述输入接口51接收到所述HBA发送的取消任务请求消息后,所述处理器52并没有真正的取消I/O请求,而是继续处理所述通过第一路径发送的I/O请求。
所述输出接口53,用于向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
在所述输入接口51接收到服务器发送的取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于所述装置50自身压力大、处理慢造成的。此时所述装置50并没有真正的取消对所述I/O请求的读写操作,而是在向所述服务器发送所述取消任务请求消息的响应消息的同时,继续执行所述通过第一路径发送的I/O请求所请求的操作。
根据SCSI协议,I/O请求超时后启动器(启动器是SCSI的概念,其实体就是服务器中的HBA)需要向目标器(其实体就是存储阵列)发送取消任务请求消息,请求取消该I/O请求,当目标器返回所述I/O请求取消成功后,为了避免对同一个I/O请求重复处理而导致数据破坏的问题,所述启动器还要清除自身内部该I/O请求的信息,即保证该I/O请求从启动器到目标器的整个流程都取消,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
本实施例提供的处理I/O请求超时的方法,可以遵循SCSI协议的处理流程,在标准环境下使用(即不影响HBA和操作系统的行为,不以来定制的HBA或操作系统进行修改)。所以此时,在所述服务器接收所述取消任务请求消息的响应消息后,服务器内部的HBA还要清除自身内部该I/O请求的信息,然后再发送第一路径I/O请求超时错误给所述多路径软件,使所述多路径软件将所述I/O请求切换到第二路径。
关于所述服务器内部的处理与交互过程,本发明实施例不作具体限定。
所述输入接口51,还用于接收通过所述第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求。
其中,所述第一标记是在所述I/O请求的CDB(CommamdDescriptor Block,命令描述块)中设置的,以标识该I/O请求为超时重发的I/O请求。
所述处理器52,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述处理器52通过所述CDB识别出该I/O请求为超时重发的I/O请求,就会将该I/O请求和所述正处理的I/O请求进行匹配,其中,匹配可通过该I/O请求要访问的磁盘对象、读写方向、访问地址、长度进行匹配,匹配成功后,将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径,即该I/O请求消息不再关联之前的第一路径,而是关联现在的第二路径。
需要说明的是,所述I/O请求的返回路径是指当所述处理器52执行完所述I/O请求所请求的读写操作后,将操作结果返回给服务器时所经过的路径。
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,说明所述输入接口51之前接收到所述I/O请求,则本次I/O请求超时是由于所述装置50自身内部压力大、处理慢造成的。
所述输出接口53,还用于将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
可选的,所述输出接口53,还用于在所述输入接口51接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息。
接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,说明该I/O请求超时是由于误码、丢帧导致的,此时所述装置50直接向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功。
所述处理器52,还用于在所述输入接口51接收所述服务器通过所述第二路径发送的I/O请求后,若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
若将所述通过第二路径发送的I/O请求和所述装置50中的I/O请求进行匹配时,没有匹配成功,说明所述装置50并没有接收到所述I/O请求,进而说明本次的I/O请求超时是由于误码、丢帧引起的。
所述输出接口53,还用于将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
可选的,所述处理器52,还用于若确定接收到所述通过第一路径发送的I/O请求,还对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求。
所述处理器52,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径。
所述处理器52,还用于若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
这里将所述通过第一路径发送的I/O请求设置第二标记,然后在所述通过第二路径发送的I/O请求进行匹配时,将所述通过第二路径发送的I/O请求和所述通过第一路径发送的设置第二标记的I/O请求进行匹配,缩小了匹配的范围,使所述通过第二路径发送的I/O请求在匹配时更有针对性,节省了匹配的时间。
可选的,所述处理器52,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
删除与所述通过第二路径发送的I/O请求匹配成功的I/O请求的第二标记,使之不再关联其它的I/O请求,这样可以防止误操作。
当然,也可以有其它的方式使之不再关联其它的I/O请求,本发明实施例对此不作具体限定。
可选的,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
通过判断所述操作结果是否携带第三标记,可以准确识别I/O请求超时的路径故障,若所述操作结果携带第三标记,说明本次I/O请求超时是由于所述装置50内部压力大、处理慢造成的;
若所述操作结果没有携带第三标记,说明本次I/O请求超时是由于误码、丢帧的原因造成的。
在识别出路径故障后,可以更加有效的管理路径,例如如果是所述装置50内部压力大、处理慢造成的I/O请求超时,就可以控制I/O请求发送的速度或采用更为有效的方式进行管理,本发明实施例旨在说明一种处理I/O超时的方法,对如何管理路径不作具体限定。
当然,在出现误码、丢帧造成的I/O请求超时的问题时,现有技术也可以解决,采用本方案重点在于解决因所述装置50内部压力大造成的I/O请求超时的问题,在解决所述装置50因内部压力大造成的I/O请求超时的问题的同时,也可以解决误码、丢帧造成的I/O请求超时的问题,同时可以准确识别是何种I/O请求的超时的故障故障,带来了进一步的有益效果。
需要说明的是,所述装置50具体为存储阵列。
本发明实施例提供了一种处理I/O超时的装置,所述装置包括:输入接口、处理器、输出接口。所述输入接口接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;所述处理器在所述输入接口接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并且所述输出接口向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;所述输入接口还接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述处理器还将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;最后所述输出接口将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
该装置由于在接收到所述取消任务请求消息后,并没有真正取消所述通过第一路径发送的I/O请求,从而在接收服务器通过第二路径发送的携带有第一标记的I/O请求后,通过信息匹配,匹配到所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,进而继承所述通过第一路径发送的I/O请求的处理状态,减少了I/O超时的概率,同时减轻了处理I/O请求的负担。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种处理输入/输出I/O超时的方法,其特征在于,该方法包括:
接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;
接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作,并向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;
接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息;
在接收所述服务器通过所述第二路径发送的I/O请求后,还包括:
若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作;
将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
3.根据权利要求1或2所述的方法,其特征在于,若确定接收到所述通过第一路径发送的I/O请求后,该方法还包括:
对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求;
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
4.根据权利要求3所述的方法,其特征在于,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,还包括:
删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
5.根据权利要求1-4任一项所述的方法,其特征在于,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
6.一种处理输入输出I/O超时的装置,其特征在于,所述装置包括接收单元、处理单元、发送单元;
所述接收单元,用于接收服务器发送的取消任务请求消息,所述取消任务请求消息请求取消通过第一路径发送的I/O请求;
所述处理单元,用于在所述接收单元接收到所述取消任务请求消息之后,若确定接收到所述通过第一路径发送的I/O请求,执行所述通过第一路径发送的I/O请求所请求的读写操作;
所述发送单元,用于向所述服务器发送所述取消任务请求消息的响应消息,所述响应消息用于指示所述第一路径取消成功;
所述接收单元,还用于接收所述服务器通过第二路径发送的I/O请求,所述通过第二路径发送的I/O请求携带第一标记,所述第一标记指示所述通过第二路径发送的I/O请求为超时重试的I/O请求;
所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
所述发送单元,还用于将所述通过第一路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
7.根据权利要求6所述的装置,其特征在于,
所述发送单元,还用于在所述接收单元接收到所述取消任务请求消息之后,若确定没有接收到所述通过第一路径发送的I/O请求,则向所述服务器发送所述取消任务请求消息的响应消息;
所述处理单元,还用于在所述接收单元接收所述服务器通过所述第二路径发送的I/O请求后,若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作;
所述发送单元,还用于将所述通过第二路径发送的I/O请求的操作结果,通过所述第二路径发送给所述服务器。
8.根据权利要求6或7所述的装置,其特征在于,
所述处理单元,还用于若确定接收到所述通过第一路径发送的I/O请求后,还对所述通过第一路径发送的I/O请求设置第二标记,所述第二标记指示所述通过第一路径发送的I/O请求为被取消的I/O请求;
所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,则将与所述通过第二路径发送的I/O请求相同的I/O请求的返回路径更新为所述第二路径;
所述处理单元,还用于若所述通过所述第二路径发送的I/O请求与所述通过第一路径发送的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作具体包括:
若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求不相同,执行所述通过第二路径发送的I/O请求所请求的读写操作。
9.根据权利要求8所述的装置,其特征在于,
所述处理单元,还用于若所述通过第二路径发送的I/O请求与所述通过第一路径发送的设置第二标记的I/O请求相同,删除与所述通过第二路径发送的I/O请求相同的I/O请求的第二标记。
10.根据权利要求6-9任一项所述的装置,其特征在于,若所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同,则所述操作结果还携带第三标记,所述第三标记指示所述通过第二路径发送的I/O请求与所述通过第一路径发送的I/O请求相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210490696.1A CN102984002B (zh) | 2012-11-27 | 2012-11-27 | 一种处理i/o超时的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210490696.1A CN102984002B (zh) | 2012-11-27 | 2012-11-27 | 一种处理i/o超时的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102984002A true CN102984002A (zh) | 2013-03-20 |
CN102984002B CN102984002B (zh) | 2015-05-06 |
Family
ID=47857763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210490696.1A Active CN102984002B (zh) | 2012-11-27 | 2012-11-27 | 一种处理i/o超时的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102984002B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473019A (zh) * | 2013-09-11 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 数据处理方法、服务器及存储阵列 |
CN107943633A (zh) * | 2017-11-28 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种快速复现SAS卡task abort问题的方法及装置 |
CN111683252A (zh) * | 2020-06-11 | 2020-09-18 | 浪潮(北京)电子信息产业有限公司 | 一种服务器以及一种视频压缩图像的输出系统和方法 |
WO2022052953A1 (zh) * | 2020-09-10 | 2022-03-17 | 华为技术有限公司 | 一种故障链路的切换方法、系统及相关设备 |
CN117311634A (zh) * | 2023-10-08 | 2023-12-29 | 无锡众星微系统技术有限公司 | 一种sas存储系统磁盘异常处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169704A (zh) * | 2006-10-27 | 2008-04-30 | 国际商业机器公司 | 与主机和具有存储介质的存储驱动进行通信的系统和方法 |
CN101571815A (zh) * | 2008-04-28 | 2009-11-04 | 株式会社日立制作所 | 信息系统及i/o处理方法 |
US20110307447A1 (en) * | 2010-06-09 | 2011-12-15 | Brocade Communications Systems, Inc. | Inline Wire Speed Deduplication System |
CN102495815A (zh) * | 2011-11-15 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | I/o数据访问中断的处理方法和系统以及设备 |
CN102710663A (zh) * | 2012-06-21 | 2012-10-03 | 奇智软件(北京)有限公司 | 获取云服务的方法及装置 |
-
2012
- 2012-11-27 CN CN201210490696.1A patent/CN102984002B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169704A (zh) * | 2006-10-27 | 2008-04-30 | 国际商业机器公司 | 与主机和具有存储介质的存储驱动进行通信的系统和方法 |
CN101571815A (zh) * | 2008-04-28 | 2009-11-04 | 株式会社日立制作所 | 信息系统及i/o处理方法 |
US20110307447A1 (en) * | 2010-06-09 | 2011-12-15 | Brocade Communications Systems, Inc. | Inline Wire Speed Deduplication System |
CN102495815A (zh) * | 2011-11-15 | 2012-06-13 | 成都市华为赛门铁克科技有限公司 | I/o数据访问中断的处理方法和系统以及设备 |
CN102710663A (zh) * | 2012-06-21 | 2012-10-03 | 奇智软件(北京)有限公司 | 获取云服务的方法及装置 |
Non-Patent Citations (1)
Title |
---|
戚隆宁 等: "多任务下I/O设备的动态功耗管理", 《中国工程科学》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473019A (zh) * | 2013-09-11 | 2013-12-25 | 华为数字技术(苏州)有限公司 | 数据处理方法、服务器及存储阵列 |
CN107943633A (zh) * | 2017-11-28 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种快速复现SAS卡task abort问题的方法及装置 |
CN107943633B (zh) * | 2017-11-28 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种快速复现SAS卡task abort问题的方法及装置 |
CN111683252A (zh) * | 2020-06-11 | 2020-09-18 | 浪潮(北京)电子信息产业有限公司 | 一种服务器以及一种视频压缩图像的输出系统和方法 |
CN111683252B (zh) * | 2020-06-11 | 2021-11-09 | 浪潮(北京)电子信息产业有限公司 | 一种服务器以及一种视频压缩图像的输出系统和方法 |
WO2022052953A1 (zh) * | 2020-09-10 | 2022-03-17 | 华为技术有限公司 | 一种故障链路的切换方法、系统及相关设备 |
CN117311634A (zh) * | 2023-10-08 | 2023-12-29 | 无锡众星微系统技术有限公司 | 一种sas存储系统磁盘异常处理方法和装置 |
CN117311634B (zh) * | 2023-10-08 | 2024-04-12 | 无锡众星微系统技术有限公司 | 一种sas存储系统磁盘异常处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102984002B (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9959073B1 (en) | Detection of host connectivity for data migration in a storage system | |
US7966463B2 (en) | Asynchronous remote copy system and control method for the same | |
CA2868247C (en) | Data sending method, data receiving method, and storage device | |
US7203814B2 (en) | Storage system | |
US7447811B2 (en) | Storage device, storage control firmware activation program exchange method, and program product for activating and exchanging storage control program | |
CN102984002B (zh) | 一种处理i/o超时的方法和装置 | |
US10678465B2 (en) | Seamless migration of storage volumes between storage arrays | |
US8370592B1 (en) | Multi-machine atomic seamless migration | |
US6393538B2 (en) | Reproducing updates in a first file storage unit to a second file storage unit by transferring update information from the first unit to the second unit | |
US7089386B2 (en) | Method for controlling storage device controller, storage device controller, and program | |
US20060129773A1 (en) | Copy controller and method thereof | |
CA2020272A1 (en) | Transferring data in a digital data processing system | |
CN107436799B (zh) | 分布式事务一致性实现方法及装置 | |
US10997099B2 (en) | I/O request processing method in virtual machine, device and computer readable medium | |
JP5658827B2 (ja) | ストレージシステム | |
US10013367B2 (en) | I/O processing system including dynamic missing interrupt and input/output detection | |
KR20140119679A (ko) | 스토리지 장치, 제어 장치 및 기록 매체 | |
CN111813345A (zh) | 一种数据传输方法、装置、服务器及可读存储介质 | |
CN104407814A (zh) | 双写数据的方法和装置 | |
US7721056B2 (en) | Storage system, disk array apparatus, volume presentation method, and data consistency confirmation method | |
EP2101266A1 (en) | Remote copy system and method having copy path check unit | |
CN116991328B (zh) | 磁盘阵列的卷格式化控制方法、装置、系统、设备及介质 | |
CN107678891B (zh) | 一种存储系统的双控方法、装置及可读存储介质 | |
CN104407806A (zh) | 独立磁盘冗余阵列组硬盘信息的修改方法和装置 | |
US9317467B2 (en) | Session key associated with communication path |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |