(57)【要約】【課題】ポート数の少ないスイッチを用いてストレージシステムのスケーラビリティの向上を図ること。【解決手段】ホスト計算機に接続された複数のホスト接続制御部１０と、ディスクドライブ１３に接続された複数のドライブ制御部１２と、各ホスト接続制御部１０と各ドライブ制御部１２との間に配置されて、各ホスト接続制御部１０と各ドライブ制御部１２とを結ぶ複数の情報伝送路を切り替える複数の4x4スイッチ部１１とを備え、複数の4x4スイッチ部１１は、情報の伝送方向に沿って多段に接続され、各段の4x4スイッチ部１１は、ホスト接続制御部１０のうちの任意の一つのホスト接続制御部１０からすべてのドライブ制御部１２へ到達する経路がそれぞれ二つあって，ただ二つに定まり，かつ前記二つの経路がどの部分も重ならないように接続されることよりなる。【選択図】図２
2007293738.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチは、情報の伝送方向に沿って多段に構成されてなるストレージシステム。
【請求項２】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチは、情報の伝送方向に沿って多段に接続され、前記チャネルアダプタのうちの任意の一つのチャネルアダプタから、前記複数のディスクアダプタのうちの任意の一つへ到達する経路が一つに定まるように前記各段のスイッチを接続するストレージシステム。
【請求項３】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチは、情報の伝送方向に沿って多段に接続され、前記チャネルアダプタのうちの任意の一つのチャネルアダプタから、前記複数のディスクアダプタのうちの任意の一つへ到達する経路が二つに定まり、かつ前記二つの経路がどの部分も重ならないように前記各段のスイッチを接続するストレージシステム。
【請求項４】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチを情報の伝送方向に沿って多段に接続するストレージシステムにおいて、前記各経路を介して情報の授受を行うに際して、前記各スイッチは、前記ホスト計算機から前記チャネルアダプタに送付されたデータを前記チャネルアダプタから受信するステップと、前記受信したデータを前記ディスクアダプタに送付して前記ディスクドライブに格納させるステップと、前記受信したデータを基にパリティを求め、このパリティを前記データの送付先のディスクアダプタまたは他のディスクアダプタに送付して当該ディスクドライブに格納させるステップを含む、ストレージシステムの情報処理方法。
【請求項５】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチを情報の伝送方向に沿って多段に接続するストレージシステムにおいて、前記各経路を介して情報の授受を行うに際して、前記各スイッチは、前記チャネルアダプタまたは管理端末から仮想ボリューム番号と仮想ブロックアドレスの組と実ボリューム番号と実ブロックアドレスの組との対応を設定するステップと、前記ホスト計算機から前記チャネルアダプタに送付されたコマンドに含まれる仮想ボリューム番号と仮想ブロックアドレスを実ボリューム番号と実ブロックアドレスに変換するステップと、前記変換により得られた実ボリューム番号と実ブロックアドレスを入れ替えて得られたコマンドを前記ディスクアダプタに送付して、前記変換により得られた実ボリューム番号と実ブロックアドレスに従って前記ディスクアダプタに前記ディスクドライブを制御させるステップとを含む、ストレージシステムの情報処理方法。
【請求項６】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと，前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチを情報の伝送方向に沿うって多段に接続するストレージシステムにおいて、前記各経路を介して情報の授受を行うに際して、前記各スイッチは、前記ホスト計算機から前記チャネルアダプタに送付されたコマンドを受信するステップと、前記受信したコマンドに含まれるアドレスからボリューム番号とブロックアドレスを抽出するステップと、前記抽出したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号とを組にして記録するステップと、前記受信したコマンドがデータ読み出しコマンドであるかデータ書き込みコマンドであるかを判定するステップと、前記受信したコマンドがデータ書き込みコマンドであると判定したときに、前記コマンドから抽出したボリューム番号およびブロックアドレスが、前記記録したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号の組の中で、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタを識別する番号と組になって記録されていないかを検索するステップと、前記検索により、前記コマンドから抽出したボリューム番号およびブロックアドレスが、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタを識別する番号と組になって記録されていたときに、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタに対して、前記データ書き込みコマンドが送付されたことを通知するステップとを含む、ストレージシステムの情報処理方法。
【請求項７】
前記データ書き込みコマンドが送付されたことを通知するステップは、前記データ書き込みコマンドが送付されたことの通知を受けるチャネルアダプタにおいてデータの一時保存が実行されていた場合に、当該一時保存されたデータを無効化する要求を条件に実行され、かつ、前記チャネルアダプタに前記無効化の要求を送付した後、前記記録したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号の組から当該ボリューム番号とブロックアドレスおよびチャネルアダプタを識別するための番号の組に関する情報を削除するステップを含むことを特徴とする請求項６に記載のストレージシステムの情報処理方法。
【請求項８】
前記データ書き込みコマンドが送付されたことを通知するステップは、前記データ書き込みコマンドが送付されたことの通知を受けるチャネルアダプタにおいてデータの一時保存が実行されていた場合に、当該一時保存されたデータを前記データ書き込みコマンドに従って書き込むデータで更新する要求を条件に実行するステップを含むことを特徴とする請求項６に記載のストレージシステムの情報処理方法。
【請求項９】
前記二つの経路にある前記スイッチの数が前記二つの経路において同一であり、更に互いに他の経路にある前記スイッチのうち前記二つの経路で同じ順番にある前記スイッチどうしを接続するパスを備える請求項３に記載のストレージシステム。
【請求項１０】
ホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブと、前記ディスクドライブに接続されて前記ディスクドライブとデータの送受を制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチを情報の伝送方向に沿って多段に接続し、前記チャネルアダプタのうちの任意の一つのチャネルアダプタから、前記複数のディスクアダプタのうちの任意の一つへ到達する経路が二つに定まり、かつ前記二つの経路がどの部分も重ならないように前記各段のスイッチを接続し、前記二つの経路にある前記スイッチの数が前記二つの経路において同一であり、更に互いに他の経路にある前記スイッチのうち前記二つの経路で同じ順番にある前記スイッチどうしを接続するパスを備えるストレージシステムにおいて、前記各経路を介して情報の授受を行うに際して、前記各スイッチは、前記ホスト計算機から前記チャネルアダプタに送付されたコマンドを受信するステップと、前記受信したコマンドに含まれるアドレスからボリューム番号とブロックアドレスを抽出するステップと、前記抽出したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号とを組にして記録するステップと、前記受信したコマンドがデータ読み出しコマンドであるかデータ書き込みコマンドであるかを判定するステップと、前記受信したコマンドがデータ書き込みコマンドであると判定したときに、前記コマンドから抽出したボリューム番号およびブロックアドレスが、前記記録したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号の組の中で、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタを識別する番号と組になって記録されていないかを検索するステップと、前記検索により、前記コマンドから抽出したボリューム番号およびブロックアドレスが、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタを識別する番号と組になって記録されていたときに、前記コマンドを受信したチャネルアダプタとは異なるチャネルアダプタに対して、前記データ書き込みコマンドが送付されたことを通知するステップと、を含む、ストレージシステムの情報処理方法。
【請求項１１】
前記抽出したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号とを組にして記録するステップの後に、前記抽出したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号との組を記録したことを前記二つの経路で同じ順番にある前記スイッチどうしを接続するパスを用いて他の経路の上で同じ順番にあるスイッチに記録させるために通知するステップを含む、請求項１０に記載のストレージシステムの情報処理方法。
【請求項１２】
前記データ書込みコマンドが送付されたことを通知するステップの後に、前記記録したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号の組から当該ボリューム番号とブロックアドレスおよびチャネルアダプタを識別するための番号の組に関する情報を削除するステップと、前記記録したボリューム番号およびブロックアドレスと前記コマンドを受信したチャネルアダプタを識別する番号の組から当該ボリューム番号とブロックアドレスおよびチャネルアダプタを識別するための番号の組に関する情報を削除したことを前記二つの経路で同じ順番にある前記スイッチどうしを接続するパスを用いて他の経路の上で同じ順番にあるスイッチに削除させるために通知するステップを含むことを特徴とする請求項１１に記載のストレージシステムの情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置（ホスト計算機）に接続されたチャネルアダプタとディスクドライブに接続されたディスクアダプタとをスイッチを介して接続してなるストレージシステムに係り、特に、上位装置（ホスト計算機）とディスクアダプタとを結ぶ情報伝送路の切替を行う技術に関する。
【背景技術】
【０００２】
従来、上位装置（ホスト計算機）との接続を制御するチャネルアダプタとディスクドライブの制御を行うディスクアダプタとをスイッチを介して接続してなるストレージシステムは、ホスト計算機からのデータの入出力動作を高速化するために、ストレージシステム内にディスクドライブよりも高速な半導体メモリで構成されたキャッシュメモリを備え、ホスト計算機からのデータをキャッシュメモリに一時的に蓄える構成が採用されている。この種のストレージシステムにおいては、チャネルアダプタとディスクアダプタとを結ぶ複数の情報伝送路をスイッチによって切り替える構成となっている（特許文献１参照）。
【特許文献１】特開２００５−２５８９１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のストレージシステムにおいては、チャネルアダプタとディスクアダプタとを結ぶ複数の情報伝送路を１段構成のスイッチ、例えば、８個のポート（接続口）を有するスイッチで切り替えているため、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときには、情報伝送路の数に応じてスイッチのポートの数を多くしなければならず、システム全体のスケーラビリティがスイッチのポート数で制限され、これを大きく向上させることが困難である。
【０００４】
本発明は、前記従来技術の課題に鑑みて為されたものであり、その目的は、ポート数の少ないスイッチでシステム全体のスケーラビリティを向上させることにある。
【課題を解決するための手段】
【０００５】
前記課題を解決するために、本発明は、通信ネットワークを介してホスト計算機と情報の授受を行う１または２以上のチャネルアダプタと、ディスクドライブに接続されて記憶媒体に対するリードアクセスまたはライトアクセスを制御する１または２以上のディスクアダプタと、前記チャネルアダプタと前記ディスクアダプタとの間に配置されて、前記チャネルアダプタと前記ディスクアダプタとを結ぶ複数の情報伝送路を切り替える複数のスイッチとを備え、前記複数のスイッチは、情報の伝送方向に沿って多段に構成されてなるストレージシステムを構成したものである。
【０００６】
前記ストレージシステムを構成するに際しては、複数のスイッチを情報の伝送方向に沿って多段に接続して、かつすべてのチャネルアダプタからある特定のディスクアダプタに到達する経路は、チャネルアダプタ毎に一意に定まるように接続する。
【０００７】
前記した手段によれば、チャネルアダプタとディスクアダプタとを結ぶ複数の情報伝送路を構成するに際して、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときでも、スイッチの接続口を多くすることなく、複数のスイッチを情報の伝送方向に沿って多段に構成することで所定数の情報伝送路を形成することができ、システム全体のスケーラビリティの向上を図ることができる。また、システムの規模に応じてスイッチの段数を増加させても、各段のスイッチに対して同一のアーキテクチャを用いることができる。
【発明の効果】
【０００８】
本発明によれば、システム全体のスケーラビリティの向上を図ることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の一実施の形態を図面に基づいて説明する。図１は、本発明に係るストレージシステム１を、ストレージネットワーク３を通してホスト計算機２に接続したときのシステムの全体構成図である。図１において、ストレージシステム１は複数のディスクドライブ（記憶デバイス）13と、ストレージネットワーク３を通じて複数のホスト計算機２からの入出力要求に応答して、ディスクドライブ13への入出力制御を行う。ホスト計算機２はオペレーティングシステム上で動作するアプリケーションプログラムを実装していることがある。アプリケーションプログラムとしては、例えば、銀行の自動預金預け払いシステムや航空機の座席予約システム等がある。
【００１０】
ホスト計算機２はストレージネットワーク３を介してストレージシステム１と接続されている。ストレージネットワーク２は、例えば、SAN（Storage Area Network)であり、ホスト計算機２とストレージシステム１との間の通信はFibre Channelプロトコルによって行われる。ホスト計算機２からはストレージシステム１に対して例えば、ボリューム番号やブロックアドレスによるデータアクセス要求（ブロック単位でのデータ入出力要求。以下、ブロックアクセス要求と称する。）が後述のホスト接続制御部10に送信される。
【００１１】
スイッチ部11は、各々のホスト接続制御部(チャネルアダプタ)10、ドライブ制御部(ディスクアダプタ)12を相互に接続する。これらのホスト接続制御部10、ドライブ制御部12相互間のコマンド又はデータの送受信は４ｘ４スイッチ部11を介して行われる。図１において、スイッチ部11は信頼性を向上させるため２重化されている。
【００１２】
ディスクドライブ13は単一又は複数あって、ホスト計算機２からホスト接続制御部10、４ｘ４スイッチ部11、ドライブ制御部12を通じてアクセス可能な記憶領域を提供する。ディスクドライブ13が提供する記憶領域を組み合わせた論理ボリュームを設定することもできる。
【００１３】
次に、本発明に係るストレージシステムの一実施例を図２に従って説明する。図２は、スイッチ部（スイッチ）11を２段構成としたときのストレージシステムの構成図である。図２において、ストレージシステムは、ホスト計算機と接続するホスト接続制御部10を16個、ディスクドライブ13に接続されてディスクドライブ13の制御を行うドライブ制御部12を16個、4x4スイッチ部11を情報の伝送方向に沿って2段接続し、かつ信頼性向上のための冗長化のため、2重化しており、計16個の4x４スイッチ部11を備えている。
【００１４】
このような構成をとることにより、ホスト計算機に接続する接続口（ホストポート）は、1個のホスト接続制御部10に4ポート設ければ、合計64ポート、ディスクドライブと接続する接続口（ドライブポート）も、図2のように、1個のドライブ制御部12に2ポート設ければ、合計32ポートになる。このような構成は、例えば、１ドライブポートに64台のディスクドライブドライブを接続することにすれば、図２のように、１ドライブ当り２重化して2ポートを接続しても、合計32 / 2 x 64 = 1024台のディスクドライブ13を接続することができる。4x4スイッチ部11を更に追加し、３段接続すれば、4x4スイッチ部11は合計で96個（2重化した場合）で構成され、このとき、ホスト接続制御部10、ドライブ制御部12はそれぞれ64個ずつ接続可能となる。このときは、ホストポートは計256ポート、ドライブポートは128ポート、ディスクドライブ13は4096台接続可能となる。また更に4x4スイッチ部11を追加して4段接続する構成を採用することができる。なお、4x4スイッチ部11を1段、合計2個のみ用いたときには、ホスト接続制御部10、ドライブ制御部12は4個ずつ接続可能であり、ホストポートは計16ポート、ドライブポートは計8ポート、ディスクドライブは256台まで接続可能である。
【００１５】
各スイッチ部11、ホスト接続制御部10およびドライブ制御部12では、以下のコマンドを基に情報の授受が行われるようになっている。
【００１６】
図３は、本発明に係るストレージシステムで用いられるコマンドパケットの形式の例である。
【００１７】
リード要求コマンドＣ1はホスト計算機から受信したデータの読出し要求を伝達するコマンドであり、ホスト接続制御部10からドライブ制御部12へ向かう方向へ送出される。図３（ａ）の例では、リード要求であることを識別するコマンド種、行き先のドライブ制御部12を表す行き先アダプタ番号及び対象となるディスクドライブのボリュームを区別するボリューム番号、読出しブロックアドレス、読み出しデータ長、読み出した結果を返すため送信元ホスト接続制御部10を特定するための送信元アダプタ番号、全体のデータ誤りの発生を検出・訂正する保護コードからなる。
【００１８】
リード応答コマンドＣ2は、リード要求に従ってディスクドライブ13のデータを読み出した結果を返すためのコマンドで、ドライブ制御部12からホスト接続制御部10の方向へ流れる。図３（ｂ）の例では、リード要求と同じように、コマンドを識別するコマンド種、行き先のホスト接続制御部10を特定する行き先アダプタ番号、読出しブロックアドレス、読出しデータ長、送信元のドライブ制御部12を識別する送信元アダプタ番号、ボリューム番号、読み出した結果のデータ、保護コードからなる。
【００１９】
ライト要求コマンドＣ3は、ホスト計算機から受信したデータの書き込み要求を伝達するコマンドであり、ホスト接続制御部10からドライブ制御部12へ向かう方向へ送出される。図３（ｃ）の例では、ライト要求であることを識別するコマンド種、行き先のドライブ制御部12を表す行き先アダプタ番号及び対象となるディスクドライブ13のボリュームを区別するボリューム番号、書き込みブロックアドレス、書き込みデータ長、送信元ホスト接続制御部10を識別するための送信元アダプタ番号、書き込みを行うデータ、保護コードからなる。ライト要求における送信元アダプタ番号は、例えば、ディスクドライブ13への書き込みが失敗したとき、書き込み失敗を報告するために用いることができる。
【００２０】
全スプライトコマンドＣ4は、RAIDのパリティ生成を行ってデータ書き込みをするとき、パリティ生成に必要なデータブロックがすべて揃っているときに用いることのできるコマンドである。ホスト接続制御部10からドライブ制御部12へ向かう方向へ送出される。図３（ｄ）の例では、全スプライトライトであることを識別するコマンド種、データの行き先のドライブ制御部12を表すデータ行き先アダプタ番号及びディスクドライブ13のボリュームを区別するボリューム番号と、書き込みブロックアドレスの組が０、１、２の３組、パリティの行き先のドライブ制御部12を表すパリティ行き先アダプタ番号及びディスクドライブ13のボリュームを区別するボリューム番号、パリティ書き込みブロックアドレス、データ長、送信元ホスト接続制御部10を識別するための送信元アダプタ番号、データ０、１、２の３組、保護コードからなる。
【００２１】
リードモディファイライトコマンドＣ5は、RAIDのパリティ生成を行ってデータ書き込みをするとき、パリティ生成に必要なデータブロックのうちの一部しか書き込みデータがないときに用いることができるコマンドである。ホスト接続制御部10からドライブ制御部12へ向かう方向へ送出される。図３（ｅ）の例では、リードモディファイライトであることを識別するコマンド種、データの書き込みを行うドライブ制御部12を識別するリードモディファイ行き先アダプタ番号、データのディスクドライブのボリュームを区別するボリューム番号、データの書き込みを行うリードモディファイブロックアドレス、パリティを変更するためのドライブ制御部12を識別する差分行き先アダプタ番号、パリティのディスクドライブのボリュームを区別するボリューム番号、パリティの書き込みを行う差分データブロックアドレス、データ長、送信元ホスト接続制御部10を識別するための送信元アダプタ番号、書き込みデータ、保護コードからなる。
【００２２】
差分ライト要求コマンドＣ6は、リードモディファイライトの処理を行った結果、ディスクドライブ上のパリティデータを変更させる時に用いることのできるコマンドである。4x4スイッチ部11からドライブ制御部12へ向かう方向へ送出される。図３（ｆ）の例では、差分ライト要求であることを示すコマンド種、行き先のドライブ制御部12を表す行き先アダプタ番号及び対象となるディスクドライブのボリュームを区別するボリューム番号、差分書き込みブロックアドレス、書き込みデータ長、送信元ホスト接続制御部10を識別するための送信元アダプタ番号、書き込みを行うデータ、保護コードからなる。差分ライト要求コマンドは、リードモディファイライトコマンドＣ5を基に生成されるので、差分ライト要求コマンドＣ6における送信元ホスト接続部10は、元のリードモディファイライトコマンドＣ5の送信元ホスト接続部10と同じにすることができる。
【００２３】
コレクションリードコマンドＣ7は、あるドライブまたはデータブロックに障害が起きてRAIDのデータ復元を行ってデータを読み出すときに用いることのできるコマンドである。ホスト接続制御部10からドライブ制御部12へ向かう方向へ送出される。図３（ｇ）の例では、コレクションリードであることを識別するコマンド種、データの読み出し先のドライブ制御部12を表すデータ読み先アダプタ番号及びディスクドライブのボリュームを区別するボリューム番号、データ読出しを行うブロックアドレスの組が０、１、２の３組、データ長、送信元ホスト接続制御部10を識別するための送信元アダプタ番号、保護コードからなる。
【００２４】
図4は、本発明によるストレージシステムで用いられるインバリデート及び仮想化のコマンドパケットの形式の例である。
【００２５】
インバリデートコマンドＣ8は、ホスト接続制御部10に備えるフロントサイドキャッシュ104に格納するデータが古くなった場合に無効化するために用いることのできるコマンドである。4x4スイッチ部11からホスト接続制御部10に向かう方向に送出される。図４（ａ）の例では、インバリデートコマンドであることを示すコマンド種、行き先のホスト接続制御部10を表す行き先アダプタ番号、無効化する対象のブロックアドレスを示すインバリデートブロックアドレス、無効化するデータ長、無効化する対象のボリュームを示すボリューム番号、保護コードからなる。
【００２６】
仮想化設定コマンドＣ9は、4x4スイッチ部11に仮想ボリュームと実ボリュームの対応の仮想化設定を行うときに用いることのできるコマンドである。ホスト接続制御部10もしくは管理端末等から、4x4スイッチ部11に向けて送出される。図４（ｂ）の例では、仮想化設定コマンドであることを識別するコマンド種、仮想化を行う仮想ボリューム番号、仮想ブロックアドレス、仮想化を行うデータ長、仮想化の結果特定されるドライブ制御部12を示す設定アダプタ番号及び変換されるボリューム番号、変換される設定ブロックアドレス、保護コードからなる。また、図２に示したように、4x4スイッチ部11が2段以上の多段に接続し、仮想化設定コマンドＣ9をホスト接続制御部10から送出する場合には、4x4スイッチ部11の特定の段に対して設定を行い、図４（ｃ）に示すように、設定段指定付きの仮想化設定コマンドＣ10を用いることができる。
【００２７】
ホスト接続制御部10は、図５に示すように、ホストプロトコル制御部101、プロセッサ102、ホストデータ転送制御部103、フロントサイドキャッシュ104、プロセッサメモリ105を備える。ホストプロトコル制御部101は、ホスト計算機と接続する通信プロトコルを制御する。通信プロトコルは、例えば、Fibre Channelである。プロセッサ102はプロセッサメモリ105に格納された処理プログラムによって動作し、ホスト接続制御部10全体を制御する。プロセッサメモリ105は、処理プログラムをプロセッサ102が実行するときに必要なデータの読み書きにも用いられる。ホストデータ転送制御部103はプロセッサ102によって制御され、フロントサイドキャッシュ104内に格納されるデータをホスト計算機とホストプロトコル制御部101を通じてやり取りする。またホストデータ転送制御部103はフロントサイドキャッシュ104と4x4スイッチ部11との間のデータの転送も行う。
【００２８】
ドライブ制御部12は、図６に示すように、ドライブプロトコル制御部121、プロセッサ122、ドライブデータ転送制御部123、バックサイドキャッシュ124、プロセッサメモリ125を備える。ドライブプロトコル制御部121はディスクドライブ13と接続する通信プロトコルを制御する。通信プロトコルは、例えば、Fibre Channel AL（Arbitrated Loop)や、SAS（Serial Attached SCSI)、SATA(Serial ATA)などである。プロセッサ122はプロセッサメモリ125に格納された処理プログラムによって動作し、ドライブ制御部12全体を制御する。プロセッサメモリ125は、処理プログラムをプロセッサ122が実行するときに必要なデータの読み書きにも用いられる。ドライブデータ転送制御部123はプロセッサ122によって制御され、バックサイドキャッシュ124内に格納されるデータをディスクドライブ13とドライブプロトコル制御部121を通じてやり取りする。またドライブデータ転送制御部123はバックサイドキャッシュ124と4x4スイッチ部11との間のデータの転送も行う。
【００２９】
4x4スイッチ部11は、図７に示すように、ホスト接続制御部10やドライブ接続制御部12あるいは、他の4x4スイッチ部11と接続してデータをやり取りするプロトコルI/F制御110、プロトコルI/F制御110が受信したデータを蓄える受信バッファ111、プロトコルI/F制御を通じて送信するためのデータを蓄える送信バッファ112、受信バッファ111の先頭のデータを解析して行き先の解析・調停の制御を行う行き先制御・アービトレーション制御113、行き先制御・アービトレーション制御113に制御されて、複数の受信バッファ111の受信データのうち先頭のデータを実際に選択して、当該送信バッファ112に伝達するセレクタ114からなる。図７に示す4x4スイッチ部11では、4個のホスト接続制御部10または他の4x4スイッチ部11と別の4個のドライブ制御部12または他の4x4スイッチ部11との間を接続するため、合計8個の接続口（スイッチポート）を備え、プロトコルI/F制御110も計8個ある。受信バッファ111、送信バッファ112もそれぞれのプロトコルI/F制御110毎にそれぞれ8個ずつある。また行き先制御・アービトレーション制御113とセレクタ114もそれぞれ送信バッファ112毎に数えれば、それぞれ8個ずつある。
【００３０】
行き先制御・アービトレーション制御部113は、図８に示すように、４つの行き先番号抽出部501a〜d、送出調停制御部502および調停履歴記録部503を備えて構成されており、それぞれの接続口に接続された送信バッファ112に対応して、入力側の四つの接続口から入力されたコマンドを基に当該接続口に接続された送信バッファ112へ送出されるデータを制御する。具体的には、受信バッファ111が何らかのコマンドを受信したときに、そのコマンドに付された行き先データを４つの行き先番号抽出部501a〜dがそれぞれ受信する。受信バッファ111より送られてくる行き先データは、例えば、図3（ａ）〜（ｇ）に示した、各コマンドの行き先アダプタ番号の部分である。行き先番号抽出部501a〜dでは、それぞれの行き先データを調べ、当該送信バッファ112への送信であるか否かを判定し、判定結果を送出調停制御部502に出力する。送出調停制御部502は、行き先番号抽出部501a〜dからその判定結果を受け取り、当該送信バッファ112への送信であると判定されたコマンドが当該送信バッファ112へ送られるように、セレクタ114を制御する制御信号を生成し、セレクタ114を制御するとともに、当該受信バッファ111に対しては、送信バッファ112への送信を許可し、次に受信したコマンドを出力させるための出力許可信号を返送する。
【００３１】
また、送出調停制御部502は、当該送信バッファ112への送信であると判定されたコマンドが同時に2個以上あった場合には、その間の調停を行って、どのコマンドを当該送信バッファ112へ送るか決定する。その際、調停履歴記録部503に過去の調停結果を記録しておき、これを参照して、例えば、なるべく調停結果が均等になるように制御を行う。新しい調停を行ったら、その都度その結果を調停記録部503に記録し、ある程度古い調停結果は調停記録部503より削除するようにしてもよい。
【００３２】
本実施例によれば、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときでも、情報伝送路の数に応じてスイッチのポート数を多くすることなく、複数のスイッチを情報の伝送方向に沿って多段に構成することで所定数の情報伝送路を形成することができ、システム全体のスケーラビリティの向上を図ることができる。また、システムの規模に応じてスイッチの段数を増加させても、各段のスイッチに対して同一のアーキテクチャを用いることができる。
【００３３】
次に、本発明に係るスイッチの第２実施例を図９に従って説明する。本実施例は、4x4スイッチ部11に仮想化機能を付加したものであって、仮想化の情報を格納するために仮想化マッピングテーブル200を備え、図７における行き先制御・アービトレーション制御113に換えて、仮想化変換制御・行き先制御・アービトレーション制御213及び仮想化逆変換制御・行き先制御・アービトレーション制御214を4個ずつ用いたものであり、その他の構造は図７と同様である。なお、図２のように4x4スイッチ部11が2段以上接続される場合には、最もホスト接続制御部10に近い（ホスト接続制御部10に直接接続する）4x4スイッチ部11だけに、仮想化機能を付加する構成を採用することもできる。
【００３４】
仮想化変換制御・行き先制御・アービトレーション制御部213は、ドライブ制御部12へ向かう方向の送信バッファ112毎に設けられ、ホスト接続制御部10からドライブ制御部12へ向かう方向のコマンドについて制御を行うようになっており、図１０に示すように、図８に示した行き先制御・アービトレーション制御113の構成に対し、仮想化変換部511a〜d、仮想化設定コマンド抽出部512、仮想化設定コマンド処理部513、及び仮想化マッピングテーブル200との信号の入出力が加わっている。即ち、入力された各コマンドは、仮想化設定コマンドでない場合、まず初めに、仮想化変換部511a〜dにて、仮想化の処理を受ける（この処理は図１２のステップ703以降で後述する処理となる）。また仮想化設定コマンドの場合は、仮想化設定コマンド抽出部512で判定され、仮想化設定コマンド処理部513にて処理が行われる。この時の処理の内容は、後述する図１２のステップ709以降で示した処理となる。その際、図１２に示した処理に合わせて、送出調停制御部514にも仮想化設定コマンドの処理であることを示す信号が送出される。そのほかの動作は、図８に示した行き先制御・アービトレーション制御部113の場合と同じである。
【００３５】
仮想化逆変換制御・行き先制御・アービトレーション制御部214はホスト接続制御部10へ向かう方向の送信バッファ112毎に設けられ、ドライブ制御部12からホスト接続制御部10へ向かう方向のコマンドについて制御を行うようになっており、図１１に示すように、図８に示した行き先制御・アービトレーション制御113の構成に対し、仮想化逆変換部521a〜d及び仮想化マッピングテーブル200への信号の入出力が加わっている。即ち、仮想化逆変換制御・行き先制御・アービトレーション制御214では、入力された各コマンドは、初めにそれぞれの仮想化逆変換部521a〜dにて、仮想化の逆変換の処理を受ける。仮想化の逆変換の処理とは、図１０に示した仮想化変換部511a〜dで行われる仮想化の処理の逆変換であり、コマンド中のアダプタ番号/ボリューム番号、ブロックアドレスを、図１３に示すように、設定アダプタ番号/ボリューム番号、設定ブロックアドレスとして扱い、これについて仮想化マッピングテーブル200を検索して、仮想ボリューム番号、仮想ブロックアドレスに戻す処理となる。図１３の仮想化マッピングテーブル200は、仮想ボリューム番号、仮想ブロックアドレス、設定アダプタ番号/ボリューム番号、設定ブロックアドレスの組で構成されている。図１３の例では、ドライブ制御部12を識別するアダプタ番号とこれに接続されるディスクドライブのボリュームを識別するボリューム番号は組にして、一意の値を付与して識別できるようにした状態を想定している。
【００３６】
次に、本発明に係るスイッチの第２実施例の全体の動作を図１２に示すフローチャートに従って説明する。まず、ステップ701において、ホスト接続制御部10または管理端末から何らかのコマンドを受信する。ステップ702において、受信したコマンドが仮想化設定コマンドか否かを判定する。仮想化設定コマンドでなかった場合（通常コマンド）は、ステップ703に進み、コマンド中のボリューム番号、ブロックアドレスを抽出する。次にステップ704で抽出したボリューム番号、ブロックアドレスを用いて仮想化マッピングテーブル200を検索する。検索した結果をステップ705で判定し、検索した結果、仮想化の登録があればステップ706に進み、変換結果を用いてコマンド中のボリューム番号、ブロックアドレス番号を書き換え、次にステップ707へ進む。ステップ705で検索した結果、仮想化の登録がなかった場合には、直接ステップ707へ進む。ステップ707では、ボリューム番号、ブロックアドレスに従って、送出する先のスイッチポートを決定する。次いでステップ708において、決定された送出先スイッチポートよりコマンドを送出して、終了する。
【００３７】
ステップ702において、仮想化設定コマンドであった場合には、ステップ709において、設定段指定付きの仮想化設定コマンドであるかどうかを判定する。設定段指定がなかった場合にはステップ710に進み、当該設定コマンドから仮想ボリューム番号、ブロックアドレスを抽出する。その後、ステップ711において、抽出したボリューム番号、ブロックアドレスで仮想化マッピングテーブル200を検索する。検索した結果はステップ712で判定され、仮想化の登録があった場合には、ステップ713へ進み、仮想化マッピングテーブル200の当該登録エントリを新しく受信した設定コマンドに設定されているボリューム番号、ブロックアドレスの組に更新し、終了する。またステップ712で仮想化の既存登録がなかった場合、ステップ714に進み、新規に当該設定コマンドに従って、仮想ボリューム番号、ブロックアドレス、組になる設定ボリューム番号、ブロックアドレスを設定するエントリを追加する。
【００３８】
ステップ709で設定段数指定付きであった場合、ステップ715で設定段の値が０であるかどうかを判定し、もし０であった場合は指定された設定段に到達したとして、ステップ710に進み、ステップ710以下の処理を行う。もし０でなかった場合には、ステップ716に進み、当該仮想化設定コマンド中の設定段の値を１減ずる。そしてステップ717にて、次段の4x4スイッチ部11へ当該仮想化コマンドを送出する。このようにすることで、設定段に指定した段数に達したところで、仮想化設定を実行することができる。また、このほか、例えば、ステップ715で、特定の値を設定しておき、特定の値と比較する構成を採用することもできる。
【００３９】
本実施例によれば、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときでも、情報伝送路の数に応じてスイッチのポート数を多くすることなく、複数のスイッチを情報の伝送方向に沿って多段に構成することで所定数の情報伝送路を形成することができ、システム全体のスケーラビリティの向上を図ることができることと同時に、スイッチ部において仮想化の処理を行うことができる。そのとき、ホスト接続制御部またはドライブ制御部のプロセッサが仮想化について処理をする必要もない。
【００４０】
次に、本発明に係るスイッチの第３実施例を図１４に従って説明する。本実施例は、4x4スイッチ部11に、仮想化機能及びキャッシュコヒーレンス機能を付加したものであって、仮想化機能を付加した図９のものに加えて、フロントサイド・キャッシング情報制御300、フロントサイド・キャッシング情報テーブル301を備え、図９の仮想化変換制御・行き先制御・アービトレーション制御部213に換えて、コヒーレンス制御・仮想化/行き先制御・アービトレーション制御313を用い、仮想化逆変換制御・行き先制御・アービトレーション制御214に換えて、仮想化逆変換制御・キャッシング記録制御・アービトレーション制御314を用いたものであり、その他の構造は、図９のものと同様である。
【００４１】
コヒーレンス制御・仮想化/行き先制御・アービトレーション制御部313は、ドライブ制御部12へ向かう方向の送信バッファ112毎に設けられ、ホスト接続制御部10からドライブ制御部12へ向かう方向のコマンドについて制御を行うようになっており、図１５に示すように、図１０に示した仮想化変換制御・行き先制御・アービトレーション制御部213の構成に対し、インバリデートコマンド生成部530、キャッシング情報検索部531、ライトコマンド判定部532、及びフロントサイド・キャッシング情報制御300からの信号入出力、インバリデート送信バッファ302への信号出力が加わっており、送出調停制御部533からの信号がライトコマンド判定部532に接続されている。即ちライトコマンド判定部532では、ホスト接続制御部10からドライブ接続制御部12へ向けてライト要求コマンドＣ3が送出されたことを送出調停制御部533からの信号を判定して、検出する。その検出結果をキャッシング情報検索部531に伝達すると、キャッシング情報検索部531はフロントサイド・キャッシング情報制御部300と信号をやり取りして、フロントサイド・キャッシング情報テーブル301に蓄積されたフロントサイド・キャッシング情報を検索する。その後インバリデートコマンドＣ8を送出する時には、インバリデートコマンド生成部530に指示を送り、インバリデートコマンドＣ8を生成してインバリデート送信バッファ302へインバリデートコマンドＣ8を送出させる。そのほかの処理は図１０に示した仮想化変換制御・行き先制御・アービトレーション制御部213の場合と同様である。
【００４２】
仮想化逆変換制御・キャッシング記録制御・アービトレーション制御部314は、図１６に示すように、ホスト接続制御部10へ向かう方向の送信バッファ112毎に設けられ、ドライブ制御部12からホスト接続制御部10へ向かう方向のコマンドについて制御を行うようになっており、図１１に示した仮想化変換制御・行き先制御・アービトレーション制御部213の構成に対し、四つの受信バッファ111からの入力及び出力許可信号に加えて、四つのインバリデート送信バッファ302からの入力及び出力許可信号があり、仮想化逆変換部521a〜h、行き先番号抽出部501a〜hがそれぞれ8個ずつある。更にリード応答判定部542、新規キャッシング情報生成部543、インバリデートコマンド判定部544、キャッシング情報削除指示生成部545と、フロントサイド・キャッシング情報制御300への信号出力が加わり、送出調停制御部541からリード応答判定部542及びインバリデートコマンド判定部544に信号が接続されている。即ちリード応答判定部542では送出調停制御部541からの信号を判定して、リード応答がドライブ制御部12よりホスト接続制御部10へ返されたことを検出すると、新規キャッシング情報生成部543に伝達し、新規キャッシング情報生成部543では、新たなキャッシング情報、例えば、図１７に示したボリューム番号、ブロックアドレス、ホスト接続制御部アダプタ番号の組を生成し、フロントサイド・キャッシング情報制御部300に出力して、新たにフロントサイド・キャッシング情報に登録させる。図１７は、フロントサイド・キャッシング情報の例であって、ボリューム番号、プロックアドレスとホスト接続制御部10を識別するアダプタ番号の組からなるテーブルである。
【００４３】
同様に、インバリデートコマンド判定部544では、送出調停制御部541からの信号を判定して、インバリデートコマンドＣ8がホスト接続制御部10へ送られたことを検出すると、キャッシング情報削除指示生成部545に伝達し、キャッシング情報削除指示生成部545では、キャッシング情報を削除する指示を生成して、フロントサイド・キャッシング情報制御部300に出力して、フロントサイド・キャッシング情報から当該インバリデートコマンドＣ8に該当するキャッシング情報を削除させる。そのほかの動作は図１１に示した仮想化変換制御・行き先制御・アービトレーション制御部213と同様である。
【００４４】
またフロントサイド・キャッシング情報制御300には、4x4スイッチ部11を2重化した場合、2重化した互いの4x4スイッチ部11内のフロントサイド・キャッシング情報テーブル301の内容の整合性を取り、互いに他をバックアップできるようにするため、互いに他と接続する信号線を付加することができる。
【００４５】
フロントサイド・キャッシング情報制御300は、図１８に示すように、新規キャッシング情報追加制御部550、キャッシング情報削除制御部551、バックアップ更新制御部552、キャッシング情報参照制御部553、バックアップ更新反映部554からなる。新規キャッシング情報追加制御部550は、例えば、図１６に示した新規キャッシング情報生成部543からの信号を受信し、フロントサイド・キャッシング情報テーブル301に新規キャッシング情報を登録する。キャッシング情報削除制御部551は、同様に例えば、図１６に示したキャッシング情報削除指示生成部545からの信号を受信し、フロントサイド・キャッシング情報テーブル301に登録されたキャッシング情報を削除する。さらにバックアップ更新制御部552は、新規キャッシング情報追加制御部550、キャッシング情報削除制御部551より指示を受け、新規キャッシング情報追加制御部550、キャッシング情報削除制御部551が行ったキャッシング情報の新規登録と削除をペアとなった4x4スイッチ部11へ伝達し、同様のキャッシング情報の新規登録及び削除を行わせる。またバックアップ更新反映部554は逆にペアとなった4x4スイッチ部11より信号を受け、ペアとなった4x4スイッチ部11で行われたキャッシング情報の新規登録と削除を、それぞれ新規キャッシング情報追加制御部550、キャッシング情報削除制御部551に伝達して、同様のキャッシング情報の新規登録と削除を行わせる。キャッシング情報参照制御部553は、例えば、図１５に示すキャッシング情報検索部531より信号を受け、キャッシング情報テーブル301を参照して、キャッシング情報の検索を処理する。またキャッシング情報検索部531より受けたライト要求コマンドＣ3について新規キャッシング情報追加制御部550に伝達し、ライト要求コマンドＣ3に関する処理を中心とする新規登録の処理を行わせることもできる。
【００４６】
また、逆に新規キャッシング情報追加制御部550より信号を受け、キャッシング情報の新規追加時に、新規追加を正しく行うために、同様のキャッシング情報が既にキャッシング情報テーブル301に登録されていないかどうか参照して確認し、確認結果を新規キャッシング情報追加制御部550に返す。同様に、キャッシング情報削除制御部551からも信号を受け、キャッシング情報の削除時に、正しく削除処理が行われるようにするために、削除すべきキャッシング情報がキャッシング情報テーブル301の登録されていることを参照して確認し、確認結果をキャッシング情報削除制御部551に返す。
【００４７】
次に、キャッシュコヒーレンシ機能の動作を図１９のフローチャートに従って説明する。ここで述べるキャッシュコヒーレンシ処理は、ホスト接続制御部10に備わるフロントサイドキャッシュ104に格納されるデータのコヒーレンシを保つ処理である。図１９において、まず、ステップ730にてホスト接続制御部10からライト要求コマンドＣ3を受信またはドライブ制御部12からリード応答コマンドＣ2を受信する。次にステップ731にて、当該コマンドから、送信元のホスト接続制御部10（ライト要求の場合）または返送先のホスト接続制御部10(リード応答の場合)を識別するアダプタ番号、及びボリューム番号、ブロックアドレスを抽出し、フロントサイド・キャッシング情報に登録する。このとき、複数ブロックの転送であれば、ブロック数分、ブロックアドレスをそれに応じて変更しながら登録を行う。次にステップ732にて、フロントサイド・キャッシング情報に登録したことを2重化しているペアの4x4スイッチ部11に通知し、そのフロントサイド・キャッシング情報に登録させる。
【００４８】
ステップ733にて、当該コマンドがライト要求かリード応答か判定し、リード応答コマンドＣ2の場合には処理を終了する。ライト要求コマンドＣ3の場合にはステップ734に進む。ステップ734では、当該ライト要求コマンドＣ3の書込みボリューム番号、ブロックアドレスで、当該コマンドの送信元の以外のホスト接続制御部10のアダプタ番号の登録があるか、フロントサイド・キャッシング情報を検索する。次にステップ735で、検索した結果、フロントサイド・キャッシング情報に他に登録があったかどうか判定し、もし他に登録がなかった場合は処理を終了する。
【００４９】
ステップ735にて、もし他に登録があった場合、ステップ736に進み、登録されていた他のホスト接続制御部10に向けて、当該ボリューム番号・ブロックアドレスのインバリデートコマンドＣ8を生成して送出する。次にステップ737にて、インバリデートコマンドＣ8を送出した先のホスト接続制御部10のアダプタ番号に対応するボリューム番号、ブロックアドレスの組をフロントサイド・キャッシング情報から当該ブロック数分削除する。更にステップ738にて、フロントサイド・キャッシング情報から削除したことをペアの4x4スイッチ部11に通知し、そのフロントサイド・キャッシング情報からも削除させて、処理を終了する。
【００５０】
本実施例によれば、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときでも、情報伝送路の数に応じてスイッチのポート数を多くすることなく、複数のスイッチを情報の伝送方向に沿って多段に構成することで所定数の情報伝送路を形成することができ、システム全体のスケーラビリティの向上を図ることができることと同時に、スイッチ部において仮想化の処理及びキャッシュコヒーレンスの処理を行うことができる。そのとき、ホスト接続制御部またはドライブ制御部のプロセッサが仮想化やキャッシュコヒーレンス制御全体について処理をする必要もない。ホスト接続制御部のプロセッサはキャッシュコヒーレンス制御に関しては、スイッチ部から送付されてくるインバリデートコマンドに従って、それぞれのフロントサイドキャッシュからデータを削除する処理のみを行えばよい。
【００５１】
次に、本発明に係るスイッチの第４実施例を図２０に従って説明する。本実施例は、4x4スイッチ部11について、RAID制御機能を付加したものであって、図７に示した基本的な例に対して、パリティ生成バッファ401、RAIDパリティ生成制御部402、コレクションリード制御部403、コレクション生成バッファ404、コレクション・セレクタ405、中間バッファ406を備えたものであり、その他の構造は図７と同様である。なお、図２のように4x4スイッチ部11が2段以上接続される場合には、最もドライブ制御部12に近い（ドライブ制御部12に直接接続する）4x4スイッチ部11にて、図２０のようなRAID制御機能を備えればよい。
【００５２】
RAIDパリティ生成制御部402は、図２１に示すように、リードモディファイライト・全ストライプライト判定部601、中間バッファ406への出力セレクタ602、パリティ生成シーケンス制御部603、パリティ生成バッファ401への出力セレクタ604、排他的論理和生成部605、旧データリードコマンド生成部606、排他的論理和生成部605への入力セレクタ607よりなる。図２１において、リードモディファイライト・全ストライプライト判定部601では、受信バッファ111からの入力を受け、リードモディファイライトコマンドＣ5及び全ストライプライトコマンドＣ4を検出し、パリティ生成シーケンス制御部603に伝達して、処理を行わせる。パリティ生成シーケンス制御部603はRAIDパリティ制御402全体の処理を制御し、リードモディファイライトコマンドＣ5のときは、例えば、図２４に示す処理を、全ストライプライトコマンドＣ4のときには、例えば、図２３に示す処理をそれぞれ行う。
【００５３】
セレクタ602では、パリティ生成シーケンス制御部603から指示を受け、受信バッファ111からの通常コマンドを直接中間バッファ406に送出したり、パリティ生成バッファ401からのデータをライト要求コマンドＣ3として送出したり、旧データリードコマンド生成部606からの旧データリードコマンドを送出したり、あるいはコレクションリード制御403より要求を受けて、リード要求コマンドＣ1を送出したりする。またセレクタ604では、受信バッファ111からくるリードモディファイライトコマンドＣ5及び全スプライトライトコマンドＣ4中のライトデータをパリティ生成バッファ401に出力するか、排他的論理和生成部605からの出力をパリティ生成バッファ401に出力する。排他的論理和生成部605ではパリティ生成バッファ401内のデータと、セレクタ607によって選択されるセレクタ114bからの出力か受信バッファ111からの全スプライトライトコマンドＣ4中のライトデータの排他的論理和を生成して、セレクタ604に送る。旧データリードコマンド生成部606では、図２４に示したリードモディファイライトコマンドＣ5の場合の処理がステップ763にて旧データを読み出すリード要求コマンドＣ1を生成する処理を行う。
【００５４】
コレクションリード制御403は、図２２に示すように、コレクションリードコマンド判定部611、データ/パリティリードコマンド生成部612、コレクションリード・シーケンス制御部613、排他的論理和生成部614、コレクション生成バッファ404への出力セレクタ615よりなる。図２２において、コレクションリードコマンド判定部611では、受信バッファ111からのコマンドがコレクションリードコマンドＣ7であることを判定し、コレクションリード・シーケンス制御部612に伝達する。コレクションリード・シーケンス制御部612では、コレクションリード制御403の全体を制御し、コレクションリードコマンド判定部611からの信号を受けて、例えば、図２５に示す処理を行う。データ/パリティリードコマンド生成部612では、図２５のステップ772に当る、同一パリティグループ内の残ったデータ及びパリティを読み出すためのリード要求コマンドを生成し、RAIDパリティ制御402を通じて、中間バッファ406に送出する。排他的論理和生成部614では、図２５のステップ774に対応して、セレクタ114bより送られてくるリード応答コマンドＣ2中のリードデータとコレクション生成バッファ404内のデータの排他的論理和を生成し、目的とするデータの復元を行う。コレクション生成バッファ404への出力セレクタ615では、排他的論理和生成部614の出力か、セレクタ114bより入力されるリード応答コマンドＣ2中のリードデータを直接かを選択して、コレクション生成バッファに出力し、格納させる。
【００５５】
次に、RAIDパリティ生成を全ストライプライトコマンドＣ4を用いて行うときの動作を図２３のフローチャートに従って説明する。図２３において、ステップ751にてホスト接続制御部10より全ストライプライトコマンドＣ4を受信すると、次にステップ752で全ストライプライトＣ4中のライトデータを抽出する。ステップ753において、抽出したライトデータからパリティを生成し、パリティ生成バッファ401に蓄積する。ステップ754では、ライトデータをそれぞれのドライブへ接続するドライブ制御部12へ向けてライト要求コマンドＣ3に変換して送出する。最後にステップ755にて、パリティ生成バッファ401に蓄積されたパリティデータをライト要求コマンドＣ3に変換し、パリティを書き込むディスクドライブ１３に接続されたドライブ制御部12に向けて送信する。
【００５６】
次に、RAIDパリティ生成をリードモディファイライトコマンドを用いて行うときの動作を図２４のフローチャートに従って説明する。図２４において、ステップ761にてホスト接続制御部10からリードモディファイライトコマンドＣ5を受信すると、次にステップ762において、続くリードモディファイライトコマンドＣ５のライトデータを受信して、パリティ生成バッファ401に格納する。ステップ763において、旧データを読み出すリード要求コマンドＣ1を生成し、当該ディスクドライブ１３が接続されたドライブ制御部12へ向けて送出する。その後、ステップ764において、当該ドライブ制御部12よりリード応答コマンドＣ2を受信して、旧データを取り出し、パリティ生成バッファ401内のライトデータと排他的論理和を取り、差分データを生成する。生成した差分データは、パリティ生成バッファ401内に別に格納する。次にステップ765にて、パリティ生成バッファ401内のライトデータを当該ディスクドライブ１３が接続するドライブ制御部へライト要求コマンドＣ3に変換して送出する。最後にステップ766にて、生成した差分データをパリティ生成バッファ401から取り出し、差分ライト要求コマンドＣ6に変換して、パリティドライブを、ドライブ制御部12へ送出し、パリティを変更させる。差分ライト要求コマンドＣ6を受信したドライブ制御部12では、まず当該のパリティドライブよりパリティデータを読出し、差分ライト要求コマンドＣ6で送られた差分データと排他的論理和を取ることにより、差分が発生した部分のみパリティデータを変更し、再び元のパリティドライブへ書き戻す。
【００５７】
次に、コレクションリードコマンドによりデータの回復を行うときの動作を図２５のフローチャートに従って説明する。図２５において、まず、ステップ771にてホスト接続制御部10からコレクションリードコマンドＣ7を受信すると、ステップ772において、残ったデータ及びパリティを読み出すリード要求コマンドＣ1を生成し、それぞれのディスクドライブ１３が接続するドライブ制御部12へ送出する。次にステップ773において、読み出したそれぞれのデータ、パリティをリード応答コマンドＣ2により受信する。ステップ774において、受信したデータ、パリティより当該データを復元し、コレクション生成バッファ404に蓄積する。最後にステップ775において、コレクション蓄積バッファ404内に蓄積された当該データの復元結果を下のホスト接続制御部10に返送する。
【００５８】
本実施例によれば、チャネルアダプタやディスクアダプタの増大に伴って情報伝送路の数を増加させる必要が生じたときでも、情報伝送路の数に応じてスイッチのポート数を多くすることなく、複数のスイッチを情報の伝送方向に沿って多段に構成することで所定数の情報伝送路を形成することができ、システム全体のスケーラビリティの向上を図ることができると同時に、RAID機能として重要なパリティ生成をスイッチ部において処理することができる。更にドライブ障害時にもデータの復元処理をスイッチ部において行うことができる。ホスト接続制御部やドライブ制御部のプロセッサがすべての処理をしないので、性能向上がさせ易くなる。
【図面の簡単な説明】
【００５９】
【図１】本発明に係るストレージシステムをホスト計算機に接続したときのシステムの全体構成の例を示す図である。
【図２】本発明に係るストレージシステムの一実施例を示すブロック構成図である。
【図３】ストレージシステムで用いられるコマンドパケットの形式の例を示した図である。
【図４】ストレージシステムで用いられる他のコマンドパケットの形式の例を示した図である。
【図５】ホスト接続制御部のブロック構成図である。
【図６】ドライブ制御部のブロック構成図である。
【図７】スイッチ部の第１実施例を示すブロック構成図である。
【図８】行き先制御・アービトレーション制御部のブロック構成図である。
【図９】スイッチ部の第２実施例を示すブロック構成図である。
【図１０】仮想化変換制御・行き先制御・アービトレーション制御部のブロック構成図である。
【図１１】仮想化逆変換制御・行き先制御・アービトレーション制御部のブロック構成図である。
【図１２】スイッチ部による仮想化処理方法を説明するためのフローチャートである。
【図１３】仮想化マッピングテーブルの構成図である。
【図１４】スイッチ部の第３実施例を示すブロック構成図である。
【図１５】コヒーレンス制御・仮想化変換制御・行き先制御・アービトレーション制御部のブロック構成図である。
【図１６】仮想化逆変換制御・キャッシング記録制御・アービトレーション制御部のブロック構成図である。
【図１７】フロントサイド・キャッシング情報テーブルの構成図である。
【図１８】フロントサイド・キャッシング情報制御部のブロック構成図である。
【図１９】スイッチ部の第３実施例の作用を説明するためのフローチャートである。
【図２０】スイッチ部の第４実施例を示すブロック構成図である。
【図２１】ＲＡＩＤパリティ生成制御部のブロック構成図である。
【図２２】コレクションリード制御部のブロック構成図である。
【図２３】RAIDパリティ生成を全ストライプライトコマンドを用いて行うときの動作を説明するためのフローチャートである。
【図２４】RAIDパリティ生成をリードモディファイライトコマンドを用いて行うときの動作を説明するためのフローチャートである。
【図２５】コレクションリードコマンドによりデータの復元を行うときの動作を説明するためのフローチャートである。
【符号の説明】
【００６０】
10  ホスト接続制御部
11  4x4スイッチ部
12  ドライブ制御部
13  ディスクドライブ
110  プロトコルＩＦ制御部
111  受信バッファ
112  送信バッファ
113  行き先制御・アービトレーション制御部
【図１】
2007293738.tif 000003
【図２】
2007293738.tif 000004
【図３】
2007293738.tif 000005
【図４】
2007293738.tif 000006
【図５】
2007293738.tif 000007
【図６】
2007293738.tif 000008
【図７】
2007293738.tif 000009
【図８】
2007293738.tif 000010
【図９】
2007293738.tif 000011
【図１０】
2007293738.tif 000012
【図１１】
2007293738.tif 000013
【図１２】
2007293738.tif 000014
【図１３】
2007293738.tif 000015
【図１４】
2007293738.tif 000016
【図１５】
2007293738.tif 000017
【図１６】
2007293738.tif 000018
【図１７】
2007293738.tif 000019
【図１８】
2007293738.tif 000020
【図１９】
2007293738.tif 000021
【図２０】
2007293738.tif 000022
【図２１】
2007293738.tif 000023
【図２２】
2007293738.tif 000024
【図２３】
2007293738.tif 000025
【図２４】
2007293738.tif 000026
【図２５】
2007293738.tif 000027