存储系统的制作方法

文档序号:15930724发布日期:2018-11-14 01:36阅读:211来源:国知局

本发明涉及存储系统。

背景技术

存储系统一般具有存储控制部和多个能够随机访问的非易失存储设备。非易失存储设备例如是硬盘驱动器(hdd)或者固态驱动器(ssd)。也有两者同时存在的例子。

因为存储系统具有这样大量的存储设备,所以例如用后端切换器(backendswitch)将到大量存储驱动器的连接汇集,与存储控制部连接进行控制。例如,专利文献1公开了具有后端切换器的存储系统。

另外,存储系统例如具备两个存储控制部,使得即使某一方停止动作也能够用剩余一方继续进行存储系统的动作,保持可用性。两个存储控制部与后端切换器用不同的特别的通信通路连接,交换各种控制信息。专利文献1公开了具备两个存储控制部、和其间与后端切换器不同的总线的结构。

两个存储控制部之间的通信通路,为了抑制涉及通信的开销(overhead),使用易于与存储控制部具备的处理器直接连接的通信标准。这样的易于与处理器直接连接的通信标准的例子,是处理器与输入输出设备之间的通信标准pciexpress。

与此相对,作为用后端切换器汇集的、存储控制部与存储设备之间的通信标准,一般使用scsi(smallcomputersysteminterface)、fibrechannel、或者sas(serialattachedscsi)。

这些存储控制部与存储设备之间的通信标准的通信通路,不能与存储控制部具备的处理器直接连接,为了用于存储控制部之间的通信,需要专用的接口。

例如,专利文献2公开了使不同的存储控制部之间的通信经由后端切换器进行的技术。专利文献2中公开的技术,能够用后端切换器具备的共享存储区域,进行不同的存储控制部之间的通信。另外,专利文献3中也公开了在2个存储控制部之间具备共享存储器且具备用于二重化的特别的通信通路的技术。

另外,作为存储控制部与存储设备之间的通信标准,近年来也逐渐新使用与pciexpress具有兼容性的nvmexpress。

现有技术文献

专利文献

专利文献1:美国专利申请公开2009/0204743号

专利文献2:美国专利申请公开2008/0147934号

专利文献3:美国专利申请公开2013/0254487号



技术实现要素:

发明要解决的课题

如上所述,使用现有技术构成的存储系统,为了两个存储控制部之间的通信,使用pciexpress这样的易于与存储控制部的处理器连接的通信标准。因此,现有的存储系统在存储控制部之间专用地需要特别的通信通路。

pciexpress是处理器与输入输出设备之间的通信标准,对于两个存储控制部的两个处理器之间的通信没有任何规定。因此,仅使用pciexpress,即使能够例如将物理的通信通路与处理器直接连接,也因为两个处理器之间的通信流程没有规定,而不能在两个处理器之间进行通信。

另一方面,存储控制部与用后端切换器汇集的存储设备之间的通信标准,与这样的存储控制部之间的通信标准没有兼容性。经由后端切换器的存储控制部之间的通信是困难的。例如,专利文献2公开的技术需要后端切换器的共享存储区域、和用于存储控制部进行的通信检测的共享区域的定期的检查。这样,经由后端切换器的存储控制部之间的通信需要特别的手段,产生性能上的开销。

与pciexpress具有兼容性的nvmexpress是一个存储控制部与存储设备之间的通信标准,对于两个存储控制部之间的通信没有任何规定。因此,用nvmexpress不能进行两个存储控制部之间的通信。

从而,要求在两个存储控制部之间不需要特别的专用通信通路,能够经由将存储控制部与存储设备之间连接的后端切换器进行存储控制部之间的高效率的通信的技术。特别要求规定能够经由后端切换器进行两个存储控制部的处理器之间的通信的通信流程的技术。

用于解决课题的方法

本发明的一例是一种存储系统,其特征在于,包括:第1存储控制部,其包括第1处理器和第1存储器;第2存储控制部,其包括第2处理器和第2存储器;1个以上的存储设备;和1个以上的后端切换器,其将上述第1处理器、上述第2处理器和上述1个以上的存储设备连接,上述1个以上的后端切换器的每一个,参考从上述第1处理器接收到的帧并识别该帧的发送目标,在上述帧的发送目标是上述第2处理器的情况下,将上述帧中包括的、用于在上述第1处理器的地址空间中确定上述第2存储器中的位置的第1地址转换为用于在上述第2处理器的地址空间中确定上述第2存储器中的上述位置的第2地址,将包括上述第2地址的上述帧发送给上述第2存储控制部,在上述帧的发送目标是上述1个以上的存储设备中的第1存储设备的情况下,不对上述帧中包括的、用于在上述第1处理器的地址空间中确定上述第1存储设备的第3地址进行转换地,将上述帧发送给上述第1存储设备。

本发明的另一例,是一种存储系统,其特征在于,包括:第1存储控制部,其包括第1处理器和第1存储器;第2存储控制部,其包括第2处理器和第2存储器;1个以上的存储设备;和1个以上的后端切换器,其将上述第1处理器、上述第2处理器和上述1个以上的存储设备连接,上述1个以上的后端切换器的每一个,从上述第1处理器接收包括在上述第1处理器的地址空间中的用于确定上述第1存储器中的第1位置的第4地址、在上述第1处理器的地址空间中用于确定上述第2存储器中的第2位置的第5地址、和要传输的数据长度的数据传输指示,将上述第5地址转换为在上述第2处理器的地址空间中用于确定上述第2存储器中的上述第2位置的第6地址,在上述第1存储器中的上述第1位置与上述第2存储器中的上述第2位置之间,传输上述数据长度的第1数据。

发明效果

根据本发明的一个方式,能够经由将存储控制部与存储设备之间连接的后端切换器,进行存储控制部之间的高效率的通信。

附图说明

图1是存储系统的结构例。

图2是存储系统的其他结构例。

图3a表示在存储控制部之间通信的数据请求、数据返回、和数据发送的帧的例子。

图3b是在后端切换器中对于从处理器发送的帧中附加的地址决定切换动作的切换信息表的例子。

图3c是表示后端切换器从处理器接收了数据发送或数据请求时的处理流程的流程图的例子的图。

图4a表示切换信息表的例子。

图4b是表示后端切换器从存储设备接收了数据发送或数据请求时的处理流程的流程图的例子的图。

图5a是表示第1存储控制部对第2存储控制部发送数据的处理的序列的例子的图。

图5b是表示第1存储控制部从第2存储控制部取得数据的处理的序列的例子的图。

图6a是表示存储控制部对存储设备发送数据的处理的序列的例子的图。

图6b是表示存储控制部从存储设备取得数据的处理的序列的例子的图。

图7a是表示存储设备对存储控制部发送数据的处理的序列的例子的图。

图7b是表示存储设备从存储控制部取得数据的处理的序列的例子的图。

图8a是存储系统中能够使用的数据传输指示的帧格式例。

图8b是示出表示后端切换器从存储控制部接收了数据传输指示时的处理流程的流程图的例子的图。

图9a是表示第1存储控制部对第2存储控制部发送数据的处理的序列的其他例子的图。

图9b是表示第1存储控制部从第2存储控制部取得数据的处理的序列的其他例子的图。

图10是示出表示后端切换器从处理器接收了数据发送或数据请求时的处理流程的流程图的其他例子的图。

图11是表示第1存储控制部对第2存储控制部发送数据的处理的序列的其他例子的图。

图12是示出表示后端切换器从存储控制部接收了数据传输指示时的处理流程的流程图的其他例子的图。

图13a是表示第1存储控制部对第2存储控制部发送数据的处理的序列的其他例子的图。

图13b是表示第1存储控制部从第2存储控制部取得数据的处理的序列的其他例子的图。

图14是示出表示后端切换器从存储控制部接收了数据传输指示时的处理流程的流程图的其他例子的图。

图15是示出表示后端切换器从存储控制部接收了数据传输指示时的处理流程的流程图的另一个其他例子的图。

图16是表示第1存储控制部对第2存储控制部发送数据的处理的序列的其他例子的图。

图17是将存储系统与其他存储系统连接的结构例。

图18是将存储系统与其他存储系统连接的其他结构例。

图19是示出表示存储系统的一个存储控制部从上级装置接收了请求时的处理流程的流程图的例子的图。

图20是表示存储控制部从上级装置接收了数据写入请求的情况的处理的序列的例子的图。

图21是示出表示存储系统的一个存储控制部从上级装置接收了请求时的处理流程的流程图的其他例子的图。

图22是表示存储控制部从上级装置接收了数据写入请求的情况的处理的序列的其他例子的图。

图23是示出表示存储系统的一个存储控制部从上级装置接收了请求时的处理流程的流程图的其他例子的图。

图24是表示存储控制部从上级装置接收了数据写入请求的情况的处理的序列的其他例子的图。

图25是示出表示存储系统的一个存储控制部从上级装置接收了请求时的处理流程的流程图的其他例子的图。

图26是表示存储控制部从上级装置接收了数据写入请求的情况的处理的序列的其他例子的图。

图27是示出表示后端切换器从处理器接收了数据发送或数据请求时的处理流程的流程图的其他例子的图。

图28是示出表示后端切换器从处理器接收了数据发送或数据请求时的处理流程的流程图的其他例子的图。

图29是表示第1存储控制部对第2存储控制部发送数据的处理的序列的其他例子的图。

图30是存储系统的其他结构例。

图31是后端切换器的结构例。

图32是后端切换器的其他结构例。

图33是表示ntb中的地址转换动作的例子的图。

图34是表示存储控制部之间的数据传输路线的例子的图。

图35是表示存储控制部之间的数据传输路线的其他例子的图。

图36是表示存储系统内的pcie树的例子的图。

图37是表示pcie树与存储设备与处理器等的关系的例子的图。

图38是表示后端切换器的故障影响范围的例子的图。

图39是表示存储控制部的故障影响范围的例子的图。

图40是表示后端切换器维护或交换时的代替处理或代替路线是否需要的例子的图。

图41是表示从存储设备读取数据的路线的例子的图。

图42是表示后端切换器发生故障时的从存储设备读取数据的流程的流程图的例子。

图43是后端切换器的维护或交换流程的流程图的例子。

图44是表示从存储设备读取数据的路线的其他例子的图。

图45是表示后端切换器发生故障时的从存储设备读取数据的流程的流程图的其他例子。

图46是存储系统的其他结构例。

图47是存储系统的其他结构例。

图48是后端切换器的其他结构例。

图49是后端切换器的其他结构例。

图50是表示ntb中的地址转换动作的其他例子的图。

图51是存储系统的其他结构例。

图52是后端切换器的其他结构例。

图53是后端切换器的其他结构例。

图54是存储系统的其他结构例。

图55是后端切换器的其他结构例。

图56是后端切换器的其他结构例。

图57是表示从存储设备读取数据的路线的其他例子的图。

图58是表示从存储设备读取数据的路线的其他例子的图。

图59是表示负荷分散动作时的从存储设备读取数据的流程的流程图的例子。

具体实施方式

以下参考附图说明本发明的几个实施例。实施例说明用于确保存储系统的冗余性的存储控制部之间的数据通信控制。

(实施例1)

用图1、图3a~图7b说明实施例1。图1是实施例1的存储系统的结构例。图1中,存储系统具备两个存储控制部103a和103b。存储控制部103a包括处理器101a和存储器102a而构成,存储控制部103b包括处理器101b和存储器102b而构成。处理器101a和101b与后端切换器104分别通过路径106a和106b连接。

实施例1的存储系统具备存储设备105a~105f,存储设备105a~105f与后端切换器104分别通过路径107a~107f连接。另外,图1示出了六个存储设备105a~105f,但存储设备的数量是任意的。

后端切换器104的功能的一部分或全部例如可以通过在集成电路中设计等而用硬件实现,或者也可以通过由处理器解释、执行实现各功能的程序而用软件实现。

图3a表示在存储控制部之间通信的数据请求、数据返回、和数据发送的帧的例子。各帧可以作为一个单元发送,也可以分割为分组发送。图3a表示帧格式的一例,也可以使用其他格式、例如pciexpress中使用的分组格式。

数据请求的帧331在起始字段中,示出表示数据请求的编号(图3a的例子中为“0”)。下一个字段表示区分多个数据请求帧的标签编号(t)。一般而言,标签编号能够在关于一个数据请求进行数据返回之前发送下一个数据请求。

下一个字段表示数据长度。数据长度例如用字节单位、或者规定大小的数据块数表达。下一个字段表示请求目标地址。请求目标地址表示请求目标存储控制部中的处理器使用的地址空间的地址。请求目标地址被后端切换器104从请求源存储控制部中的处理器使用的地址空间的地址转换为请求目标存储控制部中的处理器使用的地址。

数据返回的帧332在起始字段中,示出表示数据返回的编号(图3a的例子中为“1”)。下一个字段表示数据请求的帧中附加的标签编号,识别是对哪一个数据请求的数据返回。下一个字段表示数据长度。最后的字段保存返回的数据。

数据发送的帧333在起始字段中,示出表示数据发送的编号(图3b的例子中为“2”)。下一个字段表示数据长度。下一个字段表示发送目标地址。发送目标地址表示发送目标存储控制部中的处理器使用的地址空间的地址。发送目标地址被后端切换器104从发送源存储控制部中的处理器使用的地址空间的地址转换为发送目标存储控制部中的处理器使用的地址。最后的字段保存要发送的数据。

图3b是在后端切换器104中对于从处理器101a发送的帧中附加的地址决定切换动作的切换信息表350的例子。图3b中,地址用16进制数记述。

在处理器101a使用的地址空间中,不同的地址范围被分配至不同的设备(存储器、处理器(存储器)和存储设备)。在图3b的例子中,地址0000~00ff是处理器101a对存储器102a分配的地址。具有该地址区域中的地址的帧,不会从处理器101a对后端切换器104发送。处理器101a直接访问存储器102a。

附加了地址0100之后的地址的帧,从处理器101a到达后端切换器104。例如,地址0180的目的地是处理器101b(存储器102b),对路径(path)106b发送。如后所述,后端切换器104对发往处理器101b(存储器102b)的帧的目标地址进行转换。在图3b的例子中,处理器101a的地址0180被转换为处理器101b的地址0080。

如果从处理器101a发送的帧中附加的地址是0220,则判定为目的地是存储设备105c,帧向与存储设备105c连接的路径107c发送。如后所述,发往存储设备的帧不接受后端切换器104进行的地址转换。

从处理器101b接收到的帧的切换,也参考同样结构的切换信息表。目的地是处理器101a(存储器102a)的帧接受上述地址转换,发往存储设备的帧不接受上述地址转换。后述的后端切换器104从处理器101a或处理器101b接收数据传输指示进行地址转换的结构中,也使用保持有同样结构的地址转换信息和目的地信息的切换信息表。

图3c是表示后端切换器104从处理器101a接收了数据发送或数据请求的情况的处理流程的流程图的例子。后端切换器104从处理器101b接收了数据发送或数据请求时的处理流程也是同样的。该情况下,将图3c中的处理器101a与处理器101b交换。

在步骤300中,后端切换器104从处理器101a接收数据发送或数据请求。在步骤301中,后端切换器104参考发送目标地址或请求目标地址(目标地址)和切换信息表350,判定该数据发送或数据请求的目的地。在目的地是处理器101b的情况下(301:处理器101b),后端切换器104前进至步骤302。在步骤302中,后端切换器104选择到处理器101b的路线。该路线相当于图1的路径106b。

在步骤303中,后端切换器104对于接收到的数据发送或数据请求的目标地址,参考切换信息表350进行转换。转换前的地址是处理器101a使用的地址空间的地址,转换后的地址是处理器101b使用的地址空间中的地址。

处理器101a与处理器101b是相互独立的,各自使用的地址空间和确定存储器内的位置的地址分别独立地规定。因此,通过按照由切换信息表350定义的规定的规则对相互的地址进行转换,能够进行处理器(存储器)之间的数据传输。

接着,在步骤304中,后端切换器104对处理器101b发送该数据或数据请求,并结束。

在步骤301中,如果目的地是存储设备105a~105f中的某一方(301:存储设备105a~105f),后端切换器104前进至步骤305。在步骤305中,后端切换器104选择到该存储设备105a~105f的路径107a~107f中的某一方。接着,在步骤306中,后端切换器104将该数据发送或数据请求对该存储设备发送,并结束。

接着,说明后端切换器104从存储设备105a~105f接收了数据发送或数据请求的情况的处理。存储设备105a~105f从处理器101a或101b接收帧,对指定的数据进行读写。进而,存储设备105a~105f接收将指定特定的动作的命令代码编码得到的特殊的数据模式,进行指示的动作。

存储设备105a~f105对后端切换器104发送帧。例如,从存储设备105a~105f接收的帧的发送目标,在后端切换器104中对于存储设备105a~105f分别预先决定。发送目标例如是处理器101a或处理器101b。

后端切换器104按照预先决定的设定,以将从存储设备105a~105f接收到的数据帧向到处理器101a的路径106a或到处理器101b的路径106b发送的方式进行切换。

也可以改为后端切换器104使用切换信息表、基于从存储设备105a~105f接收到的数据帧中附加的地址进行切换动作。

图4a表示切换信息表450的例子。切换信息表450定义存储设备的地址空间中的地址范围、目的地、和处理器的地址空间中的地址范围的关系。

后端切换器104从存储设备接收例如附加了地址0440的数据帧。后端切换器104以将该数据帧向路径106a发送的方式进行切换。后端切换器104将地址0440转换为处理器101a访问存储器102a用的地址0040。由此,处理器101a能够正确地访问存储器102a。

另外,后端切换器104从存储设备接收例如附加了地址0560的数据帧时,以将该数据帧向路径106b发送的方式进行切换。后端切换器104将地址0560转换为地址0060。

图4b是后端切换器104从存储设备105a~105f接收了数据发送或数据请求的情况的处理流程的流程图的例子。在步骤400中,后端切换器从存储设备105a~105f之一接收数据发送或数据请求。

在步骤401中,后端切换器104判定该数据发送或数据请求的目的地。判定方法如上所述。在目的地是处理器101a的情况下(401:处理器101a),后端切换器前进至步骤402。在步骤402中,后端切换器104选择到处理器101a的路线。该路线相当于图1中的路径106a。后端切换器104将该数据发送或数据请求与存储器102a或102b中的位置的指定一同对处理器101a或101b发送。本例中,指定的存储器是102a。

接着,后端切换器104前进至步骤403,使用选择的路线,将该数据发送或数据请求对处理器101a发送,并结束处理。

在步骤401中,如果目的地是处理器101b(401:处理器101b),则后端切换器104前进至步骤404。在步骤404中,后端切换器104选择到处理器101b的路线。该路线在图1中相当于路径106b。后端切换器104将该数据发送或数据请求与存储器102a或102b中的位置的指定一同对处理器101a或101b发送。本例中,指定的存储器是102b。接着,后端切换器104前进至步骤403,使用选择的路线,将该数据发送或数据请求对处理器101b发送,并结束处理。

图5a和5b分别表示存储控制部103a对存储控制部103b发送数据的处理的序列例、和存储控制部103a从存储控制部103b取得数据的处理的序列例。

另外,存储控制部103b对存储控制部103a发送数据、或者从存储控制部103a取得数据的处理的序列也是同样的。该情况下,在图5a和5b中,将存储控制部103a与存储控制部103b交换,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

在图5a中,在步骤501中,处理器101a从存储器102a取得数据。接着,在步骤502中,处理器101a对取得的数据附加处理器101a识别存储器102b中的位置的地址a,对后端切换器104发送。地址a在处理器101a的地址空间中识别存储器102b中的特定的位置。

另外,步骤501和502可以由在处理器101a中工作的软件执行,其全部或一部分也可以由根据软件的指示工作的、处理器101内实现的功能硬件(电路)执行。

例如,软件指定识别存储器102a中的数据的位置的地址、识别存储器102b中的位置的地址a、要发送的数据的长度。功能硬件从指定的存储器102a中的地址读取指定的长度的数据,生成包括该数据和指定的发送目标地址的帧,对后端切换器104发送。

在步骤503中,后端切换器104参考切换信息表350,将地址a转换为处理器101b识别存储器102b中的位置使用的地址b,对处理器101b发送。将地址a转换为地址b的理由如图3c的步骤303中所说明。

处理器101b从后端切换器104接收附加了地址b的帧。在步骤504中,处理器101b按照地址b在存储器102b中保存数据。步骤504也可以由在处理器101b中工作的软件执行。也可以在处理器101b中实现从后端切换器104接收附加了地址b的数据时自动地按照地址b在存储器102b中保存的功能硬件(电路)。

参考图5b,在步骤511中,处理器101a附加在处理器101a的地址空间中识别存储器102b中的位置的地址c,将数据请求对后端切换器104发送。步骤511可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。

例如,在处理器101a中工作的软件,指定识别存储器102b中的位置的地址c、保存取得的数据的存储器102a中的位置、要取得的数据的长度。功能硬件生成并发送包括指定的信息的数据请求。

后端切换器104从处理器101a接收附加了地址c的数据请求。在步骤512中,后端切换器104将地址c转换为处理器101b识别存储器102b中的位置使用的地址d,将数据请求对处理器101b发送。将地址c转换为地址d的理由如图3c的步骤303中所说明。

处理器101b从后端切换器104接收附加了地址d的数据请求。在步骤513中,处理器101b按照地址d从存储器102b取得数据。在步骤514中,处理器101b将从存储器102b取得的数据对后端切换器104返回。

步骤513和514可以由在处理器101b中工作的软件执行,也可以由在处理器101b中实现的功能硬件(电路)执行。从后端切换器104接收附加了地址d的数据请求时,功能硬件例如自动地按照地址d从存储器102b取得数据,对后端切换器104返回。

后端切换器104从处理器101b接收对于步骤512中发送的数据请求返回的数据。在步骤515中,后端切换器104将返回的数据进而对处理器101a返回。

处理器101a从后端切换器104接收对于步骤511中发送的数据请求的数据的返回。在步骤516中,处理器101a将返回的数据保存在存储器102a中。步骤516可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。例如,功能硬件在从后端切换器104接收数据的返回时,自动地在存储器102a中保存。

图6a是存储控制部103a对存储设备105a~105f发送数据的处理的序列的例子。以下说明也能够由存储控制部103b应用。该情况下,存储控制部103a、处理器101a和存储器102a分别置换为存储控制部103b、处理器101b和存储器102b。这一点对于图6b的说明也是同样的。

在步骤601中,处理器101a从存储器102a取得数据。接着,在步骤602中,处理器101a对于取得的数据,附加对存储设备105a~105f中的哪一个发送的指定,对后端切换器104发送。

步骤601和602也可以由在处理器101a中工作的软件执行,其全部或一部分也可以由在处理器101a中实现的功能硬件(电路)执行。例如,软件指定存储器102a中的数据取得的位置、发送目标存储设备、和要发送的数据长度,功能硬件按照指定的信息工作。

后端切换器104从处理器101a接收对存储设备发送的数据。在步骤603中,后端切换器104按照接收到的数据中附加的发送目标存储设备的指定,将该数据对存储设备105a~105f之一发送。

图6b是存储控制部103a从存储设备105a~105f取得数据的处理的序列的例子。在步骤611中,处理器101a附加从存储设备105a~105f中的哪一个取得数据的指定,将数据请求对后端切换器104发送。步骤611可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。例如,软件指定从哪一个存储设备的何处取得数据、保存取得的数据的存储器102a中的位置、和要取得的数据长度。功能硬件按照指定的信息工作。

后端切换器104从处理器101a接收附加了从哪一个存储设备的何处取得数据的指定的数据请求。在步骤612中,后端切换器104将该数据请求对指定的存储设备发送。

存储设备从后端切换器104接收数据请求时,在步骤613中,将请求的数据对后端切换器104返回。

对于步骤612中发送的数据请求,从存储设备对后端切换器104返回数据。在步骤614中,后端切换器104将返回的数据进而对该数据请求发送源的处理器101a返回。

对于步骤611中对后端切换器104发送的数据请求返回数据时,在步骤615中,处理器101a将返回的数据保存在存储器102a中。步骤615可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。功能硬件在从后端切换器104接收数据的返回时,自动地在存储器102a中保存。

图7a是存储设备105a~105f之一对存储器102a发送数据的处理的序列的例子。以下说明也能够应用于存储器102b。该情况下,处理器101a和存储器102a分别置换为处理器101b和存储器102b。这一点对于图7b的说明是同样的。

图7a中,存储设备105a~105f之一在步骤701中指定存储器102a中的位置,对后端切换器104发送数据。该数据的发送例如使用图3a所示的数据发送的帧333。

后端切换器104从存储设备105a~105f之一接收数据时,在步骤702中,按照指定的存储器是存储器102a还是存储器102b,将接收到的数据与存储器102a或102b中的位置的指定一同对处理器101a或101b发送。本例中,指定的存储器是102a。

另外,指定的存储器是存储器102a还是存储器102b,如以上所说明,可以对于存储设备105a~105f分别预先决定。后端切换器104也可以使用图4a所示的切换信息表450,基于从存储设备105a~105f接收到的数据帧中附加的地址决定。该情况下,如图4a所说明,后端切换器104使用切换信息表450的信息将从存储设备105a~105f接收到的数据发送的帧中包括的发送目标地址转换为处理器101a使用的地址空间的地址。

处理器101a从后端切换器104接收数据时,在步骤703中,在指定的存储器102a中的位置保存接收到的数据。步骤703可以由在处理器101a中工作的软件执行、进行处理,也可以在处理器101a或101b中设置从后端切换器104接收数据时、自动地在存储器102a或102b中保存的硬件的功能。

图7b是存储设备105a~105f之一从存储器102a取得数据的处理的序列的例子。存储设备105a~105f之一在步骤711中,指定取得数据的存储器102a中的位置,对后端切换器104发送数据请求。该数据请求的发送,例如使用图3a所示的数据请求的帧331。

后端切换器104在步骤712中,按照指定的存储器是存储器102a还是存储器102b,将接收到的数据请求与存储器102a或102b中的位置的指定一同对处理器101a或101b发送。本例中,指定了存储器102a。

另外,指定的存储器是存储器102a还是存储器102b,与步骤702的说明同样地,可以对于存储设备105a~105f分别预先决定。后端切换器104也可以使用图4a所示的切换信息表450,基于从存储设备105a~105f接收到的数据帧中附加的地址决定。该情况下,如图4a所说明,后端切换器104使用切换信息表450的信息将从存储设备105a~105f接收到的数据发送的帧中包括的发送目标地址转换为处理器101a使用的地址空间的地址。

处理器101a从后端切换器104接收数据请求时,在步骤713中,从指定的存储器102a中的位置取得数据。处理器101a进而在步骤714中,将从存储器102a取得的数据对后端切换器104返回。

步骤713和714可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。从后端切换器104接收数据请求时,功能硬件自动地按照指定的存储器102a中的位置从存储器102a取得数据,对后端切换器104返回。

后端切换器104在对于步骤712中发送的数据请求、从处理器101a返回了数据时,在步骤715中,进而将该数据对步骤711中发送了数据请求的存储设备105a~105f之一返回。

如上所述,在实施例1中,具有兼容性的通信标准被应用于存储控制部之间的通信和存储控制部与存储设备之间的通信。根据实施例1,存储控制部103a和103b能够使用后端切换器104相互进行通信。

例如从图1中未图示的上级装置接收了用于对存储设备105a~105f写入的数据的情况下,存储控制部103a、103b能够经由后端切换器104将该数据二重化。即使对存储设备105a~105f的写入未完成也能够确保充分的可靠性和可用性,所以能够在对存储设备105a~105f写入之前对上级装置通知写入完成。进而,后端切换器104中不需要共享存储区域。

(实施例2)

接着,用图2~图7b说明本发明的实施例2。图2是实施例2的存储系统的结构例。图2中,存储系统具备两个存储控制部203a、203b。存储控制部203a包括处理器201a和存储器202a构成。存储控制部203b包括处理器201b和存储器202b构成。

实施例2的存储系统具备两个相互独立的后端切换器204a和204b。处理器201a与后端切换器204a和204b分别通过路径206a和208a连接。处理器201b与后端切换器204a和204b分别通过路径206b和208b连接。

实施例2的存储系统具备存储设备205a~205f。存储设备205a~205f与后端切换器204a分别通过路径207a~207f连接。存储设备205a~205f与后端切换器204b分别通过路径209a~209f连接。

处理器201a和201b仅使用后端切换器204a或204b的某一方,也可以与全部存储设备205a~205f和另一方的处理器201b和201a连接。

通过该结构,即使后端切换器204a和204b中的一方停止动作,或者即使到后端切换器204a和204b的路径中的某一方被切断,也能够使处理器201a和201b之间的通信、和处理器201a或201b与存储设备205a~205f之间的通信全部继续。由此能够提高系统的可用性。

另外,图2示出了六个存储设备205a~205f,但存储设备的数量是任意的。

对于实施例2的存储系统,能够应用实施例1中的图3a~图7b的说明。实施例2中,存储控制部103a、103b、处理器101a、101b、存储器102a、102b分别置换为存储控制部203a、203b、处理器201a、201b、存储器202a、202b。另外,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

由此,与实施例1同样地,存储控制部203a与203b能够使用后端切换器204a或204b相互进行通信。例如从图2中未图示的上级装置接收了用于对存储设备205a~205f写入的数据的情况下,存储控制部203a、203b能够经由后端切换器204a或204b将该数据二重化。

根据以上所述,即使对存储设备205a~205f的写入未完成也能够确保充分的可靠性和可用性,所以能够在对存储设备205a~205f写入之前对上级装置通知写入完成。进而,后端切换器204a或204b中不需要共享存储区域。

(实施例3)

用图1、图4a、图4b、图6a~图9b、图27说明实施例3。实施例3中,图1、图4a、图4b、图6a~图7b的说明与实施例1相同。

图27是表示后端切换器104从处理器101a接收了数据发送或数据请求的情况的处理流程的流程图的例子。后端切换器104从处理器101b接收了数据发送或数据请求时的处理流程也是相同的。该情况下,在图27中处理器101a置换为处理器101b。

后端切换器104在步骤2700中,从处理器101a接收数据或数据请求。在步骤2701中,后端切换器104选择到存储设备105a~105f的路径107a~107f的作为对象的一个。接着,在步骤2702中,后端切换器104将该数据发送或数据请求对该存储设备发送,并结束处理。

图8a是实施例3的存储系统中能够使用的数据传输指示的帧格式例。第1格式的数据传输指示851,是从处理器101a发往后端切换器104的数据传输指示。数据传输指示851指定数据传输方向。起始字段指定传输方向。传输方向例如用0或1表达。例如,0表示从处理器101a对处理器101b传输数据。1表示从处理器101b对处理器101a传输数据。

下一个字段表示要传输的数据长度。再下一个字段表示处理器101a的地址空间中的存储器102a中的地址。最后的字段表示在处理器101a的地址空间中设定的、处理器101b的存储器102b中的地址。

数据传输指示851需要放置指定数据传输方向的信息,但例如进行地址转换的总是最后放置的处理器101a设定的处理器101b的存储器102中的地址,所以能够在后端切换器104内容易地设置地址转换功能。

第2格式的数据传输指示852通过指定传输源地址和传输目标地址来表示传输方向。不需要传输方向的字段。起始字段表示数据长度。下一个字段表示传输源地址。最后的字段表示传输目标地址。

图8b是表示后端切换器104从处理器101a接收了数据传输指示的情况的处理的流程的流程图的例子。后端切换器104从处理器101b接收了数据传输指示的情况的处理流程也是相同的。该情况下,在以下说明中,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

参考图8b,后端切换器104在步骤800中,从处理器101a接收数据传输指示。接着,在步骤801中,后端切换器104判定接收到的数据传输指示的传输方向。如果传输方向是从存储器102a向存储器102b的传输(801:从存储器102a向存储器102b传输),则处理前进至步骤802。

在步骤802中,后端切换器104从存储器102a取得要传输的数据。接着,在步骤803中,后端切换器104将处理器101a在数据传输指示中指定的传输目标的地址转换为处理器101b使用的地址。切换信息表350被参考。处理器101a与处理器101b是相互独立的处理器,对于确定各自使用的存储器的位置的地址分别独立地决定。因此,本实施例也按照规定的规则对相互的地址进行转换。

最后,在步骤804中,后端切换器104按照转换后的地址,在存储器102b中写入从存储器102a取得的数据,并结束处理。

在步骤801中,如果传输方向是从存储器102b向存储器102a的传输(801:从存储器102b向存储器102a传输),则处理前进至步骤805。

在步骤805中,后端切换器104与步骤803相同地,将处理器101a指定的传输源的地址转换为处理器101b使用的地址。接着,在步骤806中,后端切换器104按照转换后的地址,从存储器102b取得数据。最后,在步骤807中,后端切换器104将从存储器102b取得的数据写入至存储器102a,并结束处理。

图9a是按照图8b的流程图所示的处理流程、存储控制部103a对存储控制部103b发送数据的处理的序列的例子。图9b是存储控制部103a从存储控制部103b取得数据的处理的序列的例子。

另外,存储控制部103b对存储控制部103a发送数据或者从存储控制部103a取得数据的处理的序列也是同样的。该情况下,在图9a和9b中,存储控制部103a、处理器101a、存储器102a分别与存储控制部103b、处理器101b、存储器102b交换。

参考图9a,在步骤901中,处理器101a将包括识别传输目标的存储器102b中的位置的地址a、识别传输源的存储器102a中的位置的地址、要传输的数据长度的数据传输指示对后端切换器104发送。指定的两个地址是处理器101a的地址空间中的地址。

后端切换器104在步骤902中,将从存储器102a的指定的数据传输源的地址取得传输源数据的请求对处理器101a发送。

处理器101a在步骤903中,从存储器102a中的请求的地址取得数据。接着,处理器101a在步骤904中,将从存储器102a取得的数据对后端切换器104返回。步骤903和904可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。从后端切换器104接收数据请求时,功能硬件自动地按照指定的地址从存储器102a取得数据,对后端切换器104返回。

后端切换器104从处理器101a接受传输源的数据。在步骤905中,后端切换器104将从处理器101a发送的数据传输指示中包括的、处理器101a识别传输目标的存储器102b中的位置的地址a转换为处理器101b使用的存储器102b中的地址b。切换信息表350被参考。

后端切换器104附加地址b,将从处理器101a返回的数据对处理器101b发送。将地址a转换为地址b的理由如图8b的步骤803中的说明所述。

处理器101b从后端切换器104接收附加了地址b的数据。在步骤906中,处理器101b按照地址b在存储器102b中保存发送的数据。步骤906可以由在处理器101b中工作的软件执行,也可以由在处理器101b中实现的功能硬件(电路)执行。功能硬件从后端切换器104接收附加了地址b的数据时,自动地按照地址b在存储器102b中保存数据。

参考图9b,在步骤911中,处理器101a将数据传输指示对后端切换器104发送。数据传输指示包括处理器101a识别传输源的存储器102b中的位置的地址c、识别传输目标的存储器102a中的位置的地址、和要传输的数据长度。

后端切换器104在步骤912中,将处理器101a发送的数据传输指示中包括的地址c转换为处理器101b识别存储器102b中的位置使用的地址d。切换信息表350被参考。后端切换器104附加地址d,将数据取得的请求对处理器101b发送。将地址c转换为地址d的理由如图8b的步骤803中的说明所述。

处理器101b从后端切换器104接收附加了地址d的数据请求。在步骤913中,处理器101b按照地址d从存储器102b取得数据。接着,在步骤914中,处理器101b将从存储器102b取得的数据对后端切换器104返回。

步骤913和914可以由在处理器101b中工作的软件执行,也可以由在处理器101b中实现的功能硬件(电路)执行。从后端切换器104接收附加了地址d的数据请求时,功能硬件自动地按照地址d从存储器102b取得数据,对后端切换器104返回。

后端切换器104与步骤912中对处理器101b发送的数据请求对应地,从处理器101b接收从存储器102b取得的数据。在步骤915中,后端切换器104对于接收到的数据,附加该传输指示所示的传输目标的存储器102a中的地址,对处理器101a发送。

处理器101a在从后端切换器104发送附加了存储器102a中的地址的数据时,在步骤916中,按照附加的地址,将该数据保存在存储器102a中。步骤916可以由在处理器101a中工作的软件执行,也可以由在处理器101a中实现的功能硬件(电路)执行。从后端切换器104接收附加了存储器102a中的地址的数据时,功能硬件自动地按照附加的地址在存储器102a中保存数据。

根据以上说明的实施例3,与实施例1同样地,存储控制部103a与103b能够使用后端切换器104相互进行通信。例如从图1中未图示的上级装置接收了用于对存储设备105a~105f写入的数据的情况下,存储控制部103a、103b能够经由后端切换器104将该数据二重化。

根据以上所述,即使对存储设备105a~105f的写入未完成也能够确保充分的可靠性和可用性,所以能够在对存储设备105a~105f写入之前对上级装置通知写入完成。进而,后端切换器104中不需要共享存储区域。另外,本实施例中,后端切换器和处理器的功能硬件通过执行传输源地址与传输目标地址之间的数据传输,能够减少处理器的处理时间。

也可以代替图1所示的存储系统的结构地,采用图2所示的存储系统的结构。采用图2所示的存储系统的结构的情况下,在上述说明中,存储控制部103a置换为存储控制部203a,存储控制部103b置换为存储控制部203b。

进而,处理器101a置换为处理器201a,处理器101b置换为处理器201b,存储器102a置换为存储器202a,存储器102b置换为存储器202b。另外,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

(实施例4)

接着,用图1或图2、和图4a、图4b、图6a~图7b、图10、图11说明实施例4。采用图1所示的结构作为本实施例的存储系统的结构的情况下,图1、图4a、图4b、图6a~图7b的说明与实施例1相同。

图10是表示本实施例中后端切换器104从处理器101a接收了数据发送或数据请求的情况的处理流程的流程图的例子。另外,后端切换器104从处理器101b接收了数据发送或数据请求的情况的处理流程也是同样的。该情况下,在图10中,将处理器101a与处理器101b交换。

图10中,对于步骤1000至步骤1006的处理,能够应用实施例1中的图3c的步骤300至步骤306的说明。

在步骤1007中,后端切换器104判定从处理器101a发送的帧是用于在存储器102b中保存的数据的发送、还是存储器102b的数据的取得的请求。如果判定的结果是用于在存储器102b中保存的数据发送(1007:数据发送),则后端切换器104前进至步骤1008。

在步骤1008中,后端切换器104对处理器101b通知为了在存储器102b中保存而发送了数据。对处理器101b的通知例如通过将预先决定的特定的信号从后端切换器104对处理器101b发送而进行。或者,通知通过将预先决定的特定的数据对处理器101b的特定的地址发送而进行。或者,也可以从后端切换器104对处理器101b发送中断信号。

在步骤1007中,如果判定的结果是存储器102b的数据的取得的请求(1007:数据请求),则后端切换器104结束处理。

图11是后端切换器104按照图10所示的处理流程进行处理的情况下、从存储控制部103a对存储控制部103b发送数据的处理的序列的例子。

另外,存储控制部103b对存储控制部103a发送数据的处理的序列也是同样的。该情况下,在图11中,将存储控制部103a与存储控制部103b交换,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图11中,对于步骤1101至步骤1104,能够应用实施例1中的图5a的步骤501至步骤504的说明。步骤1103之后,在步骤1105中,后端切换器104对处理器101b通知已发送数据。该通知的方法与之前图10的步骤1008的说明相同。

如上所述,本实施例通知从后端切换器对处理器的数据发送。本实施例在实施例1中说明的效果之外,处理器101b即使不定期地检查存储器102b的内容,也能够得知进行了从处理器101a的数据发送。因为不需要定期地检查存储器102b的内容,所以能够削减性能上的开销,能够提高处理器101b的效率。

作为本实施例的存储系统的结构,能够代替图1所示的结构地采用图2所示的结构。该情况下,关于图2、图4a、图4b、图6a~图7b的说明与实施例2相同。在图10、图11的说明中,存储控制部103a置换为存储控制部203a,存储控制部103b置换为存储控制部203b。

进而,处理器101a置换为处理器201a,处理器101b置换为处理器201b,存储器102a置换为存储器202a,存储器102b置换为存储器202b。另外,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

(实施例5)

接着,用图1或图2、图4a、图4b、图6a~图7b、图12、图13a、图13b、图27说明实施例5。本实施例中,图1、图2、图4a、图4b、图6a~图7b、图27的说明与实施例3是同样的。

对于采用图1所示的结构作为本实施例的存储系统的结构的情况,参考图12和图13进行说明。图12是表示后端切换器104从处理器101a接收了数据传输指示的情况的处理的流程的流程图的例子。

另外,后端切换器104从处理器101b接收了数据或数据请求的情况的处理流程也是相同的。该情况下,在图12中,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图12中,对于步骤1200至步骤1207,能够应用实施例3的图8b中的步骤800至步骤807的说明。在步骤1208中,后端切换器104对处理器101b通知已将该数据对存储器102b写入。

对处理器101b的通知例如通过将预先决定的特定的信号从后端切换器104对处理器101b发送而进行。或者,通知通过将预先决定的特定的数据对处理器101b的特定的地址发送而进行。或者,也可以从后端切换器104对处理器101b发送中断信号。

后端切换器104在步骤1207之后,前进至步骤1209。在步骤1209中,后端切换器104对处理器101a通知已将从存储器102b取得的数据对存储器102a写入。

对处理器101a的通知,例如通过将预先决定的特定的信号从后端切换器104对处理器101a发送而进行。或者,通知通过将预先决定的特定的数据对处理器101a的特定的地址发送而进行。或者,也可以从后端切换器104对处理器101a发送中断信号。

图13a是后端切换器104按照图12所示的处理流程进行处理的情况下、从存储控制部103a对存储控制部103b发送数据的处理的序列的例子。图13b是存储控制部103a从存储控制部103b取得数据的处理的序列的例子。

另外,存储控制部103b对存储控制部103a发送数据或者取得存储控制部103a的数据的处理的序列也是同样的。该情况下,在图13a和图13b中,将存储控制部103a与存储控制部103b交换,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图13a中,对于步骤1301至步骤1306,能够应用实施例3的图9a中的步骤901至步骤906的说明。图13a中,后端切换器104在步骤1305之后,在步骤1307中,对处理器101b通知已发送该数据。该通知的方法与图12的步骤1208中说明的相同。

图13b中,对于步骤1311至步骤1316,能够应用实施例3的图9b中的步骤911至步骤916的说明。图13b中,后端切换器104在步骤1315之后,在步骤1317中,对处理器101a通知已发送该数据。该通知的方法与图12的步骤1209中说明的相同。

如上所述,本实施例从后端切换器对处理器通知数据发送。本实施例在实施例3中说明的效果之外,处理器101a或101b即使不定期地检查存储器102a或102b的内容,也能够得知进行了从后端切换器104的数据发送。因为不需要定期地检查存储器102a或102b的内容,所以能够削减性能上的开销,能够提高处理器101a或101b的效率。

作为本实施例的存储系统的结构,能够代替图1所示的结构地采用图2所示的结构。该情况下,关于图2、图4a、图4b、图6a~图7b、图27的说明与实施例3相同。在图12、图13的说明中,存储控制部103a置换为存储控制部203a,存储控制部103b置换为存储控制部203b。

进而,处理器101a置换为处理器201a,处理器101b置换为处理器201b,存储器102a置换为存储器202a,存储器102b置换为存储器202b。另外,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

(实施例6)

用图1或图2、图4a、图4b、图6a~图7b、图14、图27说明实施例6。本实施例中,图1、图2、图4a、图4b、图6a~图7b、图27的说明与实施例3是同样的。对于采用图1所示的结构作为本实施例的存储系统的结构的情况,对图14进行说明。

图14是表示后端切换器104从处理器101a接收了数据传输指示的情况的处理的流程的流程图的例子。另外,后端切换器104从处理器101b接收了数据传输指示的情况的处理流程也是相同的。该情况下,在图14中将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图14中,对于步骤1400至步骤1407,能够应用实施例3的图8b中的步骤800至步骤807的说明。图14中,在步骤1400中从处理器101a接收的数据传输指示包括能够校验要传输的数据中是否存在错误的数据校验码。

数据校验码例如可以是称为t10dif的标准的数据校验码。能够与数据校验码对照的用于数据保护的代码,可以对校验对象的数据附加,也可以与校验对象分别地对后端切换器104供给。

图14中,处理在步骤1402之后前进至步骤1408。在步骤1408中,后端切换器104根据从处理器101a接收到的数据传输指示中包括的数据校验码,校验步骤1402中从存储器102a取得的数据中是否存在错误。

接着,前进至步骤1409,后端切换器104判定校验的结果是否存在错误。如果不存在错误(1409:ok),则处理前进至步骤1403。如果存在错误(1409:ng),则后端切换器104不对存储器102b写入该数据,前进至步骤1412。后端切换器104在步骤1404之后也前进至步骤1412。

处理在步骤1406之后前进至步骤1410。在步骤1410中,后端切换器104根据从处理器101a接收到的数据传输指示中包括的数据校验码,校验步骤1406中从存储器102b取得的数据中是否存在错误。

接着,后端切换器104前进至步骤1411,判定校验的结果是否存在错误。如果不存在错误(1411:ok),则后端切换器104前进至步骤1407。如果存在错误(1411:ng),则后端切换器104不对存储器102a写入该数据,前进至步骤1412。后端切换器104在步骤1403之后也前进至步骤1412。

在步骤1412中,后端切换器104对处理器101a报告步骤1408或步骤1410中校验得到的校验结果,并结束处理。

如上所述,本实施在实施例3中说明的效果之外,还能够用后端切换器104校验要传输的数据中是否存在错误。由此,能够提高要传输的数据的正确性,进而在处理器101a或101b中,不会因为数据错误校验而产生性能上的开销。

作为本实施例的存储系统的结构,能够代替图1所示的结构地采用图2所示的结构。该情况下,图2、图4a、图4b、图6a~图7b、图27的说明与实施例3相同。在图14的说明中,处理器101a置换为处理器201a,处理器101b置换为处理器201b,存储器102a置换为存储器202a,存储器102b置换为存储器202b。进而,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

(实施例7)

用图1或图2、图4a、图4b、图6a~图7b、图15、图16、图27说明实施例7。本实施例中,图1、图2、图4a、图4b、图6a~图7b、图27的说明与实施例3是同样的。对于采用图1所示的结构作为本实施例的存储系统的结构的情况,参考图15和图16进行说明。

图15是表示后端切换器104从处理器101a接收了数据传输指示的情况的处理的流程的流程图的例子。另外,后端切换器104从处理器101b接收了数据传输指示的情况的处理流程也是同样的。该情况下,在图15中,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图15中,对于步骤1500至步骤1507,能够应用实施例3的图8中的步骤800至步骤807的说明。图15中,后端切换器104在步骤1504之后,前进至步骤1508。

在步骤1508中,后端切换器104再次读取已对存储器102b写入的该数据。用该步骤,能够保证步骤1504中将该数据可靠地对存储器102b写入的处理已完成。步骤1508中读取的数据的长度,可以等于步骤1504中写入的数据的长度,也可以是步骤1504中写入的数据的一部分的长度。例如,后端切换器104也可以读取步骤1504中写入的数据的最后的部分。

在步骤1509中,后端切换器104对处理器101a通知已读取该数据。通知例如可以通过将步骤1508中读取的数据的全部或一部分对处理器101a发送而进行,也可以通过将预先决定的特定的信号对处理器101a发送而进行。

将读取的数据的全部或一部分对处理器101a发送的情况下,发送的该数据的全部或一部分被处理器101a丢弃。进而,存在未从后端切换器104对处理器101a发送的该数据的全部或一部分的情况下,未对处理器101a发送的数据被后端切换器104丢弃。

另外,通知还可以通过另外将预先决定的特定的数据对处理器101a的地址空间中的特定的地址发送而进行,也可以通过从后端切换器104对处理器101a发送中断信号而进行。通过这样,能够对处理器101a通知对存储器102b写入的处理已完成。

图16是后端切换器104按照图15所示的处理流程进行处理的情况下、从存储控制部103a对存储控制部103b发送数据的处理的序列的例子。另外,存储控制部103b对存储控制部103a发送数据的处理的流程也是同样的。

该情况下,在图16中,将存储控制部103a与存储控制部103b交换,将处理器101a与处理器101b交换,将存储器102a与存储器102b交换。

图16中,对于步骤1601至1606,能够应用实施例3的图9a中的步骤901至906的说明。图16中,后端切换器104在步骤1607中,再次使用步骤1605中使用的地址b,对处理器101b发送从存储器102b取得该数据的请求。

要取得的数据的长度可以等于步骤1605中附加地址b发送的数据的长度,也可以是步骤1605中附加地址b发送的数据的一部分的长度。这一点与图15的步骤1508的说明相同。例如,后端切换器104也可以以取得步骤1605中发送的数据的最后的一部分的方式,变更要取得的数据的长度和地址b。

处理器101b从后端切换器104接收附加了地址b的数据请求时,在步骤1608中,按照地址b从存储器102b取得数据。接着,在步骤1609中,处理器101b将从存储器102b取得的数据对后端切换器104返回。

步骤1608和1609可以由在处理器101b中工作的软件执行,也可以由在处理器101b中实现的功能硬件(电路)执行。功能硬件从后端切换器104接收附加了地址b的数据请求时,自动地按照地址b从存储器102b取得数据,对后端切换器104返回。

后端切换器104从处理器101b接收地址b的数据时,在步骤1610中,对处理器101a通知已从存储器102b读取数据。通知方法与图15的步骤1509的说明相同。

如上所述,本实施在实施例3中说明的效果之外,还能够在从存储控制部103a对存储控制部103b传输数据的情况下,保证已在存储器102b中成功保存该数据。例如从图1中未图示的上级装置接收了用于对存储设备105a~105f写入的数据的情况下,能够保证用存储控制部103a和103b成功将该数据二重化。

因为即使对存储设备105a~105f的写入未完成,也能够确保充分的可靠性和可用性,所以能够在对存储设备105a~105f写入数据之前,对上级装置通知数据写入完成。本实施例相对于实施例3,能够更可靠地保证数据的二重化。

作为本实施例的存储系统的结构,能够代替图1所示的结构地采用图2所示的结构。该情况下,关于图2、图4a、图4b、图6a~图7b、图27的说明与实施例3相同。图15和图16的说明中,存储控制部103a置换为存储控制部203a,存储控制部103b置换为存储控制部203b。

进而,处理器101a置换为处理器201a,处理器101b置换为处理器201b,存储器102a置换为存储器202a,存储器102b置换为存储器202b。另外,后端切换器104置换为后端切换器204a或204b,存储设备105a~105f置换为存储设备205a~205f。

(实施例8)

用图17或图18和图19、图20说明实施例8。图17是表示实施例8的存储系统的结构的例子的图。图17中,存储系统1700具备两个存储控制部1703a和1703b。

存储控制部1703a包括处理器1701a、存储器1702a、与上级装置1714a连接的上级if1710a、和互联if1711a构成。存储控制部1703b包括处理器1701b、存储器1702b、与上级装置1714b连接的上级if1710b、和互联(interconnect)if1711b构成。

互联if1711a和1711b分别通过与后端切换器1704不同的互联切换器1712a和1712b,与其他存储系统1713a~1713e连接。

存储系统1700具备存储设备1705a~1705f。存储设备1705a~1705f与后端切换器1704分别通过路径1707a~1707f连接。图17示出了六个存储设备1705a~1705f,但存储设备的数量是任意的。

图17示出了5台其他存储系统1713a~1713e,但其他存储系统的数量是任意的。其他存储系统1713a~1713e可以分别具有与存储系统1700同样的结构。

上级装置1714a和1714b分别可以是用在处理器1701a、1701b、或者存储控制部1703a或1703b中的其他处理器中工作的软件实现的虚拟的装置。该软件代替上级if1710a或1710b经由软件驱动程序与存储系统1700交换请求和响应。

图18是表示代替图17地使用两个后端切换器的存储系统的结构的例子的图。图18中,存储系统1800具备两个存储控制部1803a和1803b。

存储控制部1803a包括处理器1801a、存储器1802a、与上级装置1814a连接的上级if1810a、和互联if1811a构成。存储控制部1803b包括处理器1801b、存储器1802b、与上级装置1814b连接的上级if1810b、和互联if1811b构成。

存储系统1800具备两个相互独立的后端切换器1804a和1804b。处理器1801a与后端切换器1804a和1804b分别通过路径1806a和路径1808a连接。处理器1801b与后端切换器1804a和1804b分别通过路径1806b和路径1808b连接。

存储系统1800具备存储设备1805a~1805f。存储设备1805a~1805f与后端切换器1804a分别通过路径1807a~1807f连接。存储设备1805a~1805f与后端切换器1804b分别通过路径1809a~1809f连接。

处理器1801a和1801b仅使用后端切换器1804a或1804b的一方,与全部存储设备1805a~1805f和另一方的处理器1801b和1801a连接。即使后端切换器1804a或1804b的一方停止动作,或者与一方连接的路径被切断,存储系统1800也能够使处理器1801a和1801b之间的通信、以及处理器1801a或1801b与存储设备1805a~1805f之间的通信全部继续。由此能够提高系统的可用性。

互联if1811a和1811b分别通过与后端切换器1804a和1804b不同的互联切换器1812a和1812b与其他存储系统1813a~1813e连接。

图18示出了六个存储设备1805a~1805f,但本实施例中存储设备的数量是任意的。图18中示出了5台其他存储系统1813a~1813e,但本实施例中其他存储系统的数量是任意的。

其他存储系统1813a~1813e可以具有与存储系统1800同样的结构。上级装置1814a和1814b可以与图17中的上级装置1714a和1714b同样是虚拟的装置。

图19是表示本实施例的存储控制部1703a、1703b、1803a或1803b进行的处理的流程的流程图的例子。图19中,存储控制部在步骤1900中,从上级装置接收数据读取请求或数据写入请求。

在步骤1901中,存储控制部判定接收到的请求是否对于包括该存储控制部的存储系统的存储设备中保存的数据的请求。例如,存储控制部参考管理来自上级装置的请求示出的地址与存储设备之间的关系的信息进行判定。

如果接收到的请求是对于包括该存储控制部的存储系统内的存储设备中保存的数据的请求(1901:yes),则存储控制部前进至步骤1902。在步骤1902中,存储控制部判定从上级装置接收到的请求是数据的读取还是写入。如果请求是写入(1902:写入),则存储控制部前进至步骤1903。

在步骤1903中,存储控制部从上级装置接收写入数据。接着,在步骤1904中,存储控制部将接收到的写入数据保存在该存储控制部的存储器中。

接着,在步骤1905中,存储控制部将在该存储控制部的存储器中保存的数据通过同一存储系统内的后端切换器对另一方的存储控制部的存储器传输。

在步骤1906中,存储控制部再次读取已对另一方的存储控制部的存储器传输的写入数据,确认已在另一方的存储控制部的存储器中保存。步骤1906中再次读取的数据的长度,可以等于步骤1905中传输的数据的长度,也可以是数据1905中传输的数据的一部分的长度。例如,存储控制部可以读取步骤1905中传输的数据的最后的一部分。

最后,在步骤1907中,存储控制部对上级装置通知写入完成。

在步骤1902中,如果从上级装置接收到的请求是数据的读取(1902:读取),则存储控制部前进至步骤1908。在步骤1908中,存储控制部从同一存储系统内的存储设备读取该数据。接着,存储控制部前进至步骤1909,将从存储设备读取的数据对上级装置返回。

存储控制部也可以将读取的数据保存在该存储控制部的存储器中。对于下一个相同数据的读取请求,存储控制部不从存储设备读取数据,而是返回存储器中保存的数据。

在步骤1901中,如果从上级装置接收到的请求不是对于包括该存储控制部的存储系统的存储设备中保存的数据的请求(1901:no),则存储控制部前进至步骤1910。

在步骤1910中,存储控制部将从上级装置接收到的读取或写入请求经由互联if和互联切换器对其他存储系统发送。

图20是存储控制部1703a或1803a中的处理流程按照图19所示的流程图进行的情况的序列的例子。图20表示对于从上级装置对存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f的数据写入请求的处理的例子。

另外,存储控制部1703b或1803b从上级装置接收了对存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f的数据写入请求的情况的处理的序列也是同样的。

该情况下,在图20中,将存储控制部1703a或1803a、与存储控制部1703b或1803b交换。将处理器1701a或1801a、与处理器1701b或1801b交换。将存储器1702a或1802a、与处理器1702b或1802b交换。

图20中,存储控制部1703a或1803a从上级装置接收数据写入请求时,在步骤2001中,接收写入数据。处理器1701a或1801a在步骤2002中,将接收到的写入数据保存在存储器1702a或1802a中。

接着,处理器1701a或1801a在步骤2003中,再次取得存储器1702a或1802a中保存的该数据。处理器1701a或1801a对于取得的数据,在步骤2004中,附加识别存储器1702b或1802b中的位置的地址a,对后端切换器1704或1804a或1804b发送。该数据的发送例如使用图3a所示的数据发送的帧333。

步骤2003和2004可以由在处理器1701a或1801a中工作的软件执行,也可以由在处理器1701a或1801a中实现的功能硬件(电路)执行。功能硬件由软件指定取得存储器1702a或1802a中的数据的位置、识别存储器1702b或1802b中的位置的地址a、要发送的数据长度地工作。

后端切换器1704、或者后端切换器1804a或1804b从处理器1701a或1801a接收数据发送。后端切换器1704、或者后端切换器1804a或1804b在步骤2005中,将附加的地址a转换为处理器1701b或1801b识别存储器1702b或1802b中的位置的地址b。包括转换后的地址b的数据发送被发送至处理器1701b或1801b。

处理器1701b或1801b从后端切换器1704或1804a或1804b接收附加了地址b的数据。处理器1701b或1801b在步骤2006中,基于地址b将接收到的数据保存在存储器1702b或1802b中。

步骤2006可以由在处理器1701b或1801b中工作的软件执行,也可以由在处理器1701b或1801b中实现的功能硬件(电路)执行。功能硬件从后端切换器接收附加了地址b的数据时,自动地按照地址b在存储器1702b或1802b中保存数据。

接着,处理器1701a或1801a在步骤2007中,再次使用地址a将取得存储器1702b或1802b中保存的数据的请求对后端切换器1704或者后端切换器1804a或1804b发送。该数据请求的发送,例如使用图3a所示的数据请求的帧331。

该情况下,要取得的数据的长度可以等于步骤2004中附加地址a发送的数据的长度,也可以是步骤2004中附加地址a发送的数据的一部分的长度。例如,也可以以取得步骤2004中发送的数据的最后的一部分的方式,变更要取得的数据的长度和地址a。这一点与图19的步骤1906的说明相同。

步骤2007可以由在处理器1701a或1801a中工作的软件执行,也可以由在处理器1701a或1801a中实现的功能硬件(电路)执行。功能硬件由软件指定识别存储器1702b或1802b中的位置的地址a、和要取得的数据的长度地工作。

后端切换器1704或者后端切换器1804a或1804b在步骤2008中,将地址a再次转换为地址b,将取得数据的请求对处理器1701b或1801b发送。

处理器1701b或1801b从后端切换器1704或者后端切换器1804a或1804b接收数据取得请求。处理器1701b或1801b在步骤2009中,按照附加的地址b,从存储器1702b或1802b取得数据。

在步骤2010中,处理器1701b或1801b将取得的数据对后端切换器1704或者后端切换器1804a或1804b返回。

步骤2009和2010可以由在处理器1701b中或1801b中工作的软件执行,也可以由在处理器1701b或1801b中实现的功能硬件(电路)执行。

功能硬件从后端切换器1704或者后端切换器1804a或1804b接收附加了地址b的数据请求时,自动地按照地址b从存储器1702b或1802b取得数据,对后端切换器1704或者后端切换器1804a或1804b返回。

后端切换器1704或者后端切换器1804a或1804b从处理器1701b或1801b接收返回数据。在步骤2011中,后端切换器1704或者后端切换器1804a或1804b将该数据对处理器1701a或1801a返回。

处理器1701a或1801a从后端切换器1704或者后端切换器1804a或1804b接收返回的数据。处理器1701a或1801a在步骤2012中对上级装置报告数据的写入已完成。

通过以上结构,在存储系统内,在存储控制部之间传输从上级装置接收到的写入数据进行二重化的情况下,能够保证二重化。

因为二重化得到保证,即使对存储设备的写入未完成,也能够确保充分的可靠性和可用性。结果,对于上级装置,能够在对存储设备写入数据之前,报告数据写入完成。

如上所述,本实施例中,存储系统1700或1800能够对其他存储系统提供附加容量、性能的称为向外扩展(scale-out)的效果。

为了兼顾称为向外扩展的效果、和存储系统的可用性,在与向外扩展的效果有关系的多个存储系统之间使数据具有冗余。维持存储系统之间的数据的冗余性,同时需要维持数据的一致性,所以会产生性能上的开销。另外,各存储系统具备的存储容量的使用效率也因为维持冗余性而降低。

与此相对,本实施例的存储系统1800因为可用性特别高,所以在提供向外扩展的效果时,不需要与其他存储系统之间使数据具有冗余。因此,不会产生性能上的开销,各存储系统具备的存储容量的使用效率也不会降低。

在符合本实施例的存储系统中,例如第1存储控制部具备第1互联部,第2存储控制部具备第2互联部。第1和第2互联与不同于后端切换器的1个以上的互联切换器连接。互联切换器还与第2存储系统连接。第1或第2存储控制部从上级装置接收数据读取或写入请求,判定接收到的数据读取或写入请求中,请求的数据是否存储设备中保存的数据。判定数据未保存在存储设备中时,第1或第2存储控制部使用第1或第2互联部和互联切换器,将数据读取或写入请求对第2存储系统发送。

(实施例9)

用图21、图22说明实施例9。实施例9中的存储系统的结构例是图17或图18所示的结构。图21是表示图17所示的存储系统1700的存储控制部1703a或1703b、图18所示的存储系统1800的存储控制部1803a或1803b中的处理的流程的流程图的例子。

图21中,对于步骤2100至步骤2104、2107、2108至2110,能够应用实施例8所示的图19中的步骤1900至步骤1904、1907、1908至1910的说明。图21中,存储控制部在步骤2105中,对后端切换器发送将写入数据从该存储器对同一存储系统内的另一方的存储控制部的存储器传输的指示。

后端切换器接受该指示时,将指定的写入数据从该存储控制部的存储器对另一方的存储控制部的存储器传输。后端切换器再次读取另一方的存储控制部的存储器而确认传输已完成,对该存储控制部通知数据传输完成。

在步骤2106中,该存储控制部从后端切换器接收数据传输完成的通知。在步骤2107中,该存储控制部对上级装置通知写入完成。

图22是存储控制部1703a或1803a中的处理流程按照图21所示的流程图进行的情况的序列的例子。具体而言,图22是从上级装置接受了存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备17051805a~1805f中保存的数据的写入请求的情况的处理的序列的例子。

另外,存储控制部1703b或1803b从上级装置接受了存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f中保存的数据的写入请求的情况的处理的序列也是同样的。

该情况下,在图22中,将存储控制部1703a或1803a、与存储控制部1703b或1803b交换。将处理器1701a或1801a、与处理器1701b或1801b交换。将存储器1702a或1802a、与处理器1702b或1802b交换。

图22中,存储控制部1703a或1803a从上级装置接收数据写入请求时,在步骤2201中,接收写入数据。处理器1701a或1801a在步骤2202中,将接收到的写入数据保存在存储器1702a或1802a中。

对于步骤2203至2212,能够应用实施例7的图16的步骤1601至1610的说明。存储控制部103a或203a置换为存储控制部1703a或1803a。存储控制部103b或203b置换为存储控制部1703b或1803b。

进而,处理器101a或201a置换为处理器1701a或1801a。处理器101b或201b置换为处理器1701b或1801b。存储器102a或202a置换为存储器1702a或1802a。存储器102b或202b置换为存储器1702b或1802b。

另外,后端切换器104或者后端切换器204a或204b置换为后端切换器1704或者后端切换器1804a或1804b。传输源的数据置换为从上级装置接收到的写入数据。

处理器1701a或1801a在步骤2212中,从后端切换器1704或者后端切换器1804a或1804b接收数据保存完成通知。在处理2213中,处理器1701a或1801a对上级装置报告数据的写入已完成。

通过采用如上所述的结构,实施例9能够达成与实施例8中说明的效果同样的效果。

(实施例10)

用图23、图24说明实施例10。实施例10中的存储系统的结构例,是图17或图18所示的结构。图23是表示图17所示的存储系统1700的存储控制部1703a或1703b、图18所示的存储系统1800的存储控制部1803a或1803b中的处理的流程的流程图的例子。

图23中,对于步骤2300至2304、2307、2308至2310,能够应用实施例9所示的图21中的步骤2100至2104、2107、2108至2110的说明。

图23中,存储控制部在步骤2304中将从上级装置接收到的写入数据保存在该存储控制部的存储器中。接着,在步骤2305中,存储控制部对后端切换器发送将该写入数据从该存储器对同一存储系统内的另一方的存储控制部的存储器传输的指示。

接着,在步骤2306中,存储控制部从后端切换器接收数据错误校验的结果。在步骤2307中,存储控制部将校验结果对上级装置通知。接收到的校验结果表示数据错误的情况下,上级装置判定未正确写入数据,例如将之前的数据写入请求再次对存储系统发送。

图24是存储控制部1703a或1803a中的处理流程按照图23所示的流程图进行的情况的序列的例子。具体而言,图24是从上级装置接受了存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f中保存的数据的写入请求的情况的处理的序列的例子。

另外,存储控制部1703b或1803b从上级装置接受了存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f中保存的数据的写入请求的情况的处理的序列也是同样的。

该情况下,在图24中,将存储控制部1703a或1803a、与存储控制部1703b或1803b交换。将处理器1701a或1801a、与处理器1701b或1801b交换。将存储器1702a或1802a、与处理器1702b或1802b交换。

图24中,对于步骤2401至2408,能够应用实施例9的图22中的步骤2201至2208的说明。图24中,在步骤2409中,后端切换器1704或者后端切换器1804a或1804b对处理器1701b或1801b通知发送了写入数据。

处理器1701b或1801b收到已发送写入数据的通知时,在处理2410中,从存储器1702b或1802b取得写入数据。接着,处理器1701b或1801b对于从存储器1702b或1802b取得的写入数据,在步骤2411中,校验是否存在数据错误。

数据错误校验中在校验对象的数据之外需要数据校验码的情况下,数据校验码预先对处理器1701b或1801b提供。或者,处理器1701b或1801b也可以基于预先决定的规则生成数据校验码。或者,处理器1701a或1801a也可以经由后端切换器1704或者后端切换器1804a或1804b,对处理器1701b或1801b供给数据校验码。

处理器1701b或1801b在步骤2411之后,在步骤2412中,将数据错误校验的结果对后端切换器1704或者后端切换器1804a或1804b通知。后端切换器1704或者后端切换器1804a或1804b在步骤2413中,将该通知的结果对处理器1701a或1801a通知。

处理器1701a或1801a在步骤2414中,将从后端切换器1704或者后端切换器1804a或1804b通知的数据错误校验的结果对上级装置通知。

如上所述,实施例10的存储系统1700或1800在实施例9中的效果之外,还能够确认数据是否被无误地保存在存储器中,能够提高数据的正确性。

即,在将处理器1702a或1802a中保存的写入数据对存储器1702b或1802b传输之后,通过校验传输数据的错误,能够与存储器1702a或1802a中保存的数据一同校验错误。

在符合本实施例的存储系统中,例如第1存储控制部为了对一个以上存储设备写入而从上级装置接收主机数据,将主机数据作为第1数据,对存储设备写入之前,保存在第1存储器的第1位置中。

第1处理器在主机数据被保存在第1存储器的第1位置中之后,将数据传输指示对后端切换器发送。第2处理器从后端切换器收到已将第1数据保存在第2存储器中的通知时,从第2存储器读取第1数据,进行第1数据中是否存在错误的判定,将该判定结果对第1处理器发送。第1处理器将从第2处理器接收到的判定结果对上级装置通知。

(实施例11)

用图25、图26说明实施例11。实施例11的存储系统的结构例,是图17或图18所示的结构。图25是表示图17所示的存储系统1700的存储控制部1703a或1703b、图18所示的存储系统1800的存储控制部1803a或1803b中的处理的流程的流程图的例子。

图25中,对于步骤2500至2505、2508至2510,能够应用实施例8所示的图19中的步骤1900至1905、1908至1910的说明。

图25中,存储控制部在步骤2505中将写入数据从该存储控制部的存储器对同一存储系统内的另一方的存储控制部的存储器传输之后,前进至步骤2520。

在步骤2520中,存储控制部对另一方的存储控制部通知已将写入数据对另一方的存储控制部的存储器传输。该通知可以将预先决定的特定的数据对另一方的存储控制部内的特定的地址发送。或者,通知可以是包括识别写入数据的信息和在另一方的存储控制部内的存储器中将写入数据写入的位置的信息的、特别的数据。另外,通知也可以包括中断信号。

另一方的存储控制部收到已传输写入数据的通知时,对于传输的数据进行数据错误校验,将结果对该存储控制部通知。该通知与上述的对另一方的存储控制部通知已将写入数据对另一方的存储控制部的存储器传输的方法是同样的。

在步骤2521中,该存储控制部接受从另一方的存储控制部通知的数据错误结果。接着,在步骤2522中,该存储控制部将数据错误校验的结果对上级装置通知。上级装置在存在数据错误的情况下,判定未正确写入数据,例如将之前的数据写入请求再次对存储系统发送。这与实施例10中的图23的步骤2307的说明是同样的。

图26是存储控制部1703a或1803a中的处理流程按照图25所示的流程图进行的情况的序列的例子。具体而言,是从上级装置接受了存储系统1700的存储设备1705a~1705f或存储系统1800的存储设备1805a~1805f中保存的数据的写入请求的情况的处理的序列的例子。

另外,存储控制部1703b或1803b从上级装置接受了存储设备1705a~1705f或存储设备17051805a~1805f中保存的数据的写入请求的情况的处理的序列也是同样的。

该情况下,在图26中,将存储控制部1703a或1803a、与存储控制部1703b或1803b交换。将处理器1701a或1801a、与处理器1701b或1801b交换。将存储器1702a或1802a、与存储器1702b或1802b交换。

图26中,对于步骤2601至2606,能够应用实施例8中的图20的步骤2001至2006的说明。

图26中,处理器1701a或1801a在步骤2604中,从存储器1702a或存储器1802a读取从上级装置接受的写入数据,对后端切换器1704或者后端切换器1804a或1804b发送。在步骤2607中,处理器1701a或1801a对后端切换器1704或者后端切换器1804a或1804b通知已发送该写入数据。

后端切换器1704或者后端切换器1804a或1804b接受上述通知时,在步骤2608中,将同样的通知对处理器1701b或1801b发送。步骤2607和2608中进行的通知的方法,与上述的图25的步骤2520的说明相同。

处理器1701b或1801b从后端切换器1704或者后端切换器1804a或1804b收到已发送该写入数据的通知。在步骤2609中,处理器1701b或1801b从存储器1702b或1802b取得该写入数据。

接着,处理器1701b或1801b对于从存储器1702a或1802a取得的写入数据,在步骤2610中,校验是否存在数据错误。步骤2610的数据错误校验与实施例10的图24的步骤2411的数据错误校验是同样的。

对于之后的步骤2611至2613,能够应用实施例10的图24的步骤2412至2414的说明。

根据以上结构,实施例11能够达成与实施例10中说明的效果同样的效果。

(实施例12)

用图1或图2、和图4a、图4b、图6a~图7b、图28、图29说明实施例12。实施例12的存储系统的结构是图1所示的结构的情况下,图1、图4a、图4b、图6a~图7b的说明与实施例1相同。

图28是表示在实施例12中,后端切换器104从处理器101a接收了数据或数据请求的情况的处理流程的流程图的例子。另外,后端切换器104从处理器101b接收了数据或数据请求的情况的处理流程也是同样的。该情况下,在图28中将处理器101a处改为处理器101b即可。另外,在图28中将处理器101b处改为处理器101a。

图28中,对于步骤2800至步骤2806,能够应用实施例1中的图3的步骤300至306的说明。在步骤2804之后,后端切换器104中的处理前进至步骤2807。

在步骤2807中,后端切换器104判定从处理器101a发送的帧是用于在存储器102b中保存的数据发送、还是存储器102b的数据的取得请求。如果判定的结果是对存储器102b的数据发送(2807:数据发送),则后端切换器104前进至步骤2808。

在步骤2808中,后端切换器104对处理器101b再次发送取得在存储器102b中保存的该数据的请求。再次请求的数据的长度可以等于步骤2804中发送的数据的长度,也可以是步骤2804中发送的数据的一部分的长度。例如,后端切换器104可以读取步骤2804中发送的数据的最后的一部分。

在步骤2809中,后端切换器104从处理器101b接受该数据。在步骤2810中,后端切换器104对处理器101a通知已从处理器101b接受该数据,并结束处理。

对处理器101a的通知,例如可以通过将从处理器101b接受的该数据的全部或一部分对处理器101a发送而进行,也可以通过将预先决定的特定的信号对处理器101a发送而进行。将从处理器101b接受的该数据的全部或一部分对处理器101a发送的情况下,处理器101a将接收到的该数据的全部或一部分丢弃。

另外,通知也可以通过将预先决定的特定的数据对处理器101a的地址空间中的特定的地址发送而进行。或者,通知也可以通过对处理器101a发送中断信号而进行。通过这样,能够对处理器101a通知已将该数据可靠地写入存储器102b中。在步骤2807中,如果判定的结果是存储器102b的数据的取得请求(2807:数据请求),则后端切换器104结束处理。

图29是后端切换器104按照图28所示的处理流程进行处理的情况下,从存储控制部103a对存储控制部103b发送数据的处理的序列的例子。另外,存储控制部103b对存储控制部103a发送数据的处理的序列也是同样的。

该情况下,在图29中,将存储控制部103a与存储控制部103b交换。将处理器101a与处理器101b交换。将存储器102a与存储器102b交换。

图29中,对于步骤2901至2904,能够应用实施例1中的图5a的步骤501至504的说明。图29中,后端切换器104在步骤2905中,将再次指定步骤2903中发送的地址b的数据取得请求对处理器101b发送。

该情况下,要取得的数据的长度可以等于步骤2905中附加地址b发送的数据的长度,也可以是步骤2905中附加地址b发送的数据的一部分的长度。例如,后端切换器104可以以取得步骤2905中发送的数据的最后的一部分的方式,变更数据长度和地址b。这一点与上述图28的步骤2808的说明是同样的。

处理器101b从后端切换器104接收附加了地址b的数据请求时,在步骤2906中,按照地址b从存储器102b取得数据。接着,在步骤2907中,处理器101b将从存储器102b取得的数据对后端切换器104返回。

步骤2906和2907可以由在处理器101b中工作的软件执行,也可以由在处理器101b中实现的功能硬件(电路)执行。功能硬件从后端切换器104接收附加了地址b的数据请求时,自动地按照地址b从存储器102b取得数据,对后端切换器104返回。

后端切换器104从处理器101b接收地址b的数据的返回时,在步骤2908中,对处理器101a通知已发送数据。该通知的方法与图28的步骤2810的说明相同。

通过以上结构,在实施例1中说明的效果之外,还能够对处理器101a通知已将对存储控制部103b发送的数据可靠地保存在存储器102b中。由此,例如从图1中未图示的上级装置接收了用于对存储设备105a~105f写入的数据的情况下,能够保证用存储控制部103a和103b成功将该数据二重化。

由此,即使对存储设备105a~105f的写入未完成,也能够进一步确保充分的可靠性和可用性,所以能够在对存储设备105a~105f写入数据之前,对上级装置通知数据写入完成。

另外,作为本实施例的存储系统的结构,能够代替图1所示的结构地采用图2所示的结构。该情况下,关于图2、图4a、图4b、图6a~图7b的说明与实施例2相同。

在图28、图29的说明中,存储控制部103a置换为存储控制部203a。存储控制部103b置换为存储控制部203b。处理器101a置换为处理器201a。

处理器101b置换为处理器201b。存储器102a置换为存储器202a。存储器102b置换为存储器202b。后端切换器104置换为后端切换器204a或204b。存储设备105a~105f置换为存储设备205a~205f。

(实施例13)

用图30~43说明本发明的实施例13。图30表示实施例13的存储系统的结构例。图30中,存储系统具备两个存储控制部3001、3021和驱动器壳体3040。存储控制部3001包括处理器(cpu1)3003、存储器(mem1)3002、和经由主机通道(hostchannel)3009与上级装置(未图示)连接的上级if(fe1)3008构成。

处理器3003包括根联合体(rootcomplex)(rc1)3004。根联合体3004包括连接上级if3008的根端口(rp)3005、根端口(rp12)3006和根端口(rp11)3007构成。

存储控制部3021包括处理器(cpu2)3023、存储器(mem2)3022、和经由主机通道3029与上级装置(未图示)连接的上级if(fe2)3028构成。处理器3023包括根联合体(rc2)3024。根联合体3024包括连接上级if3028的根端口(rp)3025、根端口(rp21)3026和根端口(rp22)3027构成。

实施例13的存储系统在驱动器壳体3040内具备两个相互独立的后端切换器3041、3061。本例中,后端切换器3041、3061是pciexpress(pcie)切换器。后端切换器3041包括虚拟切换器3042、3043和ntb(nontransparentbridge)3044构成。后端切换器3061包括虚拟切换器3062、3063和ntb3064构成。

处理器3003经由根端口(rootport)3007和链路(link)3010与虚拟切换器3042连接。此处,链路是pcie的链路,例如作为线缆或配线基板上的配线等实现。处理器3003经由根端口3006和链路3011与虚拟切换器3063连接。

处理器3023经由根端口3027和链路3030与虚拟切换器3062连接。处理器3023经由根端口3026和链路3031与虚拟切换器3043连接。

实施例13的存储系统在驱动器壳体3040内具备存储设备3090~3097。存储设备3090~3097例如是nvme标准的双端口驱动器,分别具备pcie端口(以下简称为端口)3090a~3097a和3090b~3097b。

存储设备3090~3093的端口3090a~3093a与虚拟切换器3043分别通过链路3080a~3083a连接。存储设备3094~3097的端口3094a~3097a与虚拟切换器3042分别通过链路3084a~3087a连接。

存储设备3090~3093的端口3090b~3093b与虚拟切换器3063分别通过链路3080b~3083b连接。存储设备3094~3097的端口3094b~3097b与虚拟切换器3062分别通过链路3084b~3087b连接。

处理器3003经由链路3010、虚拟切换器3042、ntb3044、虚拟切换器3043和链路3031与处理器3023相互可通信地连接。处理器3023经由链路3030、虚拟切换器3062、ntb3064、虚拟切换器3063和链路3011与处理器3003相互可通信地连接。

全部存储设备3090~3097经由后端切换器3041和3061中的某一方也可以与处理器3003或3023连接。处理器3003和3023经由后端切换器3041和3061中的某一方也可以与另一方的处理器连接。

另外,图30示出了八个存储设备3090~3097,但存储设备的数量是任意的。

图31表示后端切换器3041的内部结构例。虚拟切换器3042包括与链路3010连接的上行端口(up11)3111、与链路3084a~3087a连接的下行端口(dp)3164~3167构成。

上行端口(upstreamport)3111与pci-to-pci桥(p2p)3131连接,下行端口(downstreamport)3164~3167与p2p桥3154~3157分别连接。p2p桥3131、3133和3154~3157与内部总线3132连接。

虚拟切换器3043包括与链路3031连接的上行端口(up21)3121、和与链路3080a~3083a连接的下行端口3160~3163构成。上行端口3121与p2p桥3141连接,下行端口3160~3163与p2p桥3150~3153分别连接。p2p桥3141、3143和3150~3153与内部总线3142连接。

ntb3044包括端点(endpoint)(ep11)3134和端点(ep21)3144。端点3134与p2p桥3133连接,设定为能够经由链路3010从处理器3003访问。端点3144与p2p桥3143连接,设定为能够经由链路3031从处理器3023访问。端点3134和3144以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

图32表示后端切换器3061的内部结构例。虚拟切换器3062包括与链路3030连接的上行端口(up22)3222、和与链路3084b~3087b连接的下行端口3264~3267构成。上行端口3222与p2p桥3241连接,下行端口3264~3267与p2p桥3254~3257分别连接。p2p桥3241、3243和3254~3257与内部总线3242连接。

虚拟切换器3063包括与链路3011连接的上行端口3212(up12)、和与链路3080b~3083b连接的下行端口3260~3263构成。上行端口3212与p2p桥3231连接,下行端口3260~3263与p2p桥3250~3253分别连接。p2p桥3231、3233和3250~3253与内部总线3232连接。

ntb3064包括端点(ep12)3234和端点(ep22)3244。端点3234与p2p桥3233连接,设定为能够经由链路3011从处理器3003访问。端点3244与p2p桥3243连接,设定为能够经由链路3030从处理器3023访问。端点3234和3244以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

参考图33~图35,说明ntb3044和3064中的地址转换动作。根据pcie标准,在根端口不同的pcie树之间,除了经由根联合体的情况外,不能进行数据传输。但是,通过由ntb对pcie分组的头适当进行转换,能够在根端口不同的pcie树之间进行经由ntb的数据传输。

在不同的pcie树之间,一般而言,pcie分组发送接收目标的地址空间、和路由id的体系不同。路由id包括请求者id和完成者id,它们都是在pcie树内识别pcie设备的pci功能的信息(设备识别符)。ntb对于在pcie树之间发送接收的pcie分组的头中包括的发送目标地址和路由id,参考路由信息,符合发送目标pcie树的体系地进行转换。

图33中,处理器3003的地址空间3300包括处理器3003的主存储器空间3305、用于访问ntb3044内的端点3134的窗口3303、和用于访问ntb3064内的端点3234的窗口3304。

处理器3023的地址空间3310包括处理器3023的主存储器空间3315、用于访问ntb3064内的端点3244的窗口3313、和用于访问ntb3044内的端点3144的窗口3314。主存储器空间3305包括窗口3301、3302。主存储器空间3315包括窗口3311、3312。

虽然未图示,但存储设备3090~3097被能够从处理器3003访问地映射至地址空间3300的主存储器空间3305、窗口3303、3304以外的空间。处理器3003能够不经由ntb3044、3064地、即不进行地址转换地,访问存储设备3090~3097。

同样地,存储设备3090~3097被能够从处理器3023访问地映射至地址空间3310的主存储器空间3315、窗口3313、3314以外的空间。处理器3023能够不经由ntb3044、3064地、即不进行地址转换地,访问存储设备3090~3097。

ntb3044将端点3134接收到的窗口3303内的pcie分组的发送目标地址转换为窗口3311内的地址,从端点3144发送。另外,ntb3044将端点3144接收到的窗口3314内的pcie分组的发送目标地址转换为窗口3302内的地址,从端点3134发送。

ntb3064将端点3234接收到的窗口3304内的pcie分组的发送目标地址转换为窗口3312内的地址,从端点3244发送。另外,ntb3064将端点3244接收到的窗口3313内的pcie分组的发送目标地址转换为窗口3301内的地址,从端点3234发送。

参考图34,说明经由ntb3044的处理器3003与处理器3023之间的数据传输路线(path1)3401。数据传输路线3401能够双方向地传输存储器3002和存储器3022内的数据,通过根联合体3004、根端口3007、链路3010、上行端口3111、ntb3044、上行端口3121、链路3031、根端口3026、根联合体3024。

数据传输可以由处理器用存储器访问命令执行,也可以用处理器内置的dma(directmemoryaccess)功能执行。处理器3003内置有dma功能3411,处理器3023内置有dma功能3412。

例如,dma功能3411通过将从存储器3002读取的数据对端点3134发送,而将数据对存储器3022传输。dma功能3412通过将从存储器3022读取的数据对端点3144发送,而将数据对存储器3002传输。dma功能3411、3412也可以不内置处理器中,而是改为分别内置在后端切换器3041、3061中。

参考图35说明经由ntb3064的处理器3023与处理器3003之间的数据传输路线(path2)3502。数据传输路线3502能够双方向地传输存储器3022和存储器3002内的数据,通过根联合体3024、根端口3027、链路3030、上行端口3122、ntb3064、上行端口3112、链路3011、根端口3006、根联合体3004。

数据传输可以由处理器用存储器访问命令执行,也可以用处理器内置的dma功能执行。例如,dma功能3411通过将从存储器3002读取的数据对端点3344发送,而将数据对存储器3022传输。dma功能3412通过将从存储器3022读取的数据对端点3334发送,而将数据对存储器3002传输。

通过以上所述,处理器3003和3023通过使用包括ntb3044的数据传输路线3401或者包括ntb3064的数据传输路线3502,能够对各存储器3002、3022双方向地传输数据。

实施例13的存储系统在正常工作时,使用数据传输路线3401和数据传输路线3502双方。一般而言,处理器包括多个处理器核心构成,可以以约半数的核心使用数据传输路线3401、另外约半数的核心使用数据传输路线3502的方式,预先分配各处理器核心使用的数据传输路线。

参考图36~37,说明实施例13的存储系统中包括的pcie树、和为了控制存储设备而在存储器内配置的队列。图36作为例子示出了将根端口3007作为根的pcie树。处理器3003经由根端口3007与虚拟切换器3042的上行端口3111连接。

虚拟切换器3042的下行端口3164~3167与存储设备3094~3097的端口3094a~3097a连接。该从根端口3007到端口3094a~3097a的树状的拓扑结构是pcie树。

在实施例13中的存储系统中,存储设备3094~3097例如是nvme标准的固态驱动器(solidstatedrive)。nvme标准中,为了控制存储设备,对于每个存储设备在处理器的主存储器内配置一个以上提交队列和一个以上完成队列。

如图36所示,用于控制存储设备3094的提交队列(sq)3604和完成队列(cq)3614配置在存储器3002内。同样地,用于控制存储设备3095~3097的提交队列(sq)3605~3607和完成队列(cq)3615~3617分别配置在存储器3002内。

作为例子,说明处理器3003对于存储设备3097使其执行nvme命令的情况的流程。处理器3003对提交队列3607追加包括nvme命令的条目(entry)。然后,处理器3003对存储设备3097通知提交队列中存在新追加的条目。

接受了通知的存储设备3097从提交队列3607读取该条目,执行其内容。然后,执行完成后,存储设备3097将包括完成通知的条目、即完成写入完成队列3617中。最后,处理器3002读取该完成并确认完成通知的内容。

如图30所示,实施例13的存储系统包括四个根端口3007、3006、3026、3027,所以构成四个pcie树。

图37表示这四个pcie树中包括的、存储设备的端口3701、存储设备3702、端口组3703、虚拟切换器3704、根端口3705、控制存储设备的处理器3706、保存用于控制存储设备的队列的存储器3707的关系。端口组是与同一虚拟切换器的下行端口连接的、存储设备的端口的集合。存储控制部3001、3021将图37所示的信息例如保持在存储器3002、3022内。

与虚拟切换器3042的下行端口连接的存储设备3094~3097的端口3094a~3097a属于端口组gr11。然后,处理器3003经由根端口3007访问属于端口组gr11的端口3094a~3097a,用存储器3002内配置的队列控制存储设备3094~3097。

与虚拟切换器3063的下行端口连接的存储设备3090~3093的端口3090b~3093b属于端口组gr12。然后,处理器3003经由根端口3006访问属于端口组gr12的端口3090b~3093b,用存储器3002内配置的队列控制存储设备3090~3093。

与虚拟切换器3043的下行端口连接的存储设备3090~3093的端口3090a~3093a属于端口组gr21。然后,处理器3023经由根端口3026访问属于端口组gr21的端口3090a~3093a,用存储器3022内配置的队列控制存储设备3090~3093。

与虚拟切换器3062的下行端口连接的存储设备3094~3097的端口3094b~3097b属于端口组gr22。然后,处理器3023经由根端口3027访问属于端口组gr22的端口3094b~3097b,用存储器3022内配置的队列控制存储设备3094~3097。

参考图38说明实施例13的存储系统中的后端切换器故障的影响范围。作为例子,设想后端切换器3061中发生故障,后端切换器3061内的虚拟切换器3062、3063和ntb3064不能工作的情况。

该情况下,与虚拟切换器3062、3063的下行端口连接的存储设备3090~3097的端口3090b~3097b不能从处理器3003和3023访问。进而,也不能进行使用图35的数据传输路线3502的处理器间数据传输。

但是,存储设备3090~3093的端口3090a~3093a能够由处理器3023经由链路3031和虚拟切换器3043访问。另外,存储设备3094~3097的端口3094a~3097a能够由处理器3003经由链路3010和虚拟切换器3042访问。进而,能够进行使用图34的数据传输路线3401的处理器间数据传输。从而,在后端切换器3061中发生了故障的情况下,实施例13的存储系统也能够继续工作。

这样,实施例13的存储系统中,即使后端切换器3041和3061的一方停止工作,或者即使到后端切换器3041和3061的链路3010、3011、3030、3031中的某一方被切断,也能够使处理器3003、3023之间的通信、和处理器3003和3023与存储设备3090~3097之间的通信全部继续。由此能够提高系统的可用性。

参考图39说明实施例13的存储系统中的存储控制部故障的影响范围。首先,说明虚拟切换器的功能。属于同一后端切换器的多个虚拟切换器能够个别地复位。例如,在后端切换器3061中,链路3030关闭的情况下,虚拟切换器3062成为复位状态,但虚拟切换器3063不受其影响。

虚拟切换器3063能够与虚拟切换器3062的状态无关地继续工作。链路3011链路关闭(linkdown,链路断开)的情况下,虚拟切换器3063成为复位状态,但虚拟切换器3062不受其影响。虚拟切换器3062能够与虚拟切换器3063的状态无关地继续工作。

作为例子,设想存储控制部3021内的处理器3023中发生故障,后端切换器3061内的虚拟切换器3062和后端切换器3041内的虚拟切换器3043不能工作的情况。

该情况下,与虚拟切换器3043的下行端口连接的存储设备3090~3093的端口3090a~3093a、和与虚拟切换器3062的下行端口连接的存储设备3094~3097的端口3094b~3097b不能从处理器3023访问。

进而,也不能进行使用图34的数据传输路线3401和图35的数据传输路线3502的处理器间数据传输。但是,存储设备3090~3093的端口3090b~3093b能够由处理器3003经由链路3011和虚拟切换器3063访问。

存储设备3094~3097的端口3094a~3097a能够由处理器3003经由链路3010和虚拟切换器3042访问。这样,实施例13的存储系统在存储控制部的一方中发生了故障的情况下,也能够访问全部的存储设备。

用图40~43说明实施例13的存储系统中的、后端切换器故障时的存储设备读取方法、和后端切换器的维护或交换方法。

维护例如包括后端切换器的固件的更新作业,在该作业中,后端切换器暂时性地不通。交换例如包括因为后端切换器的故障而将切换器交换。任一情况下,通过作为对象的后端切换器的路线都不能作为数据传输路线使用,所以为了访问存储设备而需要使用代替路线。

首先,说明两个后端切换器的一方不通时,存储控制部从上级装置接收了对存储设备的写入请求的情况。例如,存储控制部3001的上级if3008接收了写入请求的情况下,将该写入请求中附带的写入数据保存在存储器3002中。进而,存储器3002中保存的写入数据经由数据传输路线3401或3502对存储控制部3021的存储器3022传输。

这样,实施例13的存储系统将接收到的写入数据二重化地保持在两个存储控制部内的存储器中。能够从两个存储控制部经由两个后端切换器中的某一方访问存储系统内的存储设备。从而,在两个后端切换器的一方不通的情况下,实施例13的存储系统也能够将从上级装置接收到的数据写入存储设备中。

接着,说明两个后端切换器的一方不通时,存储控制部从上级装置接收了从存储设备读取的请求的情况。如参考图36、37所说明的那样,实施例13的存储系统中,对于每个pcie树决定了能够访问的存储设备的端口组。即,后端切换器的一方不通时,会出现不能从一方的存储控制部访问的存储设备。

例如,假设存储控制部3021的上级if3028从上级装置接收了存储设备3097中保存的数据的读取请求。此时,后端切换器3061不通时,存储控制部3021不能从存储设备3097读取要求的数据。该情况下,存储控制部3021需要委托能够访问保存了读取数据的存储设备3097的存储控制部3001从存储设备3097读取数据。

参考图40,说明作为交换或维护的对象的(不通的)后端切换器维护或交换作业中使用的代替路线、和作为访问目标的存储设备的端口等的关系。具体而言,图40表示维护或交换对象切换器4001、接收了请求的存储控制部4002、访问目标端口组4003、代替处理存储控制部4004、代替访问目标端口组4005、和能够使用的存储控制部间数据传输路线4006的关系。存储控制部3001、3021将图40所示的信息例如保持在存储器3002、3022中。

首先,叙述维护或交换对象切换器(4001)是后端切换器3041、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3001、进而读取目标存储设备的端口组(4003)是gr11的情况。

该情况下,存储控制部3001使用能够在存储控制部之间使用的数据传输路线(4006)即数据传输路线3502,委托存储控制部3021从存储设备读取数据。接受了委托的存储控制部3021访问属于端口组gr22的存储设备的端口,读取要求的数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3041、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3001、进而读取目标存储设备的端口组(4003)是gr12的情况。该情况下,存储控制部3001能够直接访问属于端口组gr12的存储设备端口,所以不需要委托存储控制部3021读取数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3041、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3021、进而读取目标存储设备的端口组(4003)是gr21的情况。

该情况下,存储控制部3021使用能够在存储控制部之间使用的数据传输路线(4006)即数据传输路线3502,委托存储控制部3001从存储设备读取数据。接受了委托的存储控制部3001访问属于端口组gr12的存储设备的端口,读取要求的数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3041、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3021、进而读取目标存储设备的端口组(4003)是gr22的情况。该情况下,存储控制部3021能够直接访问属于端口组gr22的存储设备端口,所以不需要委托存储控制部3001读取数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3061、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3001、进而读取目标存储设备的端口组(4003)是gr11的情况。该情况下,存储控制部3001能够直接访问属于端口组gr11的存储设备端口,所以不需要委托存储控制部3021读取数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3061、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3001、进而读取目标存储设备的端口组(4003)是gr12的情况。

该情况下,存储控制部3001使用能够在存储控制部之间使用的数据传输路线(4006)即数据传输路线3401,委托存储控制部3021从存储设备读取数据。接受了委托的存储控制部3021访问属于端口组gr21的存储设备的端口,读取要求的数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3061、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3021、进而读取目标存储设备的端口组(4003)是gr21的情况。该情况下,存储控制部3021能够直接访问属于端口组gr21的存储设备端口,所以不需要委托存储控制部3001读取数据。

接着,叙述维护或交换对象切换器(4001)是后端切换器3061、接收了来自上级装置的读取请求的存储控制部(4002)是存储控制部3021、进而读取目标存储设备的端口组(4003)是gr22的情况。

该情况下,存储控制部3021使用能够在存储控制部之间使用的数据传输路线(4006)即数据传输路线3401,委托存储控制部3001从存储设备读取数据。接受了委托的存储控制部3001访问属于端口组gr11的存储设备的端口,读取要求的数据。

如以上所说明,在后端切换器的一方不能工作而不通的情况下,从上级装置接收了读取请求的存储控制部按照图40所示的信息,判定是否需要委托另一方的存储控制部代替读取和读取目标端口组、能够使用的存储控制部间数据传输路线。

参考图41,说明后端切换器故障时的从存储设备向上级装置的数据读取路线的一例。图41中,仅有一方的后端切换器3041能够工作,后端切换器3061(未图示)不能工作。存储控制部3021的上级if3028从上级装置(未图示)接收存储设备3097内的数据读取请求。

存储控制部3021因为后端切换器3061不通所以不能访问存储设备3097,因此通过使用数据传输路线3401进行规定的命令和消息的发送,而委托存储控制部3001从存储设备3097读取。该消息包括读取目标存储设备信息、读取目标数据的存储设备内地址信息、读取数据的传输目标即存储器3022内缓冲器(buf2)4102的地址信息。

存储控制部3001在存储器3002内具备用于控制存储设备3097的提交队列3607和完成队列3617。存储控制部3001使用通过处理器3003的根端口3007、链路3010、虚拟切换器3042、链路3087a的数据传输路线(path3)4103,进行存储设备3097与存储器3002之间的数据传输。

存储控制部3001将从存储设备3097读取的数据保存在存储器3002内的缓冲器4101中。存储控制部3001使用数据传输路线3401将读取的缓冲器4101内的数据对缓冲器4102传输。

参考图42,说明后端切换器故障时的从存储设备读取的流程图。在步骤4201中,存储控制部3021对于存储控制部3001,经由数据传输路线3401,委托从存储设备3907读取数据。

在步骤4202中,接受了上述委托的存储控制部3001执行经由数据传输路线4103从存储设备3907的数据读取。具体而言,处理器3003对提交队列3607追加包括从存储设备3097读取的命令的条目。读取数据的传输目标设为存储器3002内的缓冲器4101。

从提交队列3607取得了读取命令的存储设备3097,经由数据传输路线4103将请求的数据对缓冲器4101发送。对缓冲器4101的数据传输完成之后,存储设备3097对完成队列3617追加完成。

在步骤4203中,确认了上述完成的存储控制部3001将存储器3002的缓冲器4101内的读取数据经由数据传输路线3401对存储器3022的缓冲器4102传输。然后,存储控制部3001对存储控制部3021通知传输完成。在步骤4204中,存储控制部3021将已对存储器3022内的缓冲器4102传输的读取数据对上级装置发送。

参考图43,说明实施例13的存储系统的后端切换器维护或交换的流程图。存储控制部3001、3021在以下说明的流程中保持由维护人员设定的信息,按照该信息执行i/o处理。

在步骤4301中,存储系统的维护人员使实施例13的存储系统中的、图40中说明的代替路线设定有效化。在该步骤执行之后,实施例13的存储系统不使用维护或交换对象的后端切换器地、进行对存储设备的读取或写入。

在步骤4302中,维护人员使关于维护或交换对象的后端切换器与存储控制部之间的链路的错误通知无效化。这是因为随着后端切换器的交换作业等而发生链路关闭,但要避免伴随检测出链路关闭而进行的故障处理的自动启动。对于已在执行中的伴随链路关闭的故障处理,该步骤不起作用。

在步骤4303中,维护人员使维护或交换对象的后端切换器与存储控制部之间的链路关闭。在步骤4304中,维护人员执行后端切换器的维护或交换作业。

在步骤4305中,维护人员使关于维护或交换对象的后端切换器与存储控制部之间的链路的错误通知有效化。再次开启链路之后发生链路关闭时,伴随检测出链路关闭的故障处理起动。

在步骤4306中,维护人员使维护或交换对象的后端切换器与存储控制部之间的链路开启(linkup)。

在步骤4307中,维护人员使图40中说明的代替路线设定无效化。在该步骤执行之后,实施例13的存储系统再次开始经由维护或交换对象的后端切换器的、对存储设备的读取或写入。

如以上所说明,实施例13的存储系统能够使包括从存储设备读取的作为存储系统的动作继续,同时实施对后端切换器的维护或交换作业。

对实施例13的存储系统的特征进行总结,如下所述。实施例13的存储系统包括两个存储控制部3001、3021、和能够收纳分别具备两个pcie端口的存储设备3090~3097的驱动器壳体3040。

两个存储控制部3001、3021与驱动器壳体3040用链路3010、3011、3030、3031连接。驱动器壳体3040具备将虚拟切换器3042与3043用ntb3044连接的后端切换器3041、和将虚拟切换器3062与3063用ntb3064连接的后端切换器3061。

后端切换器3041、3061分别包括将一方与存储控制部3001连接、将另一方与存储控制部3021连接的两个上行端口(3111和3121,或3222和3212)。

进而,存储设备3090~3097与两个后端切换器的下行端口(3160~3167或3260~3267),以能够从两个存储控制部3001、3021不经由ntb3044和3064地进行访问的方式连接。

根据具备以上特征的实施例13的存储系统,存储控制部之间的数据传输路线、和存储控制部与存储设备之间的数据传输路线被二重化,所以能够实现可用性高的存储系统。

(实施例14)

用图44~45说明实施例14。实施例14的存储系统与实施例13的存储系统相比,后端切换器故障时的从存储设备读取数据的方法不同。

参考图44,说明后端切换器故障时的从存储设备向上级装置的数据读取路线的一例。图44中,仅有一方的后端切换器3041能够工作,后端切换器3061(未图示)不能工作。本例中,存储控制部3021的上级if3028从上级装置(未图示)接收存储设备3097内的数据读取请求。

存储控制部3021因为后端切换器3061不通而不能访问存储设备3097。存储控制部3021通过使用数据传输路线3401进行规定的命令和消息的发送,而委托存储控制部3001从存储设备3097读取。该消息包括读取目标存储设备信息、读取目标数据的存储设备内地址信息、读取数据的传输目标即存储器3022内缓冲器4102的地址信息。

存储控制部3001在存储器3002内具备用于控制存储设备3097的提交队列3607和完成队列3617。进而,存储控制部3001在存储器3002内具备用于控制存储设备3097的提交队列4407和完成队列4417。提交队列4407和完成队列4417是为了由存储控制部3021委托的代替处理而使用的队列。

存储控制部3001使用数据传输路线4103进行存储设备3097与存储器3002之间的数据传输。存储设备3097将作为执行提交队列4407内条目中包括的命令的结果读取的数据,保存在存储器3022内的缓冲器4102中。数据使用通过链路3087a、虚拟切换器3042、ntb3044、虚拟切换器3043、链路3031、处理器3023内根端口3026的数据传输路线(path4)4404传输。

参考图45,说明后端切换器故障时的从存储设备的读取的流程图。在步骤4501中,存储控制部3021对于存储控制部3001,经由数据传输路线3401委托从存储设备3907读取数据。

在步骤4502中,接受了上述委托的存储控制部3001执行经由数据传输路线4103从存储设备3907的数据读取。具体而言,处理器3003对提交队列4407追加包括从存储设备3097读取的命令的条目。读取数据的传输目标设为存储器3022内的缓冲器4102。

从提交队列4407取得了读取命令的存储设备3097,经由数据传输路线4404将请求的数据对缓冲器4102发送。对缓冲器4102的数据传输完成之后,存储设备3097对完成队列4417追加完成。另外,处理器3023也可以经由数据传输路线3401,对提交队列4407直接追加包括从存储设备3097读取的命令的条目。

在步骤4503中,确认了上述完成的存储控制部3001对存储控制部3021通知读取数据的传输完成。在步骤4504中,存储控制部3021将已对存储器3022内的缓冲器4102传输的读取数据对上级装置发送。

根据实施例14的存储系统,在后端切换器故障时的从存储设备的读取处理中,在存储控制部3001与存储控制部3021之间,不需要传输读取数据。结果,能够节省存储控制部之间的读取数据传输耗费的时间,并且能够节约与存储控制部之间的数据传输相关的存储器使用量、存储器带宽。

(实施例15)

用图46说明实施例15。图46是实施例15的存储系统的结构的一例。实施例15的存储系统中,经由存储器控制部内具备的pcie切换器进行存储控制部内处理器与驱动器壳体的连接这一点,与实施例13的存储系统不同。

图46中,存储系统具备两个存储控制部4601、4621和驱动器壳体3040。存储控制部4601具备将上行端口(up)4632与处理器3003的根端口3007连接的pcie切换器4631。

pcie切换器4631的下行端口(dp11)4633经由链路3010与驱动器壳体3040内虚拟切换器3042连接。pcie切换器4631的下行端口(dp12)4634经由链路3011与驱动器壳体3040内虚拟切换器3063连接。

存储控制部4621具备将上行端口4642与处理器3023的根端口3027连接的pcie切换器4641。pcie切换器4641的下行端口(dp22)4643经由链路3030与驱动器壳体3040内虚拟切换器3062连接。pcie切换器4641的下行端口(dp21)4644经由链路3031与驱动器壳体3040内虚拟切换器3043连接。

实施例15的存储系统的其他结构和作为存储系统的动作,与实施例13的存储系统是同样的,所以省略说明。

根据实施例15的存储系统,存储控制部内的处理器中不具备充分数量的根端口或通道(lane)、为了与驱动器壳体的连接用而分配的根端口或通道不足的情况下,也能够提供与实施例13~14的存储系统同样可用性高的存储系统。

(实施例16)

用图47~50说明实施例16。图47表示实施例16的存储系统的结构例。实施例16的存储系统中,后端切换器的结构与实施例13的存储系统不同。

图47中,实施例16的存储系统具备两个存储控制部3001、3021和驱动器壳体4740。驱动器壳体4740代替图30的后端切换器3041、3061地,具备后端切换器4741和4761。实施例16的存储系统的其他结构和作为存储系统的动作与实施例13的存储系统是同样的。

图48表示后端切换器4741的内部结构例。虚拟切换器4742包括与链路3010连接的上行端口4811、与链路3084a~3087a连接的下行端口4864~4867构成。上行端口4811与p2p桥4831连接,下行端口4864~4867与p2p桥4854~4857分别连接。p2p桥4831、4833和4854~4857与内部总线4832连接。

ntb4701包括两个端点4834、4835。端点4834与p2p桥4833连接,设定为能够经由链路3010从处理器3003访问。端点4835与上行端口4803连接,设定为能够经由链路4703、虚拟切换器4743、链路3031从处理器3023访问。端点4834、4835以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

虚拟切换器4743包括与链路3031连接的上行端口4821、和与链路3080a~3083a连接的下行端口4860~4863构成。上行端口4821与p2p桥4841连接,下行端口4860~4863与p2p桥4850~4853分别连接。p2p桥4841、4843和4850~4853与内部总线4842连接。

ntb4702包括两个端点4844、4845。端点4844与p2p桥4843连接,设定为能够经由链路3031从处理器3023访问。端点4845与上行端口4813连接,设定为能够经由链路4703、虚拟切换器4742、链路3010从处理器3003访问。端点4844、4845以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

图49表示后端切换器4761的内部结构例。虚拟切换器4762包括与链路3030连接的上行端口4922、和与链路3084b~3087b连接的下行端口4964~4967构成。上行端口4922与p2p桥4941连接,下行端口4964~4967与p2p桥4954~4957分别连接。p2p桥4941、4943和4954~4957与内部总线4942连接。

ntb4711包括两个端点4944和4945。端点4944与p2p桥4943连接,设定为能够经由链路3030从处理器3023访问。端点4945与上行端口4913连接,设定为能够经由链路4713、虚拟切换器4763、链路3011从处理器3003访问。端点4944和4945以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

虚拟切换器4763包括与链路3011连接的上行端口4912、和与链路3080b~3083b连接的下行端口4960~4963构成。上行端口4912与p2p桥4931连接,下行端口4960~4963与p2p桥4950~4953分别连接。p2p桥4931、4933和4950~4953与内部总线4932连接。

ntb4712包括两个端点4934和4935。端点4934与p2p桥4933连接,设定为能够经由链路3011从处理器3003访问。端点4935与上行端口4903连接,设定为能够经由链路4713、虚拟切换器4762、链路3030从处理器3023访问。端点4934和4935以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

用图50说明ntb4701、4702或ntb4711、4712中的地址转换动作。图50中,处理器3003的地址空间3300包括处理器3003的主存储器空间3305、和用于访问ntb4701内端点4834的窗口5003、和用于访问ntb4712内端点4934的窗口5004。

处理器3023的地址空间3310包括处理器3023的主存储器空间3315、和用于访问ntb4711内端点4944的窗口5013、和用于访问ntb4702内端点4844的窗口5014。主存储器空间3305包括窗口5001、5002。主存储器空间3315包括窗口5011、5012。

虽然未图示,但存储设备3090~3097被能够从处理器3003访问地映射至地址空间3300的主存储器空间3305、窗口5003、5004以外的空间。处理器3003能够不经由ntb4701、4712地、即不进行地址转换地,访问存储设备3090~3097。

同样地,存储设备3090~3097被能够从处理器3023访问地映射至地址空间3310的主存储器空间3315、窗口5013、5014以外的空间。处理器3023能够不经由ntb4711、4702地、即不进行地址转换地,访问存储设备3090~3097。

地址空间5000是pcie分组通过链路4703或4713时使用的地址空间,包括窗口5021、5022。对于存储控制部3001对存储控制部3021内存储器3022传输数据的情况的ntb4701、4702中的地址转换动作进行说明。ntb4701、4702分别是地址转换功能部,并且其组合也是地址转换功能部。

ntb4701将端点4834接收到的窗口5003内的pcie分组的发送目标地址转换为窗口5021内的地址,从端点4835发送。ntb4702将端点4845经由链路4703接收到的窗口5021内的pcie分组的发送目标地址转换为窗口5011内的地址,从端点4844发送。

对于存储控制部3001对存储控制部3021内存储器3022传输数据的情况的ntb4712、4711中的地址转换动作进行说明。ntb4711、4712分别是地址转换功能部,并且其组合也是地址转换功能部。ntb4712将端点4934接收到的窗口5004内的pcie分组的发送目标地址转换为窗口5022内的地址,从端点4935发送。ntb4711将端点4945经由链路4713接收到的窗口5022内的pcie分组的发送目标地址转换为窗口5012内的地址,从端点4944发送。

对于存储控制部3021对存储控制部3001内存储器3002传输数据的情况的ntb4711、4712中的地址转换动作进行说明。ntb4711将端点4944接收到的窗口5013内的pcie分组的发送目标地址转换为窗口5021内的地址,从端点4945发送。ntb4712将端点4935经由链路4713接收到的窗口5021内的pcie分组的发送目标地址转换为窗口5001内的地址,从端点4934发送。

对于存储控制部3021对存储控制部3001内存储器3002传输数据的情况的ntb4702、4701中的地址转换动作进行说明。ntb4702将端点4844接收到的窗口5014内的pcie分组的发送目标地址转换为窗口5022内的地址,从端点4845发送。ntb4701将端点4835经由链路4703接收到的窗口5022内的pcie分组的发送目标地址转换为窗口5002内的地址,从端点4834发送。

对于后端切换器4741、4761和虚拟切换器4742、4743、4762、4763的一部分或全部,例如可以通过在集成电路中设计而用硬件实现。该情况下,链路4703、4713可以是将集成电路之间连接的物理连接(配线),也可以是集成电路内的物理或逻辑的连接。

对实施例16的存储系统的特征进行总结,如下所述。实施例16的存储系统包括两个存储控制部3001、3021、和能够收纳分别具备两个pcie端口的存储设备3090~3097的驱动器壳体4740。两个存储控制部3001、3021与驱动器壳体4740用链路3010、3011、3030、3031连接。

驱动器壳体4740具备将虚拟切换器4742与4743用ntb4701、4702和链路4703连接的后端切换器4741,和将虚拟切换器4762与4763用ntb4711、4712和链路4713连接的后端切换器4761。后端切换器4741与4761中,各自的两个上行端口的一方与存储控制部3001连接,另一方与存储控制部3021连接。

进而,存储设备3090~3097与两个后端切换器(4741、4761)的下行端口4860~4867、4960~4967以能够从两个存储控制部3001、3021不经由ntb4701、4702和ntb4711、4712地访问的方式连接。

取决于ntb的实现,存在不能将构成ntb的两个端点配置为分别属于不同的虚拟切换器的情况。即,不能如图31~32所示的实施例13的存储系统的后端切换器3041、3061所示地,以跨两个虚拟切换器的方式配置ntb。

代替地,实施例16的存储系统对于每个虚拟切换器具备个别的ntb。并且,通过将各虚拟切换器内配置的ntb用链路连接,能够实现与实施例13的存储系统的后端切换器同等的功能。根据实施例16的存储系统,在将不能跨虚拟切换器之间地配置ntb的pcie切换器应用于后端切换器的情况下,也能够实现与实施例13~15的存储系统同样高可用性的存储系统。

(实施例17)

用图51~图53说明实施例17。图51表示实施例17的存储系统的结构例。实施例17的存储系统中,后端切换器的结构与实施例16的存储系统不同。

图51中,实施例17的存储系统具备两个存储控制部3001、3021和驱动器壳体5140。驱动器壳体5140代替图47的后端切换器4741、4761地,具备pcie切换器5101、5102、5111、5112。实施例17的存储系统的其他结构和作为存储系统的动作与实施例16的存储系统是同样的。

图52表示pcie切换器5101、5102的内部结构例。pcie切换器5101包括与链路3010连接的上行端口5211、和与链路3084a~3087a连接的下行端口5264~5267构成。上行端口5211与p2p桥5231连接,下行端口5264~5267与p2p桥5254~5257分别连接。p2p桥5231、5233和5254~5257与内部总线5232连接。

ntb5103包括两个端点5234、5235。端点5234与p2p桥5233连接,设定为能够经由链路3010从处理器3003访问。端点5235与上行端口5203连接,设定为能够经由链路5105、pcie切换器5102、链路3031从处理器3023访问。端点5234和端点5235以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

pcie切换器5102包括与链路3031连接的上行端口5221、和与链路3080a~3083a连接的下行端口5260~5263构成。上行端口5221与p2p桥5241连接,下行端口5260~5263与p2p桥5250~5253分别连接。p2p桥5241、5243和5250~5253与内部总线5242连接。

ntb5104包括两个端点5244、5245。端点5244与p2p桥5243连接,设定为能够经由链路3031从处理器3023访问。端点5245与上行端口5213连接,设定为能够经由链路5105、pcie切换器5101、链路3010从处理器3003访问。端点5244和5245以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

图53表示pcie切换器5111、5112的内部结构例。pcie切换器5111包括与链路3030连接的上行端口5322、和与链路3084b~3087b连接的下行端口5364~5367构成。上行端口5322与p2p桥5341连接,下行端口5364~5367与p2p桥5354~5357分别连接。p2p桥5341、5343和5354~5357与内部总线5342连接。

ntb5113包括两个端点5344、5345。端点5344与p2p桥5343连接,设定为能够经由链路3030从处理器3023访问。端点5345与上行端口5313连接,设定为能够经由链路5115、pcie切换器5112、链路3011从处理器3003访问。端点5344和5345以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

pcie切换器5112包括与链路3011连接的上行端口5312、和与链路3080b~3083b连接的下行端口5360~5363构成。上行端口5312与p2p桥5331连接,下行端口5360~5363与p2p桥5350~5353分别连接。p2p桥5331、5333和5350~5353与内部总线5332连接。

ntb5114包括两个端点5334、5335。端点5334与p2p桥5333连接,设定为能够经由链路3011从处理器3003访问。端点5335与上行端口5303连接,设定为能够经由链路5115、pcie切换器5111、链路3030从处理器3023访问。端点5334和5335以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

对实施例17的存储系统的特征进行总结,如下所述。实施例17的存储系统包括两个存储控制部3001、3021、和能够收纳分别具备两个pcie端口的存储设备3090~3097的驱动器壳体5140。两个存储控制部3001、3021与驱动器壳体5140用链路3010、3011、3030、3031连接。

驱动器壳体5140具备pcie切换器5101、5102、5111、5112。pcie切换器5101、5102用ntb5103、5104和链路5105连接。ntb5103、5104分别是地址转换功能部,并且其组合也是地址转换功能部。

pcie切换器5111、5112用ntb5113、5114和链路5115连接。pcie切换器5101、5102中,各自的上行端口的一方与存储控制部3001连接,另一方与存储控制部3021连接。ntb5113、5114分别是地址转换功能部,并且其组合也是地址转换功能部。

pcie切换器5101和5102、或者5111和5112中,各自的上行端口的一方与存储控制部3001连接,另一方与存储控制部3021连接。进而,存储设备3090~3097与四个pcie切换器的下行端口中的任意一个以能够从两个存储控制部3001、3021不经由ntb5101、5102和ntb5111、5112地访问的方式连接。

根据实施例17的存储系统,在将不具备虚拟切换器功能的pcie切换器应用于后端切换器的情况下,也能够实现与实施例13~16的存储系统同样高可用性的存储系统。

(实施例18)

用图54~56说明实施例18。图54表示实施例18的存储系统的结构例。实施例18的存储系统中,后端切换器5441、5461的结构、和存储控制部5401、5421与驱动器壳体5440之间的连接、和后端切换器5441、5461与存储设备3090~3099之间的连接与实施例13~17的存储系统不同。另外,图54示出了十个存储设备3090~3099,但存储设备的数量是任意的。

图55表示后端切换器5441的内部结构例。虚拟切换器5442包括与链路3010连接的上行端口5511、和与链路3083a~3085a连接的下行端口5563~5565构成。上行端口5511与p2p桥5531连接,下行端口5563~5565与p2p桥5553~5555分别连接。p2p桥5531、5533和5553~5555与内部总线5532连接。

虚拟切换器5443包括与链路3031连接的上行端口5521、和与链路3080a~3082a连接的下行端口5560~5562构成。上行端口5521与p2p桥5541连接,下行端口5560~5562与p2p桥5550~5552分别连接。p2p桥5541、5543和5550~5552与内部总线5542连接。

ntb5444包括两个端点5534、5544。端点5534与p2p桥5533连接,设定为能够经由链路3010从处理器3003访问。端点5544与p2p桥5543连接,设定为能够经由链路3031从处理器3023访问。端点5534和5544以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

虚拟切换器5451包括经由链路5410与处理器3003的根端口5413连接的上行端口5571、和与链路3086a~3089a连接的下行端口5566~5569构成。上行端口5571与p2p桥5581连接,下行端口5566~5569与p2p桥5556~5559分别连接。p2p桥5581和5556~5559与内部总线5591连接。

图56表示后端切换器5461的内部结构例。虚拟切换器5462包括与链路3030连接的上行端口5622、和与链路3083b~3085b连接的下行端口5663~5665构成。上行端口5622与p2p桥5641连接,下行端口5663~5665与p2p桥5653~5655分别连接。p2p桥5641、5643和5653~5655与内部总线5642连接。

虚拟切换器5463包括与链路3011连接的上行端口5612、和与链路3080b~3082b连接的下行端口5660~5662构成。上行端口5612与p2p桥5631连接,下行端口5660~5662与p2p桥5650~5652分别连接。p2p桥5631、5633和5650~5652与内部总线5632连接。

ntb5464包括两个端点5634、5644。端点5634与p2p桥5633连接,设定为能够经由链路3011从处理器3003访问。端点5644与p2p桥5643连接,设定为能够经由链路3030从处理器3023访问。端点5634、5644以发送目标在规定的地址范围内的pcie分组能够在双方向上通过的方式设定、连接。

虚拟切换器5431包括经由链路5411与处理器3023的根端口5423连接的上行端口5671、和与链路3086b~3089b连接的下行端口5666~5669构成。上行端口5671与p2p桥5681连接,下行端口5666~5669与p2p桥5656~5659分别连接。p2p桥5681和5656~5659与内部总线5691连接。

对实施例18的存储系统的特征进行总结,如下所述。实施例18的存储系统包括两个存储控制部5401、5421、和能够收纳分别具备两个pcie端口的存储设备3090~3099的驱动器壳体5440。

两个存储控制部5401、5421与驱动器壳体5440用链路3010、3011、3030、3031、5410、5411连接。驱动器壳体5440具备将虚拟切换器5442、5443用ntb5444连接的后端切换器5441、和将虚拟切换器5462、5463用ntb5464连接的后端切换器5461。

后端切换器5441、5461将各自的两个上行端口的一方与存储控制部5401连接,将另一方与存储控制部5421连接。进而,后端切换器5441具备将上行端口与存储控制部5401连接的虚拟切换器5451。

另外,后端切换器5461具备将上行端口与存储控制部5421连接的虚拟切换器5431。进而,存储设备3090~3099与两个后端切换器的下行端口以能够从两个存储控制部5401、5421不经由ntb5444和5464地访问的方式连接。

实施例13~17的存储系统中,存储控制部与存储设备之间的数据传输和两个存储控制部之间的数据传输共享存储控制部与后端切换器之间的链路的带宽。在同时进行对大量的存储设备的访问的情况下,存在这些链路的带宽成为性能瓶颈部位的风险。

实施例18的存储系统在后端切换器内具备与存储控制部间数据传输路线独立的虚拟切换器。通过用该虚拟切换器将存储控制部与存储设备连接,实施例18的存储系统能够连接更多的存储设备,并且能够减少上述共享的链路带宽。

(实施例19)

用图57~59说明实施例19的存储系统。实施例19的存储系统的结构与实施例13的存储系统是同样的。

属于同一pcie树、换言之属于同一端口组(参考图37)的存储设备的读写共享存储控制部与后端切换器之间的链路带宽。在访问集中在属于同一端口组的多个存储驱动器的端口的情况下,存在存储系统的性能成为存储控制部与后端切换器的链路的带宽瓶颈的情况。

实施例19的存储系统使用存储控制部与后端切换器之间的多个链路进行对属于一个端口组的多个存储设备的端口的读写。即,在多个链路之间进行负荷分散。存储控制部监视该存储控制部与各后端切换器的链路的使用带宽。存储控制部例如对各链路的使用带宽值与规定值进行比较,能够判定各链路的带宽不足。不同的存储控制部也可以共享链路的使用带宽的信息。

用图57说明实施例19的存储系统中的、不进行负荷分散的情况的、对于从存储设备读取的数据传输路线的一例。以下对于从存储设备读取进行说明,但对于写入也是同样的。

存储控制部3001在存储器3002内具备用于控制存储设备3097的提交队列3607和完成队列3617。存储控制部3001使用数据传输路线4103进行存储设备3097与存储器3002之间的数据传输。数据传输路线4103通过处理器3003的根端口3007、链路3010、虚拟切换器3042、链路3087a到达存储设备3097的端口3097a。另外,存储控制部3001将从存储设备3097读取的数据保存在存储器3002内的缓冲器4101中。

存储控制部3001在存储器3002内具备用于控制存储设备3096的提交队列3606和完成队列3616。存储控制部3001使用数据传输路线5705进行存储设备3096与存储器3002之间的数据传输。数据传输路线5705通过处理器3003的根端口3007、链路3010、虚拟切换器3042、链路3086a到达存储设备3096的端口3096a。另外,存储控制部3001将从存储设备3096读取的数据保存在存储器3002内的缓冲器5703中。

从属于端口组g11(参考图37)的其他存储设备的端口的读取数据传输路线也是同样的。从属于端口组g11的存储设备的端口的读取共享链路3010的带宽。

存储控制部3021在存储器3022内具备用于控制存储设备3096的提交队列5716和完成队列5726。存储控制部3021使用传输路线5706进行存储设备3096与存储器3022之间的数据传输。传输路线5706通过处理器3023的根端口3027、链路3030、虚拟切换器3062、链路3086b到达存储设备3096的端口3096b。

从属于端口组g22(参考图37)的其他存储设备的端口的读取数据传输路线也是同样的。从属于端口组g22的存储设备的端口的读取共享链路3030的带宽。

同样地,从属于端口组g12的存储设备的端口的读取共享链路3011的带宽。从属于端口组g21的存储设备的端口的读取共享链路3031的带宽。

参考图58,说明实施例19的存储系统中的负荷分散动作。设想从属于端口组g11的多个存储设备的端口的读取同时发生,链路3010的带宽不足的状态。与此相对,设对属于端口组g12的多个存储设备的端口的读写较少发生,链路3011的带宽充裕。

存储控制部3001在链路3010的带宽不足的情况下,使用链路3011进行从属于端口组g11的存储设备的读取的一部分。作为例子,说明使经由链路3010进行的从存储设备3096的端口3096a的读取经由链路3011从端口3096b进行的情况的、实施例19的存储系统的动作。

存储控制部3021在存储器3022内具备用于控制存储设备3096的提交队列5806和完成队列5816。提交队列5806和完成队列5816是为了从存储控制部3001委托的代替处理而使用的队列。

存储设备3096使用数据传输路线5807传输作为执行提交队列5806内的条目中包括的命令的结果读取的数据。数据传输路线5807通过链路3086b、虚拟切换器3062、ntb3064、虚拟切换器3063、链路3011、处理器3003内的根端口3006。

参考图59,说明负荷分散动作时的从存储设备的读取的流程图。在步骤5901中,存储控制部3001对于存储控制部3021,经由数据传输路线3401或数据传输路线3502委托从存储设备3906读取数据。

在步骤5902中,接受了上述委托的存储控制部3021执行经由数据传输路线5706从存储设备3906的数据读取。具体而言,处理器3023对提交队列5806追加包括从存储设备3096读取的命令的条目。读取数据的传输目标设为存储器3002内的缓冲器5703。

从提交队列5806取得了读取命令的存储设备3096,经由数据传输路线5807将请求的数据对缓冲器5703发送。对缓冲器5703的数据传输完成之后,存储设备3096对完成队列5816追加完成。

另外,处理器3003也可以经由数据传输路线3401或数据传输路线3502对提交队列5806直接追加包括从存储设备3096读取的命令的条目。

在步骤5903中,确认了上述完成的存储控制部3021对存储控制部3001通知读取数据的传输完成。在步骤5904中,存储控制部3001将已对存储器3002内的缓冲器5703传输的读取数据对上级装置发送。

如以上所说明,实施例19的存储系统能够使对属于同一端口组的多个存储设备的端口的读写的负荷,在存储控制部与后端切换器之间的多个链路之间分散。

另外,本发明并不限定于上述的实施例,也包括各种变形例。例如,上述实施例是为了易于理解地说明本发明而详细说明的,并不限定于必须具备说明的全部结构。此外,能够将一个实施例的结构的一部分替换到另一个实施例的结构,此外,还能够在一个实施例的结构中加入另一个实施例的结构。此外,能够对各实施例的结构的一部分进行其它结构的追加、删除、替换。

另外,对于上述各结构、功能、处理部等,例如可以通过在集成电路中设计等而用硬件实现其一部分或全部。另外,上述各结构、功能等,也可以通过处理器解释、执行实现各功能的程序而用软件实现。实现各功能的程序、表、文件等信息,能够保存在存储器、硬盘、ssd(solidstatedrive)等记录装置、或者ic卡、sd卡等记录介质中。

另外,控制线和信息线示出了认为说明上必要的,并不一定示出了产品上全部的控制线和信息线。实际上也可以认为几乎全部结构都相互连接。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1