(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、ネットワークを介して他のストレージ装置と接続されると共に、上記ホスト計算機と接続される複数のストレージ装置とを備え、
上記ストレージ装置は、データを記録する記憶装置と、上記ネットワークに接続されるネットワークインタフェースと、上記ホスト計算機に接続されるホストインターフェースと、上記記憶装置を制御するストレージコントローラとを有し、
上記ネットワークインタフェースは、上記他のストレージ装置との通信コネクションの制御を行うプロセッサと、上記他のストレージ装置へ転送したデータを論理ユニット番号と論理アドレスにより管理するローカル管理テーブル、および上記他のストレージ装置から転送されたデータを管理するためのリモート管理テーブルを持つメモリと、上記他のストレージ装置にデータを送信するフレーム送信部とを有し、
上記フレーム送信部は、上記他のストレージ装置との通信コネクション毎に分けられたデータフレーム送信用の複数のデータ入力バッファを有し、
上記プロセッサは、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在しない場合、上記複数のデータ入力バッファの空き状態に基づいて、総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択し、
上記ホスト計算機からデータを受信した送信元のストレージ装置は、データを送信する送信先のストレージ装置に対して、書込みコマンドフレームを送信し、
書込みフレームコマンドを受信した送信先のストレージ装置は、キャッシュメモリにデータ受信に必要なバッファ容量を確保し、転送レディフレームを送信元のストレージ装置に返信し、
転送レディフレームコマンドを受信した送信元のストレージ装置は、上記ホストインターフェースから指示されたキャッシュメモリのデータ書込みアドレスから書込みデータを選択したデータ入力バッファに転送することにより、送信先のストレージ装置に転送する
ことを特徴とする分散ストレージシステム。
【請求項２】
上記プロセッサは、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在する場合、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファを選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項１記載の分散ストレージシステム。
【請求項３】
上記プロセッサは、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファが使用できない場合、上記データ入力バッファの空き状態に基づいて、上記総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項２記載の分散ストレージシステム。
【請求項４】
複数の上記ホスト計算機を備え、
上記複数のホスト計算機はそれぞれ、上記複数のストレージ装置のうちいずれかと上記ネットワークを介さずに接続されていることで組をなしており、
上記ストレージ装置は、
上記組をなすホスト計算機に接続されるホストインターフェイスを有する
ことを特徴とする請求項１記載の分散ストレージシステム。
【請求項５】
上記フレーム送信部は、さらに、制御用フレーム送信用のコマンド入力バッファを有する
ことを特徴とする請求項１記載の分散ストレージシステム。
【請求項６】
ホスト計算機と接続されると共に、ネットワークを介して他のストレージ装置と接続され、該他のストレージ装置と互いにアクセス可能なストレージ装置であって、
データを記録する記憶装置と、上記ネットワークに接続されるネットワークインタフェースと、上記ホスト計算機に接続されるホストインターフェースと、上記記憶装置を制御するストレージコントローラとを有し、
上記ネットワークインタフェースは、上記ネットワークを介して接続される他のストレージ装置との通信コネクションの制御を行うプロセッサと、上記他のストレージ装置へ転送したデータを論理ユニット番号と論理アドレスにより管理するローカル管理テーブル、および上記他のストレージ装置から転送されたデータを管理するためのリモート管理テーブルを持つメモリと、上記他のストレージ装置にデータを送信するフレーム送信部とを有し、
上記フレーム送信部は、上記他のストレージ装置との通信コネクション毎に分けられたデータフレーム送信用の複数のデータ入力バッファを有し、
上記プロセッサは、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在しない場合、上記複数のデータ入力バッファの空き状態に基づいて、総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択し、
上記ストレージ装置は、データを送信する送信先のストレージ装置に対して、書込みコマンドフレームを送信し、送信先のストレージ装置から転送レディフレームコマンドを受信すると、上記ホストインターフェースから指示されたキャッシュメモリのデータ書込みアドレスから書込みデータを選択したデータ入力バッファに転送することにより、送信先のストレージ装置に転送する
ことを特徴とするストレージ装置。
【請求項７】
上記プロセッサは、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在する場合、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファを選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項６記載のストレージ装置。
【請求項８】
上記プロセッサは、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファが使用できない場合、上記データ入力バッファの空き状態に基づいて、上記総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項７記載のストレージ装置。
【請求項９】
上記フレーム送信部は、さらに、制御用フレーム送信用のコマンド入力バッファを有する
ことを特徴とする請求項６記載のストレージ装置。
【請求項１０】
ホスト計算機と接続されると共に、ネットワークを介して複数のストレージ装置を互いに接続し、該複数のストレージ装置のうちのあるストレージ装置のデータのコピーを、該複数のストレージ装置のうちの他の複数のストレージ装置に作成するデータのコピー方法であって、
上記ストレージ装置は、データを記録する記憶装置と、上記ネットワークに接続されるネットワークインタフェースと、上記ホスト計算機に接続されるホストインターフェースと、上記記憶装置を制御するストレージコントローラとを有し、上記ネットワークインタフェースは、上記ネットワークを介して接続される他のストレージ装置との通信コネクションの制御を行うプロセッサと、上記他のストレージ装置へ転送したデータを論理ユニット番号と論理アドレスにより管理するローカル管理テーブル、および上記他のストレージ装置から転送されたデータを管理するためのリモート管理テーブルを持つメモリと、上記他のストレージ装置にデータを送信するフレーム送信部とを有し、上記フレーム送信部は、上記他のストレージ装置との通信コネクション毎に分けられたデータフレーム送信用の複数のデータ入力バッファを有するものであって、
上記プロセッサが、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在しない場合、上記複数のデータ入力バッファの空き状態に基づいて、総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する第１のステップと、
上記ホスト計算機からデータを受信した送信元のストレージ装置が、データを送信する送信先のストレージ装置に対して、書込みコマンドフレームを送信する第２のステップと、
書込みフレームコマンドを受信した送信先のストレージ装置が、キャッシュメモリにデータ受信に必要なバッファ容量を確保し、転送レディフレームを送信元のストレージ装置に返信する第３のステップと、
転送レディフレームコマンドを受信した送信元のストレージ装置が、上記ホストインターフェースから指示されたキャッシュメモリのデータ書込みアドレスから書込みデータを選択したデータ入力バッファに転送することにより、送信先のストレージ装置に転送する第４のステップと
を備えることを特徴とするデータのコピー方法。
【請求項１１】
上記プロセッサが、上記ローカル管理テーブルに上記ホスト計算機から送信されるデータと同一の上記論理ユニット番号と論理アドレスを持つエントリが存在する場合、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファを選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項１０記載のデータのコピー方法。
【請求項１２】
上記プロセッサが、上記エントリに記載されたストレージ装置に対応する上記データ入力バッファが使用できない場合、上記データ入力バッファの空き状態に基づいて、上記総データ転送量の少ないデータ入力バッファを、送信を行うデータ入力バッファとして優先的に選択することにより、上記ホスト計算機から送信されるデータのコピーを書き込むストレージ装置を選択する
ことを特徴とする請求項１１記載のデータのコピー方法。
【請求項１３】
上記フレーム送信部が、さらに、制御用フレーム送信用のコマンド入力バッファを有する
ことを特徴とする請求項１０記載のデータのコピー方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ記憶装置、特に、分散ストレージ装置及びそれを用いたシステムに係わる。
【０００２】
【従来の技術】
電子商取引システムやデータセンタの構築が本格化するなか、地震、火事、あるいは停電など地域的な災害に対しても、顧客情報や商用コンテンツなどの重要データを保護できるシステムが求められている。
【０００３】
従来、データの保護方法としては、RAID(Redundant Array of Independent Disks)、あるいはリモートコピーと呼ばれる方法などが用いられている。RAIDは、RAID-0からRAID-5に分類されるが、ディスク障害時のデータ保護のため、現在、主に用いられているのはRAID-1とRAID-5である。
【０００４】
RAID-1は、現用と予備の２個のディスクに全く同じデータを書き込む方法であり、現用ディスクが故障しても、予備ディスクに現用ディスクと全く同じデータが記録されているため、データの消失を防止できる。
RAID-5は、ブロック単位に分割した記録データおよび記録データのパリティを複数のディスクに分散して記録する方法である。
【０００５】
RAID-5では、RAIDを構成するディスクの一個に障害が発生した場合、残りの正常なディスクに記録されたデータおよびデータのパリティから、記録データを復元できる。また、RAID-5では、データを分散記録する複数のディスクに並列に書込み/読出しが可能であるため、ディスクが１個の場合と比較して高速なディスクアクセスが可能となる。
【０００６】
リモートコピーとは、ネットワークを用いて、物理的に離れた場所にデータのレプリカを作成する方法である。リモートコピーには、サーバ同士をネットワークで接続する構成、およびストレージ・サブシステム同士をネットワークで接続する構成などがある。リモートコピーに用いられるネットワークとしては、主に通信品質が保証される専用線などが用いられている。
【０００７】
【発明が解決しようとする課題】
RAIDは、データ保護のために広く用いられている方法であるが、この方法はサーバ付属のディスク間、またはSAN(Strage Area Network)を介してサーバと接続されるストレージ・サブシステム内部でのデータ保護手段であるため、地域的な災害に対してのデータ保護を行うことはできない。地域的な災害を避けるためのリモートコピーには、一般に専用線が用いられるが、専用線の通信コストは高く、大容量のデータのバックアップには、多くのコストが必要となる。
【０００８】
リモートコピーにインターネットのような安価なネットワークを用いることも可能であるが、このような通信品質が保証されないネットワークを用いる場合、通信品質悪化（通信速度低下）によりバックアップが阻害されるのを防止する手段が必要となる。
【０００９】
【課題を解決するための手段】
本発明では、３個以上のストレージデバイスをネットワーク経由で相互接続し、１個のコピー元ストレージデバイスから複数のコピー先ストレージデバイスに対し、並列にバックアップデータを転送することで、高速なデータのバックアップを実現する。
【００１０】
また、コピー元ストレージデバイスから各コピー先ストレージデバイスへのデータ転送量を、コピー元ストレージデバイスから各コピー先ストレージデバイスへの通信コネクションの状態によって動的に変化させることで、通信品質が時々刻々と変化する安価なネットワークにおいて、特定の通信コネクションの通信状態悪化により、データのバックアップが阻害されるのを防止することができる。また、通信速度の保証される専用線においては、さらに高速なバックアップが可能となるであろう。
【００１１】
さらに、コピー元のストレージデバイスに障害が発生した場合には、複数のバックアップ先ストレージデバイスからデータを並列に読み出すことで、高速なデータ復旧が可能となる。
【００１２】
具体的には、本願発明はネットワークを介して複数のストレージ装置を互いに接続し、あるストレージ装置のデータのコピーを、他の複数のストレージ装置に作成するデータのコピー方法であって、ネットワークの通信コネクションの状態に応じて、あるストレージ装置からコピーを作成するためにアクセスするストレージ装置を動的に選択する。このとき、ネットワークの状態を監視するパケットを用いて、ネットワークの通信コネクションの状態を識別することができる。また、ストレージ装置は、他のストレージ装置との通信コネクション毎に分けられたデータフレーム送信用のデータ入力バッファを有し、データ入力バッファの状態に基づいて、ネットワークの通信コネクションの状態を識別することができる。具体的には、空きのおおいバッファに優先的にデータを送る、送出レートの大きいバッファに優先的にデータを送るなど様々な態様が考えられる。
【００１３】
さらに、本願発明のシステムでは、ネットワークを介してホスト計算機と複数のストレージ装置を接続してなる分散ストレージシステムにおいて、ネットワークの通信コネクションの状態に応じて、ホストからアクセスするストレージ装置を動的に選択する。
また、本願発明のストレージ装置は、ネットワークを介して他のストレージ装置と接続され、互いにアクセス可能なストレージ装置であって、ネットワークの通信コネクションの状態に応じて、アクセスする他のストレージ装置を動的に選択する。
【００１４】
【発明実施の形態】
以下、図を用いて本発明の実施例を説明する。
【００１５】
図１は本発明に係わる分散ストレージシステムの全体構成図である。
【００１６】
ネットワーク４を介して相互に接続された３個のストレージデバイス１〜３、および各ストレージデバイス１〜３と接続される４個のホスト計算機５〜８から構成される分散ストレージシステムの例である。各ストレージデバイス１〜３とホスト計算機５〜８は、例えば、ケーブルあるいは光ファイバーで直接接続することも、あるいはSANを介して接続することも可能である。また、ストレージデバイス１〜３をホスト計算機５〜８に内蔵し、ホスト計算機５〜８とストレージデバイス１〜３を内部バスで接続する構成も可能である。
【００１７】
図２にストレージデバイス１の構成例を示す。ここで、ストレージデバイス２、３の構成は、ストレージデバイス１と同様でよい。ストレージデバイス１は、ストレージ制御装置９およびストレージ装置１０から構成されている。ストレージ制御装置９とストレージ装置１０は、データ転送バス１１を介して接続される。
ストレージデバイス１は、２個のホストインタフェース１２−１，１２−２を介して、ホスト計算機５、６とそれぞれ接続され、また、２個のストレージコントローラ１３−１，１３−２を介して、ストレージ装置１０と接続される。ストレージデバイス１は、ネットワークインタフェース１４を介して、ネットワーク４経由で、他のストレージデバイス２、３と相互接続される。キャシュメモリ１５は、ストレージ装置１０への書込み、あるいは読出しデータを一時的に記憶するために用いられる。ホストインタフェース１２、ストレージコントローラ１３、ネットワークインタフェース１４、キャッシュメモリは１５、ストレージ制御装置内の内部バス１６で相互に接続されている。
【００１８】
ホスト計算機５、６は、オペレーティングシステムあるいはアプリケーション等のプロセスからの要求に従い、ホストインタフェース１２を介して、ストレージ制御装置９にアクセス命令を発行し、ストレージ制御装置９は、ホスト計算機５、６からのアクセス命令に従って、ストレージコントローラ１３を介してストレージ装置１０が保持する記憶媒体１７を制御し、データの書込みまたは読出しを行う。
【００１９】
図３にホスト計算機５とストレージデバイス１との間のデータ書込み手順の例を示す。ホスト計算機５は、ストレージデバイス１に対して、データ書込みコマンドフレーム１８を発行する。
図４には、図３に示すデータ転送に用いられる各フレームの例を示す。
まず、ホスト計算機５は、ストレージデバイス１に対して、データ書込みコマンドフレーム１８（図４（ａ））を発行してデータ書込みを指示する。ここで、コマンドフレーム１８の送信元ストレージデバイスから宛先ストレージデバイスへの命令は、コマンドフィールド２９の命令コードとして記載される（図４（ａ））。
ホストインタフェース１２−１は、コマンドフレーム１８のコマンドフィールド２９に含まれる転送データ長情報をもとに、キャッシュメモリ１５にデータ受信領域を確保し、転送レディフレーム１９（図４（ｂ））をホスト計算機に送信する。ホスト計算５は、転送レディフレーム１９を受信すると、ストレージデバイス１に対し、データフレーム２０（図４（ｃ））を出力する。ホストインタフェース１２は、内部バス１６を経由して、キャッシュメモリ１５にホスト計算機５から転送されたデータフレームを書込み、転送レディフレーム１９をホスト計算機に送信して、次のデータフレーム１９の転送を要求する。もし受信したデータフレーム１９が最終のデータフレーム１９であった場合、または受信エラーが発生した場合、ホストインタフェース１２は、ホスト計算機５に受信ステータスを示したレスポンスフレーム２１（図４（ｄ））を送信してデータ書込み転送を終了する。また、ホストインタフェース１２は、ストレージコントローラ１３およびネットワークインタフェース１４に対し、書込みデータの論理ユニット番号２８、コマンド２９の内容(論理アドレス、転送データ長、データの書込み時間を示すタイムスタンプ)、キャッシュメモリ上のデータ記憶領域アドレスなどの情報を通知する。なお、各フレームのフレームヘッダ２２には、各データ転送シーケンスを識別するためのシーケンス識別子２６、シーケンス内におけるフレームの順序を示すシーケンス番号２７、および送信先と送信元となるホスト計算機５あるいはストレージデバイス１を識別するための送信元アドレス２４、宛先アドレス２５を含むものとする。アドレスの形式は、ホスト計算機５とストレージデバイス６を接続するネットワークによって異なる。例として、Fiber channelの場合にはIDが、ネットワークがEthernet（イーサネット（富士ゼロックス社の登録商標））である場合にはMACアドレスが、ネットワークがレイヤ３のIPネットワークで構成されている場合には、IPアドレスが、それぞれアドレス２４、２５となる。
【００２０】
ストレージコントローラ１３は、ホストインタフェース１２からの通知に従い、論理ユニット番号１８から記憶媒体１７の物理ユニット番号への変換、記憶媒体１７の論理アドレスから物理アドレスへのアドレス変換、内部バス１６を介してのキャシュメモリ１５からのデータ読出し等を行い、最後にデータ転送バスを介して記憶媒体１７にデータを書き込む。
【００２１】
ネットワークインタフェース１４は、ホストインタフェース１２からの指示に従い、ネットワーク４を経由してホスト計算機５からの書込みデータを、分散ストレージシステムを構成する他のストレージデバイス２、３に分散してコピーする。このコピーはバックアップとして用いることができる。
【００２２】
図５にネットワークインタフェース１４の構成の例を示す。図５のネットワークインタフェース１４は、バス制御部３３、プロセッサ３４、メモリ３５、フレーム送信部３６、フレーム受信部３７から構成される。バス制御部３３は、内部バス１６の調停を行い、ストレージ制御装置９を構成する他の要素との間で、内部バス１６を介してのデータ入出力を行う。プロセッサ３４は、分散ストレージシステムを構成するストレージデバイス２、３との通信コネクションの設定・維持・管理、データ転送のフロー制御、データ転送先の決定などの処理を行う。メモリ３５には、プロセッサ３４で処理させるプログラムの他、分散ストレージシステムを構成する他のストレージデバイス２，３へ転送したデータを管理するローカル管理テーブル４２、分散ストレージシステムを構成する他のストレージデバイスから転送されたデータを管理するためのリモート管理テーブル４３を持つ。また、メモリ３５には、障害発生時に障害データの復旧に使用する障害データテーブル４４を待つ。フレーム送信部３６は、分散ストレージシステムを構成する他のストレージデバイス２、３との通信コネクション毎に分けられたデータフレーム送信用のデータ入力バッファ３８と、コマンドフレーム１８あるいはデータ転送フローの制御用フレーム(例えば、TCPのAckフレーム)送信用のコマンド入力バッファ３９を持つ。また、フレーム受信部３７も分散ストレージシステムを構成するストレージデバイス２、３との通信コネクション毎に分けられたデータフレーム受信用のデータ出力バッファ４０と、コマンドフレーム１８あるいはデータ転送フロー制御フレーム受信用のコマンド入力バッファ３９を持つ。
【００２３】
図６にローカル管理テーブル４２の構成例を示す。
図７にリモート管理テーブル４３の構成例を示す。
【００２４】
ここでストレージデバイス１の起動手順の例として、ストレージデバイス１が、ストレージデバイス２、３で構成される分散ストレージシステムの要素として起動した場合を説明する。初めに、ストレージデバイス１は、分散ストレージシステムを構成する他のストレージデバイス２、３に対し、分散ストレージシステムを構成するストレージデバイス１としての動作を開始することを広告する。広告を受け取ったストレージデバイス２、３は、広告発行元ストレージデバイス１を分散ストレージシステムを構成する要素として登録し、広告発行元のストレージデバイス１に登録完了の応答を返す。広告発行元のストレージデバイス１は、この登録完了応答により、分散ストレージシステムとして、有効に動作するストレージデバイス２、３を確認し、この応答があったストレージデバイス２、３との間で、データの送受信を行う。なお、上記の広告-応答処理は、分散ストレージシステムを構成するストレージデバイス２、３が正常に動作していることを確認するため、一定時間間隔で定期的に行うことも可能である。
【００２５】
ストレージデバイス１が広告の発行先となるストレージデバイス２、３のアドレス２４を知る方法としては、予めシステム管理者が広告先リストを設定する方法、予め設定された代表サーバに問い合わせる方法などがある。また、各ストレージデバイス１〜３を相互接続するネットワーク４がマルチキャストあるいはブロードキャストをサポートする場合には、広告先を意識せず、広告をマルチキャストあるいはブロードキャストすることも可能である。
【００２６】
分散ストレージデバイスを構成する各ストレージデバイス１〜３間の通信コネクションは、固定的に通信コネクションを設定・維持しておく方法、例えばATMネットワークにおけるPVCのようなコネクション、あるいはデータ転送開始時に動的に設定し、データ転送完了時には切断する方法、例えば、IPネットワークにおけるTCPコネクションなどが考えられる。
【００２７】
以下、分散ストレージシステムを構成する各ストレージデバイス１〜３を相互接続するネットワーク４が、インターネットに代表されるIPネットワークであり、各ストレージデバイス１〜３間のデータ転送フロー制御(パケット転送制御)がTCPで行われる場合について、データコピーの手順を述べる。
以下、データコピー元のストレージデバイスのことを、ローカル・ストレージデバイス、データコピー先のストレージデバイスをリモート・ストレージデバイスと呼ぶ。また、ホスト計算機からローカル・ストレージデバイスに書き込まれたデータをオリジナルデータ、ローカル・ストレージデバイスからリモート・ストレージデバイスに書き込まれたデータをレプリカデータと呼ぶ。
図８〜図１２に、ローカル・ストレージデバイスからリモート・ストレージデバイスへのデータコピーの例として、ストレージデバイス１からストレージデバイス２へのデータコピーの例を示す。
図８〜図１１は、データ送信時のストレージデバイス１のネットワークインタフェース１４の動作例を示すフローチャートである。
【００２８】
図８において、ホスト計算機５、６からのデータ書込み時、ホストインタフェース１２は、ネットワークインタフェース１４に対し、書込みデータの論理ユニット番号、論理アドレス、転送データ長、データの書込み時間を示すタイムスタンプ、キャッシュメモリ１５上のデータ記憶領域アドレスなどを通知する。
【００２９】
プロセッサ３４は、通知されたデータと同一の論理ユニット番号と論理アドレスを持つエントリがローカル管理テーブル４２に存在するかを検索する（４６）。通知された論理ユニット番号と論理アドレスを持つエントリがローカル管理テーブル４２に存在しない場合、プロセッサ３４は、データ入力バッファ３８の状態を確認（４７）し、データ送信が可能なデータ入力バッファ３８を見つける。ここで、例えば、他のデータ書込みのため、全てのデータ入力バッファ３８からの送信が不可である場合、プロセッサ３４は、他のデータ書込みが完了し、データ入力バッファ３８が空くのを待つ（４８）。また、送信可能なデータ入力バッファ３８が複数発見された場合には、予め決められた手順（例えば、ラウンドロビン、ランダム、総データ転送量の少ないバッファを優先）に従って、送信を行うデータ入力バッファ３８を選択する（４９）。
【００３０】
図９において、ホストインタフェース１２から通知された書込みデータと同一の論理ユニット番号と論理アドレスを持つエントリ(以降、このエントリを旧エントリと呼ぶ)がローカル管理テーブル４２に存在する場合、プロセッサ３４は、データの転送先として、旧エントリに記載された転送先リモートストレージデバイスを優先的に選択する（５６〜５９）。これは、旧エントリに記載以外のリモートストレージデバイスにデータを転送すると、同一の論理ユニット番号と論理アドレスを持つデータが分散ストレージデバイス内に複数存在することになるからである。旧エントリに記載されたリモートストレージデバイスにデータを転送することが可能であれば、旧データは新しい書込みデータによって上書きされ、同一の論理ユニット番号と論理アドレスを持つデータが分散ストレージデバイス内に複数存在するという状況を避けることができる。
図１０と図１１において、もし、旧エントリに記載されたリモートストレージデバイスに対応するデータ入力バッファ３８が、他のデータ送信に使用されているなどの理由により使用できない場合には、プロセッサ３４は、旧エントリに記載以外のリモートストレージデバイスに対応するデータ入力バッファ３８を選択する（６０〜６３）。この場合、プロセッサは３４データの複重を避けるため、旧エントリに記載以外リモートストレージデバイスへのデータ転送完了後に、旧エントリに示されるリモートストレージデバイスに対し、旧エントリに示された論理ユニットと論理アドレスのデータ領域の解放、およびリモート管理テーブル４３の解放データ領域に対応するエントリの消去を命令するコマンドフレーム１８を送信する必要がある（６８）。
【００３１】
送信を行うデータ入力バッファ３８の選択が完了すると、プロセッサ３４は選択したデータ入力バッファ３８のTCPコネクションの状態を確認し（５０、６４）、TCPコネクションが設定されていない場合には、選択したリモートストレージデバイスとの間で、３方向ハンドシェークを行い、TCPコネクションを設定する（５１、６５）。
ローカルストレージデバイスは、TCPコネクション設定後、リモートデバイスに対し、データの転送を行う（５３、６７）。
図１２に、ストレージデバイス１とストレージデバイス２間のデータ書込み手順の例を示す。以下、ネットワーク４を介して各ストレージデバイス（１〜３）間で送受信される各フレーム（１８〜２１）は、送信側ストレージデバイスのデータ入力バッファ３８において、ネットワーク４が許す最大パケット長に合わせて複数のブロックに分割、レイヤ２ヘッダ、IPヘッダ、TCPヘッダ等のヘッダを付与され、IPパケットとして、ネットワーク４を転送、受信側ストレージデバイスのデータ出力バッファ４０において、レイヤ２ヘッダ、IPヘッダ、TCPヘッダ等を削除され、フレームに組み立てられるものとする。また、ネットワーク４におけるIPパケットの送受信は、TCPウィンドウにより制御されるものとする。
ストレージデバイス１は、ストレージデバイス２に対して、書込みコマンドフレーム１８を送信する。書込みコマンドフレーム１８を受信したストレージデバイス２は、キャッシュメモリ１５にデータ受信に必要なバッファ容量を確保し、転送レディフレーム１９をストレージデバイス１に返信する。書込みレディフレーム１９を受信したストレージデバイス１のプロセッサ３４は、バス制御部３３を介し、ホストインタフェース１２から指示されたキャッシュメモリ１５のデータ書込みアドレスから書込みデータ（データフレーム２０）を選択したデータ入力バッファ３８に転送、ストレージデバイス２に送信する。
【００３２】
ストレージデバイス２は、受信したデータフレーム２０を、予め確保したキャッシュメモリ15のバッファ領域に転送、転送レディーフレーム１９をローカルストレージデバイス１に送信して、次のデータの転送を要求する。もし受信したデータフレーム２０が最終のデータフレーム２０であった場合、または受信エラーが発生した場合、ストレージデバイス２は、ストレージデバイス１に受信ステータスを示したレスポンスフレーム２１を送信してデータ転送を完了、ホストインタフェース１２から、次のデータ書込み通知がない場合には、TCPコネクションを切断する。
データフレーム２０のキャッシュメモリ書込み後、ストレージデバイス２のネットワークインタフェース１４は、ストレージコントローラ１３に対し、書込みデータの論理ユニット番号、論理アドレス、転送データ長、およびデータが一時記憶されているキャッシュメモリ領域などを通知する。ストレージコントローラ１３は、ネットワークインタフェース１４の通知を受信すると、論理ユニット番号から物理ユニット番号への変換、論理アドレスから物理アドレスへのアドレス変換、内部バス１６を介してのキャシュメモリ１５からのデータ読出し等を行い、最後にデータ転送バス１１を介して記憶媒体１７にデータを書き込む。
【００３３】
ストレージデバイス１のネットワークインタフェース１４は、ストレージデバイス２へのデータ転送が完了すると、データを転送したストレージデバイス２の識別子、書込みデータの論理ユニット番号、論理アドレス、タイムスタンプなどを含むエントリを、メモリ３５に置かれたローカル管理テーブル４２に記載する。また、ストレージデバイス２は、データ送信元のストレージデバイス１の識別子、書込みデータの論理ユニット番号、論理アドレス、タイムスタンプなどを含むエントリを、リモート管理テーブル４３に記載する。
【００３４】
図６にローカル管理テーブル４２の構成例を示す。
図７にリモート管理テーブル４３の構成例を示す。
【００３５】
デバイス識別子ＩＤ=1のストレージデバイスが、デバイス識別子ID=2のリモートデバイスに論理ユニット番号LUN=1、論理アドレスLA=1、データ長Ｌ＝２、タイムスタンプTS=0のデータを、デバイス識別子ID=３のリモートデバイスに論理ユニット番号LUN=1、論理アドレスLA=3、データ長Ｌ＝3、タイムスタンプTS=1のデータを書き込んだ場合のローカル管理テーブル４２とリモート管理テーブル４３−１、４３−２の例を示している。
【００３６】
以上の動作により、ホスト計算機からストレージデバイスに書き込まれたオリジナルデータを、ストレージデバイス間の通信コネクションの状態によってデータ転送量を動的に変化させながら、リモートのストレージデバイスにレプリカデータとして保存することができる。以上の例では、データ転送量制御としてTCPウインドウ制御を用いたが、ATM(Asynchronous Transfer Mode)のABR(Available Bit Rate)サービスのように、ネットワークの状態を監視するパケットを用いて、各リモートストレージデバイスへのデータの転送量を変化させることも可能である。
【００３７】
図１３に、ホスト計算機とストレージデバイスとの間のデータ読出し手順の例を示す。ホスト計算機５からデータ読出しコマンドフレームを受信したストレージデバイス１は、読出し要求のあったデータが、キャッシュメモリ１５内に存在するかを検索する。もし、キャッシュメモリ１５にデータが存在する場合には、ストレージデバイス１は、キャッシュメモリ１５からデータを読出し、フレームヘッダを付与して、データフレーム２０として、ホスト計算機５に送信する。また、キャッシュメモリ１５にデータが存在しない場合には、ストレージデバイス１は、ストレージコントローラ１３を介して、記憶媒体１７からデータをキャッシュメモリ１５に転送、以下同様の手順で、ホスト計算機Ａにデータフレーム２０を送信する。ストレージデバイス１は、データフレーム２０の送信が終了すると、ホスト計算機Ａに対し、データフレーム送信のステータスを記載したレスポンスフレーム３２を送信し、データの読出し動作を完了する。
【００３８】
分散ストレージシステムを構成する各ストレージデバイス１〜３は、自身が持つ記憶媒体に障害が発生した、他のストレージデバイスにバックアップしていたレプリカデータを読み出し、ホスト計算機から障害記憶媒体に書き込まれたオリジナルデータを復旧すると同時に、他のストレージデバイスから障害記憶媒体に書き込まれていたレプリカデータの再バックアップを、他のストレージデバイスに指示する。
【００３９】
図１４に、記憶媒体１７障害が発生したストレージデバイス１が、ストレージデバイス２および３にバックアップしていたレプリカデータを読み出し、障害記憶媒体１７に書き込まれたオリジナルデータを復旧する手順を示す。ストレージデバイス１は、ストレージコントローラ１３の管理する論理ユニット番号・論理アドレスと物理ユニット番号・物理アドレスとの変換テーブルおよびローカル管理テーブルから、障害記憶媒体１７に書き込まれた各オリジナルデータのバックアップ先を特定、ストレージデバイス２、３に対して、レプリカデータの読出しコマンドフレーム１８を送信する。
【００４０】
レプリカデータの読出しコマンドフレーム１８を受信したストレージデバイス２、３は、読出し要求のあったデータが、キャッシュメモリ１５内に存在するかを検索する。もし、キャッシュメモリ１５にデータが存在する場合には、キャッシュメモリ１５からデータを読出し、データフレーム２０として、記憶媒体障害が発生したストレージデバイス１に送信する。また、キャッシュメモリ１５にデータが存在しない場合には、ストレージコントローラ１３を介して、記憶媒体１７からデータをキャッシュメモリ１５に転送後、データフレーム２０として、ストレージデバイス１にデータフレームを送信する。ストレージデバイス１は、ストレージデバイス２、３から転送されたデータを、キャッシュメモリ１５およびストレージコントローラ１３経由で、復旧用の記憶媒体１７に書き込む。
【００４１】
ストレージデバイス１は、障害記憶媒体１７に書き込まれていた全てのオリジナルデータに対し、以上の手順を繰り返すことにより、障害記憶媒体１７に書き込まれていたオリジナルデータの復旧を行うことができる。また、障害が発生した記憶媒体１７の復旧前に、ホスト計算機５から障害記憶媒体１７へのデータ読出しが発生した場合、ストレージデバイス１は、上記と同様の方法により、リモートストレージ２、３から、読出し要求があったデータのレプリカを読み出すことが可能であることは明らかである。
【００４２】
図１５と図１６に、ストレージデバイス２から、ストレージデバイス１の障害記憶媒体に書き込まれていたレプリカデータの再バックアップを手順を示す。
図１５は、ストレージデバイス１からストレージデバイス２への障害データテーブルの転送手順の例である。記憶媒体障害が発生したストレージデバイス１は、ストレージデバイス２から障害記憶媒体１７に書き込まれていたレプリカデータの一覧を示す障害データテーブル４４を作成する。
図１７に障害データテーブル４４の例を示す。ストレージデバイス１にレプリカデータを書き込んでいたストレージデバイス２は、ストレージデバイス１に対し、障害記憶媒体に書き込まれていたデータの一覧を示す障害データテーブル４４のテーブルサイズ通知を要求する。ストレージデバイス１は、記憶媒体障害通知を受信すると、ストレージコントローラ１３が保持する論理ユニット番号・論理アドレスと物理ユニット番号・物理アドレスとの変換テーブルおよびリモート管理テーブル４３から、ストレージデバイス２からストレージデバイス1の障害記憶媒体に書き込まれていたレプリカデータの一覧を示す障害データテーブル４４を作成し、ストレージデバイス２に対して、障害データテーブルのテーブルサイズを記載したデータフレーム３１とレスポンスフレーム２１を送信する。障害データテーブル４４のテーブルサイズを記載したデータフレーム４４を受信したストレージデバイス２は、ネットワークインタフェース１４のメモリ３５に、障害データテーブル書き込み容量を確保し、ストレージデバイス１に障害データテーブル４４の転送要求コマンドフレーム１８を送信する。障害データテーブル４４の転送要求コマンドフレーム１８を受信したストレージデバイス１は、障害データテーブル４４を記載したデータフレーム２０およびレスポンスフレーム２１を送信する。障害データテーブル４４を記載したデータフレーム３１を受信したストレージデバイス２は、ネットワークインタフェース１４のメモリ３１に、障害データテーブル４４書き込き込む。次に、ストレージデバイス２は、障害データテーブル４４のエントリに示された論理ユニット番号と論理アドレスが示すデータが、キャッシュメモリ３５内にあるかを検索する。キャッシュメモリ３５にデータが存在する場合には、キャッシュメモリ３５からデータを読出し、図１２−２に示すデータ転送手順に従い、ストレージデバイス２のリモートストレージデバイスとなる、ストレージデバイス１および３に、データの再バックアップを行う。また、キャッシュメモリ３５にデータが存在しない場合、ストレージデバイス２は、ストレージコントローラ１３を介して、データをキャッシュメモリ３５に転送後、上記手順と同様にして、ストレージデバイス１あるいは３にデータフレーム３１を送信する。この時、データ転送先となるリモートストレージは、必ずしも記憶媒体障害が発生したストレージデバイス１である必要はない。なお、同様の手段により、ストレージデバイス３から、ストレージデバイス１の障害記憶媒体に書き込まれていたレプリカデータの再バックアップを行うことも可能であることは明らかである。
【００４３】
分散ストレージシステムを構成する各ストレージデバイス１〜３は、あるストレージデバイスが障害により動作を停止した場合、あるいはシステム管理者から命令があった場合、マスタとして予め登録されているストレージデバイスが、障害ストレージデバイスが他のストレージデバイスにバックアップしていたレプリカデータを読み出し、オリジナルデータを復旧する。
【００４４】
図１８と図１９に、ストレージデバイス１に障害が発生した場合のストレージデバイス２と３の間の動作の例を示す。ストレージデバイス１に障害が発生すると、分散ストレージシステムは、予め決められたリモートストレージデバイス２をマスタとし、それ以外のストレージデバイス（図１４−１、図１４−２ではストレージデバイス３のみ）をスレーブとして、オリジナルデータ復旧を行う。マスタのストレージデバイス２は、ストレージデバイス１の障害通知を受けると、ストレージデバイス１からストレージデバイス２に書き込まれたレプリカデータの一覧を示す障害データテーブル４４をリモート管理テーブル４３から作成、スレーブのストレージデバイス３に対しては、ストレージデバイス１からストレージデバイス３に書き込まれたレプリカデータの一覧を示す障害データテーブル４４のテーブルサイズ転送要求コマンドフレーム１８を送信する。障害データテーブル４４のテーブルサイズ転送要求コマンドフレーム１８を受信したストレージデバイス３は、ストレージデバイス１からストレージデバイス３に書き込まれたレプリカデータの一覧を示す障害データテーブル４４をリモート管理テーブル４３から作成し、ストレージデバイスに２に対して、作成した障害データテーブル４４のサイズを記載したデータフレーム２０とレスポンスフレーム２１を送信する。ストレージデバイス３から障害データテーブル４４のテーブルサイズを記載したデータフレーム２０を受信したストレージデバイス２は、ネットワークインタフェース１４のメモリ３５に、ストレージデバイス３の障害データテーブル４４書込み容量を確保し、ストレージデバイス３に障害データテーブル４４の転送要求コマンドフレーム１８を送信する。障害データテーブル４４の転送要求コマンドフレーム１８を受信したストレージデバイス３は、障害データテーブル４４を記載したデータフレーム２０およびレスポンスフレーム２１を送信する。ストレージデバイス３の障害データテーブル４４を記載したデータフレーム２０を受信したストレージデバイス２は、ストレージデバイス２自身が保持する障害データテーブル４４とストレージデバイス３から受信した障害データテーブル４４を合成し、障害ストレージデバイス１が保持していたローカル管理テーブル４４を再現する。ローカル管理テーブル４４の合成時に、ストレージデバイス３の障害データテーブル４４とストレージデバイス３の障害データテーブル４４に、同一の論理ユニット番号と論理アドレスを持つエントリが存在する場合には、両エントリのタイムスタンプを比較し、よりタイムスタンプが新しいエントリを選択することで、データの複重を避けることができる。ストレージデバイス３の障害データテーブル４４およびストレージデバイス３の障害データテーブル４４に、同一の論理ユニット番号と論理アドレスを持つエントリが存在する状況は、例えば、ストレージデバイス１が突然停止したため、エントリ消去命令コマンドフレーム１８が正常に送信されなかった場合などに発生する。マスタのストレージデバイス２は、合成したローカル管理テーブル４４をもとに、図１４−２に示す手順に従って、ストレージデバイス３から読出したレプリカデータと、自身が保持するレプリカデータから、ストレージデバイス１が保持してオリジナルデータを再現する。
【００４５】
最後に、このオリジナルデータの再現がシステム管理者の命令ではなく、ストレージ障害により発生している場合、マスタのストレージデバイス２は、自身が保持していたストレージデバイス１のレプリカデータを、図９に示すのと同様の手順に従い、分散ストレージデバイスを構成する各ストレージデバイス（この実施例では、ストレージデバイス３のみとなる）に再バックアップする。以上の動作により、ストレージデバイス２とホスト計算機７は、障害により停止したストレージデバイス１とホスト計算機５に変わって、データ処理を再開することができる。
【００４６】
【発明の効果】
本発明によれば、高速なデータのバックアップおよび高速なデータ復旧が可能となる。
【図面の簡単な説明】
【図１】分散ストレージシステムの構成図。
【図２】ストレージデバイスのブロック図。
【図３】ホスト計算機からストレージデバイスへのデータ書き込み手順の流れ図。
【図４】データ転送に使用されるフレーム構成図。
【図５】ネットワークインターフェースの構成図。
【図６】ローカル管理テーブルの表図。
【図７】リモート管理テーブルの表図。
【図８】データ書き込み時のローカルインターフェース動作連を示すフローチャート（その１）。
【図９】データ書き込み時のローカルインターフェース動作連を示すフローチャート（その２）。
【図１０】データ書き込み時のローカルインターフェース動作連を示すフローチャート（その３）。
【図１１】データ書き込み時のローカルインターフェース動作連を示すフローチャート（その４）。
【図１２】ローカルデバイスからリモートデバイスへのデータ転送の動作の流れ図。
【図１３】ホスト計算機からストレージデバイスへのデータ転送の動作の流れ図。
【図１４】記憶媒体障害時のオリジナルデータ復旧の動作例。
【図１５】記憶媒体障害時のレプリカデータ再バックアップにおける障害データテーブル転送の動作流れ図。
【図１６】記憶媒体障害時のレプリカデータ再バックアップにおけるデータ転送の動作流れ図。
【図１７】障害データテーブルの構成図。
【図１８】ストレージデバイス障害時のオリジナルデータ復旧動作における障害データテーブル転送動作流れ図。
【図１９】ストレージデバイス障害時のオリジナルデータ復旧動作におけるデータ転送動作流れ図。
【図１】
0004434543.tif 000002
【図２】
0004434543.tif 000003
【図３】
0004434543.tif 000004
【図４】
0004434543.tif 000005
【図５】
0004434543.tif 000006
【図６】
0004434543.tif 000007
【図７】
0004434543.tif 000008
【図８】
0004434543.tif 000009
【図９】
0004434543.tif 000010
【図１０】
0004434543.tif 000011
【図１１】
0004434543.tif 000012
【図１２】
0004434543.tif 000013
【図１３】
0004434543.tif 000014
【図１４】
0004434543.tif 000015
【図１５】
0004434543.tif 000016
【図１６】
0004434543.tif 000017
【図１７】
0004434543.tif 000018
【図１８】
0004434543.tif 000019
【図１９】
0004434543.tif 000020