(57)【特許請求の範囲】
【請求項１】
複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較部と、
前記比較部が前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部と、
を備えるデータ整合装置。
【請求項２】
前記複数の記憶部はそれぞれ、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データを格納し、
前記比較部は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された２以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、同一のデータブロックに対応づけて記憶される前記２以上の記憶部の前記冗長データのうち末尾のデータブロックのデータ長を比較することを特徴とする請求項１に記載のデータ整合装置。
【請求項３】
複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較工程と、
前記比較工程において前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化工程と、
を備えるデータ整合方法。
【請求項４】
前記複数の記憶部は、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データをそれぞれ格納し、
前記比較工程は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された２以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、前記冗長データ位置テーブル中に、同一のデータブロックに対応づけて記憶される前記２以上の記憶部の前記冗長データのうち末尾のブロックのデータ長を比較することを特徴とする請求項３に記載のデータ整合方法。
【請求項５】
複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する比較手順と、
前記比較手順において前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化手順と、
をコンピュータに実行させることを特徴とするデータ整合プログラム。
【請求項６】
前記複数の記憶部は、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データをそれぞれ格納し、
前記比較手順は、前記データブロックの識別子と、当該データブロックの格納先として指定される前記複数の記憶部の中から選択された２以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブルを参照して、前記冗長データ位置テーブル中に、同一のデータブロックに対応づけて記憶される前記２以上の記憶部の前記冗長データのうち末尾のブロックのデータ長を比較することを特徴とする請求項５に記載のデータ整合プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長化されたデータ間の整合性を維持する技術に関する。
【背景技術】
【０００２】
従来、データを格納する装置が故障した場合に、当該装置に格納されたデータが破損または消失することを防止するため、複数の装置に同じデータを格納する冗長化が行われている。たとえば、同じデータのレプリカを複数のサーバに分散させて管理する分散型ファイルシステムが実現されている。
【０００３】
たとえば、非特許文献１は、分散型ファイルシステムの一例を開示している。このシステムは、各クラスタを１つのマスタと複数のサーバとで構成する。複数のクライアントがクラスタにアクセスする。クラスタにファイルを格納するときは、ファイルを固定長の複数のブロックに分割し、ブロック１つ１つの複製をサーバに格納する。このように、ファイルを複製して冗長化し、複数サーバ上に分散して保持することにより、耐故障性を向上させ、複数サーバにおける並列処理を可能にして処理効率の向上を図ることができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Sanjay  Ghemawat,  Howard  Gobioff,  and  Shun-Tak  Leung著、「The  Google  File  System」、19th  ACM  Symposium  on  Operating  Systems  Principles、２００３年１０月、p.  20-43
【非特許文献２】Vijayan  Prabhakaran,  Lakshmi  N.  Bairavasundaram,  Nitin  Agrawal,  Haryadi  S.  Gunawi,  Andrea  C.  Arpaci-Dusseau,  and  Remzi  H.  Arpaci-Dusseau著、「IRON  File  Systems」、SOSP  ’05  Proceedings  of  the  twentieth  ACM  symposium  on  Operating  systems  principles、２００５年１０月、p.  206-220
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の技術においては、冗長化した複数のデータ（以下、「冗長データ」とも呼ぶ。冗長データは、複製元のデータおよび複製先のデータを含む。）間での整合性を維持する際に、処理性能が低下するという問題があった。
【０００６】
たとえば、ファイルシステムのひとつのサーバへの書込処理が途中で異常終了した場合、当該サーバに格納されたデータと、他のサーバに格納されたデータとの間でデータが不一致となる。かかる問題に対処する手法として、トランザクション処理やチェックサムを利用して不一致状態を検知し自動的に冗長データを相互に一致させる手法や、上位アプリケーションから書込処理を再実行して冗長データを相互に一致させる手法が存在する。
【０００７】
しかしながら、トランザクション処理を利用した不一致状態の検知手法では、冗長データの同一性は維持されるが、ファイルシステム上のファイルにデータを書き込む際の処理手順が多くなり、上位アプリケーションの書込性能が低下する。
【０００８】
これに対して、たとえば、非特許文献２が開示する、チェックサムを利用することで不一致状態を検知する手法では、まず、冗長データのチェックサムを取得しておく。そして、定期的または冗長データへのアクセスの際または書込処理が失敗した際などに、複数の冗長データ間でチェックサムを比較して、チェックサムが異なる場合には、冗長データが同一になるように冗長データの書き換えを行う。
【０００９】
しかし、チェックサムを利用した不一致状態の検知手法では、上位アプリケーションからファイルシステム上のファイルにアクセスする処理と、ファイルシステム内部のチェックサムを比較する処理が競合する。このため、やはり、ファイルシステムの書込処理および読出処理の性能が低下する。
【００１０】
上位アプリケーションから書込処理を再実行する手法では、書込みが失敗した場合、上位アプリケーションが再度、失敗した書込の対象データを書き込む。この手法によれば、冗長データの整合性維持にかかる負荷を上位アプリケーションが制御することができ、自動的に冗長データの整合性を維持する手法に比べて上位アプリケーションの書込性能低下を抑制することができる。
【００１１】
しかし、上位アプリケーションから書込処理を再実行する手法では、書込処理を行っている上位アプリケーションが異常終了した場合、再度書込処理を行うためには、上位アプリケーション自身がローカルファイルなどのデータ永続化装置に、処理結果を書き込んでおく必要がある。このため、上位アプリケーションの書込処理時間が長くなり、上位アプリケーションの書込性能が低下してしまう。
【００１２】
本発明は、上記に鑑みてなされたものであって、上位アプリケーションの性能を低下させることなく、冗長データを整合させることができるデータ整合装置、データ整合方法およびデータ整合プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較し、前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃えることを特徴とする。
【発明の効果】
【００１４】
本発明にかかるデータ整合装置、データ整合方法およびデータ整合プログラムは、上位アプリケーションの性能を低下させることなく、冗長データを整合させることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の第１の実施形態に係るデータ整合装置の概要を示すブロック図である。
【図２】図２は、第１の実施形態に係るデータ整合装置のデータ整合処理の流れの一例を示すフローチャートである。
【図３】図３は、本発明の第２の実施形態に係るデータ整合システムの概要を示すブロック図である。
【図４−１】図４−１は、第２の実施形態に係る冗長データ位置テーブルに格納する情報の一例を説明するための図である。
【図４−２】図４−２は、第２の実施形態に係る冗長データ位置テーブルに格納する情報とデータを格納するディスクとの対応を説明するための図である。
【図５】図５は、第２の実施形態に係る処理対象リストに格納するデータの一例を示す図である。
【図６】図６は、第２の実施形態に係るデータ配置制御部による、書込処理時のデータ配置制御処理の流れの一例を示すフローチャートである。
【図７】図７は、第２の実施形態に係るデータ配置制御部による、書込制御処理の流れの一例を示すフローチャートである。
【図８】図８は、第２の実施形態に係る書込部による書込処理の流れの一例を示すフローチャートである。
【図９】図９は、第２の実施形態に係るデータアクセス部における書込実行前処理の流れの一例を示すフローチャートである。
【図１０】図１０は、第２の実施形態に係るデータアクセス部における書込実行処理の流れの一例を示すフローチャートである。
【図１１】図１１は、第２の実施形態に係るデータ整合システムにおける正常時の処理の流れの一例を概括的に示す図である。
【図１２】図１２は、第２の実施形態に係るデータ配置制御部による、読出処理時のデータ配置制御処理の流れの一例を示すフローチャートである。
【図１３】図１３は、第２の実施形態に係る読出部による読出処理の流れの一例を示すフローチャートである。
【図１４】図１４は、第２の実施形態に係るデータアクセス部における読出実行処理の流れの一例を示すフローチャートである。
【図１５】図１５は、第２の実施形態に係るデータアクセス部が、書込処理中に異常終了した場合の冗長データの状態を説明するための図である。
【図１６】図１６は、第２の実施形態に係るデータ整合装置におけるデータ整合処理の流れの一例を示すフローチャートである。
【図１７】図１７は、第２の実施形態に係るデータ整合装置における同一化処理の流れの一例を示すフローチャートである。
【図１８】図１８は、データ整合システムによる一連の処理を実行するプログラムであるデータ整合プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１６】
以下に、本発明にかかるデータ整合装置、データ整合方法およびデータ整合プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００１７】
［第１の実施形態］
［データ整合装置の構成の一例］
図１は、本発明の第１の実施形態に係るデータ整合装置１０の概要を示すブロック図である。図１を参照して、第１の実施形態に係るデータ整合装置１０について説明する。第１の実施形態に係るデータ整合装置１０は、同一のデータを複製して作成した複数の冗長データを異なる記憶装置に記憶させる場合に生じた冗長データの不整合を検出して、冗長データ同士のデータ長を一致させる。
【００１８】
図１に示すように、データ整合装置１０は、比較部１１と同一化部１２とを備える。比較部１１は、データの複製を作成して冗長化した冗長データをそれぞれ格納する複数の記憶部（図示せず）に対して、冗長データのデータ長を比較する比較処理を実行する。同一化部１２は、比較処理の結果、比較部１１が冗長データのデータ長が同一ではないと判定した場合に、当該冗長データのうち、最も短いデータ長の冗長データに他の冗長データのデータ長を揃える。
【００１９】
データ整合装置１０は、たとえば、分散型ファイルシステムのマスタ装置であってよい。また、たとえば、データ整合装置１０の機能は、クライアントライブラリによって実現されるように構成してもよい。ただし、分散型ファイルシステムに限らず、複数の独立した記憶部を有し、記憶部各々に同一の複製データを格納することでシステムの冗長性を確保するシステムに適用することができる。たとえば、外部からのアクセスによって各記憶部に対する並列処理が実行され、複数の外部からの命令を調整して処理するシステムに適用することができる。
【００２０】
また、図１には図示しないが、データ整合装置１０は、冗長データを格納する複数の記憶部や、記憶部に対するデータの読出要求や書込要求を送信する情報処理装置等とネットワーク等を介して接続される。複数の記憶部は例えば、物理サーバと当該サーバに接続されたディスク装置や、データセンタ内に仮想的に構築された仮想サーバと仮想ストレージ等であってよい。また、情報処理装置は、物理サーバやデータセンタを利用するクライアント装置であってよい。
【００２１】
また、ネットワークとして、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）等任意のネットワークを使用できる。
【００２２】
［データ整合処理の流れの一例］
図２は、第１の実施形態に係るデータ整合装置１０のデータ整合処理の流れの一例を示すフローチャートである。図２を参照して、第１の実施形態に係るデータ整合装置１０によるデータ整合処理の流れの一例を説明する。
【００２３】
図２に示すように、データ整合装置１０はまず、整合要求を受ける（ステップＳ２１）。整合要求はたとえば、データ整合装置１０に接続され、記憶部に格納されたデータを利用するクライアントから発行される。クライアントはたとえば、記憶部にデータを書き込む処理が異常終了した場合等に、データ整合装置１０に対して整合要求を発行する。ただし、整合要求は、クライアントにおいて記憶部への書込処理が異常終了したことを検出した場合に、自動的にデータ整合装置１０に発行されるものとしてもよい。
【００２４】
整合要求は、比較部１１に渡される。比較部１１は、整合要求によって特定される冗長データを格納する複数の記憶部にアクセスし、格納された冗長データのデータ長を抽出する（ステップＳ２２）。そして比較部１１は、抽出したデータ長を相互に比較する（ステップＳ２３）。比較部１１がデータ長は同一であると判定した場合（ステップＳ２４、肯定）、データ整合処理は終了する。他方、比較部１１がデータ長は同一ではないと判定した場合（ステップＳ２４、否定）、比較部１１は処理を同一化部１２に渡す。同一化部１２は、比較部１１がデータ長を比較した冗長データのデータ長を揃える（ステップＳ２５）。すなわち、同一化部１２は、複数の冗長データのうち、最も短いデータ長の冗長データに他の冗長データのデータ長を揃える。これによってデータ整合処理は終了する。
【００２５】
［第１の実施形態の効果］
このように、第１の実施形態に係るデータ整合装置１０は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を比較する比較部１１と、比較部１１が冗長データのデータ長が同一ではないと判定した場合に、複数の記憶部に格納された冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部１２と、を備える。このため、第１の実施形態に係るデータ整合装置１０は、複数の記憶部が格納する冗長データ間で整合性を確保することができる。
【００２６】
また、データ整合装置１０は、整合要求を受けたときにデータ整合処理を実行し、特に必要がない場合は冗長データ間の不整合に対処しないように構成してもよい。このように構成することで、クライアント側が利用するアプリケーションのニーズに合わせて、冗長データの整合性制御を実行することができる。
【００２７】
たとえば、クライアント側が利用するアプリケーションが多少の冗長データの不整合があっても問題なく動作できるものであれば、クライアントは整合要求を発行せずに処理を継続する。そして、クライアントまたはデータ整合装置１０にかかる処理負荷の低いときに整合要求を発行してデータ整合処理を実行させることができる。また、クライアント側が利用するアプリケーションが冗長データの高い整合性を要求するものである場合は、書込動作が予期せず終了した場合等に、クライアントが直ちに整合要求を発行することで、冗長データの整合性を確保することができる。
【００２８】
また、データ整合装置１０は、書込処理の異常終了が発生した場合は常にデータ整合処理を実行するように設定してもよい。また、データ整合装置１０は、予め定められたアプリケーションからの書込要求に対応した書込処理が異常終了した場合はデータ整合処理を実行し、他のアプリケーションからの書込要求に対応した書込処理が異常終了した場合はデータ整合処理を実行しないように設定してもよい。
【００２９】
このように、第１の実施形態のデータ整合装置１０は、上位アプリケーションに係る負荷を抑制して処理性能の低下を防止しつつ、複数の記憶部に格納された冗長データ間の整合性を確保することができる。
【００３０】
［第２の実施形態］
図３は、本発明の第２の実施形態に係るデータ整合システム１の概要を示すブロック図である。図３を参照して、第２の実施形態に係るデータ整合システム１の構成の概要について説明する。
【００３１】
［データ整合システム］
図３に示すように、データ整合システム１は、マスタ１００と、サーバ２００Ａ，２００Ｂ，２００Ｃと、ディスク３００Ａ，３００Ｂ，３００Ｃと、クライアント４００Ａ，４００Ｂ，４００Ｃと、を備える。マスタ１００は、ネットワークを介して、サーバ２００Ａ，２００Ｂ，２００Ｃおよびクライアント４００Ａ，４００Ｂ，４００Ｃと接続され、相互に情報の送受信を行う。また、クライアント４００Ａ，４００Ｂ，４００Ｃは、マスタ１００から送信された情報に基づき、サーバ２００Ａ，２００Ｂ，２００Ｃに対して適宜、読出命令、書込命令、またはデータ整合命令を送信する。マスタ１００は、クライアント４００Ａ，４００Ｂ，４００Ｃからデータの読み出しまたは書込の要求を受信し、クライアント４００Ａ，４００Ｂ，４００Ｃに対して、読み出しまたは書込みまたはデータ整合化のための情報を送信する。サーバ２００Ａ，２００Ｂ，２００Ｃは、クライアント４００Ａ，４００Ｂ，４００Ｃからの命令に基づき、ディスク３００Ａ，３００Ｂ，３００Ｃに対して読出処理または書込処理またはデータ整合処理を実行する。
【００３２】
マスタ１００はたとえば、分散型ファイルシステムのマスタである。サーバ２００Ａ，２００Ｂ，２００Ｃはたとえば、分散型ファイルシステムのチャンクサーバである。クライアント４００Ａ，４００Ｂ，４００Ｃはたとえば、分散型ファイルシステムを利用するユーザである。
【００３３】
また、マスタ１００は、インタークラウドシステムのインタークラウドサーバとして構成してもよい。その場合、サーバ２００Ａ，２００Ｂ，２００Ｃおよびディスク３００Ａ，３００Ｂ，３００Ｃは、クラウドシステムによって仮想的に構成してもよい。また、マスタ１００、サーバ２００Ａ，２００Ｂ，２００Ｃ、ディスク３００Ａ，３００Ｂ，３００Ｃは、１つのデータセンタ内に構築したものであってもよいし、複数のデータセンタに分散して構築したものでもよい。
【００３４】
サーバ２００Ａ，２００Ｂ，２００Ｃは、マスタ１００およびクライアント４００Ａ，４００Ｂ，４００Ｃからの命令に応じて、各々の配下のディスク３００Ａ，３００Ｂ，３００Ｃにアクセスし、データの読み出しや書込みを行う。サーバ２００Ａ，２００Ｂ，２００Ｃはそれぞれ、配下のディスク３００Ａ，３００Ｂ，３００Ｃへのアクセスを制御するためのデータアクセス部２０１Ａ，２０１Ｂ，２０１Ｃを備える。
【００３５】
サーバ２００Ａ，２００Ｂ，２００Ｃは、いずれかのサーバに障害が発生した場合でもデータが失われないように、それぞれ同一のデータを冗長データとして格納する。クライアント４００Ａ，４００Ｂ，４００Ｃは、サーバ２００Ａ，２００Ｂ，２００Ｃのいずれかにアクセスすることで同一のデータに対して並列処理を実行することができる。なお、図３には、３つのサーバ２００Ａ，２００Ｂ，２００Ｃを示すが、サーバの数は３に限定されない。また、冗長データを格納するディスクおよびサーバの数は、第２の実施形態では３として説明するが、たとえば１０のサーバを備えるデータ整合システムの場合、同じデータの冗長データは１０のサーバのうち適宜選択した３つのサーバの配下のディスクに格納する等としてよい。どのサーバのディスクに冗長データを格納するかは、マスタ１００が決定制御してクライアント４００Ａ，４００Ｂ，４００Ｃに指示する。ただし、クライアント４００Ａ，４００Ｂ，４００Ｃが冗長データを格納するサーバを指定するように構成してもよい。
【００３６】
ディスク３００Ａ，３００Ｂ，３００Ｃは、データを記憶するデータベース等の記憶装置である。ディスク３００Ａ，３００Ｂ，３００Ｃへのアクセスはそれぞれサーバ２００Ａ，２００Ｂ，２００Ｃにより制御される。
【００３７】
クライアント４００Ａ，４００Ｂ，４００Ｃは、ディスク３００Ａ，３００Ｂ，３００Ｃに格納されたデータを利用する。たとえば、クライアント４００Ａ，４００Ｂ，４００Ｃは、インタークラウドシステムを利用するユーザ端末である。クライアント４００Ａ，４００Ｂ，４００Ｃはそれぞれ、アプリケーション実行部４０１Ａ，４０１Ｂ，４０１Ｃ、書込部４０２Ａ，４０２Ｂ，４０２Ｃ、読出部４０３Ａ，４０３Ｂ，４０３Ｃ、データ整合装置４１０Ａ，４１０Ｂ，４１０Ｃを備える。アプリケーション実行部４０１Ａ，４０１Ｂ，４０１Ｃはそれぞれ、クライアントのアプリケーションを実行する機能部である。書込部４０２Ａ，４０２Ｂ，４０２Ｃ、読出部４０３Ａ，４０３Ｂ，４０３Ｃおよびデータ整合装置４１０Ａ，４１０Ｂ，４１０Ｃはそれぞれ、アプリケーション実行部４０１Ａ，４０１Ｂ，４０１Ｃの制御の下、ディスク３００Ａ，３００Ｂ，３００Ｃへの書込命令、読出命令、データ整合命令を送信する。
【００３８】
［データ整合装置の構成の一例］
クライアント４００Ａ，４００Ｂ，４００Ｃはそれぞれ、データ整合装置４１０Ａ，４１０Ｂ，４１０Ｃを備える。データ整合装置４１０Ａ，４１０Ｂ，４１０Ｃにつき、以下に更に説明する。データ整合装置４１０（以下、「データ整合装置４１０」は、データ整合装置４１０Ａ，４１０Ｂ，４１０Ｃのいずれか１つを示す）は、比較部４１２（以下、「比較部４１２」は、比較部４１２Ａ，４１２Ｂ，４１２Ｃのいずれか１つを示す）と、同一化部４１３（以下、「同一化部４１３」は、同一化部４１３Ａ，４１３Ｂ，４１３Ｃのいずれか１つを示す）と、を備える。
【００３９】
比較部４１２は、クライアントからの整合要求に応じて比較処理を実行する。比較部４１２はたとえば、クライアントが要求した書込処理が正常に終了しなかった場合に比較処理を実行する。第２の実施形態のマスタ１００では、データの冗長性を確保するため、サーバ２００Ａ，２００Ｂ，２００Ｃにそれぞれ同一のデータを格納させる。しかし、書込処理が異常終了した場合等、サーバ２００Ａに格納されたデータとサーバ２００Ｂに格納されたデータに不一致が生じていることがある。また、書込が異常終了した場合、いずれかのサーバが外部からアクセスできない状態となり、他のサーバについてもデータが適切に書込完了したか否かを外部（クライアント）から知ることができない場合がある。そこで、比較部４１２は、異常終了した書込処理の書込対象データを、アクセス可能なサーバから検出して、それぞれのデータ長を比較する比較処理を実行する。
【００４０】
同一化部４１３は、比較部４１２が複数のサーバに格納された冗長データを比較した結果、データ長に不一致が検出された場合に、それらのデータのうち、最もデータ長が短いデータのデータ長に他の冗長データの長さを揃えるデータ同一化処理を実行する。なお、比較部４１２および同一化部４１３による処理についてはさらに詳細に後述する。
【００４１】
［マスタの構成の一例］
マスタ１００の構成の一例につき説明する。図３に示すようにマスタ１００は、データ配置制御部１１０と、記憶部１２０と、入出力部１３０と、を備える。データ配置制御部１１０は、マスタ１００における各部の機能および動作を制御する。記憶部１２０は、マスタ１００における処理に使用する情報および処理の結果として生成される情報を適宜格納する。入出力部１３０は、外部とマスタ１００との間での情報のやりとりを行う。入出力部１３０が受信した情報は適宜、データ配置制御部１１０および記憶部１２０に渡される。
【００４２】
データ配置制御部１１０は、データの書込みおよび読み出しを行う場所を判定し、冗長データを識別するための情報や冗長データの所在を示す情報を記憶部１２０に記憶する処理を実行する。また、サーバ２００Ａ，２００Ｂ，２００Ｃにおける読出処理および書込処理およびデータ整合処理の結果に応じて、記憶部１２０に格納された情報を更新する。また、データ配置制御部１１０は、クライアント４００Ａ，４００Ｂ，４００Ｃからの要求に応じて、データの書込みおよび読み出しおよびデータ整合化に必要な情報をクライアント４００Ａ，４００Ｂ，４００Ｃに送信する。
【００４３】
［記憶部の構成および記憶する情報の一例］
次に、記憶部１２０の構成および記憶部１２０に記憶する情報の一例につき説明する。図３に示すように、記憶部１２０は、冗長データ位置テーブル１２１と、処理対象リスト（リースリスト）１２２と、を備える。
【００４４】
冗長データ位置テーブル１２１は、各サーバ２００Ａ，２００Ｂ，２００Ｃに格納したデータの識別子（ＩＤ：Identifier）と、当該データを格納したサーバの情報とを記憶する。図４−１は、冗長データ位置テーブル１２１に格納する情報の一例を説明するための図である。図４−２は、冗長データ位置テーブル１２１に格納する情報とデータを格納するディスクとの対応を説明するための図である。
【００４５】
たとえば、クライアント４００Ａからの書込要求に応じてファイル名、すなわち、ファイルＩＤ「Ａ」のデータをディスク３００Ａ，３００Ｂ，３００Ｃに格納するとする。この場合、ファイルＩＤ「Ａ」のデータはまず、固定長に分割されて複数のデータブロックとなる（図４−１参照）。そして、各ブロックにハンドル名とバージョン番号が付与される。ハンドル名とバージョン番号とを組み合わせたものが、当該ブロックのデータＩＤとなる。たとえば、図４−１の例では、ファイルＩＤ「Ａ」のデータを３つの固定長のブロックに分割している。そして、最初のブロックにハンドル名「ａ１」とバージョン番号「２」を付与する。したがって、ファイルＩＤ「Ａ」のデータの最初のブロックのデータＩＤは、「ａ１２」となり、当該データＩＤがファイルＩＤ「Ａ」に対応づけて、冗長データ位置テーブル１２１に格納される。同様に、２番目のデータブロックに、ハンドル名「ａ２」とバージョン番号「３」が付与され、冗長データ位置テーブル１２１に格納される。また、３番目のデータブロックに、ハンドル名「ａ３」とバージョン番号「３」が付与され、冗長データ位置テーブル１２１に格納される。
【００４６】
なお、各データブロックに付与するデータＩＤのうち、ハンドル名については、各データブロックを一意に識別できるよう、各ブロックに異なるハンドル名を付与する。バージョン番号については、複数のデータブロックに同一のバージョン番号が付与されている場合がある。また、データブロックを一意に特定できるのであれば、他の形式のＩＤを付与してもよい。
【００４７】
本実施形態では、各データブロックの冗長データを３つのディスク３００Ａ，３００Ｂ，３００Ｃに格納する。そこで、冗長データ位置テーブル１２１には、たとえば、ファイルＩＤ「Ａ」のデータの各ブロックについて、冗長データが格納されている場所を示す位置情報が記憶される。図４−２の例では、ファイルＩＤ「Ａ」のデータ中、データＩＤ「ａ３３」のデータブロックの冗長データが、サーバＩＤ「２００Ａ」，「２００Ｂ」，「２００Ｃ」のサーバが制御するディスクに格納されていることが示されている。すなわち、ここでは位置情報は当該データブロックのデータを管理するデータアクセス部が動作しているサーバを特定する。
【００４８】
なお、冗長データが格納されている場所を示す位置情報としては、たとえば、サーバのＩＰアドレスやホスト名、サーバ上で動作するデータアクセス部のＩＰアドレスやホスト名などを用いることができる。
【００４９】
処理対象リスト１２２は、その時点で、書込処理を実行しているサーバ又はデータアクセス部と、処理対象データとを特定するリストである。図５は、処理対象リスト１２２に格納するデータの一例を示す図である。
【００５０】
処理対象リスト１２２は、その時点で書込処理を実行しているデータブロックを特定する情報と、当該データブロックへの書込処理を制御している機能部を特定する情報とを記憶する。たとえば、データＩＤ「ａ１２」のデータブロックに対する書込処理を、データアクセス部「２０１Ａ」が制御している場合、処理対象リスト１２２には、当該データのハンドル名である「ａ１」と、データアクセス部「２０１Ａ」の位置情報である「２０１Ａ」とが対応づけて格納される。データアクセス部「２０１Ａ」による、ハンドル名「ａ１」のデータブロックに対する書込処理が終了すると、所定の時間が経過した後、データ配置制御部１１０が、処理対象リスト１２２からハンドル名「ａ１」とデータアクセス部「２０１Ａ」の情報を削除する。なお、ここでは処理対象リスト１２２は、処理対象データのハンドル名のみを格納し、バージョン番号は格納しないものとする。
【００５１】
［書込処理時のデータ配置制御処理の流れの一例］
図６は、第２の実施形態に係るマスタ１００による、データ配置制御処理の流れの一例を示すフローチャートである。図６を参照して、マスタ１００による、データ配置制御処理の流れを説明する。
【００５２】
まず、たとえばクライアント４００Ａが、ファイルＩＤ「Ａ」のデータの書込みを要求する書込要求をマスタ１００に対して送信する。書込要求は、データを書き込む対象であるファイルのファイルＩＤと、ファイル中の書込データの位置を示すオフセット「Ｚ」とを含む。なお、書込要求は後述する同一化部４１３によっても送信される。この場合の処理も以下と同様である。
【００５３】
データ配置制御部１１０は、書込要求を受信すると（ステップＳ６０１）、書込要求に含まれた情報に基づき、データを書き込む位置を特定する（ステップＳ６０２）。たとえば、書込要求に含まれたオフセット「Ｚ」が正の数である場合、データ配置制御部１１０は、オフセット「Ｚ」と予め定められたブロックサイズ（固定長）とを加算して、ブロックサイズで除算する。データ配置制御部１１０は、その結果得られた整商に応じた場所にあるブロックを、データを書き込むブロックであると判断する。また、書込要求に含まれたオフセット「Ｚ」が負の数である場合、データ配置制御部１１０は、当該ファイルの終端ブロックがデータを書き込むブロックであると判断する。
【００５４】
次に、データ配置制御部１１０は、データを書き込むブロックのデータＩＤの取得を試みる（ステップＳ６０３）。すなわち、データ配置制御部１１０は、冗長データ位置テーブル１２１を参照して、該当するデータＩＤのデータについての情報が格納されているか否かを判定する。情報が格納されていない場合（ステップＳ６０３、否定）、データ配置制御部１１０は、対応するデータがまだいずれのディスクにも格納されていないと判断して、新しいハンドル名を作成する（ステップＳ６０４）。そして、データ配置制御部１１０は、当該データの冗長データを格納するディスク（すなわち、対応するサーバまたはデータアクセス部）を決定する（ステップＳ６０５）。たとえば、データ配置制御部１１０は、予め作成すると定められている冗長データの数が３である場合、「３−１」個以上のスイッチ配下で動作するサーバを、作成する冗長データの数「３」だけ選択する。
【００５５】
そして、データ配置制御部１１０は、ステップＳ６０４で作成したハンドル名にもとづくデータＩＤと、ステップＳ６０５で選択したサーバの位置情報と、を対応づけて冗長データ位置テーブル１２１に登録する。冗長データ位置テーブル１２１への登録が失敗した場合（ステップＳ６０６、否定）、データ配置制御部１１０は、書込処理が失敗したことを、書込要求を出したクライアント４００Ａ（要求元）に送信する（ステップＳ６０７）。そして、書込処理を終える。冗長データ位置テーブル１２１への登録が成功した場合（ステップＳ６０６、肯定）は、ステップＳ６０３において、データ書込ブロックのデータＩＤを冗長データ位置テーブル１２１から取得し、かつ、ステップＳ６０８において冗長データ位置テーブル１２１から位置情報を取得した場合と同じ処理となる（後述）。
【００５６】
ステップＳ６０３に戻り、データ配置制御部１１０は、データ書込ブロックのデータＩＤを冗長データ位置テーブル１２１から取得した場合（ステップＳ６０３、肯定）、次に、当該データＩＤに対応する冗長データが格納される位置情報を取得する（ステップＳ６０８）。すなわち、冗長データ位置テーブル１２１を参照して、当該データＩＤに対応づけて格納されている位置情報を取得する。位置情報を取得できなかった場合（ステップＳ６０８、否定）、ステップＳ６０７に進み、書込処理失敗をクライアント４００Ａに通知する。そして、処理を終える。
【００５７】
位置情報を取得できた場合（ステップＳ６０８、肯定）、データ配置制御部１１０は、位置情報によって示されるサーバまたはデータアクセス部に対する書込制御処理を実行する（ステップＳ６０９）。図７は、第２の実施形態に係るマスタ１００による、書込制御処理の流れの一例を示すフローチャートである。図７を参照し、データ配置制御部１１０の書込制御処理の流れの一例を説明する。
【００５８】
データ配置制御部１１０は、クライアント４００Ａから受信した書込要求に対応するデータＩＤと書込場所を示す位置情報とを取得すると（図６、ステップＳ６０８、肯定）、取得したデータＩＤのハンドル名が、処理対象リスト１２２に登録されているか否かを判定する（ステップＳ７０１）。処理対象リスト１２２に当該データＩＤのハンドル名が登録されている場合、当該データＩＤに対応するデータブロックの書込処理が実行中であることを意味する。したがって、処理対象リスト１２２に当該データＩＤのハンドル名が登録されている場合（ステップＳ７０１、肯定）、データ配置制御部１１０は書込制御処理をそのまま終了する。
【００５９】
処理対象リスト１２２に当該データＩＤが登録されていない場合（ステップＳ７０１、否定）、当該データＩＤに対応するデータブロックに対する書込処理は実行中ではないことを意味する。したがって、データ配置制御部１１０は、次の処理に進み、ステップＳ６０８において取得した位置情報に含まれるデータアクセス部（または対応するサーバ若しくはディスク）を１つ選択する（ステップＳ７０２）。たとえば、データ配置制御部１１０は、データアクセス部をランダムに選択する。また、たとえば、クライアント４００Ａから経由するスイッチ数が最も少ないデータアクセス部を選択してもよい。そして、データ配置制御部１１０は、選択した位置情報に対応するデータアクセス部に対して、書込制御命令を送信する（ステップＳ７０３）。書込制御命令は、書込対象であるデータブロックを特定する情報を含む。書込制御命令は、書込対象のデータハンドルについて書込制御を行うことを命令するものである。
【００６０】
そして、データ配置制御部１１０は、書込制御命令の送信先であるデータアクセス部から、命令受信応答を受信したか否かを判定する（ステップＳ７０４）。なお、命令受信応答は、書込制御命令に応じて、書込制御処理および書込処理が完了したことを意味するものではなく、書込制御命令を受信したことを意味するものである。
【００６１】
データ配置制御部１１０は、命令受信応答を受信していないと判定した場合（ステップＳ７０４、否定）、再び、ステップＳ７０２に戻って、データアクセス部を選択しなおし（ステップＳ７０２）、書込制御命令を送信する（ステップＳ７０３）。命令受信応答を受信しない場合としては、たとえば、タイムアウトやコネクションが切れた場合等が考えられる。他方、データ配置制御部１１０は、命令受信応答を受信したと判定すると（ステップＳ７０４、肯定）、冗長データ位置テーブル１２１に、当該データＩＤに対応付けて格納されている位置情報の中から、ステップＳ７０２において選択したデータアクセス部に対応する位置情報を抽出し、当該位置情報が、リストの先頭にくるように、冗長データ位置テーブル１２１を更新する（ステップＳ７０５）。そして、データ配置制御部１１０は、処理対象リスト１２２に、書込制御命令の対象である書込対象データのハンドル名と、書込制御命令の送信先であるデータアクセス部の位置情報と、を登録する（ステップＳ７０６）。そして、データ配置制御部１１０は、冗長データ位置テーブル１２１に登録した、書込対象データのデータＩＤのうち、バージョン番号を更新する（ステップＳ７０７）。データ配置制御部１１０は、更新したバージョン番号を、当該データＩＤに対応づけて格納されている位置情報に含まれるデータアクセス部に通知する（ステップＳ７０８）。これによって、データ配置制御部１１０による書込制御処理が終了する。
【００６２】
再び図６に戻り、書込処理を説明する。ステップＳ６０９におけるデータ配置制御部１１０による書込制御処理が完了すると、データ配置制御部１１０は、書込要求の送信元であるクライアント４００Ａに、冗長データ位置テーブル１２１に登録した情報を送信する（ステップＳ６１０）。すなわち、データ配置制御部１１０は、図６の書込制御処理を通じて、冗長データ位置テーブル１２１に格納されている、書込要求の対象であるデータブロックのデータＩＤと当該データＩＤに対応付けられている位置情報とを、クライアント４００Ａに送信する。
【００６３】
そして、データ配置制御部１１０は、クライアント４００Ａからの情報を受信した旨の受信応答の受信有無によって、要求元への送信処理が成功したか否かを判定する（ステップＳ６１１）。送信処理が成功したと判定した場合（ステップＳ６１１、肯定）、データ配置制御部１１０は、データ配置制御処理を終了する。また、送信処理が失敗したと判定した場合（ステップＳ６１１、否定）、データ配置制御部１１０は、送信処理を行った回数がＮ回（Ｎは１以上の自然数）以下であるか否かを判定する（ステップＳ６１２）。Ｎ回以下であると判定した場合（ステップＳ６１２、肯定）、データ配置制御部１１０は、ステップＳ６１０に戻って再び情報を送信する。また、Ｎ回以下ではないと判定した場合（ステップＳ６１２、否定）、データ配置制御部１１０は、それ以上情報を送信することなく、データ配置制御処理を終了する。これによって、書込処理時の、データ配置制御部１１０によるデータ配置制御処理が終了する。
【００６４】
［書込部による書込処理の流れの一例］
図６及び図７に示すように、データ配置制御部１１０がデータ配置制御処理および書込制御処理を実行すると、要求元（クライアント）に対して、処理を実行するために必要なデータが送信される。クライアントは受信したデータを使用して、データアクセス部にアクセスし、データの書込みおよび読み出しを実行させる。次に、クライアント側からの書込処理の流れの一例を説明する。
【００６５】
図８は、第２の実施形態に係る書込部による書込処理の流れの一例を示すフローチャートである。図８は、たとえばクライアント４００Ａが備える書込部４０２Ａによる書込処理の流れの一例を示す図である。図８を参照し、クライアント４００Ａによる書込処理の流れの一例を説明する。
【００６６】
まず、クライアント４００Ａがデータの書込処理を実行しようとする場合、アプリケーション実行部４０１Ａは、書込要求を生成する。書込要求は、書き込むデータのファイルＩＤと、ファイル終端の位置を示すオフセットと、を含む。書込要求に含まれるファイルＩＤ、オフセットは、書き込む対象であるデータとともに、アプリケーション実行部４０１Ａから書込部４０２Ａに送られる（ステップＳ８０１）。また、書込部４０２Ａが受けた書込要求は、書込部４０２Ａからマスタ１００に送信される（図６のＳ６０１参照）。
【００６７】
また、書込要求を受信したマスタ１００のデータ配置制御部１１０は、書込要求に応じてデータを書き込む対象となるデータブロックのデータＩＤおよび当該データブロックの位置情報を、冗長データ位置テーブル１２１を参照して取得し、書込部４０２Ａに送信する。これによって書込部４０２Ａは、書き込む対象となるデータブロックのデータＩＤと当該データブロックの位置情報を取得する（ステップＳ８０２）。
【００６８】
次に、書込部４０２Ａは、取得した位置情報から、書込対象データブロックが格納されるディスクを配下にもつサーバまたは書込対象データブロックへの書込アクセスを制御するデータアクセス部の情報を抽出する。そして、抽出したサーバまたはデータアクセス部のうち、書込部４０２Ａから最も近いサーバまたはデータアクセス部を１つ選択する（ステップＳ８０３）。ここで、「最も近い」とは、たとえば、書込部４０２Ａから当該サーバまたはデータアクセス部までの間に介装されているスイッチの数が最も少ないこと、さらに、経由するスイッチの数が最も少ないデータアクセス部が複数存在する場合は、「ｌｏｇ（「自身のＩＰアドレス」ＥＸＯＲ「相手のＩＰアドレス」）」の値が最も小さい値、さらに、この値が同一となるデータアクセス部が複数存在する場合は、同一となるデータアクセス部のうち取得した位置情報の中で先に取得したデータアクセス部を選択する。
【００６９】
書込部４０２Ａは、データアクセス部、たとえば、データアクセス部２０１Ａを選択する。そして、書込部４０２Ａは、選択したデータアクセス部２０１Ａに対して、書込処理のための情報を送信する（ステップＳ８０４）。たとえば、書込部４０２Ａは、書込対象ブロックのデータＩＤと、書込対象ブロックのオフセットと、実際に書き込むデータと（ステップＳ８０１で取得）、位置情報（ステップＳ８０２で取得）と、メッセージＩＤと、を送信する。メッセージＩＤとは、書込部４０２Ａが、データ整合システム１において一意となるように生成して付与する識別子である。
【００７０】
そして、データアクセス部２０１Ａに書込処理のための情報を送信した後、書込部４０２Ａは、メッセージＩＤに対応づけられた書込命令を、位置情報の中でリストの先頭のサーバ（すなわち、書込制御を行うデータアクセス部）に送信する（ステップＳ８０５）。書込命令は、メッセージＩＤに対応付けられたデータの書込を命令する。
【００７１】
そして、書込部４０２Ａは、書込命令の送信先のデータアクセス部から命令受信応答を受信したか否かを判定する（ステップＳ８０６）。たとえば、予め所定の時間を設定しておき、当該所定の時間内に命令受信応答を受信した場合は受信したと判定し、当該所定の時間内に命令受信応答を受信していない場合は受信していないと判定すればよい。そして、命令受信応答を受信した場合（ステップＳ８０６、肯定）、書込部４０２Ａは、アプリケーション実行部４０１Ａに、データアクセス部２０１Ａからの命令受信応答を受信した旨を通知できるか否かを判定する（ステップＳ８０７）。書込部４０２Ａは、通知できると判定した場合（ステップＳ８０７、肯定）、アプリケーション実行部４０１Ａに通知する（ステップＳ８０８）。そして、書込処理を正常終了する（ステップＳ８０９）。
【００７２】
これに対し、ステップＳ８０７において、書込部４０２Ａは命令受信応答を受信した旨を通知できないと判定した場合（ステップＳ８０７、否定）、通知を行わずに、書込処理を異常終了する（ステップＳ８１０）。
【００７３】
また、ステップＳ８０６において、データアクセス部２０１Ａから命令受信応答を受信していないと判定した場合（ステップＳ８０６、否定）、書込部４０２Ａは、アプリケーション実行部４０１Ａに書込命令が失敗した旨を通知できるか否かを判定する（ステップＳ８１１）。そして、通知できると判定した場合（ステップＳ８１１、肯定）、書込部４０２Ａは、アプリケーション実行部４０１Ａに、書込命令が失敗した旨を通知する（ステップＳ８１２）。そして、書込処理を異常終了する（ステップＳ８１３）。これに対して、通知できないと判定した場合（ステップＳ８１１、否定）、通知は行わずに、書込処理を異常終了する（ステップＳ８１０）。これによってクライアント４００Ａにおける書込処理が終了する。
【００７４】
［データアクセス部における書込実行前処理の流れの一例］
図９は、第２の実施形態に係るデータアクセス部における書込実行前処理の流れの一例を示すフローチャートである。図９を参照し、データアクセス部における書込処理の流れの一例を説明する。
【００７５】
まず、たとえばデータアクセス部２０１Ａは、データの書込処理を実行するための情報を、書込部４０２Ａまたは他のデータアクセス部から受信する（ステップＳ９０１）。受信する情報は、たとえば図８のステップＳ８０４において、書込部４０２Ａが送信した情報である。本実施例では、書込のための情報は、書込部４０２Ａから１つのデータアクセス部に送られ、当該データアクセス部から他のデータアクセス部に送信される。
【００７６】
データアクセス部２０１Ａは、受信した情報のうち、位置情報を抽出し、その中に、自身以外のデータアクセス部が含まれているか否かを判定する（ステップＳ９０２）。他のデータアクセス部が位置情報に含まれていない場合（ステップＳ９０２、否定）、データアクセス部２０１Ａは、書込要求の送信元であるクライアント４００Ａに情報受信に成功した旨の通知を送信する（ステップＳ９０３）。
【００７７】
これに対して、他のデータアクセス部が位置情報に含まれている場合（ステップＳ９０２、肯定）、データアクセス部２０１Ａは、他のデータアクセス部を１つ選択する（ステップＳ９０４）。このとき、データアクセス部２０１Ａは、図８のステップＳ８０３と同様の基準でデータアクセス部を選択すればよい。そして、データアクセス部２０１Ａは、自身の位置情報を除いた位置情報を作成する。
【００７８】
次に、データアクセス部２０１Ａは、受信した書込処理のためのデータのうち、位置情報をステップＳ９０４において作成した位置情報と置き換えて、ステップＳ９０４で選択したデータアクセス部に送信する（ステップＳ９０５）。そして、データアクセス部２０１Ａは、情報を受信した旨の応答が送信されるのを待つ。情報を受信した旨の応答を受信した場合（ステップＳ９０６、肯定）、データアクセス部２０１Ａは、ステップＳ９０３に進み、送信元のクライアント４００Ａに、情報受信が成功した旨の通知を送信する。これに対して、情報を受信した旨の応答を受信しない場合（ステップＳ９０６、否定）、データアクセス部２０１Ａは、送信元のクライアント４００Ａに、情報受信に失敗した旨の通知を送信する（ステップＳ９０７）。これによってデータアクセス部２０１Ａでの処理が終了する。
【００７９】
［データアクセス部における書込実行処理の流れの一例］
次に、図１０を参照して、データアクセス部における書込実行処理の流れを説明する。図１０は、第２の実施形態に係るデータアクセス部における書込実行処理の流れの一例を示すフローチャートである。なお、本実施例では、複数のサーバに冗長データを書き込む場合、まず、書込処理のための情報を１つのサーバに送信し、当該サーバから他の該当するサーバに順次情報を送信する。そして、書込を実行する際には、書込部が予め定められた処理順序に従い、最初に書込を行うサーバに書込命令を送信する。他のサーバに対しては、書込部ではなく、最初に書込を行うサーバから書込命令を送信する。図１０は、最初に書込を行うサーバ（すなわち、書込制御を行うデータアクセス部）での書込実行処理を示す。
【００８０】
まず、たとえばデータアクセス部２０１Ａは、書込部４０２Ａから書込命令を受信する（ステップＳ１００１）。データアクセス部２０１Ａは、それまでに例えば、図９に示すステップＳ９０１の処理によって、書込処理を実行するためのデータを受信している。そして、データアクセス部２０１Ａは、書込命令に応じて、書込対象データを指定された位置に書き込む処理を実行する（ステップＳ１００２）。このとき、データアクセス部２０１Ａは、書込部４０２Ａから受信した書込命令に含まれるメッセージＩＤによって、書込対象データを特定する。次に、データアクセス部２０１Ａは、ステップＳ７０３（図７）において受信したデータに含まれる位置情報の中の他のデータアクセス部に対して、書込命令を送信する（ステップＳ１００３）。そして、データアクセス部２０１Ａは、命令を送信できたか否かを判定する（ステップＳ１００４）。命令を送信できなかったと判定した場合（ステップＳ１００４、否定）、データアクセス部２０１Ａは、それ以上処理を行わず、異常終了する（ステップＳ１００８）。
【００８１】
これに対して、命令を送信できたと判定した場合（ステップＳ１００４、肯定）、データアクセス部２０１Ａは、書込命令の送信先であるデータアクセス部から命令成功応答があったか否かを判定する（ステップＳ１００５）。全てのデータアクセス部から命令成功応答があったと判定した場合（ステップＳ１００５、肯定）、データアクセス部２０１Ａは、送信元のクライアント４００Ａに、書込が完了した旨の通知を送信する（ステップＳ１００６）。そして、データアクセス部２０１Ａは、書込実行処理を正常終了する（ステップＳ１００７）。これに対して、全てのデータアクセス部からの命令成功応答を受信していないと判定した場合（ステップＳ１００５、否定）、データアクセス部２０１Ａは、それ以上処理を行わず、異常終了する（ステップＳ１００８）。これによって書込実行処理が終了する。
【００８２】
［第２の実施形態に係るデータ整合システムにおける処理の流れ］
図１１は、第２の実施形態に係るデータ整合システム１における正常時の処理の流れの一例を概括的に示す図である。図１１を参照し、第２の実施形態に係るデータ整合システム１における正常時の処理の流れの一例について説明する。
【００８３】
図１１に示すように、クライアント４００（以下、「クライアント４００」は、クライアント４００Ａ，４００Ｂ，４００Ｃのいずれか１つを示す）が、マスタ１００に対して書込要求を送信する（図１１の（１））。書込要求は、ファイルＩＤとオフセットを含む。書込要求を受信したマスタ１００は、ファイルＩＤとオフセットに基づき、冗長データ位置テーブル１２１を参照して、要求された書込処理の対象データのデータＩＤと位置情報とを抽出する。対応するデータＩＤが冗長データ位置テーブル１２１に登録されていない場合は、新たなハンドル名を作成して登録する（図１１の（２））。
【００８４】
マスタ１００はさらに、処理対象リスト１２２を参照して（図１１の（３））、書込対象データのハンドル名が登録されていない場合、書込処理制御を行うデータアクセス部を１つ選択する（図１１の（４））。そして、選択したデータアクセス部に書込制御命令を送信する（図１１の（５））。データアクセス部から応答を受信する（図１１の（６））と、マスタ１００は、冗長データ位置テーブル１２１と処理対象リスト１２２とを更新し（図１１の（７））、更新後のバージョン番号をデータアクセス部に通知する（図１１の（８））。その後、マスタ１００は、クライアント４００に書込処理の対象データのデータＩＤと、対応する位置情報とを送信する（図１１の（９））。
【００８５】
クライアント４００は、書込要求に含めたファイルＩＤおよびオフセット（図１１の（１）参照）と、書込むデータと、マスタ１００から受信したデータＩＤおよび位置情報（図１１の（９））と、クライアント４００において一意となるよう付与したメッセージＩＤと、を図８のステップＳ８０３と同様の基準で選択したデータアクセス部に送信する（図１１の（１０））。情報を受信したデータアクセス部は、位置情報を参照して、他のデータアクセス部が位置情報に含まれていれば、自身の情報を位置情報から削除した上で、当該他のデータアクセス部に受信した情報を送信する（図１１の（１１））。情報を受信した他のデータアクセス部も同様の処理を実行する（図１１の（１２））。
【００８６】
その後、クライアント４００は、書込制御を行うデータアクセス部（図１１の（４）参照）に書込実行命令を送信する（図１１の（１３））。書込実行命令を受信したデータアクセス部は、データを配下のディスクに書き込んだ上で、書込実行命令を位置情報に含まれていた他のデータアクセス部（複数あれば全てに）送信する（図１１の（１４））。データが該当する全てのディスクに書き込まれると、書込制御を行うデータアクセス部に他のデータアクセス部から完了応答が送信される（図１１の（１５））。書込制御を行うデータアクセス部は、全ての完了応答を受信すると、クライアントに完了応答を送信する（図１１の（１６））。正常時の書込処理はこのようにして完了する。
【００８７】
［読出処理時のデータ配置制御処理の流れの一例］
図１２は、第２の実施形態に係るデータ配置制御部１１０による、読出処理時のデータ配置制御処理の流れの一例を示すフローチャートである。図１２を参照し、第２の実施形態に係るマスタ１００における、読出処理時のデータ配置制御処理の流れの一例につき説明する。
【００８８】
まず、たとえばクライアント４００Ａがマスタ１００に読出要求を送信する。なお、読出要求は後述する比較部４１２によっても送信される。この場合の処理も以下と同様である。読出要求は、読み出す対象ファイルのファイルＩＤと、読み出す対象ファイルの終端位置を示すオフセット「Ｚ」と、を含む。マスタ１００のデータ配置制御部１１０は、読出要求を受信する（ステップＳ１２０１）と、読出要求に含まれるファイルＩＤとオフセット「Ｚ」とを抽出する。そして、データ配置制御部１１０は、抽出した情報に基づき、当該ファイルの何番目のブロックからの読み出しを行うのかを特定する（ステップＳ１２０２）。この処理は図６のステップＳ６０２と同様である。
【００８９】
次に、データ配置制御部１１０は、冗長データ位置テーブル１２１から、特定したブロックに対応するブロックデータのデータＩＤを取得することを試みる（ステップＳ１２０３）。データＩＤを取得できなかった場合（ステップＳ１２０３、否定）、データ配置制御部１１０は、読出要求を送信したクライアント４００Ａ（要求元）に対して、読出処理に失敗した旨を通知して（ステップＳ１２０４）、処理を終える。他方、データＩＤを取得できた場合（ステップＳ１２０３、肯定）、データ配置制御部１１０は、次に、当該データＩＤに対応する位置情報を、冗長データ位置テーブル１２１から取得することを試みる（ステップＳ１２０５）。位置情報を取得できなかった場合（ステップＳ１２０５、否定）は、データＩＤを取得できなかった場合（ステップＳ１２０３、否定）と同様に、クライアント４００Ａに読出処理に失敗した旨を通知して（ステップＳ１２０４）、処理を終える。
【００９０】
位置情報を取得できた場合（ステップＳ１２０５、肯定）は、データ配置制御部１１０は、冗長データ位置テーブル１２１から取得したデータＩＤ（ステップＳ１２０３）および位置情報（ステップＳ１２０５）を、クライアント４００Ａ（要求元）に送信する（ステップＳ１２０６）。そして、データ配置制御部１１０は、送信処理が成功したか否かを判定する（ステップＳ１２０７）。たとえば、クライアント４００Ａから受信応答を受け取ることによって、成功したか否かを判定すればよい。
【００９１】
送信処理が成功したと判定した場合（ステップＳ１２０７、肯定）、データ配置制御部１１０は、処理を終える。他方、送信処理が失敗したと判定した場合（ステップＳ１２０７、否定）、データ配置制御部１１０は、送信処理の失敗回数がＮ回（Ｎは１以上の自然数）以下であるか否かを判定する（ステップＳ１２０８）。Ｎ回以下であると判定した場合（ステップＳ１２０８、肯定）、データ配置制御部１１０は、ステップＳ１２０６に戻って再び情報を要求元に送信する。他方、Ｎ回以下ではないと判定した場合（ステップＳ１２０８、否定）、データ配置制御部１１０は、そのまま処理を終える。ここで、Ｎはリトライ数の上限値として予め定めておけばよい。
【００９２】
［読出部による読出処理の流れの一例］
図１３は、第２の実施形態に係る読出部による読出処理の流れの一例を示すフローチャートである。図１３を参照し、読出部（たとえば４０３Ａ）による読出処理の流れの一例を説明する。
【００９３】
まず、読出部４０３Ａは、アプリケーション実行部４０１Ａからデータを読み出すファイルＩＤを取得する（ステップＳ１３０１）。次に、読出部４０３Ａは、アプリケーション実行部４０１Ａから読み出すデータのオフセットと、データ長を取得する（ステップＳ１３０２）。次に、読出部４０３Ａは、データ配置制御部１１０から、取得したファイルＩＤ、オフセットおよびデータ長に基づき、読み出すデータを保持するブロックのデータＩＤと、当該データＩＤに対応付けられた位置情報を取得する（ステップＳ１３０３）。データＩＤと、当該データＩＤに対応付けられた位置情報と、を取得する際のデータ配置制御部１１０の処理が、図１２の処理にあたる。
【００９４】
次に、読出部４０３Ａは、データ配置制御部１１０から取得した位置情報のうち最も近いデータアクセス部を１つ選択する（ステップＳ１３０４）。このとき、読出部４０３Ａは、図８のステップＳ８０３と同様の基準でデータアクセス部を選択すればよい。
【００９５】
そして、読出部４０３Ａは、選択したデータアクセス部に読出命令を送信してデータを読み出す（ステップＳ１３０５）。読出命令は、当該処理でアプリケーション実行部４０１Ａが指定したデータを読み出す命令である。
【００９６】
読出部４０３Ａは、読み出したデータをアプリケーション実行部４０１Ａに送信する（ステップＳ１３０６）。これによって、読出処理が完了する。
【００９７】
［データアクセス部における読出実行処理の流れの一例］
図１４は、第２の実施形態に係るデータアクセス部における読出実行処理の流れの一例を示すフローチャートである。図１４を参照し、図１３のように読出部４０３Ａから読出命令があった場合のデータアクセス部における処理の流れの一例を説明する。
【００９８】
まず、データアクセス部、たとえばデータアクセス部２０１Ａは、読出部４０３Ａから読出命令を受信する（ステップＳ１４０１）。データアクセス部２０１Ａは、読出命令に応じて、配下のディスクから該当するデータを読み出す（ステップＳ１４０２）。そして、データアクセス部２０１Ａは、読み出したデータを読出部４０３Ａに送信する（ステップＳ１４０３）。これによってデータアクセス部における読出実行処理が終了する。
【００９９】
［異常終了時の冗長データの状態］
図１５は、データアクセス部が、書込処理中に異常終了した場合の冗長データの状態を説明するための図である。図１５を参照して、書込処理が異常終了した場合に発生しうる冗長データの状態について説明する。
【０１００】
たとえば、図１０のステップＳ１００５においてデータアクセス部２０１Ａが他のデータアクセス部からの命令成功応答を受信しなかった場合、他のデータアクセス部において冗長データの正常な書込が完了していない場合が考えられる。また、図１０の処理を実行する書込制御を実行するデータアクセス部が、他のデータアクセス部に書込命令を送信（ステップＳ１００３、図１０）した後に何らかの理由で停止した場合、当該データアクセス部は、外部からアクセス不可能な状態となる。また、他のデータアクセス部は書込が成功したか否かの応答を当該データアクセス部に送信することができないため、これらのデータアクセス部において冗長データの書込が成功したか否かを、外部から知ることができない。
【０１０１】
図１５に示すように、ファイル「Ａ」のデータを３つのブロックに分割して、データＩＤ「ａ３３」の冗長データを３つのディスクに格納しようとした場合を考える。この場合、最初に書込を実行しようとしたサーバが停止すると、当該サーバに対応するディスクに冗長データが書き込まれたのか否かは不明であり、また当該ディスクにはデータアクセスすることができなくなる。この状態を図１５の（１）に示す。このようにサーバが停止して書込の成否が不明になった場合、冗長データ位置テーブル１２１においては、データＩＤに対応して格納されていたサーバの位置情報が削除される。
【０１０２】
また、停止したサーバのデータアクセス部に対して書込の成否を通知するデータアクセス部については、書込が成功したのか否かを知ることができない。したがって、これらのデータアクセス部が制御する書き込みデータの状態は、図１５の（２），（３）に示すようになる。
【０１０３】
［データ整合処理の流れの一例］
図１６は、第２の実施形態に係るデータ整合装置４１０におけるデータ整合処理の流れの一例を示すフローチャートである。図１６を参照し、第２の実施形態に係るデータ整合装置４１０におけるデータ整合処理の流れの一例を説明する。
【０１０４】
まず、クライアント４００がデータ整合処理を実行しようとする場合、整合要求を生成する。データ整合装置４１０（比較部４１２）は、生成された整合要求を受け取る（ステップＳ１６０１）。整合要求は、たとえば、データアクセス部２０１Ａ，２０１Ｂ，２０１Ｃのいずれかにおいて、データの書込処理が正常に終了せず、書込要求の要求元であるクライアント４００Ａ，４００Ｂ，４００Ｃのいずれかに、書込完了の通知が送信されなかった場合等に、クライアント４００Ａ，４００Ｂ，４００Ｃが生成する。クライアント４００Ａ，４００Ｂ，４００Ｃではアプリケーション実行部４０１Ａ，４０１Ｂ，４０１Ｃが、書込対象データの重要性や処理の内容に応じて、整合要求を送るか否かを判断すればよい。整合要求は、整合の対象となるファイルＩＤを含む。整合要求はまた、指定するファイルＩＤの末尾ブロックのデータ長を揃える要求である。
【０１０５】
整合要求を受けたデータ整合装置４１０は、冗長データ位置テーブル１２１から、整合要求に含まれるファイルＩＤで書き込まれているデータブロックのうち、末尾のブロックに対応するデータＩＤと、当該データＩＤに対応付けられている位置情報の取得を試みる（ステップＳ１６０２）。データ整合装置４１０は、データＩＤと位置情報を取得できなかった場合（ステップＳ１６０２、否定）は、そのままデータ整合処理を終了する。なお、データＩＤと位置情報の取得は図１３に示す手順と同様に行えばよい。
【０１０６】
他方、データ整合装置４１０は、データＩＤと位置情報を取得できた場合（ステップＳ１６０２、肯定）、次に、取得した位置情報の中に複数のデータアクセス部が含まれているか否かを判定する（ステップＳ１６０３）。
【０１０７】
そして、複数のデータアクセス部が含まれていない（ステップＳ１６０３、否定）と判定した場合、そのままデータ整合処理を終了する。他方、複数のデータアクセス部が含まれている（ステップＳ１６０３、肯定）と判定した場合、比較部４１２は、各データアクセス部が制御するディスクに格納された、整合要求（具体的には、ステップＳ１０６２）によって特定されたデータＩＤに対応するデータブロックのデータ長を取得する（ステップＳ１６０４）。データ長を取得できなかった場合（ステップＳ１６０５、否定）は、再びステップＳ１６０２に戻る。これに対して、データ長を取得できた場合（ステップＳ１６０５、肯定）は、次に比較部４１２は、複数のデータブロックのデータ長がすべて一致するか否かを判定する（ステップＳ１６０６）。比較部４１２は、データ長が一致したと判定した場合（ステップＳ１６０６、肯定）、データ整合処理を終了する。これに対して、データ長が一致しないと判定した場合（ステップＳ１６０６、否定）、比較部４１２は、処理を同一化部４１３に渡し、同一化部４１３が同一化処理を実行する（ステップＳ１６０７）。同一化処理については、詳しく後述する。同一化処理が完了すると、データ整合処理は終了する。
【０１０８】
［同一化処理の流れの一例］
図１７は、第２の実施形態に係るデータ整合装置４１０における同一化処理の流れの一例を示す図である。図１７を参照し、同一化部４１３による同一化処理の流れの一例を説明する。なお、図１７の例では、比較部４１２が比較した冗長データの数は２であるとする。
【０１０９】
まず、比較部４１２が、複数（２つ）のデータのデータ長が一致しないと判定した場合（図１６のステップＳ１６０６、否定）、同一化部４１３は、比較部４１２が比較した２つのデータブロックのデータ長のうち、短い方のデータ長を選択する（ステップＳ１７０１）。ここでは、比較した２つのデータブロックをそれぞれ「データＡ」、「データＢ」と呼ぶ。そして、同一化部４１３は、選択したデータ長がデータＡのものであるか否かを判定する（ステップＳ１７０２）。選択したデータ長がデータＢのものであると判定した場合（ステップＳ１７０２、否定）、同一化部４１３は、データＡのデータ長をデータＢに合わせるように、データＡを切り詰める（ステップＳ１７０３）。他方、選択したデータ長がデータＡのものであると判定した場合（ステップＳ１７０２、肯定）、同一化部４１３は、データＢのデータ長をデータＡに合わせるように、データＢの長さを切り詰める（ステップＳ１７０４）。そして、同一化部４１３は、同一化処理が完了した旨を、整合要求の要求元に通知する（ステップＳ１７０５）。
【０１１０】
同一化部４１３が、同一化処理を行う際は、図６に示したデータ配置制御処理と同様の処理が実行される。すなわち、同一化部４１３は、データ配置制御部１１０に対して、データ長を揃える対象データブロックを取得するため、ファイルＩＤと、負数を指定したオフセットと、を含む命令を送信する。データは位置制御部１１０では、オフセットに負数を指定した場合は、ファイルの末尾ブロックが指定されたことと同意であると判定する。そのため、命令に応じてデータ配置制御部１１０が、指定したファイルＩＤのファイル末尾のデータＩＤと位置情報を同一化部４１３に送信するとともに、データアクセス部に制御命令を送る。その後の処理は、図６に例示したものと同様である。
【０１１１】
なお、データ整合処理を行った場合の読出処理も図１３、図１４に示した処理と同様に実行される。ただし、データアクセス部のいずれかの異常終了等により、ディスクがアクセスできない状態になっている場合は、冗長データ位置テーブル１２１の位置情報からは当該データアクセス部の情報が削除されているため、読出部が取得できる位置情報の内容が通常とは変更されている。また、データ整合処理の結果、通常の書込処理時と同様に冗長データ位置テーブル１２１や処理対象リスト１２２が更新されている。
【０１１２】
［第２の実施形態の効果］
このように第２の実施形態に係るデータ整合システム１は、１以上のクライアントとネットワークを介して接続されるシステムであって、同一のデータの複製である冗長データをそれぞれ格納する複数の記憶装置と、複数の記憶装置に格納される冗長データへのアクセスを制御し、それぞれ複数の記憶装置の１つに接続される複数のサーバと、クライアントからの要求に応じて、複数の記憶装置それぞれに格納される、冗長データのデータ長を比較する比較部４１２と、比較部４１２が冗長データのデータ長が同一ではないと判定した場合に、複数の記憶装置に格納された冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える同一化部４１３と、を備える。このため、書込処理が異常終了した場合であっても、上位アプリケーション側の選択に応じて、冗長データのデータ長を揃えることができる。したがって、異なる記憶装置に格納される冗長データ相互間で不整合が生じることが防止されるとともに、データの信頼性を向上させることができる。また、上位アプリケーションは、異常終了した書込処理の対象データの特徴に応じて、データ整合処理の要否を判定した上で、整合要求を発行することができ、異常終了時に自動的に再書き込みを行う等の対処法に比べて、上位アプリケーションにかかる負荷を減じて、処理性能の低下を抑制することができる。
【０１１３】
また、第２の実施形態に係るデータ整合システム１においては、複数の記憶部はそれぞれ、同一のファイルデータを固定長のブロックに分割し同一のデータブロックを複製して得た前記冗長データを格納し、比較部４１２は、データブロックの識別子と、当該データブロックの格納先として指定される複数の記憶部の中から選択された２以上の記憶部の位置情報と、を対応付けて記憶する冗長データ位置テーブル１２１を参照して、同一のデータブロックに対応づけて記憶される２以上の記憶部の冗長データのうち末尾のデータブロックのデータ長を比較する。このため、ファイル末尾のブロックの冗長データ間でデータ長が一致している場合は、データ長を揃える処理を実行しない。したがって、チェックサム等を用いて冗長データ間の不一致を検出する場合と比較して、短い処理時間で上位アプリケーションに応答を返すことができる。また、上位アプリケーションは、データ整合処理を実行するか否かを選択するのみで冗長データの整合性を維持することができ、処理負荷が低減される。また、書込処理が異常終了した場合には自動的にデータ整合処理を実行するものとしておけば、アプリケーション実行部自体が停止した場合でも、冗長データ間の整合性を維持することができる。
【０１１４】
［第３の実施形態］
これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。以下に、その他の実施形態を説明する。
【０１１５】
［システム構成］
上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１１６】
また、上記実施形態の説明においては、クライアント４００Ａがアプリケーション実行部４０１Ａ、書込部４０２Ａ、読出部４０３Ａ、データ整合装置４１０Ａを備えるものとして説明したが、これらの機能の一部をマスタ１００に組み入れてもよい。たとえば、書込命令、読出命令、またはデータ整合命令はマスタ１００のデータ配置制御部１１０がデータアクセス部２０１Ａ，２０１Ｂ，２０１Ｃに対して送信するように構成してもよい。また、書込部４０２Ａ，４０２Ｂ，４０２Ｃ、読出部４０３Ａ，４０３Ｂ，４０３Ｃ、またはデータ整合装置４１０Ａ，４１０Ｂ，４１０Ｃの機能の一部をサーバ２００Ａ，２００Ｂ，２００Ｃのデータアクセス部２０１Ａ，２０１Ｂ，２０１Ｃが実行してもよい。
【０１１７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、図３に示す例では、書込部４０２Ａ、かつ、読出部４０３Ａ、かつ、データ整合装置４１０Ａを、クライアント４００Ａの一部として図示したが、書込部４０２Ａ、読出部４０３Ａ、および、データ整合装置４１０Ａの機能の一部を、マスタ１００に組み込んでもよい。たとえば、クライアント４００Ａの動作または機能として説明した動作または機能は、マスタ１００に組み入れることができる。
【０１１８】
［プログラム］
図１８は、データ整合システム１による一連の処理を実行するプログラムであるデータ整合プログラムによる情報処理が、コンピュータを用いて具体的に実現されることを示す図である。図１８に例示するように、コンピュータ３０００は、例えば、メモリ３０１０と、ＣＰＵ（Central  Processing  Unit）３０２０と、ハードディスクドライブ３０８０と、ネットワークインタフェース３０７０とを有する。コンピュータ３０００の各部はバス３１００によって接続される。
【０１１９】
メモリ３０１０は、図１８に例示するように、ＲＯＭ３０１１及びＲＡＭ３０１２を含む。ＲＯＭ３０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。
【０１２０】
ここで、図１８に例示するように、ハードディスクドライブ３０８０は、例えば、ＯＳ３０８１、アプリケーションプログラム３０８２、プログラムモジュール３０８３、プログラムデータ３０８４を記憶する。すなわち、開示の技術に係るデータ整合プログラムは、コンピュータによって実行される指令が記述されたプログラムモジュール３０８３として、例えばハードディスクドライブ３０８０に記憶される。例えば、データ配置制御部１１０、データ整合装置４１０、および、データアクセス部における処理と同様の情報処理を実行する手順各々が記述されたプログラムモジュール３０８３が、ハードディスクドライブ３０８０に記憶される。
【０１２１】
また、記憶部１２０に記憶されるデータのように、データ整合プログラムによる情報処理に用いられるデータは、プログラムデータ３０８４として、例えばハードディスクドライブ３０８０に記憶される。そして、ＣＰＵ３０２０が、ハードディスクドライブ３０８０に記憶されたプログラムモジュール３０８３やプログラムデータ３０８４を必要に応じてＲＡＭ３０１２に読み出し、各種の手順を実行する。
【０１２２】
なお、データ整合プログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ハードディスクドライブ３０８０に記憶される場合に限られない。例えば、プログラムモジュール３０８３やプログラムデータ３０８４は、着脱可能な記憶媒体に記憶されてもよい。この場合、ＣＰＵ３０２０は、ディスクドライブなどの着脱可能な記憶媒体を介してデータを読み出す。また、同様に、更新プログラムに係るプログラムモジュール３０８３やプログラムデータ３０８４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。この場合、ＣＰＵ３０２０は、ネットワークインタフェース３０７０を介して他のコンピュータにアクセスすることで各種データを読み出す。
【０１２３】
［その他］
なお、本実施例で説明したデータ整合プログラムは、インターネット等のネットワークを介して配布することができる。また、データ整合プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＭＯ（Magnetooptic  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【０１２４】
１  データ整合システム
１０，４１０Ａ，４１０Ｂ，４１０Ｃ  データ整合装置
１１  比較部
１２  同一化部
１００  マスタ
１１０  データ配置制御部
１２０  記憶部
１２１  冗長データ位置テーブル
１２２  処理対象リスト
１３０  入出力部
２００Ａ，２００Ｂ，２００Ｃ  サーバ
２０１Ａ，２０１Ｂ，２０１Ｃ  データアクセス部
３００Ａ，３００Ｂ，３００Ｃ  ディスク
４００Ａ，４００Ｂ，４００Ｃ  クライアント
４０１Ａ，４０１Ｂ，４０１Ｃ  アプリケーション実行部
４０２Ａ，４０２Ｂ，４０２Ｃ  書込部
４０３Ａ，４０３Ｂ，４０３Ｃ  読出部
４１２Ａ，４１２Ｂ，４１２Ｃ  比較部
４１３Ａ，４１３Ｂ，４１３Ｃ  同一化部
３０００  コンピュータ
３０１０  メモリ
３０１１  ＲＯＭ
３０１２  ＲＡＭ
３０２０  ＣＰＵ
３０７０  ネットワークインタフェース
３０８０  ハードディスクドライブ
３０８１  ＯＳ
３０８２  アプリケーションプログラム
３０８３  プログラムモジュール
３０８４  プログラムデータ
３１００  バス
【要約】
【課題】上位アプリケーションの性能を低下させることなく冗長データを整合させる。
【解決手段】実施の形態に係るデータ整合装置は、比較部と同一化部とを備える。比較部は、複数の記憶部それぞれに格納される、同一のデータの複製である冗長データのデータ長を、上位アプリケーションからの書込処理が異常終了した場合に比較する。また、同一化部は、前記比較部が前記冗長データのデータ長が同一ではないと判定した場合に、前記複数の記憶部に格納された前記冗長データのうち最も短い冗長データのデータ長に他の冗長データのデータ長を揃える。
【選択図】図１【図１】
0005475085.tif 000002
【図２】
0005475085.tif 000003
【図３】
0005475085.tif 000004
【図４−１】
0005475085.tif 000005
【図４−２】
0005475085.tif 000006
【図５】
0005475085.tif 000007
【図６】
0005475085.tif 000008
【図７】
0005475085.tif 000009
【図８】
0005475085.tif 000010
【図９】
0005475085.tif 000011
【図１０】
0005475085.tif 000012
【図１１】
0005475085.tif 000013
【図１２】
0005475085.tif 000014
【図１３】
0005475085.tif 000015
【図１４】
0005475085.tif 000016
【図１５】
0005475085.tif 000017
【図１６】
0005475085.tif 000018
【図１７】
0005475085.tif 000019
【図１８】
0005475085.tif 000020