JP4639223B2 - ストレージサブシステム - Google Patents

ストレージサブシステム Download PDF

Info

Publication number
JP4639223B2
JP4639223B2 JP2007336864A JP2007336864A JP4639223B2 JP 4639223 B2 JP4639223 B2 JP 4639223B2 JP 2007336864 A JP2007336864 A JP 2007336864A JP 2007336864 A JP2007336864 A JP 2007336864A JP 4639223 B2 JP4639223 B2 JP 4639223B2
Authority
JP
Japan
Prior art keywords
packet
switch
module
transfer
data
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.)
Expired - Fee Related
Application number
JP2007336864A
Other languages
English (en)
Other versions
JP2009157757A (ja
Inventor
崇仁 中村
昭 藤林
睦 細谷
秀明 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007336864A priority Critical patent/JP4639223B2/ja
Priority to US12/020,216 priority patent/US7817626B2/en
Priority to EP20080251530 priority patent/EP2075983A3/en
Priority to CN2008101850154A priority patent/CN101471882B/zh
Publication of JP2009157757A publication Critical patent/JP2009157757A/ja
Priority to US12/888,268 priority patent/US8340087B2/en
Application granted granted Critical
Publication of JP4639223B2 publication Critical patent/JP4639223B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]

Description

本発明はストレージサブシステムに係わり、特に、ストレージサブシステム内ネットワークでのパケット通信においてデッドロックが発生することを抑制できるストレージサブシステムに関するものである。
従来からコンピュータシステムに、デッドロックが発生しないようにする取り組みがなされている。デッドロックとは、コンピュータシステムの通信ネットワークで複数のパケットの処理に競合が発生し、複数のパケットが互いにすくみを起こして、パケットの処理が進まない状況である。
例えば、特開2002―344463号公報には、処理装置と接続されたノード装置が双方向に通信可能なリンクによってリング状に接続された双方向リングネットワークにおいて、パケットのルーティングを容易に変更できるようにするために、ノード装置はデッドロック回避のためにネットワーク中のどの部分で依存関係を切断するかを記録する切断点記録レジスタを有し、処理装置から入力されたパケットに関し、このレジスタ値を元にして、パケットを双方向リングネットワーク上のどちらの方向に送出するかを決定することが記載されている。
また、特開2003―30166号公報にはタスクの処理効率の低下を防ぎながら、デッドロックが解消される疎結合マルチプロセッサシステムを提供するために、複数の資源を共有しながら複数のタスクを実行するホスト群と、デッドロックチェック装置とを備え、デッドロックチェック装置は、複数のタスクのうちの一のタスクが、資源のうちの一を待つ待ち状態に入ることにより発生するデッドロックを検出し、デッドロックが検出されたとき、タスクそれぞれの処理の進行程度と、タスクそれぞれに定められたプライオリティとに基づいて、既述の複数のタスクのうちから、ロックしている資源を解放する資源解放タスクを選択することが開示されている。
さらにまた、特開2004−246439号公報には、クラスタシステムを構成するホスト間でのデッドロックによるクラスタシステム全体のストールを防止するために、タイマ監視手段が共有資源に対する資源ロック待ちを監視し、共有資源長時間ロックチェック手段が共有資源に対する資源ロック待ちの原因となっているホストおよびプロセスを調査し、共有資源に対する資源ロック待ちの原因となっているプロセスを強制停止してプロセスが確保していた共有資源のロックを解放し、共有資源に対する資源ロック待ちの原因となっているプロセスが動作しているホストを強制停止して、ホストがロックしていた共有資源に対する資源ロック要求をパージすることが記載されている。
特開2002―344463号公報 特開2003―030166号公報 特開2004−246439号公報
特開2002―344463号公報に係る従来例では、リングネットワークの全域に渡って切断点を管理しなければならず管理負荷が大きくなるという課題がある。
特開2003―030166号公報に係る従来例では、デッドロックが検出されたとき、タスクそれぞれの処理の進行程度と、タスクそれぞれに定められたプライオリティとに基づいて、既述の複数のタスクのうちから、ロックしている資源を解放する資源解放タスクを選択しなければならないが、これはタスクの処理に対してオーバヘッドとなり、特にシステムに拡張性を持たせようとするとした場合にその実現性が乏しい。
また、特開2004−246439号公報に係る従来例にかかるクラスタスステムをストレージシステムの内部ネットワークに応用しようとすると、資源ロック状態が検知されるまでに、ストレージシステムにコマンドを発行したホスト計算機がそのコマンドのタイムアウトを起こしてしまい、ホスト計算機が目的のノードにタイムアウト前にパケットを送ることができなくなるという課題がある。
ところで、ユーザの事業の成長に合わせて、記憶容量などの規模を拡大できるストレージシステムとして、グリッドストレージシステムが存在する。このストレージシステムは、チャネルアダプタやディスクアダプタ等を有する比較的小規模なノードの複数を、スイッチを介してストレージサブシステムの内部ネットワークに順次追加して、ユーザに対して提供される記憶資源の規模を拡大できるグリッドアーキテクスチャを実現する。
ストレージシステムのあるノードがホスト計算機からコマンドを受領すると、コマンドを受領したノードは、スイッチを介して目的のノードにリードコマンドやライトコマンドのパケットを転送し、このパケットを受けたノードは、キャッシュメモリや記憶デバイスとの間でデータの書き込み・データの読み出しを行うことで、ストレージシステムはホスト計算機に応答する。
ストレージサブシステムの内部ネットワークでの複数のパケットの転送が、複数のスイッチに及ぶと、複数のパケットがノードのパスやバッファなどのリソースを同時に取り合い、この時のリソースの依存関係がループを構成すると、ホスト計算機からの命令に基づく処理が先に進めなくなる、既述のデッドロックが発生する。
従来は、グリッドストレージシステムなどのスケーラブル(拡張容易性)に優れたストレージシステムの分野において、このデッドロックを解消するための有効な提案がなされてこなかった。
そこで、本発明は、スケーラブル性に優れたグリッドストレージシステムにおいて、デッドロックを回避することを目的とするものである。本発明の他の目的は、デッドロックの検出器など特別のハードウエアを必要とすることなく、デッドロックの発生を防ぐことができるストレージサブシステムを提供することにある。本発明のさらに他の目的は、処理オーバヘッドを起こすことなく、さらに、ホスト計算機のタイムアウトを起こすことなくデッドロックの発生を防ぐことができるストレージサブシステムを提供することにある。
前記目的を達成するために、本発明は、ユーザの事業の成長に合わせて、記憶容量などの規模を拡大できるグリッドストレージシステムにおいて、前記デッドロックが起きないようなパケットの転送規則を備え、この転送規則に基づいて内部ネットワーク中のパケットの転送を制御することを特徴とするものである。
本発明は、スケーラブル性に優れたグリッドストレージシステムにおいて、デッドロックを回避することができる。また、本発明によれば、デッドロックの検出器など特別のハードウエアを必要とすることなく、デッドロックの発生を防ぐことができるストレージサブシステムを提供することができる。
さらにまた、本発明によれば、処理オーバヘッドを起こすことなく、かつ、ホスト計算機のタイムアウトを起こすことなくデッドロックの発生を防ぐことができるストレージサブシステムを提供することができる。
次に、本発明の実施形態について説明する。図1は、本発明に関するストレージシステムのブロック図である。このストレージシステムは、複数のホスト計算機10がネットワーク手段としてのSAN12を経由して、ストレージサブシステム14に接続されている構成を有している。
このストレージサブシステム14は、グリッドストレージとしての構造を有している。すなわち、モジュール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からフレームS01がCHAに発行されるとCHAはこのフレームを解析して、フレームの種類(リード要求)とデータが存在するアドレスを表すパケットS10を形成して、これを、SWを経由してMPに伝える。
この応答を受けたMPは、データがどのDKAの配下にある記憶デバイスにあるか、あるいはどのCMAにあるかを解析して、CMAにデータが格納されていなければ当該DKAにデータを求めるコマンドパケットS12を形成してこれを送信する。
図2の例では、データは当初CMAに格納されておらずHDD26のみにある場合を示している。DKA、CMA、及びHDDはMPと同一のモジュールにあるかあるいは他のモジュールにあるかはデータの存在場所によって異なるものである。
DKAは、MPからのパケットS12に基づいて、HDD26の特定領域にアクセスしてデータを読み出し、このデータをノンポスティッドアクセスS14によってCMAにステージングするとともに、CMAへのライトが終了した時点で、この旨を表すパケットS15をMPに送信する。
MPがパケットを受領すると、CMAにデータがステージングされた旨と、データが存在するCMAのアドレスを通知するパケットS16をCHAに送信する。すると、CHAはCMAの特定アドレスにアクセスして目的のデータをリードして(S18)、このデータをホスト計算機に通知する(S19)。
CHA20がホスト計算機にデータの転送を終了すると、その旨のパケットS19AをMP18に通知する。次いで、MPは、データをリードした一連の処理にエラーが無かったことをデータの保証コードなどにより確認し、CHAにホスト計算機へ正常リード終了の応答フレームS21を出すことを求めるパケットS20を通知する。
次に、図3は、CHAがホスト計算機からライト要求のフレームS30を受けた場合のラダーチャートである。CHAがホスト計算機からライト要求を受けると、CHAはライト要求に対応するパケットS30をMPに送り、MPはデータをどのCMAのどのアドレスに格納すべきかを解析し、次いで、MPはCHAにホスト計算機からのデータ送信を要求するコマンドパケットS34をCHAに送信する。CHAはホスト計算機にデータの送信を要求するフレームS36を送信する。
CHAがホストからデータのフレーム38を受領すると、CHAはMPから通知されたCMAの特定番地にデータを書き込むコマンドパケットS40を該当するCMAにノンポスティッドアクセスとして通知する。
CMAからの応答を受けたCHAは、データの転送を終了したことのパケットS42をMPに通知する。この通知を受けたMPはデータがCMAに正しく書き込まれたことを確認して、パケットS44をCHAに発行する。CHAは、正常終了を示す応答フレームS46をホスト計算機に発行する。
MPは、データを格納すべきHDD26を制御するDKAに、CMAのデータをデステージングするために、データが存在するCMAのアドレスと、このデータが書き込まれるハードディスクドライブ26のアドレスとを通知するパケットS48を発行する。
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を参照して応答パケットを作成する。応答パケットは順番に送信バッファBに送られる。
図5はスイッチアダプタのブロック構成を示す。スイッチアダプタ24は、それぞれ受信バッファ36Aと送信バッファ36Bとを有する内部ネットワーク制御部36を複数備えている。各内部ネットワーク制御部は相互接続網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に格納された管理ブロックに基づいて、各コンポーネントなどを制御する。
メモリモジュール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コントローラ64Aとが接続されている。DMAコントローラ及びバッファは相互接続網62を介してプロトコル処理部60に接続されている。内部ネットワーク制御部68は相互接続網62に接続されている。相互接続網62はスイッチによって構成され、プロトコル制御部60は相互接続網62を介して、DMAコントローラ64、バッファ66、あるいは内部ネットワーク制御部68に接続することができる。
DMAコントローラ64は、MPによってセットされた命令を命令解析部64Aで解析してデータの転送を行う。命令にはリード機能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の送信パケット36B(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上を流れようとする。
この際、ホスト計算機から第1のCHA20−1へのリード要求に基づくパケットが、送信バッファ36B(1)−1を占有して、ホスト計算機から第2のCHA20−2へのリード要求に基づくパケット802がロックしてしまう。
さらに、CHA20−2へのリード要求に基づくパケットが、送信バッファ36B(1)−2を占有して、ホスト計算機から第1のCHA20−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、SW−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への1回、又はSW24−3からSW24−2への1回に制限される。
これによって、デッドロックの原因となった競合する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に格納されていない場合は、第3のモジュール1504のDKA22−3に、コマンドパケット1402を作成してこれを転送する。
DKA22−3はHDD26−3の目的の領域にアクセスしてデータを読み込んで、データを同一モジュールのCMA21−3に一時格納するために、CMA21−3にノンポスティッドアクセス1404をする。
DKA22−3はMP18−1にデータを記憶したCMA21−3のアドレスを含む応答パケット1406を送信する。これを受けてMP18−1はCHA20−2(第2のモジュール1502のもの)にCMA21−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にデータが格納されているCMA21−2のアドレスを含むパケット1411を送信する。
CHA20−1は、図15にも示すように、CMA21−2にノンポスティッドアクセスによってデータを要求するコマンドパケット1414を送信してこのデータを取得する。次いで、CHA20−1はホスト計算機に当該データを転送し、そして、CHA20−1はMP18−1に、CHA20−1がデータを取得する一例の処理にエラーがなかったか否かをチェックすることを求めるコマンドパケット1415を発行する。
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のようになる。既述の第1のパケット転送制御規則(図10)はパス状態テーブルと、このテーブルに基づくMPの制御によって実現される。図10ではSW24―1とSW24−2との間のパスを流れるコマンドパケットの方向を規制したが、これは図18によれば、ポート5から送出可能なパケット種がSW1へのコマンドパケットであること、そして、図17には説明していないが、SW1のポート1の接続先はSW0であり、その送出可能なパケット種が応答であることにより、実現できる。パケット種はパケットフレームによって検出可能である。なお、後述するメッセージパケットについてはノンポステッドパケットであり、コマンド・応答パケットの関係はなく、例えばMPに接続されるポートにも送受信できる。
次に、図5のルーティングテーブル(RT)の詳細について説明する。SWはあるポートから受領したパケットを受信バッファに格納し、RTにしたがって受信パケットをどの転送ポートの送信バッファに送るかを決定する。ルーティングテーブルは、SWのポート毎について設定される。
図19は図18のSW0のCHA0が接続する受信ポート0について設定されたRTである。パケットが転送されるべき送信先アドレスは、SW♯とコンポーネントの特定情報(ID)から構成される。送信先アドレスのSW♯がSW0の場合には、同一モジュールの目的とするコンポーネントに宛てられたもので、RTにしたがって、対応する転送ポートに向けてパケットがルーティングされる。
送信先アドレスのSW♯がSW0以外の場合には、SW0が受信したパケットが、他のモジュールのSWの受信ポートに向けるために、ポート5に対してルーティングされる。図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のフローチャートに示すように、CHA0からのコマンドパケットをLDEV―DKAテーブルを参照して解析し(2500)、コマンドパケットが対象とするMPが自身(=MP0)であるか否かをチェックする(2502)。
対象MPが自MP(MP0)である場合には、CMA0にSW0に接続するDKA0を介してDKA0配下のハードディスクからデータをステージングする(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の判定を否定し、ステップ2808に移行してMP2に宛ててリード要求メッセージを転送する(2808)。
MP2がMP1からリード要求メッセージを受領すると、リード要求メッセージはMP2宛であるため、ステップ2800の判定を肯定し、図29にも示すように、ステップ2804において、MP2はCMA2にDKA2によって得られたHDD2のデータを格納する領域を確保する(図29(3))。そして、ステップ2806に示すように、リード応答メッセージをMP1に送り、データが存在するCMAのマスタエリアをMP1に通知する(図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で説明したグリッド構造を備えるストレージサブシステムが、ホスト計算機からライト要求を受領した場合の動作について説明する。図31はそれを説明するブロック図である。CHA2がホスト計算機からライト要求を受領している。
図32はホスト計算機からのライト要求を受領したMPの動作を説明するフローチャートである。MPはLDEV―DKAテーブルを参照して、ライトデータをハードディスクドライブに格納する処理を行うDKAを特定し、このDKAと同一モジュールのMP(対象MP)特定する(3200)。
一方、ライト要求でのデータのライト先LEDV(該当領域)がLEDV―DKAテーブルに割り当てられていない場合(3202)には、自MPのSWに接続しているDKAについて、自MPはDKAテーブルを参照して、PDEVに空領域があるか否かをチェックする(3204)。
PDEVに空領域がある場合には、自MPは、DKAテーブルにライト要求に含まれるLDEV、LBA(該当領域)を割り当ててLDEV―DKAテーブル及びDKAテーブルを更新してこれをそのメモリに登録するとともに、この割り当てに関する情報、或いは更新後のこれらテーブルを他のMPに通知する(3206)。
次いで、自MPは同一モジュールのCMAに存在するライトデータを当該CMAから同一モジュールのDKAによって当該DKAの配下のハードディスクにデステージ処理する(3214)。
ステップ3202において、ライト要求でのデータのライト先LEDV(該当領域)がLEDV―DKAテーブルに割り当てられている場合には、自MPが対象MPか否かが判定され(3212)、自MPが対象MPである場合には、既述のものと同様にデステージ処理する。一方、ステップ3212において自MPが対象MPでないと判定された場合には、ライト要求メッセージ(図21(3))を、メッセージ転送テーブルを参照して作成し、これを転送先MPに転送する(3216)。このライト要求メッセージは、既述のリード要求メッセージと同様にして作成される。
ステップ3204において、自MPが自MPのDKAに空領域が無いと判断すると、自MPは該当領域の割り当てを求めるコマンドをより近いモジュールのMPに要求する(3208)。
自MPは要求を受けたMPからの応答パケットをチェックし、自MPは、まずはコピーせずにアクセスできる範囲で、その範囲で割り当てができないならば1回のコピーでアクセスできる範囲でというように、該当領域の割り当てが達成されるまで自MPに近い順に、モジュール毎に他のMPに接触する。
自MPからの要求を承認した他MPは、自身のテーブルを更新し、これを他のMPに通知する(3210)。そして、自MPはライト要求メッセージを作成して、これを該当領域の割り当てを承認したMPに通知する。
図33は、ライト要求メッセージを受けたMPの処理動作を示すフローチャートである。ライト要求メッセージを受けたMPは、ライト要求が自MP宛か他のMP宛かをチェックする(3300)。
宛先MPが自MPと判定されると、自MPと同一モジュールのCMAからそのDKA配下のHDDに当該CMAに存在するライトデータがデステージ処理される(3302)。
このデステージ処理の際に自MPは同一モジュールのCMAに、ライト要求メッセージのデータ存在アドレスのデータを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のマスタエリア(データ格納先アドレス)を知る。
このライト要求メッセージを受けたMP1はメッセージがMP0に宛てられたものであることから、同一モジュールのCMA1に一時格納領域を確保し、CHA/DKA1にCMA2のライトデータをCMA1にコピーすることを指示する。CMA2からCMA1にライトデータをコピー(5)したCHA/DKA1は、MP1及びMP2にコピーの終了を通知する。
MP1は、MP2からのライト要求メッセージの宛先MPがMP0であることから、ライト要求メッセージを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)は2パスによって接続されている。
モジュール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にコピーする必要がある。よって、CHA/DKA1からCMA3へのデータのライトはA系を利用して行われる。
SW1Aに対して許容ホップ数が「2」であり、SW2Aに対する許容ホップ数が「1」の理由は、SW1AとSW2Aとの間はコマンドパケットが2パスの双方向で送信できるので、図10に示すように、デッドロックの発生には支障が無いのに対して、異なるモジュールを跨ぐSW2AとSW3Aとの間では1パスから構成されているので、デッドロックを防ぐ観点からSW2Aを起点するパケットの送信をSW2AとSW3Aとの間で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)にアクセスすることができる。
次に図35の変形例を図44に基づいて説明する。図44の実施形態が図35の実施形態と異なる点は、電源が電源Aと電源Bに二重化されていること、電源Aは冗長系Aのスイッチに電力を供給していること、電源Bは冗長系Bに電力を供給していること、そして、各CMAを電源に配置に合わせてさらに二重化したことである。CMA1はCMA1AとCMA1Bにさらに二重化され、CMA1Aには電源Aから電力が供給され、CMA1Bには電源Bから電力が供給されている。SW1A及びSW1BはそれぞれCMA1AとCMA1Bに接続されている。他のCMA及びスイッチも図44に示すように、ここで説明した内容と同様に構成されている。
図44によれば万一一方の電源が落ちても上位装置からのライトデータが今回さらに二重化されたCMAの両方に格納されていることによりライトデータが主記憶装置HDDに格納されていなくてもライトデータは失われない。
なお、図44はCHA/DKAを二重化された電源に合わせて2重化されていないが、図45に示すように二重化された電源に合わせて各CHA/DKAを二重化しても良い。この構成によれば、各電源について、CHA/DKA10とCHA/DKA20のように、CHA/DKAが二重化されているために、スイッチ及びCMAの冗長化と合わせてライトデータが失われることはない。なお、図45−図48では便宜上冗長化電源についての描画を省略している。
次に図44の動作の特徴点を図46に基づいて説明する。図46に係るストレージサブシステム(図35及び図46とも、隣接する二つのモジュールを、ストレージサブシステムを象徴的に示すものとして図示している。)において、既述のデッドロックを防止するために、CHA/DKA1からCMA4に送られるライトデータはSW1AからSW2A及びSW3Aを一気に通過してCMA4に転送されるのではなく、CMA3に一時的にバッファリングされた後、CMA4に転送される。CMA4のデータ格納領域はマスタ領域(ライトデータの最終的な格納先)であり、この格納領域からデータが記憶媒体・記憶デバイス(HDD或いはフラッシュメモリなどの半導体メモリ、磁気テープ、又は光ディスクなど)にデステージングされる。
なお、キャッシュメモリに一時的に格納されるべきものはデータを含むパケットであり、またパケットのデータ部分以外は再構成可能であるために必ずしも一時バッファリングは必要ではない。
図46においてCHA/CKA4がSW4AからデータをCMA4のマスタ領域に格納する際にCMA4AとCMA4Bに2重にデータを格納する。そして、ストレージサブシステムは、CMA4AとCMA4Bに2重にデータを格納した時点で上位装置にライト終了を報告する。
CMA4AとCMA4Bにはそれぞれ別の電源から電力が供給されておりライトデータのロストは通常ないからである。このようにストレージサブシステムがHDDにデータを格納する以前にホスト装置にライト完了の報告ができることにより、ホスト装置からのライト命令に対するパケット処理に係る負荷をストレージサブシステムから軽減することが出来る。
図47は図46の変形例である。図46では、モジュール3502がCMA4AとCMA4Bにライトデータを二重に格納した時点でホスト計算機にライト完了報告を行っていたが、図47では、一時格納領域であるCMA3Aのライトデータ格納領域を無効化しないで正式なマスタ領域に格上げするとともに、ライトデータをCMA4Bのマスタ領域に格納し、この時点でモジュール3502はホスト装置にライト完了報告を行う。CMA3Aの一格納領域をマスタ領域に格納することにより、ライトデータがCMA4Bのマスタ領域にも二重書されるからである。なお、CMA3AはA系統の電源が供給され、CMA4BにはB系統の電源が供給されるため、電源不良に対する冗長化も達成されている。
図48はMP機能をCHA/DKAに兼ねさせない場合のブロック図である。MPが、各モジュールで電源Aから電力が供給されるA系(例えばMP1A)と電源Bから電力が供給されるB系(例えばMP1B)に二重化されている。各MEはそれぞれすべてのスイッチ(SW1A,SW2A,SW1B,SW2B)に接続されている。
MPが扱う制御のための情報はデータ長が短いため、MPとスイッチとの間のパスは、ホスト装置との間での入出力データを転送するCMA,CHA/DKAと各スイッチとを結ぶパスよりも帯域幅の狭いものでよい。各スイッチとMPとの間のパス数を多くすることは比較的容易となる。このようにモジュール内の4つのSWにMPからのパスを形成することで、MP間のメッセージの転送に関しては既述のリダイレクトが不要となる。例えば、図29に対応させると(4)(6)が途切れず、MP2→MP0が1ホップにてメッセージの転送ができる。
図49は図35に示したストレージサブシステムのモジュールの複数がメッシュ状に互いに結合することによって得られたグリッドシステムの要部を示したブロック図である。モジュール1に注目すると、モジュール1は隣接する3つのモジュールとお互いB系のスイッチを介して接続されている。モジュール1のスイッチ2Bには隣接する他の3つのモジュールの3つからのコマンドパケットをそれぞれ受領するようにパスが形成され、モジュール1のスイッチ1Bから隣接する他の3つのモジュールにコマンドパケットをそれぞれ送信するようにパスが形成されている。
本発明に関するストレージシステムのブロック図である。 ホスト計算機からリード要求がストレージサブシステムに発行された場合での、パケット転送の処理を説明するラダーチャートである。 CHAがホスト計算機からライト要求のフレームマンドを受けた場合のラダーチャートである。 キャッシュメモリのハードウエアブロック図。 スイッチアダプタのブロック構成を示す。 マイクロプロセッサのブロック構成を示すものである。 CHA/DKAのブロック構成を示すものである。 二つのモジュール間でホスト計算機からのリード要求が、ノンポスティッドアクセスに伴うパケットによって処理される過程を示したブロック図である。 第1のモジュールと第2のモジュールとにそれぞれホスト計算機からのリード要求が同時に発行された場合に、複数のパケットがデッドロックを起こしている状態を示すブロック図。 二つのスイッチ間に2重にパスを形成したことを表すブロック図。 第1のモジュールがパスを介して第2のモジュールに接続し、第2のモジュールがパスを介して第3のモジュールに接続し、第3のモジュールがパスを解して第1のモジュールに接続していることを示すブロック図である。 図11にパケット転送におけるデッドロックが発生している状態を示すブロック図である。 図11のデッドロックが解消されている様子を説明するブロック図である。 第1の転送制御規則及び第2の転送制御規則に基づいて、ホスト計算機からのリード命令を処理する実施形態に係わるラダーチャート。 図14のラダーチャートに係わる、複数のモジュール間での内部コンポーネントの接続構成を示すブロック図。 パケットフレームである。 あるスイッチに着目した場合での、他のSWや、CHAなど同一モジュールの内部コンポーネントとの接続関係を設定したパス状態テーブルである。 図17のパス設定状態を示すブロック図である。 ルーティングテーブルの一例である。 パス状態テーブルに基づいて、SWが属するモジュールのMPが、RTを設定する場合の動作を説明するフローチャートである。 メッセージフォーマットである。 LDEV―DKAテーブルである。 PDEV(Physical Device)と、データが存在するLDEV番号及びLDEVの論理アドレスとの対応関係を示したDKAテーブルである。 4つのモジュールのSWが直列に接続されたストレージサブシステムのブロック図である。 ホストリード要求受領MPが行う処理手順を示すフローチャートである。 メッセージ転送先テーブルである。 MPのメッセージ処理を説明するフローチャートである。 MPのリード要求メッセージ処理を説明するフローチャートである。 リード応答メッセージの伝達を説明するストレージサブシステムのブロック図である。 、 リード応答メッセージを受信したMPの動作に係るフローチャートである。 ホストライトアクセスを処理するストレージサブシステムのブロック図である。 ホストライト要求を受領したMPの動作を説明するフローチャートである。 ライト要求メッセージを受けたMPの処理動作を示すフローチャートである。 ライト応答メッセージを受領したMPの動作を示すフローチャートである。 スイッチ構成が冗長化されたストレージサブシステムのブロック構成である。 モジュールのコンポーネントとスイッチとの接続関係を示す接続テーブルである。 パケットに対して許容されるスイッチ間の許容ホップ数を規定する許容ホップ数テーブルである。 送信元SW、送信先SW、送信先SWの次のSW、送信元SWから送信先SWの間のホップ数、そして許容ホップ数を前提としたリダイレクト数を記録したトポロジテーブルである。 パケットの転送に使われるかは冗長系を定めた転送使用冗長系テーブルである。 転送使用冗長系テーブルを作成するためのフローチャートである。 リダイレクト数の計算の詳細を示すフローチャートである。 SWに接続するコンポーネントをスイッチから抜去し、あるいはコンポーネントに障害が発生した場合でのスイッチ間ホップ数を緩和するなどの補正処理を説明するフローチャートである。 一方の冗長系スイッチに障害が発生した場合でのパケット転送を説明するストレージサブシステムのブロック図である。 図35の変形例に係わるブロック図である。 二重化された電源に合わせて各CHA/DKAを二重化してなる図44の変形例を示すブロック図である。 図44に係る実施形態の動作を説明するブロック図である。 図46の変形例に係るブロック図である。 MP機能をCHA/DKAに兼ねさせない実施形態に係るブロック図である。 図35に示したストレージサブシステムのモジュールの複数がメッシュ状に互いに結合することによって得られた。
符号の説明
10:ホスト計算機、12:SAN、14:ストレージサブシステム、16:モジュール(構成単位)、18:マイクロプロセッサ、20:チャネルアダプタ、21:キャッシュメモリ、22:ディスクアダプタ、24:スイッチ、26:HDD

Claims (14)

  1. ホスト計算機コマンドパケットを含むパケットを送受信するチャネルアダプタと、
    前記パケットの転送に関する制御情報を記憶するメモリと、
    前記パケットの転送先を切り替えるスイッチと、そして、
    前記ホスト計算機から送受信されるライト又はリードリクエストの対象となる記憶資源と、
    を有し、前記制御情報基づいて前記パケットの転送を制御するモジュールを、複数備える、ストレージサブシステムであって、
    前記複数のモジュールのそれぞれのスイッチがリンクによって接続されることにより、前記複数のモジュール間で前記パケットの転送が実行され、
    前記リンクは複数のパスを備え、
    前記リンクを介して前記パケットの転送を実行しようとする複数のモジュールは、前記複数のパスについて、前記コマンドパケットの転送方向を一方向に規制する、
    ストレージサブシステム。
  2. 前記複数のモジュールのうちの第1のモジュールは、第1のパスに沿って、前記複数のモジュールのうちの第2のモジュールへ第1のコマンドパケットを転送し、
    前記第2のモジュールは、前記第1のパスとは異なる第2のパスに沿って、前記第1のモジュールへ第2のコマンドパケットを転送する、
    請求項1記載のストレージサブシステム。
  3. 前記2のモジュールは、前記第1のパスに沿って、前記第1のコマンドパケットに対する応答パケットを前記第1のモジュールに転送し、
    前記第1モジュールは、前記第2のパスに沿って、前記第2のコマンドパケットに対する応答パケットを前記第2のモジュールに転送する
    請求項2記載のストレージサブシステム。
  4. 前記スイッチは、送信バッフア及び受信バッフアを有し、
    前記パスは、前記パケットの送信元の送信バッフア、送信元の受信バッフア、送信先の送信バッフア、及び、送信先の受信バッフアからなる、
    請求項3記載のストレージサブシステム。
  5. 前記パケットがホップできる複数のモジュール間のパス数に関する制限値が前記制御情報として前記メモリに記録され、
    前記パケットの転送を実行する複数のモジュールは、前記メモリの前記制御情報から前記制限値を参照し、当該制限値に基づいて、前記パケットの転送を実行する、請求項3記載のストレージサブシステム。
  6. 前記制御情報は、前記パケットの送信元のスイッチの識別番号、及び、送信先のスイッチの識別番号、を含む、請求項5記載のストレージサブシステム。
  7. それぞれ記憶資源を有する複数の構成単位と、
    前記複数の構成単位を連結するスイッチと、
    ホスト計算機からのライト又はリードアクセスに基づくパケットを、前記スイッチを介して前記複数の構成単位のうち目的の構成単位に転送することを制御するコントローラと、
    前記パケットがホップできる、前記複数の構成単位間のパス数に関する制限値を含む転送規則が格納されたメモリと、
    を備え、
    前記複数の構成単位のスイッチ間は複数パスで接続され、さらに、前記構成単位は前記スイッチを介して他の構成単位に加重的に連結可能に構成されている、ストレージサブシステムであって、
    前記コントローラは
    前記転送規則に基づいて、前記複数の構成単位の一つから他の構成単位に向いたコマンドパケットを前記複数のパスの一つを介して転送し、前記他の構成単位から前記一つの構成単位へ向いたコマンドパケットを前記一つのパスとは異なるパスを介して転送し、
    さらに、前記複数の構成単位間を転送される複数のパケットの少なくとも一つのデータを前記複数の構成単位の少なくとも一つに一時記憶させる、
    ストレージサブシステム。
  8. それぞれ記憶資源を有する複数の構成単位と、
    前記複数の構成単位を連結するスイッチと、
    ホスト計算機からのライト又はリードアクセスに基づくパケットを、前記スイッチを介して前記複数の構成単位のうち目的の構成単位に転送することを制御するコントローラと、
    前記パケットがホップできる前記複数の構成単位間のパス数に関する制限値を含む転送規則が格納されたメモリと、
    を備え、
    前記構成単位は前記スイッチを介して他の構成単位に加重的に連結可能に構成される、ストレージサブシステムであって、
    前記コントローラは、
    前記複数の構成単位の前記スイッチ同士の間のパスを流れるコマンドパケットの転送方向を前記転送規則によって特定方向に規制し、
    前記複数の構成単位間を転送される複数のパケットの少なくとも一つのデータを前記複数の構成単位の少なくとも一つに一時記憶させる、
    ストレージサブシステム。
  9. それぞれ記憶資源を有する複数の構成単位と、
    前記複数の構成単位を連結するスイッチと、
    ホスト計算機からのライト又はリードアクセスに基づくパケットの転送規則が格納されたメモリと、
    前記パケットを、前記転送規則に基づいて、前記スイッチを介して前記複数の構成単位のうち目的の構成単位に転送することを制御するコントローラと、
    を備え、
    前記構成単位は前記スイッチを介して他の構成単位に加重的に連結可能に構成され、
    第1の冗長系を構成する前記スイッチの複数と、第2の冗長系を構成する、前記第1の冗長機を構成する複数のスイッチ以外の前記スイッチの複数と、によって、前記複数の構成単位が互いに連結され、
    前記第1の冗長系と第2の冗長系に対する前記パケットが一度に跨げる、前記複数のスイッチ間のパス数に関する制限値が、前記制御情報として、前記メモリに記録されている、
    ストレージサブシステムであって、
    前記コントローラは
    前記複数の構成単位の前記スイッチ同士の間のパスを流れるコマンドパケットの転送方向を前記転送規則によって特定方向に規制し、
    前記第1の冗長系と第2の冗長系に属するスイッチに対する前記パケットが当該パケットの転送元からその転送先までの前記パス数に関する前記制限値を超え場合には、前記パケットの転送の途中で、データを前記モジュール内のコンポーネントに一時記憶する、ストレージサブシステム。
  10. それぞれ記憶資源を有する複数の構成単位と、
    前記複数の構成単位を連結するスイッチと、
    ホスト計算機からのライト又はリードアクセスに基づくパケットの転送規則が格納されたメモリと、
    前記パケットを、前記転送規則に基づいて、前記スイッチを介して前記複数の構成単位のうち目的の構成単位に転送することを制御するコントローラと、
    を備え、
    前記構成単位は前記スイッチを介して他の構成単位に加重的に連結可能に構成され、
    第1の冗長系を構成する前記スイッチの複数と、第2の冗長系を構成する、前記第1の冗長機を構成する複数のスイッチ以外の前記スイッチの複数と、によって、前記複数の構成単位が互いに連結され、
    前記第1の冗長系と第2の冗長系に対する前記パケットが一度に跨げる、前記複数のスイッチ間のパス数に関する制限値が、前記制御情報として、前記メモリに記録されている、
    ストレージサブシステムであって、
    前記コントローラは
    前記複数の構成単位の前記スイッチ同士の間のパスを流れるコマンドパケットの転送方向を前記転送規則によって特定方向に規制し
    前記第1の冗長系に属する前記少なくとも一つのスイッチが障害を受けた際に前記第2の冗長系を介して前記パケットを前記複数のモジュールのうち目的のモジュールの対象コンポーネントに転送する、ストレージサブシステム。
  11. 互いに連結される複数のモジュールを備え、当該複数のモジュールの少なくとも一つに接続されたホスト計算機からのライト又はリードアクセスを受領し、
    前記複数のモジュールは、前記ホスト計算機からの前記ライト又はリードアクセスに基づくパケットを転送する転送ルートを構成し、前記パケットは当該転送ルートを構成する前記複数のモジュールを順に通過して、目的とするモジュールまで転送される、ストレージサブシステムであって、
    前記各モジュールは、
    前記ホスト装置との入出力を制御する第1のアダプタと、
    前記パケットのデータを保存記憶する主記憶装置と、
    キャッシュメモリと、
    前記主記憶装置との入出力を制御する第2のアダプタと、
    コントローラと、
    前記第1のアダプタと、前記主記憶装置と、前記キャッシュメモリと、前記第2のアダプタと、前記コントローラと、に接続するスイッチと、を有し、
    前記コントローラは、前記スイッチを介して、前記第1のアダプタと、前記主記憶装置と、前記キャッシュメモリと、前記第2のアダプタとにアクセスして前記パケットの転送を制御するものであり、
    前記複数のモジュールの各モジュールは、前記スイッチ間に設けられたパスを介して互いに接続されて前記転送ルートを構成し、
    前記コントローラは、前記転送ルートを転送されるパケットが通過できる前記パスの上限値を認識し、前記パケットが前記上限値を超えて前記転送ルートを転送されるものである場合には、前記パケットが前記上限値を超える前に前記転送ルート上にある前記モジュールの前記キャッシュメモリに前記パケットに含まれるデータを一時記憶し、次いで、当該キャッシュメモリに記憶された前記パケットを他のモジュールに向けて転送する、ストレージサブシステム。
  12. 前記ホスト計算機からのライトアクセスを受領した前記モジュールの第1のコントローラが、前記ライトデータを記憶する記憶領域が割り当てられていないと判定した場合、当該第1のコントローラが属するモジュールの前記主記憶装置に当該ライトデータの割り当てが可能か否かを判定し、
    前記第1のコントローラがこの判定を否定した場合、当該第1のコントローラは前記上限値を超えない範囲にある他のモジュールの第2のコントローラに前記パケットを送信し、
    当該第2のコントローラは前記第1のコントローラから送られた前記パケットの前記ライトデータを当該他のモジュールの前記主記憶装置の記憶領域に前記割り当て可能かを判定する、請求項11記載のストレージサブシステム。
  13. 前記各モジュールは第1の冗長系に属する第1のスイッチと、第2の冗長系に属する第2のスイッチと、を備え、
    同一冗長系の前記スイッチ同士が前記パスによって接続されることにより、前記複数のモジュールが接続され、
    前記各モジュールの第1のアダプタ、前記第2のアダプタ、前記キャッシュメモリ、及び前記コントローラとは、当該モジュールの前記第1のスイッチと前記第2のスイッチとに接続している、請求項11記載のストレージサブシステム。
  14. 前記第1のスイッチ及び第2のスイッチはそれぞれ複数のスイッチアダプタから構成されてなり、
    前記各スイッチアダプタには前記上限値が設定され、
    前記スイッチアダプタに転送された前記パケットは当該スイッチアダプタから先の他のスイッチアダプタに転送される際に前記上限値の規制を受け、
    前記パケットを他のモジュールに至るように転送する第1のスイッチアダプタの前記上限値は、前記パケットを同一モジュール内で転送する第2のスイッチアダプタの前記上限値よりも小さい値に設定されてなり、
    前記モジュールは前記第1のスイッチアダプタに前記第2のスイッチアダプタを接続し、当該第1のスイッチアダプタを他のモジュールの前記第1のスイッチアダプタに接続している、請求項13記載のストレージサブシステム。
JP2007336864A 2007-12-27 2007-12-27 ストレージサブシステム Expired - Fee Related JP4639223B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007336864A JP4639223B2 (ja) 2007-12-27 2007-12-27 ストレージサブシステム
US12/020,216 US7817626B2 (en) 2007-12-27 2008-01-25 Storage subsystem
EP20080251530 EP2075983A3 (en) 2007-12-27 2008-04-25 Storage subsystem
CN2008101850154A CN101471882B (zh) 2007-12-27 2008-12-26 存储子系统
US12/888,268 US8340087B2 (en) 2007-12-27 2010-09-22 Storage subsystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007336864A JP4639223B2 (ja) 2007-12-27 2007-12-27 ストレージサブシステム

Publications (2)

Publication Number Publication Date
JP2009157757A JP2009157757A (ja) 2009-07-16
JP4639223B2 true JP4639223B2 (ja) 2011-02-23

Family

ID=40540931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007336864A Expired - Fee Related JP4639223B2 (ja) 2007-12-27 2007-12-27 ストレージサブシステム

Country Status (4)

Country Link
US (2) US7817626B2 (ja)
EP (1) EP2075983A3 (ja)
JP (1) JP4639223B2 (ja)
CN (1) CN101471882B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
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
WO2011141963A1 (en) * 2010-05-13 2011-11-17 Hitachi, Ltd. Information processing apparatus and data transfer method
CN102495814A (zh) * 2011-12-16 2012-06-13 创新科存储技术有限公司 存储设备的控制器之间的通讯方法
JP2013196565A (ja) * 2012-03-22 2013-09-30 Toshiba Corp データベース処理方法、及びデータベース処理装置
EP2858329B1 (en) * 2013-08-31 2017-05-24 Huawei Technologies Co., Ltd. Method and device for generating a flow table entry forwarding rule
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US20160139806A1 (en) * 2014-11-13 2016-05-19 Cavium, Inc. Independent Ordering Of Independent Transactions
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
US10469580B2 (en) * 2014-12-12 2019-11-05 International Business Machines Corporation Clientless software defined grid
CN107844270A (zh) * 2014-12-31 2018-03-27 华为技术有限公司 一种存储阵列系统及数据写请求处理方法
US10102135B2 (en) 2016-04-06 2018-10-16 Dell Products, Lp Dynamically-adjusted host memory buffer
CN105975410A (zh) * 2016-04-27 2016-09-28 浪潮(北京)电子信息产业有限公司 一种存储设备控制器间的通讯方法及系统
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 삼성전자주식회사 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002344463A (ja) * 2001-05-21 2002-11-29 Nec Corp 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法
JP2003030166A (ja) * 2001-07-17 2003-01-31 Nec Corp 疎結合マルチプロセッサシステム及びデッドロック解除方法
JP2003345512A (ja) * 2002-05-24 2003-12-05 Hitachi Ltd ディスク制御装置
JP2004246439A (ja) * 2003-02-12 2004-09-02 Nec Corp クラスタシステムにおけるストール防止方式,方法およびプログラム
JP2007293738A (ja) * 2006-04-27 2007-11-08 Hitachi Ltd ストレージシステムおよびストレージシステムの情報処理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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
US6728818B2 (en) * 2001-06-27 2004-04-27 International Business Machines Corporation Dual storage adapters utilizing clustered adapters supporting fast write caches
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
JP2004110367A (ja) * 2002-09-18 2004-04-08 Hitachi Ltd 記憶装置システムの制御方法、記憶制御装置、および記憶装置システム
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装置、通信接続監視方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002344463A (ja) * 2001-05-21 2002-11-29 Nec Corp 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法
JP2003030166A (ja) * 2001-07-17 2003-01-31 Nec Corp 疎結合マルチプロセッサシステム及びデッドロック解除方法
JP2003345512A (ja) * 2002-05-24 2003-12-05 Hitachi Ltd ディスク制御装置
JP2004246439A (ja) * 2003-02-12 2004-09-02 Nec Corp クラスタシステムにおけるストール防止方式,方法およびプログラム
JP2007293738A (ja) * 2006-04-27 2007-11-08 Hitachi Ltd ストレージシステムおよびストレージシステムの情報処理方法

Also Published As

Publication number Publication date
US8340087B2 (en) 2012-12-25
US7817626B2 (en) 2010-10-19
US20090168784A1 (en) 2009-07-02
JP2009157757A (ja) 2009-07-16
CN101471882B (zh) 2013-06-19
US20110013625A1 (en) 2011-01-20
EP2075983A3 (en) 2010-06-02
EP2075983A2 (en) 2009-07-01
CN101471882A (zh) 2009-07-01

Similar Documents

Publication Publication Date Title
JP4639223B2 (ja) ストレージサブシステム
JP4775846B2 (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
US6732243B2 (en) Data mirroring using shared buses
JP4376040B2 (ja) 複数のプロセッサを用いて情報処理を行う装置及び方法
JP4786255B2 (ja) ストレージシステム及び記憶制御方法
EP1708076B1 (en) Storage system and storage control method
JP4477437B2 (ja) ストレージ装置、そのクラスタ間データ通信方法、及びそのクラスタ通信制御プログラム
JP2005505056A (ja) モジュラーdmaアーキテクチャを用いた制御装置データ共有
JP2002259063A (ja) バックアップ処理可能な記憶システム
JP2003263352A (ja) Ipネットワーク上の遠隔データファシリティ
JP2008271017A (ja) ファブリックスイッチ、バッファ容量制御方法、およびバッファ容量制御プログラム
US20070073994A1 (en) Virtual partitioning
JPH10198607A (ja) データ多重化システム
JP2004302713A (ja) 記憶システム及びその制御方法
JP2008112399A (ja) ストレージ仮想化スイッチおよびコンピュータシステム
JP4969795B2 (ja) 記憶制御システム
US7545746B2 (en) Computer system for controlling routed data amount
JP2005056200A (ja) データ管理方法、ディスク記憶装置およびディスク記憶システム
JP5998884B2 (ja) ストレージ装置、およびモジュール間データ転送方法
US9746986B2 (en) Storage system and information processing method with storage devices assigning representative addresses to reduce cable requirements
JP3508857B2 (ja) ノード間データ転送方法およびデータ転送装置
JP7409700B2 (ja) ストレージシステム、サーバ、パス切替方法、およびプログラム
JP6958102B2 (ja) 情報処理装置、情報処理システム、情報処理方法及びプログラム
JP2006092166A (ja) ライブラリ制御システム
JP2007299079A (ja) ストレージ装置及びその障害回復方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100422

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100621

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101129

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4639223

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees