專利名稱:存儲子系統的制作方法
技術領域:
本發明涉及存儲子系統,尤其涉及可以抑制在存儲子系統內網絡中的數據
包通信中發生死鎖(deadlock)的存儲子系統。
背景技術:
一直以來,人們致力于在計算機系統中不發生死鎖。所謂死鎖,是在計算 機系統的通信網絡中,在多個數據包的處理中發生竟爭,引起多個數據包互相 退縮,數據包的處理無法進行的狀況。
例如,在特開2002-344463號公報中記載了在通過可以雙方向進行通信 的鏈路、將與處理裝置連接的節點裝置連"^成環狀的雙向環型網絡中,為了可 以容易地變更數據包的路由,節點裝置具有切斷點記錄寄存器,該切斷點記錄 寄存器記錄為了避免死鎖而在網絡中的哪個部分切斷依存關系;關于從處理裝 置輸入的數據包,4艮據該寄存器值決定向雙向環型網絡上的哪個方向送出凄t據 包。
另外,在特開2003-30166號公報中記載了為了提供在防止任務的處理 效率降低的同時解除死鎖的疏耦合多處理器系統,而具有在共享多個資源的同 時執行多個任務的主計算機群、以及死鎖檢測裝置,死鎖檢測裝置檢查由于多 個任務中的一個任務進入等待資源中的一個資源的等待狀態而發生的死鎖,當 檢測出死鎖時,根據各個任務的處理的進行程度、和針對各個任務而決定的優 先級(priority),從所述多個任務中選擇釋放已鎖定的資源的資源釋放任務。 而且,在特開2004-246439號公報中記載了為了防止由于構成集群系統
(cluster system)的主計算機間的死鎖而導致的集群系統整體的停止(stall), 計時器監視單元監視針對共享資源的資源鎖定等待,共享資源長時間鎖定檢測 單元,調查成為針對共享資源的資源鎖定等待原因的主計算機以及進程
(process),強制停止成為針對共享資源的資源鎖定等待原因的進程,釋^t由 進程確保的共享資源的鎖定,強制停止成為針對共享資源的資源鎖定等待原因的進程正在動作的主計算機,清除針對已由主計算機鎖定的共享資源的資源鎖 定請求。
在特開2002-344463號公才艮的現有例中,存在必須在環型網絡的全部區域 內管理切斷點、管理負荷增大的問題。
在特開2003-030166號公報的現有例中,當檢測出死鎖時,必須根據各個 任務的處理的進行程度和針對各個任務決定的優先級,從所述多個任務中選擇 釋放已鎖定的資源的資源釋放任務,但這對于任務的處理成為開銷 (overhead),尤其在使系統具有擴展性時,其缺少實現性。
另夕卜,當想要把特開2004-246439號公報的現有例中的集群系統應用于存 儲系統的內部網絡時存在如下問題在檢測到資源鎖定狀態之前,向存儲系統 發送了命令的主計算機引起該命令的超時(timeout),主計算機無法在超時之 前將數據包發送到目標節點。
作為可以配合用戶的事業的成長來擴大存儲容量等的規^莫的存儲系統,存 在網格存儲系統。該存儲系統經由交換器(switch)向存儲子系統的內部網絡 順次追加具有通道適配器或^t盤適配器等的較小規模的多個節點,實現可以擴 大對用戶提供的存儲資源的規模的網格結構(Grid Architecture )。
當存儲系統的某個節點從主計算機接收命令時,接收到命令的節點經由交 換器向目標節點轉發讀命令或寫命令的數據包,接收到該數據包的節點在高速 緩沖存儲器或存儲設備之間進行數據的寫入'數據的讀出,由此,存儲系統向 主計算機進行應答。
存儲子系統的內部網絡中的多個數據包的轉發,當到達多個交換器時,多 個數據包同時爭奪節點的路徑或緩沖器等資源,當此時的資源的依存關系構成 環路時,產生基于來自主計算機的命令的處理無法向前進行的所述死鎖。
以往,在網格存儲系統等升級性(易擴展性)優異的存儲系統的領域中, 未提出用于解決該死鎖的有效方案。
專利文獻1特開2002-344463號公報專利文獻2特開2003-030166號公報專利文獻3特開2004-246439號公報 發明內容因此,本發明的目的在于,在升級性優異的網格存儲系統中避免死鎖。本 發明的另一目的是,提供不需要死鎖檢測器等特別的硬件便可以防止死鎖的發 生的存儲子系統。本發明的另一目的是,提供不引起處理開銷、并且不引起主 計算機的超時便可以防止死鎖的發生的存儲子系統。
為了達成所述目的,本發明在特征在于,在可以配合用戶的事業的成長來 擴大存儲容量等的規模的網格存儲系統中,具有不引起所述死鎖的數據包轉發 規則,根據該轉發規則控制內部網絡中的數據包的轉發。
本發明,在升級性優異的網格存儲系統中可以避免死鎖。另外,根據本發 明,可以提供不需要死鎖檢測器等特別的硬件便可以防止死鎖的發生的存儲子 系統。
而且,根據本發明,能夠提供不引起處理開銷、并且不引起主計算機的超 時便可以防止死鎖的發生的存儲子系統。
圖l是與本發明相關的存儲系統的框圖。
圖2是說明從主計算機向存儲子系統發送了讀請求時的數據包轉發處理 的梯形圖(ladder chart )。
圖3是CHA從主計算機接收到寫請求的幀時的梯形圖。 圖4是高速緩沖存儲器的硬件框圖。 圖5表示交換器適配器的框結構。 圖6表示微處理器的塊結構。 圖7表示CHA/DKA的塊結構。
圖8是表示在兩個才莫塊間,通過伴隨非郵遞性訪問(non-posted access) 的數據包處理來自主計算機的讀請求的過程的框圖。
圖9是表示同時分別向第1模塊和第2模塊發送來自主計算機的讀請求 時,多個數據包引起了死鎖的狀態的框圖。
圖IO是表示在兩個交換器間雙重地形成了路徑的框圖。
圖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是表示接收到寫應答消息的的動作的流程圖。
圖35是將交換器結構冗余化的存儲子系統的塊結構。
圖36是表示模塊的組件和交換器的連接關系的連接表。表。
圖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。
具體實施例方式
接下來,說明本發明的實施方式。圖l是本發明相關的存儲系統的框圖。 該存儲系統具有,多個主計算機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發送了讀請求的幀時,存儲子系 統的交換器內 交換器間的數據包轉發的處理流程的梯形圖。
虛線表示被稱為所謂Posted Access (郵遞性訪問)的、數據包的轉發源組 件不要求來自命令數據包的轉發目的地組件的應答數據包的訪問,實線表示被 稱為所謂Non-posted Access (非郵遞性訪問)的、命令的轉發源組件要求來自 命令的轉發目的地組件的應答的訪問。請求數據的讀或寫的命令數據包,從應 該保護數據的觀點出發,通常按照非郵遞性訪問的形式被轉發。
當從主計算機10向CHA發送了幀SOI時,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是第l模塊的組件的內 部組件。CHA20-2、交換器適配器24-2、 CMA21-2是第2模塊的內部組件。
在SW24-1的端口和SW24-2的端口之間形成了一條路徑800。 CHA20-1 為了讀取第2 4莫塊的CMA21-2的數據,經由兩個SW間的路徑800訪問 CMA21畫2。
從主計算機IO接收到讀請求的CHA20-1,從發送緩沖器28A-1向SW24-1 的接收緩沖器36A-1轉發數據包。接收緩沖器36A-1根據路由表(RT),向發 送緩沖器36B(l)-1輸出數據包。發送緩沖器36B(l)-1經由路徑800向SW24-2 的接收緩沖器36A(l)-2轉發命令數據包。
該數據包經由SW24-2的發送緩沖器36(1)-2被轉發至CMA21-2的接收緩 沖器28A-2。 CMA21-2將存儲器模塊34-2的數據與應答數據包一起,經由發 送緩沖器28B-2送出到SW24-2的接收緩沖器36A(l)-2。
SW24-2經由發送緩沖器36B(l)-2和路徑800,將該數據包發送至SW24-1 的接收緩沖器36B-1。 SW24-1經由發送緩沖器36B-1,將包含數據的數據包轉 發至CHA20-1的接收緩沖器28B-l。
圖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(l)-2,基 于從主計算機向第1CHA20-1的讀請求的數據包804鎖定。結果,雙方的數據 包分別占有發送緩沖器36B(l)-1和發送緩沖器36B(l)-2,引起針對數據包的轉 發處理相互無法進行的"退縮",導致死鎖。
該死鎖是由于從一個模塊的SW向其它模塊的SW發送的命令數據包在同 一路徑800上雙向轉發而產生的。
因此,作為用于防止死鎖的數據包轉發規則的第l規則,把在多個交換器 適配器間的路徑上轉發的命令數據包的方向限定為一個方向。但是,在圖9 的例子中,當把路徑800的命令數據包的方向從SW24-1限定為SW24-2時, CHA20-2變得無法向CMA21-1發送命令數據包。
為了解決該問題,如圖10所示,在SW24-1和SW24-2之間除路徑800 以外還形成了第2路徑800A。而且,在SW24-1中設置與路徑800A分別連接 的接收緩沖器36A(2)-l和發送緩沖器36B(2)-l ,在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(l)-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中"x"所示那樣,命令數據包的轉發形成環狀,多個命令數據包互相竟爭而發生死鎖。
該死鎖的發生是由于在多個數據包各自的轉發中,各數據包經由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說明根據所述第l轉發控制規則以及第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向MP 18-1發送命令數據包1415,該命令數據包1415請求;險查 在CHA20-1取得數據的一連串的處理中是否有錯誤。
MP18-1進行該檢查,生成沒有錯誤的應答數據包1416,向CHA20-1送 出。CHA20-1向主計算機送出表示數據正確的應答幀1418。
在圖14和圖15中,通過非郵遞性訪問轉發用于向CMA存儲數據的數據 包,關于該通過非郵遞性訪問進行的數據包轉發(1414),即使有時通過多個 SW間的路徑,也將其限定為"1次跳躍"。
在非郵遞性訪問中,數據包發送源為了等待數據包發送目的地的應答,爭 奪其它數據包和節點的資源(路徑或緩沖器),容易發生死鎖,但通過使非郵 遞性訪問為"l次跳躍"可以防止該死鎖。
圖16是表示數據包的細節的數據包幀。數據包格式如(1 )那樣,由以下 各部構成表示讀命令、寫命令、消息、讀應答以及寫應答等數據包種類的數 據包種類部;數據包的發送目的地地址部;數據包的發送源地址部;數據長度 部(在讀命令的情況下是請求數據長度)、數據部(當數據包種類為讀命令或 寫應答時不存在);以及校驗碼部。
發送目的地地址部的細節如(2)所示,由交換器號碼(SW#)、模塊的組 件的特定信息、和組件內的地址構成。發送源地址部也同樣地構成。
圖17是在著眼于某交換器時的,設定了與其它SW、 CHA等同一模塊的 內部組件的連接關系的路徑狀態表。圖18以框圖表示了圖17的路徑設定狀況。 MP針對SW的各端口生成圖17的表,將其存儲在MP的存儲器模塊中,由此如圖18所示,可以設定或者定義針對一個模塊的SW的路徑的特性。
圖17所示的表對應于圖18的SW0,如圖18所示,表示了在端口O上連 接CHAO,在端口 1上連接MPO,在端口 2上連接DKAO,在端口 3上連接 CMAO,在端口 4上連接其它模塊的SW3,而且在端口 5上還連接其它模塊的 SW1。針對每個交換器適配器設定路徑狀態表。
而且,將可以從SW的各端口送出的數據包的種類登錄在路徑狀態表中。 端口 0是可以從CHAO接收命令數據包,送出應答數據包的端口;端口 l是 可以接收來自MPO的命令數據包,送出應答數據包的端口;端口2是可以從 DKAO接收命令數據包,送出應答數據包的端口;端口3是可以從CMA0接 收應答數據包,送出命令數據包的端口 ;端口 4是可以從SW3接收命令數據 包,送出應答數據包的端口;并且,端口 5是可以向SW1送出命令數據包的 端口。
從而,當用箭頭表示轉發命令數據包的方向時,成為圖18所示那樣。當 MP按照路徑狀態表控制通過SW進行的數據包的轉發時,成為圖18所示那 樣。通過路徑狀態表和基于該表的MP的控制,實現所述第l數據包轉發控制 規則(圖10)。在圖10中,限定了在SW24-1和SW24-2間的路徑上流過的命 令數據包的方向,但根據圖18,可以從端口 5送出的數據包種類是向SW1的 命令數據包、在圖17中雖未說明但SW1的端口 1的連接目的地是SWO、其 可以送出的數據包種類是應答,據此可以實現所述第l數據包轉發控制規則。 數據包的種類可以通過數據包幀進行檢測。此外,后述的消息數據包是非郵遞 性數據包,可以與命令.應答數據包無關地在例如與MP連接的端口上進行收 發。
接著,說明圖5的路由表(RT)的細節。SW將從某端口接收到的數據包 存儲在接收緩沖器中,按照RT決定將接收數據包送至哪個轉發端口的發送緩 沖器。針對SW的每個端口後定路由表。
圖19是針對圖18的SWO的CHAO所連接的接收端口 0而設定的RT。應 該轉發數據包的發送目的地地址由SW弁和組件的特定信息(ID)構成。當發 送目的地地址的SW#為SWO時,被發送給同一模塊的目標組件,按照RT向 對應的轉發端口發送數據包。當發送目的地地址的SW^為SWO以外時,為了指向其它才莫塊的sw的接 收端口 ,對端口 5發送SWO接收到的數據包。圖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模塊的CHAO從主計算機接收向第3模塊的DKA2的讀請求S2400 時,第1模塊的MPO如圖25的流程圖所示,參照LDEV-DKA表來分析來自 CHAO的命令數據包(2500 ),檢查命令數據包的對象MP是否是自身(=MPO ) (2502 )。
當對象MP是本MP (MPO)時,通過與SWO連接的DKAO,從DKAO 下屬的硬盤將數據升級到CMAO (2504)。然后,MPO向與發出了讀命令的主 計算機連接的相應CHA (CHAO)指示對主計算機進行應答處理(2506)。
另一方面,在步驟2502中,當MPO將命令數據包中的對象MP判定為其 它模塊的MP時,生成發送到該其它MP的讀請求消息(圖21 ( 1 )) (2506)。
每當生成該讀請求消息時,MPO參照圖26的消息轉發目的地表。該消息 轉發目的地表登錄了 最終目的地MP#、為了減少消息一次通過的跳躍數而應該經由的MP (轉發目的地MP# )、在最終目的地MP弁和轉發目的地MP弁之 間消息所通過的跳躍數。
MP0當生成讀請求消息時,向轉發目的地MP弁發送讀請求消息。在圖24 中,當MP0識別出消息的最終轉發目的地是MP2時(圖25的2502),通過 圖26的轉發目的地表掌握轉發目的地MP弁是MP1,生成圖21 ( 1 )所示的讀 請求消息。
在該讀請求消息中,消息欄的"to"成為MP2, "from"成為MPO, temp 欄的"to"根據消息轉發目的地表而變為MP1,其"from"變為MP0。
結果,圖24的(1)所示的讀請求消息(REQmsg)從MP0被轉發至MPl。 此時消息跨越交換器間的路徑的次數(剩余跳躍數)成為SW0和SW1之間的
而且,當讀請求消息到達MP1時,MP1分析該讀請求消息,而且參照圖 26的消息轉發表,向MP2轉發讀請求消息(圖24 ( 2 ))。
通過存儲子系統的管理計算機等事先生成消息轉發目的地表,存儲在各 MP的存儲器中。
圖27是說明MP的消息處理的流程圖,MP檢查存儲器的消息區域,確認 有無消息(2700)。然后,MP判定"有消息 " (2702),當"沒有消息"時 返回步驟2700。
另一方面,當"有消息"時,判斷消息(msg)的種類是讀請求消息、讀 應答消息、寫請求消息、寫完成消息還是拷貝完成消息(2704),分別進行消 息的處理。
圖28是說明接收到讀請求消息的MP的處理的流程圖。接收到讀請求消 息的MP,;險查成為讀請求消息中的最終目的地的MP (圖21 ( 1 )的讀請求 消息的消息欄的"to")是否是自身(2講)。
當對此進行肯定時,MP將讀數據向同一模塊的CMA進行升級處理 (2802)。然后,鎖定已升級了數據的區域,即不許可將該區域無效化(2804)。 然后,MP生成讀應答消息(圖21 ( 2 )),將其發送至讀請求消息的發送源MP (2806 )。
在讀應答消息的數據存在地址中,登錄讀數據存在的CMA和該CMA的數據存儲區域。在消息欄的"from"中登錄接收到讀請求消息的MP#,在其 "to"中登錄接收到主計算機讀請求的MP。
在步驟2800中,接收到讀請求消息的MP,當判定出成為讀請求消息中 的最終目的地的MP不是自身時,進行讀請求消息的再轉發(2808)。在讀請 求消息(圖21 (l))的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 ) X
在從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中確保臨時存儲區域,通過CHAl 將CMA2中的目標數據拷貝到CMA1中(5 )。
然后,MP1向MP0轉發讀應答消息(6)。并且,接收到讀應答消息的 MPO (本MP )通過CHAO取得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的消息,因此在同 一模塊的CMAl中確保臨時存儲區域,指示CHA/DKA1將CMA2的寫數據 拷貝到CMAl中。從CMA2向CMAl拷貝了寫數據(5 )的CHA/DKA1向MP1以及MP2通知拷貝的結束。
由于來自MP2的寫請求消息的目的地MP是MPO,因此MP1將寫請求消 息轉發至MP2( 6 )。MP2得知CMA1的數據的存儲區域,MP2指示CHA/DKA0 將CMA1的數據拷貝到CMAO中(7 )。
當CHAO結束該拷貝時,將其通知給MP1和MPO。 MPO向DKAO發送進 行將CMAO的寫數據降級到HDDO中的處理的命令數據包。
MPO生成寫應答消息,通過SW1將其發送到MP1。 MP1通過SW2將寫 應答消息轉發至MP2。 MPO在MP2接收寫應答消息后,可以通過CHA2向主 計算機返回寫應答幀。
在圖24、圖31等中,消息的跳躍數被限定為"1",因此在存儲子系統的 第2模塊、第3模塊以及第4模塊的至少一個模塊中,與第l模塊同樣地,即 使從主計算提供了請求幀,也可以避免發生數據包的死鎖。
在圖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"的理
因此如圖IO所示,在死鎖的發生中沒有故障,與之相對,在跨越不同模塊的 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)。
另一方面,當兩冗余系統的重定向數不相同時,使用重定向數少的冗余系 統(4010X然后,檢查是否針對全部x, y進行了調查(4012),在對此進行 肯定的情況下結束流程圖,在對此進行否定的情況下返回步驟4000。此外, 當兩冗余系統中重定向數以及跳躍數相同時,在轉發中可以使用任意冗余系統 交換器。
圖41是表示管理計算機進行的重定向數的計算的流程圖。管理計算機以 x作為數據包發送源組件,以y作為數據包發送目的地組件,關于連接表,針 對各冗余系統調查x, y的連接交換器(4100)。
管理計算機參照允許跳躍數表(圖37),針對成為數據包轉發中的發送源 (起點)的SW,確定允許跳躍數。然后,根據拓樸表確定發送源SW和發送 目的地SW間的實際跳躍數(4102 )。
然后,管理計算機從實際跳躍數減去允許跳躍數,檢查其結果是否在0以 下(4104X若減法運算結果在0以下,則將重定向計數器的值作為"重定向 數,,登錄在圖38的拓樸表中(4106)。此外,也可以在管理計算機的存儲器中 設定圖36至圖39的表。
重定向計數器也被設定在管理計算機的存儲器中。重定向計數器的初始值 是"0"。
在將重定向計數器值登錄在拓樸表中后,將該計數器復位(4108),針對 下一x, y進行重定向數的計算(4110)。
另一方面,當步驟4104中的減法運算結果在1以上時,將重定向計數器 值加l (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系 統(例如MPIB )。各MP分別與全部的交換器(SW1A、 SW2A、 SW1B、 SW2B ) 相連。
MP所處理的用于控制的信息的數據長度短,因此MP與交換器間的路徑, 與聯結轉發與主計算機裝置間的輸入輸出數據的CMA、 CHA/DKA和各交換 器的路徑相比,帶寬可以較窄。比較容易增多各交換器與MP之間的路徑數。 于是,通過在模塊內的4個SW中形成從MP開始的路徑,關于MP間的消息 的轉發不需要所述的重定向。例如,當與圖29對應時不中斷(4)、 (6), MP2—MPO可以通過1次跳躍進行消息的轉發。
圖49是表示圖35所示的存儲子系統的多個模塊通過以網狀(mesh)相互 結合而得到的網格系統的要部的框圖。當著眼于模塊l時,模塊1與相鄰的3 個模塊通過B系統的交換器相互連接。以模塊1的交換器2B分別接收來自相 鄰的其它3個模塊的命令數據包的方式形成路徑,以從模塊1的交換器IB分 別向相鄰的其它3個模塊發送命令數據包的方式形成路徑。
權利要求
1. 一種與主計算機相連的、從該主計算機接受寫或讀訪問的存儲子系統,其特征在于,具有分別具有存儲資源的多個構成單位;聯結所述多個構成單位的交換器;控制器,其對于將數據包經由所述交換器轉發至所述多個構成單位中的目標構成單位的操作進行控制,該數據包是基于來自所述主計算機的所述寫或讀訪問的數據包;以及存儲了所述數據包的轉發規則的存儲器,所述控制器根據所述轉發規則控制所述數據包的轉發。
2. 根據權利要求l所述的存儲子系統,其特征在于, 具有將所述構成單位、所述交換器和所述控制器組合而成的多個模塊, 所述多個模塊構成為可以經由所述交換器進行多重聯結,所述控制器根據所述轉發規則,將在所述模塊的所述交換器彼此間的路徑 上流動的命令數據包的轉發方向限定為特定方向。
3. 根據權利要求2所述的存儲子系統,其特征在于, 在所述多個模塊的交換器間構成多條路徑,所述控制器經由所述多條路徑之一轉發從所述多個模塊之一向其它模塊 的所述命令數據包,經由與所述一條路徑不同的路徑轉發從所述其它模塊向所 述一個4莫塊的所述命令數據包。
4. 根據權利要求2所述的存儲子系統,其特征在于,對于在所述多個模塊間轉發的多個數據包中的至少一個數據包,所述控制 器根據所述轉發控制規則限制該數據包可以 一次跨越的、所述多個模塊間的路 徑的數量。
5. 根據權利要求2所述的存儲子系統,其特征在于,對于在所述多個模塊間轉發的多個數據包中的至少一個數據包,所述控制 器將該數據包的數據臨時存儲在所述多個模塊的至少 一個中。
6. 根據權利要求5所述的存儲子系統,其特征在于, 所述模塊具有控制與所述主計算機之間的輸入輸出的第l適配器、保存存儲所述數據包的數據的主存儲裝置、高速緩沖存儲器、以及控制與所述主存儲裝置之間的輸入輸出的第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冗余系統的交換器,限制與該交換器對應的數據包一次3爭越的所述多個交換器間的路徑的數量。
15. 根據權利要求14所述的存儲子系統,其特征在于, 與屬于所述第1冗余系統和第2冗余系統的交換器相對應的數據包,當從該數據包的轉發源到其轉發目的地的所述路徑數量超過所述限制時,所述控制 器在所述數據包的轉發途中將數據臨時存儲在所述模塊內的組件中。
16. 才艮據權利要求14所述的存儲子系統,其特征在于,當屬于第1冗余系統的所述至少一個交換器受到妨礙時,所述控制器經由 第2冗余系統將所述數據包轉發至所述多個模塊中的目標模塊的對象組件。
17. —種存儲子系統,具有可以多重聯結地構成的多個i^塊,并接受來自 與該多個^^莫塊中的至少一個模塊相連的主計算機的寫或讀訪問,所述多個;f莫塊,構成轉發數據包的轉發路由,所述數據包順次通過構成該轉發路由的所述多個模塊,被轉發至目標模塊,所述數據包是基于來自所述主 計算機的所述寫或讀訪問的數據包,所述存儲子系統的特征在于,所述各模塊具有控制與所述主計算機之間的輸入輸出的第1適配器; 保存存儲所述數據包的數據的主存儲裝置; 高速緩沖存儲器;控制與所述主存儲裝置的輸入輸出的第2適配器; 控制器;以及與所述第1適配器、所述主存儲裝置、所述高速緩沖存儲器、所述第2 適配器和所述控制器連接的交換器,所述控制器經由所述交換器訪問所述第1適配器、所述主存儲裝置、所述高速緩沖存儲器和所述第2適配器來控制所述數據包的轉發,所述多個模塊經由設置在各模塊的所述交換器間的路徑進行連接,構成所 述轉發路由,所述控制器識別在所述轉發路由上轉發的數據包可以通過的所述路徑的 上限值,當所述數據包超過所述上限值地在所述轉發路由上被轉發時,在所述 數據包超過所述上限值之前,在所述轉發路由上的所述模塊的所述高速緩沖存 儲器中臨時存儲所述數據包中包含的數據,然后,將該高速緩沖存儲器中存儲 的所述數據包向其它4莫塊進行轉發。
18. 根據權利要求17所述的存儲子系統,其特征在于, 接受來自所述主計算機的寫訪問的所述模塊的第l控制器,當判定為未分配存儲所述寫數據的存儲區域時,判定是否可以對該第1控制器屬于的模塊的 所述主存儲裝置分配該寫數據,當所述第l控制器否定了該判定時,該第l控制器向未超過所述上限值的 范圍內的其它模塊的第2控制器發送所述數據包,該第2控制器判定是否可以將從所述第l控制器發送來的所述數據包的所 述寫數據,向該其它模塊的所述主存儲裝置的存儲區域進行所述分配。
19. 根據權利要求17所述的存儲子系統,其特征在于, 所述各才莫塊具有屬于第i冗余系統的第1交換器、和屬于第2冗余系統的第2交換器,通過所述路徑將同一冗余系統的所述交換器彼此連接,由此連接所述多個 模塊,所述各模塊的第1適配器、所述第2適配器、所述高速緩沖存儲器以及所 述控制器,與該模塊的所述第1交換器和所述第2交換器相連接。
20. 根據權利要求19所述的存儲子系統,其特征在于, 所述第1交換器以及第2交換器分別由多個交換器適配器構成, 在所述各交換器適配器中設定所述上限值,被轉發至所述交換器適配器的所述數據包,當從該交換器適配器向作為目 的地的其它交換器適配器轉發時,受到所述上限值的限制,為使所述數據包到達其它模塊而對其進行轉發的第1交換器適配器的所述上限值,被設定為小于在同一模塊內轉發所述數據包的第2交換器適配器的 所述上限值的值,所述模塊將所述第2交換器適配器與所述第1交換器適配器相連接,并將 該第1交換器適配器與其它模塊的所述第1交換器適配器相連接。
全文摘要
本發明提供一種存儲子系統,其可以在可升級性優異的網格存儲系統中避免死鎖。本發明的存儲子系統是連接主計算機的、從該主計算機接受寫或讀訪問的存儲子系統,其具有分別具有存儲資源的多個模塊(16)、聯結多個模塊的交換器(24)、對于將基于來自主計算機的寫或讀訪問的數據包經由交換器轉發至多個模塊中的目標模塊的操作進行控制的MP(18)、以及存儲了數據包的轉發規則的存儲器。控制器根據轉發規則控制數據包的轉發。
文檔編號H04L12/56GK101471882SQ20081018501
公開日2009年7月1日 申請日期2008年12月26日 優先權日2007年12月27日
發明者中村崇仁, 福田秀明, 細谷睦, 藤林昭 申請人:株式會社日立制作所