计算机系统及数据输入输出方法转让专利

申请号 : CN201280045889.4

文献号 : CN103814365B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 大山一浩横内弘

申请人 : 株式会社日立制作所

摘要 :

存储装置具有能够与服务器通信的多个端口、多个处理器内核、多个LU(Logical Unit)。按每个端口决定受理端口所接收的I/O请求的处理器内核即端口担当内核,按每个LU决定担当I/O的处理器内核即LU担当内核。LU担当内核动态地变更。服务器定期地从存储装置获取LU担当内核的识别信息。服务器发送I/O请求的情况下,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和端口担当内核为相同的处理器内核的路径即非交叉调用路径,通过选择的路径发送发送对象的I/O请求。

权利要求 :

1.一种计算机系统,其特征在于,具有:

存储装置;

服务器,其向所述存储装置发送I/O(Input/Output)请求,所述存储装置具有:能够与所述服务器通信的多个端口、多个处理器内核和多个LU(Logical Unit),按每个端口决定端口担当内核,按每个LU决定LU担当内核,其中,所述端口担当内核是受理端口所接收的I/O请求的处理器内核,所述LU担当内核是担当I/O的处理器内核,所述存储装置判断是否需要变更LU担当内核,在其判断的结果是肯定的情况下,以第一时间间隔进行变更LU担当内核的处理即担当变更处理,所述服务器具有1个以上的通信接口设备、存储设备和与它们连接的控制设备,所述存储设备存储有:按每条路径含有与从通信接口设备通向LU的路径相关的信息的路径信息、和按每个LU含有LU担当内核的识别信息的LU担当信息,所述路径信息按每条路径含有路径所经由的端口的端口担当内核的识别信息,所述控制设备以第二时间间隔将LU的LU担当内核的识别信息的请求即担当通知请求发送到所述存储装置,由此,从所述存储装置获取LU担当内核的识别信息,并将该识别信息包含于所述LU担当信息,所述控制设备在发送I/O请求的情况下,

(A)基于所述路径信息和所述LU担当信息,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和端口担当内核为相同的处理器内核的路径即非交叉调用路径,(B)通过在所述(A)中选择的路径发送所述发送对象的I/O请求。

2.如权利要求1所述的计算机系统,其特征在于,

所述存储装置具有多个处理器,该多个处理器的每一个包含2个以上的所述处理器内核,在所述(A)中,所述控制设备进行:

(a1)若通向所述I/O目标LU的多条路径中包含所述非交叉调用路径,则选择所述非交叉调用路径,(a2)若通向所述I/O目标LU的多条路径中不包含所述非交叉调用路径,但包含LU担当内核和端口担当内核位于相同的处理器内的路径即内核交叉调用路径,则选择所述内核交叉调用路径,(a3)若通向所述I/O目标LU的多条路径中不包含所述非交叉调用路径及所述内核交叉调用路径,则选择LU担当内核和端口担当内核位于不同的处理器内的路径即处理器交叉调用路径。

3.如权利要求2所述的计算机系统,其特征在于,所述控制设备将用于获取与LU相关的信息的查询请求发送到所述存储装置,在发送所述查询请求的情况下,在通向由所述查询请求所指定的LU的路径中,若包含所述处理器交叉调用路径,则选择该处理器交叉调用路径,若没有所述处理器交叉调用路径但含有所述内核交叉调用路径,则选择该内核交叉调用路径,并通过所选择的路径发送所述查询请求。

4.如权利要求3所述的计算机系统,其特征在于,所述第二时间间隔比所述第一时间间隔长。

5.如权利要求4所述的计算机系统,其特征在于,所述第二时间间隔是所述第一时间间隔的整数倍。

6.如权利要求5所述的计算机系统,其特征在于,在所述第二时间间隔变更了的情况下,所述控制设备基于变更后的所述第二时间间隔,变更所述第一时间间隔。

7.如权利要求6所述的计算机系统,其特征在于,

对于某LU的所述担当通知请求通过通向所述某LU的路径中的非担当路径而被发送,所述非担当路径是通向与基于所述LU担当信息而特定出的所述某LU的LU担当内核不同的处理器内核的路径。

8.如权利要求1所述的计算机系统,其特征在于,所述控制设备将用于获取与LU相关的信息的查询请求发送到所述存储装置,在发送所述查询请求的情况下,在通向由所述查询请求所指定的LU的路径中,若包含LU担当内核和端口担当内核不同的路径即交叉调用路径,则选择该交叉调用路径,通过所选择的路径发送所述查询请求。

9.一种服务器,是向存储装置发送I/O(Input/Output)请求的服务器,其特征在于,具有:

1个以上的通信接口设备;

存储设备;

与所述1个以上的通信接口设备和所述存储设备连接的控制设备,

所述存储装置具有:能够与所述服务器通信的多个端口、多个处理器内核和多个LU(Logical Unit),按每个端口决定端口担当内核,按每个LU决定LU担当内核,其中,所述端口担当内核是受理端口所接收的I/O请求的处理器内核,所述LU担当内核是担当I/O的处理器内核,所述存储装置判断是否需要变更LU担当内核,在其判断的结果是肯定的情况下,以第一时间间隔进行变更LU担当内核的处理即担当变更处理,所述存储设备存储有:按每条路径含有与从通信接口设备通向LU的路径相关的信息的路径信息、和按每个LU含有LU担当内核的识别信息的LU担当信息,所述路径信息按每条路径含有路径所经由的端口的端口担当内核的识别信息,所述控制设备以第二时间间隔将LU的LU担当内核的识别信息的请求即担当通知请求发送到所述存储装置,由此,从所述存储装置获取LU担当内核的识别信息,并将该识别信息包含于所述LU担当信息,所述控制设备在发送I/O请求的情况下,

(A)基于所述路径信息和所述LU担当信息,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和端口担当内核为相同的处理器内核的路径即非交叉调用路径,(B)通过在所述(A)中选择的路径发送所述发送对象的I/O请求。

10.如权利要求9所述的服务器,其特征在于,所述第二时间间隔比所述第一时间间隔长。

11.如权利要求9所述的服务器,其特征在于,在所述第二时间间隔变更了的情况下,所述控制设备基于变更后的所述第二时间间隔,变更所述第一时间间隔。

12.如权利要求9所述的服务器,其特征在于,

对于某LU的所述担当通知请求通过通向所述某LU的路径中的非担当路径而被发送,所述非担当路径是通向与基于所述LU担当信息而特定出的所述某LU的LU担当内核不同的处理器内核的路径。

13.如权利要求9所述的服务器,其特征在于,所述控制设备将用于获取与LU相关的信息的查询请求发送到所述存储装置,在发送所述查询请求的情况下,在通向由所述查询请求所指定的LU的路径中,若包含LU担当内核和端口担当内核不同的路径即交叉调用路径,则选择该交叉调用路径,通过所选择的路径发送所述查询请求。

14.一种相对于存储装置的LU(Logical Unit)输入输出数据的输入输出方法,其特征在于,所述存储装置具有:能够与服务器通信的多个端口、多个处理器内核和多个LU,按每个端口决定端口担当内核,按每个LU决定LU担当内核,其中,所述端口担当内核是从服务器受理端口所接收的I/O(Input/Output)请求的处理器内核,所述LU担当内核是担当I/O的处理器内核,所述存储装置判断是否需要变更LU担当内核,在其判断的结果是肯定的情况下,以第一时间间隔进行变更LU担当内核的处理即担当变更处理,所述服务器以第二时间间隔将LU的LU担当内核的识别信息的请求即担当通知请求发送到所述存储装置,由此,从所述存储装置获取LU担当内核的识别信息,并将该识别信息包含于LU担当信息,所述LU担当信息按每个LU含有LU担当内核的识别信息,所述服务器在发送I/O请求的情况下,(A)基于所述LU担当信息和路径信息,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和端口担当内核为相同的处理器内核的路径即非交叉调用路径,其中,所述路径信息含有路径所经由的端口的端口担当内核的识别信息,并按每条路径含有与路径相关的信息,(B)通过在所述(A)中选择的路径发送所述发送对象的I/O请求。

15.一种计算机系统,其特征在于,具有:

存储装置,其具有多个处理器内核;

至少1个服务器,其具有:服务器处理器、和经由多条路径与至少2个所述处理器内核以及所述服务器处理器连接的至少1个通信接口设备,其中,所述服务器构成为进行如下处理:

从所述存储装置获取LU(Logical Unit)担当内核信息,该LU担当内核信息对应于由所述处理器内核提供的LU的识别、以及担当每个LU的处理器内核的识别;

通过使用所述LU担当内核信息而指定担当I/O(Input/Output)请求目标的LU的LU担当处理器内核;

基于所述路径的信息和所述LU担当内核信息,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和所述存储装置的端口担当内核为相同的处理器内核的路径即非交叉调用路径,由此从多条路径中选择通向所指定的LU担当处理器内核的路径;以及经由所选择的路径将所述I/O请求发送到所述存储装置。

16.一种相对于存储装置的LU(Logical Unit)输入输出数据的输入输出方法,其特征在于,所述存储装置具有多个处理器内核,该存储装置能够与至少1个服务器通信,所述至少1个服务器具有:服务器处理器、和经由多条路径与至少2个所述处理器内核以及所述服务器处理器连接的至少1个通信接口设备,其中,所述服务器构成为进行如下处理:

从所述存储装置获取LU担当内核信息,该LU担当内核信息对应于由所述处理器内核提供的LU的识别、以及担当每个LU的处理器内核的识别;

通过使用所述LU担当内核信息而指定担当I/O(Input/Output)请求目标的LU的LU担当处理器内核;

基于所述路径的信息和所述LU担当内核信息,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和所述存储装置的端口担当内核为相同的处理器内核的路径即非交叉调用路径,由此从多条路径中选择通向所指定的LU担当处理器内核的路径;以及经由所选择的路径将所述I/O请求发送到所述存储装置。

说明书 :

计算机系统及数据输入输出方法

技术领域

[0001] 本发明涉及从服务器向存储装置内的LU(Logical Unit:逻辑单元)的I/O(Input/Output:输入输出)。

背景技术

[0002] 一般来说,计算机系统具有:具有LU的存储装置;与存储装置连接的服务器。服务器将用于输入输出数据的I/O请求发送到存储装置的LU。存储装置接收I/O请求,对于该I/O请求所指定的LU,输入输出根据该I/O请求的数据。LU是逻辑存储设备,也被称为逻辑卷。LU既可以是虚拟LU,也可以是实体LU。虚拟LU可以是例如根据Thin Provisioning(自动精简配置)的LU,也可以是根据存储虚拟化技术的LU(存储装置的外部的存储装置的存储资源被虚拟化而成的LU)。实体LU是基于物理存储设备(以下称为PDEV)的LU。例如,以由多个PDEV构成的RAID(Redundant Array of Independent(or Inexpensive)Disks:独立磁盘冗余阵列)组为基础形成1个或多个实体LU。
[0003] 存在如下存储装置:具有多个处理器,决定哪个处理器担当对于哪个LU的I/O。关于这样的存储装置,公知一种技术,根据处理器的负荷,变更担当LU的处理器(例如,参照专利文献1)。
[0004] 另外,还公知一种技术,准备从服务器通向LU的多条路径,通过控制从多条路径选择的路径,来分散网络的负荷及存储装置中的端口的负荷。
[0005] 【现有技术文献】
[0006] 【专利文献】
[0007] 【专利文献1】日本特开2008-269424号公报

发明内容

[0008] 从多条路径被选择的路径例如以循环方式切换。由此,在决定了担当LU的处理器(或处理器内核)的存储装置中,有时会发生通过由服务器选择的路径受理了I/O请求的处理器(或处理器内核)、和担当由该I/O请求所指定的LU的处理器(或处理器内核)不同的情形。在该情形中,发生所谓的交叉调用。这里所谓的“交叉调用”是指,在处理器间(或处理器内核间)授受I/O请求,即,I/O请求从受理了I/O请求的处理器(或处理器内核)被传送到担当由该I/O请求所指定的LU的处理器(或处理器内核)。由于发生交叉调用,导致授受I/O请求的双方的处理器(或处理器内核)的性能降低。
[0009] 存储装置具有能够与服务器通信的多个端口、多个处理器内核、多个LU。按每个端口决定端口担当内核,按每个LU决定LU担当内核,其中,所述端口担当内核是受理端口所接收的I/O请求的处理器内核,所述LU担当内核是担当I/O的处理器内核。LU担当内核动态地变更。服务器定期地从存储装置获取LU担当内核的识别信息。服务器在发送I/O请求的情况下,从通向由发送对象的I/O请求所指定的LU即I/O目标LU的多条路径,选择LU担当内核和端口担当内核为相同的处理器内核的路径即非交叉调用路径,通过选择的路径发送发送对象的I/O请求。

附图说明

[0010] 图1是表示实施方式的存储装置所具有的控制器的概要的图。
[0011] 图2是用于说明通向LU的I/O处理的一例的图。
[0012] 图3是用于说明内核交叉调用的一例的图。
[0013] 图4是用于说明CPU交叉调用的一例的图。
[0014] 图5是用于说明交叉调用的一例的发生的图。
[0015] 图6是用于说明实施方式的计算机系统的概要的第一图。
[0016] 图7是用于说明实施方式的计算机系统的概要的第二图。
[0017] 图8是用于说明实施方式的计算机系统的概要的第三图。
[0018] 图9是用于说明实施方式的计算机系统的概要的第四图。
[0019] 图10是用于说明实施方式的计算机系统的概要的第五图。
[0020] 图11是用于说明实施方式的计算机系统的概要的第六图。
[0021] 图12是实施方式的计算机系统的结构图。
[0022] 图13是表示实施方式的服务器1的路径表的一例的图。
[0023] 图14是表示实施方式的服务器2的路径表的一例的图。
[0024] 图15是表示实施方式的服务器3的路径表的一例的图。
[0025] 图16是表示实施方式的服务器1的主路径表的一例的图。
[0026] 图17是表示实施方式的服务器2的主路径表的一例的图。
[0027] 图18是表示实施方式的服务器3的主路径表的一例的图。
[0028] 图19是表示实施方式的主表的一例的图。
[0029] 图20是表示实施方式的交叉调用表的一例的图。
[0030] 图21是实施方式的路径选择处理的流程图。
[0031] 图22是实施方式的主路径表更新处理的流程图。

具体实施方式

[0032] 参照附图说明实施方式。此外,以下说明的实施方式不限定权利请求书涉及的发明,另外,实施方式中说明的各要素及其组合的全部对于发明的解决手段来说不是必须的。
[0033] 此外,在以下的说明中,有时利用“aaa表”的表现说明各种信息,但各种信息也可以用表以外的数据构造表现。为表达不依赖于数据构造的情况,能够将“aaa表”称为“aaa信息”。
[0034] 而且,说明各信息的内容时,使用“识别信息”、“标识符”、“名”、“名称”、“ID”“编号”这样的表现,但关于它们,能够相互置换。
[0035] 另外,在以下的说明中,存在将“程序”作为主语进行说明的情况,但程序通过处理器(典型地来说,CPU(Central Processing Unit:中央处理器))执行而一边使用存储器及通信端口一边进行预定的处理,因此也可以采用将处理器作为主语的说明。另外,将程序作为主语公开的处理也可以为由服务器、存储装置等的计算机、信息处理装置所进行的处理。另外,程序的一部分或全部也可以通过专用硬件实现。另外,各种程序也可以通过程序分发服务器或计算机可读取的存储介质而安装到各计算机。
[0036] 首先,对交叉调用进行说明。
[0037] 图1是用于说明存储装置的控制器的概要的图。
[0038] 存储装置具有1个以上的控制器210。控制器210具备CPU212,该CPU212具有多个(例如2个)CPU内核(以下称为内核)212X、212Y。另外,控制器210具有用于对与服务器等的装置之间的通信进行中继的多个(例如,8个)通信端口(以下称为端口)211。在控制器210中,使用端口A~D的通信处理由内核212X(也称为Core-X)担当,使用端口E~H的通信处理由内核212Y(也称为Core-Y)担当。
[0039] 图2是用于说明相对于LU的I/O的一例的图。
[0040] 图2中作为LU220的一例示出了LU6。担当对LU6的I/O处理的内核是0系列的控制器210A的Core-X(内核212AX)。另外,按每个端口211A,决定担当的内核。
[0041] 端口A接收对LU6的I/O请求时(图2的(1)),担当端口A的内核212AX受理该I/O请求(图2的(2))。这里,担当LU6的内核212AX受理了I/O请求,从而不发生交叉调用。即,内核212AX按照该I/O请求执行对LU6的I/O,不需要将该I/O请求向其他内核传送(图2的(3))。
[0042] 图3是用于说明内核交叉调用的一例的图。
[0043] 内核交叉调用是指内核间的交叉调用。在图3中,担当LU6的内核是0系列的控制器210A的Core-X(内核212AX)。
[0044] 这里,端口E接收指定了LU6的I/O请求时(图3的(1)),担当端口E的内核212AY受理该I/O请求(图3的(2))。这里,担当LU6的内核不是受理了I/O请求的内核212AY,而是其他内核212AX。由此,在1个CPU212中,发生内核交叉调用。即,I/O请求从内核212AY向内核212AX交付(图3的(3))。受理了I/O请求的内核212AX对LU6执行I/O(图中(4))。像这样,发生内核交叉调用时,用于授受I/O请求的负荷施加于双方的内核212AX及212AY。此外,内核交叉调用与后述的CPU交叉调用相比,对于CPU的负荷更低。
[0045] 图4是用于说明CPU交叉调用的一例的图。
[0046] CPU交叉调用是指CPU间的交叉调用。在同一控制器中,若还发生CPU交叉调用,则在控制器间也发生CPU交叉调用。在以下的说明中,“交叉调用”这样的记载是指内核交叉调用和CPU交叉调用双方。
[0047] 在图4中,在存储装置中,存在0系列控制器210A和1系列控制器210B这两个,担当LU6的内核是0系列控制器210A的Core-X(内核212AX),担当LU7的内核是1系列控制器210B的Core-Y(内核212BY)。
[0048] 0系列控制器210A的端口F接收指定了LU7的I/O请求时(图4的(1)),担当端口F的内核212AY受理该I/O请求(图4的(2))。这里,担当LU7的内核不是受理了I/O请求的内核212AY,而是1系列控制器210B的内核212BY。由此,发生CPU交叉调用。即,I/O请求从具有内核212AY的CPU被传送到其他CPU的内核212BY(图4的(3))。受理了I/O请求的内核212BY对LU7执行I/O(图4的(4))。
[0049] 另一方面,1系列控制器210B的端口A接收指定了LU6的I/O请求时(图4的(5)),担当端口A的内核212BX受理该I/O请求(图4的(6))。这里,担当LU6的内核不是受理了I/O请求的内核212BX,而是0系列控制器210A的内核212AX。由此,发生CPU交叉调用。即,I/O请求从具有内核212BX的CPU被传送到具有其他内核212AX的CPU(图4的(7))。受理了I/O请求的内核212AX对LU6执行I/O(图4的(8))。
[0050] 如上所述,发生CPU交叉调用时,用于执行CPU交叉调用的负荷施加于双方的CPU。
[0051] 图5是用于说明交叉调用的一例的发生的图。
[0052] 服务器1000通过例如光纤电缆与多个(例如2个)开关150A、150B(FC-SW1、FC-SW2)连接,2个开关150A、150B通过例如光纤电缆与存储装置200连接。
[0053] 如该图所示,在计算机系统中,作为通向LU6的路径,例如准备了:经由服务器1000的HBA1、FC-SW1、0系列控制器210A的端口D的路径;经由服务器1000的HBA2、FC-SW2、1系列控制器210B的端口A的路径。
[0054] 利用服务器1000的CPU执行应用程序(以下称为应用111)和多路径管理程序1010。应用111发出例如指定了LU6的I/O请求。多路径管理程序1010从通向同一LU6的多条路径,选择使从应用111发出的I/O请求(指定了LU6的I/O请求)经由的路径。多路径管理程序1010例如以循环方式从多条路径选择1条路径,使用所选择的路径,发送从应用111发出的I/O请求。由此,指定了LU6的I/O请求能够从通向LU6的2条路径中的任意一方到达存储装置200。
[0055] 这里,在存储装置200中,担当LU6的内核是0系列控制器210A的Core-X(内核212AX)。
[0056] 该情况下,从应用111发出的I/O请求被传递到多路径管理程序1010(图5的(1)),并通过多路径管理程序1010选择该I/O请求所经由的路径。
[0057] 将经由HBA1、FC-SW1及0系列控制器210A的端口D的路径选择为指定了LU6的I/O请求所经由的路径的情况下,多路径管理程序1010使I/O请求向HBA1交付(图5的(2))。交付到HBA1的I/O请求从HBA1被发送到FC-SW1(图5的(3)),并从FC-SW1被发送到0系列控制器210A的端口D(图5的(4))。
[0058] 端口D接收指定了LU6的I/O请求的、担当端口D的内核212AX受理该I/O请求(图5的(5))。这里,担当LU6的内核是受理了I/O请求的内核212AX,从而不发生交叉调用,内核212AX对LU6执行I/O(图5的(6))。
[0059] 另一方面,将经由HBA2、FC-SW2及1系列控制器210B的端口A的路径选择为指定了LU6的I/O请求所经由的路径的情况下,多路径管理程序1010使该I/O请求向HBA2交付(图5的(11))。交付到HBA2的I/O请求从HBA2被发送到FC-SW2(图5的(12)),并从FC-SW2被发送到1系列控制器210B的端口A(图5的(13))。
[0060] 1系列控制器210B的端口A接收指定了LU6的I/O请求时,担当端口A的内核212BX受理该I/O请求(图5的(14))。这里,担当LU6的内核不是受理了I/O请求的内核212BX,而是内核212AX。由此,发生CPU交叉调用。即,I/O请求从内核212BX的CPU被传送到内核212AX的CPU(图5的(15))。受理了I/O请求的内核212AX对LU6执行I/O(图5的(16))。
[0061] 在本实施方式的计算机系统中,以尽量不发生上述交叉调用的方式进行控制。以下,对该计算机系统的概要进行说明。
[0062] 图6是用于说明实施方式的计算机系统的概要的第一图。
[0063] 作为通向LU6的路径,例如准备了:经由服务器100的HBA1、FC-SW1、0系列控制器210A的端口D的路径P1;经由服务器的HBA2、FC-SW2、1系列控制器210B的端口A的路径P2。
[0064] 多路径管理程序112预先从存储装置200获取表示哪个控制器及内核担当哪个LU的信息并存储在服务器100内的存储资源(例如存储器)。多路径管理程序112基于该信息,从通向由来自应用111的I/O请求所指定的LU的多条路径,选择即使I/O请求经由也不发生交叉调用的路径(以下称为非交叉调用路径)。在该图所示的例子中,发送指定了LU6的I/O请求的情况下,多路径管理程序112选择非交叉调用路径。LU6的非交叉调用路径是通向LU6的路径P1及P2中的、经由了担当LU6的内核212AX所担当的端口D的路径P1。也就是说,非交叉调用路径P1是受理路径P1所经由的端口D所接收的I/O请求的内核和LU6的担当内核相同的路径。由此,能够避免交叉调用的发生。
[0065] 图7是用于说明实施方式的计算机系统的概要的第二图。
[0066] 通向由来自应用111的I/O请求所指定的LU220的多条路径具有多条非交叉调用路径(在图7的例子中,经由端口C的路径P3、经由端口D的路径P4)的情况下,多路径管理程序112可以根据循环方式等规定的方式使从多个非交叉调用路径选择的非交叉调用路径不同。
[0067] 以下,对在存储装置200中发生故障的情况下进行的处理的概要及该故障恢复的情况下进行的处理的概要进行说明。
[0068] 图8是用于说明实施方式的计算机系统的概要的第三图。图9是用于说明实施方式的计算机系统的概要的第四图。图10是用于说明实施方式的计算机系统的概要的第五图。图11是用于说明实施方式的计算机系统的概要的第六图。
[0069] 如图8所示,多路径管理程序112使用路径P5发送I/O请求的情况下,在0系列控制器210A中发生了故障的情况下,多路径管理程序112如图9所示地选择对1系列控制器210B发送I/O请求的路径(例如路径P6)。
[0070] 在0系列控制器210A中发生故障的情况下,在存储装置200中,如图9所示,1系列控制器210B的内核(例如,内核212BX)代替0系列控制器210A的内核而被设定为LU6的担当内核。
[0071] 这里,存储装置200的0系列控制器210A已从故障恢复的情况下,如图10所示,通过负荷监视设备230,监视各控制器(210A、210B)的负荷,为了使各控制器的负荷分散,例如,使LU6的担当内核恢复为内核212AX。
[0072] 在担当内核刚被变更之后,I/O请求从服务器100通过路径P7被发送,从而1系列控制器210B的内核212BX接收该I/O请求,发生CPU交叉调用(I/O请求从内核212BX被传送到担当LU6的内核212AX)。服务器100获取表示哪个内核担当对哪个LU的I/O的信息(以下称为担当内核特定信息)。由此,服务器100获取对LU6的担当变更后的内核进行特定的信息(控制器编号及内核编号)。
[0073] 像这样,在获取了对变更后的内核进行特定的信息之后,多路径管理程序112如图11所示地作为用于发送指定了LU6的I/O请求的路径,选择非交叉调用路径P8,该I/O请求被发送到担当LU6的内核212AX。由此,避免交叉调用。
[0074] 以下,详细说明实施方式的计算机系统。
[0075] 图12是实施方式的计算机系统的结构图。
[0076] 计算机系统具有1个以上的服务器100、1个以上的存储装置200、连接1个以上的服务器100及1个以上的存储装置200的多个开关150(150A、150B)。服务器100和开关150例如通过光纤电缆被连接。另外,开关150和存储装置200例如通过光纤电缆被连接。
[0077] 开关150是例如将与光纤通道对应的设备(服务器100、存储装置200等)相互连接起来的开关。在本实施方式中,开关150A、150B分别与多个服务器100连接。另外,开关150A与存储装置200的0系列控制器210A的多个端口211A连接。另外,开关150B与存储装置200的1系列控制器210B的多个端口211B连接。
[0078] 服务器100具有通信接口设备、存储设备及与它们连接的控制设备。通信接口设备是例如HBA(Host Bus Adapter:主机总线适配器)130。HBA130设有多个。存储设备是例如存储器110。控制设备是例如CPU120。
[0079] 存储器110存储应用111、多路径管理程序112、路径表113、主路径表114。
[0080] 应用111是用于执行规定的业务处理的程序,发出与业务处理相关的数据的I/O请求,即,对于存储装置200的LU220(严密来说,例如,通过安装LU220而识别的逻辑存储设备)的I/O请求。多路径管理程序112实现如下功能:从通向由来自应用111的I/O请求所指定的LU的多条路径中选择1条路径的功能;在检测到要选择的路径的故障时选择与该路径不同的路径并通过该选择的路径发送I/O请求的功能;适当地变更从多条路径选择的路径的功能;闭塞任意的路径的功能等。路径表113具有与通向LU220的路径相关的信息。主路径表114具有对担当LU220的控制器及内核进行特定的信息(担当内核特定信息)。
[0081] CPU120通过执行存储在存储器110中的程序,执行各种处理。此时,适当地参考表113及114。
[0082] HBA130是与光纤通道对应的适配器,对与外部的装置(存储装置200等)之间的通信进行中继。此外,在对服务器100内的HBA130进行区分时,有时记作“HBA1”、“HBA2”。在本实施方式中,HBA1与开关150A连接,HBA2与开关150B连接。
[0083] 存储装置200具有多个控制器210(0系列控制器210A、1系列控制器210B)、多个LU220、负荷监视设备230、公共存储器设备240、多个PDEV。基于多个PDEV的存储区域可以是多个LU220中的任意一方的实体LU,也可以是被分配给多个LU220中的虚拟LU的存储区域。
[0084] 公共存储器设备240存储主表241、交叉调用表242和负荷监视控制程序243。主表241是用于对担当对于LU220的I/O处理的内核进行管理的表。交叉调用表242具有与发生的交叉调用相关的信息。负荷监视控制程序243是用于定期或不定期地执行负荷监视处理的程序。负荷监视处理例如可以包括如下处理:对各控制器210的负荷(例如使用率)进行特定;根据特定出的负荷,变更担当LU220的内核;根据LU220的担当内核的变更,更新主表
241。在本实施方式中,负荷监视控制程序243以使各内核的使用率均衡的方式,决定哪个内核担当哪个LU220。
[0085] 负荷监视设备230具有CPU231。此外,也可以代替CPU231,使用控制器210的CPU212(也就是说,也可以没有CPU231,至少1个的CPU212除了执行对于LU的I/O以外,还执行负荷监视处理)。CPU231执行存储在公共存储器设备240中的负荷监视控制程序243,由此执行负荷监视处理。
[0086] LU220如上所述地既可以是虚拟LU也可以是实体LU。实体LU也可以是基于由多个PDEV构成的RAID组的LU。
[0087] 在该图中,作为向SV1(服务器1)提供的LU220有LU0(LDEV0010)、LU1(LDEV0011)、LU2(LDEV0012)。作为向SV2(服务器2)提供的LU220有LU10(LDEV0020)、LU11(LDEV0021)、LU12(LDEV0022)。另外,作为向SV3(服务器3)提供的LU220有LU20(LDEV0030)、LU21(LDEV0031)、LU22(LDEV0032)。此外,“LDEV”是逻辑存储设备,实质上与LU相同。具体来说,在本实施方式中,存储装置关于LU,具有作为从服务器指定的识别信息的LU编号、和作为存储装置内部使用的识别信息的LDEV编号。
[0088] 0系列控制器210A具有多个(例如,A~H这8个)端口211A和CPU212A。此外,1系列控制器210B也采用与0系列控制器210A同样的结构,这里,省略说明。
[0089] 端口211A是与光纤通道对应的端口(CHA端口),对与其他装置之间的通信进行中继。这里,区分多个端口来说明的情况下,有时记作端口A、B···H。
[0090] CPU212A具有多个内核212AX、内核212AY。此外,有时将各内核212AX、212AY分别记作“Core-X”、“Core-Y”。内核212AX、内核212AY能够分别独立地工作,例如,执行使用端口211A的通信处理、对于LU220的I/O。在本实施方式中,对各内核,确定担当的端口和担当的LU。换言之,按每个端口确定端口担当内核,按每个LU确定LU担当内核,其中,端口担当内核是受理端口所接收的I/O请求的内核,LU担当内核是执行对LU的I/O的内核。具体来说,端口A~D的端口担当内核是内核212AX,端口E~H的端口担当内核是内核212AY。
[0091] 各内核212AX、212AY能够通信地与PDEV连接,在对LU的I/O时,将I/O请求发送到具有与I/O目标的LU区域(LU中的区域)对应的物理存储区域(PDEV中的存储区域)的PDEV。但是,在本实施方式中,对于I/O目标的LU220,该LU220的LU担当内核执行I/O。LU担当内核能够通过负荷监视设备230的控制而变更。
[0092] 图13是表示实施方式的服务器1的路径表的一例的图。图14是表示实施方式的服务器2的路径表的一例的图。图15是表示实施方式的服务器3的路径表的一例的图。此外,服务器1、服务器2、服务器3的路径表的结构是相同的,存储在路径表中的信息是与各个服务器对应的信息。
[0093] 路径表113按每条路径具有下述信息,
[0094] (*)唯一地识别路径的ID即路径ID113a;
[0095] (*)表示具有路径所经由的端口的存储装置200的供应商名的供应商名113b;
[0096] (*)表示具有路径所经由的端口的存储装置200的产品名的产品名113c;
[0097] (*)表示具有路径所经由的端口的存储装置200的产品编号的制造编号113d;
[0098] (*)与路径相连的LU220的LU编号即LU编号113e;
[0099] (*)与路径相连的LU220的LDEV编号即LDEV编号113f;
[0100] (*)表示路径的状态的路径状态113g;
[0101] (*)路径所经由的端口的编号即CHA端口113h;
[0102] (*)具有路径所经由的端口的端口担当内核的控制器的编号即受理控制器编号113i;及
[0103] (*)路径所经由的端口的端口担当内核的编号即端口担当内核编号113J。
[0104] 作为路径状态113g的值例如有表示路径能够使用的“Online”、和表示路径不能使用的“Offline”。另外,作为端口担当内核编号113J的值例如有表示Core-X的“X”和表示Core-Y的“Y”。
[0105] 这里,对收集路径表113所具有的各种信息的方法的一例进行说明。
[0106] 例如,在服务器100的起动时等的规定的情形中,服务器100的未图示的OS(Operating System:操作系统)从HBA130向存储装置200所具有的各端口发送LU一览信息的获取请求。作为对于该获取请求的响应,包含LU一览信息的响应从存储装置200被发送到服务器100。LU一览信息包含与接收了获取请求的端口附带关联的LU相关的信息(包含供应商名、产品名、产品编号、LU编号、LDEV编号等的信息)。然后,多路径管理程序112发送包含所获取的LU一览信息所具有的LU编号的查询请求(例如Inquiry指令)。作为对于查询请求的响应,包含受理了查询请求的端口的端口担当内核的识别信息(受理控制器编号和端口担当内核编号)、和从查询请求所含有的LU编号识别的LU的LU担当内核的识别信息在内的响应从存储装置200被发送到服务器100。多路径管理程序112将LU一览信息所含有的信息和查询请求的响应所含有的信息存储在路径表113中。此外,多路径管理程序112在通向由查询请求所指定的LU的多条路径中包含交叉调用路径及非交叉调用路径的情况下,选择交叉调用路径,并通过交叉调用路径获取查询请求。这是因为非交叉调用路径在I/O请求的发送时被优选使用。交叉调用路径是指发生交叉调用的路径。具体来说,作为交叉调用路径,具有LU担当内核和端口担当内核不同但位于同一CPU的内核交叉调用路径、和LU担当内核和端口担当内核位于不同的CPU的CPU交叉调用路径。非交叉调用路径是指LU担当内核和端口担当内核相同的路径。
[0107] 根据路径表113的例子,存储装置的识别信息由供应商名、产品名及制造编号构成。此外,存储装置200的供应商名是“HIT”,产品名是“600F”,产品编号是“9300080”。另外,根据图13所示的路径表113的例子,作为通向LU0的路径,有路径ID“00001”、“00004”、“00007”、“00010”所示的4条路径。例如,路径“00001”是经由端口“0A”(0系列控制器211A的端口A)的路径,端口“0A”的端口担当内核是0系列控制器210A的内核212AX。另外,路径“00007”是经由端口“1A”(1系列控制器211B的端口A)的路径,端口“1A”的端口担当内核是1系列控制器210B的内核212BX。
[0108] 图16是表示实施方式的服务器1的主路径表的一例的图。图17是表示实施方式的服务器2的主路径表的一例的图。图18是表示实施方式的服务器3的主路径表的一例的图。此外,服务器1、服务器2、服务器3的主路径表的结构是相同的,存储在主路径表中的信息成为与各个服务器对应的信息。
[0109] 主路径表114按每条路径具有下述信息:
[0110] (*)表示存储装置200的供应商名的供应商名114a;
[0111] (*)表示存储装置200的产品名的产品名114b;
[0112] (*)表示存储装置200的产品编号的产品编号114c;
[0113] (*)表示与路径相连的LU的LDEV编号的LDEV编号114d;
[0114] (*)表示具有与路径相连的LU的LU担当内核的控制器(主控制器)的编号的控制器编号114e;
[0115] (*)表示与路径相连的LU的LU担当内核的编号的LU担当内核编号114f;及,[0116] (*)表示路径选择处理(参照图21)的步骤S2以后的处理对于路径选择的执行是有效还是无效的信息的I/O路径控制114g。
[0117] 例如,使用服务器100中的输入装置指定有效或无效的设定信息时,多路径管理程序112将该被指定的设定信息作为I/O路径控制114g存储在主路径表114。此外,设定信息可以对每个LU进行指定,也可以作为对于多个LU而言的共用信息来指定。
[0118] 这里,根据主路径表114及路径表113,能够对不发生交叉调用的路径进行特定。例如,根据服务器1所存储的图16所示的主路径表114及图13所示的路径表113,使用路径ID为“00001”、“00005”、“00009”的路径发送I/O请求的情况下,由于LU担当内核和端口担当内核相同,所以可知内核交叉调用及CPU交叉调用都没有发生。同样地,根据服务器2所存储的图17所示的主路径表114及图14所示的路径表113,使用路径ID为“00002”、“00006”、“00010”的路径发送I/O请求的情况下,由于LU担当内核和端口担当内核相同,所以可知内核交叉调用及CPU交叉调用都没有发生。另外,根据服务器3所存储的图18所示的主路径表114及图15所示的路径表113,使用路径ID为“00003”、“00007”、“00011”的路径发送I/O请求的情况下,由于LU担当内核和端口担当内核相同,所以可知内核交叉调用及CPU交叉调用都没有发生。
[0119] 图19是表示实施方式的主表的一例的图。
[0120] 主表241按每个LU具有下述信息:
[0121] (*)表示LU的LDEV编号的LDEV编号241a;
[0122] (*)表示具有LU的LU担当内核的控制器的编号的控制器编号241b;及,
[0123] (*)表示LU的LU担当内核的编号的LU担当内核编号241c。
[0124] 根据主表241,可知例如LU“0010”通过控制器“0”(0系列控制器210A)的内核“X”(内核212AX)执行I/O。
[0125] 图20是表示实施方式的交叉调用表的一例的图。
[0126] 交叉调用表242按每个被执行的交叉调用具有下述信息:
[0127] (*)唯一地表示交叉调用的编号即受理编号242a;
[0128] (*)表示发生了交叉调用的I/O请求所指定的LU220的LDEV编号的LDEV编号242b;
[0129] (*)受理发生了交叉调用的I/O请求的控制器的编号即受理控制器编号242c;
[0130] (*)表示受理发生了交叉调用的I/O请求的端口担当内核的编号的端口担当内核编号242d;
[0131] (*)表示具有如下内核的控制器的编号的处理控制器编号242e,该内核对于发生了交叉调用的I/O请求所指定的LU220执行I/O;及,
[0132] (*)表示如下内核的编号的处理LU担当内核编号242f,该内核对于发生了交叉调用的I/O请求所指定的LU220执行I/O。
[0133] 根据交叉调用表242,可知交叉调用“000001”的I/O目标为LU“0010”,I/O请求通过1系列控制器210B的内核212BY而被受理,并通过0系列控制器210A的内核212AX执行I/O。这还表示,由内核212AX执行的I/O的结果返回到内核212BY,通过内核212BY被发送到I/O请求的发送源。也就是说,交叉调用表242被用于通过与I/O请求根据交叉调用流动的路线相同的路线来反馈响应。
[0134] 以下,对本实施方式中的计算机系统执行的处理进行说明。
[0135] 首先,对使用了存储装置200中的内核212AX、212AY、212BX、212BY的主表241及交叉调用表242的处理进行说明。
[0136] 端口担当内核(例如,212AX、212AY、212BX及212BY的任意一方)从担当的端口(211A或211B)受理了I/O请求的情况下,参照主表241,对I/O目标LU(I/O请求所指定的LU)220的LU担当内核(担当对该LU220的I/O的控制器的内核)进行特定。
[0137] 其结果为,在被特定出的LU担当内核是端口担当内核的情况下,该端口担当内核对I/O目标LU220执行I/O。另一方面,被特定出的LU担当内核不是该端口担当内核的情况下,该端口担当内核进行下述处理:
[0138] (*)向交叉调用表242追加新的记录;
[0139] (*)对该记录,作为受理控制器编号242c设定具有该端口担当内核的控制器的编号;
[0140] (*)对该记录,作为端口担当内核编号242d设定该端口担当内核的编号;
[0141] (*)对该记录,作为处理控制器编号242e设定具有被特定出的LU担当内核的控制器的编号;
[0142] (*)对该记录,作为处理LU担当内核编号242f设定被特定出的LU担当内核的编号;
[0143] (*)使受理的I/O请求向被特定出的LU担当内核交付。
[0144] 受理了I/O请求的LU担当内核对I/O目标LU220执行与I/O请求相应的I/O。LU担当内核参考交叉调用表242,使处理结果交付到该I/O请求的传送源的端口担当内核。受理了处理结果的内核通过该内核担当的端口(接收了I/O请求的端口),向I/O请求的发送源的服务器100发送包含处理结果的响应。
[0145] 以下,关于服务器100的处理进行说明。
[0146] 图21是实施方式的路径选择处理的流程图。
[0147] 路径选择处理在服务器100的多路径管理程序112从应用111受理了I/O请求的情况下执行。
[0148] 多路径管理程序112从主路径表114检索与I/O目标LU(I/O请求所指定的LU)的LU编号对应的LDEV编号一致的记录,并从该记录获取控制器编号和LU担当内核编号(步骤S1)。此外,步骤S2以后的处理在该记录的I/O路径控制114g的值为有效(ON)的情况下执行。在该记录的I/O路径控制114g的值为无效(OFF)的情况下,多路径管理程序112例如按照循环方式等规定的规则选择路径为:表示路径表113的路径状态113g为Online的记录且I/O目标LU的LDEV编号一致的记录的路径。
[0149] 在步骤S2中,多路径管理程序112判断路径表113是否具有满足下述全部条件的记录:
[0150] (*)路径状态113g为Online;
[0151] (*)具有与对应于I/O目标LU的供应商名、产品编号及LDEV编号一致的供应商名113b、产品编号113c及LDEV编号113d;
[0152] (*)具有与步骤S1中获取的控制器编号及LU担当内核编号一致的控制器编号113i及LU担当内核编号113j。
[0153] 在步骤S2中,在具有一致的记录的情况下(步骤S2中为“是”),表示该路径是非交叉调用路径(I/O目标LU的LU担当内核和该路径所经由的端口的端口担当内核相同的路径)。由此,多路径管理程序112将该路径选择为发送I/O请求时使用的路径(步骤S5)。然后,多路径管理程序112通过该路径发送I/O请求。由此,该I/O请求的处理时,能够避免发生交叉调用。
[0154] 另一方面,在步骤S2中,不具有一致的记录的情况下(步骤S2中为“否”),多路径管理程序112判断路径表113是否具有满足下述全部条件的记录:
[0155] (*)路径状态113g为Online;
[0156] (*)具有与对应于I/O目标LU的供应商名、产品编号及LDEV编号一致的供应商名113b、产品编号113c及LDEV编号113d;
[0157] (*)具有与步骤S1中获取的控制器编号一致的控制器编号113i(步骤S3)。
[0158] 在步骤S3中,在具有一致的记录的情况下(步骤S3中为“是”),表示该路径是内核交叉调用路径(I/O目标LU的LU担当内核和该路径所经由的端口的端口担当内核不同但这些内核位于同一CPU内的路径)。由此,多路径管理程序112将该路径选择为发送I/O请求时使用的路径(步骤S5)。然后,多路径管理程序112通过该路径发送I/O请求。由此,发送了I/O请求的情况下,在存储装置200中,虽然发生内核交叉调用,但能够避免负荷比其高的CPU交叉调用的发生。
[0159] 另一方面,在步骤S3中,不具有一致的记录情况下(步骤S3中为“否”),多路径管理程序112判断路径表113是否具有满足下述全部条件的记录:
[0160] (*)路径状态113g为Online;
[0161] (*)具有与对应于I/O目标LU的供应商名、产品编号及LDEV编号一致的供应商名113b、产品编号113c及LDEV编号113d(步骤S4)。
[0162] 在步骤S4中,在具有一致的记录的情况下(步骤S4中为“是”),多路径管理程序112将该路径选择为发送I/O请求时使用的路径(步骤S5)。然后,多路径管理程序112利用该路径发送I/O请求。由此,在发送了I/O请求的情况下,在存储装置200中,发生CPU交叉调用。
[0163] 另一方面,在步骤S4中,不具有一致的记录的情况下(步骤S4中为“否”),由于不存在通向I/O目标LU220的路径,所以多路径管理程序112向I/O请求的发送源的应用111响应错误(步骤S6)。
[0164] 根据上述路径选择处理,非交叉调用路径优先被特定且选择,若没有非交叉调用路径,则内核交叉调用路径优先被特定且选择,若没有非交叉调用路径及内核交叉调用路径,则选择CPU内核交叉调用路径。
[0165] 图22是实施方式的主路径表更新处理的流程图。
[0166] 主路径表更新处理例如在应用111的执行时等被执行。
[0167] 在经过规定的监视时间(第二时间间隔)或发生主路径表更新处理的结束事件之前,多路径管理程序112暂停处理(步骤S11),监视时间的经过或发生了处理结束事件的情况下,判定是否经过了监视时间(步骤S12)。这里,监视时间例如如下地决定。即,存储装置200关于各LU,以第一时间间隔,进行担当变更处理(判断是否需要变更LU的LU担当内核,该判断的结果是肯定的情况下,进行变更该LU的LU担当内核的处理)。该情况下,监视时间(第二时间间隔)比第一时间间隔长,例如,可以是第一时间间隔的整数倍(例如3倍以上)。另外,担当变更处理的执行间隔即第一时间间隔可以通过存储装置200的输入输出控制台来变更。变更后的第一时间间隔可以从存储装置200通知到服务器100,也可以从服务器100向存储装置200查询。服务器100的多路径管理程序112也可以以变更后的第一时间间隔为基础变更监视时间(第二时间间隔)。
[0168] 经过了监视时间的情况下(步骤S12中为“是”),多路径管理程序112从存储装置200获取按每个LU220的主控制器编号及主LU担当内核编号(步骤S13)。例如,多路径管理程序112只要使Inquiry指令(SCSI请求)包含存储装置200中管理的LU的LU编号并向存储装置
200发送即可。存储装置200接收了该指令的情况下,接收了指令的CPU内核对与指令内的LU编号对应的LDEV编号进行特定,从主表241获取对应的LU220的主控制器编号及主LU担当内核编号,将获取的主控制器编号及主LU担当内核编号登记到对于指令的响应中的供应商唯一字段,将该响应发送到多路径管理程序112即可。
[0169] 这里,作为使Inquiry指令经由的路径而由多路径管理程序112选择的路径也可以是指定了与Inquiry指令内的LU编号对应的LU的I/O请求能够经由的任意的路径。该I/O请求能够经由的多条路径中的CPU交叉调用路径优先被特定且选择,若没有CPU交叉调用路径,则内核交叉调用路径优先被特定且选择,若CPU交叉调用路径及内核交叉调用路径都没有,则可以选择非交叉调用路径。像这样,能够期待减轻指定了与Inquiry指令内的LU编号对应的LU220的I/O请求的处理性能的降低。
[0170] 然后,多路径管理程序112将获取的主控制器编号及主LU担当内核编号存储在主路径表113的对应的LU220的记录中(步骤S14),使处理进入步骤S11。由此,能够将主路径表113更新成最新的信息。
[0171] 另一方面,没有经过监视时间的情况下(步骤S12中为“否”),多路径管理程序112判断是否有处理结束事件(步骤S15),有处理结束事件的情况下(步骤S15中为“是”),结束多路径表更新处理,另一方面,没有处理结束事件的情况下(步骤S15中为“否”),使处理进入步骤S11。
[0172] 以上,基于一实施方式进行了说明,但本发明不限于上述实施方式,能够适用于其他各种方式。
[0173] 例如,在上述实施方式中,以具备多个具有多个内核的CPU的存储装置为例进行了说明,但本发明不限于此,也可以是例如具备多个具有1个内核的CPU的存储装置,另外,也可以是具备1个具有多个内核的CPU的存储装置。
[0174] 另外,在上述实施方式中,服务器100对存储装置200进行轮询,由此,获取包含LU担当内核和具有其的控制器的各个编号在内的信息,但例如也可以是,存储装置在变更了LU担当内核时,将包含变更后的LU担当内核和具有其的控制器的各个编号在内的信息向服务器100发送,在服务器100中基于接收的信息更新主路径表114。
[0175] 另外,在上述实施方式中,通过I/O请求经由的路径获取LU担当内核的识别信息(例如控制器的编号及LU担当内核的编号),但例如,存储装置200和服务器100也可以连接到与进行根据光纤通道的通信的通信网络不同的通信网络,通过不同的通信网络,收发用于获取LU担当内核的识别信息的Inquiry指令或其响应(包含LU担当内核的识别信息的响应)。
[0176] 附图标记的说明
[0177] 100…服务器,200…存储装置。