(57)【特許請求の範囲】
【請求項１】
第１のデータを格納する第１の格納手段を有する同期元装置と、第２のデータを格納する第２の格納手段を有する同期先装置とを備え、前記同期元装置が有する第１の格納手段に格納される第１のデータ及び前記第２の格納手段に格納される第２のデータを同期させるデータ同期システムにおいて、
前記同期元装置は、
前記第１の格納手段に前記第１のデータが書き込まれる際に、当該第１のデータが分割された複数の第１の断片データの各々に対応する第１の識別子を生成する第１の生成手段を含み、
前記同期先装置は、
前記第２の格納手段に前記第２のデータが書き込まれる際に、当該第２のデータが分割された複数の第２の断片データの各々に対応する第２の識別子を生成する第２の生成手段と、
前記第１の格納手段に格納されている第１のデータ及び前記第２の格納手段に格納されている第２のデータを同期させる際に、前記第１の生成手段によって生成された第１の識別子及び当該第１の識別子に対応する前記第２の生成手段によって生成された第２の識別子が一致するかを判定する識別子判定手段と、
前記第１の識別子及び当該第１の識別子に対応する前記第２の識別子が一致しないと判定された場合、当該第１の識別子に対応する前記第１の断片データを前記第２の格納手段に書き込む書き込み手段と
を含み、
前記第２の生成手段は、前記書き込み手段によって書き込まれた前記第１の断片データに対応する前記第１の識別子を生成し、
前記第２の格納手段は、前記第２の生成手段によって生成された前記第１の識別子を、前記書き込み手段によって書き込まれた前記第１の断片データに対応付けて格納する
ことを特徴とするデータ同期システム。
【請求項２】
前記識別子判定手段は、
前記第１の生成手段によって生成された第１の識別子を取得する取得手段を含み、
前記取得された第１の識別子及び当該第１の識別子に対応する前記第２の識別子が一致するかを判定し、
前記第２の格納手段は、前記取得された第１の識別子及び当該第１の識別子に対応する前記第２の識別子が一致しないと判定された場合、当該取得された第１の識別子を、前記書き込み手段によって書き込まれた前記第１の断片データに対応付けて格納する
ことを特徴とする請求項１記載のデータ同期システム。
【請求項３】
前記第１の生成手段は、前記第１の格納手段に前記第１のデータが書き込まれる際に、当該第１のデータが分割された複数の第１の断片データの各々に対応する第１の識別子が無効であることを表す無効識別子を生成し、
前記第２の生成手段は、前記第２の格納手段に前記第２のデータが書き込まれる際に、当該第２のデータが分割された複数の第２の断片データの各々に対応する第２の識別子が無効であることを表す無効識別子を生成し、
前記識別子判定手段は、前記第１の格納手段に格納されている第１のデータ及び前記第２の格納手段に格納されている第２のデータを同期させる際に、前記第１の生成手段によって生成された第１の識別子または当該第１の識別子に対応する前記第２の生成手段によって生成された第２の識別子が無効識別子であるかを判定し、
前記書き込み手段は、前記第１の識別子または当該第１の識別子に対応する前記第２の識別子が無効識別子であると判定された場合、当該第１の識別子に対応する前記第１の断片データを前記第２の格納手段に書き込む
ことを特徴とする請求項１記載のデータ同期システム。
【請求項４】
前記第１の生成手段は、前記第１の識別子が無効識別子であると判定された場合、当該無効識別子に対応する第１の断片データに対応する第１の識別子を生成し、
前記第２の生成手段は、前記第２の識別子が無効識別子であると判定された場合、当該無効識別子に対応する第２の断片データに対応する第２の識別子を生成する
ことを特徴とする請求項３記載のデータ同期システム。
【請求項５】
前記第１の格納手段は、前記第１の生成手段によって生成された第１の識別子を、当該第１の識別子に対応する第１の断片データに対応付けて格納し、
前記第２の格納手段は、前記第２の生成手段によって生成された第２の識別子を、当該第２の識別子に対応する第２の断片データに対応付けて格納し、
前記同期元装置は、前記第１の格納手段に格納されている第１の識別子のうち無効識別子を検出するために定期的に走査する第１の走査手段を更に含み、
前記第１の生成手段は、前記第１の走査手段によって無効識別子が検出された場合、当該無効識別子に対応する第１の断片データに対応する第１の識別子を生成し、
前記同期先装置は、前記第２の格納手段に格納されている第２の識別子のうち無効識別子を検出するために定期的に走査する第２の走査手段を更に含み、
前記第２の生成手段は、前記第２の走査手段によって無効識別子が検出された場合、当該無効識別子に対応する第２の断片データに対応する第２の識別子を生成する
ことを特徴とする請求項３記載のデータ同期システム。
【請求項６】
前記第１の生成手段は、前記複数の第１の断片データの各々に対応する第１の識別子として、当該複数の第１の断片データの各々のハッシュ値を生成し、
前記第２の生成手段は、前記複数の第２の断片データの各々に対応する第２の識別子として、当該複数の第２の断片データの各々のハッシュ値を生成する
ことを特徴とする請求項１記載のデータ同期システム。
【請求項７】
前記同期元装置及び前記同期先装置とは別に設けられ、前記第１のデータ及び当該第１のデータが分割された複数の第１の断片データの各々に対応する第１の識別子を格納するための第３の格納手段を更に具備し、
前記同期先装置は、前記第１の識別子及び前記第１のデータが分割された第１の断片データを、前記第３の格納手段から取得する取得手段を更に含み、
前記識別子判定手段は、前記取得された第１の識別子及び当該第１の識別子に対応する前記第２の生成手段によって生成された第２の識別子が一致するかを判定し、
前記書き込み手段は、前記取得された第１の識別子に対応する第１の断片データを前記第２の格納手段に書き込む
ことを特徴とする請求項１記載のデータ同期システム。
【請求項８】
前記第１のデータは第１のボリュームイメージであり、前記第２のデータは第２のボリュームイメージであり、
前記第１の断片データは、前記第１のボリュームイメージの予め設定された論理ブロックアドレス間隔で設定され、
前記第２の断片データは、前記第２のボリュームイメージの前記論理ブロックアドレス間隔で設定される
ことを特徴とする請求項１記載のデータ同期システム。
【請求項９】
前記第１のデータは複数の第１のファイルであり、前記第２のデータは複数の第２のファイルであり、
前記第１の断片データは、前記複数の第１のファイルのファイル毎に設定され、
前記第２の断片データは、前記複数の第２のファイルのファイル毎に設定される
ことを特徴とする請求項１記載のデータ同期システム。
【請求項１０】
前記第１のデータは複数の第１のファイルであり、前記第２のデータは複数の第２のファイルであり、
前記第１の断片データは、前記複数の第１のファイルの任意のバイト間隔毎に設定され、
前記第２の断片データは、前記複数の第２のファイルの任意のバイト毎に設定される
ことを特徴とする請求項１記載のデータ同期システム。
【請求項１１】
前記第１のファイル及び前記第２のファイルにはタイムスタンプが付加されており、
前記同期元装置は、前記タイムスタンプを監視することにより、前記第１の断片データに対応する第１の識別子を再生成する必要があるかを判定する第１のタイムスタンプ判定手段を更に含み、
前記第１の生成手段は、前記第１の識別子を再生成する必要があると判定された場合、新たな第１の識別子を生成し、
前記同期先装置は、前記タイムスタンプを監視することにより、前記第２の断片データに対応する第２の識別子を再生成する必要があるかを判定する第２のタイムスタンプ判定手段を更に含み、
前記第２の生成手段は、前記第２の識別子を再生成する必要があると判定された場合、
新たな第２の識別子を生成する
ことを特徴とする請求項９または１０記載のデータ同期システム。
【請求項１２】
第１のデータを格納する第１の格納手段を有する同期元装置と、第２のデータを格納する第２の格納手段を有する同期先装置とを備え、前記同期元装置が有する第１の格納手段に格納されている第１のデータ及び前記第２の格納手段に格納されている第２のデータを同期させるデータ同期システムのコンピュータにより実行されるデータ同期プログラムであって、
前記第１の格納手段に前記第１のデータが書き込まれる際に、当該第１のデータが分割された複数の第１の断片データの各々に対応する第１の識別子を生成するステップと、
前記第２の格納手段に前記第２のデータが書き込まれる際に、当該第２のデータが分割された複数の第２の断片データの各々に対応する第２の識別子を生成するステップと、
前記第１の格納手段に格納されている第１のデータ及び前記第２の格納手段に格納されている第２のデータを同期させる際に、前記第１の生成手段によって生成された第１の識別子及び当該第１の識別子に対応する前記第２の生成手段によって生成された第２の識別子が一致するかを判定するステップと、
前記第１の識別子及び当該第１の識別子に対応する前記第２の識別子が一致しないと判定された場合、当該第１の識別子に対応する前記第１の断片データを前記第２の格納手段に書き込むステップと、
前記書込まれた前記第１の断片データに対応する前記第１の識別子を生成するステップと、
前記生成された前記書込まれた前記第１の断片データに対応する前記第１の識別子を、当該第１の断片データに対応付けて前記第２の格納手段に格納するステップと
を実行させるデータ同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期元装置及び同期先装置において、データを同期させるデータ同期システム及びデータ同期プログラムに関する。
【背景技術】
【０００２】
近年、例えば社外に持ち出した情報機器の盗難、紛失による情報漏えい、またはセキュリティ事故への対策方法として、例えば社外に持ち出す情報機器のディスクに格納されるデータ、例えばＯＳ（Operation System）やアプリケーションを含むディスクボリュームイメージには、予め確認または承認されたイメージを使用する方法が提案されている。このような方法によれば、例えば社外で作成または保存されたデータは、電源が落とされるとともに消去される。また、保存が必要なデータは、ネットワーク越しに会社に転送されて保存または例えば秘密分散法等の手法を用いて保存される。
【０００３】
このような１つのボリュームイメージを同期元から同期先に同期（コピー）する技術には、例えば学校の計算機演習質またはコールセンター等で多数のＰＣ（パーソナルコンピュータ）のシステムイメージを統一するための配布（デプロイ）方法が適用できる。
【０００４】
例えば同期元装置は、当該同期元装置が有する記憶部（例えばＨＤＤ等の記憶メディア）に格納されているボリュームイメージを読み込み、通信路を経由して同期先（装置）に転送する。同期先装置では、転送されたボリュームイメージが当該同期先装置の記憶部に書き込まれる。これにより、同期処理が実行される。なお、同期元装置とは、例えば同期するディスクボリュームイメージ（マスタイメージ）を作成する情報機器である。一方、同期先装置は、例えば同期元装置で作成されたディスクボリュームイメージを同期する際の同期先となる情報機器である。
【０００５】
ここで、例えば同期元装置の記憶部に格納されているボリュームイメージが更新された場合を想定する。この場合であっても、この後に同期処理が実行されると、例えばボリュームイメージを構成するブロック（ボリュームイメージが分割された断片）１つずつの更新の有無に関わらず、ボリュームイメージ全体が同期先装置に転送されることになる。つまり、同期元装置及び同期先装置において、同一のブロックが両方の記憶部に格納されている場合、当該ブロックについては既に同期処理された状態にあるにもかかわらず当該ブロックについても転送される。このように、例えばボリュームイメージを構成するブロックのうち、更新されていないブロック（既に同期状態にあるブロック）についても転送されるため同期処理が低速となる。
【０００６】
そこで、更新されたブロックについてのみ処理することで、より高速に同期処理を実行する技術として差分転送技術がある。この差分転送技術には、例えばボリュームイメージを構成するブロック毎に関する更新マップを利用して、更新されたブロックを検出する技術（以下、第１の技術と表記）がある。
【０００７】
また、例えばボリュームイメージを構成するブロック毎のデータのハッシュ値のような識別子を転送（同期）元または先で比較することで、更新されたブロックを検出する技術（以下、第２の技術と表記）がある。この第２の技術では、同期元装置及び同期先装置において、現在のボリュームイメージ（現在同期元装置の記憶部及び同期先装置の記憶部に格納されているボリュームイメージ）の各断片（ブロック）の識別子が生成される。例えば、ボリュームイメージが固定量のセクタ単位で読み込まれ、そのハッシュ値が生成される。そして、例えば同期元装置において、対応するハッシュ値（識別子）を比較し、互いのハッシュ値が異なっているセクタのデータが同期先装置に転送され、当該データが上書きされる。第２の技術によれば、このように識別子の違いにより、同期先装置及び同期元装置に格納されているボリュームイメージのうち、更新された部分（以下、差分と表記）を検出することができる。
【０００８】
上記したような差分転送技術により、同期元装置においてボリュームの更新があった場合に、ボリュームイメージ全体を転送することなく差分のみの転送を実現することが可能となる。
【０００９】
上記したような差分転送技術について、レプリケーションに要する時間の短縮に好適な技術が開示されている（例えば、特許文献１を参照）。この技術によれば、レプリケーション先へバックアップメディアを搬送しバックアップ装置からバックアップし、差分データのみをコピーする。
【特許文献１】特開２００６−２６８７４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記したような第１の技術のような差分転送技術では、例えば転送先ＰＣ（同期先装置）が複数存在し、バージョンが異なる複数のボリュームイメージを有する場合、それぞれのバージョンに合わせて差分マップを管理する必要がある。また、任意のバージョンの差分マップが欠けてしまうと、そのバージョン以降のボリュームイメージを復元することは完全に不可能である。その場合、同期元装置において更新されたボリュームイメージの差分を転送することができないため、同期先装置では、同期（配布）されるボリュームイメージを全て読み込む必要がある。また、差分マップが欠けると差分を転送することができないため、例えば古いバージョンの差分マップであっても容易に捨てる（削除する）ことはできない。
【００１１】
一方、上記した第２の技術のような差分転送技術では、例えば配布を開始する時点での転送元（同期元）と転送先（同期先）それぞれのボリュームイメージの識別子が必要となる。このため、同期を開始する時点で、それぞれにボリュームイメージ全体を読み込み、当該ボリュームイメージの識別子の生成処理を行う必要がある。このとき、例えば通信路に対するアクセスが、同期元装置または同期先装置が有する記憶部へのアクセスと比較して十分高速な場合には、ボリュームイメージ全体の読み込み処理がボトルネックとなる。これにより、結果的に差分転送による同期処理の高速化の効果は小さくなる。
【００１２】
これに対して、例えば同期元装置及び同期先装置において予め同期しておき、かつ、ボリュームイメージの書き換えが発生しないことを条件として、同期先装置でのボリュームイメージ全体の読み込み処理または識別子の生成処理を取り除くことで、差分転送での高速化の効果をより大きくする技術がある。しかしながら、この技術では、同期先装置における書込み保護の仕組みを設ける必要がある。つまり、同期先装置においてデータの書き込みを行うことができない。また、この技術では、初期同期と更新同期の２種類の同期方法を使い分けなければならない。
【００１３】
本発明の目的は、予め同期しておく必要がなく、かつ、同期先装置においてデータ書き込みが行われた場合であっても、正しく同期処理を実行することが可能なデータ同期装置及びデータ同期プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の態様によれば、第１のデータを格納する第１の格納手段を有する同期元装置と、第２のデータを格納する第２の格納手段を有する同期先装置とを備え、前記同期元装置が有する第１の格納手段に格納される第１のデータ及び前記第２の格納手段に格納される第２のデータを同期させるデータ同期システムにおいて、前記同期元装置は、前記第１の格納手段に前記第１のデータが書き込まれる際に、当該第１のデータが分割された複数の第１の断片データの各々に対応する第１の識別子を生成する第１の生成手段を含み、前記同期先装置は、前記第２の格納手段に前記第２のデータが書き込まれる際に、当該第２のデータが分割された複数の第２の断片データの各々に対応する第２の識別子を生成する第２の生成手段と、前記第１の格納手段に格納されている第１のデータ及び前記第２の格納手段に格納されている第２のデータを同期させる際に、前記第１の生成手段によって生成された第１の識別子及び当該第１の識別子に対応する前記第２の生成手段によって生成された第２の識別子が一致するかを判定する識別子判定手段と、前記第１の識別子及び当該第１の識別子に対応する前記第２の識別子が一致しないと判定された場合、当該第１の識別子に対応する前記第１の断片データを前記第２の格納手段に書き込む書き込み手段とを含み、前記第２の生成手段は、前記書き込み手段によって書き込まれた前記第１の断片データに対応する前記第１の識別子を生成し、前記第２の格納手段は、前記第２の生成手段によって生成された前記第１の識別子を、前記書き込み手段によって書き込まれた前記第１の断片データに対応付けて格納することを特徴とするデータ同期システムが提供される。
【発明の効果】
【００１５】
本発明によれば、予め同期しておく必要がなく、かつ、同期先装置においてデータ書き込みが行われた場合であっても、正しく同期処理を実行することを可能とする。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明の実施形態について説明する。
【００１７】
図１は、本実施形態に係るデータ同期システムを構成する同期元装置または同期先装置のハードウェア構成を示すブロック図である。なお、図１では、同期元装置について説明するが、同期先装置についても同様の構成である。以下、同期先装置の構成についても、図１を用いて説明する。
【００１８】
図１に示すように、コンピュータ１０は、例えばハードディスクドライブ（HDD）のような外部記憶装置２０と接続されている。この外部記憶装置２０は、コンピュータ１０によって実行されるプログラム２１を格納する。コンピュータ１０及び外部記憶装置２０は、同期元装置３０を構成する。
【００１９】
図２は、本実施形態に係るデータ同期システムの主として機能構成を示すブロック図である。データ同期システム１００は、同期元装置３０及び同期先装置５０から構成される。同期元装置３０及び同期先装置５０は、例えば通信路を通して通信可能に接続されている。このデータ同期システム１００では、同期元装置３０の内部に格納されているデータ（第１のデータ）及び同期先装置５０の内部に格納されているデータ（第２のデータ）を同期させる。以下、この処理を同期処理と称する。また、同期処理の対象となるデータは、例えばＯＳ（Operating System）やアプリケーションを含むディスクボリュームイメージ（以下、単にボリュームイメージと表記）である。
【００２０】
同期元装置３０は、データアクセス部３１、識別子生成部３２、同期制御部３３及び転送部３４を含む。本実施形態において、各部３１乃至３４は、図１に示されるコンピュータ１０が外部記憶装置２０に格納されているプログラム２１を実行することにより実現されるものとする。このプログラム２１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプラグラム２１が例えばネットワークを介してコンピュータ１０にダウンロードされても構わない。
【００２１】
また、同期元装置３０は、記憶（格納）部２２を含む。本実施形態において、記憶部２２は、外部記憶装置２０に格納される。
【００２２】
データアクセス部３１は、例えばファイルシステムやデータベース（ＤＢ）等の上位レイヤに対して、記憶部２２に対する書き込みまたは読み込みのアクセス機能を提供する。この場合、上位レイヤへのインタフェースとしては、例えばＳＣＳＩ（Small Computer System Interface）等が利用できる。
【００２３】
データアクセス部３１は、データの書き込みの際には、例えば論理ブロックアドレス（ＬＢＡ：Logical Block Address）及びボリュームイメージ（セクタ単位）を入力する。データアクセス部３１は、入力されたボリュームイメージを固定セクタ長の複数のデータ断片（以下、断片データと表記）として切り出し（分割し）、識別子生成部３２に渡す。ボリュームイメージが分割された複数の断片データは、例えば任意の論理ブロックアドレス間隔毎に設定されている。ここでは、断片データの切り出しセクタ長を例えば１セクタ長とする。データアクセス部３１は、入力されたボリュームイメージ（が分割された複数の断片データ）及び当該複数の断片データの各々に対応する識別子を記憶部２２に書き込む。
【００２４】
また、データアクセス部３１は、データの読み込みの際には、ボリュームイメージ（データ）の読み込みと識別子の読み込みの２種類のインタフェースを有する。データアクセス部３１は、例えば論理ブロックアドレスを入力し、ボリュームイメージまたは識別子を出力する。
【００２５】
識別子生成部３２は、データアクセス部３１によって渡されたボリュームイメージが分割された複数の断片データ（第１の断片データ）の各々に対応する識別子（第１の識別子）を生成する。識別子生成部３２は、複数の断片データの各々に対応する識別子として、当該複数の断片データの各々のハッシュ値を生成する。識別子生成部３２は、例えばＭＤ５またはＳＨＡ−１のようなハッシュ関数を用いてハッシュ値を生成する。
【００２６】
記憶部２２は、例えばＨＤＤのような記憶媒体であって、上記したボリュームイメージ（第１のデータ）を格納する。また、記憶部２２は、識別子生成部３２によって生成された識別子を格納する。記憶部２２は、ボリュームイメージが分割された複数の断片データ及び当該断片データの各々に対応する識別子を対応付けて格納する。記憶部２２は、ボリュームイメージ及び識別子を格納するのに十分な記憶容量を有する。
【００２７】
記憶部２２にボリュームイメージ及び識別子（群）を格納する方法として、例えば当該ボリュームイメージ及び識別子群を別々のパーティションに格納する方法がある。この方法によれば、識別子群が格納されているパーティションは、例えばデータアクセス部３１以外からは直接書き込みができないように保護される。
【００２８】
同期制御部３３は、例えば同期先装置５０より、例えば同期処理を開始するための要求（以下、同期開始要求と表記）を受け付ける。同期制御部３３は、同期開始要求を受け付けると、例えばデータアクセス部３１を介して、例えば記憶部２２に格納されている識別子を読み込む。同期制御部３３は、データアクセス部３１を介して、例えば記憶部２２に格納されているボリュームイメージ（が分割された断片データ）を読み込む。
【００２９】
転送部３４は、例えば同期制御部３３によって読み込まれたボリュームイメージ（を構成する断片データ）及び識別子を同期先装置５０に対して転送（読み取り・書き込み）する。この通信方法として、例えばｉＳＣＳＩ（Internet Small Computer System Interface）が利用可能である。
【００３０】
同期先装置５０は、データアクセス部５１、識別子生成部５２、同期制御部５３及び転送部５４を含む。本実施形態において、各部５１乃至５４は、図１に示されるコンピュータ１０が外部記憶装置２０に格納されているプログラム２１を実行することにより実現されるものとする。
【００３１】
また、同期先装置５０は、記憶部２３を含む。本実施形態において、記憶部２３は、外部記憶装置２０に格納される。
【００３２】
データアクセス部５１は、上記したデータアクセス部３１と同様に、例えばファイルシステムやＤＢ等の上位レイヤに対して、記憶部２３に対する書き込みまたは読み込みのアクセス機能を提供する。この場合、上位レイヤへのインタフェースとしては、例えば上記したＳＣＳＩ等が利用できる。なお、同期先装置５０におけるデータの書き込みまたは読み込みの際の処理については、上記したデータアクセス部３１と同様である。
【００３３】
識別子生成部５２は、ボリュームイメージが分割された複数の断片データ（第２の断片データ）の各々に対応する識別子（第２の識別子）を生成する。識別子生成部５２は、複数の断片データの各々に対応する識別子として、当該複数の断片データの各々のハッシュ値を生成する。識別子生成部５２は、例えばＭＤ５またはＳＨＡ−１のようなハッシュ関数を用いてハッシュ値を生成する。
【００３４】
記憶部２３は、例えばＨＤＤのような記憶媒体であって、上記したボリュームイメージ（第２のデータ）を格納する。また、記憶部２３は、識別子生成部５２によって生成された識別子を格納する。記憶部２３は、ボリュームイメージが分割された複数の断片データ及び当該断片データの各々に対応する識別子を対応付けて格納する。記憶部２３は、ボリュームイメージ及び識別子を格納するのに十分な記憶容量を有する。
【００３５】
記憶部２３にボリュームイメージ及び識別子（群）を格納する方法として、上記した記憶部２２と同様に、例えば当該ボリュームイメージ及び識別子群を別々のパーティションに格納する方法がある。この方法によれば、識別子群が格納されているパーティションは、例えばデータアクセス部５１以外からは直接書き込みができないように保護される。
【００３６】
同期制御部５３は、例えばデータ同期システム１００の管理者等または上位アプリケーションより同期開始の指示を受け付ける。同期制御部５３は、同期開始の指示を受け付けると、例えば同期処理を開始するための要求（同期開始要求）を同期元装置３０に対して送信する。
【００３７】
同期制御部５３は、同期元装置３０から送信された識別子（第１の識別子）を、転送部５４を介して入力する。同期制御部５３は、例えばデータアクセス部５１を介して、記憶部２３に格納されている識別子（第２の識別子）を読み込む。同期制御部５３は、入力された識別子及び読み込まれた識別子が一致するか否かを判定する。同期制御部５３は、一致しないと判定された場合、同期元装置３０から送信された識別子に対応する断片データを、転送部５４を介して同期元装置３０の記憶部２２から取得する。同期制御部５３は、取得された断片データを、データアクセス部５１を介して記憶部２３に格納する。
【００３８】
図３は、記憶部２２または記憶部２３における断片データ及び識別子の格納構造の一例を示す。ここで、記憶部２２について説明するものとする。また、記憶部２２に格納されているボリュームイメージは、ボリュームイメージxであるものとして説明する。
【００３９】
図３に示すように、記憶部２２には、データパーティション２２１、識別子群パーティション２２２及びパーティションテーブル２２３が含まれる。
【００４０】
データパーティション２２１には、ボリュームイメージxが格納される。このデータパーティション２２１に格納されるボリュームイメージxは、例えば複数（ｎ個）の断片データx0、x1、…、xn-1に断片化（分割）して管理される。ここで、ｎは、データパーティション２２１のセクタ数である。
【００４１】
また、識別子群パーティション２２２には、断片データx0、x1、…、xn-1の各々に対応する識別子h0、h1、…、hn-1が格納される。なお、識別子群パーティション２２２に格納される識別子h0、h1、…、hn-1を識別子群hと称する。
【００４２】
また、パーティションテーブル２２３には、例えばデータパーティション２２１及び識別子群パーティション２２２へのオフセットが保持されている。
【００４３】
なお、識別子群パーティション２２２における各識別子へのオフセットは、例えば識別子の長さから求めることができる。例えば識別子がハッシュ関数ＳＨＡ−１を用いて生成された場合を想定する。この場合、セクタ１に対応する識別子の格納先オフセットは、例えば０ビットよりカウントした場合、識別子群パーティション２２２の先頭から１６０ビット目である。
【００４４】
図３に示す例では、データパーティション２２１に含まれる領域２２１ａに格納されている断片データx0に対応する識別子は、識別子群パーティション２２２に含まれる領域２２２ａに格納されている識別子h0であり、当該断片データx0及び識別子h0は対応付けられている。つまり、識別子h0は、断片データx0を入力として例えばハッシュ関数を用いて生成された識別子（ハッシュ値）である。また、断片データx0及び識別子h0以外についても同様である。
【００４５】
次に、図４を参照して、同期元装置３０または同期先装置５０におけるデータ（ボリュームイメージ）の書き込みアクセスの処理動作について説明する。ここでは、同期元装置３０について説明する。なお、図４に示すデータアクセス部３１、識別子生成部３２及び記憶部２２は、例えばブロックデバイスのレイヤで機能を実現する。
【００４６】
図４に示すように、書き込みアクセスでは、書き込まれるデータ（書き込みデータ）の書き込み先アドレス（論理ブロックアドレス）、書き込みデータのデータ長（セクタ単位）及び書き込みデータが、例えばファイルシステムやＤＢ等の上位レイヤからデータアクセス部３１に対して入力される（ステップＳ１）。
【００４７】
識別子生成部３２は、データアクセス部３１に対して入力された書き込みデータが分割された複数の断片データの各々に対応する識別子（群）を生成する（ステップＳ２）。
【００４８】
データアクセス部３１は、例えば入力されたアドレス及びデータ長に基づいて、書き込みデータ（が分割された複数の断片データ）を記憶部２２に書き込む（ステップＳ３）。また、データアクセス部３１は、識別子生成部３２によって生成された識別子を記憶部２２に書き込む（ステップＳ３）。書き込みデータが分割された複数の断片データ及び当該断片データの各々に対応する識別子は対応付けて記憶部２２に書き込まれる。
【００４９】
次に、図５のフローチャートを参照して、例えば同期元装置３０に対する書き込みアクセス処理の処理手順について説明する。この書き込みアクセス処理は、上記したように書き込み先アドレス、データ長及び書き込みデータがデータアクセス部３１によって入力されることにより実行される。ここでは、書き込みデータは、書き込みデータxであるものとする。また、書き込みデータxは、ｎ個の断片データx0、x1、…、xn-1から構成（に分割）されるものとして説明する。
【００５０】
まず、識別子生成部３２は、データアクセス部３１に入力された書き込みデータxが分割されたｎ個の断片データx0、x1、…、xn-1のうち、断片データxi（ｉ＝０、１、…、ｎ−１）に対応する識別子hi（ｉ＝０、１、…、ｎ−１）を生成する（ステップＳ１１）。
【００５１】
次に、データアクセス部３１は、断片データxiを記憶部２２に書き込む（ステップＳ１２）。
【００５２】
データアクセス部３１は、識別子hiを記憶部２２に書き込む（ステップＳ１３）。このとき、データアクセス部３１は、断片データxi及び識別子hiを対応付けて記憶部２２に書き込む。
【００５３】
書き込みデータxが分割されたｎ個の断片データ（x0、x1、…、xn-1）の全てについて上記した処理が実行されていない場合（ステップＳ１４のＮＯ）、ステップＳ１１に戻って処理が繰り返される。
【００５４】
一方、ステップＳ１４において書き込みデータxが分割されたｎ個の断片データの全てについて処理が実行された場合、書き込みアクセス処理は終了される。
【００５５】
次に、図６を参照して、例えば同期元装置３０における読み込みアクセスの処理動作について説明する。読み込みアクセスには、データ（ボリュームイメージ）の読み込み及び識別子の読み込みの２種類のインタフェースがある。読み込みアクセスでは、読み込みコマンドの種別（データまたは識別子）がデータアクセス部３１に入力される。ここでは、データの読み込みアクセスの処理動作について説明する。なお、ここでは同期元装置３０について説明するが、同期先装置５０においても同様である。
【００５６】
まず、読み込みコマンドの種別（ここでは、データ読み込みコマンド）、読み込まれるデータ（読み込みデータ）の読み込み先アドレス（論理ブロックアドレス）及び読み込みデータのデータ長（セクタ単位）が、例えばファイルシステムやＤＢ等の上位レイヤからデータアクセス部３１に対して入力される（ステップＳ２１）。データアクセス部３１は、例えば入力された読み込みコマンドの種別がデータ読み込みコマンドである場合、データの読み込み処理を実行する。
【００５７】
次に、データアクセス部３１は、入力された読み込み先アドレス及びデータ長に応じて特定される読み込みデータを、記憶部２２から読み込む（ステップＳ２２）。
【００５８】
データアクセス部３１は、読み込まれた読み込みデータを例えば上位レイヤに対して出力する（ステップＳ２３）。
【００５９】
次に、図７のフローチャートを参照して、例えば同期元装置３０における読み込みアクセス処理の処理手順について説明する。ここでは、図６と同様に、データの読み込みアクセス処理について説明する。このデータの読み込みアクセス処理は、上記したように読み込みコマンドの種別（ここでは、データ読み込みコマンド）、読み込み先アドレス及びデータ長がデータアクセス部３１によって入力されることにより実行される。なお、ここでは同期元装置３０について説明するが、同期先装置５０においても同様である。
【００６０】
ここでは、読み込みデータは、読み込みデータxであるものとする。また、読み込みデータxは、ｎ個の断片データx0、x1、…、xn-1に分割されるものとして説明する。
【００６１】
データアクセス部３１は、例えば入力された読み込みコマンドの種別がデータ読み込みコマンドである場合、データの読み込み処理を実行する。
【００６２】
まず、データアクセス部３１は、入力された読み込み先アドレス及びデータ長に応じて特定されるデータ（読み込みデータx）が分割されたｎ個の断片データx0、x1、…、xn-1のうち、断片データxi（ｉ＝０、１、…、ｎ−１）を記憶部２２から読み込む（ステップＳ３１）。
【００６３】
読み込みデータxが分割されたｎ個の断片データ（x0、x1、…、xn-1）の全てについて読み込み処理が実行されていない場合（ステップＳ３２のＮＯ）、ステップＳ３１に戻って処理が繰り返される。
【００６４】
一方、ステップＳ３２において読み込みデータxが分割されたｎ個の断片データの全てについて読み込み処理が実行された場合、例えば読み込まれたｎ個の断片データを出力して、読み込みアクセス処理は終了される。
【００６５】
次に、図８を参照して、例えば同期元装置３０における識別子の読み込みアクセスの処理動作について説明する。なお、ここでは同期元装置３０について説明するが、同期先装置５０においても同様である。
【００６６】
まず、読み込みコマンド種別（ここでは、識別子読み込みコマンド）、読み込みデータの読込先アドレス及び読み込みデータのデータ長が、例えば上位レイヤからデータアクセス部３１に対して入力される（ステップＳ４１）。データアクセス部３１は、例えば入力された読み込みコマンドの種別が識別子読み込みコマンドである場合、識別子の読み込み処理を実行する。
【００６７】
次に、データアクセス部３１は、入力された読み込み先アドレス及びデータ長に応じて特定される読み込みデータに対応する識別子（群）を、記憶部２２から読み込む（ステップＳ４２）。
【００６８】
データアクセス部３１は、読み込まれた識別子群を例えば上位レイヤに対して出力する（ステップＳ４３）。
【００６９】
次に、図９のフローチャートを参照して、例えば同期元装置３０における読み込みアクセス処理の処理手順について説明する。ここでは、図８と同様に、識別子の読み込みアクセス処理について説明する。この識別子の読み込みアクセス処理は、上記したように読み込みコマンドの種別（ここでは、識別子読み込みコマンド）、読み込み先アドレス及びデータ長がデータアクセス部３１によって入力されることにより実行される。なお、ここでは同期元装置３０について説明するが、同期先装置５０においても同様である。
【００７０】
ここでは、読み込みデータは、読み込みデータxであるものとする。また、読み込みデータxは、ｎ個の断片データx0、x1、…、xn-1に分割されるものとして説明する。
【００７１】
データアクセス部３１は、例えば入力された読み込みコマンドの種別が識別子読み込みコマンドである場合、識別子読み込み処理を実行する。
【００７２】
まず、データアクセス部３１は、入力された読み込み先アドレス及びデータ量に応じて特定される読み込みデータxが分割されたｎ個の断片データx0、x1、…、xn-1のうち、断片データxi（ｉ＝０、１、…、ｎ−１）に対応する識別子hi（ｉ＝０、１、…、ｎ−１）を記憶部２２から読み込む（ステップＳ５１）。
【００７３】
読み込みデータxが分割されたｎ個の断片データ（x0、x1、…、xn-1）の各々に対応する識別子の全て（ｎ個の識別子群h）について読み込み処理が実行されていない場合（ステップＳ５２のＮＯ）、ステップＳ５１に戻って処理が繰り返される。
【００７４】
一方、ステップＳ５２において読み込みデータxが分割されたｎ個の断片データの各々に対応する識別子の全てについて読み込み処理が実行された場合、例えば読み込まれたｎ個の識別子群hを出力して、読み込みアクセス処理は終了される。
【００７５】
次に、図１０及び図１１を参照して、データ同期システム１００における同期処理の動作について説明する。ここで、同期処理とは、同期元装置３０の記憶部２２に格納されているデータ（ボリュームイメージ）及び同期先装置５０の記憶部２３に格納されているデータ（ボリュームイメージ）を同期させる処理である。
【００７６】
図１０に示すように、まず、同期先装置５０の同期制御部５３は、同期元装置３０の記憶部２２に格納されている識別子群を取得する（ステップＳ６１）。このとき、記憶部２２に格納されている識別子群は、同期元装置３０の同期制御部３３によって読み出され、転送部３４を介して同期先装置５０（の同期制御部５３）に送信される。同期制御部５３は、同期元装置３０から送信された識別子群を取得する。
【００７７】
次に、同期制御部５３は、データアクセス部５１を介して、記憶部２３に格納されている識別子群を読み込む（ステップＳ６２）。
【００７８】
同期制御部５３は、同期元装置３０の記憶部２２から取得された識別子群及び記憶部２３から読み込まれた識別子群のそれぞれ対応する識別子を比較する。これにより、同期制御部５３は、比較された識別子が一致するか否かを判定する。
【００７９】
ここで、比較された識別子が一致しない場合を想定する。この場合、図１１に示すように、同期制御部５３は、一致しないと判定された識別子（同期元装置３０の記憶部２２から取得された識別子）に対応する断片データを記憶部２２から取得する。この場合、断片データは、同期元装置３０の同期制御部３３によって記憶部２２から読み出され、転送部３４を介して同期先装置５０に送信される。同期制御部５３は、同期元装置３０から送信された断片データを取得する。データアクセス部５１は、同期制御部５３によって取得された断片データを記憶部２３に書き込む（ステップＳ６３）。
【００８０】
また、識別子生成部５２は、同期制御部５３によって取得された断片データの識別子を生成する。データアクセス部５１は、識別子生成部５２によって生成された識別子を、データアクセス部５１によって書き込まれた断片データに対応付けて記憶部２３に書き込む（ステップＳ６４）。これにより、断片データの書き込みが行われる際に、当該断片データに対応する識別子の更新も実行される。
【００８１】
なお、同期処理中において、同期制御部５３（データアクセス部５１）以外からの書き込みが発生することを抑止する必要がある。このために、例えば
１）データ（ボリュームイメージ）自体からブートしない（別のブートイメージからブートする）
２）データ（ボリュームイメージ）自体からブートする場合、書き込みをドライバレベル（フィルタドライバ）でブロック（抑止）する（同期による書き込みのみ許可する）
のような環境で行う必要がある。
【００８２】
次に、図１２のフローチャートを参照して、データ同期システム１００における同期処理の際の同期先装置５０の処理手順について説明する。この同期処理は、例えば同期先装置５０の同期制御部５３が例えばデータ同期システム１００の管理者または上位アプリケーションより同期開始の指示を受け付けたときに実行される。
【００８３】
なお、同期元装置３０の記憶部２２に格納されているボリュームイメージはボリュームイメージxであるものとし、当該ボリュームイメージxが分割された複数の断片データはｎ個の断片データx0、x1、…、xn-1であるものとする。また、記憶部２２に格納されているボリュームイメージxに対応する識別子群は識別子群hであるものとし、識別子群hはｎ個の識別子h0、h1、…、hn-1であるものとする。この場合、例えば断片データx0及び識別子h0は対応する。断片データx1及び識別子h1のような他の断片データ及び識別子についても同様である。
【００８４】
一方、同期先装置５０の記憶部２３に格納されているボリュームイメージはボリュームイメージx´であるものとし、当該ボリュームイメージx´が分割された複数の断片データはｎ個の断片データx0´、x1´、…、xn-1´であるものとする。また、記憶部２３に格納されているボリュームイメージx´に対応する識別子群は識別子群h´であるものとし、識別子群h´はｎ個の識別子h0´、h1´、…、hn-1´であるものとする。この場合、例えば断片データx0´及び識別子h0´は対応する。断片データx1´及び識別子h1´のような他の断片データ及び識別子についても同様である。
【００８５】
上記したように、同期元装置３０の記憶部２２及び同期先装置５０の記憶部２３における断片データ及び識別子の格納構造は同一である。つまり、例えば断片データx0及び断片データx0´は対応し、識別子h0及び識別子h0´は対応する。断片データx1及び断片データx1´、識別子h1及び識別子h1´のような他の断片データ及び識別子についても同様である。
【００８６】
まず、同期先装置５０の同期制御部５３は、同期開始の指示を受け付けると、例えば同期処理を開始するための要求（同期開始要求）を同期元装置３０に対して送信する。この同期開始要求は、転送部５４を介して送信される。
【００８７】
同期元装置３０で同期先装置５０から送信された同期開始要求が受け付けられると、同期制御部３３は、記憶部２２に格納されている識別子群h（識別子h0、h1、…、hn-1）のうち、識別子hi（ｉ＝０、１、…、ｎ−１）を読み込む。同期制御部３３は、読み込まれた識別子hiを、転送部３４を介して同期先装置５０に対して送信する。
【００８８】
同期先装置５０の同期制御部５３は、転送部５４を介して、同期元装置３０から送信された識別子hiを取得する（ステップＳ７１）。
【００８９】
次に、同期制御部５３は、データアクセス部５１を介して、記憶部２３に格納されている識別子群h´のうち、取得された識別子hiに対応する識別子hi´を当該記憶部２３から読み込む。
【００９０】
なお、上記したように例えば識別子h0が取得された場合には当該識別子h0に対応する識別子h0´が読み込まれ、例えば識別子h1が取得された場合には当該識別子h1に対応する識別子h1´が読み込まれる。
【００９１】
同期制御部５３は、取得された識別子hi及び読み込まれた識別子hi´が一致するか否かを判定する（ステップＳ７３）。
【００９２】
識別子hi及び識別子hi´が一致しない（異なっている）と判定された場合（ステップＳ７３のＮＯ）、同期制御部５３は、当該識別子hiに対応する断片データxiを、同期元装置３０の記憶部２２から取得する（ステップＳ７４）。このとき、同期制御部５３は、同期元装置３０の同期制御部３３及び転送部３４を介して、断片データxiを取得する。
【００９３】
ここで取得された断片データxiが、記憶部２２に格納されているボリュームイメージx及び記憶部２３に格納されているボリュームイメージx´において異なる部分を示す差分データである。
【００９４】
データアクセス部５１は、同期制御部５３によって取得された断片データxi（差分データ）を、記憶部２３に書き込む（ステップＳ７５）。このとき、データアクセス部５１は、同期制御部５３によって取得された断片データxiを、当該断片データxiに対応する断片データxi´に上書きする。
【００９５】
次に、識別子生成部５２は、記憶部２３に書き込まれた断片データxiに対応する識別子hiを生成する（ステップＳ７６）。この識別子hiは、例えばＳＨＡ−１のようなハッシュ関数を用いて生成される。
【００９６】
データアクセス部５１は、識別子生成部５２によって生成された識別子hiを、記憶部２３に書き込む（ステップＳ７７）。このとき、データアクセス部５１は、識別子生成部５２によって生成された識別子hiを、記憶部２３に書き込まれた断片データxiに対応付けて書き込む。つまり、識別子hiは、上記した識別子hi´に上書きされる。
【００９７】
記憶部２２に格納されている識別子群h及び記憶部２３に格納されている識別子群h´に含まれる全ての識別子について上記した処理が実行されたか否かが判定される（ステップＳ７８）。
【００９８】
全ての識別子について処理が実行されていないと判定された場合（ステップＳ７８のＮＯ）、ステップＳ７１に戻って処理が繰り返される。
【００９９】
一方、ステップＳ７８において全ての識別子について処理が実行されたと判定された場合、同期処理は終了される。
【０１００】
また、ステップＳ７３において識別子hi及び識別子hi´が一致すると判定された場合、ステップＳ７８の処理が実行される。
【０１０１】
なお、上記した同期処理では、差分データである断片データxiが記憶部２３に書き込まれると、当該断片データxiに対応する識別子hiが記憶部２３に書き込まれるものとして説明したが、当該断片データxiに対応する識別子として無効を示す識別子（無効識別子）が書き込まれる構成でも構わない。この場合、この後の同期処理において例えば無効識別子が検出された場合には、強制的に記憶部２２に格納されている断片データが取得され、当該断片データが記憶部２３に書き込まれる。これにより、常に識別子を生成する必要がないため、同期先装置５０における処理量を軽減することが可能となる。
【０１０２】
また、無効識別子が検出された場合には、当該無効識別子に対応する断片データに対応する識別子が生成される構成であってもよい。これにより、無効識別子を有効な値（識別子）に置き換えることが可能となる。また、無効識別子を検出する処理は、同期処理時に限られない。例えば定期的に例えば記憶部２３に格納されている識別子群hを読み込んで走査（チェック）する構成であっても構わない。
【０１０３】
上記したように本実施形態においては、同期元装置３０においては、例えば記憶部２２に格納されているボリュームイメージx（が分割された例えばｎ個の断片データx0、x1、…、xn-1）に対応する識別子群h（ｎ個の識別子h0、h1、…、hn-1）が生成される。一方、同期先装置５０においても、例えば記憶部２３に格納されているボリュームイメージx´（が分割された例えばｎ個の断片データx0´、x1´、…、xn-1´）に対応する識別子群h（ｎ個の識別子h0´、h1´、…、hn-1´）が生成される。この識別子群h及び識別子群h´が同期処理時に比較されることにより、ボリュームイメージx及びボリュームイメージx´において異なる断片データ（差分データ）のみを同期（コピー）することが可能となる。よって、同期処理の際の同期元装置３０から同期先装置５０に送信（転送）するデータ量を少なくすることにより同期処理の高速化を図ることが可能となる。
【０１０４】
つまり、本実施形態においては、同期元装置３０及び同期先装置５０において予め同期しておく必要がなく、かつ、例えば同期先装置においてデータの書き込みアクセスが行われた場合であっても正しく同期処理を実行することが可能となる。
【０１０５】
また、本実施形態においては、識別子としてハッシュ値を用いる構成により、例えば固有の識別子を生成するために同期済みの全データパターンを記憶（格納）しておく必要がない。
【０１０６】
なお、本実施形態においては、識別子hi及び識別子hi´の比較処理を同期先装置５０の同期制御部５３が実行するものとして説明したが、当該比較処理を同期元装置３０の同期制御部３３が実行する構成であっても構わない。この場合、同期制御部３３は、識別子hiを記憶部２２から読み出し、識別子hi´を同期先装置５０の記憶部２３から取得することによって、比較処理を実行する。
【０１０７】
また、同期元装置３０及び同期先装置５０と接続された例えば記憶装置が別に設けられる構成であっても構わない。この場合、同期元装置３０では、例えば同期処理の対象となるボリュームイメージx及び当該ボリュームイメージxに対応する識別子群hを予め記憶装置にアップロードしておくことで、例えば同期元装置３０及び同期先装置５０の各々が独立して同期処理を実行することが可能となる。
【０１０８】
［第１の変形例］
次に、図１３を参照して、本実施形態の第１の変形例について説明する。なお、本変形例に係るデータ同期システムの構成は、前述した図２に示すデータ同期システム１００の構成と同様であるため、図２を用いて説明する。以下の各変形例についても同様にして図２を用いて説明する。
【０１０９】
本変形例に係るデータ同期システム１００の特徴は、同期処理において例えば差分データであると判定された断片データが同期先装置５０の記憶部２３に書き込まれた場合、前述した実施形態とは異なり、例えば明示的に指定された識別子を当該断片データに対応付けて記憶部２３に書き込む点にある。具体的には、例えば同期元装置３０の記憶部２２から取得された識別子が、書き込まれた断片データに対応付けて記憶部２３に書き込まれる。
【０１１０】
図１３を参照して、本変形例に係るデータ同期システム１００における同期処理の動作について説明する。
【０１１１】
図１３に示すように、まず、同期先装置５０の同期制御部５３は、同期元装置３０の記憶部２２に格納されている識別子群を取得する（ステップＳ８１）。このとき、記憶部２２に格納されている識別子群は、同期元装置３０の同期制御部３３によって読み出され、転送部３４を介して同期先装置５０（の同期制御部５３）に送信される。同期制御部５３は、同期元装置３０から送信された識別子群を取得する。
【０１１２】
次に、同期制御部５３は、データアクセス部５１を介して、記憶部２３に格納されている識別子群を読み込む（ステップＳ８２）。
【０１１３】
同期制御部５３は、同期元装置３０の記憶部２２から取得された識別子群及び記憶部２３から読み込まれた識別子群のそれぞれ対応する識別子を比較する。これにより、同期制御部５３は、比較された識別子が一致するか否かを判定する。
【０１１４】
ここで、比較された識別子が一致しない場合を想定する。この場合、図１３に示すように、同期制御部５３は、一致しないと判定された識別子（同期元装置３０の記憶部２２から取得された識別子）に対応する断片データを記憶部２２から取得する。この場合、断片データは、同期元装置３０の同期制御部３３によって記憶部２２から読み出され、転送部３４を介して同期先装置５０に送信される。同期制御部５３は、同期元装置３０から送信された断片データを取得する。データアクセス部５１は、同期制御部５３によって取得された断片データを記憶部２３に書き込む（ステップＳ８３）。
【０１１５】
データアクセス部５１は、同期制御部５３によって一致しないと判定された識別子（同期元装置３０の記憶部２２から取得された識別子）を、記憶部２３に書き込まれた断片データに対応付けて書き込む（ステップＳ８４）。
【０１１６】
次に、図１４のフローチャートを参照して、データ同期システム１００における同期処理の際の同期先装置５０の処理手順について説明する。前述したように、同期処理は、例えば同期先装置５０の同期制御部５３が例えばデータ同期システム１００の管理者または上位アプリケーションより同期開始の指示を受け付けたときに実行される。
【０１１７】
なお、前述した図１２に示す同期処理手順の場合と同様に、同期元装置３０の記憶部２２に格納されているボリュームイメージはボリュームイメージxであるものとし、当該ボリュームイメージxが分割された複数の断片データはｎ個の断片データx0、x1、…、xn-1であるものとする。また、記憶部２２に格納されているボリュームイメージxに対応する識別子群は識別子群hであるものとし、識別子群hはｎ個の識別子h0、h1、…、hn-1であるものとする。この場合、例えば断片データx0及び識別子h0は対応する。断片データx1及び識別子h1のような他の断片データ及び識別子についても同様である。
【０１１８】
一方、同期先装置５０の記憶部２３に格納されているボリュームイメージはボリュームイメージx´であるものとし、当該ボリュームイメージx´が分割された複数の断片データはｎ個の断片データx0´、x1´、…、xn-1´であるものとする。また、記憶部２３に格納されているボリュームイメージx´に対応する識別子群は識別子群h´であるものとし、識別子群h´はｎ個の識別子h0´、h1´、…、hn-1´であるものとする。この場合、例えば断片データx0´及び識別子h0´は対応する。断片データx1´及び識別子h1´のような他の断片データ及び識別子についても同様である。
【０１１９】
上記したように、同期元装置３０の記憶部２２及び同期先装置５０の記憶部２３における断片データ及び識別子の格納構造は同一である。つまり、例えば断片データx0及び断片データx0´は対応し、識別子h0及び識別子h0´は対応する。断片データx1及び断片データx1´、識別子h1及び識別子h1´のような他の断片データ及び識別子についても同様である。
【０１２０】
まず、図１２に示すステップＳ７１〜ステップＳ７４の処理に相当するステップＳ９１〜ステップＳ９４の処理が実行される。
【０１２１】
データアクセス部５１は、同期制御部５３によって取得された断片データxi（差分データ）及び識別子hiを対応付けて記憶部２３に書き込む（ステップＳ９５）。このとき、データアクセス部５１は、同期制御部５３によって取得された断片データxiを、当該断片データxiに対応する断片データxi´に上書きする。また、データアクセス部５１は、同期制御部５３によって取得された識別子hiを、当該識別子hiに対応する識別子hi´に上書きする。
【０１２２】
次に、図１２に示すステップＳ７８の処理に相当するステップＳ９６の処理が実行される。
【０１２３】
上記したように本変形例においては、同期処理において断片データが同期先装置５０の記憶部２３に書き込まれた場合、同期元装置３０の記憶部２２から取得された識別子が同期先装置５０の記憶部２３に書き込まれる。これにより、同期処理の際、同期先装置５０において記憶部２３に書き込まれる断片データに対応する識別子を生成する必要がないため、当該同期先装置５０の処理量を軽減することが可能となる。
【０１２４】
［第２の変形例］
次に、図１５を参照して、本実施形態の第２の変形例について説明する。前述した実施形態及び第１の変形例では、ブロックデバイス（ブロックデバイスのドライバ）のレイヤにおいて機能が提供されているのに対し、本変形例では、ファイルシステム（ファイルシステムのドライバ）のレイヤにおいて機能が提供されている。
【０１２５】
図１５を参照して、本変形例に係るデータ同期システム１００の同期元装置３０または同期先装置５０におけるデータの書き込みアクセスの処理動作について説明する。ここでは、同期元装置３０について説明する。
【０１２６】
本変形例においては、データアクセス部３１及び識別子生成部３２は、例えばファイルシステム（またはファイルシステム上位側フィルタドライバ）の中で機能する。この場合、同期元装置３０において扱われるデータは、例えばファイル等である。
【０１２７】
図１５に示すように、データアクセス部３１に対して例えば書き込みアクセス（または読み込みアクセス）を実行するのは、例えばユーザアプリケーション等である（ステップＳ１０１）。
【０１２８】
識別子生成部３２は、書き込みアクセスによって指定される書き込みデータが分割された複数の断片データの各々に対応する識別子群を生成する（ステップＳ１０２）。この複数の断片データは、例えばファイルまたはディレクトリエントリ毎に設定される。または、ファイルまたはディレクトリエントリを更に任意のバイト間隔毎（固定長）に設定されてもよい。
【０１２９】
データアクセス部３１は、書き込みデータ及び識別子生成部３２によって生成された識別子群を記憶部２２に書き込む（ステップＳ１０３）。このとき、識別子群は、例えばファイルシステムのメタデータや、ユーザからの直接編集からは保護されたシステムファイルに格納される。
【０１３０】
なお、図１５には図示されていないが、例えば同期処理においては、同期制御部３３及び転送部３４は、例えばファイルシステムに対してアクセスする。
【０１３１】
また、本変形例においては、前述した実施形態と同様に同期処理が実行される。なお、前述した第１の変形例と同様の同期処理が実行されても構わない。
【０１３２】
上記したように本変形例においては、例えばデータアクセス部３１及び識別子生成部３２がファイルシステムレイヤにおいて機能するため、ファイルシステムデータの高速な同期処理を実現することが可能となる。
【０１３３】
なお、本変形例においては、同期元装置３０の同期制御部３３または同期先装置５０の同期制御部５３は、例えばファイルシステム上のファイル（記憶部２２または記憶部２３に格納されているデータ）に付加されているタイムスタンプを定期的または指定されたときに監視する構成であってもよい。この場合、ファイルに付加されているタイムスタンプが前回監視時と異なっているときは、例えば当該ファイルに対応する識別子（群）を比較する。比較結果により識別子が一致しない（異なっている）場合には、当該識別子に対応する断片データ（例えばファイル）が同期先装置５０の記憶部２３に書き込まれる。
【０１３４】
また、例えば同期元装置３０においてファイルまたはディレクトリが削除／新規作成されたときには、当該同期元装置３０にあわせて識別子（群）または断片データが同期先装置５０において格納／削除される。
【０１３５】
なお、本願発明は、上記実施形態またはその各変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその各変形例に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態またはその各変形例に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０１３６】
【図１】本発明の実施形態に係るデータ同期システムを構成する同期元装置のハードウェア構成を示すブロック図。
【図２】本実施形態に係るデータ同期システムの主として機能構成を示すブロック図。
【図３】記憶部２２または記憶部２３における断片データ及び識別子の格納構造の一例を示す図。
【図４】同期元装置３０におけるデータの書き込みアクセスの処理動作について説明するための図。
【図５】同期元装置３０に対する書き込みアクセス処理の処理手順を示すフローチャート。
【図６】同期元装置３０におけるデータの読み込みアクセスの処理動作について説明するための図。
【図７】同期元装置３０におけるデータの読み込みアクセス処理の処理手順を示すフローチャート。
【図８】同期元装置３０における識別子の読み込みアクセスの処理動作について説明するための図。
【図９】同期元装置３０における識別子の読み込みアクセス処理の処理手順を示すフローチャート。
【図１０】データ同期システム１００における同期処理の動作について説明するための図。
【図１１】データ同期システム１００における同期処理の動作について説明するための図。
【図１２】データ同期システム１００における同期処理の際の同期先装置５０の処理手順を示すフローチャート。
【図１３】本実施形態の第１の変形例に係るデータ同期システム１００における同期処理の動作について説明するための図。
【図１４】データ同期システム１００における同期処理の際の同期先装置５０の処理手順を示すフローチャート。
【図１５】本実施形態の第２の変形例に係るデータ同期システム１００の同期元装置３０または同期先装置５０におけるデータの書き込みアクセスの処理動作について説明するための図。
【符号の説明】
【０１３７】
１０…コンピュータ、２０…外部記憶装置、２２…記憶部（第１の格納手段）、２３…記憶部（第２の格納手段）、３０…同期元装置、３１…データアクセス部、３２…識別子生成部（第１の生成手段）、３３…同期制御部、３４…転送部、５０…同期先装置、５１…データアクセス部（書き込み手段）、５２…識別子生成部（第２の生成手段）、５３…同期制御部（判定手段）、５４…転送部。
【図１】
0004550869.tif 000002
【図２】
0004550869.tif 000003
【図３】
0004550869.tif 000004
【図４】
0004550869.tif 000005
【図５】
0004550869.tif 000006
【図６】
0004550869.tif 000007
【図７】
0004550869.tif 000008
【図８】
0004550869.tif 000009
【図９】
0004550869.tif 000010
【図１０】
0004550869.tif 000011
【図１１】
0004550869.tif 000012
【図１２】
0004550869.tif 000013
【図１３】
0004550869.tif 000014
【図１４】
0004550869.tif 000015
【図１５】
0004550869.tif 000016