(57)【特許請求の範囲】
【請求項１】
ストレージシステムの外に存在する装置である外部装置からコマンドを受信して転送するルータと、
複数のＲＡＩＤモジュールと、
前記ルータからコマンドを受信して前記複数のＲＡＩＤモジュールのいずれかに送信するスイッチと
を備え、
各ＲＡＩＤモジュールが、
複数のメディアドライブと、
前記複数のメディアドライブにより提供されるＲＡＩＤグループに従う論理ユニットと、
前記外部装置から前記スイッチを介して受信されたデータや、前記論理ユニットから読み出されたデータを記憶することができるメモリと、
前記外部装置から前記スイッチを介して受信されたコマンドに従って、前記メモリに記憶されたデータを前記論理ユニットに書き込む、又は、前記メモリに記憶されたデータを前記スイッチに出力するプロセッサと
を有し、前記ＲＡＩＤグループを、１の前記ＲＡＩＤモジュール内の前記メディアドライブで構成し、
前記ルータは、
前記コマンドの解析を行うことなく前記コマンドの転送を制御するコマンド転送回路と、
コマンドの転送を制御するための転送制御情報を記憶することができる記憶域と、
バッファと、
を備え、
前記転送制御情報では、論理ユニットを識別するための各論理ユニットＩＤ毎に、コマンドの転送先を特定するための経路データが対応付けられており、
前記コマンド転送回路は、前記外部装置から論理ユニットＩＤ及びコマンドを受信し、その論理ユニットＩＤに対応した経路データを前記転送制御情報から特定し、特定された経路データを基に前記受信したコマンドを転送し、
前記各ＲＡＩＤモジュールが、当該ＲＡＩＤモジュールに存在する各論理ユニットを表す各論理ユニットＩＤを記憶することができる記憶資源を備え、前記記憶資源で論理ユニットＩＤの更新があった場合に、更新要求と、更新に関わる論理ユニットＩＤとを前記スイッチに送信し、
前記スイッチは、前記更新要求と、更新に関わる論理ユニットＩＤとを、前記ルータに送信し、
前記ルータは、
前記更新要求と、前記更新に関わる論理ユニットＩＤとを受信し、前記更新要求に従って、前記受信した論理ユニットＩＤを用いて、前記転送制御情報を更新し、
前記更新要求を受信した場合であっても、前記外部装置からコマンドを受付け、前記外部装置からコマンドを受信したならば、前記受信したコマンドを、前記バッファに蓄積し、前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送し、
前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送する、
ストレージシステム。
【請求項２】
前記各ＲＡＩＤモジュール内の前記プロセッサが、前記コマンドの解析を行い、その解析の結果に従う処理を実行する、
請求項１記載のストレージシステム。
【請求項３】
前記ルータは、前記更新要求を受信した場合、前記更新要求に従って、更新可能であるステータスを前記スイッチに送信し、
前記スイッチは、当該ステータスを前記更新要求の送信元のＲＡＩＤモジュールに送信し、
当該更新要求の送信元のＲＡＩＤモジュールは、前記ステータスを受信すると、更新に関わる論理ユニットＩＤを前記スイッチに送信し、
前記スイッチは、前記更新に関わる論理ユニットＩＤを、前記ルータに送信し、
前記ルータは、前記更新に関わる論理ユニットＩＤを受信し、前記受信した論理ユニットＩＤを用いて、前記転送制御情報を更新し、
前記ルータは、
前記更新要求を受信した場合であっても、前記外部装置からコマンドを受信したならば、前記外部装置からコマンドを受付け、
前記更新可能であるステータスを前記スイッチに送信する前は、更新前の転送制御情報に基づいて当該受信したコマンドを転送し、
前記更新可能であるステータスを前記スイッチに送信後は、前記受信したコマンドを前記バッファに蓄積し、前記転送制御情報の更新が終わったときに、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送し、前記通常状態に切り替えられたとき、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送する、
請求項１又は２記載のストレージシステム。
【請求項４】
前記ＲＡＩＤモジュールは、二以上のメディアドライブ５７を一つの記憶資源として前記外部装置に提供する機能であるストレージ仮想化機能を発揮するための制御プログラムを有する、
請求項１乃至３のうちのいずれか１項に記載のストレージシステム。
【請求項５】
前記ＲＡＩＤモジュールは、前記更新要求をブロードキャストする、
請求項１乃至４のうちのいずれか１項に記載のストレージシステム。
【請求項６】
前記各ＲＡＩＤモジュールが、各論理ユニットＩＤと各メディアドライブＩＤとの対応を表す構成情報を備え、
前記各ＲＡＩＤモジュールが備える構成情報には、その構成情報を備えるＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれ、他のＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれておらず、
前記プロセッサは、前記スイッチから受信された論理ユニットＩＤに対応するメディアドライブＩＤを前記構成情報から特定し、前記特定されたメディアドライブＩＤに対応するメディアドライブにアクセスする、
請求項１乃至５のうちのいずれか１項に記載のストレージシステム。
【請求項７】
ストレージシステムで実現される記憶制御方法において、
ストレージシステムの外に存在する装置である外部装置から、論理ユニットを識別するための論理ユニットＩＤとコマンドとをルータで受信し、
前記ルータで、その論理ユニットＩＤに対応した経路データを、コマンドの転送先を特定するための経路データが各論理ユニットＩＤ毎に対応付けられた転送制御情報から特定し、特定された経路データを基に、前記コマンドの解析を行うことなく、前記コマンドを、スイッチに搭載されている複数のポートのうちのいずれかのポートに転送し、
前記スイッチの或るポートから入力されたコマンドを前記スイッチの別のポートから出力して複数のＲＡＩＤモジュールのうちのいずれかに転送し、
各論理ユニットＩＤを記憶することができる、ＲＡＩＤモジュール内の記憶資源で、論理ユニットＩＤの更新があった場合に、そのＲＡＩＤモジュールが、更新要求と、更新に関わる論理ユニットＩＤとを前記スイッチに送信し、
前記スイッチは、前記更新要求と、更新に関わる論理ユニットＩＤとを、前記ルータに送信し、
前記ルータは、前記更新要求と、前記更新に関わる論理ユニットＩＤとを受信し、前記更新要求に従って、前記受信した論理ユニットＩＤを用いて、前記転送制御情報を更新し、
前記ルータは、前記更新要求を受信した場合であっても、前記外部装置からコマンドを受付け、前記外部装置からコマンドを受信したならば、前記受信したコマンドを前記ルータ内のバッファに蓄積し、前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送し、
前記ルータは、前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送する、
記憶制御方法。
【請求項８】
ストレージシステムの外に存在する装置である外部装置からコマンドを受信して転送するルータと、
複数のＲＡＩＤモジュールと、
前記ルータからコマンドを受信して前記複数のＲＡＩＤモジュールのいずれかに送信するスイッチと
を備え、
前記ルータ、各ＲＡＩＤモジュール及び前記スイッチの各々は、ポートを有し、
各ＲＡＩＤモジュールが、
複数のメディアドライブと、
前記複数のメディアドライブにより提供されるＲＡＩＤグループに従う論理ユニットと、
前記外部装置から前記スイッチを介して受信されたデータや、前記論理ユニットから読み出されたデータを記憶することができるメモリと、
前記外部装置から前記スイッチを介して受信されたコマンドに従って、前記メモリに記憶されたデータを前記論理ユニットに書き込む、又は、前記メモリに記憶されたデータを前記スイッチに出力するプロセッサと
を有し、前記ＲＡＩＤグループを、１の前記ＲＡＩＤモジュール内の前記メディアドライブで構成し、
前記ルータは、
前記コマンドの解析を行うことなく前記コマンドの転送を制御するコマンド転送回路と、
コマンドの転送を制御するための転送制御情報を記憶することができる記憶域と
バッファと、
を備え、
前記転送制御情報では、論理ユニットを識別するための各論理ユニットＩＤ毎に、コマンドの転送先を特定するための経路データとして、ポートを識別するためのポートＩＤが対応付けられており、
前記コマンド転送回路は、前記外部装置から論理ユニットＩＤ及びコマンドを受信し、その論理ユニットＩＤに対応した経路データとしてポートＩＤを前記転送制御情報から特定し、特定されたポートＩＤを論理ユニットＩＤ及びコマンドのセットに付加して、前記ポートＩＤが付加された前記セットを転送し、
前記各ＲＡＩＤモジュールが、各論理ユニットＩＤと各メディアドライブＩＤとの対応を表す構成情報を記憶することができる記憶資源を備え、前記記憶資源で論理ユニットＩＤの更新があった場合に、更新要求と、更新に関わる論理ユニットＩＤとを前記スイッチに送信し、
前記各ＲＡＩＤモジュールが、当該ＲＡＩＤモジュールに存在する各論理ユニットを表す各論理ユニットＩＤを記憶することができる記憶資源を備え、前記記憶資源で論理ユニットＩＤの更新があった場合に、更新要求と、更新に関わる論理ユニットＩＤとを前記スイッチに送信し、
前記スイッチは、前記更新要求と、更新に関わる論理ユニットＩＤとを、前記ルータに送信し、
前記ルータは、
前記更新要求と、前記更新に関わる論理ユニットＩＤとを受信し、前記更新要求に従って、前記受信した論理ユニットＩＤを用いて、前記転送制御情報を更新し、
前記更新要求を受信した場合であっても、前記外部装置からコマンドを受付け、前記外部装置からコマンドを受信したならば、前記受信したコマンドを、前記バッファに蓄積し、前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送し、
前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送し、
前記各ＲＡＩＤモジュールが備える構成情報には、その構成情報を備えるＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれ、他のＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれておらず、
前記プロセッサは、前記スイッチから前記セットを受信し、前記受信したセット内のコマンドを解析し、且つ、前記受信したセット内の論理ユニットＩＤに対応するメディアドライブＩＤを前記構成情報から特定し、前記コマンドの解析の結果に従い、前記特定されたメディアドライブＩＤに対応するメディアドライブにアクセスする、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御技術に関する。
【背景技術】
【０００２】
ストレージシステムに関する技術として、例えば、特開２００１−２５６００３号公報、特開２００３−１４０８３７号公報、特開平８−３２８７６０号公報、特開平１０−６３５７６号公報、及び、特開２００２−１２３４７９号公報に開示されている技術が知られている。
【０００３】
【特許文献１】特開２００１−２５６００３号公報
【特許文献２】特開２００３−１４０８３７号公報
【特許文献３】特開平８−３２８７６０号公報
【特許文献４】特開平１０−６３５７６号公報
【特許文献５】特開２００２−１２３４７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、ストレージシステムに採用することができるアーキテクチャとして、例えば、共有メモリアーキテクチャ、又は、分散メモリアーキテクチャがある。
【０００５】
共有メモリアーキテクチャによれば、ストレージシステムに関する種々の情報が共有メモリに格納され、ストレージシステム内のどのインターフェース基板（例えば、ホスト装置に対するインターフェース基板、及び、メディアドライブに対するインターフェース基板）も、共有メモリ内の情報にアクセスすることができる。しかし、このため、共有メモリへのアクセスが集中してしまい、それが、ボトルネックとなってしまう。
【０００６】
分散メモリアーキテクチャによれば、ルーティング及びスイッチング機能を有する上位のルータ／スイッチ部と、ＲＡＩＤ構成が分割された下位の複数のモジュールとが存在する。上位のルータ／スイッチ部が、ホスト装置からコマンドを受け、そのコマンドを解析して、複数のモジュールのどこにアクセスすれば良いのかを判断し、複数のモジュールのうちの一以上のモジュールにアクセスすることができる。しかし、このため、ルータ／スイッチ部の負荷が大きくなってしまう。また、一つのＲＡＩＤ構成が複数のモジュールにより提供されるため、一つのモジュールに障害が生じた場合、他のモジュールが正常であっても、ＲＡＩＤ構成が壊れてしまう。
【０００７】
従って、本発明の一つの目的は、共有メモリアーキテクチャと分散メモリアーキテクチャの両方の問題点を解消した新規な記憶制御技術を提供することにある。
【０００８】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本発明に従うストレージシステムは、ストレージシステムの外に存在する装置である外部装置からコマンドを受信して転送するルータと、複数のＲＡＩＤモジュールと、前記ルータからコマンドを受信して前記複数のＲＡＩＤモジュールのいずれかに送信するスイッチとを備える。各ＲＡＩＤモジュールは、複数のメディアドライブと、前記複数のメディアドライブにより提供されるＲＡＩＤグループに従う論理ユニットと、前記外部装置との間でやり取りされるデータをメモリと、前記外部装置から前記スイッチを介して受信されたデータや、前記論理ユニットから読み出されたデータを記憶することができるメモリと、プロセッサとを備える。前記プロセッサは、前記外部装置から前記スイッチを介して受信されたコマンドに従って、前記メモリに記憶されたデータを前記論理ユニットに書き込む、又は、前記メモリに記憶されたデータを前記スイッチに出力する。このストレージシステムでは、各ＲＡＩＤモジュールが、ＲＡＩＤグループを、他のＲＡＩＤモジュールにまたがらないように単独で備える。前記外部装置は、ホスト装置であっても良いし、別のストレージシステムであってもよい。
【００１０】
本発明の一態様では、前記ルータは、前記コマンドの解析（例えば、ライトコマンドであるかリードコマンドであるかの判別）を行うことなく前記コマンドを転送することができる。この場合、前記各ＲＡＩＤモジュール内の前記プロセッサが、前記コマンドの解析を行い、その解析の結果に従う処理を実行することができる。
【００１１】
本発明の一態様では、前記ルータは、前記コマンドの解析を行うことなく前記コマンドの転送を制御するコマンド転送回路（例えば転送手段）と、コマンドの転送を制御するための転送制御情報を記憶することができる記憶域（例えば記憶手段）とを備えることができる。前記転送制御情報では、論理ユニットを識別するための各論理ユニットＩＤ毎に、コマンドの転送先を特定するための経路データが対応付けることができる。前記コマンド転送回路は、前記外部装置から論理ユニットＩＤ及びコマンドを受信し、その論理ユニットＩＤに対応した経路データを前記転送制御情報から特定し、特定された経路データを基に前記受信したコマンドを転送することができる。
【００１２】
前記各ＲＡＩＤモジュールは、そのＲＡＩＤモジュールに存在する各論理ユニットを表す各論理ユニットＩＤを記憶することができる記憶資源（例えば記憶手段）を備えることができる。前記各ＲＡＩＤモジュールは（例えばプロセッサが）、前記記憶資源で論理ユニットＩＤの更新があった場合に、更新要求と、更新に関わる論理ユニットＩＤとを前記スイッチに送信することができる。前記スイッチは、前記更新要求と、前記更新に関わる論理ユニットＩＤとを、前記ルータに送信することができる。前記ルータは、前記更新要求と、前記更新に関わる論理ユニットＩＤとを受信し、前記更新要求に従って、前記受信した論理ユニットＩＤを用いて、前記転送制御情報を更新することができる。
【００１３】
ここで、前記ルータは、バッファを備えることができる。前記ルータは、前記更新要求を受信した場合であっても、前記外部装置からコマンドを受付け、前記外部装置からコマンドを受信したならば、前記受信したコマンドを前記バッファに蓄積し、前記転送制御情報の更新が終わった場合に、前記バッファに蓄積されている各コマンドを、更新後の転送制御情報に基づいて転送することができる。
【００１４】
また、前記ＲＡＩＤモジュールは、前記更新要求をブロードキャストすることができる、
本発明の一態様では、前記各ＲＡＩＤモジュールが、各論理ユニットＩＤと各メディアドライブＩＤとの対応を表す構成情報を備えることができる（例えば構成情報記憶手段を備えることができる）。前記各ＲＡＩＤモジュールが備える構成情報には、その構成情報を備えるＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれていればよく、他のＲＡＩＤモジュールに存在する論理ユニット及びメディアドライブのそれぞれのＩＤが含まれていなくてもよい。前記プロセッサは、前記スイッチから受信された論理ユニットＩＤに対応するメディアドライブＩＤを前記構成情報から特定し、前記特定されたメディアドライブＩＤに対応するメディアドライブにアクセスすることができる。
【発明の効果】
【００１５】
本発明によれば、共有メモリアーキテクチャと分散メモリアーキテクチャの両方の問題点が解消された新規な記憶制御技術が提供される。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明の一実施形態について説明する。
【００１７】
図１Ａは、本発明の第一実施形態に係るシステム全体の構成例を示す。
【００１８】
複数台（一台であってもよい）のホスト装置１、１、…と、ストレージシステム３とが、通信ネットワーク２を介して通信可能に接続されている。
【００１９】
ホスト装置１は、例えば、ＣＰＵ、メモリ及び表示装置等のハードウェア資源を備えるコンピュータ装置（例えばサーバマシン）である。ホスト装置１は、ストレージシステム３に対して、読出し対象データのリードコマンドや、ライトコマンド及び書き込み対象データを送信することができる。
【００２０】
通信ネットワーク２としては、種々のものを採用することができる。具体的には、例えば、通信ネットワーク２は、ＳＡＮ（Storage Area Network）又はＬＡＮ（Local Area Network）とすることができる。
【００２１】
ストレージシステム３は、例えば、多数のメディアドライブをアレイ状に配設して構成されたRAID（Redundant Array of Independent Inexpensive Disks）のようなディスクアレイシステムとすることができる。
【００２２】
図１Ｂは、ストレージシステム３の構成例を示す。
【００２３】
ストレージシステム３には、複数のプロトコルチップ（図では「ＰＣ」と略記）５、５、…と、複数のルータ７、７、…と、スイッチ（以下、ＳＷ）９と、複数のＲＡＩＤモジュール１１、１１、…と、サービスプロセッサ（以下、ＳＶＰ）２２とが備えられる。プロトコルチップ５、ルータ７及びＲＡＩＤモジュール１１のうちの少なくとも一つは、一つであっても良い。
【００２４】
プロトコルチップ５は、ホスト装置１とルータ７との間でやり取りされるコマンドのプロトコル変換を行う回路である。
【００２５】
ルータ７は、プロトコルチップ５によってプロトコル変換されたコマンドを受け（コマンドの他にデータを受ける場合もある）、そのコマンドの経路制御を行う。なお、ルータ７に、上記のプロトコルチップ５が内蔵されても良い。
【００２６】
ＳＷ９は、各ルータ７、各ＲＡＩＤモジュール１１及びＳＶＰ２２の相互の接続を切り替える装置である。ＳＷ９は、例えば、クロスバＳＷとすることができる。ＳＷ９には、ルータ７に接続される二以上のポート１２Ａ、１２Ａ、…と、ＲＡＩＤモジュール３に接続される二以上のポート１２Ｂ、１２Ｂ、…とが備えられている。
【００２７】
ＲＡＩＤモジュール１１は、キャッシュメモリやプロセッサ等を有したパッケージ（別の言い方をすれば一群）であり、他のＲＡＩＤモジュール１１に依存しないＲＡＩＤ構成を有している。すなわち、ＲＡＩＤモジュール１１に存在するＲＡＩＤ構成は、他のＲＡＩＤモジュール１１からは独立しており、他のＲＡＩＤモジュール１１で障害が生じても、壊れないようになっている。ここで、ＲＡＩＤ構成は、例えば、所定のＲＡＩＤレベル（例えばＲＡＩＤ５）に従って設定されたＲＡＩＤグループ（例えば一又は複数の論理ユニット（以下、ＬＵ））とすることができる。
【００２８】
ＳＶＰ２２は、ＳＷ９を介して、各ルータ７や各ＲＡＩＤモジュール１１にアクセスすることができる装置である。具体的には、例えば、ＳＶＰ２２は、保守用の端末であり、管理者が操作する入力装置（例えばキーボードやマウス）や、管理者による操作に従う処理を実行する制御装置（例えばＣＰＵ等が搭載されたマザーボード）や、ＲＡＩＤモジュール１１やルータ７に設定される情報が表示される表示装置（例えばディスプレイ画面）を備えることができる。ＳＶＰ２２は、ストレージシステム３に搭載されていても良いし、ＬＡＮ等の通信ネットワークを介して遠隔に備えられてもよい。また、ＳＶＰ２２の機能が、少なくとも一つのホスト装置１に搭載され、そのホスト装置１が、ＳＶＰ２２として、ストレージシステム３をコントロールしても良い。
【００２９】
以上が、ストレージシステム３の概要である。この実施形態では、以下の説明を分かり易くするために、各ルータ７がＳＷ９を介して全てのＲＡＩＤモジュール１１に接続されている、換言すれば、各ＲＡＩＤモジュール１１がＳＷ９を介して全てのルータ７に接続されているものとする。
【００３０】
以下、このストレージシステム３が備える種々の要素について、詳細に説明する。
【００３１】
図２Ａは、ルータ７の構成例を示す。
【００３２】
ルータ７は、ＣＰＵを備えておらず、ホスト装置１から受信したコマンドの解析を行うことがない。この点は、ストレージシステム３に施された一つの工夫である。ルータ７は、例えば、一種の回路基板であり、ローカルメモリ（以下、ＬＭ）２１とＡＳＩＣ（Application Specific Integrated Circuit）２７を備える。
【００３３】
ＬＭ２７は、揮発性又は不揮発性のメモリである。ＬＭ２７には、例えば、ルータ７を介してやり取りされるパケット群（コマンド及び／又はデータを含んだもの）を一時的に蓄積するためのパケットバッファ２５が設けられる。また、ＬＭ２７は、ルーティングテーブル２３を記憶することができる。ルーティングテーブル２３は、ホスト装置１からのコマンドやデータの経路（換言すれば転送先）を制御するための情報である。ルーティングテーブル２３には、例えば、図２Ｂに例示するように、複数の情報要素セットが登録される。各情報要素セットには、論理ユニット番号（以下、ＬＵＮ）とポート番号（以下、ポート＃）とが含まれる。ＬＵＮとは、ＬＵを特定するための番号（番号以外のＩＤであっても良い）である。ポート＃とは、ＳＷ９が備える複数のポートのうちルータ７に接続されているポート１２Ａの番号である。なお、ＬＵＮ及びポート＃は、番号以外のＩＤであっても良い。
【００３４】
ＡＳＩＣ２７は、パケット群の転送を制御するＬＳＩ（Large Scale Integration）である。このＡＳＩＣ２７は、純粋なハードウェア回路とすることができる。ＡＳＩＣ２７は、ホスト装置１からプロトコルチップ５を介して図２Ｃに例示する第一パケット群（例えばＬＵＮとコマンドを含んだ情報）を受信し、それにポート＃を付加したパケット群（図２Ｄに例示するパケット群、以下、第二パケット群）を、ＳＷ９に送信する。ＡＳＩＣ２７が行う処理については、後に図４を参照して詳細に説明する。
【００３５】
図３Ａは、ＳＷ９の構成例を示す。
【００３６】
ＳＷ９には、ルータ７とＲＡＩＤモジュール１１との間でやり取りされるパケット群の転送を制御するＡＳＩＣ３１が搭載されている。ＡＳＩＣ３１は、ＳＶＰ２２と接続することができる。ＳＶＰ２２は、このＡＳＩＣ３１を介して、各ルータ７や各ＲＡＩＤモジュール１１にアクセスすることができる。
【００３７】
図３Ｂは、ＲＡＩＤモジュール１１の構成例を示す。
【００３８】
ＲＡＩＤモジュール１１には、複数のメディアドライブ５７、５７、…が備えられており、各メディアドライブ５７へのアクセス経路が二重化されている。メディアドライブ５７は、データを記憶することができる記憶メディアを備えた装置であり、例えば、ハードディスクドライブである。ＲＡＩＤモジュール１１には、制御部５３と記憶部５４とが備えられる。
【００３９】
制御部５３には、キャッシュメモリ（以下、ＣＭ）５１と、二重化された転送制御ＬＳＩ４９と、二重化されたディスクコントローラ４１、４１とが備えられる。制御部５３は、例えば、一又は複数枚の回路基板で構成することができる。
【００４０】
ＣＭ５１は、ルータ７とメディアドライブ５７との間でやり取りされるデータを記憶することができるメモリである。また、ＣＭ５１は、自分を備えるＲＡＩＤモジュール（以下、当該モジュール）１１の構成に関する構成情報を記憶することもできる。別の言い方をすれば、当該ＲＡＩＤモジュール１１は他のＲＡＩＤモジュール１１から独立したものなので、ＣＭ５１は、他のＲＡＩＤモジュール１１に関する構成情報を記憶する必要は無い。
【００４１】
転送制御ＬＳＩ４９は、例えばハブであり、ＣＭ５１、コントローラ４１、メディアドライブ５７及びＳＷ９間のパケット群の転送を制御する。
【００４２】
コントローラ４１は、各メディアドライブ５７に対するデータの入出力を制御する。コントローラ４１には、例えば、マイクロプロセッサ（以下、ＭＰ）４３、ブートメモリ４５及びＬＭ４７が備えられる。ブートメモリ４５は、ＭＰ４３の起動用のプログラムを記憶している。ＭＰ４３は、ブートメモリ４５からそのプログラムを読むことにより起動することができる。また、ＭＰ４３は、例えば、ＬＭ４７から制御プログラムを読み込み、その制御プログラムを実行することにより、ストレージ仮想化機能（例えば、二以上のメディアドライブ５７を一つの記憶資源としてホスト装置１に提供する機能）を発揮することができる。ＬＭ４７は、ＭＰ４３のワーク領域として利用される。ＬＭ４７は、ＣＭ５１の代わりに、構成情報を記憶しても良い。
【００４３】
記憶部５４には、前述した複数のメディアドライブ５７と、各メディアドライブ５７と制御部５３との通信を制御するスイッチ（例えば、ファイバチャネルスイッチ（以下、ＦＳＷ）５５）とが備えられる。複数のメディアドライブ５７には、論理的な記憶デバイスである論理ユニット（ＬＵ）６１が設定される。図３Ｂには、一つのＬＵ６１を示しているが、勿論、複数のＬＵ６１を設定することができる。
【００４４】
以下、ストレージシステム３において行われる種々の処理の流れ説明する。
【００４５】
図４は、ストレージシステム３がホスト装置１からコマンドを受信した場合に行われる処理の流れの一例を示す。
【００４６】
ホスト装置１は、第一パケット群をストレージシステム３に送信する（ステップＳ１）。具体的には、例えば、ホスト装置１は、アクセス先（例えば、データの書込み先又は読出し元）とするＬＵＮを指定したコマンド（例えば、ライトコマンド又はリードコマンド）を、ストレージシステム３に送信する。
【００４７】
ストレージシステム３のルータ７が、プロトコルチップ５を介して、ホスト装置１からの第一パケット群を受信する。ルータ７のＡＳＩＣ２７が、受信した第一パケット群を、ＬＭ２１内のパケットバッファ２５に蓄積する（Ｓ２）。
【００４８】
そして、ＡＳＩＣ２７は、第一パケット群内のＬＵＮに対応したポート＃をルーティングテーブル２３から特定する（Ｓ３）。具体的には、例えば、ＡＳＩＣ２７は、第一パケット群内のＬＵＮに対応し、且つ、ビジーの状態になっていないポート１２Ａに対応したポート＃を特定する。
【００４９】
ＡＳＩＣ２７は、パケットバッファ２５から第一パケット群を読出し、読み出された第一パケット群に、Ｓ３で特定されたポート＃を付加して第二パケット群とし（Ｓ４）、第二パケット群を、そのポート＃に対応したＳＷ９のポート１２Ａに送信する（Ｓ５）。
【００５０】
ＳＷ９のＡＳＩＣ３１は、或るポート１２Ａを介して第二パケット群を受信し、受信した第二パケット群を、或るポート１２Ａに対応するポート１２Ｂを介して、そのポート１２Ｂに接続されているＲＡＩＤモジュール１１に送信する（Ｓ６）。
【００５１】
第二パケット群を受信したＲＡＩＤモジュール１１において、転送制御ＬＳＩ４９が、第二パケット群内のコマンドをコントローラ４１に転送する。もし、第二パケット群内に書込み対象データが含まれていれば、転送制御ＬＳＩ４９が、書込み対象データをＣＭ５１に書き込む。
【００５２】
コントローラ４１のＭＰ４３が、転送制御ＬＳＩ４９からコマンドを受信し、受信したコマンドを解析する（Ｓ７）。具体的には、例えば、ＭＰ４３は、受信したコマンドが、ライトコマンドであるかリードコマンドであるかを判別する。
【００５３】
ＲＡＩＤモジュール１１内では、ＭＰ４３による判別の結果がライトコマンドであるかリードコマンドであるかに応じた処理が実行行われる（Ｓ８）。
【００５４】
例えば、ＭＰ４３がリードコマンドであると判別した場合、ＭＰ４３は、リードコマンドで指定されている読出し対象データを、第二パケット群内のＬＵＮに対応するＬＵ６１を構成する各メディアドライブ５７に要求することができる。そのＬＵ６１を構成する各メディアドライブ５７がどれであるかは、例えば、ＬＵＮとメディアドライブＩＤとの対応付けが書かれた構成情報７１（図５参照）を参照することにより特定することができる。要求を受けた各メディアドライブ５７から、要求されたデータが読み出され、読み出されたデータは、転送制御ＬＳＩ４９を介してＣＭ５１に書かれる。そして、そのデータは、ＣＭ５１から読み出され、転送制御ＬＳＩ４９を介して、第二パケット群が出力されたポート１２Ｂに送られる。これにより、ＳＷ９及びルータ７を介して、リードコマンドの発行元のホスト装置１に、読出し対象データが送信される。
【００５５】
一方、ＭＰ４３がライトコマンドであると判別した場合、ＭＰ４３は、転送制御ＬＳＩ４９に、ＣＭ５１に書かれた書込み対象データを、第二パケット群内のＬＵＮに対応するＬＵ６１を構成する各メディアドライブ５７へと書き込ませる。これにより、ＣＭ５１に書かれた書込み対象データが、転送制御ＬＳＩ４９を介して、ＬＵ６１を構成する各メディアドライブ５７に書かれる。
【００５６】
以上が、ストレージシステム３がホスト装置１からコマンドを受信した場合に行われる処理の流れの一例である。この処理によれば、ルータ７に、各ＬＵＮに転送経路が対応付けられたルーティングテーブル２３が設定されている。ルータ７は、ホスト装置１から指定されたＬＵＮに対応した転送経路をルーティングテーブル２３から特定し、その転送経路にコマンドを流せば良いようになっている。具体的には、転送経路として、ＳＷ９のポート１２Ａのポート＃が設定されている。ポート１２Ａが決まれば、ＳＷ９からのコマンドの出口となるポート１２Ｂが決まり、ポート１２Ｂが決まれば、コマンドの行き先となるＲＡＩＤモジュール１１も決まる。ＲＡＩＤモジュール１１では、どのＬＵＮのＬＵ６１にどのメディアドライブ５７が対応しているかが構成情報７１として管理されており、ＬＵＮ及びコマンドがＲＡＩＤモジュール１１に送信されれば、そのＲＡＩＤモジュール１１でコマンドが解析され、それに応じて、そのＬＵＮに対応するＬＵ６１を提供するメディアドライブ５７にアクセスされる。従って、この実施形態では、ルータ７で受信したＬＵＮから、メディアドライブ５７への経路が定まる。
【００５７】
さて、この実施形態では、ルータ７が持っているルーティングテーブル２３を更新する必要のあるイベント（以下、ルーティングテーブル更新イベント）が生じることがある。そのイベントとは、ルーティングテーブル２３に書かれている情報要素に関わる情報の更新であり、具体的には、例えば、ＲＡＩＤモジュール内でのＬＵＮの追加、変更又は削除である。このイベントが生じる具体的な例としては、構成情報７１がＳＶＰ２２等からロードされること、構成情報７１がＳＶＰ２２等によって更新されること、或いは、ＲＡＩＤモジュール１１が追加又は取り除かれることが考えられる。
【００５８】
ルーティングテーブル更新イベントが発生した場合、ストレージシステム３において、ルーティングテーブルの更新のための処理が行われる。
【００５９】
図５は、ストレージシステム３において行われるルーティングテーブル更新処理の流れの一例を示す。なお、この図５では、ルーティングテーブル更新処理に係るステップを５０以降の番号で表し、ホスト装置１からのコマンドの転送に関わるステップを１０〜３０の間の番号で表す。
【００６０】
ＲＡＩＤモジュール１１内のＭＰ４３が、ルーティングテーブル更新イベントの発生を検出することができる（Ｓ５１）。具体的には、例えば、ＭＰ４３が、ＳＶＰ２２からの構成情報７１をロードしてＣＭ５１（又はＬＭ４７）に書いた場合、或いは、ＣＭ５１に存在する構成情報７１のＬＵＮを追加、変更又は削除した場合に、上記イベントの発生とすることができる。
【００６１】
ＭＰ４３は、テーブル更新要求（UP_REQ0）をブロードキャストする（Ｓ５２）。具体的には、例えば、ＭＰ４３は、テーブル更新要求を、当該ＲＡＩＤモジュール１１の各ポートから出力する。これにより、ＳＷ９を介して、全てのルータ７に、テーブル更新要求が送信される（Ｓ５３）。以下、説明を分かり易くするために、一つのＲＡＩＤモジュール１１と一つのルータ７との間のやり取りを例に採る。
【００６２】
ルータ７のＡＳＩＣ２７は、UP_REQ0を受けた場合、ルーティングテーブル２３に追加、変更又は削除する情報の受け付けが可能であれば、更新可能であることを表すステータス（UP_RDY0）を、UP_REQ0の送信元ポート１２Ａへと返答することができる（Ｓ５４）。なお、ステータス（UP_RDY0）を返答したとき、ＡＳＩＣ２７は、ルータ７の状態を、ホスト装置１からの第一のパケット群を受信して処理することができる通常状態から、休憩となるアイドル状態を介して、ルーティングテーブル２３の変更待ちの状態に切り替えることができる（例えば、アイドル状態は一時的な状態とすることができる）。具体的には、例えば、ＡＳＩＣ２７が、ルータ７の状態が切り替わる都度に、切り替わり後の状態を表す状態データをＬＭ２１に書くことができる。
【００６３】
もし、ＡＳＩＣ２７が、UP_RDY0を返答する前に、第一パケット群をホスト装置１から受信したならば（Ｓ１０）、通常状態であるため、旧い（つまり更新前の）ルーティングテーブル２３で、図４のＳ２からＳ４の処理を行う。その結果、図４のＳ５及びＳ６と同様にして、第二パケット群がＲＡＩＤモジュール１１へと送信され（Ｓ１５及びＳ１６）、ＲＡＩＤモジュール１１において、その第二パケット群内のコマンドの解析などが行われる。
【００６４】
ルータ７のＡＳＩＣ２７は、UP_RDY0を返答した時点から、第一パケット群をホスト装置１から受信しても、第一パケット群をパケットバッファ２５に蓄積することは行うが、その第一パケット群をＳＷ９に送信することはしないようにする（つまり、第一パケット群がホスト装置１に送信されない時間帯Ｔの開始となる）。
【００６５】
ＡＳＩＣ２７から返答されたUP_RDY0は、ＳＷ９を介してＲＡＩＤモジュール１１に送られる（Ｓ５５）。
【００６６】
ＲＡＩＤモジュール１１のＭＰ４３は、UP_RDY0を確認したならば、ルーティングテーブル２３の更新に必要な情報（UPDATE0）を、UP_RDY0の送信元ポート１２Ｂへと送信する（又はブロードキャストする）（Ｓ５６）。UPDATE0に含まれる情報要素は、例えば、ＬＵＮの追加であれば、ＬＵＮを追加することの指示（例えばフラグ）と、追加されるべきＬＵＮとすることができる。ＬＵＮの削除であれば、ＬＵＮを削除することの指示（例えばフラグ）と、削除されるべきＬＵＮとすることができる。ＬＵＮの変更であれば、ＬＵＮを変更することの指示（例えばフラグ）と、変更前のＬＵＮと、変更後のＬＵＮとすることができる。UPDATE0は、ＳＷ９を介して、ルータ７に送信される（Ｓ５７）。
【００６７】
ルータ７のＡＳＩＣ２７は、UPDATE0を受信したときに、ルータ７を、変更待ち状態からアイドル状態を介して更新状態にすることができ、且つ、受信したUPDATE0に基づいて、ルーティングテーブル２３を更新することができる（Ｓ５８）。例えば、ＡＳＩＣ２７は、UPDATE0に、ＬＵＮを追加することの指示が含まれていることを検出した場合には、UPDATE0に含まれているＬＵＮと、各ポート＃との情報要素セットを、ルーティングテーブル２３に追加することができる。この場合に追加される情報要素セットの数は、ポート１２Ａの数と同じとすることができる。また、例えば、ＡＳＩＣ２７は、UPDATE0に、ＬＵＮを削除することの指示が含まれていることを検出した場合には、UPDATE0に含まれているＬＵＮと一致するＬＵＮを含んだ全ての情報要素セットを、ルーティングテーブル２３から削除することができる。また、例えば、ＡＳＩＣ２７は、UPDATE0に、ＬＵＮを変更することの指示が含まれていることを検出した場合には、UPDATE0に含まれている変更前のＬＵＮと一致する、ルーティングテーブル２３上のＬＵＮを、変更後のＬＵＮに更新することができる。
【００６８】
ＡＳＩＣ２７は、ルーティングテーブル２３の更新が終了したならば、ルーティングテーブル２３の更新の終了を表すステータス（ST0）を、UPDATE0の送信元ポート１２Ａに返答する（Ｓ５９）。ST0は、ＳＷ９を介して、ＲＡＩＤモジュール１１に送信される（Ｓ６０）。
【００６９】
なお、ST0が返答された時点で、第一パケット群がホスト装置１に送信されない時間帯Ｔの終了となる。このとき、ＡＳＩＣ２７は、ルータ７の状態を、更新状態からアイドル状態を介して通常状態にすることができる。この場合、ＡＳＩＣ２７は、パケットバッファ２５に蓄積されている第一パケット群を読出し、第一パケット群内のＬＵＮに対応するポート＃を、新しい（つまり更新後の）ルーティングテーブル２３から特定することができる。すなわち、その第一パケット群については、新しいルーティングテーブル２３で、図４のＳ３−Ｓ８が行われる（時間帯Ｔが終了した後に第一パケット群が受信された場合には、図４のＳ２から行われる）。
【００７０】
以上が、ストレージシステム３において行われるルーティングテーブル更新処理の流れの一例である。なお、この処理流れは、新規にルーティングテーブル２３をＬＭ２１に設定する場合にも適用することができる。例えば、ルータ７のＬＭ２１のルーティングテーブル２１において、対応付け可能な全てのポート＃が書かれていて、ＬＵＮがブランクになっているとする。この場合、各ＲＡＩＤモジュール１１が、自身の構成情報７１に記録されている全てのＬＵＮを各ルータ７に通知し、各ルータ７のＡＳＩＣ２７が、通知されたＬＵＮを各ポート＃に対応付けることで、ルーティングテーブル２３を構築することができる。
【００７１】
以上、上述した実施形態によれば、ストレージシステム３には、単一でＲＡＩＤ構成を有するＲＡＩＤモジュール１１が用意される。ＲＡＩＤモジュール１１は、他のＲＡＩＤモジュール１１に依存することのないものである。例えば、ＲＡＩＤモジュール１１内のＭＰ４３は、そのモジュール１１内のＣＭ５１を利用するが、他のモジュール１１内のＣＭ５１を利用することはしない。このため、ＲＡＩＤモジュール１１の数に実質的に比例した性能が期待できる。
【００７２】
また、上述した実施形態によれば、ＲＡＩＤモジュール１１単位で、増設したり取り外したりすることができる。このため、スケーラビリティの向上が期待できる。
【００７３】
また、上述した実施形態によれば、ＲＡＩＤモジュール１１の上位に、ホスト装置１からＬＵＮ及びコマンドを受信するルータ７が搭載される。このルータ７は、ホスト装置１からのコマンドの解析（例えば、そのコマンドがリードコマンドであるかライトコマンドであるかの判別）を行うことなく、そのコマンドを適切な下位の転送先に振り分けることができるように構成されている。このため、ルータ７における処理時間長は短く、故に、ホスト装置１に対して高速なアクセス処理を提供することが期待できる。
【００７４】
また、上述した実施形態によれば、ＲＡＩＤモジュール１１から各ルータ７に更新要求や更新情報が発行される。各ルータ７は、更新要求を受けた場合、少なくともルーティングテーブル２３を更新するまで、パケット未送信状態となる。各ルータ７は、その状態中に、ホスト装置１からコマンドを受信した場合には、コマンドをパケットバッファ２５に蓄積しておき、その状態が解除された後に、更新後のルーティングテーブル２３に従って、コマンドの振分けを行う。これにより、ストレージシステム３がホスト装置１から第一パケット群を受付けながら（別の言い方をすれば、ホスト装置１に第一パケット群の発行を止めてもらわなくても）、ＲＡＩＤモジュール１１内でのＬＵＮを更新したり、それに伴って各ルータ７のルーティングテーブル２３を更新したりすることができる。
【００７５】
また、上述した実施形態によれば、図６Ｃに例示するような方式、すなわち、ＲＡＩＤモジュール１１に、ストレージ仮想化機能を発揮するための制御プログラム７０が搭載されるインバウンド方式が採用される。ＭＰ４３は、制御プログラム７０を実行することにより、例えば、ＬＵＮに対応するドライブ＃を構成情報７１（図５参照）から特定し、ＬＵＮのＬＵ６１に対応する各メディアドライブ５７にアクセスすることができる。このようなインバウンド方式は、図６Ａに例示するようなアウトバウンド方式や、図６Ｂに例示するような別のインバウンド方式のような欠点を緩和することができる。すなわち、図６Ａに例示するようなアウトバウンド方式によれば、ホスト装置１毎に制御プログラム７０が必要となるので、導入コストが高くなると考えられる。図６Ｂに例示するようなインバウンド方式によれば、中継装置８０（例えば、ＳＷ９、ルータ７、又は、通信ネットワーク２に存在するスイッチ）がコマンド解析等の処理を行うことになり、性能劣化するおそれがある。図６Ｃに例示するインバウンド方式ならば、これらのような欠点を緩和することができる。
【００７６】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【００７７】
例えば、図７Ａに例示するように、複数のルータ７が一体にされても良い（例えば、一つの回路基板９０で作られても良い）。これにより、複数のルータ７での電源の共通化が図れる。
【００７８】
また、例えば、図７Ｂに例示するように、ルータ７と、ＲＡＩＤモジュール１１内の制御部５３とが一体にされても良い（例えば、一つの回路基板１１０で作られても良い。これにより、ルータ７と制御部５３との電源の共通化が図れる。
【００７９】
また、例えば、ルーティングテーブル２３に登録される情報要素セットには、ＬＵＮ及びポート＃の他に、他種の情報要素が含まれても良い。他種の情報要素として、例えば、ＬＵＮに対応するＬＵを構成するドライブＩＤがあってもよい。また、例えば、コマンドの転送先となるＲＡＩＤモジュール１１を識別するためのＩＤ（例えば番号、以下、モジュール＃）が採用されてもよい。この場合、ルータ７は、ポート＃に加えてモジュール＃も、ホスト装置１からの第一パケット群に付加して、ＳＷ９に送信することができる。これにより、第二パケット群（ポート＃、モジュール＃及び第一パケット群を含んだもの）は、その第二パケット群内のモジュール＃から識別されるＲＡＩＤモジュール１１に送信される。
【００８０】
また、例えば、ルーティングテーブル２３に登録されるポート＃、及び／又は、第一パケット群に付加されるポート＃は、複数種類あっても良い。例えば、ポート１２Ａのポート＃に代えて又は加えて、ポート１２Ｂのポート＃、ルータ７のポート（図示せず）のポート＃、及び、ＲＡＩＤモジュールのポート（図示せず）のポート＃のうちの少なくとも一つがあっても良い。
【図面の簡単な説明】
【００８１】
【図１】図１Ａは、本発明の第一実施形態に係るシステム全体の構成例を示す。図１Ｂは、ストレージシステム３の構成例を示す。
【図２】図２Ａは、ルータ７の構成例を示す。図２Ｂは、ルーティングテーブル２３の構成例を示す。図２Ｃは、ルータ７がホスト装置１から受信する第一パケット群の構成例を示す。図２Ｄは、ルータ７がＳＷ９に送信する第二パケット群の構成例を示す。
【図３】図３は、通常のリード方法で行われる処理の流れの一例を示す。
【図４】図４は、ストレージシステム３がホスト装置１からコマンドを受信した場合に行われる処理の流れの一例を示す。
【図５】図５は、ストレージシステム３において行われるルーティングテーブル更新処理の流れの一例を示す。
【図６】図６Ａは、アウトバウンド方式の一例を示す。図６Ｂは、第一のインバウンド方式の一例を示す。図６Ｂは、本実施形態で採用される第二のインバウンド方式を示す。
【図７】図７Ａは、本発明の一実施形態の一変形例の説明図である。図７Ｂは、本発明の一実施形態の別の変形例の説明図である。
【符号の説明】
【００８２】
１…ホスト装置  ２…通信ネットワーク  ３…ストレージシステム  ５…プロトコルチップ  ７…ルータ  ９…スイッチ  １１…ＲＡＩＤモジュール  ２１…ローカルメモリ  ２２…サービスプロセッサ  ２３…ルーティングテーブル  ２５…パケットバッファ  ２７…ＡＳＩＣ  ４１…コントローラ  ５１…キャッシュメモリ  ５７…メディアドライブ  ６１…論理ユニット
【図１】
0004786255.tif 000002
【図２】
0004786255.tif 000003
【図３】
0004786255.tif 000004
【図４】
0004786255.tif 000005
【図５】
0004786255.tif 000006
【図６】
0004786255.tif 000007
【図７】
0004786255.tif 000008