从存储控制器请求数据的处理器和方法转让专利

申请号 : CN200710107470.8

文献号 : CN101079794B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D·A·辛克莱T·W·里卡德A·L·西蒙W·J·斯凯尔斯

申请人 : 国际商业机器公司

摘要 :

本发明涉及一种用于在存储区域网络中从存储控制器读取数据的方法、系统和计算机程序产品,包括:从应用接收读数据指令;使用初始数据路径从存储控制器请求数据;如果使用所述初始数据路径未在正常传输时间内传输数据,则使用一个或多个可替换数据路径来进一步从存储控制器请求数据;在路径之一上从存储控制器接收数据,并将其接收到缓冲器中;以及向所述应用通知所述读指令已完成以及数据在缓冲器中,其中每个路径关联于一缓冲器,并且数据被接收到关联于路径的缓冲器中。向所述应用通知哪个缓冲器保持数据,并且所述应用从该缓冲器中访问数据。

权利要求 :

1.一种用于在存储区域网络中从存储控制器读取数据的方法,包括:从应用接收读数据指令;

使用初始数据路径从存储控制器请求数据;

在使用所述初始数据路径的数据请求超时之前,响应于使用所述初始数据路径未在正常传输时间内传输数据,使用可替换数据路径来进一步从存储控制器请求数据;

在路径之一上从所述存储控制器接收数据,并将其接收到缓冲器中;以及向所述应用通知所述读指令已完成以及数据在缓冲器中。

2.根据权利要求1所述的方法,其中每个路径关联于一缓冲器,并且数据被接收到关联于所述路径的缓冲器中。

3.根据权利要求2所述的方法,其中向所述应用通知哪个缓冲器保持数据,并且所述应用从该缓冲器中访问数据。

4.根据权利要求1所述的方法,其中所述数据从关联于可替换路径的缓冲器中传输到关联于所述初始路径的缓冲器中。

5.根据权利要求1至4中的任一项所述的方法,还包括:如果使用所述可替换路径未在正常传输时间内传输数据,则使用另一可替换数据路径来进一步从存储控制器请求数据。

6.根据权利要求1至4中的任一项所述的方法,还包括:等待来自所述路径之一的“完成状态”控制信号,所述信号指示已完成传输,其中沿着该路径发送的数据被正确地发送。

7.根据权利要求1至4中的任一项所述的方法,其中当指示出在一路径上的已完成传输时,接着在其它路径上的请求被中止。

8.根据权利要求1至4中的任一项所述的方法,其中如果在多个数据请求中一特定可替换路径比所述初始路径更成功,则该可替换路径成为初始路径。

9.一种用于在存储区域网络系统中从存储控制器请求数据的存储区域网络处理器,包括:第一接收装置,用于从应用接收读数据指令;

第一请求装置,用于使用初始数据路径从存储控制器请求数据;

第二请求装置,用于在使用所述初始数据路径的数据请求超时之前,如果使用所述初始数据路径未在正常传输时间内传输数据,则使用可替换数据路径来进一步从存储控制器请求数据;

第二接收装置,用于在路径之一上从所述存储控制器接收数据,并将其接收到缓冲器中;以及通知装置,用于向所述应用通知所述读指令已完成以及数据在缓冲器中。

10.根据权利要求9所述的存储区域网络处理器,其中每个路径关联于一缓冲器,并且数据被接收到关联于所述路径的缓冲器中。

11.根据权利要求10所述的存储区域网络处理器,其中向所述应用通知哪个缓冲器保持数据,并且所述应用从该缓冲器中访问数据。

12.根据权利要求9所述的存储区域网络处理器,其中所述数据从关联于可替换路径的缓冲器中传输到关联于所述初始路径的缓冲器中。

13.根据权利要求9至12中的任一项所述的存储区域网络处理器,还包括第三请求装置,用于如果使用所述可替换路径未在正常传输时间内传输数据,则使用另一可替换数据路径来进一步从存储控制器请求数据。

14.根据权利要求9至12中的任一项所述的存储区域网络处理器,还包括:等待来自所述路径之一的“完成状态”控制信号,所述信号指示已完成传输,其中沿着该路径发送的数据被正确地发送。

15.根据权利要求9至12中的任一项所述的存储区域网络处理器,其中当指示出在一路径上的已完成传输时,接着在其它路径上的请求被中止。

16.根据权利要求9至12中的任一项所述的存储区域网络处理器,其中如果在多个数据请求中一特定可替换路径比所述初始路径更成功,则该可替换路径成为初始路径。

说明书 :

从存储控制器请求数据的处理器和方法

技术领域

[0001] 本发明涉及存储区域网络(SAN)控制器。具体而言,本发明涉及在SAN中通过SAN控制器对可替换路径的预先(pre-emtively)使用。

背景技术

[0002] 已知的存储区域网络(SAN)控制器是SAN网络中在存储控制器和应用主机之间的接口。SAN控制器控制其自身和存储控制器之间的多个路径上的数据信号。尽管控制器可以在这些路径的某些或所有上传播I/O活动,但它通常将对于每个独立的I/O传输选择单一路径。如果此路径由于某种原因无法工作,则SAN控制器和应用主机必须在确定I/O将不会完成之前等待很长时段。通常,直到初始尝试已经完全超时或者主机和存储控制器之间的互连构造已经向主机告知该路径无法工作之前,SAN控制器将不会经由可替换路径提交I/O操作。这是因为控制器无法分辨未响应路径和只是在存储装置中花费很长时间来执行的盘操作之间的区别。该方案对于被提交给未响应路径的I/O造成了显著的性能降低。对于需要I/O在几秒钟内完成的某些应用,这是不可接受的。

发明内容

[0003] 根据本发明的第一方面,提供了一种用于在存储区域网络中从存储控制器读取数据的方法,包括:从应用接收读数据指令;使用初始数据路径从存储控制器请求数据;如果使用所述初始数据路径未在正常传输时间内传输数据,则使用可替换数据路径来进一步从存储控制器请求数据;在路径之一上从所述存储控制器接收数据,并将其接收到缓冲器中;以及向所述应用通知所述读指令已完成以及数据在缓冲器中。
[0004] 本发明通过在初始I/O确实已超时之前检测正被未响应网络路径所延迟的读I/O并经由可替换路径提交这些I/O而提高主机性能。或者新的读I/O将用及时方式完成以导致提高的性能,或者此新的I/O或初始I/O将最终完成或超时,其中后一情形中将不会存在任何性能提高。
[0005] SAN系统中可出现另一问题。主机经由所选择路径提交I/O,并且当此I/O未完成时主机经由不同路径提交另一I/O,并且此第二I/O确实完成了。现在主机将良好完成状态给到应用,并且应用对关联于事务的缓冲器解除分配。现在使用已被解除分配的缓冲器的初始I/O完成,这可以导致重要问题。为避免此问题,主机(或设备驱动器)必须确保关联于事务的主机缓冲器未被任何后续的正完成I/O活动所访问。
[0006] 一种解决方案是对于每个I/O请求使用不同缓冲器。当所述读I/O之一完成时缓冲器被返回可能想要修改缓冲器的应用;在这种情形出现时来自另一读I/O的数据不应该被拷贝到缓冲器中。许多硬件平台和操作系统无法应付同时传输到同一存储器的两种不同的设备驱动器。SCSI设备可合法地把不良数据传输到主机并接着完成指示出已出现故障的读I/O。如果一次读取返回良好数据而另一次读取返回不良数据,单个缓冲器将不会分辨缓冲器中的数据是良好还是不良。
[0007] 优选地,每个路径关联于一缓冲器,并且数据被接收到关联于所述路径的缓冲器中,并且有利地,向所述应用通知哪个缓冲器保持数据,并且所述应用从该缓冲器中访问数据。可替换地,所述数据从关联于可替换路径的缓冲器中传输到关联于所述初始路径的缓冲器中。
[0008] 如果使用所述初始数据路径或所述可替换路径未在正常传输时间内传输数据,则可以适当地使用另一可替换数据路径来从存储控制器请求数据。
[0009] 有利地,所述方法等待来自所述路径之一的“完成状态”控制信号,所述信号指示已完成传输,其中沿着该路径发送的数据被正确地发送。
[0010] 当指示出在一路径上的已完成传输时,接着有用地在其它路径上的请求被中止。
[0011] 如果在多个数据请求中一特定可替换路径比所述初始路径更成功,则该可替换路径成为初始路径。
[0012] 根据本发明的第二方面,提供了一种用于在存储区域网络系统中从存储控制器请求数据的存储区域网络处理器,包括:第一接收装置,用于从应用接收读数据指令;第一请求装置,用于使用初始数据路径从存储控制器请求数据;第二请求装置,用于如果使用所述初始数据路径未在正常传输时间内传输数据,则使用可替换数据路径来进一步从存储控制器请求数据;第二接收装置,用于在路径之一上从所述存储控制器接收数据,并将其接收到缓冲器中;以及通知装置,用于向所述应用通知所述读指令已完成以及数据在缓冲器中。
[0013] 根据本发明的第三方面,提供了一种计算机程序产品,包括具有存储于其上的计算机可读代码的计算机可读记录介质,所述计算机可读代码用于在存储区域网络系统中从存储控制器请求数据,所述计算机可读代码当被加载到计算机系统上并被执行时执行以下步骤:从应用接收读数据指令;使用初始数据路径从存储控制器请求数据;如果使用所述初始数据路径未在正常传输时间内传输数据,则使用可替换数据路径来进一步从存储控制器请求数据;在路径之一上从所述存储控制器接收数据,并将其接收到缓冲器中;以及向所述应用通知所述读指令已完成以及数据在缓冲器中。

附图说明

[0014] 现在将仅通过示例并参考附图来描述本发明的实施例,在附图中:
[0015] 图1是根据本发明优选实施例的示图;以及
[0016] 图2是优选实施例的多路径处理器的方法的示图。

具体实施方式

[0017] 图1和2中示出的根据本发明的优选实施例是存储区域网络(SAN)系统10,包括:服务器12,其由多个路径通过SAN 16链接到存储控制器14。存储控制器14直接访问存储装置18,典型为硬盘驱动器。
[0018] SAN 16把存储控制器14沿着多个路径20A、20B、20C以及可由服务器用来从存储控制器读或写数据的任一路径中的一个路径链接到服务器12。所述路径通过交换机网络,某些交换机比其它交换机更快,所以在不同路径上通过网络所花时间将会不同。
[0019] 存储控制器14可以接收经由不同路径20A、20B、20C到达的多个等同的读请求。第一读请求将使得适当的数据加载到存储控制器14中的高速缓存中,接着从该高速缓存中满足随后的读取,所述随后的读取对于性能将没有显著影响。
[0020] 服务器12包括:应用主机22;多路径处理器24;以及设备驱动器26A、26B和26C。
[0021] 应用主机22包括应用28和应用缓冲器30A。应用主机在需要进行与存储控制器的I/O事务时选择任一路径。本实施例涉及读事务。
[0022] 每个设备驱动器26A、26B、26C可以通过各个路径20A、20B、20C对存储控制器做出I/O请求。
[0023] 应用28是用于使用指令集实现业务目的(诸如事务检索数据库)的指令集。这些指令中的一个或多个将是由应用主机执行的读指令。
[0024] 应用缓冲器30A存储从存储控制器14接收的数据。应用主机22执行应用28,并具体而言,在应用28需要读操作时,应用主机22将执行此指令,并从存储控制器14中检索数据,并将其放置在应用缓冲器30A中。
[0025] 多路径处理器24包括:可替换路径缓冲器30B和30C;多路径控制器方法200;以及路径优化器方法300。
[0026] 可替换路径缓冲器30B和30C是对于从存储控制器14发送的数据的沿着相对于SAN中的最初路径的可替换路径的可替换目的地。对于每个可替换路径建立一可替换路径缓冲器。
[0027] 多路径控制器方法200包括以下步骤:
[0028] 步骤202:按照应用28的指示从应用主机22接收读数据指令。
[0029] 步骤204:选择到存储控制器14的最初路径20A,将最初路径20A链接到最初数据缓冲器30A,并且使用最初数据路径20A从存储控制器14请求数据。
[0030] 步骤206:等待已定义的时间段T1(例如5秒),以允许正常传输的进行,并且如果正常传输发生则不执行本方法的其余部分。优选地存在延迟,因为大多数传输将没有问题地发生。启动计时器来对已定义的正常传输时段(例如5秒)进行计数。
[0031] 步骤208:选择到资源的可替换路径20B;将可替换路径20B链接到可替换数据缓冲器30B,并且使用可替换数据路径20B从存储控制器14请求数据。优选地建立一个额外路径,但是如果可替换路径20B的延迟超过正常传输时段,则相同技术可应用于另一额外路径20C。理论上,此技术可应用于所有的可用路径。
[0032] 步骤210:在最初路径或可替换路径上从资源28接收数据,并且把数据转发到相应的缓冲器30A、30B或30C中。
[0033] 步骤212:等待来自路径之一的“完成状态”控制信号,所述信号指示已完成传输,其中沿着该路径发送的数据被正确地发送。
[0034] 步骤214:当指示出在一路径上的已完成传输时,接着可选地在其它路径上的请求被中止。如果在计时器达到另一预定时间(例如30秒)时没有完成任一传输,则主机假定该事务无法完成,并将适当的(不良)状态返回给应用,并且进行该应用针对此情景的无论什么样的正常清除过程。
[0035] 步骤216:向应用通知读指令已完成以及数据在缓冲器中。在优选实施例中,向应用通知哪个缓冲器保持数据,并且应用可从该缓冲器中直接使用数据。在可替换实施例中,数据从可替换缓冲器被传输到最初缓冲器。
[0036] 优化器方法300在不止一次的检索循环中记录哪个路径在接收数据时最成功而没有延迟。多路径处理器在随后的检索循环中选择最成功路径作为最初路径。
[0037] 例如,银行应用需要交易记录并做出对交易数据的请求。
[0038] 多路径处理器24从应用主机接收对交易记录的读数据指令。
[0039] 多路径处理器选择作为最优路径的最初路径20A和最初数据缓冲器30A,并使用最初数据路径20A对存储控制器14做出请求。
[0040] 5秒后,由于SAN网络中的交换机的延迟而没有接收到“完成信号”,并且多路径处理器选择可替换路径20B和数据缓冲器30B。对存储控制器做出另一交易数据请求,但这次使用可替换数据路径20B。
[0041] 在可替换路径20B上把交易数据从资源18接收到缓冲器30B中,并且“完成状态”控制信号指示出数据已经沿着该路径被正确发送。
[0042] 在其它路径上的请求被中止,并向应用通知已经完成的交易数据在缓冲器中。
[0043] 银行应用读取交易数据,且其不知道最初路径上的延迟。
[0044] 此实施例通常应用于存储区域网络,但可能最适用于网络的子集中,所述网络在路径丢失时不通知应用。在ISCSI网络中,不存在状态改变通知机制,因此如果路径确实丢失,则应用主机将仅在沿着该路径发送的I/O超时后发现路径丢失。
[0045] 在当路径丢失时通知应用主机的网络中,则不需要预先使用其它路径,因为应用主机将知道经由初始路径的I/O已经失效。例如光纤信道网络,其中构造管理者发送状态改变通知消息。不过,此实施例将不覆盖下述情形,其中路径仍然明显地被连接但仅仅不可响应。
[0046] 当主机和存储控制器之间的通信信道可丢失数据,并且这仅可以经由相对长的超时检测到之时,此实施例也将有助于提高性能。这种通信信道的示例为级3光纤信道(用于基于盘的存储装置的光纤信道的最常见实现)和ISCSI。对于很大比例的数据被丢失的特别不良的通信信道,选择到存储控制器的可替换路径也是比起仅仅沿着同一路径重试命令来说好得多的差错恢复过程。
[0047] 总之,描述了一种用于在存储区域网络中从存储控制器读取数据的方法、系统和计算机程序产品,包括:从应用接收读数据指令;使用初始数据路径从存储控制器请求数据;如果使用所述初始数据路径未在正常传输时间内传输数据,则使用一个或多个可替换数据路径来进一步从存储控制器请求数据;在路径之一上从存储控制器接收数据,并将其接收到缓冲器中;以及向所述应用通知所述读指令已完成以及数据在缓冲器中,其中每个路径关联于一缓冲器,并且数据被接收到关联于路径的缓冲器中。向所述应用通知哪个缓冲器保持数据,并且所述应用从该缓冲器中访问数据。
[0048] 对于本领域技术人员来说很明显,本发明的方法可适当地用逻辑装置来实现,所述逻辑装置包括用于执行所述方法的步骤的逻辑工具,并且所述逻辑工具可包括硬件组件或固件组件。
[0049] 对于本领域技术人员来说同样很明显,本发明的逻辑排列可适当地用逻辑装置来实现,所述逻辑装置包括用于执行所述方法的步骤的逻辑工具,并且所述逻辑工具可包括下述组件,诸如,例如可编程逻辑阵列形式的逻辑门。所述逻辑排列可进一步用使能工具来实现,所述使能工具用于临时地或永久地建立下述阵列形式的逻辑结构,所述阵列例如使用可使用固定或可传送载波媒体来存储的虚拟硬件描述符语言。
[0050] 将要理解,上述方法还可适当地用运行于一个或多个处理器(未示出)上的软件来完全或部分地执行,以及所述软件可被提供为在任意适当的数据载体(也未示出)(诸如磁性或光学计算机盘)上承载的计算机程序单元。用于数据传输的信道同样可包括所有描述的存储媒体以及信号承载媒体,诸如有线或无线信号媒体。
[0051] 本发明可适当地实现为通过计算机系统使用的计算机程序产品。这种实现可包括一系列计算机可读指令,其或者固定在有形介质(诸如计算机可读介质,例如磁盘、CD-ROM、ROM或硬盘)上,或者可以经由调制解调器或其它接口设备在有形介质(包括但不限于光学或模拟通信线路)上或无形地使用无线技术(包括但不限于微波、红外或其它传送技术)传送到计算机系统。所述一系列计算机可读指令实现了此处前述的全部或部分功能。
[0052] 本领域技术人员将理解,所述计算机可读指令可用通过许多计算机体系结构或操作系统使用的多种编程语言来编写。此外,所述指令可使用任何当前的或未来的存储器技术来存储,所述存储器技术包括但不限于:半导体、磁性或光学,或者所述指令可使用任何当前的或未来的通信技术来传送,所述通信技术包括但不限于:光学、红外或微波。可以预期,所述计算机程序产品可被分布为具有附带的打印或电子文档的可移除介质,例如,在例如系统ROM或固定盘上的通过计算机系统预加载的现成套装软件,或者所述计算机程序产品可通过网络(例如因特网或万维网)上的服务器或电子公告板进行分布。
[0053] 将会进一步理解,本发明的实施例可用代表客户进行部署以提供随需服务的服务的形式来提供。
[0054] 还将理解,对于本领域普通技术人员来说,对上述优选实施例各种进一步修改将很明显。