(57)【要約】【課題】複数ストレージブレードで二重ライトを実施する場合、台数が多くなると主データ、副データのあるストレージブレードを検索するまでの時間がかかり、かつデータ書き込みが遅れるので信頼性が低下するのを改善する。【解決手段】データ用ネットワーク６１０を介してホストからストレージブレードＳＢ＃０に転送されたデータフレームが指示するデータアクセス要求に対して、該データアクセス要求に対応するデータがＳＢ＃０に無ければ、該データが有りそうなＳＢ＃２にデータフレームを転送し、ＳＢ＃２にも該データが無ければ、データフレーム内でカウントされている各ＳＢ間でのデータフレームの転送回数が各ＳＢに同じ値として設定されている転送回数のしきい値以上になっていれば、ＳＢ＃２は該データの有りそうな全てのＳＢにデータフレームをブロードキャストし、しきい値以上でなければ該データが有りそうなＳＢにデータフレームを転送する。【選択図】　　　　　　　図６
2004013246.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージブレードと、該複数のストレージブレードを相互接続しかつ上位装置と各ストレージブレードを接続する相互接続手段を備え、
前記各ストレージブレードは、ユーザデータまたは該ユーザデータの冗長データが格納されるＨＤＤと、該ＨＤＤの制御手段と、前記相互接続手段との間で入出力されるデータフレームの入出力ポートを有し、
前記制御手段は、前記入出力ポートから入力されたデータフレームが指示するデータアクセス要求に対して、該データアクセス要求に対応するデータが前記ＨＤＤに格納されているか否かを判断し、存在しない場合は、前記データアクセス要求に対応するデータが存在する可能性の高い他のストレージブレードに前記データフレームを転送する記憶装置であって、
前記データフレームに該データフレームがストレージブレード間で転送された転送回数をカウントする転送回数カウント領域を設け、前記各ストレージブレードに該転送回数のしきい値を設定し、
前記制御手段は、アクセス要求のあったデータが前記ＨＤＤに格納されていないと判断した場合、前記転送回数カウント領域の転送回数が前記転送回数のしきい値以上であれば、データの存在する可能性のある全てのストレージブレードに対して前記データフレームをブロードキャストすることを特徴とする多重書き込み型記憶装置。
【請求項２】
請求項１記載の多重書き込み型記憶装置において、
前記データフレーム内に前記ブロードキャストを行ったか否かを示すブロードキャスト有無領域を設けることを特徴とする多重書き込み型記憶装置。
【請求項３】
請求項１記載の多重書き込み型記憶装置において、
前記データフレーム内に該データフレームが通過したストレージブレードのＩＤを記録するＩＤ記録領域を設けることを特徴とする多重書き込み型記憶装置。
【請求項４】
請求項１記載の多重書き込み型記憶装置において、
前記制御手段は、転送されてきたデータフレームを他のストレージブレードに転送するとき、該データフレームの前記転送回数カウント領域の転送回数を加算することを特徴とする多重書き込み型記憶装置。
【請求項５】
請求項２に記載の多重書き込み型記憶装置において、
前記制御手段は、アクセス要求のあったデータが前記ＨＤＤに格納されていないと判断した場合、前記転送回数カウント領域の転送回数が前記転送回数のしきい値以上であれば、データの存在する可能性のある全てのストレージブレードに対して前記データフレームをブロードキャストし、前記データフレーム内の前記ブロードキャスト有無領域にフラグを立てることを特徴とする多重書き込み型記憶装置。
【請求項６】
請求項３に記載の多重書き込み型記憶装置において、
前記制御手段は、転送されてきたデータフレームを他のストレージブレードに転送するとき、自ストレージブレードのＩＤを該データフレームの前記ＩＤ記録領域に記録することを特徴とする多重書き込み型記憶装置。
【請求項７】
請求項１記載の多重書き込み型記憶装置において、
外部ネットワークを負荷分散装置を介して前記相互接続手段に接続し、前記上位装置を該外部ネットワークに接続することを特徴とする多重書き込み型記憶装置。
【請求項８】
請求項１記載の多重書き込み型記憶装置において、
前記各ストレージブレードを接続する第２の相互接続手段を備えることを特徴とする多重書き込み型記憶装置。
【請求項９】
請求項１記載の多重書き込み型記憶装置において、
前記各ストレージブレード内のＨＤＤに主データ領域と副データ領域を備えたことを特徴とする多重書き込み型記憶装置。
【請求項１０】
請求項１記載の多重書き込み型記憶装置において、
前記各ストレージブレードを接続する第２の相互接続手段を備え、前記各ストレージブレード内のＨＤＤに主データ領域と副データ領域を備え、
該第２の相互接続手段は、副データ領域に新冗長データを格納したストレージブレードが他のストレージブレードの副データ領域に格納されている旧冗長データを削除する指示を通知するためのみに使用することを特徴とする多重書き込み型記憶装置。
【請求項１１】
請求項１記載の多重書き込み型記憶装置において、
前記各ストレージブレードは、前記転送回数のしきい値を記憶するメモリを有し、外部入力に応じて該転送回数のしきい値を変更することを特徴とする多重書き込み型記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーバおよび記憶装置技術に関し、特に、複数のストレージブレードを構成要素として有し、早い応答性能、高いトランザクション数、及び高い信頼性が要求される記憶装置に関する。
【０００２】
【従来の技術】
ハードディスク（ＨＤＤ）の容量は毎年大きくなっており、それらを複数組み合わせてディスク装置を構成する場合、１台のＨＤＤ障害による被害は非常に大きくなってきている。そのため、単一のＨＤＤ障害等から各ユーザのデータを守り、低コストで高可用性を実現するシステムが要求されてきている。
従来のホストコンピュータ及び、ディスク装置においては、図１のような大型のディスクコントローラ２０が各ＨＤＤ３０、４０、５０、６０を集中制御している。
ホストコンピュータ１０より送られるライトデータ（ｄａｔａ　Ａ）７０は、２台のＨＤＤ３０、４０に二重ライトされ、片方のＨＤＤが故障した場合でも他方のＨＤＤをアクセスすることで高信頼性を保っている。
このようなデータの二重化を備えたディスク装置の技術については、特開平７−５６６８８号公報に開示された「データ記憶装置」等がある。
以上のように大型のディスクコントローラ２０を用いて集中制御を行う場合、ディスクコントローラは非常に高機能が要求され、システム全体のコストを上げることになる。
また、制御を単一のコントローラで行うため、性能のボトルネックになる可能性もある。
【０００３】
一方複数のＣＰＵで分散してディスク装置全体の制御行う方式が最近検討されている。
図２にその例として、ＨＤＤ内にＣＰＵとメモリ、さらにネットワークコントローラを備えたストレージブレード（ＳＢ）を示す。
ここでは図１におけるディスクコントローラ２０、ＨＤＤ３０、４０、５０、６０は存在せず、そのかわりにＳＢ１００、１１０、１２０，１３０がネットワーク１５０に直接接続されている。
ＳＢ１００は、サーバコントローラ２００とＨＤＤコントローラ２５０を内部に備え、それぞれネットワーク、サーバ処理とＨＤＤの処理を行っている。サーバコントローラ２００はネットワークとの間で信号を入出力するための入出力ポートを有する。
サーバコントローラ２００の内部は、通常のサーバと同等のハードを備えており、組み込みプロセッサ２３０、メモリ２２０がブリッジ２２５で接続されている。
またＨＤＤと通信するためのＩ／Ｏインターフェィス２１０と、ネットワーク１５０と通信するためのネットワークコントローラが、パスを通じてブリッジ２２５に接続されている。
ＨＤＤコントローラ２５０は、通常の磁気ディスクを制御するためのハードウエア等からなり、磁気メディア２６０、磁気ヘッド２７０の制御、データのリード／ライトを行う。
このＳＢを複数並べて制御を分散して行うことにより、図１のディスク装置を置き換えることができる。
【０００４】
ホストコンピュータ１０は、ディスク装置にアクセスする場合、各ＳＢの中の適当な１個に対してコマンド、データを送信する。なお、以後の記載において、ＳＢに送信する「コマンド、データ」のことを「Ｉ／Ｏ」とも記載する。
もし受信したＳＢにデータがあればそのＳＢが直接応答するが、データがない場合には受信したＳＢ内の情報を用いて他のデータがありそうなＳＢにコマンド、データを転送する。
図２の場合、ホストコンピュータ１０はＳＢ＃０にコマンド、データを送信しているが、ＳＢ＃０（１００）にはデータがないので、ＳＢ＃１（１１０）、ＳＢ＃３（１３０）と検索を行っている。
図２のディスク装置の場合、分散制御を行うので、１個のＣＰＵ、メモリにそれほど性能、容量が必要なくディスク装置全体のコストを下げることが可能になる、また制御を分散することにより、性能のボトルネックを低下することも可能となる。
【０００５】
図３にストレージブレードのディレクトリ構造例を示す。
ここで、ディスク装置全体のディレクトリ構造はｒｏｏｔ（３００）からファイル情報例３４９までのバイナリツリー構造をしている。
しかし、すべてのＳＢに同じ情報を格納することはディレクトリの更新等を考えると最適とはいえない。
そこでディレクトリの部分を各ＳＢで分担して格納する分散ディレクトリが最適であると考えられている。
図３では例えば、ＳＢ＃０（１００）にはｒｏｏｔ（３００）、節ｄ＃０（３１３）、ファイル情報を格納しているファイル０（３１５）を含んだＳＢ＃０ディレクトリ３１０をサーバコントローラ２００内のメモリ２２０に格納している。
ＳＢ＃１（１１０）にはＳＢ＃１ディレクトリ３２０、ＳＢ＃２（１２０）にはＳＢ＃２ディレクトリ３３０、ＳＢ＃３（１１０）にはＳＢ＃３ディレクトリ３４０が各々格納されている。
このディレクトリ構造で二重化データを管理する場合はファイル情報の中に記述することになる。
例えば、ファイル３（３４５）に主データが、ファイル２（３２７）に副データが存在する場合ファイル３のファイル情報３４９にはファイル３が主データであること、副データがＳＢ＃１（１１０）のファイル２にあることが記述され、ファイル２のファイル情報３２９にはファイル２が副ファイルであること、主データがＳＢ＃３（１３０）のファイル３にあることが記述されている。
これらの情報を検索することにより、二重データのリード、ライトを分散制御することが可能になる。
以上のようなストレージブレード（ＳＢ）を用いたディスク装置、及び二重化の技術については、電気情報通信学会技術研究報告、信学技報Ｖｏｌ．１０１　　Ｎｏ．３３９に開示された「自律ディスクのオンラインクラスタ再構築の評価」等がある。
【０００６】
【発明が解決しようとする課題】
以上に述べたように、ストレージブレード（ＳＢ）と分散ディレクトリを用いることにより、ディスク装置の制御を分散して行うことが可能となった。
しかしディレクトリを分散した場合、目的のＳＢを検索するために何回もＳＢをアクセスする可能性がある。
特にＳＢ数が多くなった場合この傾向が大きくなり、性能低下につながる。さらに２重ライトを行う場合さらに検索回数が多くなり、性能低下が起こる。
図４にこの例を示す。
主データはＳＢ＃３（１３０）にあり、副データはＳＢ＃１（１１０）にある。
このときホストコンピュータ１０がこのデータをアクセスするために最初にＳＢ＃０（１００）にアクセスする（▲１▼）。
しかし、このデータはＳＢ＃０（１００）にはないので、図３に示したＳＢ＃０ディレクトリ３１０を参照して次のデータが存在しそうなＳＢを選択する。
この例では、ＳＢを特定するための情報がＳＢ＃０ディレクトリ３１０から得られないため、とりあえずＳＢ＃２にアクセスする（▲２▼）。
しかし、同様にこのデータは存在しないことがわかる。
次にＳＢ＃３（１３０）にアクセスする（▲３▼）。
ここでＳＢ＃３ディレクトリ（３４０）により初めて主データがファイル３（３４５）にあることを検索することができ、同時に副データがＳＢ＃１のファイル２（３２７）にあることもわかる（▲４▼、▲５▼）。
なお、図４の下部に示す図は、各ＳＢにおける処理とその処理時間の関係を示す。
以上のようにアクセス回数は５回にわたり、処理時間が長くなるので性能低下を起こす。
また、データの実際のライトも３回のアクセス後にはじめて行われるので、その途中で障害が発生した場合にデータが損失する可能性が高い。
本発明の主たる目的は、複数のストレージブレードでディスク装置を構成し、データの多重化を行う場合に、主データ、副データの検索回数を削減し、性能低下を抑制する技術を提供することにある。
本発明のさらに別の目的は、複数のストレージブレードでディスク装置を構成し、データの多重化ライトを行う際にデータのライトを処理の早い段階で終了することにより、ディスク装置の信頼性を向上する技術を提供することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明は、複数のストレージブレードと、該複数のストレージブレードを相互接続しかつ上位装置と各ストレージブレードを接続する相互接続手段を備え、
前記各ストレージブレードは、ユーザデータまたは該ユーザデータの冗長データが格納されるＨＤＤと、該ＨＤＤの制御手段と、前記相互接続手段との間で入出力されるデータフレームの入出力ポートを有し、
前記制御手段は、前記入出力ポートから入力されたデータフレームが指示するデータアクセス要求に対して、該データアクセス要求に対応するデータが前記ＨＤＤに格納されているか否かを判断し、存在しない場合は、前記データアクセス要求に対応するデータが存在する可能性の高い他のストレージブレードに前記データフレームを転送する記憶装置であり、
前記データフレームに該データフレームがストレージブレード間で転送された転送回数をカウントする転送回数カウント領域を設け、前記各ストレージブレードに該転送回数のしきい値を設定し、
前記制御手段は、アクセス要求のあったデータが前記ＨＤＤに格納されていないと判断した場合、前記転送回数カウント領域の転送回数が前記転送回数のしきい値以上であれば、データの存在する可能性のある全てのストレージブレードに対して前記データフレームをブロードキャストするようにしている。
【０００８】
【発明の実施の形態】
《実施例１》
以下、本発明に係る実施例１を図面に示しさらに詳細に説明する。
図５は本発明の実施例１におけるデータフレーム構造例を示す。
データフレーム構造例５００（ＳＢ＃０送信前）についてはＩＰ、ＵＤＰのプロトコルを参考にしたものである。
ローカルネットワークヘッダ５０５には、ＬＡＮ通信に必要なアドレス、データ長等の制御情報が格納されている。
ＩＰヘッダ５１０にはＩＰを使った通信に必要なアドレス、データ長等の制御情報が格納されている。
ＵＤＰヘッダ５１５にはＵＤＰを使った通信に必要なアドレス、データ長等の制御情報が格納されている。
ここで取り上げた以外のプロトコルを使っても本発明の範囲であることは自明である。
５２０はメッセージであり、リード、ライトのコマンドまたはデータ等が格納される。
５２５はストレージブレードホップ数であり、ストレージブレードにこのデータフレーム構造例５００が送信され検索が行われるたびにサーバコントローラ５６５、５８５等で１加算される。
５２７はホップ履歴であり、ストレージブレードを通過するたびにそのＩＤを記録する。
たとえば、データフレーム構造例５００がストレージブレード（ＳＢ♯０）に送信され、そこにデータが検索できなかった場合、ストレージブレード（ＳＢ♯０）のサーバコントローラは、次のストレージブレード（ＳＢ♯１）に検索を依頼する前にストレージブレードホップ数５２５を１加算してデータフレーム構造例５０１（ＳＢ＃０送信後）のストレージブレードホップ数５２６のようにする。
また、ホップ履歴５２７に通過したストレージブレード（ＳＢ♯０）のＩＤをホップ履歴５２８のように記録する。
５３０は、ブロードキャストを示すフラグであり、通常の検索時にはこのフラグはＯＦＦであるが、通常の検索をあきらめて残りのストレージブレードに対して一斉にこのデータフレーム構造例５００を送信する、すなわちブロードキャストする、際にこのフラグがＯＮになる。
５３５は、ローカルネットワークトレイラであり、データのエラーチェックのコード、データの終端のコード等が記述されている。
ストレージブレード（ＳＢ♯０）５６０、（ＳＢ♯１）５８０にはストレージブレードホップ数の上限を決めるためのホップしきい値５６６、５８６を持つ。
５６７、５８７はこのシステム内に存在するストレージブレードのＩＤ（システム内ＳＢＩＤ）を登録するテーブルであり、ブロードキャストを行う際に参照する。
【０００９】
このデータフレーム構造例５００がＳＢ♯０、ＳＢ♯２に送信されると、サーバコントローラ５６５、５８５は、データが存在しなかった場合、ストレージブレードホップ数５２５とサーバコントローラ５６５、５８５内にあらかじめ設定してあるホップしきい値５６６、５８６を比較し、ストレージブレードホップ数５２５がしきい値以上になった場合は、これ以上検索を続行することは中止する。
そして、ホップ履歴５２８に記載されていない残りのストレージブレードをシステム内ＳＢ　ＩＢ（５８７）を参照しながら、それらに対して一斉にこのデータフレーム構造例５００を送信する。
なお、ホップしきい値５６６、５８６は外部インターフェイスを通じて、ユーザがディスク装置の負荷等に応じてその値を変更することが可能である。
【００１０】
図６は本発明の実施例１における二重ライト例を示す。
ホストコンピュータ１０よりコマンド、データは、外部ネットワーク６００を通じて負荷分散装置６３０に送信される。
負荷分散装置６３０はＳＢ＃０（５６０）、ＳＢ＃１（５７０）、ＳＢ＃２（５８０）、ＳＢ＃３（５９０）の負荷が均等になるようにコマンド、データを送信する（▲１▼）。
次に、この例ではＳＢ＃０（５６０）にはデータが存在しなかったので、しきい値に達していなければストレージブレードホップ数５２５を加算した後ＳＢ＃２（５８０）で検索を続ける（▲２▼）。
ＳＢ＃２（５８０）でデータが存在しなかった場合、図４のような従来例では次の候補を検索するために次のＳＢ＃３（５９０）にコマンド、データを送信するが、本発明では、ストレージブレードホップ数５２５がホップしきい値５８６以上になったので、残りのＳＢ＃１（５７０）、ＳＢ＃３（５９０）に対してデータの存在を確定するために、コマンド、データをブロードキャストにて送信する（▲３▼）。
このブロードキャストのコマンド、データの送信は、データ用ネットワーク６１０でも制御用ネットワーク６２０のどちらか負荷の低い方を用いて行われる。次に、ブロードキャストのコマンド、データが、ＳＢ＃１（５７０）、ＳＢ＃３（５９０）で同時に実行されるので、二重ライトの主データ、副データが同時に検索、ライトが実行できる。
最後に副データのライトの終了後、ＳＢ＃１（５７０）からＳＢ＃３（５９０）へ終了報告が制御用ネットワーク６２０を通して行われて、二重ライトが完了する（▲４▼）。
なお、図６の下部に示す図は、各ＳＢにおける処理とその処理時間の関係を示す。
以上のように図６の二重ライトの場合、図４の従来例に比較して、２回あるライトが同時に処理できる分処理時間の短縮が可能になる。
【００１１】
図７に本発明の実施例１におけるＩ／Ｏ処理のフローチャートを示す。
始めに各ストレージブレードがホストコンピュータ１０または他のストレージブレードからのＩ／Ｏを受信する（７００）。
次に、ホストから来たＩ／Ｏであるかをチェックする（７０５）。
ホストコンピュータ１０から来たＩ／Ｏの場合には、ストレージブレードホップ数を０にリセットする（７０５）。
次に、Ｉ／Ｏに関して自ストレージブレード（ＳＢ）内のディレクトリを検索する（７１５）。
もしデータがＨＤＤ内にあった場合には（７２０）、すぐに主データ、副データにアクセスすることが可能なので、二重リード、二重ライト動作の実行を行う（７５５）。この動作については図８で詳細を説明する
もしデータがＨＤＤ内で見つからない場合には（７２０）、他のＳＢに検索を、通常またはブロードキャストを用いて行う。
これを以下ブロードキャスト処理（７２５〜７５０）と呼ぶことにする（７７０）。
【００１２】
ブロードキャスト処理（７７０）では、始めにブロードキャストがすでに発行されているかどうかをチェックする（７２５）。これは、図５のデータフレーム構造例におけるブロードキャストのフラグをチェックし、ＯＮになっていればブロードキャストがすでに発行されていると判定する。
発行されている場合には、後なにもする必要がないので、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（７６０）。
発行されていない場合は次にストレージブレードホップ数がしきい値以上になっているかどうかのチェックを行う（７３０）。
しきい値以上になっている場合、通常の検索は中止して、ブロードキャストを実行する必要があるので、まず、ブロードキャストのフラグをＯＮにする（７３５）。
次に、すでに絞られた候補のＳＢ（すなわち、ホップ履歴に記述されていないＳＢ）のすべてに対して、コマンド、データの検索、実行をブロードキャストして（７３６）、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（７６０）。
もし、しきい値以上になっていない場合、通常の検索を続行する必要があるので、始めにストレージブレードホップ数を加算する（７４０）。
次に、ディレクトリ情報から次の検索候補のＳＢを選択する（７４５）。
最後にその候補に対して、コマンド、データの検索、実行を送信して（７５０）、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（７６０）。
【００１３】
図８に本発明の実施例１における二重リードまたは二重ライトのフローチャートを示す。
まず、二重リードまたは二重ライト動作の実行が開始される（８００）。
次に、リード処理かライト処理かを判定する（８０５）。
もしリード処理ならば、次にＨＤＤ内のデータは主データかどうかを判定する（８１０）。
副データは障害発生時以外は使わないので、データのリードは行ず二重リードまたは二重ライト動作を終了する（８４０）。
もし主データならば、ＨＤＤよりデータのリードを行い（８１５）、データをホストコンピュータに転送する。
その後二重リードまたは二重ライト動作を終了する（８４０）。
【００１４】
もしライト処理ならば、ＨＤＤにデータのライトを行う（８２５）。
次に、ブロードキャストがＯＮになっているかどうか判定する（８３０）。
ＯＦＦならば、２重ライトを実施するためにブロードキャストのフラグをＯＮにして（８５０）、次に主データまたは副データのあるＳＢに対してＩ／Ｏを発行する（８５５）。
もしブロードキャストがＯＮになっている場合には、すでに主データ、副データのどちらかは他のＳＢにライトされているので、次に主データか副データを判定する（８３５）。
副データの場合には、主データの格納してあるＳＢに処理終了報告を出す（８４０）。この終了報告も制御用ネットワーク６２０を用いて送信する。次に副データの格納しているＳＢからの応答を待つが（８４５）、これは自分自身なので結局なにも待たずに二重リードまたは二重ライト動作を終了する（８４０）。
主データの場合には、副データのあるＳＢからの応答を待ち（８４５）、応答の到着後に二重リードまたは二重ライト動作を終了する（８４０）。
以上に示したように、データの検索回数の増加をしきい値で制限しているので、二重リードまたは二重ライトの処理時間の短縮をはかることが可能になる。
【００１５】
《実施例２》
以下、本発明に係る実施例２を図面に示しさらに詳細に説明する。
図９に本発明の実施例２における二重ライト例を示す。
各ＳＢ＃０（５６０）、ＳＢ＃１（５７０）、ＳＢ＃２（５８０）、ＳＢ＃３（５９０）には主データ領域と、副データ領域が用意されている。
主データ領域にはリード時にアクセスするデータが存在し、そのＳＢ番号、アドレスは固定されている。
副データ領域には主データのコピーが存在するが、必ず他のＳＢの主データのコピーであり、かつそのＳＢ番号、アドレスは固定されてなく、空いた領域に追加ライトする方式をとる。
空いた領域が少なくなった場合は、領域内の要らないデータを削除することにより領域を確保する。
副データ領域の管理も主データと同様にディレクトリを用いる。
【００１６】
ホストコンピュータ１０よりライトコマンド、データは外部ネットワーク６００を通じて負荷分散装置６３０に送信される。
負荷分散装置６３０はＳＢ＃０（５６０）、ＳＢ＃１（５７０）、ＳＢ＃２（５８０）、ＳＢ＃３（５９０）の負荷が均等になるようにライトコマンド、データを送信する（▲１▼）。
次にこの例ではＳＢ＃０（５６０）にはこのデータが存在しなかったので、しきい値に達していなければストレージブレードホップ数５２５を加算した後ＳＢ＃２（５８０）で検索を続ける（▲２▼）。
同時にＳＢ＃０（５６０）の副データ領域に、このデータ（ｎｅｗ＿ｄａｔａ　Ａ）を追加ライトする。
これにより主データを検索している間に副データのライトを完了することができる。
ＳＢ＃２（５８０）でこのデータが存在しなかった場合に、ストレージブレードホップ数５２５がホップしきい値５８６以上になったので、残りのＳＢ＃１（５７０）、ＳＢ＃３（５９０）に対してデータの存在を確定するために、コマンド、データをブロードキャストにて送信する（▲３▼）。この結果、ＳＢ＃３にこのデータが存在するため、ｎｅｗ＿ｄａｔａ　ＡをＳＢ＃３の主データ領域に書き込み、ｏｌｄ＿ｄａｔａ　Ａをｎｅｗ＿ｄａｔａ　Ａに更新する。
このブロードキャストのコマンド、データの送信はデータ用ネットワーク６１０でも制御用ネットワーク６２０のどちらか負荷の低い方を用いて行われる。
同時期にＳＢ＃０（５６０）は、以前この副データがあったＳＢに対してそのデータの消去をする必要があるため、制御用ネットワーク６２０を用いて該当副データ（ｏｌｄ＿ｄａｔａ　Ａ）を消去するように、ＳＢ＃１（５７０）、ＳＢ＃２（５８０）、ＳＢ＃３（５９０）に対してブロードキャストする（▲４▼）。
該当副データ（ｏｌｄ＿ｄａｔａ　Ａ）を格納するＳＢ＃１（５７０）は、副データの消去を行う。
なお、図９の下部に示す図は、各ＳＢにおける処理とその処理時間の関係を示す。
以上のように、図９の二重ライトの場合、図４の従来例、図６の実施例１に比較して、副データのライトを先行処理できるので処理時間の短縮が可能になり、主データまたは副データのどちらかに対する実際のＨＤＤにライトが早期に行われるので、処理中の障害に対してデータの保護が可能になる。
【００１７】
図１０に本発明の実施例２におけるＩ／Ｏ処理のフローチャートを示す。
まず、ストレージブレード（ＳＢ）がＩ／Ｏを受信する（８００）。
次にライトまたはブロードキャストの判別を行う（１００５）。
ライトまたはブロードキャスト以外ならば、二重リードまたは二重ライト動作の実行を行う（７５５）。二重リードまたは二重ライト動作の実行は、図７に示したものと同じであり、その詳細は図８を用いて説明したとおりである。
ただし、ここでは実際に行うのは二重リードのみである。
ライトまたはブロードキャストならばＩ／Ｏに関して自ストレージブレード（ＳＢ）内のディレクトリを検索する（１０１０）。
次にデータがＨＤＤ内に存在するかどうか判定する（１０１５）。
【００１８】
データがＨＤＤ内に存在しなければ、次にホストから来たＩ／Ｏかどうか判定する。
ホストから来たＩ／Ｏならば、自ＨＤＤ内にデータが無くても自ＳＢ内の副データ領域にライトする（１０２５）。
次に、主データを検索するためのブロードキャスト処理を実行する（７７０）。このブロードキャスト処理は図７に示したブロードキャスト処理と同じである。
最後に他のＳＢの副データ領域にある該当する旧データを消去するためのブロードキャストを各ＳＢに対して発行して（１０３０）、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（１０７０）。
ホストから来たＩ／Ｏでないならば、自ＳＢで行うことはないので、主データを検索するためのブロードキャスト処理を実行し（７７０）、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（１０７０）。
【００１９】
データがＨＤＤ内に存在した場合も、まず、ホストから来たＩ／Ｏかどうか判定する（１０４０）。
ホストから来たＩ／Ｏならば、自ＳＢ内にすでに主データまたは副データが存在し、一般の二重ライトを実行するだけで十分なので二重リードまたは二重ライト動作の実行を行う（７５５）。
ホストから来たＩ／Ｏでないならば、主データのライトか、副データの消去かの判定を行う（１０４５）。
副データの消去ならば、自ＳＢの該当旧副データを消去し（１０６０）、Ｉ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（１０７０）。
主データのライトならば、自ＳＢ内の主データ領域にライト（１０５０）する。次に旧副データ消去のブロードキャストの通知を受けて（１０５５）、最後にＩ／Ｏを受信したＳＢにおけるＩ／Ｏ処理を終了する（１０７０）。
以上に示したように、最初に受信したＳＢで先行して副データをライトするので、二重ライトの処理時間の短縮、データライトの早期確定が可能になる。
【００２０】
【発明の効果】
以上説明したように、本発明では、主データ、副データの検索回数がしきい値を超えた場合それ以上検索を行わないために、二重リード、ライト処理時間が短縮し、性能が向上する。
また、さらに初めにライト命令を受けたストレージブレードに先にデータが格納されるために処理時間の短縮と、処理途中の障害に対するデータ損失が低下するので、性能と信頼性の両方の向上が図れる。
【図面の簡単な説明】
【図１】従来の多重記憶装置の構成を示す図である。
【図２】ストレージブレードの構成を示す図である。
【図３】ストレージブレードのディレクトリ構造例を示す図である。
【図４】従来のストレージブレード型多重記憶装置における二重ライト例を説明するための図である。
【図５】本発明の実施例１におけるデータフレーム構造例を示す図である。
【図６】本発明の実施例１における二重ライト例を説明するための図である。
【図７】本発明の実施例１におけるＩ／Ｏ処理のフローチャートを示す図である。
【図８】本発明の実施例１における二重リードまたは二重ライトのフローチャートを示す図である。
【図９】本発明の実施例２における二重ライト例を説明するための図である。
【図１０】本発明の実施例２におけるＩ／Ｏ処理のフローチャートを示す図である。
【符号の説明】
１０　ホストコンピュータ
５６０〜５９０、９００〜９１５　ストレージブレード
６００　外部ネットワーク
６１０　データ用ネットワーク
６２０　制御用ネットワーク
６３０　負荷分散装置
【図１】
2004013246.tif 000003
【図２】
2004013246.tif 000004
【図３】
2004013246.tif 000005
【図４】
2004013246.tif 000006
【図５】
2004013246.tif 000007
【図６】
2004013246.tif 000008
【図７】
2004013246.tif 000009
【図８】
2004013246.tif 000010
【図９】
2004013246.tif 000011
【図１０】
2004013246.tif 000012