CN101471882A - 存储子系统 - Google Patents
存储子系统 Download PDFInfo
- Publication number
- CN101471882A CN101471882A CNA2008101850154A CN200810185015A CN101471882A CN 101471882 A CN101471882 A CN 101471882A CN A2008101850154 A CNA2008101850154 A CN A2008101850154A CN 200810185015 A CN200810185015 A CN 200810185015A CN 101471882 A CN101471882 A CN 101471882A
- Authority
- CN
- China
- Prior art keywords
- packet
- module
- interchanger
- data
- controller
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种存储子系统,其可以在可升级性优异的网格存储系统中避免死锁。本发明的存储子系统是连接主计算机的、从该主计算机接受写或读访问的存储子系统,其具有:分别具有存储资源的多个模块(16)、联结多个模块的交换器(24)、对于将基于来自主计算机的写或读访问的数据包经由交换器转发至多个模块中的目标模块的操作进行控制的MP(18)、以及存储了数据包的转发规则的存储器。控制器根据转发规则控制数据包的转发。
Description
技术领域
本发明涉及存储子系统,尤其涉及可以抑制在存储子系统内网络中的数据包通信中发生死锁(deadlock)的存储子系统。
背景技术
一直以来,人们致力于在计算机系统中不发生死锁。所谓死锁,是在计算机系统的通信网络中,在多个数据包的处理中发生竞争,引起多个数据包互相退缩,数据包的处理无法进行的状况。
例如,在特开2002-344463号公报中记载了:在通过可以双方向进行通信的链路、将与处理装置连接的节点装置连接成环状的双向环型网络中,为了可以容易地变更数据包的路由,节点装置具有切断点记录寄存器,该切断点记录寄存器记录为了避免死锁而在网络中的哪个部分切断依存关系;关于从处理装置输入的数据包,根据该寄存器值决定向双向环型网络上的哪个方向送出数据包。
另外,在特开2003-30166号公报中记载了:为了提供在防止任务的处理效率降低的同时解除死锁的疏耦合多处理器系统,而具有在共享多个资源的同时执行多个任务的主计算机群、以及死锁检测装置,死锁检测装置检查由于多个任务中的一个任务进入等待资源中的一个资源的等待状态而发生的死锁,当检测出死锁时,根据各个任务的处理的进行程度、和针对各个任务而决定的优先级(priority),从所述多个任务中选择释放已锁定的资源的资源释放任务。
而且,在特开2004-246439号公报中记载了:为了防止由于构成集群系统(cluster system)的主计算机间的死锁而导致的集群系统整体的停止(stall),计时器监视单元监视针对共享资源的资源锁定等待,共享资源长时间锁定检测单元,调查成为针对共享资源的资源锁定等待原因的主计算机以及进程(process),强制停止成为针对共享资源的资源锁定等待原因的进程,释放由进程确保的共享资源的锁定,强制停止成为针对共享资源的资源锁定等待原因的进程正在动作的主计算机,清除针对已由主计算机锁定的共享资源的资源锁定请求。
在特开2002-344463号公报的现有例中,存在必须在环型网络的全部区域内管理切断点、管理负荷增大的问题。
在特开2003-030166号公报的现有例中,当检测出死锁时,必须根据各个任务的处理的进行程度和针对各个任务决定的优先级,从所述多个任务中选择释放已锁定的资源的资源释放任务,但这对于任务的处理成为开销(overhead),尤其在使系统具有扩展性时,其缺少实现性。
另外,当想要把特开2004-246439号公报的现有例中的集群系统应用于存储系统的内部网络时存在如下问题:在检测到资源锁定状态之前,向存储系统发送了命令的主计算机引起该命令的超时(timeout),主计算机无法在超时之前将数据包发送到目标节点。
作为可以配合用户的事业的成长来扩大存储容量等的规模的存储系统,存在网格存储系统。该存储系统经由交换器(switch)向存储子系统的内部网络顺次追加具有通道适配器或磁盘适配器等的较小规模的多个节点,实现可以扩大对用户提供的存储资源的规模的网格结构(Grid Architecture)。
当存储系统的某个节点从主计算机接收命令时,接收到命令的节点经由交换器向目标节点转发读命令或写命令的数据包,接收到该数据包的节点在高速缓冲存储器或存储设备之间进行数据的写入·数据的读出,由此,存储系统向主计算机进行应答。
存储子系统的内部网络中的多个数据包的转发,当到达多个交换器时,多个数据包同时争夺节点的路径或缓冲器等资源,当此时的资源的依存关系构成环路时,产生基于来自主计算机的命令的处理无法向前进行的所述死锁。
以往,在网格存储系统等升级性(易扩展性)优异的存储系统的领域中,未提出用于解决该死锁的有效方案。
【专利文献1】特开2002-344463号公报
【专利文献2】特开2003-030166号公报
【专利文献3】特开2004-246439号公报
发明内容
因此,本发明的目的在于,在升级性优异的网格存储系统中避免死锁。本发明的另一目的是,提供不需要死锁检测器等特别的硬件便可以防止死锁的发生的存储子系统。本发明的另一目的是,提供不引起处理开销、并且不引起主计算机的超时便可以防止死锁的发生的存储子系统。
为了达成所述目的,本发明在特征在于,在可以配合用户的事业的成长来扩大存储容量等的规模的网格存储系统中,具有不引起所述死锁的数据包转发规则,根据该转发规则控制内部网络中的数据包的转发。
本发明,在升级性优异的网格存储系统中可以避免死锁。另外,根据本发明,可以提供不需要死锁检测器等特别的硬件便可以防止死锁的发生的存储子系统。
而且,根据本发明,能够提供不引起处理开销、并且不引起主计算机的超时便可以防止死锁的发生的存储子系统。
附图说明
图1是与本发明相关的存储系统的框图。
图2是说明从主计算机向存储子系统发送了读请求时的数据包转发处理的梯形图(ladder chart)。
图3是CHA从主计算机接收到写请求的帧时的梯形图。
图4是高速缓冲存储器的硬件框图。
图5表示交换器适配器的框结构。
图6表示微处理器的块结构。
图7表示CHA/DKA的块结构。
图8是表示在两个模块间,通过伴随非邮递性访问(non-posted access)的数据包处理来自主计算机的读请求的过程的框图。
图9是表示同时分别向第1模块和第2模块发送来自主计算机的读请求时,多个数据包引起了死锁的状态的框图。
图10是表示在两个交换器间双重地形成了路径的框图。
图11是表示第1模块经由路径与第2模块连接,第2模块经由路径与第3模块连接,第3模块经由路径与第1模块连接的框图。
图12是表示在图11中发生了数据包转发中的死锁的状态的框图。
图13是说明图11的死锁被解除的情形的框图。
图14是根据第1转发控制规则以及第2转发控制规则,处理来自主计算机的读命令的实施方式相关的梯形图。
图15是表示与图14的梯形图相关的、多个模块间的内部组件(component)的连接结构的框图。
图16是数据包帧。
图17是着眼于某交换器时的、设定了与其它SW或CHA等同一模块的内部组件的连接关系的路径状态表。
图18是表示图17的路径设定状态的框图。
图19是路由表的一例。
图20是说明SW所属的模块的MP根据路径状态表设定RT时的动作的流程图。
图21是消息格式。
图22是LDEV-DKA表。
图23是表示了PDEV(Physical Device)、与数据所存在的LDEV号码以及LDEV的逻辑地址之间的对应关系的DKA表。
图24是串连连接了4个模块的SW的存储子系统的框图。
图25是表示接收主计算机读请求的MP进行的处理步骤的流程图。
图26是消息转发目的地表。
图27是说明MP的消息处理的流程图。
图28是说明MP的读请求消息处理的流程图。
图29是说明读应答消息的传递的存储子系统的框图。
图30是接收到读应答消息的MP的动作相关的流程图。
图31是处理主计算机写访问的存储子系统的框图。
图32是说明接收到主计算机写请求的MP的动作的流程图。
图33是表示接收到写请求消息的MP的处理动作的流程图。
图34是表示接收到写应答消息的MP的动作的流程图。
图35是将交换器结构冗余化的存储子系统的块结构。
图36是表示模块的组件和交换器的连接关系的连接表。
图37是规定对数据包允许的交换器间的允许跳跃(hop)数的允许跳跃数表。
图38是记录了重定向数的拓扑表,该重定向数以发送源SW、发送目的地SW、发送目的地SW的下一SW、从发送源SW到发送目的地SW间的跳跃数、以及允许跳跃数为前提。
图39是决定在数据包的转发中使用的冗余系统的转发使用冗余系统表。
图40是用于生成转发使用冗余系统表的流程图。
图41是表示重定向数的计算的细节的流程图。
图42是说明当从交换器中移除与SW连接的组件、或者组件中发生了故障时,放宽交换器间跳跃数等的修正处理的流程图。
图43是说明在一方的冗余系统交换器中发生了故障时的数据包转发的存储子系统的框图。
图44是与图35的变形例相关的框图。
图45是表示配合二重化的电源将各CHA/DKA二重化的图44的变形例的框图。
图46是说明图44的实施方式的动作的框图。
图47是与图46的变形例相关的框图。
图48是与不使CHA/DKA兼有MP功能的实施方式相关的框图。
图49是图35所示的存储子系统的多个模块以网状相互结合而得到的框图。
符号说明
10:主计算机;12:SAN;14:存储子系统;16:模块(构成单位);18:微处理器;20:通道适配器;21:高速缓冲存储器;22:磁盘适配器;24:交换器;26:HDD。
具体实施方式
接下来,说明本发明的实施方式。图1是本发明相关的存储系统的框图。该存储系统具有,多个主计算机10经由作为网络单元的SAN12与存储子系统14相连的结构。
该存储子系统14具有作为网格存储(Grid Storage)的构造。即,模块16可以顺次追加到存储子系统中。模块16具有:存储资源、通道适配器等控制针对存储资源的数据输入输出的多个内部组件。
各个模块16具备:通道适配器(CHA)20、微处理器(MP)18、高速缓冲存储器适配器(图中表示为CMA或CM)21、磁盘适配器(DKA)22、作为存储资源的硬盘驱动器(HDD)等存储设备(主存储设备)26、以及交换器适配器(SW)24。
通道适配器20控制与主计算机10之间的数据转发。磁盘适配器22控制与存储设备26之间的数据转发。高速缓冲存储器适配器21临时存储在主计算机10与存储设备26之间转发的数据。微处理器18控制通道适配器20和磁盘适配器22,控制通过交换器适配器24的数据包转发。
各个模块的交换器适配器24,使自身模块的CHA20、MP18、CMA21以及DKA22相互连接,同时使这些内部组件与其它模块的交换器适配器接合,构成实现在一个模块内以及与其它模块间的数据包转发的内部网络。
从而,来自主计算机10的读或写命令,通过经由各模块的交换器适配器24、进而经由其它模块的交换器适配器的数据包转发,被传递到目标模块的DKA22。
图2表示从主计算机10向存储子系统14发送了读请求的帧时,存储子系统的交换器内·交换器间的数据包转发的处理流程的梯形图。
虚线表示被称为所谓PostedAccess(邮递性访问)的、数据包的转发源组件不要求来自命令数据包的转发目的地组件的应答数据包的访问,实线表示被称为所谓Non-posted Access(非邮递性访问)的、命令的转发源组件要求来自命令的转发目的地组件的应答的访问。请求数据的读或写的命令数据包,从应该保护数据的观点出发,通常按照非邮递性访问的形式被转发。
当从主计算机10向CHA发送了帧S01时,CHA对该帧进行分析,形成表示帧的种类(读请求)和数据存在的地址的数据包S10,经由SW将其传递给MP。
接收该应答的MP分析数据处于哪个DKA下属的存储设备、或者处于哪个CMA,若未在CMA中存储数据,则形成向该DKA请求数据的命令数据包S12并对其进行发送。
在图2的例子中表示了数据最初未存储在CMA中、而仅存在于HDD26中的情况。DKA、CMA以及HDD处于与MP相同的模块中或者处于其它模块中,根据数据的存在场所而不同。
DKA根据来自MP的数据包S12访问HDD26的特定区域来读出数据,在通过非邮递性访问S14将该数据向CMA升级(staging)的同时,在向CMA的写入结束的时刻,将表示该意思的数据包S15发送至MP。
当MP接收数据包时,向CHA发送数据包S16,该数据包S16通知已向CMA升级了数据、和数据存在的CMA的地址。于是,CHA访问CMA的特定地址来读取目标数据(S18),将该数据通知给主计算机(S19)。
当CHA20结束向主计算机转发数据时,将表示该意思的数据包S19A通知给MP18。然后,MP通过数据的保证码等确认在读取了数据的一连串处理中没有错误,向CHA通知数据包20,该数据包20请求向主计算机发出正常读取结束的应答帧S21。
接着,图3是CHA从主计算机接收到写请求的帧S30时的梯形图。当CHA从主计算机接收到写请求时,CHA向MP发送与写请求相对应的数据包S32,MP分析应该将数据存储在哪个CMA的哪个地址,然后,MP向CHA发送请求来自主计算机的数据发送的命令数据包S34。CHA向主计算机发送请求数据发送的帧S36。
当CHA从主计算机接收到数据帧38时,作为非邮递性访问,CHA将从MP通知的CMA的特定地址中写入数据的命令数据包S40通知给相应的CMA。
接收到来自CMA的应答的CHA向MP通知结束了数据转发的数据包S42。接收到该通知的MP确认是否将数据正确地写入了CMA,向CHA发送数据包S44。CHA向主计算机发送表示正常结束的应答帧S46。
MP为了将CMA的数据降级(destaging),向控制应该存储数据的HDD26的DKA发送数据包S48,该数据包S48通知数据存在的CMA的地址、以及写入该数据的硬盘驱动器26的地址。
DKA访问CMA的该地址来取出相应数据,将请求将该数据发送至DKA的命令数据包作为非邮递性访问来发送(S50)。
接收到该数据的DKA在HDD26的特定地址保存相应的数据(S52)。然后,DKA向MP通知已对数据进行了降级处理(S54)。MP在自身具有的存储器中保存目录信息(临时偶尔存储了数据的CM上的地址、与从主计算机装置唯一指定的逻辑地址的对比)。
图4表示高速缓冲存储器的硬件框图。高速缓冲存储器具有存储高速缓冲存储数据的存储器模块34和存储器模块控制器32。存储器模块控制器经由数据包处理部30与内部网络控制部28相连。
内部网络控制部28是控制数据包的收发的部件,具有顺次接收数据包的接收缓冲器28A、和用于顺次发送数据包的发送缓冲器28B。接收缓冲器28A和发送缓冲器28B由FIFO构造的存储器构成。
数据包处理部30具有命令数据包分析部30A和应答数据包生成部30B。命令数据包分析部30A从接收缓冲器28A顺次取得命令数据包,分析在命令数据包中包含的地址和数据。SB2是向存储器模块控制器32通知地址的地址信号线,SB4是用于通知数据的数据信号送出线。
当命令是写命令时,存储器模块控制器32根据从命令数据包分析部30A通知的地址和数据,在存储器模块的该地址存储该数据。另一方面,当命令是读命令时,存储器模块控制器32从存储器模块的该地址读取数据。所读取的数据通过数据读出线SB6被发送至应答数据包生成部30B。
应答数据包生成部是生成表示数据的写应答或数据的读应答的数据包的块,参照地址信号线SB2的地址信号SB8来生成应答数据包。应答数据包被顺次发送至发送缓冲器28B。
图5表示交换器适配器的块结构。交换器适配器24具有多个内部网络控制部36,该内部网络控制部36分别具有接收缓冲器36A和发送缓冲器36B。各内部网络控制部与相互连接网38相连,各内部网络控制部的接收缓冲器和发送缓冲器,可以分别与其它内部网络控制部的接收缓冲器和发送缓冲器相互连接。
而且,各内部网络控制部36通过命令或应答的数据包分析部42与相互连接网38相连。
数据包分析部42具有路由表(RT),按照RT决定将数据包发送至哪个发送缓冲器(端口)较好。46是向相互连接网38送出端口的地址、或从多个发送缓冲器中确定目标发送缓冲器的信号的信号线,44是向相互连接网38送出数据包的信号线。
相互连接网38根据端口地址确定发送缓冲器36B,向该发送缓冲器送出数据包。此外,接收缓冲器36A以及发送缓冲器都由FIFO构造构成。
图6表示微处理器18的块结构。具有内部网络控制部48、数据包分析部50以及数据包生成部52。内部网络控制部48具有接收缓冲器48A和发送缓冲器48B。这些结构与高速缓冲存储器适配器(图4)中说明的结构相同。
微处理器18还具有存储器模块58和处理器56所连接的周边电路部54。数据包分析部50以及数据包生成部52与周边电路部54相连。处理器56根据存储在存储器模块58中的管理块(block),控制各组件等。
存储器模块58具有:用于控制存储子系统(内部组件)的控制程序58A、表示向CMA的用户数据的存储状况的目录信息58B、存储子系统的构成信息58C、以及为了与其它内部组件进行通信而使用的通信区域58E。
图7表示CHA/DKA的块结构。CHA和DKA既可以通过不同IC构成,也可以通过同一IC构成。CHA/DKA具有协议处理部60,该协议处理部在CHA的情况下与主计算机和SAN或者LAN连接,在DKA的情况下与存储设备连接,在与主计算机或硬盘驱动器之间进行协议的变换处理。而且,CHA/DKA具有与交换器适配器连接的端口,在该端口上连接了内部网络控制部68。
而且,在内部网络控制部68上连接了缓冲器66和DMA控制器64。DMA控制器以及缓冲器通过相互连接网62与协议处理部60相连。内部网络控制部68与相互连接网62相连。相互连接网62通过交换器构成,协议控制部60通过相互连接网62可以与DMA控制器64、缓冲器66或者内部网络控制部68连接。
DMA控制器64通过命令分析部64A分析由MP设置的命令,然后进行数据的转发。在命令中包含:用于实现读功能64C、写功能64D或拷贝功能64E的命令;或由高速缓冲存储器地址表示的数据包的转发目的地或转发源。DMA控制器64可以汇集多个命令,以命令列表64B的形式进行存储。
在CHA的情况下,根据来自MP的控制,通过协议控制部60与主计算机进行协议交换。
当从主计算机发来写命令时,把来自主计算机的写数据从协议控制部60临时存储在缓冲器66中。而且,DMA控制器64进行将缓冲器中存储的数据经由接收缓冲器68A转发至CMA的控制。
当来自主计算机等信息处理装置的命令是读命令时,DMA控制器64将经由接收缓冲器68A从CMA读取到的数据临时存储在缓冲器66中,协议控制部60将该数据送至主计算机。在DKA的情况下,仅仅是将对象从主计算机变换为硬盘驱动器,处理动作与CHA相同。另外,在DKA的情况下,也可以设置用于对硬盘驱动器进行RAID控制的运算电路。
图8是表示在两个模块之间,通过与非邮递性访问相伴的命令数据包以及应答数据包处理来自主计算机的读请求的过程的框图。
CHA20-1、交换器适配器(SW)24-1、CMA21-1是第1模块的组件的内部组件。CHA20-2、交换器适配器24-2、CMA21-2是第2模块的内部组件。
在SW24-1的端口和SW24-2的端口之间形成了一条路径800。CHA20-1为了读取第2模块的CMA21-2的数据,经由两个SW间的路径800访问CMA21-2。
从主计算机10接收到读请求的CHA20-1,从发送缓冲器28A-1向SW24-1的接收缓冲器36A-1转发数据包。接收缓冲器36A-1根据路由表(RT),向发送缓冲器36B(1)-1输出数据包。发送缓冲器36B(1)-1经由路径800向SW24-2的接收缓冲器36A(1)-2转发命令数据包。
该数据包经由SW24-2的发送缓冲器36(1)-2被转发至CMA21-2的接收缓冲器28A-2。CMA21-2将存储器模块34-2的数据与应答数据包一起,经由发送缓冲器28B-2送出到SW24-2的接收缓冲器36A(1)-2。
SW24-2经由发送缓冲器36B(1)-2和路径800,将该数据包发送至SW24-1的接收缓冲器36B-1。SW24-1经由发送缓冲器36B-1,将包含数据的数据包转发至CHA20-1的接收缓冲器28B-1。
图9表示当同时分别向第1模块的CHA20-1和第2模块的CHA20-2发送了来自主计算机10的读请求时,从CHA或CMA向交换器适配器(SW)连续发送的多个数据包占有SW的缓冲器而引起了死锁的状态。
假定CHA20-1根据来自第1主计算机的读请求,从CMA21-2读取数据,CHA20-2根据来自第2主计算机的读请求,从CMA21-1读取数据。结果,从SW24-1向SW24-2的命令数据包800(2)和相反方向的命令数据包800(1),在相同路径800上流动。
此时,基于从主计算机向第1CHA20-1的读请求的数据包占有发送缓冲器36B(1)-1,基于从主计算机向第2CHA20-2的读请求的数据包802锁定。
而且,基于向CHA20-2的读请求的数据包占有发送缓冲器36B(1)-2,基于从主计算机向第1CHA20-1的读请求的数据包804锁定。结果,双方的数据包分别占有发送缓冲器36B(1)-1和发送缓冲器36B(1)-2,引起针对数据包的转发处理相互无法进行的“退缩”,导致死锁。
该死锁是由于从一个模块的SW向其它模块的SW发送的命令数据包在同一路径800上双向转发而产生的。
因此,作为用于防止死锁的数据包转发规则的第1规则,把在多个交换器适配器间的路径上转发的命令数据包的方向限定为一个方向。但是,在图9的例子中,当把路径800的命令数据包的方向从SW24-1限定为SW24-2时,CHA20-2变得无法向CMA21-1发送命令数据包。
为了解决该问题,如图10所示,在SW24-1和SW24-2之间除路径800以外还形成了第2路径800A。而且,在SW24-1中设置与路径800A分别连接的接收缓冲器36A(2)-1和发送缓冲器36B(2)-1,在SW24-2中设置与路径800A分别连接的接收缓冲器36A(2)-2和发送缓冲器36B(2)-2。
并且,各模块的MP在存储器模块58中生成并存储用于实现所述第1转发规则的控制表。根据该控制表设定交换器的路由表40。按照该控制表或路由表进行数据包的转发,来实现转发控制规则。此外,在后面对该控制表进行描述。
通过设定基于该控制表的路由表,从SW24-1向SW24-2的命令数据包沿着路径800像800(1)那样被转发,从SW24-2向SW24-1的命令数据包不沿着路径800而沿着路径800A像800(2)那样被转发。
从CMA21-2向CHA20-1的应答数据包,沿着转发了命令数据包的路径800在与命令数据包的转发方向800(1)相反的方向上被转发,从CMA21-1向CHA20-2的应答数据包,沿着路径800A在与800(2)相反的方向上被转发。
结果,用于发送数据包的资源得到扩充,从多个数据包相互竞争的状况中解放出来,因此可以防止发生图9的死锁。
通过像这样至少限定转发命令数据包的方向来防止死锁。此外,通过与转发命令数据包的路径不同地形成转发应答数据包的路径进一步预防死锁,但另一方面,这样一来,模块的缓冲器的结构以及交换器间的路径结构变得复杂,因此在该实施方式中,在与流动命令数据包的路径相同的路径上,流动与命令数据对应的应答数据包。
图11是表示第1模块的SW24-1经由路径1100与第2模块的SW24-2连接,第2模块的SW24-2经由路径1100B与第3模块的SW24-3连接,第3模块的SW24-3经由路径1100A与SW24-1连接的情形的框图。
沿着这些路径转发的命令数据包的方向,根据所述的第1转发规则被限定为从SW24-1向SW24-3、从SW24-3向SW24-2、从SW24-2向SW24-1的方向。
在这种情况下,当第1模块的CHA20-1从主计算机接收到应该向第2模块的CMA21-2写入数据的请求时,命令数据包按照顺序通过SW24-1的接收缓冲器36A-1和发送缓冲器36B(3)-1、SW24-3的接收缓冲器36A(1)-3和发送缓冲器36B(3)-3、SW24-2的接收缓冲器36A(3)-2和发送缓冲器36B(2)-2,从CMA24-2的接收缓冲器28A-2向存储器模块34-2中写入数据。图11所示的虚线是命令数据包的流动。
CMA21-2生成应答数据包,然后,该应答数据包与命令数据包相反地从SW24-2经过SW24-3到达SW24-1,被送至CHA20-1。
当向CHA20-2提供应该在CMA21-3中写入数据的写请求时,命令数据包经由SW24-2、然后经由SW24-1被提供给SW24-3,而且当向CHA20-3提供在CMA21-1中写入数据的写请求时,命令数据包经由SW24-3、然后经由SW24-2被提供给SW24-1。
在这种情况下,当向CHA20-1、CHA20-2以及CHA20-3同时提供写请求时,如图12中“×”所示那样,命令数据包的转发形成环状,多个命令数据包互相竞争而发生死锁。
该死锁的发生是由于在多个数据包各自的转发中,各数据包经由SW和模块间的路径跨越多个模块而导致,通过限制至少一个数据包一次能跨越的路径的数量(跳跃数)可以得到解决。将其作为第2转发控制规则。
因此,如图13所示,作为用于把来自SW24-1的命令数据包的跳跃数从图12的“2”限制为“1”的一个手段,把来自CHA20-1的命令数据包的写数据临时存储在与SW24-3连接的CMA21-3中(1300)。
由此,在图12中,数据包的跳跃数是从SW24-1经由SW24-3向SW24-2的“2”,但在图13中,命令数据包的跳跃数在SW24-3被中断一次,被限制为从SW24-1向SW24-3的一次、或者从SW24-3向SW24-2的一次。
由此,可以从成为死锁的原因的竞争的3个数据包的转发环路(参照图12)中释放一个数据包,从而能提前防止死锁的发生。
限制数据包的跳跃数的第2转发控制规则,以转发控制表的形式被存储在各模块的MP的存储器中。MP根据该转发控制规则对数据包的转发进行SW控制,由此达成第2转发控制规则。
图14和图15说明根据所述第1转发控制规则以及第2转发控制规则处理来自主计算机的读命令的实施方式。图15表示多个模块间的内部组件的连接结构,图14是表示数据包的转发的梯形图。
当从主计算机向第1模块1500的CHA20-1进行针对存储在第3模块1504的存储设备26-3中的数据的读请求时,CHA20-1的协议处理部60分析主计算机读请求,将其作为命令数据包1400,经由同一模块的SW24-1转发至MP18-1。
该MP分析命令数据包的数据存在地址,当相应的数据尚未存储在CMA中时生成命令数据包1402,将其转发至第3模块1504的DKA22-3。
DKA22-3访问HDD26-3的目标区域来读入数据,为了将数据临时存储在同一模块的CMA21-3中,对CMA21-3进行非邮递性访问1404。
DKA22-3向MP18-1发送包含存储了数据的CMA21-3的地址的应答数据包1406。接受该应答数据包后,MP18-1向CHA20-2(第2模块1502的CHA)发送包含CHA21-3的地址的读命令数据包1407。
接收该数据包后,CHA20-2如图15所示,对CMA21-3进行非邮递性访问1408,从CMA21-3读出目标数据。
CHA20-2如图15所示,通过非邮递性访问1410将读出的数据临时写入第2模块1502的CMA21-2。
CHA20-2形成包含写入了数据的CMA21-2的地址的数据包1412,将其发送至MP18-1。MP18-1向CHA20-1发送数据包1411,该数据包1411包含存储了数据的CMA21-2的地址。
CHA20-1如图15所示,通过非邮递性访问向CMA21-2发送请求数据的命令数据包1414来取得该数据。然后,CHA20-1向主计算机转发该数据,然后,CHA20-1向MP18-1发送命令数据包1415,该命令数据包1415请求检查在CHA20-1取得数据的一连串的处理中是否有错误。
MP18-1进行该检查,生成没有错误的应答数据包1416,向CHA20-1送出。CHA20-1向主计算机送出表示数据正确的应答帧1418。
在图14和图15中,通过非邮递性访问转发用于向CMA存储数据的数据包,关于该通过非邮递性访问进行的数据包转发(1414),即使有时通过多个SW间的路径,也将其限定为“1次跳跃”。
在非邮递性访问中,数据包发送源为了等待数据包发送目的地的应答,争夺其它数据包和节点的资源(路径或缓冲器),容易发生死锁,但通过使非邮递性访问为“1次跳跃”可以防止该死锁。
图16是表示数据包的细节的数据包帧。数据包格式如(1)那样,由以下各部构成:表示读命令、写命令、消息、读应答以及写应答等数据包种类的数据包种类部;数据包的发送目的地地址部;数据包的发送源地址部;数据长度部(在读命令的情况下是请求数据长度)、数据部(当数据包种类为读命令或写应答时不存在);以及校验码部。
发送目的地地址部的细节如(2)所示,由交换器号码(SW#)、模块的组件的特定信息、和组件内的地址构成。发送源地址部也同样地构成。
图17是在着眼于某交换器时的,设定了与其它SW、CHA等同一模块的内部组件的连接关系的路径状态表。图18以框图表示了图17的路径设定状况。MP针对SW的各端口生成图17的表,将其存储在MP的存储器模块中,由此如图18所示,可以设定或者定义针对一个模块的SW的路径的特性。
图17所示的表对应于图18的SW0,如图18所示,表示了在端口0上连接CHA0,在端口1上连接MP0,在端口2上连接DKA0,在端口3上连接CMA0,在端口4上连接其它模块的SW3,而且在端口5上还连接其它模块的SW1。针对每个交换器适配器设定路径状态表。
而且,将可以从SW的各端口送出的数据包的种类登录在路径状态表中。端口0是可以从CHA0接收命令数据包,送出应答数据包的端口;端口1是可以接收来自MP0的命令数据包,送出应答数据包的端口;端口2是可以从DKA0接收命令数据包,送出应答数据包的端口;端口3是可以从CMA0接收应答数据包,送出命令数据包的端口;端口4是可以从SW3接收命令数据包,送出应答数据包的端口;并且,端口5是可以向SW1送出命令数据包的端口。
从而,当用箭头表示转发命令数据包的方向时,成为图18所示那样。当MP按照路径状态表控制通过SW进行的数据包的转发时,成为图18所示那样。通过路径状态表和基于该表的MP的控制,实现所述第1数据包转发控制规则(图10)。在图10中,限定了在SW24-1和SW24-2间的路径上流过的命令数据包的方向,但根据图18,可以从端口5送出的数据包种类是向SW1的命令数据包、在图17中虽未说明但SW1的端口1的连接目的地是SW0、其可以送出的数据包种类是应答,据此可以实现所述第1数据包转发控制规则。数据包的种类可以通过数据包帧进行检测。此外,后述的消息数据包是非邮递性数据包,可以与命令·应答数据包无关地在例如与MP连接的端口上进行收发。
接着,说明图5的路由表(RT)的细节。SW将从某端口接收到的数据包存储在接收缓冲器中,按照RT决定将接收数据包送至哪个转发端口的发送缓冲器。针对SW的每个端口设定路由表。
图19是针对图18的SW0的CHA0所连接的接收端口0而设定的RT。应该转发数据包的发送目的地地址由SW#和组件的特定信息(ID)构成。当发送目的地地址的SW#为SW0时,被发送给同一模块的目标组件,按照RT向对应的转发端口发送数据包。
当发送目的地地址的SW#为SW0以外时,为了指向其它模块的SW的接收端口,对端口5发送SW0接收到的数据包。图19的RT的转发端口与图17的路径状态表相一致。
图20是说明由SW所属的模块的MP根据路径状态表设定RT时的动作的流程图。MP从尚未设定RT的端口中选择应该设定RT的端口(2000)。
然后,MP针对路径设定表的“连接目的地”和RT的“组件”一致的端口,使RT的“转发端口#”作为路径设定表的“端口#”(S2002)。
在这种情况下,若刚设定了RT的端口的路径设定表的可送出的数据包种类为“应答”,则该刚设定了RT的端口所接收的是与“应答”成对的“命令”数据包。决定该“命令”数据包的转发目的地端口的是RT。因此,MP进一步从路径设定表中选择“连接目的地”=SW、并且“可送出的数据包种类”为“命令”的端口#,使“发送目的地地址”作为“其它SW”的“转发端口#”(2004)。若刚设定了RT的端口的可送出的数据包种类为“命令”,则在此选择的是“连接目的地”=SW、并且“可以送出的数据包种类”是“应答”的端口#。
然后,MP判定是否进行了SW中的全部端口的设定(2006),当对此进行肯定时,结束用于进行RT的设定的处理,当对此进行否定时,返回2000。
在所述图13和图14中,将数据临时存储在CMA中,使命令数据包或应答数据包的跳跃数为“1”。多个模块的各MP交换消息数据包来相互合作,实现该数据包转发控制规则。
图21表示消息格式的细节,消息中有读(RD)请求消息(1)、读应答消息(2)、写(WR)请求消息(3)、写应答消息(4)以及拷贝完成消息(5)。
所谓msg种类表示消息的种类,消息栏的“to”是消息的最终目的地的MP#,“from”是消息发送源的MP#。“temp”栏的“to”是在消息的转发过程中应该经由的MP目的地#,“from”是与“to”的MP#对应的消息的发送源MP#。
读请求消息(1)的“请求数据”表示与读请求相关的数据的逻辑位置,由用于确定被简称为“LDEV”的“Logical Device”的信息、LBA(逻辑块地址)和LEN(数据长)构成。
读应答消息(2)的“数据存在地址”栏表示所读取的数据的CMA上的地址,由CMA#(高速缓冲存储器号码)、ADR(CMA的存储器部件上的地址)、和LEN(数据长)构成。所谓拷贝是指向CMA拷贝数据。
写请求消息(3)的“请求数据”表示写入写数据的逻辑地址,“数据存在地址”是写数据所存在的高速缓冲存储器上的地址。
写应答消息(4)的“请求数据”表示写入写数据的逻辑地址。
拷贝完成消息,表示关于拷贝到高速缓冲存储器的数据所存在的其它高速缓冲存储器的地址。
图22是记录在MP的存储器中的LDEV-DKA表。该表是规定了数据存在的LDEV号码以及LDEV的逻辑地址、与控制存储该数据的HDD的DKA之间的关系的表。
图23是表示PDEV(Physical Device)、与数据存在的LDEV号码以及LDEV的逻辑地址之间的对应关系的DKA表。图23的控制方式是记载了RAID等级的控制方式。
将这些表记录在MP的存储器中。MP可以对来自主计算机的写命令或读命令进行分析,参照这些表来确定应该访问的DKA以及PDEV。
接着,详细说明存储子系统处理来自主计算机的读请求的动作。图24是串联连接了4个模块的SW的存储子系统的框图。
当第1模块的CHA0从主计算机接收向第3模块的DKA2的读请求S2400时,第1模块的MP0如图25的流程图所示,参照LDEV-DKA表来分析来自CHA0的命令数据包(2500),检查命令数据包的对象MP是否是自身(=MP0)(2502)。
当对象MP是本MP(MP0)时,通过与SW0连接的DKA0,从DKA0下属的硬盘将数据升级到CMA0(2504)。然后,MP0向与发出了读命令的主计算机连接的相应CHA(CHA0)指示对主计算机进行应答处理(2506)。
另一方面,在步骤2502中,当MP0将命令数据包中的对象MP判定为其它模块的MP时,生成发送到该其它MP的读请求消息(图21(1))(2506)。
每当生成该读请求消息时,MP0参照图26的消息转发目的地表。该消息转发目的地表登录了:最终目的地MP#、为了减少消息一次通过的跳跃数而应该经由的MP(转发目的地MP#)、在最终目的地MP#和转发目的地MP#之间消息所通过的跳跃数。
MP0当生成读请求消息时,向转发目的地MP#发送读请求消息。在图24中,当MP0识别出消息的最终转发目的地是MP2时(图25的2502),通过图26的转发目的地表掌握转发目的地MP#是MP1,生成图21(1)所示的读请求消息。
在该读请求消息中,消息栏的“to”成为MP2,“from”成为MP0,temp栏的“to”根据消息转发目的地表而变为MP1,其“from”变为MP0。
结果,图24的(1)所示的读请求消息(REQmsg)从MP0被转发至MP1。此时消息跨越交换器间的路径的次数(剩余跳跃数)成为SW0和SW1之间的“1”。
而且,当读请求消息到达MP1时,MP1分析该读请求消息,而且参照图26的消息转发表,向MP2转发读请求消息(图24(2))。
通过存储子系统的管理计算机等事先生成消息转发目的地表,存储在各MP的存储器中。
图27是说明MP的消息处理的流程图,MP检查存储器的消息区域,确认有无消息(2700)。然后,MP判定“有消息?”(2702),当“没有消息”时返回步骤2700。
另一方面,当“有消息”时,判断消息(msg)的种类是读请求消息、读应答消息、写请求消息、写完成消息还是拷贝完成消息(2704),分别进行消息的处理。
图28是说明接收到读请求消息的MP的处理的流程图。接收到读请求消息的MP,检查成为读请求消息中的最终目的地的MP(图21(1)的读请求消息的消息栏的“to”)是否是自身(2800)。
当对此进行肯定时,MP将读数据向同一模块的CMA进行升级处理(2802)。然后,锁定已升级了数据的区域,即不许可将该区域无效化(2804)。然后,MP生成读应答消息(图21(2)),将其发送至读请求消息的发送源MP(2806)。
在读应答消息的数据存在地址中,登录读数据存在的CMA和该CMA的数据存储区域。在消息栏的“from”中登录接收到读请求消息的MP#,在其“to”中登录接收到主计算机读请求的MP。
在步骤2800中,接收到读请求消息的MP,当判定出成为读请求消息中的最终目的地的MP不是自身时,进行读请求消息的再转发(2808)。在读请求消息(图21(1))的temp栏的“from”中登录该MP#,在“to”中登录在消息转发目的地表中规定的转发目的地MP#。
在图24中,当MP1从MP0接收读请求消息(1)时,由于该读请求是发送给MP2的读请求,因此MP1否定步骤2800的判定,转移至步骤2802,向MP2转发读请求消息(2808)。
当MP2从MP1接收读请求消息时,由于读请求消息发送给MP2的,因此肯定步骤2800的判定,如图29所示那样,在步骤2804中MP2在CMA2中确保存储通过DKA2得到的HDD的数据的区域(图29(3))。并且如步骤2806所示,将读应答消息送至MP1,向MP1通知数据存在的CMA的主区域(master area)(图29(4))。
在从MP2向MP1的读应答消息的消息栏的“to”中登录MP0,在其“from”栏中登录MP2。MP2参照消息转发目的地表,在读应答消息的temp栏的“to”中登录MP1,在其“from”栏中登录MP2。
在图30中表示了接收到读应答消息的MP的动作的流程图。接收到读应答消息的MP(本MP)判定成为读应答消息的发送目的地的目的地MP(登录在消息栏的“to”中的MP)和本MP是否相同(3000)。
当本MP肯定该判定时,不需要向其它MP转发读消息,为了向访问了本MP的模块的CHA的主计算机应答本MP接收到的读应答消息的数据存在地址、即存储了目标数据的区域,而向该CHA发送命令数据包(3002)。
然后,本MP从CHA等待主计算机应答处理完成的应答数据包(3004),当本MP接收到该应答数据包时,对于读应答消息的发送源(记录在读应答消息的temp栏的“from”中的MP)发送拷贝完成消息(3006)。
当本MP否定步骤3000的判定时,在与本MP同一模块的SW的CMA中的缓冲区域(存储器模块)中,确保临时存储目标数据的区域(3008)。
然后,本MP为了将所接收到的读应答消息的数据存在地址的数据拷贝到在步骤3008中确保的临时存储区域,而向同一模块的CHA/DKA发送命令数据包来对其进行指示(3010)。而且,本MP从该CHA/DKA等待作为完成了所述拷贝的报告的应答数据包(3012)。
当本MP接收到该应答数据包时,对于读应答消息的发送源(记录在读应答消息的temp栏的“from”的MP)发送拷贝完成消息(3014)。
而且,本MP参照决定在消息到达最终的MP前的路径或路由中成为中继的MP的消息转发表,决定读应答消息的转发目的地(3016)。
然后,本MP当转发读应答消息时,在其数据存在地址中登录通过步骤3008确保的临时存储区域的识别信息,在temp栏的“to”中记录读应答消息的转发目的地,在“from”中登录本MP的识别信息(3018)。
接着图24,根据表示读应答消息的传递情况的图29来进行说明时,当MP1从MP2接收读应答消息(4)时,由于该读应答消息是发送给其它MP(MP0)的读应答消息,因此MP1在CMA1中确保临时存储区域,通过CHA1将CMA2中的目标数据拷贝到CMA1中(5)。
然后,MP1向MP0转发读应答消息(6)。并且,接收到读应答消息的MP0(本MP)通过CHA0取得CMA1中的目标数据,将其转发至主计算机。
接着,说明在图24中说明的具有网格(grid)构造的存储子系统从主计算机接收到写请求时的动作。图31是对其进行说明的框图。CHA2从主计算机接收了写请求。
图32是说明接收到来自主计算机的写请求的MP的动作的流程图。MP参照LDEV-DKA表,确定进行将写数据存储在硬盘驱动器中的处理的DKA,确定与该DKA同一模块的MP(对象MP)(3200)。
另一方面,当写请求中的数据的写目的地LDEV(相应区域)未分配给LDEV-DKA表时(3202),针对与本MP的SW相连的DKA,本MP参照DKA表来检查在PDEV中是否有空区域(3204)。
在PDEV中有空区域时,本MP向DKA表分配在写请求中包含的LDEV、LBA(相应区域),更新LDEV-DKA表以及DKA表,将其登录在其存储器中,与此同时,向其它MP通知与该分配有关的信息或者更新后的这些表(3206)。
然后,本MP通过同一模块的DKA,将同一模块的CMA中存在的写数据从该CMA向该DKA下属的硬盘驱动器进行降级处理(3214)。
在步骤3202中,当写请求中的数据的写目的地LDEV(相应区域)已被分配给LDEV-DKA表时,判定本MP是否是对象MP(3212),当本MP是对象MP时,与所述情况相同地进行降级处理。另一方面,在步骤3212中判定为本MP不是对象MP时,参照消息转发表来生成写请求消息(图21(3)),将其转发至转发目的地MP(3216)。与所述读请求消息同样地生成该写请求消息。
在步骤3204中,当本MP判断出在本MP的DKA中没有空区域时,本MP将请求分配相应区域的命令向较近模块的MP进行请求(3208)。
本MP检查来自接受了请求的MP的应当数据包,本MP首先在不进行拷贝便可以访问的范围内、若该范围内无法进行分配则在通过一次拷贝可以访问的范围内,按照与本MP从近到远的顺序,按每个模块与其它MP接触,直到实现相应区域的分配为止。
承认来自本MP的请求的其它MP更新自身的表,将其通知给其它MP(3210)。然后,本MP生成写请求消息,将其通知给承认了相应区域的分配的MP。
图33是表示接收了写请求消息的MP的处理动作的流程图。接收了写请求消息的MP检查写请求是发送给本MP的还是发送给其它MP的(3300)。
当判定为目的地MP是本MP时,从与本MP同一模块的CMA向其DKA下属的HDD,将该CMA中存在的写数据进行降级处理(3302)。
在该降级处理时,本MP通过CHA/DKA将写请求消息的数据存在地址的数据拷贝到同一模块的CMA中。
然后,本MP生成写应答消息(3304)。在写应答消息(图21(4))的请求数据中登录写请求消息的请求数据,在其消息栏的“from”中记录本MP,在其消息栏的“to”中记录在写请求消息的消息栏的“from”中所记载的MP。
另一方面,当判定为目的地MP不是本MP时,本MP在同一模块的CMA中确保临时存储写数据的区域(3306)。
然后,本MP为了从接收到的写请求消息的数据存在地址读出数据,并将该数据拷贝到步骤3306的临时存储区域中,而向同一模块的CHA发送命令数据包(3308)。
然后,本MP向接收到的写请求消息的发送源(temp from)发送拷贝完成消息(3310)。此时,本MP在拷贝完成消息(图21(5))的temp的“from”中记录本MP,在其“to”中记录写请求消息的发送源(temp from),在数据存在地址中记录步骤3306的临时存储区域。
然后,本MP为了向其它MP转发写请求消息,参照消息转发表来决定该写请求消息的转发目的地MP(3312)。
并且,本MP在转发写请求消息时,在数据存储地址中记录步骤3306的临时存储区域,在temp栏的“from”中记录本MP,在其“to”中记录转发目的地MP。
图34是表示接收到在图33的步骤3304中生成的写应答消息的MP的动作的流程图。检查接收到写应答消息的本MP是否是写应答消息中的转发目的地MP(目的地MP)(3400)。
当判定为本MP不是目的地MP时,参照消息转发目的地表来决定写应答消息的转发目的地(3402)。然后,本MP在写应答消息的temp栏的“from”中记录本MP,在其“to”中记录转发目的地MP来进行写应答消息的转发(3404)。
并且,当步骤3400中判定为本MP是目的地MP时,向与本MP同一模块的CHA发送命令,该命令是针对从主计算机向该CHA的写请求(相应请求),应该发送表示写处理已结束的应答帧(3406)。
如图31所示,CHA/DKA2当接收来自主计算机的写请求时,在CMA2中确保写数据的存储区域,向主计算机通知数据转发准备完成。然后,CHA2从主计算机接收数据,并将其转发至CMA2(3)。
当MP2接收到写请求时,针对与数据写目的地DKA0同一模块的MP0生成写请求消息,参照消息转发目的地表将其送至MP1(4)。MP1通过写请求消息得知CMA0的主区域(master area)(数据存储目的地地址)。
接收到该写请求消息的MP1,由于消息是发送给MP0的消息,因此在同一模块的CMA1中确保临时存储区域,指示CHA/DKA1将CMA2的写数据拷贝到CMA1中。从CMA2向CMA1拷贝了写数据(5)的CHA/DKA1向MP1以及MP2通知拷贝的结束。
由于来自MP2的写请求消息的目的地MP是MP0,因此MP1将写请求消息转发至MP2(6)。MP2得知CMA1的数据的存储区域,MP2指示CHA/DKA0将CMA1的数据拷贝到CMA0中(7)。
当CHA0结束该拷贝时,将其通知给MP1和MP0。MP0向DKA0发送进行将CMA0的写数据降级到HDD0中的处理的命令数据包。
MP0生成写应答消息,通过SW1将其发送到MP1。MP1通过SW2将写应答消息转发至MP2。MP0在MP2接收写应答消息后,可以通过CHA2向主计算机返回写应答帧。
在图24、图31等中,消息的跳跃数被限定为“1”,因此在存储子系统的第2模块、第3模块以及第4模块的至少一个模块中,与第1模块同样地,即使从主计算提供了请求帧,也可以避免发生数据包的死锁。
在图35中表示将交换器结构、高速缓冲存储器、CHA/DKA一起冗余化的存储子系统的块结构。该存储子系统具有两个模块3500以及3502,各模块通过交换器彼此间的路径而连接。
模块3500具有:CHA/DKA1、CMA1、CMA2、CHA/DKA2、第1冗余系统交换器(SW1A以及SW2A)以及第2冗余系统交换器(SW1B以及SW2B)。
CHA/DKA1、CMA1、CMA2以及CHA/DKA2的各组件,对于第1冗余系统(A系统)交换器和第2冗余系统(B系统)交换器,如箭头所示那样连接。
CHA/DKA1以及CHA/DKA2也可以分别通过第1冗余系统交换器以及第2冗余系统交换器的某一个与CMA1或CMA2相连。即,实现交替路径构造。箭头的方向表示命令数据包的转发方向。同一冗余系统的SW间(SW1A-SW2A、SW1B-SW2B)通过两条路径相连。
模块3502也与模块3500同样地如图所示而构成。在模块3500和3502之间,同一冗余系统的交换器通过1条路径相连。即,SW2A和SW3A通过1条路径相连,SW4A和SW1A同样通过1条路径相连。关于B系统的冗余系统交换器也相同。
在图35中为了简略而未图示MP。实际上,可以通过和CHA/DKA同样的形态进行连接,也可以在CHA/DKA上追加MP的功能,代替执行MP的功能。在此为后者。
此外,在图35中为了方便,如CHA/DKA那样一体地表示CHA和DKA,但CHA和DKA可以通过同一电路实现,或者可以通过不同电路分别实现。
组件和连接交换器的定义基于图36的连接表。该连接表被设定在CHA/DKA1、CHA/DKA2、CHA/DKA3、CHA/DKA4的各存储器中。在图37的控制表中规定了,对于来自成为起点的交换器的命令数据包所允许的交换器间的跳跃数。
例如,对于来自SW1A的命令数据包允许2次跳跃,因此,从CHA/DKA1向CMA3的数据写入,从SW1A经由SW2A到SW3A,可以在途中不将数据重定向(拷贝)到CMA中地一口气转发至CMA3。
另一方面,从CHA/DKA1向CMA3的数据写入,当想要利用B的冗余系统时,在不同模块的交换器间允许的命令数据包的方向与A冗余系统相反,因此,需要从SW2B到SW1B、从SW1B到SW4B、从SW4B到SW3B的3次跳跃,所以需要由CHA/DKA3从SW4B向CMA4临时拷贝数据,然后从CMA4读取数据,从SW4B向SW3B进行发送,CHA/DKA4将该数据拷贝到CMA3中。因此,利用A系统来进行从CHA/DKA1向CMA3的数据写入。
针对SW1A的允许跳跃数是“2”,针对SW2A的允许跳跃数是“1”的理由是,在SW1A和SW2A之间可以在两条路径的双方向上发送命令数据包,因此如图10所示,在死锁的发生中没有故障,与之相对,在跨越不同模块的SW2A和SW3A之间由1条路径构成,因此从防止死锁的观点出发,在SW2A和SW3A之间,把以SW2A为起点的数据包的发送限制为1次跳跃。关于其它交换器也同样。
将发送源SW、发送目的地SW、发送源SW的下一SW、从发送源SW到发送目的地SW之间的跳跃数、以及以图37的允许跳跃数为前提的重定向数汇总为拓扑表(图38),存储在CHA/DKA的存储器中。而且,当从发送源(CHA/DKA)向发送目的地(CMA)转发数据包时,把在数据包的转发中使用哪个冗余系统汇总为转发使用冗余系统表(图39)。
图40是用于生成转发使用冗余系统表的流程图。通过存储子系统的管理计算机执行该流程图。管理计算机以x作为数据包发送源组件,以y作为数据包的发送目的地组件(4000)。
然后,管理计算机根据图36的连接表,关于各个冗余系统,调查x和y的连接交换器(4002)。管理计算机从图38的拓扑表中,关于各冗余系统以x作为发送源SW,以y作为发送目的地SW,调查这些SW间的重定向数、跳跃数(4004)。
然后,管理计算机检查两冗余系统的重定向数是否相同(4006),若相同,则针对数据包的转发,使用SW间的跳跃数少的冗余系统(4008)。
另一方面,当两冗余系统的重定向数不相同时,使用重定向数少的冗余系统(4010)。然后,检查是否针对全部x,y进行了调查(4012),在对此进行肯定的情况下结束流程图,在对此进行否定的情况下返回步骤4000。此外,当两冗余系统中重定向数以及跳跃数相同时,在转发中可以使用任意冗余系统交换器。
图41是表示管理计算机进行的重定向数的计算的流程图。管理计算机以x作为数据包发送源组件,以y作为数据包发送目的地组件,关于连接表,针对各冗余系统调查x,y的连接交换器(4100)。
管理计算机参照允许跳跃数表(图37),针对成为数据包转发中的发送源(起点)的SW,确定允许跳跃数。然后,根据拓扑表确定发送源SW和发送目的地SW间的实际跳跃数(4102)。
然后,管理计算机从实际跳跃数减去允许跳跃数,检查其结果是否在0以下(4104)。若减法运算结果在0以下,则将重定向计数器的值作为“重定向数”登录在图38的拓扑表中(4106)。此外,也可以在管理计算机的存储器中设定图36至图39的表。
重定向计数器也被设定在管理计算机的存储器中。重定向计数器的初始值是“0”。
在将重定向计数器值登录在拓扑表中后,将该计数器复位(4108),针对下一x,y进行重定向数的计算(4110)。
另一方面,当步骤4104中的减法运算结果在1以上时,将重定向计数器值加1(4112),然后,将拓扑表的“下一SW”重新读取为起点SW(4114),从实际跳跃数中减去允许跳跃数,检查减法运算结果是否在0以下。
执行以上步骤,直到针对全部x,y结束处理(4110)。
图42是说明与检测出从SW中移除组件、组件的故障相对应的处理的流程图。管理计算机,关于与SW#(=K)连接的组件,当检测出“移除”或“故障”时(4200),检查在与该SWk相连的组件中是否有正进行动作的组件(4202)。
当肯定该判定时,不从组件向该SWk输入命令,发生死锁的可能性相应地较小,因此在允许跳跃数表中将以SWk作为起点SW的SW间允许跳跃数加1(4204)。
然后,管理计算机再次计算以SWk作为转发源SW的重定向数,再次生成转发使用冗余系统表(4206)。
另一方面,在步骤4202中,当与该SWk相连的组件中有正进行动作的组件时,针对该组件的数据包有可能引起死锁,因此取消步骤4204和步骤4206的处理。
在从图40到图42的说明中,由管理计算机执行来执行,但各MP或CHA/DKA也可以具有允许跳跃数表等的副本,参照该副本由它们分别执行。
图35所示的存储子系统,在从转发源SW向转发目的地SW的数据包转发中根据使用冗余系统表区分使用冗余系统,由此,在数据包转发的过程中不向CMA临时拷贝数据,而可以从CHA/DKA访问任何CMA。
另一方面,在冗余系统的某个SW发生了故障时,若在数据包转发的过程中向CMA拷贝数据,则可以利用交替系统路径从CHA/DKA访问任何CMA。
图43说明在从CHA/DKA1向CMA4进行访问时,使用冗余系统B的SW1B中发生故障时的数据包转发处理。
从CHA/DKA1向CMA4进行的访问利用A的冗余系统,针对SW1A允许2次跳跃,因此,使数据包从SW1A到SW3A进行2次跳跃。
CHA/DKA3将数据从SW3A临时重定向到CMA3中,CHA/DKA4从CMA3读取数据后将其拷贝到CMA4中。
由此,若允许数据的重定向,则即使在冗余系统的一方的SW中发生故障,CHA/DKA(MP)也可以从其它冗余系统访问作为目标的组件(CMA)。
下面,根据图44来说明图35的变形例。图44的实施方式与图35的实施方式的不同点是:电源被二重化为电源A和电源B、电源A向冗余系统A的交换器供给电力、电源B向冗余系统B供给电力,并且与电源配置相匹配地进一步将各CMA二重化。CMA1被进一步二重化为CMA1A和CMA1B,从电源A向CMA1A供给电力,从电源B向CMA1B供给电力。SW1A以及SW1B分别与CMA1A和CMA1B相连。其它CMA以及交换器也如图44所示,与在此说明的内容同样地构成。
根据图44,即使万一一方的电源脱落,通过把来自上位位置的写数据存储在此次进一步被二重化的CMA的双方中,写数据即使不存储在主存储装置HDD中也不会丢失写数据。
此外,图44虽未配合二重化的电源而将CHA/DKA二重化,但如图45所示,也可以配合二重化的电源将各CHA/DKA二重化。根据该结构,针对各电源,像CHA/DKA10和CHA/DKA20那样将CHA/DKA二重化,因此与交换器以及CMA的冗余化相匹配,写数据不会丢失。此外,在图45~图48中为方便起见而省略了针对冗余化电源的描绘。
接着,根据图46说明图44的动作的特点。图46的存储子系统(在图35以及图46中,都将相邻的两个模块作为象征性地表示存储子系统的模块来表示)中,为了防止所述死锁,从CHA/DKA1发送到CMA4的写数据,并非从SW1A一口气通过SW2A以及SW3A地被转发到CMA4,而是在被临时缓冲在CMA3中后被转发至CMA4。CMA4的数据存储区域是主区域(写数据的最终存储目的地),从该存储区域将数据降级到存储介质·存储设备(HDD或闪速存储器等半导体存储器、磁带或光盘等)。
此外,应该临时存储在高速缓冲存储器中的是包含数据在内的数据包,另外,由于数据包的数据部分以外可以再构成,因此不一定需要进行临时缓冲。
在图46中,当CHA/DKA4从SW4A将数据存储在CMA4的主区域时,在CMA4A和CMA4B中双重地存储数据。并且,存储子系统在CMA4A和CMA4B中双重地存储了数据的时刻向上位装置报告写结束。
分别从不同电源向CMA4A和CMA4B供给电力,因此通常不发生写数据的丢失。于是,在存储子系统在HDD中存储数据之前,可以向主计算机装置进行写完成的报告,由此,可以从存储子系统中减轻与来自主计算机装置的写命令相对应的数据包处理的负荷。
图47是图46的变形例。在图46中,当模块3502在CMA4A和CMA4B中双重地存储了写数据的时刻,向主计算机进行了写完成报告,但在图47中,不使作为临时存储区域的CMA3A的写数据存储区域无效化,而升级到正式的主区域中,与此同时,将写数据存储在CMA4B的主区域中,在此时刻,模块3502向主计算机装置进行写完成报告。通过将CMA3A的一个存储区域存储在主区域中,写数据也被双重写入CMA4B的主区域中。此外,向CMA3A供给A系统的电源,向CMA4B供给B系统的电源,因此也实现了针对电源不良的冗余化。
图48是使CHA/DKA不兼有MP功能时的框图。MP在各模块中被双重化为从电源A供给电力的A系统(例如MP1A)和从电源B供给电力的B系统(例如MP1B)。各MP分别与全部的交换器(SW1A、SW2A、SW1B、SW2B)相连。
MP所处理的用于控制的信息的数据长度短,因此MP与交换器间的路径,与联结转发与主计算机装置间的输入输出数据的CMA、CHA/DKA和各交换器的路径相比,带宽可以较窄。比较容易增多各交换器与MP之间的路径数。于是,通过在模块内的4个SW中形成从MP开始的路径,关于MP间的消息的转发不需要所述的重定向。例如,当与图29对应时不中断(4)、(6),MP2→MP0可以通过1次跳跃进行消息的转发。
图49是表示图35所示的存储子系统的多个模块通过以网状(mesh)相互结合而得到的网格系统的要部的框图。当着眼于模块1时,模块1与相邻的3个模块通过B系统的交换器相互连接。以模块1的交换器2B分别接收来自相邻的其它3个模块的命令数据包的方式形成路径,以从模块1的交换器1B分别向相邻的其它3个模块发送命令数据包的方式形成路径。
Claims (20)
1.一种与主计算机相连的、从该主计算机接受写或读访问的存储子系统,其特征在于,
具有:
分别具有存储资源的多个构成单位;
联结所述多个构成单位的交换器;
控制器,其对于将数据包经由所述交换器转发至所述多个构成单位中的目标构成单位的操作进行控制,该数据包是基于来自所述主计算机的所述写或读访问的数据包;以及
存储了所述数据包的转发规则的存储器,
所述控制器根据所述转发规则控制所述数据包的转发。
2.根据权利要求1所述的存储子系统,其特征在于,
具有将所述构成单位、所述交换器和所述控制器组合而成的多个模块,
所述多个模块构成为可以经由所述交换器进行多重联结,
所述控制器根据所述转发规则,将在所述模块的所述交换器彼此间的路径上流动的命令数据包的转发方向限定为特定方向。
3.根据权利要求2所述的存储子系统,其特征在于,
在所述多个模块的交换器间构成多条路径,
所述控制器经由所述多条路径之一转发从所述多个模块之一向其它模块的所述命令数据包,经由与所述一条路径不同的路径转发从所述其它模块向所述一个模块的所述命令数据包。
4.根据权利要求2所述的存储子系统,其特征在于,
对于在所述多个模块间转发的多个数据包中的至少一个数据包,所述控制器根据所述转发控制规则限制该数据包可以一次跨越的、所述多个模块间的路径的数量。
5.根据权利要求2所述的存储子系统,其特征在于,
对于在所述多个模块间转发的多个数据包中的至少一个数据包,所述控制器将该数据包的数据临时存储在所述多个模块的至少一个中。
6.根据权利要求5所述的存储子系统,其特征在于,
所述模块具有:控制与所述主计算机之间的输入输出的第1适配器、保存存储所述数据包的数据的主存储装置、高速缓冲存储器、以及控制与所述主存储装置之间的输入输出的第2适配器,
所述控制器经由所述交换器可以访问所述第1适配器、所述主存储装置和所述高速缓冲存储器,
多个所述模块,经由所述交换器间的路径构成所述数据包的转发路由,
构成所述转发路由的所述多个模块中的至少一个模块的所述高速缓冲存储器,临时存储所述转发途中的数据包的数据,将该数据包从所述转发路由进行临时缓冲。
7.根据权利要求6所述的存储子系统,其特征在于,
在所述转发路由上发送所述数据包的过程中从第1高速缓冲存储器向第2高速缓冲存储器转发所述数据包时,所述控制器释放所述第1高速缓冲存储器的存储了所述数据包的区域。
8.根据权利要求3所述的存储子系统,其特征在于,
与所述命令数据包对应的应答数据包,通过与该命令数据包所通过的路径相同的路径,被转发至所述命令数据包的发送源模块。
9.根据权利要求4所述的存储子系统,其特征在于,
对于在所述多个模块间转发的多个数据包中的至少一个数据包,所述控制器将该数据包的数据临时存储在所述多个模块的至少一个中。
10.根据权利要求5所述的存储子系统,其特征在于,
关于在所述多个模块的至少一个中临时存储的数据,所述控制器根据所述转发控制规则,限制用于写或读的数据包可以一次跨越的所述多个模块间的路径的数量。
11.根据权利要求2所述的存储子系统,其特征在于,
所述控制规则包含在所述多个模块间转发的消息数据包的中继目的地模块,所述控制器经由所述中继目的地模块,从转发源模块向转发目的地模块转发所述消息数据包。
12.根据权利要求11所述的存储子系统,其特征在于,
所述控制器根据所述转发控制规则,限制所述消息数据包可以一次跨越的、所述多个模块间的路径的数量。
13.根据权利要求2所述的存储子系统,其特征在于,
通过构成第1冗余系统的所述多个第1交换器和构成第2冗余系统的所述第2交换器,所述多个模块相互联结。
14.根据权利要求13所述的存储子系统,其特征在于,
针对属于所述第1冗余系统和第2冗余系统的交换器,限制与该交换器对应的数据包一次跨越的所述多个交换器间的路径的数量。
15.根据权利要求14所述的存储子系统,其特征在于,
与属于所述第1冗余系统和第2冗余系统的交换器相对应的数据包,当从该数据包的转发源到其转发目的地的所述路径数量超过所述限制时,所述控制器在所述数据包的转发途中将数据临时存储在所述模块内的组件中。
16.根据权利要求14所述的存储子系统,其特征在于,
当属于第1冗余系统的所述至少一个交换器受到妨碍时,所述控制器经由第2冗余系统将所述数据包转发至所述多个模块中的目标模块的对象组件。
17.一种存储子系统,具有可以多重联结地构成的多个模块,并接受来自与该多个模块中的至少一个模块相连的主计算机的写或读访问,
所述多个模块,构成转发数据包的转发路由,所述数据包顺次通过构成该转发路由的所述多个模块,被转发至目标模块,所述数据包是基于来自所述主计算机的所述写或读访问的数据包,
所述存储子系统的特征在于,
所述各模块具有:
控制与所述主计算机之间的输入输出的第1适配器;
保存存储所述数据包的数据的主存储装置;
高速缓冲存储器;
控制与所述主存储装置的输入输出的第2适配器;
控制器;以及
与所述第1适配器、所述主存储装置、所述高速缓冲存储器、所述第2适配器和所述控制器连接的交换器,
所述控制器经由所述交换器访问所述第1适配器、所述主存储装置、所述高速缓冲存储器和所述第2适配器来控制所述数据包的转发,
所述多个模块经由设置在各模块的所述交换器间的路径进行连接,构成所述转发路由,
所述控制器识别在所述转发路由上转发的数据包可以通过的所述路径的上限值,当所述数据包超过所述上限值地在所述转发路由上被转发时,在所述数据包超过所述上限值之前,在所述转发路由上的所述模块的所述高速缓冲存储器中临时存储所述数据包中包含的数据,然后,将该高速缓冲存储器中存储的所述数据包向其它模块进行转发。
18.根据权利要求17所述的存储子系统,其特征在于,
接受来自所述主计算机的写访问的所述模块的第1控制器,当判定为未分配存储所述写数据的存储区域时,判定是否可以对该第1控制器属于的模块的所述主存储装置分配该写数据,
当所述第1控制器否定了该判定时,该第1控制器向未超过所述上限值的范围内的其它模块的第2控制器发送所述数据包,
该第2控制器判定是否可以将从所述第1控制器发送来的所述数据包的所述写数据,向该其它模块的所述主存储装置的存储区域进行所述分配。
19.根据权利要求17所述的存储子系统,其特征在于,
所述各模块具有属于第1冗余系统的第1交换器、和属于第2冗余系统的第2交换器,
通过所述路径将同一冗余系统的所述交换器彼此连接,由此连接所述多个模块,
所述各模块的第1适配器、所述第2适配器、所述高速缓冲存储器以及所述控制器,与该模块的所述第1交换器和所述第2交换器相连接。
20.根据权利要求19所述的存储子系统,其特征在于,
所述第1交换器以及第2交换器分别由多个交换器适配器构成,
在所述各交换器适配器中设定所述上限值,
被转发至所述交换器适配器的所述数据包,当从该交换器适配器向作为目的地的其它交换器适配器转发时,受到所述上限值的限制,
为使所述数据包到达其它模块而对其进行转发的第1交换器适配器的所述上限值,被设定为小于在同一模块内转发所述数据包的第2交换器适配器的所述上限值的值,
所述模块将所述第2交换器适配器与所述第1交换器适配器相连接,并将该第1交换器适配器与其它模块的所述第1交换器适配器相连接。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007-336864 | 2007-12-27 | ||
JP2007336864A JP4639223B2 (ja) | 2007-12-27 | 2007-12-27 | ストレージサブシステム |
JP2007336864 | 2007-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101471882A true CN101471882A (zh) | 2009-07-01 |
CN101471882B CN101471882B (zh) | 2013-06-19 |
Family
ID=40540931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101850154A Active CN101471882B (zh) | 2007-12-27 | 2008-12-26 | 存储子系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7817626B2 (zh) |
EP (1) | EP2075983A3 (zh) |
JP (1) | JP4639223B2 (zh) |
CN (1) | CN101471882B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495814A (zh) * | 2011-12-16 | 2012-06-13 | 创新科存储技术有限公司 | 存储设备的控制器之间的通讯方法 |
WO2015027506A1 (zh) * | 2013-08-31 | 2015-03-05 | 华为技术有限公司 | 存储系统中操作请求处理方法和装置 |
CN104536702A (zh) * | 2014-12-31 | 2015-04-22 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN105975410A (zh) * | 2016-04-27 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种存储设备控制器间的通讯方法及系统 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010092243A (ja) * | 2008-10-07 | 2010-04-22 | Hitachi Ltd | 複数のストレージモジュールで構成されたストレージシステム |
US8321622B2 (en) * | 2009-11-10 | 2012-11-27 | Hitachi, Ltd. | Storage system with multiple controllers and multiple processing paths |
JP5511960B2 (ja) * | 2010-05-13 | 2014-06-04 | 株式会社日立製作所 | 情報処理装置、及びデータの転送方法 |
JP2013196565A (ja) * | 2012-03-22 | 2013-09-30 | Toshiba Corp | データベース処理方法、及びデータベース処理装置 |
US20160139806A1 (en) * | 2014-11-13 | 2016-05-19 | Cavium, Inc. | Independent Ordering Of Independent Transactions |
US10013385B2 (en) | 2014-11-13 | 2018-07-03 | Cavium, Inc. | Programmable validation of transaction requests |
US10469580B2 (en) * | 2014-12-12 | 2019-11-05 | International Business Machines Corporation | Clientless software defined grid |
US10554749B2 (en) | 2014-12-12 | 2020-02-04 | International Business Machines Corporation | Clientless software defined grid |
US10102135B2 (en) | 2016-04-06 | 2018-10-16 | Dell Products, Lp | Dynamically-adjusted host memory buffer |
US10719391B2 (en) | 2017-04-28 | 2020-07-21 | Hitachi, Ltd. | Storage system and storage control apparatus |
US10802760B2 (en) | 2019-03-05 | 2020-10-13 | Dell Products, L.P. | Apparatus and method of intelligent dynamic application aware storage device optimization |
KR20210046348A (ko) * | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781546A (en) * | 1996-06-25 | 1998-07-14 | International Business Machines Corporation | Route restrictions for deadlock free routing with increased bandwidth in a multi-stage cross point packet switch |
JP3228182B2 (ja) * | 1997-05-29 | 2001-11-12 | 株式会社日立製作所 | 記憶システム及び記憶システムへのアクセス方法 |
US6295575B1 (en) * | 1998-06-29 | 2001-09-25 | Emc Corporation | Configuring vectors of logical storage units for data storage partitioning and sharing |
US6349357B1 (en) * | 1999-03-04 | 2002-02-19 | Sun Microsystems, Inc. | Storage architecture providing scalable performance through independent control and data transfer paths |
US6791939B1 (en) * | 1999-06-02 | 2004-09-14 | Sun Microsystems, Inc. | Dynamic generation of deadlock-free routings |
US6850997B1 (en) * | 2000-09-27 | 2005-02-01 | International Business Machines Corporation | System, method, and program for determining the availability of paths to a device |
US7007189B2 (en) | 2001-05-07 | 2006-02-28 | Sun Microsystems, Inc. | Routing scheme using preferred paths in a multi-path interconnection fabric in a storage network |
JP3758523B2 (ja) * | 2001-05-21 | 2006-03-22 | 日本電気株式会社 | 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法 |
US6728818B2 (en) * | 2001-06-27 | 2004-04-27 | International Business Machines Corporation | Dual storage adapters utilizing clustered adapters supporting fast write caches |
JP3567911B2 (ja) * | 2001-07-17 | 2004-09-22 | 日本電気株式会社 | 疎結合マルチプロセッサシステム及びデッドロック解除方法 |
US7152113B2 (en) * | 2001-10-19 | 2006-12-19 | Sun Microsystems, Inc. | Efficient system and method of node and link insertion for deadlock-free routing on arbitrary topologies |
US7200117B2 (en) * | 2002-01-31 | 2007-04-03 | Sun Microsystems, Inc. | Method of optimizing network capacity and fault tolerance in deadlock-free routing |
JP4189171B2 (ja) | 2002-05-24 | 2008-12-03 | 株式会社日立製作所 | ディスク制御装置 |
JP2004110367A (ja) * | 2002-09-18 | 2004-04-08 | Hitachi Ltd | 記憶装置システムの制御方法、記憶制御装置、および記憶装置システム |
JP2004246439A (ja) * | 2003-02-12 | 2004-09-02 | Nec Corp | クラスタシステムにおけるストール防止方式,方法およびプログラム |
JP4376040B2 (ja) * | 2003-11-27 | 2009-12-02 | 株式会社日立製作所 | 複数のプロセッサを用いて情報処理を行う装置及び方法 |
JP2006122952A (ja) | 2004-10-28 | 2006-05-18 | Aisin Aw Co Ltd | プレス加工装置 |
JP4345979B2 (ja) * | 2005-06-30 | 2009-10-14 | 富士通株式会社 | Raid装置、通信接続監視方法及びプログラム |
JP2007293738A (ja) * | 2006-04-27 | 2007-11-08 | Hitachi Ltd | ストレージシステムおよびストレージシステムの情報処理方法 |
-
2007
- 2007-12-27 JP JP2007336864A patent/JP4639223B2/ja not_active Expired - Fee Related
-
2008
- 2008-01-25 US US12/020,216 patent/US7817626B2/en not_active Expired - Fee Related
- 2008-04-25 EP EP20080251530 patent/EP2075983A3/en not_active Withdrawn
- 2008-12-26 CN CN2008101850154A patent/CN101471882B/zh active Active
-
2010
- 2010-09-22 US US12/888,268 patent/US8340087B2/en active Active
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495814A (zh) * | 2011-12-16 | 2012-06-13 | 创新科存储技术有限公司 | 存储设备的控制器之间的通讯方法 |
WO2015027506A1 (zh) * | 2013-08-31 | 2015-03-05 | 华为技术有限公司 | 存储系统中操作请求处理方法和装置 |
CN104823428A (zh) * | 2013-08-31 | 2015-08-05 | 华为技术有限公司 | 存储系统中操作请求处理方法和装置 |
RU2630377C1 (ru) * | 2013-08-31 | 2017-09-07 | Хуавэй Текнолоджиз Ко., Лтд. | Способ и устройство для обработки запроса операции в системе хранения данных |
US10009269B2 (en) | 2013-08-31 | 2018-06-26 | Huawei Technologies Co., Ltd. | Method and apparatus for processing operation request in storage system |
US10218618B2 (en) | 2013-08-31 | 2019-02-26 | Huawei Technologies Co., Ltd. | Method and apparatus for processing operation request in storage system |
CN104823428B (zh) * | 2013-08-31 | 2019-05-10 | 华为技术有限公司 | 存储系统中操作请求处理方法和装置 |
CN104536702A (zh) * | 2014-12-31 | 2015-04-22 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN104536702B (zh) * | 2014-12-31 | 2017-12-15 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN107844270A (zh) * | 2014-12-31 | 2018-03-27 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN105975410A (zh) * | 2016-04-27 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种存储设备控制器间的通讯方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101471882B (zh) | 2013-06-19 |
US20110013625A1 (en) | 2011-01-20 |
EP2075983A2 (en) | 2009-07-01 |
US8340087B2 (en) | 2012-12-25 |
EP2075983A3 (en) | 2010-06-02 |
JP4639223B2 (ja) | 2011-02-23 |
US7817626B2 (en) | 2010-10-19 |
JP2009157757A (ja) | 2009-07-16 |
US20090168784A1 (en) | 2009-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101471882A (zh) | 存储子系统 | |
CN100568881C (zh) | 用于选择存储群集以用来存取存储装置的方法和系统 | |
US6970972B2 (en) | High-availability disk control device and failure processing method thereof and high-availability disk subsystem | |
CN101504592B (zh) | 存储子系统及其控制方法 | |
US6847647B1 (en) | Method and apparatus for distributing traffic over multiple switched fiber channel routes | |
JP5376371B2 (ja) | 並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード | |
US20110145452A1 (en) | Methods and apparatus for distribution of raid storage management over a sas domain | |
US7526676B2 (en) | Slave device having independent error recovery | |
JP4189171B2 (ja) | ディスク制御装置 | |
CN1581853B (zh) | 用于处理要在网络上发送的分组的方法、系统和程序 | |
US20050182864A1 (en) | Disk controller | |
JP4445535B2 (ja) | データ転送装置,情報処理システム,データ転送プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 | |
US7545746B2 (en) | Computer system for controlling routed data amount | |
CN101430636B (zh) | 一种在冗余控制器环境下多路径管理的方法 | |
JP2007507793A (ja) | 共用資源を有するデータ記憶システム | |
US8522075B2 (en) | Storage system having storage devices for storing data and control devices for controlling the storage devices | |
US7136959B1 (en) | Data storage system having crossbar packet switching network | |
US9746986B2 (en) | Storage system and information processing method with storage devices assigning representative addresses to reduce cable requirements | |
US7336657B2 (en) | Inter-nodal data transfer system and data transfer apparatus | |
JP4123386B2 (ja) | 通信パス冗長化システム、通信パスの冗長化方法及び負荷分散プログラム | |
EP1544721A2 (en) | A method of using a storage switch | |
CN100433623C (zh) | 串行高级技术附件(sata)交换机 | |
CN105027514B (zh) | 网络系统、节点、网络管理方法和计算机可读记录介质 | |
US7454536B1 (en) | Data system having a virtual queue | |
JP6950311B2 (ja) | 情報処理システム、監視装置、およびネットワーク機器 |
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 |