專利名稱:存儲子系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲子系統(tǒng),尤其涉及可以抑制在存儲子系統(tǒng)內(nèi)網(wǎng)絡(luò)中的數(shù)據(jù)
包通信中發(fā)生死鎖(deadlock)的存儲子系統(tǒng)。
背景技術(shù):
一直以來,人們致力于在計(jì)算機(jī)系統(tǒng)中不發(fā)生死鎖。所謂死鎖,是在計(jì)算 機(jī)系統(tǒng)的通信網(wǎng)絡(luò)中,在多個數(shù)據(jù)包的處理中發(fā)生竟?fàn)帲鸲鄠€數(shù)據(jù)包互相 退縮,數(shù)據(jù)包的處理無法進(jìn)行的狀況。
例如,在特開2002-344463號公報(bào)中記載了在通過可以雙方向進(jìn)行通信 的鏈路、將與處理裝置連接的節(jié)點(diǎn)裝置連"^成環(huán)狀的雙向環(huán)型網(wǎng)絡(luò)中,為了可 以容易地變更數(shù)據(jù)包的路由,節(jié)點(diǎn)裝置具有切斷點(diǎn)記錄寄存器,該切斷點(diǎn)記錄 寄存器記錄為了避免死鎖而在網(wǎng)絡(luò)中的哪個部分切斷依存關(guān)系;關(guān)于從處理裝 置輸入的數(shù)據(jù)包,4艮據(jù)該寄存器值決定向雙向環(huán)型網(wǎng)絡(luò)上的哪個方向送出凄t據(jù) 包。
另外,在特開2003-30166號公報(bào)中記載了為了提供在防止任務(wù)的處理 效率降低的同時解除死鎖的疏耦合多處理器系統(tǒng),而具有在共享多個資源的同 時執(zhí)行多個任務(wù)的主計(jì)算機(jī)群、以及死鎖檢測裝置,死鎖檢測裝置檢查由于多 個任務(wù)中的一個任務(wù)進(jìn)入等待資源中的一個資源的等待狀態(tài)而發(fā)生的死鎖,當(dāng) 檢測出死鎖時,根據(jù)各個任務(wù)的處理的進(jìn)行程度、和針對各個任務(wù)而決定的優(yōu) 先級(priority),從所述多個任務(wù)中選擇釋放已鎖定的資源的資源釋放任務(wù)。 而且,在特開2004-246439號公報(bào)中記載了為了防止由于構(gòu)成集群系統(tǒng)
(cluster system)的主計(jì)算機(jī)間的死鎖而導(dǎo)致的集群系統(tǒng)整體的停止(stall), 計(jì)時器監(jiān)視單元監(jiān)視針對共享資源的資源鎖定等待,共享資源長時間鎖定檢測 單元,調(diào)查成為針對共享資源的資源鎖定等待原因的主計(jì)算機(jī)以及進(jìn)程
(process),強(qiáng)制停止成為針對共享資源的資源鎖定等待原因的進(jìn)程,釋^t由 進(jìn)程確保的共享資源的鎖定,強(qiáng)制停止成為針對共享資源的資源鎖定等待原因的進(jìn)程正在動作的主計(jì)算機(jī),清除針對已由主計(jì)算機(jī)鎖定的共享資源的資源鎖 定請求。
在特開2002-344463號公才艮的現(xiàn)有例中,存在必須在環(huán)型網(wǎng)絡(luò)的全部區(qū)域 內(nèi)管理切斷點(diǎn)、管理負(fù)荷增大的問題。
在特開2003-030166號公報(bào)的現(xiàn)有例中,當(dāng)檢測出死鎖時,必須根據(jù)各個 任務(wù)的處理的進(jìn)行程度和針對各個任務(wù)決定的優(yōu)先級,從所述多個任務(wù)中選擇 釋放已鎖定的資源的資源釋放任務(wù),但這對于任務(wù)的處理成為開銷 (overhead),尤其在使系統(tǒng)具有擴(kuò)展性時,其缺少實(shí)現(xiàn)性。
另夕卜,當(dāng)想要把特開2004-246439號公報(bào)的現(xiàn)有例中的集群系統(tǒng)應(yīng)用于存 儲系統(tǒng)的內(nèi)部網(wǎng)絡(luò)時存在如下問題在檢測到資源鎖定狀態(tài)之前,向存儲系統(tǒng) 發(fā)送了命令的主計(jì)算機(jī)引起該命令的超時(timeout),主計(jì)算機(jī)無法在超時之 前將數(shù)據(jù)包發(fā)送到目標(biāo)節(jié)點(diǎn)。
作為可以配合用戶的事業(yè)的成長來擴(kuò)大存儲容量等的規(guī)^莫的存儲系統(tǒng),存 在網(wǎng)格存儲系統(tǒng)。該存儲系統(tǒng)經(jīng)由交換器(switch)向存儲子系統(tǒng)的內(nèi)部網(wǎng)絡(luò) 順次追加具有通道適配器或^t盤適配器等的較小規(guī)模的多個節(jié)點(diǎn),實(shí)現(xiàn)可以擴(kuò) 大對用戶提供的存儲資源的規(guī)模的網(wǎng)格結(jié)構(gòu)(Grid Architecture )。
當(dāng)存儲系統(tǒng)的某個節(jié)點(diǎn)從主計(jì)算機(jī)接收命令時,接收到命令的節(jié)點(diǎn)經(jīng)由交 換器向目標(biāo)節(jié)點(diǎn)轉(zhuǎn)發(fā)讀命令或?qū)懨畹臄?shù)據(jù)包,接收到該數(shù)據(jù)包的節(jié)點(diǎn)在高速 緩沖存儲器或存儲設(shè)備之間進(jìn)行數(shù)據(jù)的寫入'數(shù)據(jù)的讀出,由此,存儲系統(tǒng)向 主計(jì)算機(jī)進(jìn)行應(yīng)答。
存儲子系統(tǒng)的內(nèi)部網(wǎng)絡(luò)中的多個數(shù)據(jù)包的轉(zhuǎn)發(fā),當(dāng)?shù)竭_(dá)多個交換器時,多 個數(shù)據(jù)包同時爭奪節(jié)點(diǎn)的路徑或緩沖器等資源,當(dāng)此時的資源的依存關(guān)系構(gòu)成 環(huán)路時,產(chǎn)生基于來自主計(jì)算機(jī)的命令的處理無法向前進(jìn)行的所述死鎖。
以往,在網(wǎng)格存儲系統(tǒng)等升級性(易擴(kuò)展性)優(yōu)異的存儲系統(tǒng)的領(lǐng)域中, 未提出用于解決該死鎖的有效方案。
專利文獻(xiàn)1特開2002-344463號公報(bào)專利文獻(xiàn)2特開2003-030166號公報(bào)專利文獻(xiàn)3特開2004-246439號公報(bào) 發(fā)明內(nèi)容因此,本發(fā)明的目的在于,在升級性優(yōu)異的網(wǎng)格存儲系統(tǒng)中避免死鎖。本 發(fā)明的另一目的是,提供不需要死鎖檢測器等特別的硬件便可以防止死鎖的發(fā) 生的存儲子系統(tǒng)。本發(fā)明的另一目的是,提供不引起處理開銷、并且不引起主 計(jì)算機(jī)的超時便可以防止死鎖的發(fā)生的存儲子系統(tǒng)。
為了達(dá)成所述目的,本發(fā)明在特征在于,在可以配合用戶的事業(yè)的成長來 擴(kuò)大存儲容量等的規(guī)模的網(wǎng)格存儲系統(tǒng)中,具有不引起所述死鎖的數(shù)據(jù)包轉(zhuǎn)發(fā) 規(guī)則,根據(jù)該轉(zhuǎn)發(fā)規(guī)則控制內(nèi)部網(wǎng)絡(luò)中的數(shù)據(jù)包的轉(zhuǎn)發(fā)。
本發(fā)明,在升級性優(yōu)異的網(wǎng)格存儲系統(tǒng)中可以避免死鎖。另外,根據(jù)本發(fā) 明,可以提供不需要死鎖檢測器等特別的硬件便可以防止死鎖的發(fā)生的存儲子 系統(tǒng)。
而且,根據(jù)本發(fā)明,能夠提供不引起處理開銷、并且不引起主計(jì)算機(jī)的超 時便可以防止死鎖的發(fā)生的存儲子系統(tǒng)。
圖l是與本發(fā)明相關(guān)的存儲系統(tǒng)的框圖。
圖2是說明從主計(jì)算機(jī)向存儲子系統(tǒng)發(fā)送了讀請求時的數(shù)據(jù)包轉(zhuǎn)發(fā)處理 的梯形圖(ladder chart )。
圖3是CHA從主計(jì)算機(jī)接收到寫請求的幀時的梯形圖。 圖4是高速緩沖存儲器的硬件框圖。 圖5表示交換器適配器的框結(jié)構(gòu)。 圖6表示微處理器的塊結(jié)構(gòu)。 圖7表示CHA/DKA的塊結(jié)構(gòu)。
圖8是表示在兩個才莫塊間,通過伴隨非郵遞性訪問(non-posted access) 的數(shù)據(jù)包處理來自主計(jì)算機(jī)的讀請求的過程的框圖。
圖9是表示同時分別向第1模塊和第2模塊發(fā)送來自主計(jì)算機(jī)的讀請求 時,多個數(shù)據(jù)包引起了死鎖的狀態(tài)的框圖。
圖IO是表示在兩個交換器間雙重地形成了路徑的框圖。
圖11是表示第1模塊經(jīng)由路徑與第2模塊連接,第2模塊經(jīng)由路徑與第 3模塊連接,第3模塊經(jīng)由路徑與第1模塊連接的框圖。
圖12是表示在圖11中發(fā)生了數(shù)據(jù)包轉(zhuǎn)發(fā)中的死鎖的狀態(tài)的框圖。圖13是說明圖11的死鎖:故解除的情形的框圖。
圖14是根據(jù)第1轉(zhuǎn)發(fā)控制規(guī)則以及第2轉(zhuǎn)發(fā)控制規(guī)則,處理來自主計(jì)算
機(jī)的讀命令的實(shí)施方式相關(guān)的梯形圖。
圖15是表示與圖14的梯形圖相關(guān)的、多個模塊間的內(nèi)部組件(component) 的連接結(jié)構(gòu)的框圖。 圖16是數(shù)據(jù)包幀。
圖17是著眼于某交換器時的、設(shè)定了與其它SW或CHA等同一模塊的 內(nèi)部組件的連接關(guān)系的路徑狀態(tài)表。
圖18是表示圖17的路徑設(shè)定狀態(tài)的框圖。 圖19是路由表的一例。
圖20是說明SW所屬的模塊的MP根據(jù)路徑狀態(tài)表設(shè)定RT時的動作的 流程圖。
圖21是消息格式。
圖22是LDEV-DKA表。
圖23是表示了 PDEV (Physical Device )、與數(shù)據(jù)所存在的LDEV號碼以 及LDEV的邏輯地址之間的對應(yīng)關(guān)系的DKA表。
圖24是串連連接了 4個模塊的SW的存儲子系統(tǒng)的框圖。
圖25是表示接收主計(jì)算機(jī)讀請求的MP進(jìn)行的處理步驟的流程圖。
圖26是消息轉(zhuǎn)發(fā)目的地表。
圖27是說明MP的消息處理的流程圖。
圖28是說明MP的讀請求消息處理的流程圖。
圖29是說明讀應(yīng)答消息的傳遞的存儲子系統(tǒng)的框圖。
圖30是接收到讀應(yīng)答消息的MP的動作相關(guān)的流程圖。
圖31是處理主計(jì)算機(jī)寫訪問的存儲子系統(tǒng)的框圖。
圖32是說明接收到主計(jì)算機(jī)寫請求的MP的動作的流程圖。
圖33是表示接收到寫請求消息的MP的處理動作的流程圖。
圖34是表示接收到寫應(yīng)答消息的的動作的流程圖。
圖35是將交換器結(jié)構(gòu)冗余化的存儲子系統(tǒng)的塊結(jié)構(gòu)。
圖36是表示模塊的組件和交換器的連接關(guān)系的連接表。表。
圖38是記錄了重定向數(shù)的拓樸表,該重定向數(shù)以發(fā)送源SW、發(fā)送目的
地SW、發(fā)送目的地SW的下一SW、從發(fā)送源SW到發(fā)送目的地SW間的跳 躍數(shù)、以及允許跳躍數(shù)為前提。
圖39是決定在數(shù)據(jù)包的轉(zhuǎn)發(fā)中使用的冗余系統(tǒng)的轉(zhuǎn)發(fā)使用冗余系統(tǒng)表。
圖40是用于生成轉(zhuǎn)發(fā)使用冗余系統(tǒng)表的流程圖。
圖41是表示重定向數(shù)的計(jì)算的細(xì)節(jié)的流程圖。
圖42是說明當(dāng)從交換器中移除與SW連接的組件、或者組件中發(fā)生了故 障時,放寬交換器間跳躍數(shù)等的修正處理的流程圖。
圖43是說明在一方的冗余系統(tǒng)交換器中發(fā)生了故障時的數(shù)據(jù)包轉(zhuǎn)發(fā)的存 儲子系統(tǒng)的框圖。
圖44是與圖35的變形例相關(guān)的框圖。
圖45是表示配合二重化的電源將各CHA/DKA二重化的圖44的變形例的 框圖。
圖46是說明圖44的實(shí)施方式的動作的框圖。 圖47是與圖46的變形例相關(guān)的框圖。
圖48是與不使CHA/DKA兼有MP功能的實(shí)施方式相關(guān)的框圖。
圖49是圖35所示的存儲子系統(tǒng)的多個模塊以網(wǎng)狀相互結(jié)合而得到的框圖。
符號說明
10:主計(jì)算機(jī);12: SAN; 14:存儲子系統(tǒng);16:模塊(構(gòu)成單位);18: 微處理器;20:通道適配器;21:高速緩沖存儲器;22:磁盤適配器;24:交 換器;26: HDD。
具體實(shí)施例方式
接下來,說明本發(fā)明的實(shí)施方式。圖l是本發(fā)明相關(guān)的存儲系統(tǒng)的框圖。 該存儲系統(tǒng)具有,多個主計(jì)算機(jī)10經(jīng)由作為網(wǎng)絡(luò)單元的SAN12與存儲子系統(tǒng) 14相連的結(jié)構(gòu)。
該存儲子系統(tǒng)14具有作為網(wǎng)格存儲(Grid Storage)的構(gòu)造。即,模塊16可以順次追加到存儲子系統(tǒng)中。模塊16具有存儲資源、通道適配器等控制 針對存儲資源的數(shù)據(jù)輸入輸出的多個內(nèi)部組件。
各個模塊16具備通道適配器(CHA) 20、微處理器(MP) 18、高速緩 沖存儲器適配器(圖中表示為CMA或CM) 21、石茲盤適配器(DKA) 22、作 為存儲資源的硬盤驅(qū)動器(HDD)等存儲設(shè)備(主存儲設(shè)備)26、以及交換 器適配器(SW) 24。
通道適配器20控制與主計(jì)算機(jī)10之間的數(shù)據(jù)轉(zhuǎn)發(fā)。磁盤適配器22控制 與存儲設(shè)備26之間的數(shù)據(jù)轉(zhuǎn)發(fā)。高速緩沖存儲器適配器21臨時存儲在主計(jì)算 機(jī)10與存儲設(shè)備26之間轉(zhuǎn)發(fā)的數(shù)據(jù)。微處理器18控制通道適配器20和磁盤 適配器22,控制通過交換器適配器24的數(shù)據(jù)包轉(zhuǎn)發(fā)。
各個模塊的交換器適配器24,使自身模塊的CHA20、 MP18、 CMA21以 及DKA22相互連接,同時使這些內(nèi)部組件與其它模塊的交換器適配器接合, 構(gòu)成實(shí)現(xiàn)在一個模塊內(nèi)以及與其它模塊間的數(shù)據(jù)包轉(zhuǎn)發(fā)的內(nèi)部網(wǎng)絡(luò)。
從而,來自主計(jì)算機(jī)10的讀或?qū)懨?,通過經(jīng)由各模塊的交換器適配器 24、進(jìn)而經(jīng)由其它模塊的交換器適配器的數(shù)據(jù)包轉(zhuǎn)發(fā),被傳遞到目標(biāo)模塊的 DKA22。
圖2表示從主計(jì)算機(jī)10向存儲子系統(tǒng)14發(fā)送了讀請求的幀時,存儲子系 統(tǒng)的交換器內(nèi) 交換器間的數(shù)據(jù)包轉(zhuǎn)發(fā)的處理流程的梯形圖。
虛線表示被稱為所謂Posted Access (郵遞性訪問)的、數(shù)據(jù)包的轉(zhuǎn)發(fā)源組 件不要求來自命令數(shù)據(jù)包的轉(zhuǎn)發(fā)目的地組件的應(yīng)答數(shù)據(jù)包的訪問,實(shí)線表示被 稱為所謂Non-posted Access (非郵遞性訪問)的、命令的轉(zhuǎn)發(fā)源組件要求來自 命令的轉(zhuǎn)發(fā)目的地組件的應(yīng)答的訪問。請求數(shù)據(jù)的讀或?qū)懙拿顢?shù)據(jù)包,從應(yīng) 該保護(hù)數(shù)據(jù)的觀點(diǎn)出發(fā),通常按照非郵遞性訪問的形式被轉(zhuǎn)發(fā)。
當(dāng)從主計(jì)算機(jī)10向CHA發(fā)送了幀SOI時,CHA對該幀進(jìn)行分析,形成 表示幀的種類(讀請求)和數(shù)據(jù)存在的地址的數(shù)據(jù)包S10,經(jīng)由SW將其傳遞 給MP。
接收該應(yīng)答的MP分析數(shù)據(jù)處于哪個DKA下屬的存儲設(shè)備、或者處于哪 個CMA,若未在CMA中存儲數(shù)據(jù),則形成向該DKA請求數(shù)據(jù)的命令數(shù)據(jù)包 S12并對其進(jìn)行發(fā)送。在圖2的例子中表示了數(shù)據(jù)最初未存儲在CMA中、而僅存在于HDD26 中的情況。DKA、 CMA以及HDD處于與MP相同的模塊中或者處于其它模 塊中,根據(jù)數(shù)據(jù)的存在場所而不同。
DKA根據(jù)來自MP的數(shù)據(jù)包S12訪問HDD26的特定區(qū)域來讀出數(shù)據(jù),在 通過非郵遞性訪問S14將該數(shù)據(jù)向CMA升級(staging)的同時,在向CMA 的寫入結(jié)束的時刻,將表示該意思的數(shù)據(jù)包S15發(fā)送至MP。
當(dāng)MP接收數(shù)據(jù)包時,向CHA發(fā)送數(shù)據(jù)包S16,該數(shù)據(jù)包S16通知已向 CMA升級了數(shù)據(jù)、和數(shù)據(jù)存在的CMA的地址。于是,CHA訪問CMA的特 定地址來讀取目標(biāo)數(shù)據(jù)(S18),將該數(shù)據(jù)通知給主計(jì)算機(jī)(S19)。
當(dāng)CHA20結(jié)束向主計(jì)算機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)時,將表示該意思的數(shù)據(jù)包S19A通 知給MP18。然后,MP通過數(shù)據(jù)的保證碼等確認(rèn)在讀取了數(shù)據(jù)的一連串處理 中沒有錯誤,向CHA通知數(shù)據(jù)包20,該數(shù)據(jù)包20請求向主計(jì)算機(jī)發(fā)出正常 讀取結(jié)束的應(yīng)答幀S21。
接著,圖3是CHA從主計(jì)算機(jī)接收到寫請求的幀S30時的梯形圖。當(dāng)CHA 從主計(jì)算機(jī)接收到寫請求時,CHA向MP發(fā)送與寫請求相對應(yīng)的數(shù)據(jù)包S32, MP分析應(yīng)該將數(shù)據(jù)存儲在哪個CMA的哪個地址,然后,MP向CHA發(fā)送請 求來自主計(jì)算機(jī)的數(shù)據(jù)發(fā)送的命令數(shù)據(jù)包S34。 CHA向主計(jì)算機(jī)發(fā)送請求數(shù) 據(jù)發(fā)送的幀S36。
當(dāng)CHA從主計(jì)算機(jī)接收到數(shù)據(jù)幀38時,作為非郵遞性訪問,CHA將從 MP通知的CMA的特定地址中寫入數(shù)據(jù)的命令數(shù)據(jù)包S40通知給相應(yīng)的 CMA。
接收到來自CMA的應(yīng)答的CHA向MP通知結(jié)束了數(shù)據(jù)轉(zhuǎn)發(fā)的數(shù)據(jù)包 S42。接收到該通知的MP確認(rèn)是否將數(shù)據(jù)正確地寫入了 CMA,向CHA發(fā)送 數(shù)據(jù)包S44。 CHA向主計(jì)算機(jī)發(fā)送表示正常結(jié)束的應(yīng)答幀S46。
MP為了將CMA的數(shù)據(jù)降級(destaging),向控制應(yīng)該存儲數(shù)據(jù)的HDD26 的DKA發(fā)送數(shù)據(jù)包S48,該數(shù)據(jù)包S48通知數(shù)據(jù)存在的CMA的地址、以及 寫入該數(shù)據(jù)的硬盤驅(qū)動器26的地址。
DKA訪問CMA的該地址來取出相應(yīng)數(shù)據(jù),將請求將該數(shù)據(jù)發(fā)送至DKA 的命令數(shù)據(jù)包作為非郵遞性訪問來發(fā)送(S50)。接收到該數(shù)據(jù)的DKA在HDD26的特定地址保存相應(yīng)的數(shù)據(jù)(S52 )。然 后,DKA向MP通知已對數(shù)據(jù)進(jìn)行了降級處理(S54)。 MP在自身具有的存 儲器中保存目錄信息(臨時偶爾存儲了數(shù)據(jù)的CM上的地址、與從主計(jì)算機(jī)裝 置唯一指定的邏輯地址的對比)。
圖4表示高速緩沖存儲器的硬件框圖。高速緩沖存儲器具有存儲高速緩沖 存儲數(shù)據(jù)的存儲器模塊34和存儲器模塊控制器32。存儲器模塊控制器經(jīng)由數(shù) 據(jù)包處理部30與內(nèi)部網(wǎng)絡(luò)控制部28相連。
內(nèi)部網(wǎng)絡(luò)控制部28是控制數(shù)據(jù)包的收發(fā)的部件,具有順次接收數(shù)據(jù)包的 接收緩沖器28A、和用于順次發(fā)送數(shù)據(jù)包的發(fā)送緩沖器28B。接收援沖器28A 和發(fā)送緩沖器28B由FIFO構(gòu)造的存儲器構(gòu)成。
數(shù)據(jù)包處理部30具有命令數(shù)據(jù)包分析部30A和應(yīng)答數(shù)據(jù)包生成部30B。 命令數(shù)據(jù)包分析部30A從接收緩沖器28A順次取得命令數(shù)據(jù)包,分析在命令 數(shù)據(jù)包中包含的地址和數(shù)據(jù)。SB2是向存儲器模塊控制器32通知地址的地址 信號線,SB4是用于通知數(shù)據(jù)的數(shù)據(jù)信號送出線。
當(dāng)命令是寫命令時,存儲器模塊控制器32根據(jù)從命令數(shù)據(jù)包分析部30A 通知的地址和數(shù)據(jù),在存儲器模塊的該地址存儲該數(shù)據(jù)。另一方面,當(dāng)命令是 讀命令時,存儲器模塊控制器32從存儲器模塊的該地址讀取數(shù)據(jù)。所讀取的 數(shù)據(jù)通過數(shù)據(jù)讀出線SB6被發(fā)送至應(yīng)答數(shù)據(jù)包生成部30B。
應(yīng)答數(shù)據(jù)包生成部是生成表示數(shù)據(jù)的寫應(yīng)答或數(shù)據(jù)的讀應(yīng)答的數(shù)據(jù)包的 塊,參照地址信號線SB2的地址信號SB8來生成應(yīng)答數(shù)據(jù)包。應(yīng)答數(shù)據(jù)包被 順次發(fā)送至發(fā)送緩沖器28B 。
圖5表示交換器適配器的塊結(jié)構(gòu)。交換器適配器24具有多個內(nèi)部網(wǎng)絡(luò)控 制部36,該內(nèi)部網(wǎng)絡(luò)控制部36分別具有接收緩沖器36A和發(fā)送緩沖器36B。 各內(nèi)部網(wǎng)絡(luò)控制部與相互連接網(wǎng)38相連,各內(nèi)部網(wǎng)絡(luò)控制部的接收緩沖器和 發(fā)送緩沖器,可以分別與其它內(nèi)部網(wǎng)絡(luò)控制部的接收緩沖器和發(fā)送緩沖器相互 連接。
而且,各內(nèi)部網(wǎng)絡(luò)控制部36通過命令或應(yīng)答的數(shù)據(jù)包分析部42與相互連 接網(wǎng)38相連。
數(shù)據(jù)包分析部42具有路由表(RT),按照RT決定將數(shù)據(jù)包發(fā)送至哪個發(fā)送緩沖器(端口 )較好。46是向相互連接網(wǎng)38送出端口的地址、或從多個發(fā) 送緩沖器中確定目標(biāo)發(fā)送緩沖器的信號的信號線,44是向相互連接網(wǎng)38送出 數(shù)據(jù)包的信號線。
相互連接網(wǎng)38根據(jù)端口地址確定發(fā)送緩沖器36B,向該發(fā)送緩沖器送出 數(shù)據(jù)包。此外,接收緩沖器36A以及發(fā)送緩沖器都由FIFO構(gòu)造構(gòu)成。
圖6表示微處理器18的塊結(jié)構(gòu)。具有內(nèi)部網(wǎng)絡(luò)控制部48、數(shù)據(jù)包分析部 50以及數(shù)據(jù)包生成部52。內(nèi)部網(wǎng)絡(luò)控制部48具有接收緩沖器48A和發(fā)送緩 沖器48B。這些結(jié)構(gòu)與高速緩沖存儲器適配器(圖4)中說明的結(jié)構(gòu)相同。
微處理器18還具有存儲器模塊58和處理器56所連接的周邊電路部54。 數(shù)據(jù)包分析部50以及數(shù)據(jù)包生成部52與周邊電路部54相連。處理器56根據(jù) 存儲在存儲器才莫塊58中的管理塊(block ),控制各組件等。
存儲器模塊58具有用于控制存儲子系統(tǒng)(內(nèi)部組件)的控制程序58A、 表示向CMA的用戶數(shù)據(jù)的存儲狀況的目錄信息58B、存儲子系統(tǒng)的構(gòu)成信息 58C、以及為了與其它內(nèi)部組件進(jìn)行通信而使用的通信區(qū)域58E。
圖7表示CHA/DKA的塊結(jié)構(gòu)。CHA和DKA既可以通過不同IC構(gòu)成, 也可以通過同一 IC構(gòu)成。CHA/DKA具有協(xié)議處理部60,該協(xié)議處理部在CHA 的情況下與主計(jì)算機(jī)和SAN或者LAN連接,在DKA的情況下與存儲設(shè)備連 接,在與主計(jì)算機(jī)或硬盤驅(qū)動器之間進(jìn)行協(xié)議的變換處理。而且,CHA/DKA 具有與交換器適配器連接的端口 ,在該端口上連接了內(nèi)部網(wǎng)絡(luò)控制部68。
而且,在內(nèi)部網(wǎng)絡(luò)控制部68上連接了緩沖器66和DMA控制器64。 DMA 控制器以及緩沖器通過相互連接網(wǎng)62與協(xié)議處理部60相連。內(nèi)部網(wǎng)絡(luò)控制部 68與相互連接網(wǎng)62相連。相互連接網(wǎng)62通過交換器構(gòu)成,協(xié)議控制部60通 過相互連接網(wǎng)62可以與DMA控制器64、緩沖器66或者內(nèi)部網(wǎng)絡(luò)控制部68 連接。
DMA控制器64通過命令分析部64A分析由MP設(shè)置的命令,然后進(jìn)行 數(shù)據(jù)的轉(zhuǎn)發(fā)。在命令中包含用于實(shí)現(xiàn)讀功能64C、寫功能64D或拷貝功能 64E的命令;,或由高速緩沖存儲器地址表示的數(shù)據(jù)包的轉(zhuǎn)發(fā)目的地或轉(zhuǎn)發(fā)源。 DMA控制器64可以匯集多個命令,以命令列表64B的形式進(jìn)行存儲。
在CHA的情況下,根據(jù)來自MP的控制,通過協(xié)議控制部60與主計(jì)算機(jī)進(jìn)行協(xié)議交換。
當(dāng)從主計(jì)算機(jī)發(fā)來寫命令時,把來自主計(jì)算機(jī)的寫數(shù)據(jù)從協(xié)議控制部60 臨時存儲在緩沖器66中。而且,DMA控制器64進(jìn)行將緩沖器中存儲的數(shù)據(jù) 經(jīng)由接收緩沖器68A轉(zhuǎn)發(fā)至CMA的控制。
當(dāng)來自主計(jì)算機(jī)等信息處理裝置的命令是讀命令時,DMA控制器64將經(jīng) 由接收緩沖器68A從CMA讀取到的數(shù)據(jù)臨時存儲在緩沖器66中,協(xié)議控制 部60將該數(shù)據(jù)送至主計(jì)算機(jī)。在DKA的情況下,僅僅是將對象從主計(jì)算機(jī) 變換為硬盤驅(qū)動器,處理動作與CHA相同。另外,在DKA的情況下,也可 以設(shè)置用于對硬盤驅(qū)動器進(jìn)行RAID控制的運(yùn)算電路。
圖8是表示在兩個模塊之間,通過與非郵遞性訪問相伴的命令數(shù)據(jù)包以及 應(yīng)答數(shù)據(jù)包處理來自主計(jì)算機(jī)的讀請求的過程的框圖。
CHA20-1、交換器適配器(SW) 24-1、 CMA21-1是第l模塊的組件的內(nèi) 部組件。CHA20-2、交換器適配器24-2、 CMA21-2是第2模塊的內(nèi)部組件。
在SW24-1的端口和SW24-2的端口之間形成了一條路徑800。 CHA20-1 為了讀取第2 4莫塊的CMA21-2的數(shù)據(jù),經(jīng)由兩個SW間的路徑800訪問 CMA21畫2。
從主計(jì)算機(jī)IO接收到讀請求的CHA20-1,從發(fā)送緩沖器28A-1向SW24-1 的接收緩沖器36A-1轉(zhuǎn)發(fā)數(shù)據(jù)包。接收緩沖器36A-1根據(jù)路由表(RT),向發(fā) 送緩沖器36B(l)-1輸出數(shù)據(jù)包。發(fā)送緩沖器36B(l)-1經(jīng)由路徑800向SW24-2 的接收緩沖器36A(l)-2轉(zhuǎn)發(fā)命令數(shù)據(jù)包。
該數(shù)據(jù)包經(jīng)由SW24-2的發(fā)送緩沖器36(1)-2被轉(zhuǎn)發(fā)至CMA21-2的接收緩 沖器28A-2。 CMA21-2將存儲器模塊34-2的數(shù)據(jù)與應(yīng)答數(shù)據(jù)包一起,經(jīng)由發(fā) 送緩沖器28B-2送出到SW24-2的接收緩沖器36A(l)-2。
SW24-2經(jīng)由發(fā)送緩沖器36B(l)-2和路徑800,將該數(shù)據(jù)包發(fā)送至SW24-1 的接收緩沖器36B-1。 SW24-1經(jīng)由發(fā)送緩沖器36B-1,將包含數(shù)據(jù)的數(shù)據(jù)包轉(zhuǎn) 發(fā)至CHA20-1的接收緩沖器28B-l。
圖9表示當(dāng)同時分別向第1模塊的CHA20-1和第2模塊的CHA20-2發(fā)送 了來自主計(jì)算機(jī)10的讀請求時,從CHA或CMA向交換器適配器(SW)連 續(xù)發(fā)送的多個數(shù)據(jù)包占有SW的緩沖器而引起了死鎖的狀態(tài)。假定CHA20-1根據(jù)來自第1主計(jì)算機(jī)的讀請求,從CMA21-2讀取數(shù)據(jù), CHA20-2根據(jù)來自第2主計(jì)算機(jī)的讀請求,從CMA21-1讀取數(shù)據(jù)。結(jié)果,從 SW24-1向SW24-2的命令數(shù)據(jù)包800 (2)和相反方向的命令數(shù)據(jù)包800 ( 1 ), 在相同^各徑800上流動。
此時,基于從主計(jì)算機(jī)向第1CHA20-1的讀請求的數(shù)據(jù)包占有發(fā)送緩沖器 36B(1)-1,基于從主計(jì)算機(jī)向第2CHA20-2的讀請求的數(shù)據(jù)包802鎖定。
而且,基于向CHA20-2的讀請求的數(shù)據(jù)包占有發(fā)送緩沖器36B(l)-2,基 于從主計(jì)算機(jī)向第1CHA20-1的讀請求的數(shù)據(jù)包804鎖定。結(jié)果,雙方的數(shù)據(jù) 包分別占有發(fā)送緩沖器36B(l)-1和發(fā)送緩沖器36B(l)-2,引起針對數(shù)據(jù)包的轉(zhuǎn) 發(fā)處理相互無法進(jìn)行的"退縮",導(dǎo)致死鎖。
該死鎖是由于從一個模塊的SW向其它模塊的SW發(fā)送的命令數(shù)據(jù)包在同 一路徑800上雙向轉(zhuǎn)發(fā)而產(chǎn)生的。
因此,作為用于防止死鎖的數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則的第l規(guī)則,把在多個交換器 適配器間的路徑上轉(zhuǎn)發(fā)的命令數(shù)據(jù)包的方向限定為一個方向。但是,在圖9 的例子中,當(dāng)把路徑800的命令數(shù)據(jù)包的方向從SW24-1限定為SW24-2時, CHA20-2變得無法向CMA21-1發(fā)送命令數(shù)據(jù)包。
為了解決該問題,如圖10所示,在SW24-1和SW24-2之間除路徑800 以外還形成了第2路徑800A。而且,在SW24-1中設(shè)置與路徑800A分別連接 的接收緩沖器36A(2)-l和發(fā)送緩沖器36B(2)-l ,在SW24-2中設(shè)置與路徑800A 分別連接的接收緩沖器36A(2)-2和發(fā)送緩沖器36B(2)-2。
并且,各模塊的MP在存儲器模塊58中生成并存儲用于實(shí)現(xiàn)所述第1轉(zhuǎn) 發(fā)規(guī)則的控制表。根據(jù)該控制表設(shè)定交換器的路由表40。按照該控制表或路 由表進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā),來實(shí)現(xiàn)轉(zhuǎn)發(fā)控制規(guī)則。此外,在后面對該控制表進(jìn)行 描述。
通過設(shè)定基于該控制表的路由表,從SW24-1向SW24-2的命令數(shù)據(jù)包沿 著路徑800像800 ( 1 )那樣被轉(zhuǎn)發(fā),從SW24-2向SW24-1的命令數(shù)據(jù)包不沿 著路徑800而沿著路徑800A像800 (2)那樣被轉(zhuǎn)發(fā)。
從CMA21-2向CHA20-1的應(yīng)答數(shù)據(jù)包,沿著轉(zhuǎn)發(fā)了命令數(shù)據(jù)包的路徑 800在與命令數(shù)據(jù)包的轉(zhuǎn)發(fā)方向800 ( 1 )相反的方向上被轉(zhuǎn)發(fā),從CMA21-1向CHA20-2的應(yīng)答數(shù)據(jù)包,沿著路徑800A在與800 ( 2 )相反的方向上被轉(zhuǎn) 發(fā)。
結(jié)果,用于發(fā)送數(shù)據(jù)包的資源得到擴(kuò)充,從多個數(shù)據(jù)包相互竟?fàn)幍臓顩r中 解放出來,因此可以防止發(fā)生圖9的死鎖。
通過像這樣至少限定轉(zhuǎn)發(fā)命令數(shù)據(jù)包的方向來防止死鎖。此外,通過與轉(zhuǎn) 發(fā)命令數(shù)據(jù)包的路徑不同地形成轉(zhuǎn)發(fā)應(yīng)答數(shù)據(jù)包的路徑進(jìn)一步預(yù)防死鎖,但另 一方面,這樣一來,模塊的緩沖器的結(jié)構(gòu)以及交換器間的路徑結(jié)構(gòu)變得復(fù)雜, 因此在該實(shí)施方式中,在與流動命令數(shù)據(jù)包的路徑相同的路徑上,流動與命令 數(shù)據(jù)對應(yīng)的應(yīng)答數(shù)據(jù)包。
圖11是表示第1模塊的SW24-1經(jīng)由路徑1100與第2模塊的SW24-2連 接,第2模塊的SW24-2經(jīng)由路徑1100B與第3模塊的SW24-3連接,第3模 塊的SW24-3經(jīng)由路徑1100A與SW24-1連接的情形的框圖。
沿著這些路徑轉(zhuǎn)發(fā)的命令數(shù)據(jù)包的方向,根據(jù)所述的第1轉(zhuǎn)發(fā)規(guī)則被限定 為從SW24-1向SW24-3、從SW24-3向SW24-2、從SW24-2向SW24-1的方 向。
在這種情況下,當(dāng)?shù)?模塊的CHA20-1從主計(jì)算機(jī)接收到應(yīng)該向第2模 塊的CMA21-2寫入數(shù)據(jù)的請求時,命令數(shù)據(jù)包按照順序通過SW24-1的接收 緩沖器36A-1和發(fā)送緩沖器36B(3)-1、 SW24-3的接收緩沖器36A(l)-3和發(fā)送 緩沖器36B(3)-3、 SW24-2的接收緩沖器36A(3)-2和發(fā)送緩沖器36B(2)-2,從 CMA24-2的接收緩沖器28A-2向存儲器模塊34-2中寫入數(shù)據(jù)。圖11所示的 虛線是命令數(shù)據(jù)包的流動。
CMA21-2生成應(yīng)答數(shù)據(jù)包,然后,該應(yīng)答數(shù)據(jù)包與命令數(shù)據(jù)包相反地從 SW24-2經(jīng)過SW24-3到達(dá)SW24-1,被送至CHA20-1 。
當(dāng)向CHA20-2提供應(yīng)該在CMA21-3中寫入數(shù)據(jù)的寫請求時,命令數(shù)據(jù)包 經(jīng)由SW24-2、然后經(jīng)由SW24-1被提供給SW24-3,而且當(dāng)向CHA20-3提供 在CMA21-1中寫入數(shù)據(jù)的寫請求時,命令數(shù)據(jù)包經(jīng)由SW24-3、然后經(jīng)由 SW24-2被提供給SW24-1 。
在這種情況下,當(dāng)向CHA20-1、 CHA20-2以及CHA20-3同時提供寫請求 時,如圖12中"x"所示那樣,命令數(shù)據(jù)包的轉(zhuǎn)發(fā)形成環(huán)狀,多個命令數(shù)據(jù)包互相竟?fàn)幎l(fā)生死鎖。
該死鎖的發(fā)生是由于在多個數(shù)據(jù)包各自的轉(zhuǎn)發(fā)中,各數(shù)據(jù)包經(jīng)由sw和模 塊間的路徑跨越多個模塊而導(dǎo)致,通過限制至少一個數(shù)據(jù)包一次能跨越的路徑
的數(shù)量(跳躍數(shù))可以得到解決。將其作為第2轉(zhuǎn)發(fā)控制規(guī)則。
因此,如圖13所示,作為用于把來自SW24-1的命令數(shù)據(jù)包的跳躍數(shù)從 圖12的"2"限制為"1"的一個手段,把來自CHA20-1的命令數(shù)據(jù)包的寫數(shù) 據(jù)臨時存儲在與SW24-3連接的CMA21-3中(1300)。
由此,在圖12中,數(shù)據(jù)包的跳躍數(shù)是從SW24-1經(jīng)由SW24-3向SW24-2 的"2",但在圖13中,命令數(shù)據(jù)包的跳躍數(shù)在SW24-3被中斷一次,被限制 為從SW24-1向SW24-3的一次、或者從SW24-3向SW24-2的一次。
由此,可以從成為死鎖的原因的竟?fàn)幍?個數(shù)據(jù)包的轉(zhuǎn)發(fā)環(huán)路(參照圖 12)中釋放一個數(shù)據(jù)包,從而能提前防止死鎖的發(fā)生。
限制數(shù)據(jù)包的跳躍數(shù)的第2轉(zhuǎn)發(fā)控制規(guī)則,以轉(zhuǎn)發(fā)控制表的形式被存儲在 各模塊的MP的存儲器中。MP根據(jù)該轉(zhuǎn)發(fā)控制規(guī)則對數(shù)據(jù)包的轉(zhuǎn)發(fā)進(jìn)行SW 控制,由此達(dá)成第2轉(zhuǎn)發(fā)控制規(guī)則。
圖14和圖15說明根據(jù)所述第l轉(zhuǎn)發(fā)控制規(guī)則以及第2轉(zhuǎn)發(fā)控制規(guī)則處理 來自主計(jì)算機(jī)的讀命令的實(shí)施方式。圖15表示多個模塊間的內(nèi)部組件的連接 結(jié)構(gòu),圖14是表示數(shù)據(jù)包的轉(zhuǎn)發(fā)的梯形圖。
當(dāng)從主計(jì)算機(jī)向第1模塊1500的CHA20-1進(jìn)行針對存儲在第3模塊1504 的存儲設(shè)備26-3中的數(shù)據(jù)的讀請求時,CHA20-1的協(xié)議處理部60分析主計(jì)算 機(jī)讀請求,將其作為命令數(shù)據(jù)包1400,經(jīng)由同一模塊的SW24-1轉(zhuǎn)發(fā)至 MP18-1。
該MP分析命令數(shù)據(jù)包的數(shù)據(jù)存在地址,當(dāng)相應(yīng)的數(shù)據(jù)尚未存儲在CMA 中時生成命令數(shù)據(jù)包1402,將其轉(zhuǎn)發(fā)至第3模塊1504的DKA22-3。
DKA22-3訪問HDD26-3的目標(biāo)區(qū)域來讀入數(shù)據(jù),為了將數(shù)據(jù)臨時存儲在 同一模塊的CMA21-3中,對CMA21-3進(jìn)行非郵遞性訪問1404。
DKA22-3向MP18-1發(fā)送包含存儲了數(shù)據(jù)的CMA21-3的地址的應(yīng)答數(shù)據(jù) 包1406。接受該應(yīng)答數(shù)據(jù)包后,MP18-1向CHA20-2(第2模塊1502的CHA) 發(fā)送包含CHA21-3的地址的讀命令數(shù)據(jù)包1407。接收該數(shù)據(jù)包后,CHA20-2如圖15所示,對CMA21-3進(jìn)行非郵遞性訪 問1408,從CMA21-3讀出目標(biāo)數(shù)據(jù)。
CHA20-2如圖15所示,通過非郵遞性訪問1410將讀出的數(shù)據(jù)臨時寫入 第2模塊1502的CMA21-2。
CHA20-2形成包含寫入了數(shù)據(jù)的CMA21-2的地址的數(shù)據(jù)包1412,將其發(fā) 送至MP18-1。 MP18-1向CHA20-1發(fā)送數(shù)據(jù)包1411,該數(shù)據(jù)包1411包含存 儲了數(shù)據(jù)的CMA21-2的地址。
CHA20-1如圖15所示,通過非郵遞性訪問向CMA21-2發(fā)送請求數(shù)據(jù)的 命令數(shù)據(jù)包1414來取得該數(shù)據(jù)。然后,CHA20-1向主計(jì)算機(jī)轉(zhuǎn)發(fā)該數(shù)據(jù),然 后,CHA20-1向MP 18-1發(fā)送命令數(shù)據(jù)包1415,該命令數(shù)據(jù)包1415請求;險查 在CHA20-1取得數(shù)據(jù)的一連串的處理中是否有錯誤。
MP18-1進(jìn)行該檢查,生成沒有錯誤的應(yīng)答數(shù)據(jù)包1416,向CHA20-1送 出。CHA20-1向主計(jì)算機(jī)送出表示數(shù)據(jù)正確的應(yīng)答幀1418。
在圖14和圖15中,通過非郵遞性訪問轉(zhuǎn)發(fā)用于向CMA存儲數(shù)據(jù)的數(shù)據(jù) 包,關(guān)于該通過非郵遞性訪問進(jìn)行的數(shù)據(jù)包轉(zhuǎn)發(fā)(1414),即使有時通過多個 SW間的路徑,也將其限定為"1次跳躍"。
在非郵遞性訪問中,數(shù)據(jù)包發(fā)送源為了等待數(shù)據(jù)包發(fā)送目的地的應(yīng)答,爭 奪其它數(shù)據(jù)包和節(jié)點(diǎn)的資源(路徑或緩沖器),容易發(fā)生死鎖,但通過使非郵 遞性訪問為"l次跳躍"可以防止該死鎖。
圖16是表示數(shù)據(jù)包的細(xì)節(jié)的數(shù)據(jù)包幀。數(shù)據(jù)包格式如(1 )那樣,由以下 各部構(gòu)成表示讀命令、寫命令、消息、讀應(yīng)答以及寫應(yīng)答等數(shù)據(jù)包種類的數(shù) 據(jù)包種類部;數(shù)據(jù)包的發(fā)送目的地地址部;數(shù)據(jù)包的發(fā)送源地址部;數(shù)據(jù)長度 部(在讀命令的情況下是請求數(shù)據(jù)長度)、數(shù)據(jù)部(當(dāng)數(shù)據(jù)包種類為讀命令或 寫應(yīng)答時不存在);以及校驗(yàn)碼部。
發(fā)送目的地地址部的細(xì)節(jié)如(2)所示,由交換器號碼(SW#)、模塊的組 件的特定信息、和組件內(nèi)的地址構(gòu)成。發(fā)送源地址部也同樣地構(gòu)成。
圖17是在著眼于某交換器時的,設(shè)定了與其它SW、 CHA等同一模塊的 內(nèi)部組件的連接關(guān)系的路徑狀態(tài)表。圖18以框圖表示了圖17的路徑設(shè)定狀況。 MP針對SW的各端口生成圖17的表,將其存儲在MP的存儲器模塊中,由此如圖18所示,可以設(shè)定或者定義針對一個模塊的SW的路徑的特性。
圖17所示的表對應(yīng)于圖18的SW0,如圖18所示,表示了在端口O上連 接CHAO,在端口 1上連接MPO,在端口 2上連接DKAO,在端口 3上連接 CMAO,在端口 4上連接其它模塊的SW3,而且在端口 5上還連接其它模塊的 SW1。針對每個交換器適配器設(shè)定路徑狀態(tài)表。
而且,將可以從SW的各端口送出的數(shù)據(jù)包的種類登錄在路徑狀態(tài)表中。 端口 0是可以從CHAO接收命令數(shù)據(jù)包,送出應(yīng)答數(shù)據(jù)包的端口;端口 l是 可以接收來自MPO的命令數(shù)據(jù)包,送出應(yīng)答數(shù)據(jù)包的端口;端口2是可以從 DKAO接收命令數(shù)據(jù)包,送出應(yīng)答數(shù)據(jù)包的端口;端口3是可以從CMA0接 收應(yīng)答數(shù)據(jù)包,送出命令數(shù)據(jù)包的端口 ;端口 4是可以從SW3接收命令數(shù)據(jù) 包,送出應(yīng)答數(shù)據(jù)包的端口;并且,端口 5是可以向SW1送出命令數(shù)據(jù)包的 端口。
從而,當(dāng)用箭頭表示轉(zhuǎn)發(fā)命令數(shù)據(jù)包的方向時,成為圖18所示那樣。當(dāng) MP按照路徑狀態(tài)表控制通過SW進(jìn)行的數(shù)據(jù)包的轉(zhuǎn)發(fā)時,成為圖18所示那 樣。通過路徑狀態(tài)表和基于該表的MP的控制,實(shí)現(xiàn)所述第l數(shù)據(jù)包轉(zhuǎn)發(fā)控制 規(guī)則(圖10)。在圖10中,限定了在SW24-1和SW24-2間的路徑上流過的命 令數(shù)據(jù)包的方向,但根據(jù)圖18,可以從端口 5送出的數(shù)據(jù)包種類是向SW1的 命令數(shù)據(jù)包、在圖17中雖未說明但SW1的端口 1的連接目的地是SWO、其 可以送出的數(shù)據(jù)包種類是應(yīng)答,據(jù)此可以實(shí)現(xiàn)所述第l數(shù)據(jù)包轉(zhuǎn)發(fā)控制規(guī)則。 數(shù)據(jù)包的種類可以通過數(shù)據(jù)包幀進(jìn)行檢測。此外,后述的消息數(shù)據(jù)包是非郵遞 性數(shù)據(jù)包,可以與命令.應(yīng)答數(shù)據(jù)包無關(guān)地在例如與MP連接的端口上進(jìn)行收 發(fā)。
接著,說明圖5的路由表(RT)的細(xì)節(jié)。SW將從某端口接收到的數(shù)據(jù)包 存儲在接收緩沖器中,按照RT決定將接收數(shù)據(jù)包送至哪個轉(zhuǎn)發(fā)端口的發(fā)送緩 沖器。針對SW的每個端口後定路由表。
圖19是針對圖18的SWO的CHAO所連接的接收端口 0而設(shè)定的RT。應(yīng) 該轉(zhuǎn)發(fā)數(shù)據(jù)包的發(fā)送目的地地址由SW弁和組件的特定信息(ID)構(gòu)成。當(dāng)發(fā) 送目的地地址的SW#為SWO時,被發(fā)送給同一模塊的目標(biāo)組件,按照RT向 對應(yīng)的轉(zhuǎn)發(fā)端口發(fā)送數(shù)據(jù)包。當(dāng)發(fā)送目的地地址的SW^為SWO以外時,為了指向其它才莫塊的sw的接 收端口 ,對端口 5發(fā)送SWO接收到的數(shù)據(jù)包。圖19的RT的轉(zhuǎn)發(fā)端口與圖17 的路徑狀態(tài)表相一致。
圖20是說明由SW所屬的模塊的MP根據(jù)路徑狀態(tài)表設(shè)定RT時的動作的 流程圖。MP從尚未設(shè)定RT的端口中選擇應(yīng)該設(shè)定RT的端口 (2000)。
然后,MP針對路徑設(shè)定表的"連接目的地"和RT的"組件" 一致的端 口,使RT的"轉(zhuǎn)發(fā)端口#"作為路徑設(shè)定表的"端口#" (S2002)。
在這種情況下,若剛設(shè)定了 RT的端口的路徑設(shè)定表的可送出的數(shù)據(jù)包種 類為"應(yīng)答",則該剛設(shè)定了 RT的端口所接收的是與"應(yīng)答"成對的"命令" 數(shù)據(jù)包。決定該"命令"數(shù)據(jù)包的轉(zhuǎn)發(fā)目的地端口的是RT。因此,MP進(jìn)一 步從路徑設(shè)定表中選擇"連接目的地"=SW、并且"可送出的數(shù)據(jù)包種類" 為"命令"的端口#,使"發(fā)送目的地地址"作為"其它SW"的"轉(zhuǎn)發(fā)端口 #" (2004)。若剛設(shè)定了 RT的端口的可送出的數(shù)據(jù)包種類為"命令",則在 此選擇的是"連接目的地"=SW、并且"可以送出的數(shù)據(jù)包種類,,是"應(yīng)答" 的端口#。
然后,MP判定是否進(jìn)行了 SW中的全部端口的設(shè)定(2006),當(dāng)對此進(jìn) 行肯定時,結(jié)束用于進(jìn)行RT的設(shè)定的處理,當(dāng)對此進(jìn)行否定時,返回2000。
在所述圖13和圖14中,將數(shù)據(jù)臨時存儲在CMA中,使命令數(shù)據(jù)包或應(yīng) 答數(shù)據(jù)包的跳躍數(shù)為"1"。多個模塊的各MP交換消息數(shù)據(jù)包來相互合作,實(shí) 現(xiàn)該數(shù)據(jù)包轉(zhuǎn)發(fā)控制規(guī)則。
圖21表示消息格式的細(xì)節(jié),消息中有讀(RD)請求消息(1 )、讀應(yīng)答消 息(2)、寫(WR)請求消息(3)、寫應(yīng)答消息(4)以及拷貝完成消息(5)。
所謂msg種類表示消息的種類,消息欄的"to"是消息的最終目的地的 MP#, "from"是消息發(fā)送源的MP^ "temp"欄的"to"是在消息的轉(zhuǎn)發(fā)過程 中應(yīng)該經(jīng)由的MP目的地#, "from"是與"to"的MP弁對應(yīng)的消息的發(fā)送源 MP#。
讀請求消息(1)的"請求數(shù)據(jù)"表示與讀請求相關(guān)的數(shù)據(jù)的邏輯位置, 由用于確定被簡稱為"LDEV"的"Logical Device"的信息、LBA (邏輯塊地 址)和LEN (數(shù)據(jù)長)構(gòu)成。讀應(yīng)答消息(2)的"數(shù)據(jù)存在地址"欄表示所讀取的數(shù)據(jù)的CMA上的 地址,由CMA# (高速緩沖存儲器號碼)、ADR (CMA的存儲器部件上的地 址)、和LEN(數(shù)據(jù)長)構(gòu)成。所謂拷貝是指向CMA拷貝數(shù)據(jù)。
寫請求消息(3)的"請求數(shù)據(jù)"表示寫入寫數(shù)據(jù)的邏輯地址,"數(shù)據(jù)存在 地址"是寫數(shù)據(jù)所存在的高速緩沖存儲器上的地址。
寫應(yīng)答消息(4)的"請求數(shù)據(jù)"表示寫入寫數(shù)據(jù)的邏輯地址。
拷貝完成消息,表示關(guān)于拷貝到高速緩沖存儲器的數(shù)據(jù)所存在的其它高速 緩沖存儲器的地址。
圖22是記錄在MP的存儲器中的LDEV-DKA表。該表是規(guī)定了數(shù)據(jù)存在 的LDEV號碼以及LDEV的邏輯地址、與控制存儲該數(shù)據(jù)的HDD的DKA之 間的關(guān)系的表。
圖23是表示PDEV( Physical Device )、與數(shù)據(jù)存在的LDEV號碼以及LDEV 的邏輯地址之間的對應(yīng)關(guān)系的DKA表。圖23的控制方式是記載了 RAID等級 的控制方式。
將這些表記錄在MP的存儲器中。MP可以對來自主計(jì)算機(jī)的寫命令或讀 命令進(jìn)行分析,參照這些表來確定應(yīng)該訪問的DKA以及PDEV。
接著,詳細(xì)說明存儲子系統(tǒng)處理來自主計(jì)算機(jī)的讀請求的動作。圖24是 串聯(lián)連接了 4個模塊的SW的存儲子系統(tǒng)的框圖。
當(dāng)?shù)?模塊的CHAO從主計(jì)算機(jī)接收向第3模塊的DKA2的讀請求S2400 時,第1模塊的MPO如圖25的流程圖所示,參照LDEV-DKA表來分析來自 CHAO的命令數(shù)據(jù)包(2500 ),檢查命令數(shù)據(jù)包的對象MP是否是自身(=MPO ) (2502 )。
當(dāng)對象MP是本MP (MPO)時,通過與SWO連接的DKAO,從DKAO 下屬的硬盤將數(shù)據(jù)升級到CMAO (2504)。然后,MPO向與發(fā)出了讀命令的主 計(jì)算機(jī)連接的相應(yīng)CHA (CHAO)指示對主計(jì)算機(jī)進(jìn)行應(yīng)答處理(2506)。
另一方面,在步驟2502中,當(dāng)MPO將命令數(shù)據(jù)包中的對象MP判定為其 它模塊的MP時,生成發(fā)送到該其它MP的讀請求消息(圖21 ( 1 )) (2506)。
每當(dāng)生成該讀請求消息時,MPO參照圖26的消息轉(zhuǎn)發(fā)目的地表。該消息 轉(zhuǎn)發(fā)目的地表登錄了 最終目的地MP#、為了減少消息一次通過的跳躍數(shù)而應(yīng)該經(jīng)由的MP (轉(zhuǎn)發(fā)目的地MP# )、在最終目的地MP弁和轉(zhuǎn)發(fā)目的地MP弁之 間消息所通過的跳躍數(shù)。
MP0當(dāng)生成讀請求消息時,向轉(zhuǎn)發(fā)目的地MP弁發(fā)送讀請求消息。在圖24 中,當(dāng)MP0識別出消息的最終轉(zhuǎn)發(fā)目的地是MP2時(圖25的2502),通過 圖26的轉(zhuǎn)發(fā)目的地表掌握轉(zhuǎn)發(fā)目的地MP弁是MP1,生成圖21 ( 1 )所示的讀 請求消息。
在該讀請求消息中,消息欄的"to"成為MP2, "from"成為MPO, temp 欄的"to"根據(jù)消息轉(zhuǎn)發(fā)目的地表而變?yōu)镸P1,其"from"變?yōu)镸P0。
結(jié)果,圖24的(1)所示的讀請求消息(REQmsg)從MP0被轉(zhuǎn)發(fā)至MPl。 此時消息跨越交換器間的路徑的次數(shù)(剩余跳躍數(shù))成為SW0和SW1之間的
而且,當(dāng)讀請求消息到達(dá)MP1時,MP1分析該讀請求消息,而且參照圖 26的消息轉(zhuǎn)發(fā)表,向MP2轉(zhuǎn)發(fā)讀請求消息(圖24 ( 2 ))。
通過存儲子系統(tǒng)的管理計(jì)算機(jī)等事先生成消息轉(zhuǎn)發(fā)目的地表,存儲在各 MP的存儲器中。
圖27是說明MP的消息處理的流程圖,MP檢查存儲器的消息區(qū)域,確認(rèn) 有無消息(2700)。然后,MP判定"有消息 " (2702),當(dāng)"沒有消息"時 返回步驟2700。
另一方面,當(dāng)"有消息"時,判斷消息(msg)的種類是讀請求消息、讀 應(yīng)答消息、寫請求消息、寫完成消息還是拷貝完成消息(2704),分別進(jìn)行消 息的處理。
圖28是說明接收到讀請求消息的MP的處理的流程圖。接收到讀請求消 息的MP,;險查成為讀請求消息中的最終目的地的MP (圖21 ( 1 )的讀請求 消息的消息欄的"to")是否是自身(2講)。
當(dāng)對此進(jìn)行肯定時,MP將讀數(shù)據(jù)向同一模塊的CMA進(jìn)行升級處理 (2802)。然后,鎖定已升級了數(shù)據(jù)的區(qū)域,即不許可將該區(qū)域無效化(2804)。 然后,MP生成讀應(yīng)答消息(圖21 ( 2 )),將其發(fā)送至讀請求消息的發(fā)送源MP (2806 )。
在讀應(yīng)答消息的數(shù)據(jù)存在地址中,登錄讀數(shù)據(jù)存在的CMA和該CMA的數(shù)據(jù)存儲區(qū)域。在消息欄的"from"中登錄接收到讀請求消息的MP#,在其 "to"中登錄接收到主計(jì)算機(jī)讀請求的MP。
在步驟2800中,接收到讀請求消息的MP,當(dāng)判定出成為讀請求消息中 的最終目的地的MP不是自身時,進(jìn)行讀請求消息的再轉(zhuǎn)發(fā)(2808)。在讀請 求消息(圖21 (l))的temp欄的"from"中登錄該MP弁,在"to"中登錄在 消息轉(zhuǎn)發(fā)目的地表中規(guī)定的轉(zhuǎn)發(fā)目的地MP#。
在圖24中,當(dāng)MP1從MP0接收讀請求消息(1 )時,由于該讀請求是發(fā) 送給MP2的讀請求,因此MP1否定步驟2800的判定,轉(zhuǎn)移至步驟2802,向 MP2轉(zhuǎn)發(fā)讀請求消息(2808 )。
當(dāng)MP2從MP1接收讀請求消息時,由于讀請求消息發(fā)送給MP2的,因 此肯定步驟2800的判定,如圖29所示那樣,在步驟2804中MP2在CMA2 中確保存儲通過DKA2得到的HDD的數(shù)據(jù)的區(qū)域(圖29 (3 ))。并且如步驟 2806所示,將讀應(yīng)答消息送至MP1,向MP1通知數(shù)據(jù)存在的CMA的主區(qū)域 (master area)(圖29 ( 4 ) X
在從MP2向MP1的讀應(yīng)答消息的消息欄的"to"中登錄MP0,在其"from" 欄中登錄MP2。 MP2參照消息轉(zhuǎn)發(fā)目的地表,在讀應(yīng)答消息的temp欄的"to" 中登錄MP1,在其"from"欄中登錄MP2。
在圖30中表示了接收到讀應(yīng)答消息的MP的動作的流程圖。接收到讀應(yīng) 答消息的MP (本MP )判定成為讀應(yīng)答消息的發(fā)送目的地的目的地MP (登錄 在消息欄的"to"中的MP)和本MP是否相同(3000)。
當(dāng)本MP肯定該判定時,不需要向其它MP轉(zhuǎn)發(fā)讀消息,為了向訪問了本 MP的模塊的CHA的主計(jì)算機(jī)應(yīng)答本MP接收到的讀應(yīng)答消息的數(shù)據(jù)存在地 址、即存儲了目標(biāo)數(shù)據(jù)的區(qū)域,而向該CHA發(fā)送命令數(shù)據(jù)包(3002)。
然后,本MP從CHA等待主計(jì)算機(jī)應(yīng)答處理完成的應(yīng)答數(shù)據(jù)包(3004), 當(dāng)本MP接收到該應(yīng)答數(shù)據(jù)包時,對于讀應(yīng)答消息的發(fā)送源(記錄在讀應(yīng)答消 息的temp欄的"from"中的MP)發(fā)送拷貝完成消息(3006 )。
當(dāng)本MP否定步驟3000的判定時,在與本MP同一模塊的SW的CMA中 的緩沖區(qū)域(存儲器模塊)中,確保臨時存儲目標(biāo)數(shù)據(jù)的區(qū)域(3008)。
然后,本MP為了將所接收到的讀應(yīng)答消息的數(shù)據(jù)存在地址的數(shù)據(jù)拷貝到在步驟3008中確保的臨時存儲區(qū)域,而向同一模塊的CHA/DKA發(fā)送命令數(shù) 據(jù)包來對其進(jìn)行指示(3010)。而且,本MP從該CHA/DKA等待作為完成了 所述拷貝的報(bào)告的應(yīng)答數(shù)據(jù)包(3012)。
當(dāng)本MP接收到該應(yīng)答數(shù)據(jù)包時,對于讀應(yīng)答消息的發(fā)送源(記錄在讀應(yīng) 答消息的temp欄的"from"的MP)發(fā)送拷貝完成消息(3014)。
而且,本MP參照決定在消息到達(dá)最終的MP前的路徑或路由中成為中繼 的MP的消息轉(zhuǎn)發(fā)表,決定讀應(yīng)答消息的轉(zhuǎn)發(fā)目的地(3016)。
然后,本MP當(dāng)轉(zhuǎn)發(fā)讀應(yīng)答消息時,在其數(shù)據(jù)存在地址中登錄通過步驟 3008確保的臨時存儲區(qū)域的識別信息,在temp欄的"to"中記錄讀應(yīng)答消息 的轉(zhuǎn)發(fā)目的地,在"from"中登錄本MP的識別信息(3018)。
接著圖24,根據(jù)表示讀應(yīng)答消息的傳遞情況的圖29來進(jìn)行說明時,當(dāng) MP1從MP2接收讀應(yīng)答消息(4)時,由于該讀應(yīng)答消息是發(fā)送給其它MP (MP0)的讀應(yīng)答消息,因此MP1在CMA1中確保臨時存儲區(qū)域,通過CHAl 將CMA2中的目標(biāo)數(shù)據(jù)拷貝到CMA1中(5 )。
然后,MP1向MP0轉(zhuǎn)發(fā)讀應(yīng)答消息(6)。并且,接收到讀應(yīng)答消息的 MPO (本MP )通過CHAO取得CMA1沖的目標(biāo)數(shù)據(jù),將其轉(zhuǎn)發(fā)至主計(jì)算機(jī)。
接著,說明在圖24中說明的具有網(wǎng)格(grid)構(gòu)造的存儲子系統(tǒng)從主計(jì)算 機(jī)接收到寫請求時的動作。圖31是對其進(jìn)行說明的框圖。CHA2從主計(jì)算機(jī) 接收了寫請求。
圖32是說明接收到來自主計(jì)算機(jī)的寫請求的MP的動作的流程圖。MP 參照LDEV-DKA表,確定進(jìn)行將寫數(shù)據(jù)存儲在硬盤驅(qū)動器中的處理的DKA, 確定與該DKA同一模塊的MP (對象MP) (3200)。
另一方面,當(dāng)寫請求中的數(shù)據(jù)的寫目的地LDEV (相應(yīng)區(qū)域)未分配給 LDEV-DKA表時(3202 ),針對與本MP的SW相連的DKA,本MP參照DKA 表來檢查在PDEV中是否有空區(qū)域(3204)。
在PDEV中有空區(qū)域時,本MP向DKA表分配在寫請求中包含的LDEV、 LBA(相應(yīng)區(qū)域),更新LDEV-DKA表以及DKA表,將其登錄在其存儲器中, 與此同時,向其它MP通知與該分配有關(guān)的信息或者更新后的這些表(3206)。
然后,本MP通過同一模塊的DKA,將同一模塊的CMA中存在的寫數(shù)據(jù)從該CMA向該DKA下屬的硬盤驅(qū)動器進(jìn)行降級處理(3214 )。
在步驟3202中,當(dāng)寫請求中的數(shù)據(jù)的寫目的地LDEV (相應(yīng)區(qū)域)已被 分配給LDEV-DKA表時,判定本MP是否是對象MP (3212),當(dāng)本MP是對 象MP時,與所述情況相同地進(jìn)行降級處理。另一方面,在步驟3212中判定 為本MP不是對象MP時,參照消息轉(zhuǎn)發(fā)表來生成寫請求消息(圖21 (3)), 將其轉(zhuǎn)發(fā)至轉(zhuǎn)發(fā)目的地MP (3216)。與所述讀請求消息同樣地生成該寫請求 消息。
在步驟3204中,當(dāng)本MP判斷出在本MP的DKA中沒有空區(qū)域時,本 MP將請求分配相應(yīng)區(qū)域的命令向較近模塊的MP進(jìn)行請求(3208 )。
本MP檢查來自接受了請求的MP的應(yīng)當(dāng)數(shù)據(jù)包,本MP首先在不進(jìn)行拷 貝便可以訪問的范圍內(nèi)、若該范圍內(nèi)無法進(jìn)行分配則在通過一次拷貝可以訪問 的范圍內(nèi),按照與本MP從近到遠(yuǎn)的順序,按每個模塊與其它MP接觸,直到 實(shí)現(xiàn)相應(yīng)區(qū)域的分配為止。
承認(rèn)來自本MP的請求的其它MP更新自身的表,將其通知給其它MP (3210)。然后,本MP生成寫請求消息,將其通知給承認(rèn)了相應(yīng)區(qū)域的分配 的MP。
圖33是表示接收了寫請求消息的MP的處理動作的流程圖。接收了寫請 求消息的MP檢查寫請求是發(fā)送給本MP的還是發(fā)送給其它MP的(3300 )。
當(dāng)判定為目的地MP是本MP時,從與本MP同 一模塊的CMA向其DKA 下屬的HDD,將該CMA中存在的寫數(shù)據(jù)進(jìn)行降級處理(3302 )。
在該降級處理時,本MP通過CHA/DKA將寫請求消息的數(shù)據(jù)存在地址的 數(shù)據(jù)拷貝到同 一模塊的CMA中。
然后,本MP生成寫應(yīng)答消息(3304)。在寫應(yīng)答消息(圖21 (4))的請 求數(shù)據(jù)中登錄寫請求消息的請求數(shù)據(jù),在其消息欄的"from"中記錄本MP, 在其消息欄的"to"中記錄在寫請求消息的消息欄的"from"中所記載的MP。
另一方面,當(dāng)判定為目的地MP不是本MP時,本MP在同一模塊的CMA 中確保臨時存儲寫數(shù)據(jù)的區(qū)域(3306)。
然后,本MP為了從接收到的寫請求消息的數(shù)據(jù)存在地址讀出數(shù)據(jù),并將 該數(shù)據(jù)拷貝到步驟3306的臨時存儲區(qū)域中,而向同一模塊的CHA發(fā)送命令數(shù)據(jù)包(3308)。
然后,本MP向接收到的寫請求消息的發(fā)送源(temp from)發(fā)送拷貝完成 消息(3310)。此時,本MP在拷貝完成消息(圖21 (5))的temp的"from" 中記錄本MP,在其"to"中記錄寫請求消息的發(fā)送源(temp from),在數(shù)據(jù) 存在地址中記錄步驟3306的臨時存儲區(qū)域。
然后,本MP為了向其它MP轉(zhuǎn)發(fā)寫請求消息,參照消息轉(zhuǎn)發(fā)表來決定該 寫請求消息的轉(zhuǎn)發(fā)目的地MP (3312)。
并且,本MP在轉(zhuǎn)發(fā)寫請求消息時,在數(shù)據(jù)存儲地址中記錄步驟3306的 臨時存儲區(qū)域,在temp欄的"from"中記錄本MP,在其"to"中記錄轉(zhuǎn)發(fā)目 的地MP。
圖34是表示接收到在圖33的步驟3304中生成的寫應(yīng)答消息的MP的動 作的流程圖。檢查接收到寫應(yīng)答消息的本MP是否是寫應(yīng)答消息中的轉(zhuǎn)發(fā)目的 地MP (目的地MP) (3400)。
當(dāng)判定為本MP不是目的地MP時,參照消息轉(zhuǎn)發(fā)目的地表來決定寫應(yīng)答 消息的轉(zhuǎn)發(fā)目的地(3402)。然后,本MP在寫應(yīng)答消息的temp欄的"from" 中記錄本MP,在其"to"中記錄轉(zhuǎn)發(fā)目的地MP來進(jìn)行寫應(yīng)答消息的轉(zhuǎn)發(fā) (3404 )。
并且,當(dāng)步驟3400中判定為本MP是目的地MP時,向與本MP同一模 塊的CHA發(fā)送命令,該命令是針對從主計(jì)算機(jī)向該CHA的寫請求(相應(yīng)請 求),應(yīng)該發(fā)送表示寫處理已結(jié)束的應(yīng)答幀(3406)。
如圖31所示,CHA/DKA2當(dāng)接收來自主計(jì)算機(jī)的寫請求時,在CMA2 中確保寫數(shù)據(jù)的存儲區(qū)域,向主計(jì)算機(jī)通知數(shù)據(jù)轉(zhuǎn)發(fā)準(zhǔn)備完成。然后,CHA2 從主計(jì)算機(jī)接收數(shù)據(jù),并將其轉(zhuǎn)發(fā)至CMA2 ( 3 )。
當(dāng)MP2接收到寫請求時,針對與數(shù)據(jù)寫目的地DKA0同一模塊的MP0生 成寫請求消息,參照消息轉(zhuǎn)發(fā)目的地表將其送至MP1 (4)。 MP1通過寫請求 消息得知CMA0的主區(qū)域(master area)(數(shù)據(jù)存儲目的地地址)。
接收到該寫請求消息的MP1,由于消息是發(fā)送給MP0的消息,因此在同 一模塊的CMAl中確保臨時存儲區(qū)域,指示CHA/DKA1將CMA2的寫數(shù)據(jù) 拷貝到CMAl中。從CMA2向CMAl拷貝了寫數(shù)據(jù)(5 )的CHA/DKA1向MP1以及MP2通知拷貝的結(jié)束。
由于來自MP2的寫請求消息的目的地MP是MPO,因此MP1將寫請求消 息轉(zhuǎn)發(fā)至MP2( 6 )。MP2得知CMA1的數(shù)據(jù)的存儲區(qū)域,MP2指示CHA/DKA0 將CMA1的數(shù)據(jù)拷貝到CMAO中(7 )。
當(dāng)CHAO結(jié)束該拷貝時,將其通知給MP1和MPO。 MPO向DKAO發(fā)送進(jìn) 行將CMAO的寫數(shù)據(jù)降級到HDDO中的處理的命令數(shù)據(jù)包。
MPO生成寫應(yīng)答消息,通過SW1將其發(fā)送到MP1。 MP1通過SW2將寫 應(yīng)答消息轉(zhuǎn)發(fā)至MP2。 MPO在MP2接收寫應(yīng)答消息后,可以通過CHA2向主 計(jì)算機(jī)返回寫應(yīng)答幀。
在圖24、圖31等中,消息的跳躍數(shù)被限定為"1",因此在存儲子系統(tǒng)的 第2模塊、第3模塊以及第4模塊的至少一個模塊中,與第l模塊同樣地,即 使從主計(jì)算提供了請求幀,也可以避免發(fā)生數(shù)據(jù)包的死鎖。
在圖35中表示將交換器結(jié)構(gòu)、高速緩沖存儲器、CHA/DKA —起冗余化 的存儲子系統(tǒng)的塊結(jié)構(gòu)。該存儲子系統(tǒng)具有兩個模塊3500以及3502,各模塊 通過交換器彼此間的路徑而連接。
模塊3500具有CHA/DKA1、 CMA1、 CMA2、 CHA/DKA2、第1冗余系 統(tǒng)交換器(SW1A以及SW2A )以及第2冗余系統(tǒng)交換器(SW1B以及SW2B )。
CHA/DKA1、 CMA1、 CMA2以及CHA/DKA2的各組件,對于第1冗余 系統(tǒng)(A系統(tǒng))交換器和第2冗余系統(tǒng)(B系統(tǒng))交換器,如箭頭所示那樣連 接。
CHA/DKA1以及CHA/DKA2也可以分別通過第1冗余系統(tǒng)交換器以及第 2冗余系統(tǒng)交換器的某一個與CMA1或CMA2相連。即,實(shí)現(xiàn)交替路徑構(gòu)造。 箭頭的方向表示命令數(shù)據(jù)包的轉(zhuǎn)發(fā)方向。同一冗余系統(tǒng)的SW間(SW1A-SW2A、 SW1B - SW2B )通過兩條路徑相連。
模塊3502也與模塊3500同樣地如圖所示而構(gòu)成。在模塊3500和3502之 間,同一冗余系統(tǒng)的交換器通過1條路徑相連。即,SW2A和SW3A通過1 條路徑相連,SW4A和SW1A同樣通過1條路徑相連。關(guān)于B系統(tǒng)的冗余系 統(tǒng)交換器也相同。
在圖35中為了簡略而未圖示MP。實(shí)際上,可以通過和CHA/DKA同樣的形態(tài)進(jìn)行連接,也可以在CHA/DKA上追加MP的功能,代替執(zhí)行MP的功 能。 在此為后者。
此外,在圖35中為了方便,如CHA/DKA那樣一體地表示CHA和DKA, 但CHA和DKA可以通過同一電路實(shí)現(xiàn),或者可以通過不同電路分別實(shí)現(xiàn)。
組件和連接交換器的定義基于圖36的連接表。該連接表被設(shè)定在 CHA/DKA1、 CHA/DKA2、 CHA/DKA3、 CHA/DKA4的各存儲器中。在圖37 的控制表中規(guī)定了 ,對于來自成為起點(diǎn)的交換器的命令數(shù)據(jù)包所允許的交換器 間的跳躍數(shù)。
例如,對于來自SW1A的命令數(shù)據(jù)包允許2次跳躍,因此,從CHA/DKA1 向CMA3的數(shù)據(jù)寫入,從SW1A經(jīng)由SW2A到SW3A,可以在途中不將數(shù)據(jù) 重定向(拷貝)到CMA中地一口氣轉(zhuǎn)發(fā)至CMA3。
另一方面,從CHA/DKA1向CMA3的數(shù)據(jù)寫入,當(dāng)想要利用B的冗余系 統(tǒng)時,在不同模塊的交換器間允許的命令數(shù)據(jù)包的方向與A冗余系統(tǒng)相反, 因此,需要從SW2B到SW1B、從SW1B到SW4B、從SW4B到SW3B的3 次跳躍,所以需要由CHA/DKA3從SW4B向CMA4臨時栲貝數(shù)據(jù),然后從 CMA4讀取數(shù)據(jù),從SW4B向SW3B進(jìn)行發(fā)送,CHA/DKA4將該數(shù)據(jù)拷貝到 CMA3中。因此,利用A系統(tǒng)來進(jìn)行從CHA/DKA1向CMA3的數(shù)據(jù)寫入。
針對SW1A的允許跳躍數(shù)是"2",針對SW2A的允許跳躍數(shù)是"1"的理
因此如圖IO所示,在死鎖的發(fā)生中沒有故障,與之相對,在跨越不同模塊的 SW2A和SW3A之間由1條路徑構(gòu)成,因此從防止死鎖的觀點(diǎn)出發(fā),在SW2A 和SW3A之間,把以SW2A為起點(diǎn)的數(shù)據(jù)包的發(fā)送限制為1次跳躍。關(guān)于其 它交換器也同樣。
將發(fā)送源SW、發(fā)送目的地SW、發(fā)送源SW的下一 SW、從發(fā)送源SW到 發(fā)送目的地SW之間的跳躍數(shù)、以及以圖37的允許跳躍數(shù)為前提的重定向數(shù) 匯總為拓樸表(圖38),存儲在CHA/DKA的存儲器中。而且,當(dāng)從發(fā)送源 (CHA/DKA)向發(fā)送目的地(CMA)轉(zhuǎn)發(fā)數(shù)據(jù)包時,把在數(shù)據(jù)包的轉(zhuǎn)發(fā)中使 用哪個冗余系統(tǒng)匯總為轉(zhuǎn)發(fā)使用冗余系統(tǒng)表(圖39)。
圖40是用于生成轉(zhuǎn)發(fā)使用冗余系統(tǒng)表的流程圖。通過存儲子系統(tǒng)的管理計(jì)算機(jī)執(zhí)行該流程圖。管理計(jì)算機(jī)以x作為數(shù)據(jù)包發(fā)送源組件,以y作為數(shù)據(jù) 包的發(fā)送目的地組件(4000 )。
然后,管理計(jì)算機(jī)根據(jù)圖36的連接表,關(guān)于各個冗余系統(tǒng),調(diào)查x和y 的連接交換器(4002)。管理計(jì)算機(jī)從圖38的拓樸表中,關(guān)于各冗余系統(tǒng)以x 作為發(fā)送源SW,以y作為發(fā)送目的地SW,調(diào)查這些SW間的重定向數(shù)、跳 躍數(shù)(4004 )。
然后,管理計(jì)算機(jī)檢查兩冗余系統(tǒng)的重定向數(shù)是否相同(4006),若相同, 則針對數(shù)據(jù)包的轉(zhuǎn)發(fā),使用SW間的跳躍數(shù)少的冗余系統(tǒng)(4008)。
另一方面,當(dāng)兩冗余系統(tǒng)的重定向數(shù)不相同時,使用重定向數(shù)少的冗余系 統(tǒng)(4010X然后,檢查是否針對全部x, y進(jìn)行了調(diào)查(4012),在對此進(jìn)行 肯定的情況下結(jié)束流程圖,在對此進(jìn)行否定的情況下返回步驟4000。此外, 當(dāng)兩冗余系統(tǒng)中重定向數(shù)以及跳躍數(shù)相同時,在轉(zhuǎn)發(fā)中可以使用任意冗余系統(tǒng) 交換器。
圖41是表示管理計(jì)算機(jī)進(jìn)行的重定向數(shù)的計(jì)算的流程圖。管理計(jì)算機(jī)以 x作為數(shù)據(jù)包發(fā)送源組件,以y作為數(shù)據(jù)包發(fā)送目的地組件,關(guān)于連接表,針 對各冗余系統(tǒng)調(diào)查x, y的連接交換器(4100)。
管理計(jì)算機(jī)參照允許跳躍數(shù)表(圖37),針對成為數(shù)據(jù)包轉(zhuǎn)發(fā)中的發(fā)送源 (起點(diǎn))的SW,確定允許跳躍數(shù)。然后,根據(jù)拓樸表確定發(fā)送源SW和發(fā)送 目的地SW間的實(shí)際跳躍數(shù)(4102 )。
然后,管理計(jì)算機(jī)從實(shí)際跳躍數(shù)減去允許跳躍數(shù),檢查其結(jié)果是否在0以 下(4104X若減法運(yùn)算結(jié)果在0以下,則將重定向計(jì)數(shù)器的值作為"重定向 數(shù),,登錄在圖38的拓樸表中(4106)。此外,也可以在管理計(jì)算機(jī)的存儲器中 設(shè)定圖36至圖39的表。
重定向計(jì)數(shù)器也被設(shè)定在管理計(jì)算機(jī)的存儲器中。重定向計(jì)數(shù)器的初始值 是"0"。
在將重定向計(jì)數(shù)器值登錄在拓樸表中后,將該計(jì)數(shù)器復(fù)位(4108),針對 下一x, y進(jìn)行重定向數(shù)的計(jì)算(4110)。
另一方面,當(dāng)步驟4104中的減法運(yùn)算結(jié)果在1以上時,將重定向計(jì)數(shù)器 值加l (4112),然后,將拓樸表的"下一SW"重新讀取為起點(diǎn)SW (4114),從實(shí)際跳躍數(shù)中減去允許跳躍數(shù),檢查減法運(yùn)算結(jié)果是否在0以下。 執(zhí)行以上步驟,直到針對全部x, y結(jié)束處理(4110)。 圖42是說明與檢測出從SW中移除組件、組件的故障相對應(yīng)的處理的流 程圖。管理計(jì)算機(jī),關(guān)于與SW# (=K)連接的組件,當(dāng)檢測出"移除"或"故 障"時(4200),檢查在與該SWk相連的組件中是否有正進(jìn)行動作的組件 (4202 )。
當(dāng)肯定該判定時,不從組件向該SWk輸入命令,發(fā)生死鎖的可能性相應(yīng) 地較小,因此在允許跳躍數(shù)表中將以SWk作為起點(diǎn)SW的SW間允許跳躍數(shù) 加1 (4204)。
然后,管理計(jì)算機(jī)再次計(jì)算以SWk作為轉(zhuǎn)發(fā)源SW的重定向數(shù),再次生 成轉(zhuǎn)發(fā)使用冗余系統(tǒng)表(4206)。
另一方面,在步驟4202中,當(dāng)與該SWk相連的組件中有正進(jìn)行動作的組 件時,針對該組件的數(shù)據(jù)包有可能引起死鎖,因此取消步驟4204和步驟4206 的處理。
在從圖40到圖42的說明中,由管理計(jì)算機(jī)執(zhí)行來執(zhí)行,但各MP或 CHA/DKA也可以具有允許跳躍數(shù)表等的副本,參照該副本由它們分別執(zhí)行。
圖35所示的存儲子系統(tǒng),在從轉(zhuǎn)發(fā)源SW向轉(zhuǎn)發(fā)目的地SW的數(shù)據(jù)包轉(zhuǎn) 發(fā)中根據(jù)使用冗余系統(tǒng)表區(qū)分使用冗余系統(tǒng),由此,在數(shù)據(jù)包轉(zhuǎn)發(fā)的過程中不 向CMA臨時拷貝數(shù)據(jù),而可以從CHA/DKA訪問任何CMA。
另一方面,在冗余系統(tǒng)的某個SW發(fā)生了故障時,若在數(shù)據(jù)包轉(zhuǎn)發(fā)的過程 中向CMA拷貝數(shù)據(jù),則可以利用交替系統(tǒng)路徑從CHA/DKA訪問任何CMA。
圖43說明在從CHA/DKA1向CMA4進(jìn)行訪問時,使用冗余系統(tǒng)B的 SW1B中發(fā)生故障時的數(shù)據(jù)包轉(zhuǎn)發(fā)處理。
從CHA/DKA1向CMA4進(jìn)行的訪問利用A的冗余系統(tǒng),針對SW1A允 許2次跳躍,因此,使數(shù)據(jù)包從SW1A到SW3A進(jìn)行2次跳躍。
CHA/DKA3將數(shù)據(jù)從SW3A臨時重定向到CMA3中,CHA/DKA4從 CMA3讀取數(shù)據(jù)后將其拷貝到CMA4中。
由此,若允許數(shù)據(jù)的重定向,則即使在冗余系統(tǒng)的一方的SW中發(fā)生故障, CHA/DKA (MP)也可以從其它冗余系統(tǒng)訪問作為目標(biāo)的組件(CMA)。下面,根據(jù)圖44來說明圖35的變形例。圖44的實(shí)施方式與圖35的實(shí)施 方式的不同點(diǎn)是電源被二重化為電源A和電源B、電源A向冗余系統(tǒng)A的 交換器供給電力、電源B向冗余系統(tǒng)B供給電力,并且與電源配置相匹配地 進(jìn)一步將各CMA 二重化。CMA1被進(jìn)一步二重化為CMA1A和CMA1B,從 電源A向CMA1A供給電力,從電源B向CMA1B供給電力。SW1A以及SW1B 分別與CMA1A和CMA1B相連。其它CMA以及交換器也如圖44所示,與 在此說明的內(nèi)容同樣地構(gòu)成。
根據(jù)圖44,即使萬——方的電源脫落,通過把來自上位位置的寫數(shù)據(jù)存 儲在此次進(jìn)一步被二重化的CMA的雙方中,寫數(shù)據(jù)即使不存儲在主存儲裝置 HDD中也不會丟失寫數(shù)據(jù)。
此外,圖44雖未配合二重化的電源而將CHA/DKA二重化,但如圖45所 示,也可以配合二重化的電源將各CHA/DKA二重化。根據(jù)該結(jié)構(gòu),針對各電 源,像CHA/DKA10和CHA/DKA20那樣將CHA/DKA二重化,因此與交換 器以及CMA的冗余化相匹配,寫數(shù)據(jù)不會丟失。此外,在圖45 圖48中為 方便起見而省略了針對冗余化電源的描繪。
接著,根據(jù)圖46說明圖44的動作的特點(diǎn)。圖46的存儲子系統(tǒng)(在圖35 以及圖46中,都將相鄰的兩個模塊作為象征性地表示存儲子系統(tǒng)的模塊來表 示)中,為了防止所述死鎖,從CHA/DKA1發(fā)送到CMA4的寫數(shù)據(jù),并非從 SW1A — 口氣通過SW2A以及SW3A地被轉(zhuǎn)發(fā)到CMA4,而是在被臨時緩沖 在CMA3中后被轉(zhuǎn)發(fā)至CMA4。 CMA4的數(shù)據(jù)存儲區(qū)域是主區(qū)域(寫數(shù)據(jù)的 最終存儲目的地),從該存儲區(qū)域?qū)?shù)據(jù)降級到存儲介質(zhì) 存儲設(shè)備(HDD或 閃速存儲器等半導(dǎo)體存儲器、磁帶或光盤等)。
此外,應(yīng)該臨時存儲在高速緩沖存儲器中的是包含數(shù)據(jù)在內(nèi)的數(shù)據(jù)包,另 外,由于數(shù)據(jù)包的數(shù)據(jù)部分以外可以再構(gòu)成,因此不一定需要進(jìn)行臨時緩沖。
在圖46中,當(dāng)CHA/DKA4從SW4A將數(shù)據(jù)存儲在CMA4的主區(qū)域時, 在CMA4A和CMA4B中雙重地存儲數(shù)據(jù)。并且,存儲子系統(tǒng)在CMA4A和 CMA4B中雙重地存儲了數(shù)據(jù)的時刻向上位裝置報(bào)告寫結(jié)束。
分別從不同電源向CMA4A和CMA4B供給電力,因此通常不發(fā)生寫數(shù)據(jù) 的丟失。于是,在存儲子系統(tǒng)在HDD中存儲數(shù)據(jù)之前,可以向主計(jì)算機(jī)裝置進(jìn)行寫完成的報(bào)告,由此,可以從存儲子系統(tǒng)中減輕與來自主計(jì)算機(jī)裝置的寫 命令相對應(yīng)的數(shù)據(jù)包處理的負(fù)荷。
圖47是圖46的變形例。在圖46中,當(dāng)模塊3502在CMA4A和CMA4B 中雙重地存儲了寫數(shù)據(jù)的時刻,向主計(jì)算機(jī)進(jìn)行了寫完成報(bào)告,但在圖47中, 不使作為臨時存儲區(qū)域的CMA3A的寫數(shù)據(jù)存儲區(qū)域無效化,而升級到正式的 主區(qū)域中,與此同時,將寫數(shù)據(jù)存儲在CMA4B的主區(qū)域中,在此時刻,模塊 3502向主計(jì)算機(jī)裝置進(jìn)行寫完成報(bào)告。通過將CMA3A的一個存儲區(qū)域存儲 在主區(qū)域中,寫數(shù)據(jù)也被雙重寫入CMA4B的主區(qū)域中。此外,向CMA3A供 給A系統(tǒng)的電源,向CMA4B供給B系統(tǒng)的電源,因此也實(shí)現(xiàn)了針對電源不 良的冗余化。
圖48是使CHA/DKA不兼有MP功能時的框圖。MP在各模塊中被雙重 化為從電源A供給電力的A系統(tǒng)(例如MP1A)和從電源B供給電力的B系 統(tǒng)(例如MPIB )。各MP分別與全部的交換器(SW1A、 SW2A、 SW1B、 SW2B ) 相連。
MP所處理的用于控制的信息的數(shù)據(jù)長度短,因此MP與交換器間的路徑, 與聯(lián)結(jié)轉(zhuǎn)發(fā)與主計(jì)算機(jī)裝置間的輸入輸出數(shù)據(jù)的CMA、 CHA/DKA和各交換 器的路徑相比,帶寬可以較窄。比較容易增多各交換器與MP之間的路徑數(shù)。 于是,通過在模塊內(nèi)的4個SW中形成從MP開始的路徑,關(guān)于MP間的消息 的轉(zhuǎn)發(fā)不需要所述的重定向。例如,當(dāng)與圖29對應(yīng)時不中斷(4)、 (6), MP2—MPO可以通過1次跳躍進(jìn)行消息的轉(zhuǎn)發(fā)。
圖49是表示圖35所示的存儲子系統(tǒng)的多個模塊通過以網(wǎng)狀(mesh)相互 結(jié)合而得到的網(wǎng)格系統(tǒng)的要部的框圖。當(dāng)著眼于模塊l時,模塊1與相鄰的3 個模塊通過B系統(tǒng)的交換器相互連接。以模塊1的交換器2B分別接收來自相 鄰的其它3個模塊的命令數(shù)據(jù)包的方式形成路徑,以從模塊1的交換器IB分 別向相鄰的其它3個模塊發(fā)送命令數(shù)據(jù)包的方式形成路徑。
權(quán)利要求
1. 一種與主計(jì)算機(jī)相連的、從該主計(jì)算機(jī)接受寫或讀訪問的存儲子系統(tǒng),其特征在于,具有分別具有存儲資源的多個構(gòu)成單位;聯(lián)結(jié)所述多個構(gòu)成單位的交換器;控制器,其對于將數(shù)據(jù)包經(jīng)由所述交換器轉(zhuǎn)發(fā)至所述多個構(gòu)成單位中的目標(biāo)構(gòu)成單位的操作進(jìn)行控制,該數(shù)據(jù)包是基于來自所述主計(jì)算機(jī)的所述寫或讀訪問的數(shù)據(jù)包;以及存儲了所述數(shù)據(jù)包的轉(zhuǎn)發(fā)規(guī)則的存儲器,所述控制器根據(jù)所述轉(zhuǎn)發(fā)規(guī)則控制所述數(shù)據(jù)包的轉(zhuǎn)發(fā)。
2. 根據(jù)權(quán)利要求l所述的存儲子系統(tǒng),其特征在于, 具有將所述構(gòu)成單位、所述交換器和所述控制器組合而成的多個模塊, 所述多個模塊構(gòu)成為可以經(jīng)由所述交換器進(jìn)行多重聯(lián)結(jié),所述控制器根據(jù)所述轉(zhuǎn)發(fā)規(guī)則,將在所述模塊的所述交換器彼此間的路徑 上流動的命令數(shù)據(jù)包的轉(zhuǎn)發(fā)方向限定為特定方向。
3. 根據(jù)權(quán)利要求2所述的存儲子系統(tǒng),其特征在于, 在所述多個模塊的交換器間構(gòu)成多條路徑,所述控制器經(jīng)由所述多條路徑之一轉(zhuǎn)發(fā)從所述多個模塊之一向其它模塊 的所述命令數(shù)據(jù)包,經(jīng)由與所述一條路徑不同的路徑轉(zhuǎn)發(fā)從所述其它模塊向所 述一個4莫塊的所述命令數(shù)據(jù)包。
4. 根據(jù)權(quán)利要求2所述的存儲子系統(tǒng),其特征在于,對于在所述多個模塊間轉(zhuǎn)發(fā)的多個數(shù)據(jù)包中的至少一個數(shù)據(jù)包,所述控制 器根據(jù)所述轉(zhuǎn)發(fā)控制規(guī)則限制該數(shù)據(jù)包可以 一次跨越的、所述多個模塊間的路 徑的數(shù)量。
5. 根據(jù)權(quán)利要求2所述的存儲子系統(tǒng),其特征在于,對于在所述多個模塊間轉(zhuǎn)發(fā)的多個數(shù)據(jù)包中的至少一個數(shù)據(jù)包,所述控制 器將該數(shù)據(jù)包的數(shù)據(jù)臨時存儲在所述多個模塊的至少 一個中。
6. 根據(jù)權(quán)利要求5所述的存儲子系統(tǒng),其特征在于, 所述模塊具有控制與所述主計(jì)算機(jī)之間的輸入輸出的第l適配器、保存存儲所述數(shù)據(jù)包的數(shù)據(jù)的主存儲裝置、高速緩沖存儲器、以及控制與所述主存儲裝置之間的輸入輸出的第2適配器,所述控制器經(jīng)由所述交換器可以訪問所述第1適配器、所述主存儲裝置和所述高速緩沖存儲器,多個所述模塊,經(jīng)由所述交換器間的路徑構(gòu)成所述數(shù)據(jù)包的轉(zhuǎn)發(fā)路由, 構(gòu)成所述轉(zhuǎn)發(fā)路由的所述多個模塊中的至少 一個模塊的所述高速援沖存儲器,臨時存儲所述轉(zhuǎn)發(fā)途中的數(shù)據(jù)包的數(shù)據(jù),將該數(shù)據(jù)包從所述轉(zhuǎn)發(fā)路由進(jìn)行臨時緩沖。
7. 根據(jù)權(quán)利要求6所述的存儲子系統(tǒng),其特征在于, 在所述轉(zhuǎn)發(fā)路由上發(fā)送所述數(shù)據(jù)包的過程中從第1高速緩沖存儲器向第2高速緩沖存儲器轉(zhuǎn)發(fā)所述數(shù)據(jù)包時,所述控制器釋放所述第1高速緩沖存儲器 的存儲了所述數(shù)據(jù)包的區(qū)域。
8. 根據(jù)權(quán)利要求3所述的存儲子系統(tǒng),其特征在于,與所述命令數(shù)據(jù)包對應(yīng)的應(yīng)答數(shù)據(jù)包,通過與該命令數(shù)據(jù)包所通過的路徑 相同的路徑,被轉(zhuǎn)發(fā)至所述命令數(shù)據(jù)包的發(fā)送源模塊。
9. 根據(jù)權(quán)利要求4所述的存儲子系統(tǒng),其特征在千,對于在所述多個才莫塊間轉(zhuǎn)發(fā)的多個數(shù)據(jù)包中的至少一個數(shù)據(jù)包,所述控制 器將該數(shù)據(jù)包的數(shù)據(jù)臨時存儲在所述多個模塊的至少一個中。
10. 根據(jù)權(quán)利要求5所述的存儲子系統(tǒng),其特征在于,關(guān)于在所述多個模塊的至少一個中臨時存儲的數(shù)據(jù),所述控制器根據(jù)所述 轉(zhuǎn)發(fā)控制規(guī)則,限制用于寫或讀的數(shù)據(jù)包可以一次跨越的所述多個模塊間的路 徑的數(shù)量。
11. 根據(jù)權(quán)利要求2所述的存儲子系統(tǒng),其特征在于, 所述控制規(guī)則包含在所述多個模塊間轉(zhuǎn)發(fā)的消息數(shù)據(jù)包的中繼目的地模塊,所述控制器經(jīng)由所述中繼目的地模塊,從轉(zhuǎn)發(fā)源模塊向轉(zhuǎn)發(fā)目的地模塊轉(zhuǎn) 發(fā)所述消息數(shù)據(jù)包。
12. 根據(jù)權(quán)利要求11所述的存儲子系統(tǒng),其特征在于,所述控制器根據(jù)所述轉(zhuǎn)發(fā)控制規(guī)則,限制所述消息數(shù)據(jù)包可以 一次跨越 的、所述多個模塊間的路徑的數(shù)量。
13. 根據(jù)權(quán)利要求2所述的存儲子系統(tǒng),其特征在于,通過構(gòu)成第1冗余系統(tǒng)的所述多個第1交換器和構(gòu)成第2冗余系統(tǒng)的所述 第2交換器,所述多個模塊相互聯(lián)結(jié)。
14. 根據(jù)權(quán)利要求13所述的存儲子系統(tǒng),其特征在于, 針對屬于所述第1冗余系統(tǒng)和第2冗余系統(tǒng)的交換器,限制與該交換器對應(yīng)的數(shù)據(jù)包一次3爭越的所述多個交換器間的路徑的數(shù)量。
15. 根據(jù)權(quán)利要求14所述的存儲子系統(tǒng),其特征在于, 與屬于所述第1冗余系統(tǒng)和第2冗余系統(tǒng)的交換器相對應(yīng)的數(shù)據(jù)包,當(dāng)從該數(shù)據(jù)包的轉(zhuǎn)發(fā)源到其轉(zhuǎn)發(fā)目的地的所述路徑數(shù)量超過所述限制時,所述控制 器在所述數(shù)據(jù)包的轉(zhuǎn)發(fā)途中將數(shù)據(jù)臨時存儲在所述模塊內(nèi)的組件中。
16. 才艮據(jù)權(quán)利要求14所述的存儲子系統(tǒng),其特征在于,當(dāng)屬于第1冗余系統(tǒng)的所述至少一個交換器受到妨礙時,所述控制器經(jīng)由 第2冗余系統(tǒng)將所述數(shù)據(jù)包轉(zhuǎn)發(fā)至所述多個模塊中的目標(biāo)模塊的對象組件。
17. —種存儲子系統(tǒng),具有可以多重聯(lián)結(jié)地構(gòu)成的多個i^塊,并接受來自 與該多個^^莫塊中的至少一個模塊相連的主計(jì)算機(jī)的寫或讀訪問,所述多個;f莫塊,構(gòu)成轉(zhuǎn)發(fā)數(shù)據(jù)包的轉(zhuǎn)發(fā)路由,所述數(shù)據(jù)包順次通過構(gòu)成該轉(zhuǎn)發(fā)路由的所述多個模塊,被轉(zhuǎn)發(fā)至目標(biāo)模塊,所述數(shù)據(jù)包是基于來自所述主 計(jì)算機(jī)的所述寫或讀訪問的數(shù)據(jù)包,所述存儲子系統(tǒng)的特征在于,所述各模塊具有控制與所述主計(jì)算機(jī)之間的輸入輸出的第1適配器; 保存存儲所述數(shù)據(jù)包的數(shù)據(jù)的主存儲裝置; 高速緩沖存儲器;控制與所述主存儲裝置的輸入輸出的第2適配器; 控制器;以及與所述第1適配器、所述主存儲裝置、所述高速緩沖存儲器、所述第2 適配器和所述控制器連接的交換器,所述控制器經(jīng)由所述交換器訪問所述第1適配器、所述主存儲裝置、所述高速緩沖存儲器和所述第2適配器來控制所述數(shù)據(jù)包的轉(zhuǎn)發(fā),所述多個模塊經(jīng)由設(shè)置在各模塊的所述交換器間的路徑進(jìn)行連接,構(gòu)成所 述轉(zhuǎn)發(fā)路由,所述控制器識別在所述轉(zhuǎn)發(fā)路由上轉(zhuǎn)發(fā)的數(shù)據(jù)包可以通過的所述路徑的 上限值,當(dāng)所述數(shù)據(jù)包超過所述上限值地在所述轉(zhuǎn)發(fā)路由上被轉(zhuǎn)發(fā)時,在所述 數(shù)據(jù)包超過所述上限值之前,在所述轉(zhuǎn)發(fā)路由上的所述模塊的所述高速緩沖存 儲器中臨時存儲所述數(shù)據(jù)包中包含的數(shù)據(jù),然后,將該高速緩沖存儲器中存儲 的所述數(shù)據(jù)包向其它4莫塊進(jìn)行轉(zhuǎn)發(fā)。
18. 根據(jù)權(quán)利要求17所述的存儲子系統(tǒng),其特征在于, 接受來自所述主計(jì)算機(jī)的寫訪問的所述模塊的第l控制器,當(dāng)判定為未分配存儲所述寫數(shù)據(jù)的存儲區(qū)域時,判定是否可以對該第1控制器屬于的模塊的 所述主存儲裝置分配該寫數(shù)據(jù),當(dāng)所述第l控制器否定了該判定時,該第l控制器向未超過所述上限值的 范圍內(nèi)的其它模塊的第2控制器發(fā)送所述數(shù)據(jù)包,該第2控制器判定是否可以將從所述第l控制器發(fā)送來的所述數(shù)據(jù)包的所 述寫數(shù)據(jù),向該其它模塊的所述主存儲裝置的存儲區(qū)域進(jìn)行所述分配。
19. 根據(jù)權(quán)利要求17所述的存儲子系統(tǒng),其特征在于, 所述各才莫塊具有屬于第i冗余系統(tǒng)的第1交換器、和屬于第2冗余系統(tǒng)的第2交換器,通過所述路徑將同一冗余系統(tǒng)的所述交換器彼此連接,由此連接所述多個 模塊,所述各模塊的第1適配器、所述第2適配器、所述高速緩沖存儲器以及所 述控制器,與該模塊的所述第1交換器和所述第2交換器相連接。
20. 根據(jù)權(quán)利要求19所述的存儲子系統(tǒng),其特征在于, 所述第1交換器以及第2交換器分別由多個交換器適配器構(gòu)成, 在所述各交換器適配器中設(shè)定所述上限值,被轉(zhuǎn)發(fā)至所述交換器適配器的所述數(shù)據(jù)包,當(dāng)從該交換器適配器向作為目 的地的其它交換器適配器轉(zhuǎn)發(fā)時,受到所述上限值的限制,為使所述數(shù)據(jù)包到達(dá)其它模塊而對其進(jìn)行轉(zhuǎn)發(fā)的第1交換器適配器的所述上限值,被設(shè)定為小于在同一模塊內(nèi)轉(zhuǎn)發(fā)所述數(shù)據(jù)包的第2交換器適配器的 所述上限值的值,所述模塊將所述第2交換器適配器與所述第1交換器適配器相連接,并將 該第1交換器適配器與其它模塊的所述第1交換器適配器相連接。
全文摘要
本發(fā)明提供一種存儲子系統(tǒng),其可以在可升級性優(yōu)異的網(wǎng)格存儲系統(tǒng)中避免死鎖。本發(fā)明的存儲子系統(tǒng)是連接主計(jì)算機(jī)的、從該主計(jì)算機(jī)接受寫或讀訪問的存儲子系統(tǒng),其具有分別具有存儲資源的多個模塊(16)、聯(lián)結(jié)多個模塊的交換器(24)、對于將基于來自主計(jì)算機(jī)的寫或讀訪問的數(shù)據(jù)包經(jīng)由交換器轉(zhuǎn)發(fā)至多個模塊中的目標(biāo)模塊的操作進(jìn)行控制的MP(18)、以及存儲了數(shù)據(jù)包的轉(zhuǎn)發(fā)規(guī)則的存儲器??刂破鞲鶕?jù)轉(zhuǎn)發(fā)規(guī)則控制數(shù)據(jù)包的轉(zhuǎn)發(fā)。
文檔編號H04L12/56GK101471882SQ20081018501
公開日2009年7月1日 申請日期2008年12月26日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者中村崇仁, 福田秀明, 細(xì)谷睦, 藤林昭 申請人:株式會社日立制作所