(57)【特許請求の範囲】
【請求項１】
情報処理装置と通信可能な、送信先の記憶制御装置にデータを送信することでデータの同期を行う送信元の記憶制御装置が実行する制御プログラムにおいて、
前記送信元の記憶制御装置に、
前記送信元の記憶制御装置が有する記憶部に記憶された同期対象のデータを変更データに変更する要求を前記情報処理装置から受信させ、
前記要求に含まれる、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されたアドレスを特定するアドレス情報を抽出させ、
前記要求を受信した時間を特定する時間情報を生成させ、
抽出された前記アドレス情報と生成された前記時間情報とを含み、前記送信先の記憶制御装置に記憶された前記対応するデータを前記変更データに変更する変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して送信させる、
ことを特徴とする制御プログラム。
【請求項２】
前記制御プログラムはさらに、
前記送信元の記憶制御装置に、
送信された前記変更要求以外に基づく前記対応するデータの変更が実行中でない旨の応答を前記送信先の記憶制御装置から受信した場合、前記送信元の記憶制御装置が有する記憶部に記憶された前記同期対象のデータを前記変更データに変更させ、
前記変更データを、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して送信させる、
ことを特徴とする請求項１記載の制御プログラム。
【請求項３】
前記制御プログラムはさらに、
前記送信元の記憶制御装置に、
前記変更データおよび前記変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に送信可能な経路が複数存在する場合、複数の前記経路それぞれを介して、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して計測用データを送信させ、
送信した前記計測用データを受信した旨の応答を前記送信先の記憶制御装置から受信するまでの応答時間を計測させ、
計測された応答時間が最も短い経路を、前記要求によって変更された前記変更データおよび前記変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に送信させる経路に決定させる、
ことを特徴とする請求項２記載の制御プログラム。
【請求項４】
前記変更要求はさらに、
前記変更データおよび前記変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に送信する経路を特定する経路情報を含む、
ことを特徴とする請求項２または３記載の制御プログラム。
【請求項５】
情報処理装置と通信可能な、送信元の記憶制御装置からデータを受信することでデータの同期を行う送信先の記憶制御装置が実行する制御プログラムにおいて、
前記送信先の記憶制御装置に、
同期対象のデータを変更する要求を前記送信先の記憶制御装置が前記情報処理装置から受信した時間を特定する時間情報と、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されるアドレスを特定するアドレス情報とを含み、前記送信先の記憶制御装置に前記対応するデータを変更データに変更する変更要求を、前記送信元の記憶制御装置から受信させ、
前記記憶部に記憶された、前記アドレス情報で特定される前記対応するデータに対する処理が実行中であり、且つ、前記処理を実行する要求を前記情報処理装置から受信した時間が、前記時間情報で特定される時間よりも後であるとき、前記対応するデータを前記変更データに変更させない、
ことを特徴とする制御プログラム。
【請求項６】
前記送信先の記憶制御装置はさらに、
前記送信元の記憶制御装置および前記送信先の記憶制御装置とデータの送受信を行うことでデータを同期する他の記憶制御装置と接続され、
前記変更要求はさらに、
前記変更要求を前記送信元の記憶制御装置から前記他の記憶制御装置に送信する経路を特定する経路情報を含み、
前記制御プログラムはさらに、
前記送信先の記憶制御装置に、
前記変更要求を、前記経路情報で特定される経路を介して、前記送信先の記憶制御装置から前記他の記憶制御装置に送信させる、
ことを特徴とする請求項５記載の制御プログラム。
【請求項７】
情報処理装置と通信可能な、送信先の記憶制御装置にデータを送信することでデータの同期を行う送信元の記憶制御装置が実行する制御方法において、
前記送信元の記憶制御装置が、
前記送信元の記憶制御装置が有する記憶部に記憶された同期対象のデータを変更データに変更する要求を前記情報処理装置から受信し、
前記要求に含まれる、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されたアドレスを特定するアドレス情報を抽出し、
前記要求を受信した時間を特定する時間情報を生成し、
抽出した前記アドレス情報と生成した前記時間情報とを含み、前記送信先の記憶制御装置に記憶された前記対応するデータを前記変更データに変更する変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して送信する、
ことを特徴とする制御方法。
【請求項８】
情報処理装置と通信可能な、送信元の記憶制御装置からデータを受信することでデータの同期を行う送信先の記憶制御装置が実行する制御方法において、
前記送信先の記憶制御装置が、
同期対象のデータを変更する要求を前記送信先の記憶制御装置が前記情報処理装置から受信した時間を特定する時間情報と、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されるアドレスを特定するアドレス情報とを含み、前記送信先の記憶制御装置に前記対応するデータを変更データに変更する変更要求を、前記送信元の記憶制御装置から受信し、
前記記憶部に記憶された、前記アドレス情報で特定される前記対応するデータに対する処理が実行中であり、且つ、前記処理を実行する要求を前記情報処理装置から受信した時間が、前記時間情報で特定される時間よりも後であるとき、前記対応するデータを前記変更データに変更しない、
ことを特徴とする制御方法。
【請求項９】
情報処理装置と通信可能な、送信先の記憶制御装置にデータを送信することでデータの同期を行う送信元の記憶制御装置において、
同期対象のデータを記憶する記憶部と、
前記記憶部に記憶された同期対象のデータを変更データに変更する要求を前記情報処理装置から受信する受信部と、
前記要求に含まれる、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されたアドレスを特定するアドレス情報を抽出する抽出部と、
前記要求を受信した時間を特定する時間情報を生成する生成部と、
抽出した前記アドレス情報と生成した前記時間情報とを含み、前記送信先の記憶制御装置に記憶された前記対応するデータを前記変更データに変更する変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して送信する送信部と、
を備えたことを特徴とする記憶制御装置。
【請求項１０】
情報処理装置と通信可能な、送信元の記憶制御装置からデータを受信することでデータの同期を行う送信先の記憶制御装置において、
前記送信元の記憶装置に記憶された同期対象のデータに対応するデータを記憶する記憶部と、
同期対象のデータを変更する要求を前記送信先の記憶制御装置が前記情報処理装置から受信した時間を特定する時間情報と、前記記憶部において前記対応するデータが記憶されるアドレスを特定するアドレス情報とを含み、前記送信先の記憶制御装置に前記対応するデータを変更データに変更する変更要求を、前記送信元の記憶制御装置から受信し、
前記記憶部に記憶された、前記アドレス情報で特定される前記対応するデータに対する処理が実行中であり、且つ、前記処理を実行する要求を前記情報処理装置から受信した時間が、前記時間情報で特定される時間よりも後であるとき、前記対応するデータを前記変更データに変更しない制御部と、
を備えたことを特徴とする記憶制御装置。
【請求項１１】
情報処理装置と、送信元の記憶制御装置と、送信先の記憶制御装置とを備えた情報処理システムにおいて、
前記情報処理装置は、
前記送信元の記憶制御装置に記憶されたデータを変更する第１の要求を前記送信元の記憶制御装置に送信する第１の送信部を備え、
前記送信元の記憶制御装置は、
同期対象のデータを記憶する第１の記憶部と、
前記第１の記憶部に記憶された同期対象のデータを変更データに変更する要求を前記情報処理装置から受信する第１の受信部と、
前記要求に含まれる、前記送信先の記憶制御装置が有する記憶部において前記同期対象のデータに対応するデータが記憶されたアドレスを特定するアドレス情報を抽出する抽出部と、
前記要求を受信した時間を特定する時間情報を生成する生成部と、
抽出した前記アドレス情報と生成した前記時間情報とを含み、前記送信先の記憶制御装置に記憶された前記対応するデータを前記変更データに変更する変更要求を、前記送信元の記憶制御装置から前記送信先の記憶制御装置に対して送信する第２の送信部と、を備え、
前記送信先の記憶制御装置は、
前記対応するデータを記憶する第２の記憶部と、
前記変更要求を、前記送信元の記憶制御装置から受信する第２の受信部と、
前記第２の記憶部に記憶された、前記アドレス情報で特定される前記対応するデータに対する処理が実行中であり、且つ、前記処理を実行する要求を前記情報処理装置から受信した時間が、前記時間情報で特定される時間よりも後であるとき、前記対応するデータを前記変更データに変更しない制御部と、
を備えたことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御プログラム、制御方法、記憶制御装置および情報処理システムに関する
【背景技術】
【０００２】
従来、複数の記憶装置間でデータを同期する技術が存在する。複数の記憶装置間でデータを同期することで、例えば、ある記憶装置で障害が発生し、データが消失してしまった場合でも、他の記憶装置に消失したデータと同様のデータが記憶されているため、データの消失を防ぐことが可能である。特に、データが集約されるデータセンタなどでは、データセンタに記憶されたデータを他のデータセンタにコピーすることが従来実施されている。また、複数の記憶装置間でデータを同期する技術が存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２９９４８１号公報
【非特許文献】
【０００４】
【非特許文献１】ｈｔｔｐ：／／ｗｗｗ−ｍ３．ｍａ．ｔｕｍ．ｄｅ／ｆｏｓｗｉｋｉ／ｐｕｂ／ＭＮ０５０６／ＷｅｂＨｏｍｅ／ｄｉｊｋｓｔｒａ．ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、データの同期が行われる複数のデータセンタに同期対象のデータが記憶されている場合、無線通信機能を有するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの情報処理装置（端末）を用いて、最も高速にアクセス可能なデータセンタを適宜選択して、データにアクセスするということが可能である。
【０００６】
しかしながら、従来技術においては、２つ以上の記憶装置間でデータの同期が行われる場合に、それぞれの記憶装置でデータの変更が発生する時間の差、および、同期を行うためのデータの送信に必要な時間により、同期するデータに不整合が生ずるおそれがある。例えば、端末から、データの変更を要求する、異なる２つのデータ変更要求が異なる２つの記憶装置それぞれに発生したとする。変更要求を受信した記憶装置それぞれは、データを同期する他の記憶装置にデータの反映を実行するが、データを同期する他の記憶装置は、どちらのデータ変更要求が早いかを判断することができない。つまり、データの変更要求を受信した時間を特定することができない。
【０００７】
具体的な例を挙げると、図１８に示すようなデータ１を同期して記憶するデータセンタＡ〜Ｄを考える。図１８に示すように、データセンタＡからデータセンタＣにデータを送信するために、２．０秒かかり、データセンタＡからデータセンタＤにデータを送信するために、６．０秒かかるとする。また、データセンタＢからデータセンタＣにデータを送信するために、６．０秒かかり、データセンタＢからデータセンタＤにデータを送信するために、２．０秒かかるとする。また、データセンタＡからデータセンタＢ、あるいはデータセンタＢからデータセンタＡにデータを送信するために、４．０秒かかるとする。
【０００８】
ここで、９：００：００の時刻に、データ１をデータ２に変更するデータ変更要求がデータセンタＡに対して発生し、９：００：０２の時刻に、データ１をデータ３に変更するデータ変更要求がデータセンタＢに対して発生したとする。この場合、データ２への変更よりも後にデータ３への変更が発生しているので、一連の変更が反映された後には、データセンタＡ〜Ｄそれぞれで、データ１がデータ３に変更されるべきである。
【０００９】
しかしながら、データセンタＤでは、データセンタＢに発生したデータ変更についてのデータ変更要求を先に受信してしまうため、データの受信順に変更を実行した場合、データ２が最新のデータとして記憶されてしまう。データセンタＢについても同様のことが言える。したがって、データセンタＡ〜Ｄで、記憶されるデータの内容に不整合が発生してしまうので、端末がデータセンタを任意に選択してデータにアクセスする態様には適用できない。
【００１０】
本発明はこのような課題を解決し、データの変更要求が、データの同期対象の、どの記憶装置で受信した場合であっても、データを受信した記憶装置以外の他の記憶装置が、データの変更要求を受信した時間を特定すること可能とすることを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、送信元の記憶制御装置に、送信元の記憶制御装置が有する記憶部に記憶された同期対象のデータを変更データに変更する要求を情報処理装置から受信させ、要求に含まれる、送信先の記憶制御装置が有する記憶部において同期対象のデータに対応するデータが記憶されたアドレスを特定するアドレス情報を抽出させ、要求を受信した時間を特定する時間情報を生成させ、抽出されたアドレス情報と生成された時間情報とを含み、送信先の記憶制御装置に記憶された対応するデータを変更データに変更する変更要求を、送信元の記憶制御装置から送信先の記憶制御装置に対して送信させる。
【発明の効果】
【００１２】
本発明の１つの態様によれば、情報処理装置からデータを変更する要求を送信元の記憶装置が受信した時間を、送信先の記憶装置が特定することが可能である。
【発明を実施するための最良の形態】
【００１３】
本発明を実施する形態について説明する。
【００１４】
図１は、記憶装置１０１〜１０５が接続される本実施例の情報処理システム１００を示す図である。本実施例においては、図１に示す記憶装置１０１〜１０５でデータを同期する態様を考える。つまり、記憶装置１０１〜１０５に記憶されるデータの同期が行われる。記憶装置１０１〜１０５は、例えば、それぞれが記憶部と、記憶部を制御する制御部を有するデータセンタであっても良い。
【００１５】
図１中のａ〜gは記憶装置間を結ぶ通信経路を表す。各通信経路が結ぶ記憶装置を下記に示す。
通信経路ａ：記憶装置１０１−記憶装置１０２間
通信経路ｂ：記憶装置１０１−記憶装置１０５間
通信経路ｃ：記憶装置１０４−記憶装置１０５間
通信経路ｄ：記憶装置１０１−記憶装置１０４間
通信経路ｅ：記憶装置１０２−記憶装置１０３間
通信経路ｆ：記憶装置１０３−記憶装置１０４間
通信経路ｇ：記憶装置１０２−記憶装置１０４間
上記のように、記憶装置１０１〜１０５のそれぞれは、自装置以外の少なくとも１つの記憶装置１０１〜１０５と接続されている。さらに、記憶装置１０１〜１０５のそれぞれは、記憶装置のデータを変更する要求を記憶装置に対して送信する情報処理装置１１０と接続される。記憶装置１０１〜１０５と、情報処理装置１１０の接続は、記憶装置１０１〜１０５と、情報処理装置１１０とが、それぞれに無線部１２０、１２１を備え、無線通信を行うことで接続されても良い。また、図１においては、一例として、情報処理装置１１０が１つの場合を図示しているが、情報処理装置の台数は図１に示す態様に限定されるものではない。
【００１６】
記憶装置１０１〜１０５はさらに、図１に示すようにインターネットを介してＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｃｏｌ）サーバ１３０に接続され、記憶装置が有する時計の時刻の同期を行うこととしても良い。
【００１７】
図２は、記憶装置１０１のハードウェア構成の一例を示す図である。記憶装置１０１は、制御装置２０１と、制御装置２０１が制御する記憶部２０５を有する。
【００１８】
制御装置２０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２、メモリ２０３、記憶部側アダプタ２０４、ネットワーク側アダプタ２０６、無線制御部２０７を備え、それぞれがバスを介して相互に通信可能に接続されている。
【００１９】
ＣＰＵ２０２は、制御装置２０１と接続される記憶部２０５の制御を行う。メモリ２０３は、記憶部２０５の制御に必要な情報を記憶する。また、記憶部２０５は、ＣＰＵ２０２が実行するプログラムを記憶する。
【００２０】
制御装置２０１は、記憶部側アダプタ２０４を介して、記憶部２０５と接続される。記憶部側アダプタ２０４と記憶部２０５との接続には、例えばＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）を用いることが可能である。記憶部２０５としては、例えば磁気ディスク記憶装置や半導体記憶装置を用いることが可能である。また、制御装置２０１に対して、記憶装置２０５は複数接続されていても良い。
【００２１】
制御装置２０１はネットワーク側アダプタ２０６を介して、記憶装置１０２〜１０５、あるいは情報処理装置１１０と接続可能である。
【００２２】
無線部１２０は、例えば、無線通信の基地局であり、無線制御部２０７は基地局を介して、データの送受信を実行する。
【００２３】
尚、本実施例の場合、記憶装置１０２〜１０５については、記憶装置１０１と同様のハードウェア構成であって良い。
【００２４】
図３は制御装置２０１の機能ブロック図である。本実施例の記憶装置１０１は、送受信部３０１、グループ決定部３０２、応答時間計測部３０３、経路決定部３０４、ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）生成部３０５、排他処理部３０６、データ更新部３０７を備える。
また、制御装置２０１は、データ記憶部３１１、識別番号情報記憶部３１２、応答時間情報記憶部３１３、送信経路情報記憶部３１４、排他処理情報記憶部３１５を備える。各部の実行する動作については後述する。
【００２５】
図３に示す３０２〜３０７の各部は、例えば、ＣＰＵ２０２が、記憶部２０５に記憶されたプログラムを実行することにより実現されても良い。送受信部３０１の例としては、図２に示すネットワーク側アダプタ２０６や無線制御部２０７のようなインタフェースユニットを用いることもできる。データ記憶部３１１は、記憶部２０５を用いて実現されても良い。また、識別番号記憶部３１２、応答時間情報記憶部３１３、送信経路情報記憶部３１４、排他処理情報記憶部３１５は、メモリ２０３や記憶部２０５を用いて実現されても良い。
〔グループの定義〕
まず、データの同期を行う記憶装置のグループを定義する。尚、同期の対象となるデータは、前述したデータ記憶部３１１に記憶される。データの同期を行う記憶装置のグループはあらかじめ定義されることも可能であり、例えば、ＧＵＩ（Ｇｒａｐｈｙｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を用いた設定や、所定の入力動作を、例えば図１に示す情報処理システム１００の管理者が情報処理装置１１０を用いて実行することで定義されても良い。
【００２６】
図４に、制御部２０１の識別番号記憶部３１２に記憶される識別番号４００の態様を示す。どの記憶装置とデータを同期するかは、図４に示すように、記憶装置を識別する識別番号を、グループ決定部３０２が、識別番号記憶部３１２に記憶することで定義する。図４の識別番号４００には、記憶装置１０１〜１０５を識別するために装置それぞれに割り当てられた識別番号である０ｘ０００１〜０ｘ０００５が含まれる。尚、本実施例では、これらの識別番号の形式は１６進数である。図４に示す識別番号４００の場合、記憶装置１０１、記憶装置１０２、記憶装置１０３、記憶装置１０４、記憶装置１０５がデータを同期するグループとして定義されていることを示している。尚、図４は、データの同期を行う記憶装置のグループを定義する手法の１つであり、グループを定義する手法は、図４の態様以外で実現されても良い。
〔応答時間の計測〕
データの同期を行うグループが定義された後、記憶装置１０１〜１０５の応答時間計測部３０３は、自装置と直接接続している記憶装置にデータを送信するときの応答時間を計測する。ここで、直接接続とは、２つの記憶装置が他の記憶装置を介することなく接続している態様を指す。例えば、図１に示す記憶装置１０１の場合、記憶装置１０１は、通信経路ａにより記憶装置１０２と、通信経路ｂにより記憶装置１０５と、通信経路ｄにより記憶装置１０４と直接接続している。そして、記憶装置１０１の応答時間計測部３０３は、記憶装置１０２、１０４、１０５にデータを送信するときの応答時間を計測する。ここで、応答時間とは、データの送信元の記憶装置（送信元装置）が、データの送信先の記憶装置（送信先装置）にデータを送信してから、送信先装置がデータを受信し、送信先からの応答を受信するまでの時間を意味する。
【００２７】
応答時間を計測する手法としては、例えば、応答時間計測部３０３が他の記憶装置に応答時間測定用パケットを送信し、応答時間測定用パケットの宛先である他の記憶装置から、応答時間測定用パケットの受領を通知する応答（受信応答パケット）を受信するまでの時間を計測し、応答時間としても良い。ここで、前述した応答時間測定用パケットおよび受信応答パケットは、例えば、送信データを含まない、いわゆる空パケットを用いて良い。
【００２８】
図５は、応答時間情報記憶部３１３に記憶される情報である応答時間情報５００である。応答時間計測部３０３は、計測した応答時間を応答時間情報記憶部３１３に記憶する。図５に示す応答時間情報５００は、記憶装置１０１の応答時間計測部３０３が送受信部３０１を介して応答時間測定用パケットをした結果、記憶装置１０２に対する応答時間は４．５秒、記憶装置１０４に対する応答時間は３．０秒、記憶装置１０５に対する応答時間は７．５秒であったことを示している。尚、図５および後述する図７において、送信元識別番号は応答時間測定用パケットを送信して応答時間を計測した記憶装置の識別番号であり、送信先識別番号は、応答時間測定用パケットの送信先の記憶装置（応答時間の計測対象の記憶装置）の識別番号である。
【００２９】
ところで、この応答時間の計測は、応答時間計測部３０３によって定期的に行われても良い。
【００３０】
図６は、本実施例において、応答時間計測部３０３が定期的に行う処理の一例を示すシーケンス図である。
【００３１】
図６のシーケンス図について説明する。まず、送信元装置の応答時間計測部３０３は、自装置と直接接続している送信先装置に、送受信部３０１を介して応答時間計測用パケットを送信する（Ｓ６０１）。
【００３２】
送信先装置は、送信元装置が送信した応答時間計測用パケットを受信する（Ｓ６０２）。そして、応答時間計測用パケットに対する受信応答パケットを、送信元装置に対して送信する（Ｓ６０３）。
【００３３】
送信元装置の応答時間計測部３０３は、送信先装置が送信した受信応答パケットを受信する（Ｓ６０４）。そして、ステップＳ６０１で応答時間計測用パケットを送信してから、ステップＳ６０４で送信先装置が送信した受信応答パケットを受信するまでの時間を、送信先装置に対する応答時間として、応答時間情報記憶部３１３に記憶する（Ｓ６０５）。尚、自装置と直接接続している送信先装置が複数ある場合、応答時間計測部３０３は、ステップＳ６０１〜ステップＳ６０５の処理を、送信先装置それぞれに対して実行する。例えば、送信元装置が図１の記憶装置１０１である場合、応答時間計測部３０３は、記憶装置１０２、１０４、１０５のそれぞれに対して、ステップＳ６０１〜ステップＳ６０５の処理を実行する。
【００３４】
ステップＳ６０５で応答時間を記憶した後、送信元装置の応答時間計測部３０３は、送信先装置の応答時間情報記憶部３１２に記憶された応答時間を送信元装置に送信する要求（応答時間送信要求パケット）を、送信先装置に対して送信する（Ｓ６０６）。
【００３５】
送信先装置は、送信先装置の応答時間情報記憶部３１２に記憶された応答時間を送信元装置に送信する要求を送受信部３０１で受信する（Ｓ６０７）。そして、送信先装置の応答時間情報記憶部３１２に記憶された応答時間情報を送信元装置に送信する（Ｓ６０８）。
【００３６】
送信元装置は、送信先装置が送信した応答時間情報を送受信部３０１で受信する（Ｓ６０９）。そして、ステップＳ６０９で送受信部３０１が受信した応答時間情報に基づいて、送信元装置の応答時間情報記憶部３１２に記憶された応答時間情報を更新する（Ｓ６１０）。尚、応答時間情報記憶部３１３に応答時間情報がこの時点で記憶されていない場合は、応答時間情報を新たに生成した応答時間情報記憶部３１３に記憶することとしても良い。
【００３７】
図６に示す処理の手順では、応答時間計測部３０３が応答時間計測後に応答時間送信要求パケットを送信し、応答時間送信要求パケットを受けた記憶装置が、応答時間送信要求パケットを行った記憶装置に応答時間情報を送信することとしたが、応答時間情報を取得する手順はこれに限定されない。例えば、ステップＳ６０５の処理を終えた後に、送信元装置の応答時間送信部３０３は、送信先装置にステップＳ６０５で自装置の応答時間情報記憶部３１２に記憶された応答時間情報を送信し、送信先装置が、送信元装置が送信した応答時間情報を受信することとしても良い。
【００３８】
また、応答時間の計測と、応答時間情報の送信および受信は、図６に示すような一連の処理として行う必要性は必ずしもなく、それぞれの処理は独立して実行されるものであっても良い。
【００３９】
図７は、前述したステップＳ６０１〜Ｓ６１０の手順を記憶装置１０１〜１０５のそれぞれが実行することで、記憶装置１０１〜１０５のそれぞれが有する応答時間情報記憶部３１３に記憶される応答時間情報７００である。図７に示す応答時間情報７００は、記憶装置１０１〜１０５それぞれが計測した応答時間情報をまとめて記憶したものである。送信元識別番号７０１は、送信元装置を識別する識別番号である。送信先識別番号７０２は、送信先装置を識別する識別番号である。応答時間７０３は、計測された応答時間を示す情報である。
【００４０】
応答時間情報７００のうち、応答時間情報７１０は、記憶装置１０１が送信元装置として応答時間を計測した結果である。応答時間情報７１１は、記憶装置１０２が送信元装置として応答時間を計測した結果である。応答時間情報７１２は、記憶装置１０３が送信元装置として応答時間を計測した結果である。応答時間情報７１３は、記憶装置１０４が送信元装置として応答時間を計測した結果である。応答時間情報７１４は、記憶装置１０５が送信元装置として応答時間を計測した結果である。
【００４１】
以後、本実施例においては、記憶装置１０１〜１０５それぞれの応答時間情報記憶部３１３に、図７に示す応答時間情報７００が記憶される。
〔送信経路の決定〕
記憶装置１０１〜１０５のいずれかが、データ記憶部３１１に記憶されたデータを変更する変更要求を情報処理装置１１０から受信した場合、以下の処理を実行する。すなわち、データの変更要求を受信した記憶装置が、データを自装置以外の記憶装置と同期するため、データの変更を反映させるためのデータを送信する要求（データ送信要求パケット）およびデータの変更に必要な情報等を他の記憶装置に送信する経路（送信経路）を決定する。
【００４２】
図８は、本実施例において、データ送信要求パケットおよびデータの変更に必要な情報等を送信する記憶装置（以下、コピー元装置と記載する）の経路決定部３０４が実行する、送信経路を決定する処理の手順を示すフローチャートである。記憶装置１０１〜１０５が送信経路を決定する手順を、図８を用いて説明する。
【００４３】
経路を決定する処理を開始する前に、コピー元装置の経路決定部３０４は、送信経路情報記憶部３１４に送信経路が記憶されている場合、送信経路情報記憶部３１４に記憶されている、送信経路を特定する情報を消去（初期化）する（Ｓ８０１）。ここで、経路決定部３０４は、記憶されていた送信経路の情報をメモリ２０３の、送信経路情報記憶部３１４と異なる他の記憶領域に記憶してから送信経路情報記憶部３１４に記憶されている送信経路の情報を消去することとしても良い。そして、経路決定部３０４は、後述する処理により新たな送信経路が決定した後、メモリ２０３の他の記憶領域に記憶した送信経路の情報を消去することとしても良い。記憶されていた送信経路の情報をメモリ２０３の、送信経路情報記憶部３１４と異なる他の記憶領域に記憶する処理を実行することにより、送信経路の情報の消失を抑止することができる。すなわち、経路決定部３０４が送信経路を決定する処理の実行中に、データの同期を行う場合でも、記憶装置は、メモリ２０３の他の記憶領域に記憶した送信経路の情報に基づいて、データをする送信経路を特定することができる。
【００４４】
ステップＳ８０１の処理を実行後、経路決定部３０４は、識別番号記憶部３１２に記憶された識別番号４００を参照する。そして、識別番号４００に含まれる識別番号０ｘ０００１〜０ｘ０００５で特定される記憶装置１０１〜１０５の識別番号の中から、識別番号を１つ選択する（Ｓ８０２）。例えば、コピー元装置が記憶装置１０１以外の記憶装置である場合であれば、識別番号の小さい順に、ここでは識別番号＝０ｘ０００１を選択することとして良い。また、識別番号の大きい順に識別番号を選択することとしても構わない。この後、経路決定部３０４は、このステップＳ８０２で選択した記憶装置（以後、コピー先記憶装置と記載する）に対してデータを送信する送信経路を算出する処理を実行する。
【００４５】
経路決定部３０４は、コピー先記憶装置を経由する送信経路を特定する情報が送信経路情報記憶部３１４に記憶されているかを判定する（Ｓ８０３）。例として、コピー先装置として記憶装置１０２が選択され、送信経路情報記憶部３１４に「記憶装置１０３から、記憶装置１０２を経由し、記憶装置１０１にデータを送信する送信経路」を特定する情報が記憶されているとする。「記憶装置１０３から、記憶装置１０２を経由し、記憶装置１０１にデータを送信する送信経路」を特定する情報が記憶されている場合、経路決定部３０４は、記憶装置１０２を経由する送信経路を特定する情報が送信経路情報記憶部３１４に記憶されていると判定する。
【００４６】
判定の結果、コピー先記憶装置を経由する送信経路を特定する情報が送信経路情報記憶部３１４に記憶されていると経路決定部３０４が判定した場合、経路決定部３０４は、ステップＳ８０６の処理を実行する。
【００４７】
一方、コピー先記憶装置を経由する送信経路を特定する情報が送信経路情報記憶部３１４に記憶されていないと経路決定部３０４が判定した場合、経路決定部３０４は、ステップＳ８０４の処理を実行する。尚、送信経路情報記憶部３１４に送信経路を特定する情報が記憶されていない場合、経路決定部３０４は、コピー先装置を経由する送信経路を特定する情報が送信経路情報記憶部３１４に記憶されていないと判定し、ステップＳ８０４の処理を実行する。
【００４８】
ステップＳ８０４において、経路決定部３０４は、選択した記憶装置にデータを送信する応答時間が最も短い送信経路を決定する。決定の方法は、例えば、応答時間情報５００を参照し、ダイクストラ法（非特許文献１参照）などの、最短経路を求める手法を用いて決定することが可能である。ステップＳ８０４における具体的な手法については説明を後述する。
【００４９】
応答時間が最も短い送信経路を決定した後、経路決定部３０４は、決定した送信経路を特定する情報を、コピー先装置にデータを送信する送信経路を特定する情報として送信経路情報記憶部３１４に記憶する（Ｓ８０５）。
【００５０】
ステップＳ８０５の処理終了後、経路決定部３０４は、識別番号４００に含まれる識別番号が、ステップＳ８０２ですべて選択されたかを判定する（Ｓ８０６）。識別番号４００に含まれる識別番号の中で、ステップＳ８０２において選択されていない識別番号がある場合は、ステップＳ８０２の処理に戻り、経路決定部３０４は、選択していない記憶装置の中から１つを選択してステップＳ８０３以降の処理を繰り返す。一方、識別番号４００に示される識別番号がすべて選択されたと判定した場合は、ステップＳ８０７の処理を実行する。
【００５１】
例えば、コピー元装置が記憶装置１０３であり、ステップＳ８０２で、識別番号＝０ｘ０００１が選択済みであり、識別番号＝０ｘ０００２、０ｘ０００４、０ｘ０００５が選択されていない場合、ステップＳ８０２の処理に戻る。一方、例えば、コピー元装置が記憶装置１０３であり、ステップＳ８０２で、識別番号＝０ｘ０００１、０ｘ０００２、０ｘ０００４、０ｘ０００５が選択済みである場合、経路決定部３０４はステップＳ８０７の処理を実行する。
【００５２】
ステップＳ８０７において、経路決定部３０４は、送信経路情報記憶部３１４に記憶された送信経路情報により特定される送信経路の中に、他の送信経路に含まれる送信経路があるかを判定する。他の送信経路に含まれる送信経路を特定する情報が記憶されている場合、経路決定部３０４は、他の送信経路に含まれる送信経路を特定する情報を、送信経路情報記憶部３１４から消去する（Ｓ８０８）。一方、ステップＳ８０７で他の送信経路に含まれる送信経路が記憶されていない場合、経路決定部３０４はステップＳ８０８の処理は実行せずに、経路決定処理を終了する。
【００５３】
具体例を用いて説明すると、例えば、コピー元装置が記憶装置１０３であり、記憶装置１０３の送信経路情報記憶部３１４には、下記の送信経路を特定する情報が記憶されているとする。
「記憶装置１０３をコピー元装置として、記憶装置１０２を経由し、コピー先の記憶装置１０１にデータを送信する送信経路」（送信経路１）
「記憶装置１０３をコピー元装置として、記憶装置１０４を経由し、コピー先の記憶装置１０５にデータを送信する送信経路」（送信経路２）
「記憶装置１０３をコピー元装置として、コピー先の記憶装置１０４にデータを送信する送信経路」（送信経路３）
送信経路３は、送信経路２の一部であり、送信経路２に含まれるため、経路決定部３０４は、送信経路３を特定する情報を送信経路記憶部３１４から消去する（Ｓ８０８）。
【００５４】
ステップＳ８０８の処理実行後、経路決定部３０４は、図８に示す経路決定処理を終了する。
【００５５】
以上の手順によって、コピー元装置から、コピー先装置にデータを送信する送信経路を決定することが可能である。上記の手順によれば、データをコピー先記憶装置へ送信するときの、応答時間の合計（合計応答時間）が最も短い送信経路を決定して、送信経路情報記憶部３１４に記憶することが可能である。また、他の送信経路に含まれる経路を消去することで、より効率の良い送信経路を決定することができる。尚、図８に示す処理は、経路決定部３０４によって定期的に実行されることとしても良い。
【００５６】
図９は、送信経路情報記憶部３１３に記憶される情報の一例である。ステップＳ８０５において、経路決定部３０４は、例えば図９に示す送信経路情報９００のような、送信経路を特定する情報を送信経路情報記憶部３１３に記憶することとしても良い。送信経路情報９００の一部である送信経路情報９１０は、前述した送信経路１を特定する情報である。また、送信経路情報９００の一部である送信経路情報９１１は、前述した送信経路２を特定する情報である。
【００５７】
前述したステップＳ８０４において、経路決定部３０４が実行する、合計応答時間が最も短い送信経路を算出する処理において、ダイクストラ法を用いて記憶装置１０３から記憶装置１０１にデータを送信する際に、合計応答時間が最も短い算出する場合を説明する。
【００５８】
まず、コピー元装置を記憶装置１０３に設定する。次に、記憶装置１０３と直接接続している記憶装置に対する応答時間を算出する。ここで、記憶装置１０３と直接接続している記憶装置は、記憶装置１０２、１０４である。記憶装置１０２、１０４に対する記憶装置１０３の応答時間は、例えば、応答時間情報記憶部３１３に記憶された応答時間情報に基づいて算出することとしても良い。ここで、応答時間情報５００を参照すると、記憶装置１０３の記憶装置１０２に対する応答時間は２．０秒、記憶装置１０３の記憶装置１０４に対する応答時間は３．０秒である。
【００５９】
経路決定部３０４は、記憶装置１０２、１０４のそれぞれの識別番号と、応答時間と、直前に経由した記憶装置の識別番号とを対応付けて記憶する。この場合は、経由した記憶装置はないので、コピー元装置である記憶装置１０３の識別番号を記憶する。そして、記憶装置１０３の識別番号と対応付けて、「処理済みフラグ」を付与する。ここで、「処理済みフラグ」とは、最も短い合計応答時間を算出する処理が終了した記憶装置の識別番号に付与されるフラグである。例えば、前述した記憶装置１０３は、コピー元装置であるため、応答時間が０秒である。したがって、記憶装置１０３に対しては、最も短い合計応答時間を算出する処理が終了したので、「処理済みフラグ」が付与される。
【００６０】
次に、応答時間が算出された記憶装置の中で、合計応答時間が最も短い応答時間の記憶装置を選択する。尚、「処理済みフラグ」が付与された識別番号に対応する記憶装置は選択の対象から除外する。この場合は、応答時間が２．０秒である記憶装置１０２が。
【００６１】
次に、経路決定部３０４は、記憶装置１０２と直接接続している記憶装置に対する応答時間を算出する。ここで、応答時間情報５００を参照すると、記憶装置１０２の記憶装置１０１に対する応答時間は４．５秒、記憶装置１０３の記憶装置１０４に対する応答時間は１．５秒である。
【００６２】
経路決定部３０４は、記憶装置１０２の記憶装置１０１に対する応答時間、および記憶装置１０３の記憶装置１０４に対する応答時間に、記憶装置１０２に対応付けて記憶された応答時間を加えた値を合計応答時間として算出する。具体的には、経路決定部３０４は、記憶装置１０２の記憶装置１０１に対する応答時間２．０秒に記憶装置１０２に対応付けて記憶された応答時間４．５秒を加えた値である６．５秒を、記憶装置１０１に対応する合計応答時間として算出する。また、経路決定部３０４は、記憶装置１０２の記憶装置１０１に対する応答時間２．０秒に記憶装置１０２に対応付けて記憶された応答時間１．５秒を加えた値である３．５秒を、記憶装置１０１に対応する合計応答時間として算出する。
【００６３】
経路決定部３０４は、記憶装置１０１、１０４の識別番号と対応付けて合計応答時間が記憶されているかを判定する。ここで、記憶装置１０１の識別番号と対応付けて記憶された合計応答時間は記憶されてない。一方、記憶装置１０４の識別番号と対応付けて記憶された応答時間３．５秒が記憶されている。
【００６４】
経路決定部３０４は、記憶装置１０１の識別番号と、記憶装置１０１に対応する合計応答時間と、直前に経由した記憶装置の識別番号とを対応付けて記憶する。この場合は、直前に経由した記憶装置の識別番号として、記憶装置１０２の識別番号を記憶する。
【００６５】
一方で、記憶装置の識別番号と対応付けて記憶された合計応答時間が記憶され、且つ、その合計応答時間が、算出した合計応答時間の値以下である場合は、算出した合計応答時間情報は記憶しない。例えば、記憶装置１０４の識別番号と対応付けて記憶された応答時間３．０秒は、記憶装置１０１に対応する合計応答時間として算出した３．５秒以下の値であるので、このような場合、算出した合計応答時間である３．５秒は記憶せず、識別番号も更新しない。そして、記憶装置１０２の識別番号と対応付けて、「処理済みフラグ」を付与する。
【００６６】
次に、応答時間が算出された記憶装置の中で、合計応答時間が最も短い記憶装置を選択する。尚、「処理済みフラグ」が付与された識別番号に対応する記憶装置は選択の対象から除外する。この場合、合計応答時間が最も短い記憶装置は応答時間が３．０である記憶装置１０４である。
【００６７】
次に、経路決定部３０４は、記憶装置１０４と直接接続している記憶装置に対する応答時間を算出する。ここで、記憶装置１０３、記憶装置１０２には「処理済みフラグ」が付与されているため、処理の対象から外す。
【００６８】
応答時間情報５００を参照すると、記憶装置１０２の記憶装置１０１に対する応答時間は４．０秒、記憶装置１０３の記憶装置１０４に対する応答時間は４．５秒である。
【００６９】
経路決定部３０４は、記憶装置１０２の記憶装置１０１に対する応答時間、および記憶装置１０３の記憶装置１０４に対する応答時間に、記憶装置１０２に対応付けて記憶された応答時間を加えた値である合計応答時間を算出する。具体的には、経路決定部３０４は、記憶装置１０４の記憶装置１０１に対する応答時間４．０秒に記憶装置１０２に対応付けて記憶された応答時間３．０秒を加えた値である７．５秒を、記憶装置１０１に対応する合計応答時間として算出する。また、経路決定部３０４は、記憶装置１０４の記憶装置１０５に対する応答時間４．５秒に記憶装置１０２に対応付けて記憶された応答時間３．０秒を加えた値である７．５秒を、記憶装置１０５に対応する合計応答時間として算出する。
【００７０】
経路決定部３０４は、記憶装置１０１、１０５の識別番号それぞれについて、識別番号と対応付けて応答時間または合計応答時間が記憶されているかを判定する。ここで、記憶装置１０５の識別番号と対応付けて記憶された応答時間は記憶されてない。一方、記憶装置１０１の識別番号と対応付けて記憶された応答時間６．５秒が記憶されている。
【００７１】
経路決定部３０４は、記憶装置１０５の識別番号と、記憶装置１０５に対応する合計応答時間と、直前に経由した記憶装置の識別番号とを対応付けて記憶する。この場合は、直前に経由した記憶装置の識別番号として、記憶装置１０４の識別番号を記憶する。
【００７２】
一方で、識別番号と対応付けて記憶された合計応答時間が記憶され、且つ、その応答時間が算出した合計応答時間の値以下である場合は、算出した合計応答時間情報は記憶しない。例えば、記憶装置１０１の識別番号と対応付けて記憶された応答時間６．５秒は、記憶装置１０１に対応する合計応答時間として算出された７．０秒以下の値であるので、このような場合、算出した合計応答時間は記憶せず、識別番号も更新しない。そして、記憶装置１０３の識別番号と対応付けて、「処理済みフラグ」を付与する。
【００７３】
次に、応答時間が算出された記憶装置の中で、合計応答時間が最も短い記憶装置を選択する。尚、「処理済みフラグ」が付与された識別番号に対応する記憶装置は選択の対象から除外する。この場合は、応答時間が６．５である記憶装置１０１である。ここで、記憶装置１０１はコピー先装置に設定された記憶装置であるので、これより、記憶装置１０３から記憶装置１０１にデータを送信するときの、最も短い合計応答時間は６．５秒であることが分かる。
【００７４】
図１０は、ダイクストラ法を用いて、合計応答時間が最も短い経路が決定された結果を表す図である。記憶装置１０１に対応付けて記憶された、直前に経由した記憶装置の識別番号は記憶装置１０２の識別番号である。そして、記憶装置１０２に対応付けて記憶された、直前に経由した記憶装置の識別番号は、コピー元装置である記憶装置１０３の識別番号である。したがって、記憶装置１０３から記憶装置１０１にデータを送信するとき、合計応答時間が最も短い送信経路は、「記憶装置１０３から記憶装置１０２を経由し記憶装置１０１にデータを送信する送信経路」であることが分かる。
【００７５】
以上のように、コピー元装置からコピー先装置にデータを送信するときの合計応答時間が最も短い送信経路が決定される。説明に用いた例では、記憶装置１０３から記憶装置１０１にデータを送信する送信経路を決定する場合であるが、記憶装置１０３から記憶装置１０１にデータを送信する送信経路以外の送信経路についても同様の手順で、合計応答時間が最も短い送信経路を求めることが可能である。
〔データ送信の手順〕
図１１は、データを変更する変更要求やデータの変更に必要な情報等を送信するコピー元装置が実行する処理の手順を示すフローチャートである。
【００７６】
まず、コピー元装置の送受信部３０１が、データ記憶部３１１に記憶したデータを変更する変更要求を情報処理装置１１０から受信する（Ｓ１１０１）。
【００７７】
ＩＤ生成部３０５は、自装置の識別番号と、情報処理装置１１０から変更要求を受信した時刻に基づいて、処理ＩＤを生成する（Ｓ１１０２）。ここで、ＩＤ生成部３０５が生成する処理ＩＤは、例えば、情報処理装置１１０からの変更要求を受信した記憶装置と、その変更要求を受信した時刻とを特定する情報として用いられる。処理ＩＤの態様については後述する。
【００７８】
次に、コピー元装置のデータ更新部３０７は、送信経路情報記憶部３１４に記憶された送信経路情報を参照する（Ｓ１１０３）。そして、送信経路情報によって特定される送信経路を介して、データの変更を反映させるためのデータを、コピー先装置に送信することを通知する要求（データ送信要求パケット）を、コピー先装置に送信する（Ｓ１１０４）。
【００７９】
データ送信要求パケットを、送受信部３０１を介してコピー先装置に送信した後、コピー元装置は、定期的に送信先から応答を受信したかを確認しながら、コピー先装置から、データ送信要求パケットに対する応答があるまで待機する（Ｓ１１０５）。
【００８０】
コピー先装置からの応答を受信した場合（Ｓ１１０５、Ｙｅｓ）、コピー元装置の排他処理部３０６は、自装置のデータ記憶部３１１に記憶されたデータを、ステップ１１０１で送受信部３０１が受信した変更要求に基づいて変更可能であるかを判定する（Ｓ１１０６）。ステップＳ１１０６の判定は、例えば、ステップＳ１１０１で送受信部３０１が受信した変更要求によって変更されるデータに対して、データ更新部３０７が処理を実行中でない場合、排他処理部３０６は、データを変更可能であると判定する。また、ステップＳ１１０１で送受信部３０１が受信した変更要求によって変更されるデータに対して、データ更新部３０７が処理を実行中である場合、排他処理部３０６は、データを変更可能でないと判定する。
【００８１】
ステップＳ１１０６で、排他処理部３０６が、データを変更可能でないと判定した場合は、ステップＳ１１０７に示すエンキュー処理を実行する。エンキュー処理については詳細を後述する。一方、ステップＳ１１０６で、排他処理部３０６が、データを変更可能であると判定した場合は、ステップＳ１１０８の処理を実行する。
【００８２】
ステップＳ１１０８において、コピー元装置のデータ更新部３０７は、自装置のデータ記憶部３１１に記憶されているデータを、ステップＳ１１０１で送受信部３０１が受信した変更要求に基づいて変更する（Ｓ１１０８）。そして、変更後のデータをコピー先装置に送信する（Ｓ１１０９）。
【００８３】
以上の手順によって、情報処理装置１１０から変更要求を受信したコピー元装置は、変更要求に基づいて、自装置のデータ記憶部３１１に記憶されたデータを変更する。また、変更要求に基づく変更をコピー先装置に反映させるための情報を、コピー先装置に対して送信する。
【００８４】
図１２は、図１１のステップＳ１１０２の処理において、ＩＤ生成部３０５が生成する処理ＩＤの一例である。本実施例の処理ＩＤは、上８桁に装置識別番号、下８桁にｔｉｃｋ値を割り当てた、１６桁の１６進数である。ここで、ｔｉｃｋ値とは、記憶装置が有する内部時計の時刻に基づいてＩＤ生成部３０５が生成する値である。例えば、図１２に示す処理ＩＤ１２００の場合は、記憶装置１０１の送受信部３０１が、ｔｉｃｋ値＝１２３４５６７８で特定される時間に受信した変更要求の処理ＩＤである。コピー先装置の排他処理部３０６は、処理ＩＤに基づいて、変更要求を受信した記憶装置と、その記憶装置が情報処理装置１１０から変更要求を受信した時刻とを特定することが可能である。すなわち、コピー先装置の排他処理部３０６は、処理ＩＤの上８桁に基づいて、変更要求を受信した記憶装置を特定し、処理ＩＤの下８桁に基づいて、情報処理装置１１０から変更要求を受信した時刻を特定することが可能である。
【００８５】
図１３は、Ｓ１１０４においてコピー先装置が送信するデータ送信要求パケットに含まれる情報の一例である。図１３に示すように、データ送信要求パケットは、データサイズ１３０１、アドレス情報１３０２、処理ＩＤ１３０３、送信経路情報１３０４を含む。データサイズ１３０１は、変更後のデータのデータサイズ（データ長）を特定する情報である。アドレス情報１３０２は、データ記憶部３１１の記憶領域において変更対象のデータが記憶されたアドレスを示す情報である。変更対象のデータが記憶されたアドレスは、情報処理装置から受信した変更要求に含まれている。データ更新部３０７は、変更要求に含まれる、変更対象のデータが記憶されたアドレスを抽出し、抽出したアドレスをアドレス情報１３０２としてデータ送信要求パケットを生成する。処理ＩＤ１３０３は、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤである。送信経路情報１３０４は、データの送信経路を特定する情報である。ここで、送信経路情報１３０４は、図９に示す送信経路情報と同様の態様であって良い。図１３はデータ送信要求パケットに含まれる情報の態様の一例であり、データ送信要求パケットに含まれる情報の態様は、図１３に示す態様に限定されない。
〔エンキュー処理〕
図１４は、Ｓ１１０７のエンキュー処理の手順を示すフローチャートである。前述したステップＳ１１０７のエンキュー処理について図１４を用いて説明する。
【００８６】
排他処理部３０６は、現在データ更新部３０７が実行中の処理の処理ＩＤを参照する（Ｓ１４０１）。次に、排他処理部３０６は、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤと、現在実行中の処理の処理ＩＤとを比較する（Ｓ１４０２）。比較の手法は、例えば、情報処理装置１１０から変更要求を受信した時刻を特定する情報である処理ＩＤの下８桁に示される値の大小に基づいて判定する。つまり、処理ＩＤの下８桁の値が小さい処理ＩＤの方が、過去の時刻を示す処理ＩＤであると判定する。
【００８７】
比較の結果、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値よりも小さい場合、排他処理部３０６は変更要求（に基づくキュー）を消去する（Ｓ１４０３）。
【００８８】
この場合、図１１のステップＳ１１０２で受信した変更要求は、現在処理が実行中の変更要求よりも前に発生したものである。すなわち、現在実行中の処理によって、図１１のステップＳ１１０２で送受信部３０１が受信した変更要求の対象のデータは、変更要求に基づいて変更された後のデータよりも新しいデータに変更される。この場合、図１１のステップＳ１１０２で送受信部３０１が受信した変更要求に基づくデータの変更は不要であるため、排他処理部３０６は、変更要求（に基づくキュー）を消去し、エンキュー処理を終了する。すなわち、排他処理部３０６は、ステップＳ１１０１で送受信部３０１が受信した変更要求に基づいてデータ記憶部３１１に記憶されたデータを変更する処理を抑止する。尚、この場合は、コピー先装置は、エンキュー処理終了後に図１１のＳ１１０９の処理を実行する。
【００８９】
一方、ステップＳ１４０２での比較の結果、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値よりも大きい場合、変更要求は、現在処理中の変更の変更要求よりも後に受信したものであると判定する。この場合、排他処理部３０６は、ステップＳ１４０５の処理を実行する。
【００９０】
また、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの下８桁の値と、現在実行中の処理の処理ＩＤの下８桁の値が同じ値の場合、排他処理部３０６は、以下の処理を行う。すなわち、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値と、現在実行中の処理の処理ＩＤの上８桁の値を比較する（Ｓ１４０４）。比較の結果、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも小さい場合、排他処理部３０６は、変更要求（に基づくキュー）を消去（Ｓ１４０３）し、エンキュー処理を終了する。また、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも大きい場合、排他処理部３０６は、ステップＳ１４０５の処理を実行する。
【００９１】
ここで、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも小さい場合、排他処理部３０６は、ステップＳ１４０５の処理を実行することとしても良い。そして、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも大きい場合、排他処理部３０６は、変更要求（に基づくキュー）を消去し、エンキュー処理を終了することとしても良い。
【００９２】
ステップＳ１４０５で、排他処理部３０６は、現在参照しているキューの次にキューイングされているキューの処理ＩＤを参照する。そして、排他処理部３０６は、参照した処理ＩＤと、データ送信要求パケットの処理ＩＤとを比較する（Ｓ１４０６）。比較の結果、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値よりも小さい場合、排他処理部３０６は、参照しているキューの直前に、ステップＳ１１０１で送受信部３０１が受信した変更要求に基づく変更処理のキューをエンキューする（Ｓ１４０７）。一方、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値よりも以上の場合、排他処理部３０６はステップＳ１４０５の処理を再実行する。  ステップＳ１４０７の後、排他処理部はエンキュー処理を終了する。この後、コピー元装置は、ステップＳ１４０７でエンキューしたキューが実行状態になるまで待機し、ステップＳ１４０７でエンキューしたキューが実行状態になった場合に、データ更新部３０７が、図１１のステップＳ１１０８の処理を実行する。
〔コピー先装置の処理手順〕
図１５は、コピー先装置が実行する処理のうち、コピー先装置がデータ送信要求パケットを受信（Ｓ１５０１）してから、コピー元装置に応答パケットを送信する（Ｓ１５０６）までの手順を示すフローチャートである。コピー元装置からデータ送信要求パケットを受信するコピー先装置が実行する処理の手順について説明する。
【００９３】
まず、コピー元装置が送信したデータ送信要求パケットをコピー先装置の送受信部３０１が受信する。（Ｓ１５０１）
次に、コピー先装置のデータ送信部３０７は、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれている送信経路情報を参照し、自装置が送信経路の終点であるかを判定する（Ｓ１５０２）。ここで、終点について説明すると、例えば、前述した送信経路１の場合、記憶装置１０２は送信経路の終点でなく、一方、記憶装置１０１は送信経路の終点である。送信経路の終点でないと判定した場合、データ更新部３０７はステップＳ１５０３の処理を実行する。一方、送信経路の終点である場合、排他処理部３０６が、ステップＳ１５０４の処理を実行する。
【００９４】
ステップＳ１５０３において、データ更新部３０７は、データの変更を反映させるためのデータ送信要求パケットを、ステップＳ１５０２で参照した送信経路情報に基づいて、送受信部３０１を介して送信経路において自装置より１つ先のコピー先装置に送信する。例えば、ステップＳ１５０２で参照した送信経路情報が前述した送信経路１を示す送信経路情報であり、自装置が記憶装置１０２である場合、データ更新部３０７は、送受信部３０１を介してデータ送信要求パケットを記憶装置１０１に対して送信する。データ送信要求パケットを送信後、排他処理部３０６がステップＳ１５０４の処理を実行する。
【００９５】
ステップＳ１５０４において、排他処理部３０６は、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに基づくデータの変更の処理を、自装置で開始可能かを判定する。データの変更の処理を処理開始可能か否かは、例えば、データ送信要求パケットに含まれるデータのアドレスに、現在アクセスが発生しているかを検出し、アクセスが検出されない場合に、データに対して重複する処理が実行中でないことから処理開始可能と判定される。
【００９６】
データの変更処理が開始可能であると排他処理部３０６が判定した場合、排他処理部３０６は、ステップＳ１５０６の処理を実行する。一方、処理開始が可能でないと判定した場合、排他処理部３０６はステップＳ１５０５のエンキュー処理を実行する。ステップＳ１５０５のエンキュー処理の説明については後述する。
【００９７】
排他処理部３０６がステップＳ１５０５のエンキュー処理を実行後、データ送信要求パケットに基づくキューが実行状態に移ると、データ更新部３０７はメモリ２０３にデータを受信するためのバッファを取得し、データ送信部３０７はデータの変更が可能な旨の応答パケットをコピー元装置に送信する（Ｓ１５０６）。
【００９８】
ステップＳ１５０６の処理を実行後、コピー先装置の処理は図１５の端子Ａから、図１６の端子Ａに移行する。
【００９９】
図１６は、コピー先装置が実行する処理のうち、コピー先装置が、変更データを受信（Ｓ１６０１）してから、変更完了の応答パケットをコピー元装置に送信する（Ｓ１６０４）までの手順を示すフローチャートである。
【０１００】
図１５のステップＳ１５０６でデータ更新部３０７が、データの変更が可能である旨の応答パケットをコピー元装置に送信した後、送受信部３０１はコピー元装置が送信した変更データを受信し、図１５のステップＳ１５０６で取得したバッファに記憶する（Ｓ１６０１）。そして、データ更新部３０７は、図１３に示すステップＳ１２０１で送受信部３０１が受信したデータ送信要求パケットに含まれる情報に基づいて、自装置のデータ記憶部３１１に記憶されたデータをステップＳ１６０１で送受信部３０１がバッファに記憶した変更データに変更する（Ｓ１６０２）。データの変更後、データ更新部３０７は、自装置が送信経路の終点であるかを判定する（Ｓ１６０３）。尚、この判定の手法についてはＳ１５０２と同様であり、したがって例えば、ステップＳ１５０２で判定された結果をメモリ２０３に保持し、保持した結果に基づいてステップＳ１５０２と同様の判定とステップＳ１６０３の判定を行うこととしても良い。
【０１０１】
ステップＳ１６０３で、自装置が送信経路の終点でないと判定した場合、処理の手順は、図１６の端子Ｂから、図１１の端子Ｂに移動し、以後、コピー先装置では図１１のステップＳ１１０６からの処理が実行される。つまり、コピー先装置は、今度はコピー元装置として、データ送信要求パケットおよびデータの変更に必要な情報等を送信する。一方、自装置が送信経路の終点であると判定した場合、コピー先装置のデータ更新部３０７は、送受信部３０１を介して、データの変更が完了した旨の応答パケットをコピー元装置に送信して処理を終了する（Ｓ１６０４）。
〔エンキュー処理〕
図１７は、ステップＳ１５０５でコピー先装置が実行するエンキュー処理の手順を示すフローチャートである。前述したステップＳ１５０５のエンキュー処理について、図１７を用いて説明する。
【０１０２】
排他処理部３０６は、現在データ更新部３０７が実行中の処理の処理ＩＤを参照する（Ｓ１７０１）。次に、排他処理部３０６は、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤと、現在実行中の処理の処理ＩＤとを比較する（Ｓ１７０２）。比較の手法は、例えば、情報処理装置１１０から変更要求を受信した時刻を特定する情報である処理ＩＤの下８桁に示される値の大小に基づいて判定する。つまり、処理ＩＤの下８桁の値が小さい処理ＩＤの方が、過去の時刻を示す処理ＩＤであると判定する。
【０１０３】
比較の結果、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤによって特定される時刻が、現在実行中の処理の処理ＩＤによって特定される時刻よりも小さい場合、排他処理部３０６はデータ送信要求パケット（に基づくキュー）を消去する（Ｓ１７０３）。
【０１０４】
この場合、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに対応する変更要求は、現在処理中の変更を要求した変更要求よりも前に受信したものであると判定する。つまり、現在実行中の処理により、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットの対象のデータは、データ送信要求パケットに基づいて変更された後のデータよりも新しいデータに変更される。この場合、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに基づくデータの変更は不要であるため、排他処理部３０６は、データ送信要求パケット（に基づくキュー）を消去し、エンキュー処理を終了する。言い換えれば、排他処理部３０６は、図１５のステップＳ１５０１で送受信部３０１が受信した変更要求に基づいてデータ記憶部３１１に記憶されたデータを変更する処理を抑止する。尚、この場合は、コピー先装置のデータ更新部３０７は、エンキュー処理終了後に図１６のＳ１６０３の処理を実行する。
【０１０５】
一方、ステップＳ１７０２での比較の結果、ステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤによって特定される時刻が、現在実行中の処理の処理ＩＤによって特定される時刻よりも大きい場合、排他処理部３０６は、以下のように判定する。すなわち、排他処理部３０６は、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに対応する変更要求は、現在処理中の変更の変更要求よりも後に受信したものであると判定する。この場合、排他処理部３０６は、ステップＳ１７０５の処理を実行する。
【０１０６】
また、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値と同じ値の場合、排他処理部３０６は、以下の処理を行う（Ｓ１７０４）。すなわち、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの上８桁の値と、現在実行中の処理の処理ＩＤの上８桁の値を比較する。比較の結果、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも小さい場合、排他処理部３０６は、データ送信要求パケット（に基づくキュー）を消去する（Ｓ１７０３）。また、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも大きい場合、排他処理部３０６はステップＳ１７０５の処理を実行する。
【０１０７】
ここで、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも小さい場合、排他処理部３０６は、排他処理部３０６はステップＳ１７０５の処理を実行することとしても良い。そして、図１１のステップＳ１１０２でＩＤ生成部３０５が生成した処理ＩＤの上８桁の値が、現在実行中の処理の処理ＩＤの上８桁の値よりも大きい場合、排他処理部３０６は、データ送信要求パケット（に基づくキュー）を消去することとしても良い。
【０１０８】
ステップＳ１７０５では、現在参照しているキューの次にキューイングされているキューの処理ＩＤを参照する。そして、参照した処理ＩＤと、データ送信要求パケットの処理ＩＤとを比較する（Ｓ１７０６）。比較の結果、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値よりも小さい場合、排他処理部３０６は、参照しているキューの直前に、ステップＳ１５０１で送受信部３０１が受信した変更要求に基づく変更処理のキューをエンキューする（Ｓ１７０７）。一方、ステップＳ１７０６比較の結果、図１５のステップＳ１５０１で送受信部３０１が受信したデータ送信要求パケットに含まれる処理ＩＤの下８桁の値が、現在実行中の処理の処理ＩＤの下８桁の値以上の場合、排他処理部３０６はステップＳ１７０５の処理を再実行する。  ステップＳ１７０７の後、排他処理部３０６はエンキュー処理を終了する。この後、コピー元装置は、ステップＳ１７０７でエンキューしたキューが実行状態になるまで待機し、ステップＳ１７０６でエンキューしたキューが実行状態になった場合に、データ更新部３０７が、図１５のステップＳ１５０６の処理を実行する。
【０１０９】
以上の手順で、コピー元装置が受信した変更要求を、他の記憶装置（コピー先装置）に送信し、データの同期を行う。
【０１１０】
本実施例によれば、記憶装置１０１〜１０５のいずれかがデータ変更要求を受信したとき、受信した記憶装置は、データ変更要求を受信した時刻を特定する情報を生成し、生成した、時刻を特定する情報を、データの送信要求に含めて他の記憶装置に送信する。また、データ送信要求パケットを受信した他の記憶装置は、データ送信要求パケットに含まれる、時刻を特定する情報に基づいて、記憶装置１０１〜１０５のそれぞれがデータの変更を実行する。これにより、例えば、コピー元装置からコピー先装置にデータを送信するときの応答時間の差により、変更要求とデータ送信要求パケットの順序が異なる場合であっても、データの矛盾を発生させることなく、記憶装置１０１〜１０５に記憶されるデータの同期を行うことができる。
【０１１１】
また、本実施例では、グループに属する他の記憶装置にデータを送信する場合、応答時間が最も短くなる送信経路を選択し、データの送信を行うため、データ送信の効率を向上させることが可能である。
【０１１２】
本実施例は、本発明を実現する態様を示した一例であり、本発明を実施する態様は実施例を用いて説明した態様に限定されない。
【図面の簡単な説明】
【０１１３】
【図１】本実施例の情報処理システム１００を示す。
【図２】記憶装置１０１のハードウェア構成の一例を示す。
【図３】記憶装置１０１の機能ブロック図を示す。
【図４】識別番号４００を示す。
【図５】応答時間情報５００を示す。
【図６】本実施例において、応答時間計測部３０３が定期的に行う処理の手順を表すシーケンス図を示す。
【図７】応答時間情報７００を示す。
【図８】経路決定部３０４が送信経路を決定する処理の手順を表すフローチャートを示す。
【図９】送信経路情報９００を示す。
【図１０】ダイクストラ法による処理の結果を表す図を示す。
【図１１】送信元装置が実行する処理の手順を示すフローチャートを示す。
【図１２】処理ＩＤ１２００を示す。
【図１３】送信先装置が送信するデータ送信要求パケットに含まれる情報の一例を              示す。
【図１４】送信元装置が実行するエンキュー処理の手順を示すフローチャートを示              す。
【図１５】送信元装置が実行する処理の手順（１／２）を表すフローチャートを示す。
【図１６】送信元装置が実行する処理の手順（２／２）を表すフローチャートを示す。
【図１７】送信先装置が実行するエンキュー処理の手順を示すフローチャートを示              す。
【図１８】従来技術を説明する図を示す。
【符号の説明】
【０１１４】
１００  情報処理システム
１０１、１０２、１０３、１０４、１０５  記憶装置
１１０  情報処理装置
１２０、１２１  無線部
１３０  ＮＴＰサーバ１３０
２０１  制御装置
２０２  ＣＰＵ
２０３  メモリ
２０４  記憶部側アダプタ
２０５  記憶部
２０６  ネットワーク側アダプタ
２０７  無線制御部
３０１  送受信部
３０２  グループ決定部
３０３  応答時間計測部
３０４  経路決定部
３０５  ＩＤ生成部
３０６  排他処理部
３０７  データ更新部
３１１  データ記憶部
３１２  識別番号記憶部
３１３  応答時間情報記憶部
３１４  送信経路情報記憶部
３１５  排他処理情報記憶部
【図１】
0005853819.tif 000002
【図２】
0005853819.tif 000003
【図３】
0005853819.tif 000004
【図４】
0005853819.tif 000005
【図５】
0005853819.tif 000006
【図６】
0005853819.tif 000007
【図７】
0005853819.tif 000008
【図８】
0005853819.tif 000009
【図９】
0005853819.tif 000010
【図１０】
0005853819.tif 000011
【図１１】
0005853819.tif 000012
【図１２】
0005853819.tif 000013
【図１３】
0005853819.tif 000014
【図１４】
0005853819.tif 000015
【図１５】
0005853819.tif 000016
【図１６】
0005853819.tif 000017
【図１７】
0005853819.tif 000018
【図１８】
0005853819.tif 000019