"第1の記憶領域を含む記憶手段と、前記第1の記憶領域に対するデータの書き込み要求が取得されると、他の情報処理装置に前記データの書き込みを要求する要求手段と、前記他の情報処理装置が備える他の記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他の情報処理装置からの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、前記他の情報処理装置から応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わない書込手段と、前記他の情報処理装置から応答が受信されない場合に、前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他の情報処理装置に送信して前記第2の記憶領域に書き込ませる同期手段と、を有する情報処理装置。前記同期手段は、前記データの書き込み要求の後に他のデータの書き込み要求が取得されたときに、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1記載の情報処理装置。前記同期手段は、所定周期のタイミングになったときに、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1記載の情報処理装置。前記同期手段は、前記第1の記憶領域に記憶されているデータが前記第2の記憶領域に正常に書き込まれたことを検出しない場合、継続的に、前記第1の記憶領域に記憶されているデータを前記他の情報処理装置に送信する、請求項1乃至3の何れか一項に記載の情報処理装置。データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードが実行するストレージ制御方法であって、自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードに前記データの書き込みを要求し、前記他のノードが備える記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他のノードからの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、前記他のノードから応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わず、前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他のノードに送信して前記第2の記憶領域に書き込ませる、ストレージ制御方法。データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードを制御するプログラムであって、前記一のノードが備えるコンピュータに、自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードに前記データの書き込みを要求し、前記他のノードが備える記憶手段の、前記第1の記憶領域に対応する第2の記憶領域に対して、前記データの書き込みが正常に行われたことを、前記他のノードからの応答に基づいて検出した場合、前記第1の記憶領域に対して前記データの書き込みを行い、前記他のノードから応答が受信されない場合、前記第1の記憶領域に対して前記データの書き込みを行わず、前記データの書き込みを行わなかった前記第1の記憶領域に記憶されているデータを、前記他のノードに送信して前記第2の記憶領域に書き込ませる、処理を実行させるプログラム。ところで、データの冗長化のため、第1のストレージノードに対してデータの書き込み上書きとなる場合を含むが要求されたときに、第1のストレージノードに加えて第2のストレージノードにもデータを書き込むストレージシステムを考える。書き込み要求を受け付けた第1のストレージノードは、第2のストレージノードで書き込みが成功したことを確認してから、自ノードの書き込みを行う方法が考えられる。しかし、データ書き込みのシーケンスの途中でストレージノード間のネットワークに障害が発生すると、第1のストレージノードが、第2のストレージノードで書き込みが成功したか否かわからないという状況が生じ得る。その結果、第1のストレージノードと第2のストレージノードとの間で、データの整合性が失われる可能性がある。例えば、第1のストレージノードが第2のストレージノードに書き込み要求を転送した後、第2のストレージノードが書き込み成功の応答を送信する前に、ネットワーク障害が発生する場合が考えられる。その場合、第2のストレージノードで書き込みが成功していても、第1のストレージノードは、応答を受信しないため書き込み失敗として取り扱う可能性がある。1つの側面では、本発明は、ストレージステムにおけるデータの整合性を回復できる情報処理装置、ストレージ制御方法およびプログラムを提供することを目的とする。記憶手段と要求手段と書込手段と同期手段とを有する情報処理装置が提供される。記憶手段は、第1の記憶領域を含む。要求手段は、第1の記憶領域に対するデータの書き込み要求が取得されると、他の情報処理装置にデータの書き込みを要求する。書込手段は、他の情報処理装置が備える他の記憶手段の、第1の記憶領域に対応する第2の記憶領域に対して、データの書き込みが正常に行われたことを、他の情報処理装置からの応答に基づいて検出した場合、第1の記憶領域に対してデータの書き込みを行い、他の情報処理装置から応答が受信されない場合、第1の記憶領域に対してデータの書き込みを行わない。同期手段は、他の情報処理装置から応答が受信されない場合に、データの書き込みを行わなかった第1の記憶領域に記憶されているデータを、他の情報処理装置に送信して第2の記憶領域に書き込ませる。また、データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードが実行するストレージ制御方法が提供される。ストレージ制御方法では、自ノードが備える記憶手段の第1の記憶領域に対するデータの書き込み要求が取得されると、他のノードにデータの書き込みを要求する。他のノードが備える記憶手段の、第1の記憶領域に対応する第2の記憶領域に対して、データの書き込みが正常に行われたことを、他のノードからの応答に基づいて検出した場合、第1の記憶領域に対してデータの書き込みを行う。他のノードから応答が受信されない場合、第1の記憶領域に対してデータの書き込みを行わない。データの書き込みを行わなかった第1の記憶領域に記憶されているデータを、他のノードに送信して第2の記憶領域に書き込ませる。また、データを記憶する記憶手段を備える複数のノードを含むストレージシステムの中の一のノードに、ストレージ制御方法を実行させるプログラムが提供される。ストレージステムにおけるデータの整合性を回復できる。以下、本実施の形態を図面を参照して説明する。[第1の実施の形態]図1は、第1の実施の形態のストレージシステムを示す図である。第1の実施の形態のストレージシステムは、情報処理装置10,20を有する。情報処理装置10と情報処理装置20とは、ネットワークで接続されている。情報処理装置10,20は、CPUCentralProcessingUnitやRAMRandomAccessMemoryを備えるコンピュータであってもよい。情報処理装置10,20を、ストレージノードと呼んでもよい。情報処理装置10は、記憶手段11、要求手段12、書込手段13および同期手段14を有する。情報処理装置20は、記憶手段21を有する。記憶手段11,21は、RAMなどの揮発性の記憶装置でもよく、HDDやSSDSolidStateDriveなどの不揮発性の記憶装置でもよい。要求手段12、書込手段13および同期手段14の全部または一部は、RAMに記憶されCPUにより実行されるプログラムとして実装してもよく、ASICApplicationSpecificIntegratedCircuitなどの回路として実装してもよい。記憶手段11,21は、データを記憶する。記憶手段11は、記憶領域11aを含む。記憶手段21は、記憶手段11の記憶領域11aに対応する記憶領域21aを含む。例えば、記憶領域11aと記憶領域21aには、各記憶手段内で同一のアドレスが付与されている。情報処理装置10,20の間でデータの整合性が維持されているとき、例えば、記憶領域11aと記憶領域21aに同一内容のデータが記憶される。要求手段12は、記憶領域11aに対するデータの書き込み要求が取得されると、ネットワークを介して、情報処理装置20にデータの書き込みを要求する。記憶領域11aに対する書き込み要求は、例えば、図示しない他の情報処理装置例えば、クライアントコンピュータからネットワークを介して受信される。取得する書き込み要求は、例えば、記憶領域11aに書き込むデータと、記憶領域11aの先頭位置を示すオフセットおよびデータサイズの情報とを含む。情報処理装置20への要求は、例えば、取得した書き込み要求に含まれるデータと、記憶領域21aの先頭位置を示すオフセット記憶領域11aのオフセットと同一でもよいおよびデータサイズの情報とを含む。情報処理装置20は、情報処理装置10からデータの書き込みが要求されると、記憶領域11aに対応する記憶領域21aにデータを書き込む。そして、情報処理装置20は、データの書き込みが正常に行われたことを情報処理装置10に応答する。ただし、データ書き込みのシーケンスの途中で、ネットワーク障害が発生する可能性がある。情報処理装置10がデータの書き込みを要求した時点でネットワーク障害が発生している場合、要求が情報処理装置20に到達せず、記憶領域21aへのデータ書き込みは行われない。一方で、情報処理装置10がデータの書き込みを要求した後にネットワーク障害が発生した場合、要求が情報処理装置20に到達し、記憶領域21aへのデータ書き込みは行われるものの、情報処理装置20から情報処理装置10に応答が到達しない可能性がある。書込手段13は、要求手段12が情報処理装置20にデータの書き込みを要求した後、情報処理装置20からの応答を待つ。そして、書込手段13は、記憶領域21aに対してデータの書き込みが正常に行われたことを、情報処理装置20からの応答に基づいて検出した場合、取得している書き込み要求に従って、記憶領域11aに対してデータの書き込みを行う。また、書込手段13は、情報処理装置20から応答が受信されない場合例えば、要求手段12が書き込みを要求してから所定時間以内に応答が受信されない場合、記憶領域11aに対してデータの書き込みを行わない。同期手段14は、情報処理装置20から応答が受信されなかった場合、書き込みを行わなかった記憶領域11aからデータを読み出し、情報処理装置20にデータの書き込みを要求する。情報処理装置20への要求は、例えば、記憶領域11aから読み出したデータと、記憶領域21aの先頭位置を示すオフセット記憶領域11aのオフセットと同一でもよいおよびデータサイズの情報とを含む。同期手段14がデータの書き込みを要求した時点でネットワークが復旧していれば、要求が情報処理装置20に到達し、記憶領域11aに記憶されていたデータが記憶領域21aに書き込まれる。ここで、同期手段14は、記憶領域11aに記憶されたデータを情報処理装置20に送信して記憶領域11a,21aを同期させる処理を、情報処理装置10が他のデータ書き込み要求を取得したことを契機として実行してもよい。また、他のデータ読み出し要求および他のデータ書き込み要求の何れか一方を取得したことを契機として、同期処理を実行してもよい。また、同期手段14は、情報処理装置20から応答が受信されないことにより書き込みが行われなかった記憶領域が存在するか周期的に確認し、存在するときに同期処理を実行してもよい。同期手段14は、ネットワークがまだ復旧していないことにより同期処理が失敗した場合、成功するまで継続的に同期処理を実行してもよい。例えば、記憶領域11a,21aにデータ1が記憶されているとする。情報処理装置10は、データ2を記憶領域11aに書き込むことを示す書き込み要求を取得すると、情報処理装置20にデータ2を送信する。情報処理装置20は、記憶領域21aに記憶されるデータを、データ1からデータ2に書き換える。このとき、情報処理装置10,20間のネットワークに障害が発生したとする。すると、情報処理装置10は、情報処理装置20で書き込みが成功したことを示す応答を情報処理装置20から受信せず、記憶領域11aにデータを2を書き込まないことになる。その結果、記憶領域11a,21aに記憶されているデータの整合性が失われる。そこで、情報処理装置10は、他の書き込み要求を取得したタイミングや所定の周期的タイミングなどのタイミングを待って、同期処理を開始する。情報処理装置10は、記憶領域11aに記憶されたデータ1を読み出し、情報処理装置20に送信する。このとき、情報処理装置10,20間のネットワークが復旧しているとする。すると、情報処理装置20は、記憶領域21aに記憶されるデータを、データ2から受信したデータ1に書き換える。その結果、記憶領域11a,21aに記憶されているデータの整合性が回復する。なお、情報処理装置10を、データの読み出しや書き込みなどのアクセスを受け付けるプライマリノードに設定し、情報処理装置20を、バックアップ用のデータを保持するセカンダリノードに設定してもよい。また、記憶手段11,21の記憶領域を複数のセグメントに分割し、セグメント毎に、情報処理装置10,20の何れか一方をプライマリノードとして選択し他方をセカンダリノードとして選択してもよい。その場合、情報処理装置20は、要求手段12、書込手段13および同期手段14と同様のモジュールを有し、一部のセグメントについて書き込み要求の受け付けや同期処理を行う。第1の実施の形態の情報処理装置10によれば、記憶手段11の記憶領域11aに対するデータの書き込み要求が取得されると、情報処理装置20にデータの書き込みを要求する。記憶手段21の記憶領域21aに対してデータの書き込みが正常に行われたことを、情報処理装置20からの応答に基づいて検出した場合、記憶領域11aに対してデータの書き込みを行う。一方、情報処理装置20から応答が受信されない場合、記憶領域11aに対してデータの書き込みを行わない。その後、記憶領域11aに記憶されているデータを、情報処理装置20に送信して記憶領域21aに書き込ませる。これにより、ネットワーク障害によって情報処理装置20から情報処理装置10に応答が到達せず、その結果として記憶領域11a,21aのデータの整合性が失われても、後にデータの整合性を回復することができる。また、例えば、情報処理装置10が、情報処理装置20から応答がないことを検出してすぐにデータを再送する方法と比べ、他のデータ書き込み要求の取得などのタイミングを待って同期処理を行うことで、ネットワークが復旧して同期に成功する確率が高くなる。なお、情報処理装置20から情報処理装置10に応答が到達しないとき、記憶領域21aに対するデータの書き込みが行われなかったために、データの整合性が失われていない可能性もある。しかし、情報処理装置10は、情報処理装置20から応答を受信しないため、データの整合性が失われているか否か直接にはわからない。そのため、情報処理装置10は、応答を受信しないときは、同期処理を行うことが好ましい。[第2の実施の形態]図2は、第2の実施の形態のストレージシステムを示す図である。第2の実施の形態のストレージシステムは、ストレージノード100,200、クライアントノード300および制御ノード400を含む。各ノードは、ネットワーク30に接続されている。ネットワーク30は、有線または無線のLANLocalAreaNetworkを含んでもよい。ストレージノード100,200は、不揮発性の記憶装置にデータを記憶するサーバコンピュータである。同一内容のデータがストレージノード100,200の両方に記憶され、データが冗長化されている。ストレージノード100,200の一方がプライマリノードに設定され、他方がセカンダリノードに設定される。例えば、ストレージノード100がプライマリノード、ストレージノード200がセカンダリノードである。プライマリノードは、クライアントノード300からアクセスを受け付ける。セカンダリノードは、バックアップ用のデータを保持する。データの読み出しはプライマリノードから行われ、データの書き込みはプライマリノードとセカンダリノードの両方に対して行われる。クライアントノード300は、ストレージノード100,200に記憶されたデータを使用するコンピュータである。クライアントノード300は、ユーザが操作する端末装置でもよくサーバ装置でもよい。クライアントノード300は、ストレージノード100,200のうちプライマリノードにアクセスする。何れのストレージノードがプライマリノードであるかは、制御ノード400に問い合わせて確認してもよい。アクセスには、データの読み出し要求リード要求とデータの書き込み要求ライト要求とが含まれる。リード要求およびライト要求は、記憶領域の先頭位置を示すオフセットとデータサイズの情報を含む。ライト要求は、更に、当該記憶領域に書き込まれるデータを含む。制御ノード400は、ストレージノード100,200を管理するためのコンピュータである。制御ノード400は、端末装置でもよくサーバ装置でもよい。制御ノード400は、ストレージノード100,200の中からプライマリノードを選択し、ストレージノード100,200に、プライマリノードとセカンダリノードの何れとして動作するかを指示する。また、制御ノード400は、ユーザ操作または所定の入れ替えアルゴリズムに従って、プライマリノードとセカンダリノードを入れ替えることを決定し、ストレージノード100,200に入れ替えを指示する。なお、ストレージノード100は、第1の実施の形態の情報処理装置10の一例である。ストレージノード200は、第1の実施の形態の情報処理装置20の一例である。図3は、ストレージノードのハードウェア例を示すブロック図である。ストレージノード100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。各ユニットがストレージノード100のバスに接続されている。ストレージノード200、クライアントノード300および制御ノード400も、図3に示したストレージノード100と同様ハードウェア構造によって実現することができる。CPU101は、ストレージノード100における情報処理を制御する演算装置プロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部を読み出し、RAM102に展開してプログラムを実行する。なお、ストレージノード100は、複数の演算装置を備えて、情報処理を分散して実行してもよい。RAM102は、CPU101が実行するプログラムやデータを一時的に記憶しておく揮発性メモリである。なお、ストレージノード100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。HDD103は、OSOperatingSystemプログラムやアプリケーションプログラムなどのプログラム、および、データを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、ストレージノード100は、HDD以外の種類の不揮発性の記憶装置例えば、SSDを備えてもよく、複数の記憶装置を備えていてもよい。画像信号処理部104は、CPU101の命令に従って、ストレージノード100に接続されたディスプレイ31に画像を出力する。ディスプレイ31として、例えば、CRTCathodeRayTubeディスプレイや液晶ディスプレイなどを用いることができる。入力信号処理部105は、ストレージノード100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。ディスクドライブ106は、記録媒体33に記録されたプログラムやデータを読み取る駆動装置である。記録媒体33として、例えば、フレキシブルディスクFD:FlexibleDiskやHDDなどの磁気ディスク、CDCompactDiscやDVDDigitalVersatileDiscなどの光ディスク、光磁気ディスクMO:MagnetoOpticaldiskを使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。通信部107は、ネットワーク30を介して、ストレージノード200、クライアントノード300および制御ノード400と通信を行う通信インタフェースである。通信部107は、有線通信インタフェースでも無線通信インタフェースでもよい。図4は、第2の実施の形態のソフトウェア例を示すブロック図である。ストレージノード100は、データ記憶部110、アクセス処理部120、ノード間転送部130、制御情報記憶部140およびノード情報変更部150を有する。ストレージノード200は、データ記憶部210、アクセス処理部220、ノード間転送部230、制御情報記憶部240およびノード情報変更部250を有する。データ記憶部110,210は、データを記憶する。データ記憶部110,210は、例えば、RAMまたはHDDを用いて実現される。データの記憶領域は、当該記憶領域の先頭位置を示すオフセット所定位置からのアドレス距離と、当該記憶領域のサイズとを用いて指定することができる。ただし、先頭位置は、物理的なアドレスまたは論理的なアドレスを用いて指定してもよい。また、サイズを指定する代わりに、記憶領域の末尾位置を示すアドレスを指定してもよい。データ記憶部110とデータ記憶部210には、同期が維持されていれば、同一内容のデータが記憶される。同一内容のデータは、好ましくは、同一のオフセットおよびサイズによって特定される記憶領域に記憶される。アクセス処理部120,220は、データに対するアクセスリード要求およびライト要求を受け付ける。リード要求およびライト要求は、オフセットおよびサイズの情報を含み、ライト要求は、更に書き込むデータを含む。プライマリノードに属するアクセス処理部例えば、アクセス処理部120は、クライアントノード300からアクセスを受け付ける。セカンダリノードに属するアクセス処理部例えば、アクセス処理部220は、プライマリノードが転送するアクセスを受け付ける。また、アクセス処理部120,220は、受け付けたアクセスに従って、自ノードのデータ記憶部からのデータの読み出しおよび自ノードのデータ記憶部へのデータの書き込みを行う。そして、アクセス処理部120,220は、アクセスに対するレスポンスをアクセス元に送信する。リード要求に対するレスポンスには、読み出したデータが含まれる。ライト要求に対するレスポンスには、データの書き込みが成功したことOKまたは失敗したことNGを示す情報が含まれる。ただし、プライマリノードに属するアクセス処理部は、ライト要求のとき、先にセカンダリノードにデータの書き込みを実行させ、セカンダリノードの書き込みが成功したことを確認してから自ノードの書き込みを行う。また、アクセス処理部120,220は、ライト要求を処理するとき、ネットワーク30に障害が発生することによってデータ記憶部110,210間でデータの整合性が失われる場合に備えて、後述する制御情報を自ノードの制御情報記憶部に書き込んでおく。また、プライマリノードに属するアクセス処理部例えば、アクセス処理部120は、データ記憶部110,210間でデータの整合性が失われた可能性があるとき、セカンダリノードをプライマリノードに同期させる同期処理を制御する。ノード間転送部130,230は、自ノードがプライマリノードのとき、クライアントノード300から受け付けられたライト要求をセカンダリノードに転送する。また、ノード間転送部130,230は、ライト要求に対するレスポンスを、ライト要求を転送してから所定時間以内にセカンダリノードから受信したか監視する。そして、書き込み成功、書き込み失敗またはタイムアウトの何れかを、自ノードのアクセス処理部に報告する。制御情報記憶部140,240は、ストレージノード100,200の制御に用いられる制御情報を記憶する。制御情報は、ノード情報141,241、同期状態フラグ142,242および最終書込情報143,243を含む。ノード情報141,241は、自ノードがプライマリノードとセカンダリノードの何れとして動作しているかを示す。同期状態フラグ142,242は、データ記憶部110,210が同期していることを確認したか否かを示す。同期状態フラグ142,242は、未設定フラグ値なし、同期フラグONおよび非同期フラグOFFの何れかの状態を示す。プライマリノードは、書き込み成功を示すレスポンスをセカンダリノードから受信すると、自ノードの同期状態フラグ例えば、同期状態フラグ142を同期に設定する。また、プライマリノードは、レスポンスを受信しない場合、自ノードの同期状態フラグを非同期に設定する。最終書込情報143,243は、最後に受け付けたライト要求で指定された記憶領域を示し、オフセットおよびサイズを含む。ノード情報変更部150,250は、制御ノード400からの指示に応じて、自ノードの制御情報記憶部に記憶された情報を更新する。ノード情報変更部150,250は、プライマリノードの入れ替えが指示されると、自ノードをプライマリノードからセカンダリノードに変更し、または、セカンダリノードからプライマリノードに変更する。クライアントノード300は、データアクセス部310を有する。データアクセス部310は、ストレージノード100,200のうちプライマリノードに対して、リード要求およびライト要求を送信する。データアクセス部310は、リード要求を送信した場合、データを含むレスポンスをプライマリノードから受信する。ライト要求を送信した場合、書き込みの成否を示すレスポンスをプライマリノードから受信する。データアクセス部310は、ストレージノード100,200の何れがプライマリノードであるか知らない場合、制御ノード400に問い合わせてもよい。制御ノード400は、ノード設定部410を有する。ノード設定部410は、ユーザ操作または所定のアルゴリズムに従って、ストレージノード100,200に対して設定変更を要求する。例えば、制御ノード400は、ストレージノード100,200に対してプライマリノードの入れ替えを指示する。なお、データ記憶部110,210は、第1の実施の形態の記憶手段11,21の一例である。アクセス処理部120は、第1の実施の形態の書込手段13の一例である。ノード間転送部130は、第1の実施の形態の要求手段12と同期手段14の一例である。図5は、アクセス処理の例を示すフローチャートである。図5に示す処理は、ストレージノード100,200がアクセスを受け付ける毎に実行する。以下、ストレージノード100が実行するものとして、図5に示す処理をステップ番号に沿って説明する。ステップS11アクセス処理部120は、アクセスを受け付けると、当該アクセスがライト要求であるか判断する。ライト要求の場合、処理をステップS13に進める。ライト要求でない場合リード要求の場合、処理をステップS12に進める。ステップS12アクセス処理部120は、データ記憶部110から、リード要求が指定するオフセットおよびサイズによって特定される記憶領域のデータを読み出す。そして、処理をステップS21に進める。ステップS13アクセス処理部120は、ライト要求が指定するオフセットおよびサイズの情報を、最終書込情報143として制御情報記憶部140に書き込む。ステップS14アクセス処理部120は、自ノードがプライマリノードであるか判断する。プライマリノードであるか否かは、例えば、制御情報記憶部140に記憶されたノード情報141を参照することで判断できる。プライマリノードの場合、処理をステップS15に進める。セカンダリノードの場合、処理をステップS20に進める。ステップS15アクセス処理部120は、ノード間転送部130にライト要求の転送を指示する。ノード間転送部130は、セカンダリノードとしてのストレージノード20に、アクセス処理部120が受け付けたライト要求を転送する。ステップS16ノード間転送部130は、ライト要求を転送してから所定時間以内に、セカンダリノードからレスポンスを受信したか判断する。タイムアウトを検出するため、ノード間転送部130は、ソフトウェアタイマまたはハードウェアタイマを使用してもよい。所定時間以内にレスポンスを受信した場合タイムアウトしない場合、処理をステップS18に進める。所定時間以内にレスポンスを受信しない場合タイムアウトした場合、処理をステップS17に進める。ステップS17ノード間転送部130は、タイムアウトをアクセス処理部120に通知する。アクセス処理部120は、制御情報記憶部140に記憶された同期状態フラグ142を非同期に設定する。そして、処理をステップS21に進める。ステップS18ノード間転送部130は、セカンダリノードから受信したレスポンスが、書き込み成功OKを示しているか判断する。書き込み成功の場合、処理をステップS19に進める。書き込み失敗NGの場合、処理をステップS21に進める。ステップS19ノード間転送部130は、書き込み成功をアクセス処理部120に通知する。アクセス処理部120は、同期状態フラグ142を同期に設定する。ステップS20アクセス処理部120は、ステップS11で受け付けたライト要求に含まれるデータを、ライト要求が指定するオフセットおよびサイズによって特定されるデータ記憶部110の記憶領域に書き込む。ステップS21アクセス処理部120は、アクセス元にレスポンスを送信する。アクセス処理部120は、データ記憶部110からデータを読み出した場合ステップS12、データを含むレスポンスを送信する。データ記憶部110に対するデータの書き込みに成功した場合ステップS20、書き込み成功を示すレスポンスを送信する。それ以外の場合、書き込み失敗を示すレスポンスを送信する。図6は、同期処理の例を示すフローチャートである。図6に示す処理は、プライマリノードがクライアントノード300からアクセスリード要求またはライト要求を受け付ける毎に、図5に示す処理の前に実行する。以下、ストレージノード100がプライマリノードであるものとして、図6に示す処理をステップ番号に沿って説明する。ステップS31アクセス処理部120は、クライアントノード300からアクセスを受け付けると、制御情報記憶部140に記憶された同期状態フラグ142を確認する。同期状態フラグ142が非同期を示している場合、処理をステップS32に進める。それ以外の場合、同期処理を終了し、図5に示すアクセス処理を実行する。ステップS32アクセス処理部120は、制御情報記憶部140に記憶された最終書込情報143から、前回のライト要求が指定したオフセットおよびサイズを確認する。ステップS33アクセス処理部120は、データ記憶部110から、ステップS32で確認したオフセットおよびサイズによって特定される記憶領域のデータを読み出す。ノード間転送部130は、セカンダリノードであるストレージノード200に、ライト要求を送信する。このライト要求は、アクセス処理部120が読み出したデータと、当該データの記憶領域を示すオフセットおよびサイズの情報とを含む。ステップS34ノード間転送部130は、ライト要求を送信してから所定時間以内に、書き込み成功を示すレスポンスをセカンダリノードから受信したか判断する。書き込み成功を示すレスポンスを受信した場合、処理をステップS35に進める。書き込み失敗を示すレスポンスを受信した場合、または、所定時間以内にレスポンスを受信しなかった場合、同期処理を終了する。なお、同期に失敗した場合、図5に示すアクセス処理は実行されず、アクセス失敗を示すレスポンスがクライアントノード300に送信される。ステップS35ノード間転送部130は、書き込み成功をアクセス処理部120に通知する。アクセス処理部120は、同期状態フラグ142を同期に設定する。そして、図5に示すアクセス処理を実行する。このように、ネットワーク障害などが原因でストレージノード200からストレージノード100にレスポンスが到達しないと、ストレージノード100は、データ記憶部110,210が同期していない状態と判断する。すると、ストレージノード100は、次にアクセスリード要求またはライト要求を受け付けたことを契機として、データ記憶部210をデータ記憶部110に同期させるよう試みる。ただし、ストレージノード100は、ストレージノード200からレスポンスを受信しなかったときのライト要求と次に受け付けたライト要求とが、同一の記憶領域に対する書き込みを要求している場合、同期処理を省略してもよい。図7は、同期処理の他の例を示すフローチャートである。図7の同期処理では、図6のステップS32とステップS33の間に、以下のステップS32aを実行する。ステップS32aアクセス処理部120は、ステップS31で受け付けたアクセスがライト要求であり、当該ライト要求が指定するオフセットおよびサイズと最終書込情報143が示すオフセットおよびサイズとが同一であるか判断する。条件を満たす場合、処理をステップS35に進める。条件を満たさない場合、処理をステップS33に進める。あるライト要求と次のライト要求とが同一の記憶領域を指定するものであるときは、同期処理によりストレージノード200にデータを書き込んでも、次のライト要求の処理によって当該データが上書きされることになる。そこで、図7に示すように、ストレージノード100は、書き込み対象の記憶領域が同一である場合には、データ記憶部110からデータ記憶部210へのデータコピーを省略してもよい。図8は、データアクセスのシーケンス例を示す図である。以下、ストレージノード100がプライマリノードであるとして、図8に示す処理をステップ番号に沿って説明する。ステップS41クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したリード要求を送信する。ステップS42ストレージノード100は、データ記憶部110から、リード要求で指定された記憶領域のデータを読み出す。そして、読み出したデータを含むレスポンスを、クライアントノード300に送信する。ステップS43クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。ステップS44ストレージノード100は、ライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ストレージノード100は、ライト要求をストレージノード200に転送する。ステップS45ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認し、書き込み成功を示すレスポンスをストレージノード100に送信する。ステップS46ストレージノード100は、同期状態フラグ142を同期に設定し、データ記憶部110内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込み成功を示すレスポンスを、クライアントノード300に送信する。ステップS47クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。ステップS48ストレージノード100は、ライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ストレージノード100は、ライト要求をストレージノード200に転送する。ステップS49ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認し、書き込み成功を示すレスポンスをストレージノード100に送信する。しかし、ネットワーク30に障害が発生し、当該レスポンスがストレージノード100に到達しない。ステップS50ストレージノード100は、レスポンスのタイムアウトを検出し、データ記憶部110にデータを書き込まず、同期状態フラグ142を非同期に設定する。そして、書き込み失敗を示すレスポンスを、クライアントノード300に送信する。図9は、同期状態の第1の変化例を示す図である。図9の上段は、ステップS46が実行された後のストレージノード100,200の状態を示し、図9の下段は、ステップS50が実行された後のストレージノード100,200の状態を示している。ステップS46が実行された後は、ストレージノード100では、同期状態フラグ142が同期に設定されている。最終書込情報143は、ステップS43のライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、データ1が書き込まれている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110と同じデータ1が書き込まれている。ステップS50が実行された後は、ストレージノード100では、同期状態フラグ142が非同期に設定されている。最終書込情報143は、ステップS47のライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ステップS47のライト要求で指定されたデータ2が書き込まれず、データ1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、ステップS47のライト要求で指定されたデータ2が記憶されている。このように、ストレージノード200からストレージノード200にレスポンスが到達しないことにより、データの整合性が失われる可能性がある。図10は、データアクセスのシーケンス例続きを示す図である。ステップS51クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。ステップS52ストレージノード100は、同期状態フラグ142が非同期に設定されていることを確認し、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。そして、読み出したデータと最終書込情報143が示す記憶領域とを指定した他のライト要求を、ストレージノード200に送信する。しかし、ネットワーク30が復旧しておらず、他のライト要求はストレージノード200に到達しない。ステップS53ストレージノード100は、レスポンスのタイムアウトを検出し、同期状態フラグ142を非同期に維持する。そして、ステップS51のライト要求が失敗であることを示すレスポンスを、クライアントノード300に送信する。ステップS54クライアントノード300は、ストレージノード100に、オフセットおよびサイズによって記憶領域を指定したライト要求を送信する。ステップS55ストレージノード100は、同期状態フラグ142が非同期に設定されていることを確認し、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。そして、読み出したデータと最終書込情報143が示す記憶領域とを指定した他のライト要求を、ストレージノード200に送信する。ステップS56ストレージノード200は、データ記憶部210内の他のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認して、書き込み成功を示すレスポンスをストレージノード100に送信する。ステップS57ストレージノード100は、ステップS54のライト要求が指定する記憶領域を示す最終書込情報143を、制御情報記憶部140に書き込む。また、ステップS54のライト要求をストレージノード200に転送する。ステップS58ストレージノード200は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。そして、書き込みが成功したことを確認して、書き込み成功を示すレスポンスをストレージノード100に送信する。ステップS59ストレージノード100は、同期状態フラグ142を同期に設定し、データ記憶部110内のステップS54のライト要求で指定された記憶領域にデータを書き込む。そして、ステップS54のライト要求が成功であることを示すレスポンスを、クライアントノード300に送信する。図11は、同期状態の第2の変化例を示す図である。図11の上段は、ステップS56が実行された後のストレージノード100,200の状態を示し、図11の下段は、ステップS59が実行された後のストレージノード100,200の状態を示している。ステップS56が実行された後は、ストレージノード100では、同期状態フラグ142が同期に設定されている。最終書込情報143は、同期状態フラグ142が非同期に設定されたときのライト要求が指定していたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、データ1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110から複製されたデータ1が書き込まれている。ステップS59が実行された後は、ストレージノード100では、同期状態フラグ142が同期に設定されている。最終書込情報143は、ステップS54のライト要求で指定されたオフセット=X2,サイズ=Y2を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ステップS54のライト要求で指定されたデータ3が書き込まれる。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X2,サイズ=Y2を示す。データ記憶部210の最終書込情報243が示す記憶領域には、データ記憶領域110と同じデータ3が書き込まれている。このように、ストレージノード100は、同期状態フラグ142が非同期に設定されていると、次のアクセスを受け付けたときに、データ記憶部210をデータ記憶部110に同期させる。ネットワーク30がまだ復旧しておらず、データ記憶部110,210の同期に失敗した場合には、更に次のアクセスを受け付けたとき、同期処理を再実行する。図12は、ノード設定変更のシーケンス例を示す図である。以下、図12に示す処理をステップ番号に沿って説明する。図12では、ストレージノード100をプライマリノードからセカンダリノードに変更し、ストレージノード200をセカンダリノードからプライマリノードに変更する場合を考える。ステップS61制御ノード400は、プライマリノードの入れ替えを、ストレージノード100,200に指示する。入れ替えを指示するタイミングとしては、例えば、制御ノード400が、入れ替え指示のユーザ操作を受け付けたときや、所定の入れ替えアルゴリズムを実行して入れ替えを行った方が好ましいと判断したときが考えられる。ステップS62ストレージノード100は、ノード情報141を書き換え、自ノードをプライマリノードからセカンダリノードに変更する。ステップS63セカンダリノードに移行したストレージノード100は、同期状態フラグ142をリセット制御情報記憶部140から削除し、値なしとする。ステップS64ストレージノード200は、ノード情報241を書き換え、自ノードをセカンダリノードからプライマリノードに変更する。ステップS65プライマリノードに移行したストレージノード200は、同期状態フラグ242を非同期に設定する。ステップS66ストレージノード100,200は、ノード設定の変更が完了したことを制御ノード400に報告する。なお、ストレージノード100の処理とストレージノード200の処理ステップS62~S65は、任意の順序で実行してよい。図13は、同期状態の第3の変化例を示す図である。ここでは、ストレージノード100がプライマリノードであり、データの整合性が失われているときにプライマリノードの入れ替えが発生する場合を考える。図13の上段は、前述のステップS50が実行された後のようにデータの整合性が失われた状態を示し、図13の下段は、ステップS66が実行された後のストレージノード100,200の状態を示している。前述のように、ステップS50が実行された後は、ストレージノード100では、同期状態フラグ142が非同期に設定されている。最終書込情報143は、ライト要求で指定されたオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、ライト要求で指定されたデータ2が書き込まれず、データ1が記憶されている。ストレージノード200では、同期状態フラグ242は値をもたない。最終書込情報243は、最終書込情報143と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、ライト要求で指定されたデータ2が記憶されている。ステップS66が実行された後は、ストレージノード100では、同期状態フラグ142はリセットされ値をもたない。最終書込情報143は、入れ替え前と同じオフセット=X1,サイズ=Y1を示す。データ記憶部110の最終書込情報143が示す記憶領域には、入れ替え前と同じデータ1が記憶されている。ストレージノード200では、同期状態フラグ242が非同期に設定されている。最終書込情報243は、入れ替え前と同じオフセット=X1,サイズ=Y1を示す。データ記憶部210の最終書込情報243が示す記憶領域には、入れ替え前と同じデータ2が記憶されている。このように、プライマリノードになったストレージノード200の同期状態フラグ242は、非同期に書き換えられる。従って、ストレージノード200は、クライアントノード300から次のアクセスを受け付けたとき同期処理を実行する。同期処理により、セカンダリノードストレージノード100に記憶されたデータ1が、プライマリノードストレージノード200に記憶されたデータ2によって上書きされ、データの整合性が回復する。プライマリノードを入れ替えたとき、新たなプライマリノード旧セカンダリノードは、旧プライマリノードの同期状態フラグが非同期であるかデータの整合性が失われている可能性があるかを知らない。そこで、新たなプライマリノードが、入れ替え後に同期処理を行うようにする。なお、プライマリノードを入れ替えた後の同期処理では、旧プライマリノードストレージノード100に記憶されたデータ1を、旧セカンダリノードストレージノード200に上書きするようにしてもよい。第2の実施の形態のストレージシステムによれば、ネットワーク障害によりセカンダリノードからプライマリノードにレスポンスが到達せず、その結果としてデータの整合性が失われても、後にデータの整合性を回復することができる。また、プライマリノードが、次のアクセスを受け付けるタイミングを待って同期処理を行うことで、セカンダリノードからレスポンスがないことを検出してすぐにデータを再送する方法と比べ、ネットワークが復旧して同期に成功する確率が高くなる。また、プライマリノードの入れ替えが発生した後に同期処理が行われるようにすることで、データの整合性が失われた状態が放置されないようにすることができる。[第3の実施の形態]次に、第3の実施の形態を説明する。第2の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第3の実施の形態のストレージシステムは、データのアクセスがなくても、データの整合性が失われていないかを定期的に確認する。図14は、第3の実施の形態のソフトウェア例を示す図である。第3の実施の形態のストレージシステムは、ストレージノード100a,200a、クライアントノード300および制御ノード400aを有する。ストレージノード100aは、第2の実施の形態のストレージノード100のモジュールに加え、同期状態監視部160を有する。同期状態監視部160は、制御ノード400aから要求を受けて、同期状態フラグ142が非同期に設定されているか判断する。同期状態監視部160は、非同期に設定されている場合、ノード間転送部130に同期処理を指示する。そして、同期処理に成功した場合、同期状態フラグ142を同期に設定する。同様に、ストレージノード200aは、第2の実施の形態のストレージノード200のモジュールに加え、同期状態監視部260を有する。制御ノード400aは、第2の実施の形態の制御ノード400のモジュールに加えて、同期要求部420を有する。同期要求部420は、ストレージノード100a,200aのうちプライマリノード例えば、ストレージノード100aに対し、所定周期例えば、数分毎、数時間毎、数日毎などで同期要求を送信する。図15は、同期パトロールのシーケンス例を示す図である。以下、ストレージノード100がプライマリノードとして、図15に示す処理をステップ番号に沿って説明する。ステップS71制御ノード400aの同期要求部420は、ストレージノード100aに同期要求を送信する。同期要求は、所定周期で継続的に送信される。ステップS72ストレージノード100aの同期状態監視部160は、同期状態フラグ142が非同期に設定されていることを確認する。ステップS73ストレージノード100aのノード間転送部130は、最終書込情報143が示す記憶領域のデータをデータ記憶部110から読み出す。ステップS74ストレージノード100aのノード間転送部130は、ステップS73で読み出したデータと最終書込情報143が示す記憶領域を指定したライト要求を、ストレージノード200aに送信する。ステップS75ストレージノード200aのアクセス処理部220は、ライト要求が指定する記憶領域を示す最終書込情報243を制御情報記憶部240に書き込み、データ記憶部210内のライト要求で指定された記憶領域にデータを書き込む。ステップS76ストレージノード200aのアクセス処理部220は、書き込み成功を示すレスポンスをストレージノード100aに送信する。ステップS77ストレージノード100aの同期状態監視部160は、同期状態フラグ142を同期に設定し、同期完了を制御ノード400aに報告する。なお、第3の実施の形態の同期方法パトロール方式は、第2の実施の形態の同期方法アクセスを契機とする方式と組み合わせることも可能である。例えば、プライマリノードが、ライト要求を受け付けたときに同期処理を実行し、また、周期的なタイミングでも同期処理を実行するようにしてもよい。第3の実施の形態のストレージシステムによれば、第2の実施の形態と同様、データの整合性を回復することができる。[第4の実施の形態]次に、第4の実施の形態を説明する。第2および第3の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第4の実施の形態のストレージシステムでは、記憶領域が複数のセグメントに分割され、セグメント毎に複数のストレージノードの中からプライマリノードを選択することができる。図16は、第4の実施の形態のデータ構造例を示す図である。第4の実施の形態のストレージシステムは、ストレージノード100b,200bを含む。ストレージノード100bは、データ記憶部110bを有し、同期状態フラグ142bおよび最終書込情報143bを保持する。ストレージノード200bは、データ記憶部210bを有し、同期状態フラグ242bおよび最終書込情報243bを保持する。データ記憶部110b,210bの記憶領域は、複数のセグメント論理的なブロック単位に分割される。例えば、データ記憶部110b,210bは、セグメントS1,S2,S3を有する。セグメントS1,S3のプライマリデータはデータ記憶部110bに記憶され、セグメントS1,S3のセカンダリデータはデータ記憶部210bに記憶される。セグメントS2のプライマリデータはデータ記憶部210bに記憶され、セグメントS2のセカンダリデータはデータ記憶部110bに記憶される。クライアントノード300からのデータのアクセスは、プライマリデータを記憶するストレージノードに対して行われる。よって、セグメントS1,S3については、ストレージノード100bがプライマリノードとして動作する。セグメントS2については、ストレージノード200bがプライマリノードとして動作する。同期状態フラグ142b,242bでは、セグメント毎に同期や非同期が設定される。最終書込情報143b,243bは、セグメント毎のオフセットおよびサイズの情報を含む。ストレージノード100bは、同期状態フラグ142bおよび最終書込情報143bを用いて、セグメントS1,S3について、第2および第3の実施の形態で述べたような同期処理を行う。ストレージノード200bは、同期状態フラグ242bおよび最終書込情報243bを用いて、セグメントS2について、第2および第3の実施の形態で述べたような同期処理を行う。例えば、ストレージノード100bは、セグメントS3に対する次のライト要求を受け付けたとき、セグメントS3の同期処理を行う。第4の実施の形態のストレージシステムによれば、第2の実施の形態と同様、データの整合性を回復することができる。また、第4の実施の形態では、アクセスを複数のストレージノードに分散させることができる。なお、前述のように、第2~第4の実施の形態のストレージ制御方法は、コンピュータとしてのストレージノード100,100a,100b,200,200a,200b、クライアントノード300および制御ノード400,400aに、それぞれプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体例えば、記録媒体33に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD-RRecordable/RWRewritable、DVDおよびDVD-R/RWが含まれる。プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク30経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを記憶装置例えば、HDD103に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワーク30を介して受信したプログラムを直接実行してもよい。"