(57)【特許請求の範囲】
【請求項１】
情報処理システムであって、
前記情報処理システムは、
複数の第１の計算機と、前記複数の第１の計算機に接続する第２の計算機とを備え、
前記複数の第１の計算機はそれぞれ、第１のコントローラと第１の記憶媒体とを備え、
前記第２の計算機は、第２のコントローラと第２の記憶媒体とを備え、
前記複数の第１の計算機は第３の計算機に接続され、
前記第１のコントローラは、前記第３の計算機から送信されたファイルを前記第１の記憶媒体に格納し、
前記第２のコントローラは、前記複数の第１の計算機のうちのひとつの第１の計算機から送信されたファイルを前記第２の記憶媒体に格納し、前記ファイルは前記複数の第１の計算機から更新可能であり、
前記複数の第１の計算機のうちのひとつの第１の計算機である更新反映元第１の計算機でのファイル更新を前記第２の計算機に反映するデータ同期処理として、前記更新反映元第１の計算機の前記第１のコントローラは、データ同期処理対象群を複数のファイルサブツリーに分割し、前記ファイルサブツリー毎にデータ同期を実行し、
前記ファイル更新の処理は、前記更新反映元第１の計算機に対し、前記更新反映元第１の計算機以外の第１の計算機へのファイル更新を禁止して実行され、
前記データ同期の処理は、前記ファイルサブツリーの更新内容を反映する前記第２の記憶媒体での記憶領域に対し、前記更新反映元第１の計算機以外の第１の計算機からのデータ同期を禁止して実行される
ことを特徴とする情報処理システム。
【請求項２】
請求項１記載の情報処理システムであって、前記ファイルサブツリーは、
前記データ同期の１回当たりの処理時間がデータ同期処理の上限時間以下となるように決定される
ことを特徴とする情報処理システム。
【請求項３】
請求項２記載の情報処理システムであって、前記ファイルサブツリーは、
前記更新反映元第１の計算機と前記第２の計算機との間の平均転送速度に、前記データ同期処理の上限時間を乗算し算出されたデータ容量以下となるように決定される
ことを特徴とする情報処理システム。
【請求項４】
請求項１記載の情報処理システムであって、
前記更新反映元第１の計算機に予め格納された前記データ同期処理対象群を構成するディレクトリまたはファイルの用途により、
前記更新反映元第１の計算機と、前記更新反映元第１の計算機以外の前記複数の第１の計算機のうちの１つ以上の第１の計算機とが、同一ファイルに対し更新が行われるコンフリクト頻度が決定される
ことを特徴とする情報処理システム。
【請求項５】
請求項１記載の情報処理システムであって、前記複数の第１の計算機それぞれは、
第１のコントローラ上で動作する前記複数の第１の計算機への情報設定または前記複数の第１の計算機での情報出力を実行する管理インタフェースを備え、
前記管理インタフェースを第３の計算機に送信し、前記管理インタフェースで前記複数の第１の計算機に予め格納される前記データ同期処理対象群を構成するディレクトリまたはファイルの用途が入力される
ことを特徴とする情報処理システム。
【請求項６】
情報処理システムであって、
前記情報処理システムは、
複数の第１の計算機と、前記複数の第１の計算機に接続する第２の計算機とを備え、
前記複数の第１の計算機はそれぞれ、第１のコントローラと第１の記憶媒体とを備え、
前記第２の計算機は、第２のコントローラと第２の記憶媒体とを備え、
前記複数の第１の計算機は第３の計算機に接続され、
前記第１のコントローラは、前記第３の計算機から送信されたファイルを前記第１の記憶媒体に格納し、
前記第２のコントローラは、前記複数の第１の計算機のうちのひとつの第１の計算機から送信されたファイルを前記第２の記憶媒体に格納し、前記ファイルは前記複数の第１の計算機から更新可能であり、
前記複数の第１の計算機のうちのひとつの第１の計算機である更新反映元第１の計算機でのファイル更新を前記第２の計算機に反映するデータ同期処理として、前記更新反映元第１の計算機の前記第１のコントローラは、データ同期処理対象群を複数のファイルサブツリーに分割し、前記ファイルサブツリー毎にデータ同期を実行するよう構成されており、
前記更新反映元第１の計算機と、前記更新反映元第１の計算機以外の前記複数の第１の計算機のうちの１つ以上の第１の計算機とが、同一ファイルに対し更新が行われるコンフリクトの頻度が高いファイルサブツリーのファイルから前記データ同期処理を実行する
ことを特徴とする情報処理システム。
【請求項７】
請求項６記載の情報処理システムであって、コンフリクト頻度が同じファイルサブツリーが複数存在する場合には、ファイルサブツリーのデータサイズが小さいものから優先して前記データ同期処理を実行する
ことを特徴とする情報処理システム。
【請求項８】
複数の第１の計算機と、前記複数の第１の計算機に接続する第２の計算機とを備える情報処理システムであって、
前記複数の第１の計算機はそれぞれ、第１のコントローラと第１の記憶媒体とを備え、
前記第２の計算機は、第２のコントローラと第２の記憶媒体とを備え、
前記複数の第１の計算機は第３の計算機に接続され、
前記第１のコントローラは、前記第３の計算機から送信されたファイルを前記第１の記憶媒体に格納し、
前記第２のコントローラは、前記複数の第１の計算機のうちのひとつの第１の計算機から送信されたファイルを前記第２の記憶媒体に格納し、前記ファイルは前記複数の第１の計算機から更新可能であり、
前記複数の第１の計算機のうちのひとつの第１の計算機である更新反映元第１の計算機でのファイル更新を前記第２の計算機に反映するデータ同期処理として、前記更新反映元第１の計算機の前記第１のコントローラは、データ同期処理対象群を複数のファイルサブツリーに分割し、前記ファイルサブツリー毎にデータ同期を実行するよう構成されており、
前記更新反映元第１の計算機の前記第１のコントローラは、
（１）前記更新反映元第１の計算機に予め格納された前記データ同期処理対象群を構成するディレクトリの用途
（２）前記更新反映元第１の計算機に予め格納されたファイルの用途
（３）前記データ同期の１回当たりの処理時間がデータ同期処理の上限時間
（４）前記データ同期処理を行う前記更新反映元第１の計算機と前記第２の計算機との間の平均転送速度と、前記データ同期処理の上限時間とを乗算し算出されたデータ容量
のいずれかで、データ同期処理対象群を複数のファイルサブツリーに分割し、
前記データ同期処理は、
前記更新反映元第１の計算機と、前記更新反映元第１の計算機以外の前記複数の第１の計算機のうちの１つ以上の第１の計算機とが、同一ファイルに対し更新が行われるコンフリクトの頻度が高いファイルサブツリーからデータ同期を実行し、
コンフリクト頻度が同じファイルサブツリーが複数存在する場合には、ファイルサブツリーのデータサイズが小さいものから優先してデータ同期を実行し、
前記ファイルサブツリー更新内容の前記第２の計算機への反映が可能かを判断し、
前記反映が可能と判断された場合には、
前記ファイルサブツリー更新内容を反映する前記第２の計算機での記憶領域に対する更新反映元第１の計算機以外の第１の計算機からのアクセスを禁止し、
前記更新反映元第１の計算機のコンフリクト発生ファイルの更新時間と前記第２の計算機のコンフリクト発生ファイルの更新時間とを比較して前記第１の計算機での更新時間が古い場合には、前記第２の計算機のファイルサブツリーのファイルを、前記ファイルサブツリーのファイルが格納されている記憶領域と異なる記憶領域に退避し、
前記アクセスを禁止している時間が、予め設定されている禁止時間の上限を超えた場合はアクセスの禁止を解除し、
前記反映が可能でないと判断された場合は、
当該ファイルサブツリー以外のファイルサブツリーでのデータ同期を実行する
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の拠点で稼働するファイルサーバ間のデータ同期処理の効率化に関する。
【背景技術】
【０００２】
近年、企業内における情報の電子化が進み、地理的に分散する拠点間で、お互いが有する大量のファイルをできるだけ早く共有することが、ＩＴシステムの課題となっている。課題解決の一方法として、拠点のファイルサーバが、ＷＡＮ（Wide  Area  Network）で接続されたデータセンタを介し、同一のファイルシステムを共有するデータセンタ経由の拠点間ファイルシステム共有がある。【０００３】
例えば、特許文献１はデータセンタのＣＡＳ（Content−Addressable  Storage）デバイスを経由し、ある拠点のＮＡＳ（Network  Attached  Storage）のファイルシステムを、他の拠点のＮＡＳからリードオンリーで参照可能とするシステムを開示している。本システムでは、ファイルシステムを公開する拠点が、更新内容を定期的（例えば一日に一回）にデータセンタに同期する同期処理を行う。他の拠点は、データセンタの更新内容を定期的に自サイトに反映することで、拠点間のファイル共有を実現する。【０００４】
データセンタ経由の拠点間ファイルシステム共有で、複数拠点に更新アクセスを許可した場合、拠点間で同一ファイルに対し異なる内容の更新が衝突（コンフリクト）する恐れがある。コンフリクトが発生した場合、更新内容を比較し、どちらか一方を最新バージョンとして残すかを判断するコンフリクト解消処理が必要となる。例えば特許文献２では、ファイルシステムのデータ同期時にコンフリクト解消を行う手法が開示されている。【０００５】
また、複数拠点からの更新処理の排他を実現するための方法として、特許文献３に、ファイルシステムの名前空間をサブツリー単位で排他する仕組みが開示されている。ここでいう名前空間とは、ファイルシステム内のファイルを管理するための管理構造で、一般にディレクトリをノード、ファイルをリーフとした木構造となる。また、サブツリーとはファイルシステムの木構造の一部となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国２０１２／０２５９８１３号公報
【特許文献２】米国特許７、０８５、７７９号公報
【特許文献３】米国特許５、３１９、７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１記載のシステムでは、複数拠点に対し同一ファイルシステムへの更新アクセスを許可した場合、コンフリクトにより拠点間で整合性を保つことができないという問題がある。そのため、拠点とデータセンタの同期処理時に、特許文献２の同期処理時のコンフリクト解消処理が必要となる。【０００８】
特許文献２のコンフリクト解消処理はファイルシステム単位で処理を行うため、同期処理中は他の拠点によるデータセンタへの更新を排他する必要がある。ある拠点の同期処理中は他の拠点が同期処理を行えず、拠点が増えた場合に同期処理の遅延時間が大きくなるという問題がある。これは、同期処理中に他の拠点がデータセンタのデータを更新した場合、コンフリクト解消処理の結果の妥当性が保証できないためである。【０００９】
特許文献３を特許文献１、２と組み合わせることで、ファイルシステムの同期範囲をファイル単位やディレクトリ単位に細粒度化することができる。しかしながら、ＷＡＮ経由の排他処理は通信遅延が大きい点が問題となる。排他範囲を細粒度化した場合は同期処理の遅延時間の問題は解決できるが、排他処理回数が増え同期処理のスループットが低下してしまう。逆に、排他範囲を大きくした場合、排他処理回数は減るものの、同期処理の遅延時間の問題は解決することができない。【００１０】
本発明はこのような状況に鑑みてなされたものであり、ファイルシステムの同期処理を適切なサイズのサブツリーに分割して実施する。同期処理時のデータセンタ更新処理の排他範囲を、分割したサブツリーとすることで、複数拠点の同期処理の並列処理を可能とし、同期処理の遅延を抑止する。
【課題を解決するための手段】
【００１１】
拠点間のコンフリクト発生頻度に応じて、一回の同期処理時間の上限値を設定する。同期処理時には、同期対象のファイルのサイズ、拠点・データセンタ間のスループット、および同期処理時間の上限値に基づき、同期処理対象のファイルシステムをサブツリーに分割する。また、分割したサブツリーはコンフリクト発生頻度の高いものから同期する。すなわち、他の拠点でアクセスする可能性が高い、高コンフリクト発生頻度のファイルを小さな排他範囲とし、優先的に同期することで、これらのファイルの同期遅延時間を短縮する。一方、低コンフリクト発生頻度のファイルは、他の拠点でアクセスされる可能性が低いため、一度にたくさんのファイルを同期することで高いスループットを実現する。例えば、グループ共有ファイルなどのコンフリクトが多いファイルは、一回の同期処理対象のファイルを少なくすることで、同期処理の遅延時間を小さくし、個人作業ファイル、アーカイブなどのコンフリクトの少ないファイルは一回の同期処理対象ファイルを増やすことで高スループットとする。
【発明の効果】
【００１２】
本発明により、拠点数を増やした場合でも、同期処理のスループット低下を抑えつつ、遅延時間増加の影響を抑えることができ、より多くの拠点がサポート可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明による情報処理システムの物理的構成例を示す図である。
【図２】本発明による情報処理システムの論理的構成例を示す図である。
【図３】ＮＡＳデバイスのハードウェア及びソフトウェア構成を示す図である。
【図４】ＣＡＳデバイスのハードウェア及びソフトウェア構成を示す図である。
【図５】自拠点更新ファイルリストの構成例を示す図である。
【図６】他拠点更新ファイルリストの構成例を示す図である。
【図７】分割同期ファイルリストの構成例を示す図である。
【図８】ディレクトリ管理テーブルの構成例を示す図である。
【図９】同期済みファイルリストの構成例を示す図である。
【図１０】ロックリストの構成例を示す図である。
【図１１】本発明によるファイルリード・ライト処理を説明するためのフローチャートである。
【図１２】本発明による同期処理を説明するためのフローチャートである。
【図１３】本発明による同期分割処理を説明するためのフローチャートである。
【図１４】本発明によるサブツリー単位同期処理を説明するためのフローチャートである。
【図１５】本発明による同期済みファイルリスト反映処理を説明するためのフローチャートである。
【図１６】公開ディレクトリ設定インタフェースの構成例を示す図である。
【発明を実施するための形態】
【００１４】
本発明は、情報処理システムにおけるストレージシステムでデータを管理するための技術、より具体的には、ＮＡＳに保存されたデータをＣＡＳに転送し、ＮＡＳ間でデータを同期するための技術に関するものである。
【００１５】
以下、添付図面を参照して本発明の実施形態について説明する。
【００１６】
なお、本明細書の図では、テーブルまたはリストを例にして本発明で用いられる情報について説明しているが、テーブル構造またはリスト構造で提供される情報に限られるものではなく、データ構造に依存しない情報であっても良い。
【００１７】
また、本発明の実施形態では、ＮＡＳとＣＡＳの通信ネットワークはＷＡＮの採用に限定されず、ＬＡＮ（Local  Area  Network）等の通信ネットワークを採用することも可能である。本発明の態様は、ＮＦＳ（Network  File  System）プロトコルの採用に限定されず、他のＣＩＦＳ（Common  Internet  File  System）、ＨＴＴＰ（Hypertext  Transfer  Protocol）等を含むファイル共有プロトコルを採用することも可能である。
【００１８】
本実施例では拠点側のストレージ装置としてＮＡＳを使用しているが、これは例示に過ぎない。拠点側のストレージ装置として、ＣＡＳデバイス、ＨＤＦＳ（Hadoop  Distributed  File  System）などの分散ファイルシステム、Object  based  storageを使用することも可能である。また、データセンタのストレージ装置としてＣＡＳデバイスを使用しているが、これは例示に過ぎない。ＣＡＳデバイスの他にも、例えばＮＡＳデバイスや分散ファイルシステム、Object  based  storageを使用することが可能である。
【００１９】
以後の説明では「プログラム」を主語として各処理の説明を行うことがあるが、プログラムはプロセッサによって実行されることで、定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００２０】
（１）第１の実施形態
＜システムの物理的構成＞
図１は、本発明の実施形態による情報処理システムの物理的構成の一例を示すブロック図である。なお、図１においては、拠点Ａ及びＢのみが示されているが、より多くの拠点がシステムに含まれていても良く、各拠点の構成は同様とすることが可能である。
【００２１】
情報処理システム１０は、各拠点に配置された１つまたは複数のサブ計算機システム１００及び１１０と、ＣＡＳデバイス１２１で構成されるデータセンタシステム１２０と、を有し、サブ計算機システム１００及び１１０のそれぞれとデータセンタシステム１２０がネットワーク１３０及び１４０を介して接続されている。
【００２２】
サブ計算機システム１００及び１１０は、クライアント１０１及び１１１と、ＮＡＳデバイス１０２及び１１２を有し、これらはネットワーク１０５及び１１５で接続されている。クライアント１０１及び１１１は、ＮＡＳデバイス１０２及び１１２が提供するファイル共有サービスを利用する一または複数の計算機である。クライアント１０１及び１１１は、ＮＦＳやＣＩＦＳなどのファイル共有プロトコルを利用して、ネットワーク１０５及び１１５を介して、ＮＡＳデバイス１０２及び１１２が提供するファイル共有サービスを利用する。
【００２３】
また、管理者はクライアント１０１及び１１１からＮＡＳデバイス１０２及び１１２が提供する管理インタフェースにアクセスし、ＮＡＳデバイス１０２及び１１２の管理を行う。これらの管理として、例えば、ファイルサーバの運用開始、ファイルサーバの停止、ファイルシステム作成・公開、クライアント１０１及び１１１のアカウントの管理などがある。以後、複数のＮＡＳデバイス１０２を総称して単にＮＡＳデバイス１０２とする場合もある。
【００２４】
ＮＡＳデバイス１０２及び１１２は、ＮＡＳコントローラ１０３及び１１３、記憶装置１０４及び１１４を有す。ＮＡＳコントローラ１０３及び１１３はクライアント１０１及び１１１にファイル共有サービスを提供し、また、ＣＡＳデバイス１２１との連携機能を有す。ＮＡＳコントローラ１０３及び１１３は、クライアント１０１及び１１１が作成する各種ファイルやファイルシステム構成情報を記憶装置１０４及び１１４に格納する。
【００２５】
記憶装置１０４及び１１４は、ＮＡＳコントローラ１０３及び１１３にボリュームを提供し、ＮＡＳコントローラ１０３及び１１３が各種ファイルやファイルシステム構成情報を格納する場所である。なお、ここでいうボリュームとは、物理記憶領域に対応づけられた論理的な記憶領域のことである。また、ファイルとはデータの管理単位であり、ファイルシステムとはボリューム内にファイルを管理するための管理情報である。以後、ファイルシステムが管理するボリューム内の論理的な記憶領域を、単にファイルシステムとする場合もある。
【００２６】
データセンタシステム１２０は、ＣＡＳデバイス１２１と管理端末１２４とを有し、これらはネットワーク１２５で接続されている。ＣＡＳデバイス１２１は、ＮＡＳデバイス１０２及び１１２のアーカイブ及びバックアップ先のストレージデバイスである。管理端末１２４は、情報処理システム１０を管理する管理者が使用する計算機である。
【００２７】
管理者は、管理端末１２４からネットワーク１２５を通してＣＡＳデバイス１２１の管理を行う。これらの管理として、例えば、ＮＡＳデバイス１０２及び１１２に対して割り当てるファイルシステムの作成がある。なお、管理端末１２４は入出力装置を有する。入出力装置の例としては、ディスプレイ、プリンタ、キーボード、ポインタデバイスが考えられるが、これ以外の装置（例えば、スピーカやマイク等）であってもよい。また、入出力装置の代替として、シリアルインタフェースを入出力装置とし、インタフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続する形態であってもよい。この場合、表示用情報を表示用計算機に送信したり、入力用情報を表示計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力装置での入力及び表示を代替してもよい。
【００２８】
ネットワーク１０５は拠点Ａ１００の拠点内ＬＡＮ、ネットワーク１１５は拠点Ｂ１１０の拠点内ＬＡＮ、ネットワーク１２５はデータセンタシステム１２０のデータセンタ内ＬＡＮであり、ネットワーク１３０はＷＡＮで拠点Ａ１００とデータセンタシステム１２０間をネットワーク接続し、ネットワーク１４０はＷＡＮで拠点Ｂ１１０とデータセンタシステム１２０間をネットワーク接続する。ネットワークの種類は上記ネットワークに限定されず、種々のネットワークを利用可能である。
【００２９】
＜システムの論理的構成＞
図２は、本発明の実施形態による情報処理システムの論理的構成の一例を示すブロック図である。
【００３０】
情報処理システム１０において、拠点Ａ１００のクライアント１０１が読み書きするデータは、ファイルとしてＮＡＳデバイス１０２が作成するファイルシステムＦＳ＿Ａ２００に格納される。拠点Ｂ１１０も同様に、クライアント１１１が読み書きするデータは、ファイルとしてＮＡＳデバイス１１２が作成するファイルシステムＦＳ＿Ａ’２１０に格納される。これらのファイルシステムでは、特定のディレクトリがクライアント１０１、１１１へ公開される。なお、ディレクトリとは複数のファイルを階層管理するための管理構造で、ファイルシステムが管理する。管理者は、クライアント１０１及び１１１にディレクトリを公開する際にディレクトリの用途を指定する。例えば、図中のｕｓｅｒディレクトリは個人作業ファイルの保存用のディレクトリ、ｇｒｏｕｐディレクトリはグループ共有用途で用いられるディレクトリとなる。
【００３１】
ファイルシステムＦＳ＿Ａ２００及びファイルシステムＦＳ＿Ａ’２１０に格納されたファイルは、ある契機（所定又は任意のタイミング：例えば、夜間のバッチ処理）でデータセンタシステム１２０に同期される。ＣＡＳデバイス１２１が作成するファイルシステムＦＳ＿Ａ’’２２０は、拠点ＡのファイルシステムＦＳ＿Ａ２００、拠点ＢのファイルシステムＦＳ＿Ａ’２１０と関連付けられたファイルシステムである。
【００３２】
ファイルシステムＦＳ＿Ａ２００と、ファイルシステムＦＳ＿Ａ’２１０は定期的にＣＡＳデバイスのフィルシステムＦＳ＿Ａ’’２２０と同期処理を行うことで、相互に更新内容を反映する。この際、自サイトの更新内容が他サイトの更新内容とコンフリクトし、かつ他サイトの更新内容を優先する場合には、該当ファイルをコンフリクトファイル退避ディレクトリ（図中のｃｏｎｆｌｉｃｔディレクトリ）に退避する。これらの同期処理の詳細は、図１２の説明にて詳述する。
【００３３】
＜ＮＡＳデバイスの内部構成＞
図３は、ＮＡＳデバイス１０２の内部構成例を示すブロック図である。なお、拠点Ｂ１１０のＮＡＳデバイス１１２も同様の構成となる。ＮＡＳデバイス１０２は、ＮＡＳコントローラ１０３と記憶装置１０４を有する。
【００３４】
ＮＡＳコントローラ１０３は、メモリ４０１に格納されたプログラムを実行するＣＰＵ４０２、ネットワーク１０５を通してクライアント１０１との通信に使用するネットワークインタフェース４０３、ネットワーク１３０を通してデータセンタシステム１２０との通信に使用するネットワークインタフェース４０４、記憶装置１０４との接続に使用するストレージインタフェース４０５、プログラムやデータを格納するメモリ４０１を搭載し、それらは内部的な通信路（例えば、バス）によって接続されている。
【００３５】
メモリ４０１は、ファイル共有サーバプログラム４０６と、ファイル共有クライアントプログラム４０７と、ファイルシステムプログラム４０８と、オペレーティングシステム４０９と、同期プログラム４１０と、同期ファイル分割プログラム４１１と、管理画面表示プログラム４１２と、自拠点更新ファイルリスト４１３と、他拠点更新ファイルリスト４１４と、分割同期ファイルリスト４１５と、ディレクトリ管理テーブル４１６を格納している。なお、メモリに格納されている各プログラム４０６乃至４１２や各ファイルリスト、テーブル４１３乃至４１６は、記憶装置１０４に格納され、ＣＰＵ４０２によってメモリ４０１に読み出されて実行される態様でもよい。
【００３６】
ファイル共有サーバプログラム４０６は、クライアント１０１がＮＡＳデバイス１０２上のファイルにファイル操作を行う手段を提供するプログラムである。ファイル共有クライアントプログラム４０７は、ＮＡＳデバイス１０２がＣＡＳデバイス１２１上のファイルにファイル操作を行う手段を提供するプログラムであり、ファイル共有クライアントプログラム４０７により、各拠点のＮＡＳデバイスはＣＡＳデバイス１２１上の自拠点及び他拠点のファイルに対して所定のファイル操作を実行することができるようになる。
【００３７】
ファイルシステムプログラム４０８は、ファイルシステムＦＳ＿Ａ２００を制御する。オペレーティングシステム４０９は、入出力制御機能、ディスク、メモリ等の記憶装置への読み書き制御機能などを有し、他のプログラムにこれらの機能を提供する。
【００３８】
同期プログラム４１０は、ＮＡＳデバイス１０２とＣＡＳデバイス１２１間のファイルの同期処理を実行する。同期ファイル分割プログラム４１１は、同期プログラム４１０から呼び出され、同期対象となるファイル群を複数のサブツリーに分割する。管理画面表示プログラム４１２は同期処理の管理画面を制御する。管理者はクライアント１０１を介して、管理画面表示プログラム４１２の提供する管理画面にアクセス可能である。
【００３９】
自拠点更新リスト４１３は、ＮＡＳデバイス１０２が自拠点のファイル更新処理を管理するためのリストである。また、他拠点更新リスト４１４は、ＮＡＳデバイス１０２が他拠点でのファイルの更新情報を管理するためのリストである。分割同期ファイルリスト４１５は、ＮＡＳデバイス１０２が自拠点の同期処理対象のファイル群をサブツリー単位に分割し、管理するためのリストである。
【００４０】
各ファイルリストの詳細は、図５から図７の説明にて後述する。ディレクトリ管理テーブル４１６は、クライアント１０１に公開したディレクトリごとに、格納ファイルの用途とコンフリクト発生頻度を管理するためのテーブルである。ディレクトリ管理テーブル４１６の詳細は、図８の説明にて後述する。
【００４１】
記憶装置１０４は、ＮＡＳコントローラ１０３との接続に使用するストレージインタフェース４２３、ＮＡＳコントローラ１０３からの命令を実行するＣＰＵ４２２、プログラムやデータを格納するメモリ４２１、一つまたは複数のディスク４２４を搭載し、それらは内部的な通信路（例えば、バス）によって接続されている。記憶装置１０４はＦＣ−ＳＡＮ（Fibre  Channel  Storage  Area  Network）等のブロック形式のストレージ機能をＮＡＳコントローラ１０３に提供する。
【００４２】
＜ＣＡＳデバイスの内部構成＞
図４は、ＣＡＳデバイス１２１の内部構成例を示すブロック図である。ＣＡＳデバイス１２１は、ＣＡＳコントローラ１２２と記憶装置１２３を有する。
【００４３】
ＣＡＳコントローラ１２２は、メモリ５０１に格納されたプログラムを実行するＣＰＵ５０２、ネットワーク１３０及び１４０を通してＮＡＳデバイス１０２及び１１２との通信に使用するネットワークインタフェース５０３、ネットワーク１２５を通し管理端末１２４との通信に使用するネットワークインタフェース５０４、記憶装置１２３との接続に使用するストレージインタフェース５０５、プログラムやデータを格納するメモリ５０１を搭載し、それらは内部的な通信路（例えば、バス）によって接続されている。
【００４４】
メモリ５０１は、ファイル共有サーバプログラム５０６と、ファイルシステムプログラム５０７と、オペレーティングシステム５０８と、同期済みファイルリスト５０９と、ロックリスト５１０を格納している。なお、各プログラム５０６乃至５０８及びリスト類５０９乃至５１０は、記憶装置１２３に格納され、ＣＰＵ５０２によってメモリ５０１に読み出されて実行される態様でもよい。
【００４５】
ファイル共有サーバプログラム５０６は、ＮＡＳデバイス１０２及び１１２がＣＡＳデバイス１２１上のファイルにファイル操作を行う手段を提供するプログラムである。ファイルシステムプログラム５０７は、ファイルシステムＦＳ＿Ａ’’２２０を制御する。オペレーティングシステム５０８は、入出力制御機能、ディスク、メモリ等の記憶装置への読み書き制御機能を、他のプログラムに提供する。同期済みファイルリスト５０９は、ＮＡＳデバイス１０２およびＮＡＳデバイス１１２が同期処理により行ったファイルの更新処理を管理するリストである。ロックリスト５１０はＮＡＳデバイス１０２およびＮＡＳデバイス１１２によりロック獲得された、ファイルシステムＦＳ＿Ａ’’２２０のサブツリーを管理するためのリストである。
【００４６】
記憶装置１２３は、ＣＡＳコントローラ１２２との接続に使用するストレージインタフェース５２３、ＣＡＳコントローラ１２２からの命令を実行するＣＰＵ５２２、プログラムやデータを格納するメモリ５２１、１または複数のディクス５２４を搭載しそれらは内部的な通信路（例えば、バス）によって接続されている。記憶装置１２３はＦＣ−ＳＡＮ（Fibre  Channel  Storage  Area  Network）等のブロック形式のストレージ機能をＣＡＳコントローラ１２２に提供する。
【００４７】
＜自拠点更新ファイルリスト＞
図５は、ＮＡＳデバイス１０２の自拠点更新ファイルリスト４１３の構成例を示す図である。ＮＡＳデバイス１１２も同様の自拠点更新ファイルリスト４１３を管理する。
【００４８】
自拠点更新ファイルリスト４１３は、ファイル名４１３Ａ、更新日時４１３Ｂ、更新対象４１３Ｃ、更新内容４１３Ｄ、を構成項目として有している。
【００４９】
自拠点更新ファイルリスト４１３の各エントリは、ＮＡＳデバイス１０２で発生したファイル、またはディレクトリに対する更新処理に対応する。
【００５０】
ファイル名４１３Ａは、更新対象のファイル・ディレクトリを識別する識別情報で、ファイルまたはディレクトリのパスを含む。なお、ここでいうパスとは、ファイルシステム内でファイルまたはディレクトリの所在を示すための文字列である。パスには、ファイルシステムのルートから順に、該当ファイル・ディレクトリに至るまでの全てのディレクトリが記載される。
【００５１】
更新日時４１３Ｂは、ファイル、またはディレクトリが更新された日時を示す情報である。更新対象４１３Ｃは、更新対象を示す情報で、ファイル、またはディレクトリのいずれか一つが含まれる。更新内容４１３Ｄは、更新ファイルに対して行われた更新内容となり、書き込み、削除、リネーム元、リネーム先のうちの一つが指定される。なお、ここでいう書き込みには、ディレクトリ内のファイルを増減する操作も含む。
【００５２】
自拠点更新ファイルリスト４１３は、ＮＡＳデバイス１０２が同期処理を行うタイミングで新規に作成される。つまり、自拠点更新ファイルリスト４１３は、最後に行った同期処理以降に発生した更新処理の一覧となる。
【００５３】
このような自拠点更新ファイルリスト４１３により、ＮＡＳデバイス１０２は前回の同期処理以降に自拠点で発生した更新処理を管理することが可能となる。その結果、ＮＡＳデバイス１０２は自拠点で発生した更新処理をＣＡＳデバイス１２１、ひいては他拠点に通知することが可能となる。
【００５４】
＜他拠点更新ファイルリスト＞
図６は、ＮＡＳデバイス１０２の他拠点更新ファイルリスト４１４の構成例を示す図である。ＮＡＳデバイス１１２も同様の他拠点更新ファイルリスト４１４を管理する。
【００５５】
他拠点更新ファイルリスト４１４の各エントリは、他拠点で更新されたファイルに対応する。他拠点更新ファイルリスト４１４は、拠点４１４Ａ、同期番号４１４Ｂ、ファイル名４１４Ｃ、更新日時４１４Ｄ、更新対象４１４Ｅを構成項目として有している。
【００５６】
拠点４１４Ａは、更新が発生した拠点名を示す情報である。同期番号４１４Ｂは、ＮＡＳデバイス１０２が実施した同期処理を全ＮＡＳデバイス１０２に対し時系列にまたがり一意に示すための識別子である。ＮＡＳデバイス１０２は、同期処理時に、最も新しい同期番号に対し１加算したものを同期番号４１４Ｂとして使用する。ファイル名４１４Ｃは、更新されたファイルのパスを示す情報である。更新日時４１４Ｄは、他拠点で更新が発生した日時を示す情報である。更新対象４１４Ｅは、更新対象を示す情報で、ファイル、またはディレクトリのいずれか一つが含まれる。
【００５７】
ＮＡＳデバイス１０２は同期処理時にＣＡＳデバイス１２１の同期済みファイルリスト５０９から他拠点の更新内容を取得し、他拠点で更新されたファイルを他拠点更新ファイルリスト４１４に追記する。ＮＡＳデバイス１０２は、他拠点更新ファイルリスト４１４に記載されたファイルへのアクセス時に、ＣＡＳデバイス１２１から最新ファイルを取得する処理を行う。
【００５８】
他拠点更新ファイルリスト４１４により、他の拠点で発生した更新ファイルを、クライアント１０１からのアクセス時に必要に応じて取得することが可能となる。その結果、ＮＡＳデバイス１０２は、ＣＡＳデバイス１２１から全ての更新ファイルを読み込むことなく、クライアント１０１に対し他拠点の更新ファイルを即座にアクセス可能とすることができる。なお、他拠点更新ファイルリスト４１４を用いた他拠点の更新ファイルの反映処理は例示である。例えば、ＮＡＳデバイス１０２が同期処理の度に、更新ファイルをＣＡＳデバイス１２１に転送する同期方式においても、本発明は適用可能である。
【００５９】
＜分割同期ファイルリスト＞
図７は、ＮＡＳデバイス１０２の分割同期ファイルリスト４１５の構成例を示す図である。ＮＡＳデバイス１１２も同様の分割同期ファイルリスト４１５を管理する。
【００６０】
分割同期ファイルリスト４１５の各エントリは、前回の同期処理から新たに実施する同期処理の間に自拠点で発生した更新処理に対応する。分割同期ファイルリスト４１５は、サブツリー番号４１５Ａ、排他範囲４１５Ｂ、ファイル名４１５Ｃ、更新日時４１５Ｄ、更新対象４１５Ｅ、更新内容４１５Ｆを構成項目として有している。
【００６１】
サブツリー番号４１５Ａは、分割同期ファイルリスト４１５内でサブツリーを一意に識別するための識別番号を示す。排他範囲４１５Ｂは、該当更新処理が発生したサブツリーの同期時に必要な排他範囲を示す。排他範囲４１５Ｂには、一つ以上の排他対象となるサブツリーのルートディレクトリのパスが含まれる。ファイル名４１５Ｃは、該当更新処理が処理対象とするファイル・ディレクトリのパスを示す情報である。更新日時４１５Ｄは、該当更新処理が行われた日時を示す。更新対象４１５Ｅは、更新された内容がファイルか、ディレクトリかを示す情報である。更新内容４１５Ｆは、更新ファイルに対して行われた更新内容となり、書き込み、削除、リネーム元、リネーム先のうちの一つが指定される。
【００６２】
ＮＡＳデバイス１０２は同期処理時に自拠点更新ファイルリスト４１３の複製（以下自拠点更新ファイルリスト複製）を作成する。その後、ＮＡＳデバイス１０２は、自拠点更新ファイルリスト複製内に含まれる更新処理をサブツリー単位に分割し、分割同期ファイルリスト４１５を作成する。
【００６３】
このように、分割同期ファイルリスト４１５により、更新処理をサブツリーに分割し、同期処理をサブツリー単位に実施することが可能となる。
【００６４】
＜ディレクトリ管理テーブル＞
図８は、ＮＡＳデバイス１０２のディレクトリ管理テーブル４１６の構成例を示す図である。ＮＡＳデバイス１１２も同様のディレクトリ管理テーブル４１６を管理する。
【００６５】
ディレクトリ管理テーブル４１６の各エントリは、管理者により用途が設定されたサブツリーに対応する。ディレクトリ管理テーブル４１６は、トップディレクトリ４１６Ａ、用途４１６Ｂ、コンフリクト頻度４１６Ｃ、同期時間上限４１６Ｄ、平均スループット４１６Ｅを構成項目として有している。
【００６６】
トップディレクトリ４１６Ａは、同期処理の制御対象となるサブツリーのトップディレクトリのパスを示す情報である。なお、トップディレクトリ４１６Ａには、公開ディレクトリのパス、管理者に設定された任意のディレクトリ・ファイルのパスを設定してよい。なお、トップディレクトリ４１６Ａのパス中に“＊（アスタリスク）”が含まれている場合、該当エントリの内容は“＊”以外のパスが一致するパスを有する全てのディレクトリに対して適用される。
【００６７】
用途４１６Ｂは、トップディレクトリ４１６Ａ以下のファイルの用途を示す情報であり、個人、グループ共有、アーカイブ、バックアップのうちどれか一つが指定される。用途４１６Ｂは、ディレクトリ公開時に、管理者が後述する公開ディレクトリ設定インタフェースを介して指定する。
【００６８】
コンフリクト頻度４１６Ｃは、同期処理時のコンフリクト発生頻度を示す情報である。コンフリクト発生頻度４１６Ｃは、用途４１６Ｂに対し、事前に定められた規定値が設定される。例えば、個人用途の場合、コンフリクト発生頻度は“低”、グループ共有の場合は“高”となる。
【００６９】
同期時間上限４１６Ｄは、該当トップディレクトリに対する同期処理の一回当たりの処理時間の上限となる。ＮＡＳデバイス１０２は後述の同期分割処理において、同期時間上限４１６Ｄを満たすように同期処理対象とするサブツリーのサイズを決定する。同期時間上限４１６Ｄも、コンフリクト頻度４１６Ｃ同様に、用途４１６Ｂに対して事前に定められた規定値が設定される。平均スループット４１６Ｅは、該当ディレクトリの同期処理のスループットを示す情報である。ＮＡＳデバイス１０２は、同期処理において、該当ディレクトリに対する同期処理が発生した場合、平均スループットを再算出し算出結果で平均スループット４１６Ｅを書き換える。なお、平均スループットの再算出は、長期的な傾向を反映させるため過去から累積した統計情報で行ってもよいし、直近の傾向を把握するため、例えば、過去５回の統計情報で行ってもよい。また、コンフリクト発生頻度４１６Ｃも、統計情報に基づいて設定を変更してもよいし、平均値を設定してもよい。
【００７０】
ディレクトリ管理テーブルにより、ディレクトリごとの同期処理の要件を管理し、同期処理時にファイルの用途に応じた適切なサイズのサブツリーを構築することが可能となる。なお、本実施例では、トップディレクトリ４１６Ａに対して用途４１６Ｂやコンフリクト発生頻度４１６Ｃや同期時間上限４１６Ｄを設定しているが、これに限られない。例えば、トップディレクトリ以外のディレクトリ単位やファイル単位に用途４１６Ｂやコンフリクト発生頻度４１６Ｃや同期時間上限４１６Ｄが設定されても良い。
【００７１】
また、上記で述べた用途４１６Ｂの指定内容は例示に過ぎず、他の用途を指定することも可能である。
【００７２】
＜同期済みファイルリスト＞
図９は、ＣＡＳデバイス１２１の同期済みファイルリスト５０９の構成例を示す図である。
【００７３】
同期済みファイルリスト５０９の各エントリは、ＮＡＳデバイス１０２の同期処理によりＣＡＳデバイス１２１に対して実施された更新処理に対応する。これらの更新処理はＣＡＳデバイス１２１に実施された順番で記録される。
【００７４】
同期済みファイルリスト５０９は、拠点５０９Ａ、同期番号５０９Ｂ、ファイル名５０９Ｃ、更新日時５０９Ｄ、更新対象５０９Ｅ、更新内容５０９Ｆを構成項目として有している。
【００７５】
拠点５０９Ａは、更新処理が行われた拠点を示す情報である。同期番号５０９Ｂは、同期番号４１４Ｂと同様に、全ＮＡＳデバイス１０２、時間にまたがり一意に同期処理を識別するための識別子を示す情報である。ファイル名５０９Ｃは、更新対象となったファイル・ディレクトリのパスを示す。なお、ファイル名５０９Ｃに格納されるパスは、更新処理実施時のＣＡＳデバイス１２１のＦＳ＿Ａ’’２２０のパスが格納される。更新日時５０９Ｄは、更新処理がＮＡＳデバイス１０２で発生した日時を示す情報である。更新対象５０９Ｅは、更新された内容がファイルか、ディレクトリかを示す情報である。更新内容５０９Ｆは、更新処理の内容となり、書き込み、削除、リネーム元、リネーム先のうち一つが指定される。
【００７６】
ＮＡＳデバイス１０２は、同期処理時に自拠点で発生した更新処理に対応する更新処理を、ＣＡＳデバイス１２１に対して実施し、その内容を同期済みファイルリスト５０９に追記する。つまり、同期済みファイルリスト５０９には、ＮＡＳデバイス１０２で発生した更新処理が時系列で記録される。
【００７７】
また、これらの更新処理は、ＮＡＳデバイス１０２の更新処理そのものでなく、ＣＡＳデバイス１２１のＦＳ＿Ａ’’２２０に対する更新処理として記録される。例えば、ＮＡＳデバイス１０２は、更新対象となったファイルが、他の拠点のリネーム処理により異なるパスにてＣＡＳデバイス１２１のＦＳ＿Ａ’’２２０で格納されている場合、リネーム後のパスに対する更新処理を同期済みファイルリスト５０９に記録する。
【００７８】
このように、同期済みファイルリスト５０９により、ＮＡＳデバイス１０２は自拠点で発生した更新処理を、ＣＡＳデバイス１２１に記録し、他の拠点のＮＡＳデバイス１０２に通知することが可能となる。
【００７９】
＜ロックリスト＞
図１０は、ＣＡＳデバイス１２１のロックリスト５１０の構成例を示す図である。
【００８０】
ロックリスト５１０の各エントリは同期処理時に排他対象となるＣＡＳデバイス１２１のＦＳ＿Ａ’’２２０内のサブツリーに対応する。ロックリスト５１０にサブツリーが記載されている場合、ＮＡＳデバイス１０２は該当するサブツリーを含むサブツリーに対して、同期処理を実施することができない。
【００８１】
ロックリスト５１０は、サブツリールート５１０Ａ、ロックオーナー５１０Ｂ、獲得日時５１０Ｃ、保持期間５１０Ｄを構成項目として有している。
【００８２】
サブツリールート５１０Ａは、排他対象となるサブツリーのトップディレクトリを示す情報である。なお、サブツリーではなくファイル単体を排他対象とする場合には、該当ファイルのパスを示す情報となる。ロックオーナー５１０Ｂは、ロックを獲得したＮＡＳデバイス１０２を示す情報で、システム内でＮＡＳデバイス１０２を一意に示すための識別子（ホスト名など）を示す。獲得日時５１０Ｃは、ロックが獲得された日時を示す情報である。保持期間５１０Ｄは、ロック獲得後のロックの有効期間を示す情報ある。  
【００８３】
ＮＡＳデバイス１０２は同期処理を行う際に、ロックリスト５１０にエントリを追記（ロック）し、同期処理後に削除（アンロック）する。ＮＡＳデバイス１０２はサブツリーの同期時に、もし該当サブツリー内に他のＮＡＳデバイスがロックを獲得したサブツリーがある場合、同期処理を実施しない。また、ロックを獲得したＮＡＳデバイス１０２が保持期間５１０Ｄを過ぎてもロック期間の延長（獲得日時５１０Ｃの上書き）または、アンロックしない場合、ロックは無効となる。これは、ロックを獲得したＮＡＳデバイス１０２に障害が発生し保持期間内に復旧できなかった場合に、他のＮＡＳデバイス１０２が永遠に同期処理を実施できなくなることを防ぐためである。
【００８４】
ロックリスト５１０により、ＮＡＳデバイス１０２間の同期処理のサブツリー単位の排他が可能となる。
【００８５】
＜ファイルリード／ライト処理＞
図１１は、本発明による、ＮＡＳデバイス１０２のファイルリード・ライト処理を説明するためのフローチャートである。ＮＡＳデバイス１０２は、クライアント１０１からファイルリード・ライト要求を受信した際に、図１１に示すリード・ライト処理を実施する。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８６】
ステップＳ１０００：ファイルシステムプログラム４０８は、ファイル共有サーバプログラム４０６を経由してクライアント１０１からのファイルリード・ライト要求を受理する。この際、リード要求には、リード対象のファイル名と、リード対象データのファイル内の先頭位置と長さが含まれる。一方、ライト要求には、ライト対象のファイル名とライト対象データのファイル内の先頭位置と、ライトデータが含まれる。
【００８７】
ステップＳ１００１:ファイルシステムプログラム４０８は、他拠点更新ファイルリスト４１４を検索し、他拠点におけるリード・ライト対象ファイルの更新有無を判定する。ファイルシステムプログラム４０８は他拠点更新ファイルリスト４１４にリード・ライト対象となったファイルと同じファイル名を持つエントリがないかを調べる。本処理は、自拠点のリード・ライト対象ファイルが他拠点にて既に更新されており、ＣＡＳデバイス１２１から最新版を入手する必要があるかどうかを判定するために行う。
【００８８】
ステップＳ１００２:リード・ライト対象ファイルが他拠点更新ファイルリスト４１４にない場合、ファイルシステムプログラム４０８はステップＳ１００５の処理に移る。この場合、自拠点にあるファイルが最新であるため、自拠点のＦＳ＿Ａ２００のファイルに対して通常のリード・ライトが実施される。リード・ライト対象ファイルが他拠点更新ファイルリスト４１４にある場合、ファイルシステムプログラム４０８はステップＳ１００３の処理に移る。この場合、自拠点のＦＳ＿Ａ２００内のファイルが最新でないため、ＣＡＳデバイス１２１から最新版ファイルを取得した上で、リード・ライト処理を行う。
【００８９】
ステップＳ１００３：ファイル共有クライアントプログラム４０７は、ＣＡＳデバイス１２１からリード・ライト対象ファイルの最新版を読み込み、ＦＳ＿Ａ２００にデータを格納する。なお、ＣＡＳデバイス１２１で他拠点更新ファイルリスト４１４のファイル名４１４Ｃに該当するファイルがない場合については、クライアント１０１に対しエラーを応答し、リード・ライト処理を終了する。このようなケースは、リード・ライト対象ファイルが他拠点で削除、またはリネームされている場合に発生する。この場合、ファイルシステムプログラム４０８は、リード・ライト対象ファイルが不整合の状態になっていると判断し、次回の同期処理までの間、該当ファイルへのアクセスを禁止する。
【００９０】
ステップＳ１００４：ファイルシステムプログラム４０８は、他拠点更新ファイルリスト４１４からステップＳ１００３で取得したファイルのエントリを削除する。これは、ステップＳ１００３により、自拠点のＦＳ＿Ａ２００内の該当ファイルが最新版のファイルに置き換えられためである。本処理により、次回以降の該当ファイルのリード・ライト処理において、ＣＡＳアクセスが不要となる。
【００９１】
ステップＳ１００５：ファイルシステムプログラム４０８は、クライアントからの要求がファイルリード要求か、ファイルライト要求かを判断する。ファイルシステムプログラム４０８は、ファイルリード要求の場合ステップＳ１００８の処理に移り、ファイルライト要求の場合ステップＳ１００６の処理に移る。
【００９２】
ステップＳ１００６：ファイルシステムプログラム４０８は、クライアントのライト要求に従いＦＳ＿Ａ２００の該当ファイルの書き込み処理を行う。
【００９３】
ステップＳ１００７：ファイルシステムプログラム４０８は、ステップＳ１００６で行った更新処理を自拠点更新ファイルリスト４１３に追加し、ステップＳ１００９の処理に移る。
【００９４】
ステップＳ１００８：ファイルシステムプログラム４０８は、リード対象ファイルのデータを読み取る。
【００９５】
ステップＳ１００９：ファイルシステムプログラム４０８は、ファイルリード・ライト処理の応答を、ファイル共有サーバプログラム４０６を経由してクライアント１０１に返す。
【００９６】
以上で述べた処理にて、ＮＡＳデバイス１０２は、リード・ライト処理時に、他拠点で発生した更新処理を反映し、かつ自拠点で発生した更新処理を自拠点更新ファイルリスト４１３に反映することが可能となる。また、上記ファイルに対するリード・ライト処理は、ディレクトリに対しても同様に適用される。
【００９７】
＜ファイル削除・リネーム処理＞
ＮＡＳデバイス１０２はクライアントからファイル削除、リネーム要求を受信した場合、自拠点のＦＳ＿Ａ２００の該当ファイルの削除、リネームを実施する。その後、自拠点更新ファイルリスト４１３に更新処理の情報を追記する。また、リネーム処理時には、他拠点ファイルリスト４１４のエントリのうち、リネーム元となったファイル・ディレクトリまたは、リネーム元となったディレクトリ内のファイル・ディレクトリが含まれる場合には、該当エントリをリネーム先のパスに変換する処理を行う。この場合、他拠点更新ファイルリスト４１４のファイル名４１４Ｃに含まれるリネーム前のパスを、リネーム後のパス名に置き換えることになる。例えば／ｈｏｍｅ／ｕｓｅｒＡ／Ｆｉｌｅ＿Ａを／ｈｏｍｅ／ｕｓｅｒＡ／Ｆｉｌｅ＿Ｂに移すリネーム処理があり、他拠点更新ファイルリスト４１４に／ｈｏｍｅ／ｕｓｅｒＡ／Ｆｉｌｅ＿Ａが含まれている場合、該当エントリのファイル名４１４Ｃを／ｈｏｍｅ／ｕｓｅｒＡ／Ｆｉｌｅ＿Ｂに書き換える。
【００９８】
また、削除処理時には、他拠点ファイルリスト４１４中に削除対象ファイルまたはディレクトリが含まれている場合には、該当するファイル・ディレクトリを削除する。
【００９９】
以上の処理を行うことにより、他拠点更新ファイルリスト４１４に含まれるエントリのファイル名４１４と、ＦＳ＿Ａ２００内のファイル名を一致させることができる。また、上記ファイルに対するリネーム・削除処理は、ディレクトリに対しても同様に適用される。
【０１００】
＜同期処理＞
図１２は、ＮＡＳデバイス１０２の同期処理を説明するためのフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１０１】
ステップＳ２０００:ＮＡＳデバイス１０２の同期プログラム４１０は、定期的に起動し前回の同期処理以降に発生した自拠点の更新処理を、ＣＡＳデバイス１２１に反映する同期処理を開始する。なお、同期処理の実施間隔は管理者が管理画面表示プログラム４１２を介し、設定する。同期プログラム４１０は、まず自拠点更新ファイルリスト複製を作成し、自拠点更新ファイル４１３の全エントリを削除する。本処理により同期対象となるファイル群を確定することができる。
【０１０２】
ステップＳ２１００：同期プログラム４１０は、同期ファイル分割プログラム４１１を呼び出し、複製した自拠点更新ファイルリスト４１３のエントリをディレクトリ管理テーブル４１６（図８）に従いサブツリー単位に分割し、分割同期ファイルリスト４１５を作成する。本処理により、同期処理対象のファイル群を、同期時間上限４１６Ｄ以内に同期完了可能なサイズのサブツリー単位に分割することができる。本処理の詳細は図１３を用いて後述する。
【０１０３】
ステップＳ２２００：同期プログラム４１０は、ステップＳ２１００で作成したサブツリーごとに、ＣＡＳデバイス１２１への同期処理を行う。本処理では、ＮＡＳデバイス１０２は、ＣＡＳデバイス１２１のファイルシステムＦＳ＿Ａ’’２２０をサブツリー単位で排他し、排他したサブツリーに対して同期処理を行う。また、本処理ではサブツリーのコンフリクト発生頻度に応じた同期処理の順序制御を行う。本ステップの詳細は図１４を用いて後述する。
【０１０４】
以上の処理により、ＮＡＳデバイス１０２は前回の同期処理以降で発生したＦＳ＿Ａ２００に対する更新処理を、サブツリー単位でＣＡＳデバイス１２１のＦＳ＿Ａ’’２２０に反映することができる。
【０１０５】
＜同期分割処理の詳細＞
図１３は、ステップＳ２１００で述べた同期分割処理の詳細を説明するためのフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１０６】
ステップＳ２１０１：同期ファイル分割プログラム４１１は、ステップＳ２０００で作成した自拠点更新ファイルリスト複製を読み取り、前回の同期処理以降に更新されたファイル・ディレクトリを抽出する。なお、自拠点更新ファイルリスト複製のファイル名には、更新処理が発生した時点での、ＦＳ＿Ａ２００内のパスが記録されている。更新処理以降に、更新ファイル・ディレクトリ、またはその上位ディレクトリがリネームされている場合には、自拠点更新ファイルリスト複製のファイル名と実際のパスが異なることになる。そのため、同期ファイル分割プログラム４１１は、自拠点更新ファイルリスト複製のリネーム処理が発生する以前のエントリに対して、リネーム元ファイル・ディレクトリのパス名を、リネーム先ファイル・ディレクトリのパス名に置換する処理を行う。
【０１０７】
ステップＳ２１０２：同期ファイル分割プログラム４１１は、ステップＳ２１０１で抽出した更新ファイル・ディレクトリのリストに含まれるエントリを、サブツリーごとに連続するように並べ替える。同期ファイル分割プログラム４１１は、まずエントリをパスでソートし、同一ディレクトリ以下のファイルを連続して並べる。これは、同一ディレクトリ以下のファイル群は、該当ディレクトリまでの部分パスが一致するためである。
Ｓ２１１６：同期ファイル分割プログラム４１１は、ディレクトリ管理テーブル４１６のトップディレクトリを調べる。もしあるトップディレクトリ内に他のトップディレクトリが含まれている場合、他のトップディレクトリ以下のエントリを該当トップディレクトリのエントリの後ろに並べ替える。
【０１０８】
ステップＳ２１０３：同期ファイル分割プログラム４１１は、サブツリーを作成するための作業領域として、メモリ上に作業リストを作成する。作業リストは構築中のサブツリーに含むファイルの参照ポインタを格納するためのリストである。
【０１０９】
ステップＳ２１０４：同期ファイル分割プログラム４１１は、ステップＳ２１０２で作成した、処理対象ファイルリストの最初のエントリ同期分割処理の対象ファイル（処理中ファイル）として選択する。この際、ディレクトリ管理テーブル４１６を調べ、処理中ファイルの属するトップディレクトリを調べておく。
【０１１０】
ステップＳ２１０５：同期ファイル分割プログラム４１１は、処理中ファイルを作業リストに追加する。
【０１１１】
ステップＳ２１０６：同期ファイル分割プログラム４１１は、現在の処理中ファイルが処理対象ファイルリストの最後のファイルの場合、処理中ファイルがサブツリーの最後のファイルと判断し、ステップＳ２１１０の処理に移る。そうでない場合、ステップＳ２１０７の処理に移る。
【０１１２】
ステップＳ２１０７：同期ファイル分割プログラム４１１は、処理対象ファイルリストの次のファイルが、現在の処理中ファイルと同じトップディレクトリに含まれるかどうかを調べる。なお、ここでいうトップディレクトリとはディレクトリ管理テーブル４１６のトップディレクトリ４１６Ａと対応する。もし、同じトップディレクトリに含まれていない場合、処理中ファイルがサブツリーの最後のファイルと判断し、ステップＳ２１１０の処理に移る。そうでない場合はステップＳ２１０８の処理に移る。
【０１１３】
ステップＳ２１０８：同期ファイル分割プログラムは以下の数式１を用い、作業ファイルリストに含まれるファイルと、次の処理対象ファイルを加えた場合の同期時間の見積もりを行う。
【０１１４】
同期時間の見積もり  ＝  （（作業ファイルリストに含まれるファイルサイズの和）＋次の処理対象ファイルのサイズ）／平均スループット  ．．．数式１
【０１１５】
なお、平均スループットはディレクトリ管理テーブル４１６記載の平均スループット４１６Ｅの値を用いる。
【０１１６】
ステップＳ２１０９：同期ファイル分割プログラム４１１は、Ｓ２１０８で得た同期時間見積もりが、処理中ファイルの属するトップディレクトリの同期時間上限４１６Ｄより大きいかどうかを判定する。同期ファイル分割プログラム４１１は、同期時間見積もりがデータ同期時間上限４１６Ｄよりより大きい場合は、処理中ファイルがサブツリーの最後のファイルと判断し、ステップＳ２１１０の処理に移る。そうでない場合は、ステップＳ２１１５の処理に移る。
【０１１７】
ステップＳ２１１０：同期ファイル分割プログラム４１１は作業リストに含まれるファイルから、同期対象とするサブツリーを作成する。サブツリーは、ファイルシステムのツリー構造のうち、作業リストに含まれる全ファイルを含む最小の部分木とする。なお、ステップＳ２１０７にて、同一トップディレクトリ内のファイルは存在しないことが保証されるため、サブツリーは最大でもトップディレクトリとなる。
【０１１８】
ステップＳ２１１１：同期ファイル分割プログラム４１１は、Ｓ２１１０で作成したサブツリーを排他範囲とする。また、同期ファイル分割プログラム４１１は自拠点更新ファイルリスト複製を調べ、作成中のサブツリー内のファイル・ディレクトリがサブツリー外からリネームされている場合、リネーム元のパスも排他範囲とする。これは、同期処理時に、他の拠点の同期処理によりリネーム元のファイル・ディレクトリが更新されることを防ぐためである。
【０１１９】
ステップＳ２１１２：同期ファイル分割プログラム４１１は、ステップＳ２１０７で決めたサブツリーごとに分割同期ファイルリスト４１５を出力する。同期ファイル分割プログラム４１１は、サブツリーごとに同期処理内で一意のサブツリー番号を付与し、サブツリー番号４１５Ａに出力する。またステップＳ２１１１で決めた排他範囲を排他範囲４１５Ｂに出力する。ファイル名４１５ＣにはステップＳ２１０１で調べた更新ファイルのパスを格納し、更新日時４１５Ｄ、更新対象４１５Ｅ、更新内容４１５Ｆには自拠点更新ファイルリスト４１３の内容を格納する。
【０１２０】
ステップＳ２１１３：同期ファイル分割プログラム４１１は、作業リストを初期化し次のサブツリーの作成に入る。
【０１２１】
ステップＳ２１１４：同期ファイル分割プログラム４１１は、同期対象のファイル群に未処理の更新ファイルがある場合には、ステップＳ２１１５の処理に移り、そうでない場合は同期分割処理を終了する。
【０１２２】
ステップＳ２１１５：同期ファイル分割プログラム４１１は、同期対象のファイル群の次の更新ファイルに対し、ステップＳ２１０５以降の処理を行う。
【０１２３】
以上で述べた同期分割処理を行うことで、ＮＡＳデバイス１０２は、同期時間上限４１６Ｄを満たす範囲でできるだけ大きく、同期処理を分割することができる。
【０１２４】
＜サブツリー単位同期処理の詳細＞
図１４は、ステップＳ２２００で述べたサブツリー単位同期処理の詳細を説明するためのフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１２５】
ステップＳ２２０１：同期プログラム４１０は、分割同期ファイルリスト４１５とディレクトリ管理テーブル４１６を調べ、各サブツリーのコンフリクト頻度４１６Ｃを調べる。なお、サブツリーの更新頻度は、サブツリーを含むトップディレクトリ４１６Ａのコンフリクト頻度４１６Ｃと同等と判断する。
【０１２６】
ステップＳ２２０２：同期プログラム４１０は、Ｓ２２０１で調べたコンフリクト頻度に基づき、コンフリクト頻度の高いものからサブツリーをソートする。もし、同一コンフリクト頻度のサブツリーが複数ある場合には、サブツリー内のファイルサイズの総和が小さなものを優先する。これにより、コンフリクト発生頻度の高いファイルから他の拠点に同期することができるため、コンフリクトの発生確率を低減させることができる。
【０１２７】
ステップＳ２２０３：同期プログラム４１０は、ＣＡＳデバイス１２１のロックリスト５１０を調べ、処理対象とするサブツリーの排他範囲４１５Ｂに対して、ロックが獲得可能かどうかを判断する。ロックは、ロックリスト５１０中の全てのサブツリールート５１０Ａが排他範囲４１５Ｂに含まれない場合のみ、獲得可能と判断する。
【０１２８】
全ての排他範囲４１５Ｂに対しロックが獲得可能な場合、同期プログラム４１０は排他範囲４１５Ｂをサブツリールート５１０Ａとし、自身をロックオーナー５１０Ｂとしたエントリをロックリスト５１０に追記する。なお、獲得日時５１０Ｃには本処理の実施日時を、保持期間５１０Ｄにはシステムに事前に設定された期間（例えば、同期時間上限４１６Ｄで指定された値）を指定する。
【０１２９】
なお、ロックリスト５１０に対する更新処理を他の拠点と排他するため、ＮＡＳデバイス１０２は、ロックリスト５１０の操作開始時に、自身のみが更新権限を持った特定の名前のロックファイルをＣＡＳデバイス１２１上に作成する。ＮＡＳデバイス１０２は、ロックリスト５１０への操作が完了し次第、ロックファイルを削除する。他の拠点はロックファイルが存在する間は、ロックリスト５１０の操作を行わない。
【０１３０】
ステップＳ２２０４：同期プログラム４１０は、ステップＳ２２０３でロック獲得に成功した場合、処理中のサブツリーをＣＡＳデバイス１２１に同期するため、ステップＳ２２０５に移る。もし、ロック獲得に失敗した場合はステップＳ２２１１に移り、次のサブツリーの処理に移る。
【０１３１】
ステップＳ２２０５：同期プログラム４１０は、ＣＡＳデバイス１２１から同期済みファイルリスト５０９を読み込む。
【０１３２】
ステップＳ２２０６：同期プログラム４１０は、ステップＳ２２０５で読み取った同期済みファイルリスト５０９の内容を、ファイルシステムＦＳ＿Ａ２００と他拠点更新ファイルリスト４１４に反映する。また、同期済みファイルリスト５０９にリネーム・削除処理が含まれている場合、それらの内容は自拠点更新ファイルリスト４１３および、分割同期ファイルリスト４１５にも反映する。これらの同期済みファイルリスト反映処理の詳細は図１５を用いて後述する。
【０１３３】
ステップＳ２２０７：同期プログラム４１０は、分割同期ファイルリスト４１５中の処理中サブツリーに対する更新処理をＣＡＳデバイス１２１に反映する同期処理を行う。同期プログラム４１０は、分割同期ファイルリスト４１５を読み取り、前回同期処理以降に行われたサブツリー内のファイル更新処理と同等の処理をＣＡＳデバイス１２１に対して行う。同期プログラム４１０は、更新内容４１５Ｆが書き込みの場合、更新対象となったファイルをＣＡＳデバイス１２１に格納する。また、更新内容４１５Ｆがリネーム・削除の場合、同じ処理をＣＡＳデバイス１２１に対して実施する。
【０１３４】
なお、分割同期ファイルリスト４１５のファイル名４１５Ｃは、更新処理発生時のＦＳ＿Ａ２００内のパス名が記録されている。そのため、ステップＳ２１０１と同様に、ファイル名４１５Ｃを同期処理時点でのＦＳ＿Ａ２００内のパスに変換する処理を行う。また、他拠点でリネーム処理が発生している場合、ＦＳ＿Ａ’’２２０では異なるパスにて記録されている。そのため、同期済みファイルリスト５０９から、前回の同期処理以降に発生したリネーム処理を調べ、ファイル名４１５ＣをＦＳ＿Ａ’’２２０のパスに変換する処理もあわせて行う。更新処理は、最終的に得られたＦＳ＿Ａ’’２２０のファイル・ディレクトリに対して実施する。
【０１３５】
ステップＳ２２０８：同期プログラム４１０はステップＳ２２０７で行ったＣＡＳデバイス１２１への更新処理をＣＡＳデバイス１２１上の同期済みファイルリスト５０９に追記する。なお、同期済みファイルリスト５０９への更新処理は、ステップＳ２２０３と同様の方法にて、他の拠点と排他して行う。
【０１３６】
また、同期プログラム４１０は、サブツリーの累積転送量と転送時間を統計情報として記録し、平均転送スループットを計算する。同期プログラム４１０は、平均転送スループットを、ディレクトリ管理テーブル４１６の平均スループット４１６Ｅに記録する。
【０１３７】
ステップＳ２２０９：同期プログラム４１０は、ＣＡＳデバイス１２１のロックリスト５１０から、ステップＳ２２０３で追記したエントリを削除し、アンロックする。ステップＳ２２０３と同様にロックリスト５１０の操作は他の拠点と排他して行う。
【０１３８】
ステップＳ２２１０：同期プログラム４１０は、未処理のサブツリーがある場合には、次のサブツリーの処理のためＳ２２１１に処理を移し、そうでない場合には同期処理を終了する。
【０１３９】
ステップＳ２２１１：同期プログラム４１０は、未処理のサブツリーのうち、最もコンフリクト頻度の高いサブツリーを次のサブツリーとして選び、ステップＳ２２０３以降の処理を繰り返す。
【０１４０】
以上で述べたサブツリー単位同期処理を行うことで、サブツリー単位の同期処理を、コンフリクト発生頻度の高いサブツリーから順に実施することが可能となる。なお、本実施例では、サブツリーの同期処理ごとにロックの獲得、解放を行うが、これは例示に過ぎない。例えば、ロック獲得による通信量を削減するため、コンフリクト頻度の低いサブツリーに対しては、一度に複数のサブツリーのロックを獲得する制御も可能である。この場合、同期プログラム４１０は全てのサブツリーに対する同期処理を実施した後、これらのサブツリーのロック解放を行う。この場合異なるトップディレクトリ下のサブツリーについて、複数まとめてロックを獲得してよく、サブツリーの範囲を変動させるよりも、きめ細かにロックの対象を設定する事が出来る。この際に複数のロックを纏める範囲の判断は上記のコンフリクト頻度に加え、同期に係る時間を考慮して良い。また、この判断は例えば、Ｓ２２０２のサブツリーのソートの段階でして良い。
【０１４１】
＜同期済みファイルリスト反映処理の詳細＞
図１５は、ＣＡＳデバイス１２１の同期済みファイルリスト反映処理の詳細を説明するためのフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１４２】
ステップＳ３０００：同期プログラム４１０は、ステップＳ２２０５で読み取った同期済みファイルリスト５０９のうち、前回の自身が行った同期処理以降に発生したＣＡＳデバイス１２１に対する更新処理で、処理中のサブツリーに含まれる更新処理を調べる。その後、同期プログラム４１０はＣＡＳデバイス１２１で行われた更新処理の処理対象ファイルが、自拠点更新ファイルリスト４１３に含まれていないかを調べ、コンフリクトの発生有無を判断する。
【０１４３】
コンフリクトがある場合には、該当する更新処理をコンフリクト処理として抽出する。この際、もし自拠点の更新日時４１３Ｂが他拠点の更新日時５０９Ｄより古い場合は、その更新処理を他拠点優先コンフリクトとして処理する。そうでない場合は自拠点優先コンフリクトとして処理する。また、リネーム処理・削除処理についても同様に、自拠点優先コンフリクトか、他拠点優先コンフリクトかを判定する。なお、自拠点更新ファイルリスト４１３、同期済みファイルリスト５０９共に、リネーム処理が途中で発生している場合には、それ以降のエントリのファイル名はリネーム前のファイル名に変換した上で、同一ファイルかどうかを判断する。
【０１４４】
ステップＳ３００１：同期プログラム４１０は、ステップＳ３０００で見つけた他拠点優先コンフリクトの処理対象となったファイルまたはディレクトリを、専用の退避ディレクトリに複製する。なお、退避ディレクトリは、コンフリクト発生ファイル格納用のディレクトリで各ファイルシステムに一つ用意されているシステムディレクトリである。このように他拠点優先コンフリクトファイルを退避することで、ユーザの意図しないコンフリクト解消処理が発生し、ファイルが置換された場合でも、ユーザは古い（置換前の）ファイルにアクセスすることが可能である。また、同期プログラム４１０は、他拠点優先コンフリクトが発生した更新処理はＣＡＳデバイス１２１に同期不要と判断し、分割同期ファイル４１５から該当するエントリを削除する。
【０１４５】
ステップＳ３００２：同期プログラム４１０は、ステップＳ３０００で見つけた同期済みファイルリスト５０９中の処理対象エントリのうち、最初のエントリを次の処理対象とし、ステップＳ３００３の処理に移る。
【０１４６】
ステップＳ３００３：同期プログラム４１０は、処理中の更新処理が自拠点優先コンフリクトの場合、他拠点の更新処理を反映する必要がないと判断し、ステップＳ３００７の処理に移る。そうでない場合、ステップＳ３００４の処理に移る。
【０１４７】
ステップＳ３００４：同期プログラム４１０は、更新内容５０９Ｆに基づき、更新処理がファイル、ディレクトリに対する書き込みか、削除やリネーム処理かを判断する。もし更新処理が書き込みの場合、ステップＳ３００５の処理に移り、そうでない場合ステップＳ３００６の処理に移る。
【０１４８】
ステップＳ３００５：同期プログラム４１０は、他拠点更新ファイルリスト４１４に現在処理している更新処理の更新対象ファイル５０９Ｃを追加する。本処理により、ファイルシステムプログラム４０８は、他拠点更新ファイルリスト４１４を参照することでアクセス対象のファイルまたはディレクトリが最新の状態であるかどうかを判断することが可能となる。なお、自拠点または他拠点で更新対象ファイルまたは上位ディレクトリに対してリネームが発生している場合、同期済みファイルリスト５０９中のファイル名５０９ＣとファイルシステムＦＳ＿Ａ２００内のパスが異なる場合がある。その場合は、ＦＳ＿Ａ２００内のパスに変換した上で、他拠点更新ファイルリスト４１４に登録する。
【０１４９】
ステップＳ３００６：同期プログラム４１０は、同期済みファイルリスト５０９の削除・リネーム処理をファイルシステムＦＳ＿Ａ２００に対して実施する。なお、これらの処理の前に、ステップＳ３００５のケースと同様、自拠点・他拠点でリネーム処理が発生している場合には、ＦＳ＿Ａ２００内のパスにて処理を行う。
【０１５０】
ステップＳ３００７：同期プログラム４１０は、同期済みファイルリスト５０９の処理対象サブツリーに対する更新処理のうち、未処理のものがある場合、ステップＳ３００２以降の処理を繰り返し、そうでない場合は同期済みファイルリスト反映処理を終了する。
【０１５１】
以上で述べた同期済みファイルリスト反映処理を行うことで、他拠点で起きた更新処理を自拠点に反映することができる。
【０１５２】
＜公開ディレクトリ設定インタフェース＞
図１６は、クライアント１０１に公開するディレクトリを設定するための管理インタフェースを示す概要図である。
【０１５３】
公開ディレクトリ設定インタフェース４１６０は、管理画面表示プログラム４１２により、クライアント１０１を介して、管理者に提供される。管理者は、ＦＳ＿Ａ２００の公開ディレクトリを設定する際に、用途を指定することでディレクトリ管理テーブル４１６の内容を設定することができる。
【０１５４】
公開ディレクトリ設定インタフェース４１６０は、テキスト入力ボックス４１６０Ａおよび、チェックボックス４１６０Ｂから４１６０Ｅから構成される。
【０１５５】
テキスト入力ボックス４１６０Ａは、公開するディレクトリのパス名を設定するテキスト入力ボックスである。なお、テキスト入力ボックス４１６０Ａにはアスタリスク（“＊”）を使用してもよい。テキスト入力ボックス４１６０Ａの入力内容は、ディレクトリ管理テーブル４１６のトップディレクトリ４１６Ａに該当する。
【０１５６】
チェックボックス４１６０Ｂから４１６０Ｅは、テキスト入力ボックス４１６０Ａで入力されたディレクトリの用途を指定するためのチェックボックスである。なお、これらのチェックボックスのうちどれか一つが指定された場合、他のチェックボックスは無効化される。チェックボックス４１６０Ｂから４１６０Ｅはそれぞれ、ディレクトリ管理テーブル４１６で指定可能な値に該当する。また、図示はしていないがテキスト入力ボックス４１６０Ａでディレクトリのパス名を設定し、設定されたパス名に対応する用途、コンフリクト頻度やデータ同期処理時間の上限などを表示させることもできる。また、図１６ではトップディレクトリ公開のタイミングでの用途設定について述べたが、トップディレクトリ以下のディレクトリやファイルについての用途設定においても同様の管理インタフェースを管理者に提供してよい。トップディレクトリ以下のディレクトリを共有として公開する場合にはディレクトリ公開のタイミングで設定し、ディレクトリを共有として公開しない場合には運用中に管理者が任意に設定できるようクライアント１０１から送信される要求に応じて管理インタフェースを提供して良い。また、ファイルについても同様に運用中に、管理者が必要に応じて設定できるよう、クライアント１０１から送信される要求に応じて管理インタフェースを提供して良い。
【０１５７】
このように本実施形態によれば、データセンタ経由の拠点間ファイルシステム共有において同期処理を分割することで、複数拠点間で同期処理を並列実行することが可能となる。
【０１５８】
また、本実施形態ではコンフリクト頻度が低い用途のファイルの同期を大きなサブツリー単位で実施する。その結果、ロック獲得回数を削減し、同期処理分割のオーバヘッドによるスループット低下を抑えることができる。
【０１５９】
更に、本発明を用いることで、ロック獲得によるデータ同期のスループット低下を抑えつつ、複数拠点間のデータ同期遅延時間を削減することが可能となる。その結果、より多くの拠点がサポート可能となる。
【０１６０】
なお、本実施例では、用途、コンフリクト発生頻度、ディレクトリやファイルのサイズ、同期上限時間及び、平均スループットなどからサブツリー単位を算出したが、これら全ての要素を必ずしも加味する必要はない。例えば、トップディレクトリが個人用途である場合には、そのトップディレクトリ全体を一つのサブツリーとして判断するようにしても良い。これは、個人用トップディレクトリの場合、アクセスするユーザは一人であり、ある拠点からの更新中に、他拠点からの更新が発生するシーンは考えにくく、当該トップディレクトリ全体を長時間ロックしていても問題が発生しにくいためである。このように判断することにより、サブツリーの判定を簡易に行う事ができ、同期処理をより短時間で実現することができる。
【０１６１】
また、本実施例では拠点間でのサブツリー単位での同期処理の排他のみを実施しているがこれは例示に過ぎない。例えば、コンフリクト発生の低い用途で使用されるサブツリーに対しては、同期処理に加え、クライアントからの更新処理を排他する制御も行うことができる。この場合、ある拠点でコンフリクト発生頻度の低い公開ディレクトリに対し、ファイル更新があった場合、その更新処理がデータセンタに同期されるまで該当ディレクトリに他拠点からの更新を排他する。この場合、同期処理時にコンフリクト解消処理が不要となるため、該当するサブツリーの同期処理をより高いスループットで実現することができる。
【０１６２】
（２）第２の実施形態
以下、本発明の第２の実施形態について説明する。
【０１６３】
本発明の第１の実施形態では、ＮＡＳデバイス１０２は、管理者が設定する公開ディレクトリの用途から、ファイルのコンフリクト発生頻度を推測し、同期処理時間の上限を決めていた。一方、本発明の第２の実施形態では、ＮＡＳデバイス１０２は同期処理中のコンフリクト発生回数の統計情報にもとづき、ファイルのコンフリクト発生頻度を推測する。
【０１６４】
第２の実施形態を用いることで、管理者がディレクトリ作成の際に用途を入力することなく、適切なデータ同期処理時間の上限を決めることが可能となる。
【０１６５】
以下の説明では、第１の実施形態との相違点を主に説明し、第１の実施形態との共通点については説明を省略、或いは簡略する。
【０１６６】
＜ディレクトリ管理テーブル＞
第２の実施形態では、ディレクトリ管理テーブル４１６で用途４１６Ｂの管理は行わず、統計情報に基づきコンフリクト頻度４１６Ｃ、同期時間上限４１６Ｄが設定される。
【０１６７】
以下、図８を用い第１の実施形態との差分を説明する。
【０１６８】
同期プログラム４１０は、同期処理あたりのコンフリクト平均発生頻度に基づき、コンフリク頻度４１６Ｃ、同期時間上限４１６Ｄを更新する。例えば、同期処理あたりの平均コンフリクト発生頻度が１回以下の場合、コンフリクト発生頻度４１６Ｃを“低”、３回以上の場合はコンフリクト発生頻度を“高”、そうでない場合を“中”とする。また、同期時間上限は、コンフリクと発生頻度に対し、事前に定められた値を使用する。例えば、コンフリクト発生頻度が“低”の場合は“１時間”、“中”の場合は“３０分”、“高”の場合は“５分”とする。
【０１６９】
＜同期済みファイルリスト反映処理＞
第２の実施形態では、同期プログラム４１０は同期済みファイルリスト反映処理にて、拠点間のコンフリクト発生頻度の統計情報を取得する。以下、図１５の差分について説明をする。
【０１７０】
ステップＳ３０００：同期プログラム４１０は従来のコンフリクト検出実施時に、コンフリクト発生回数を、ディレクトリ管理テーブル４１６のトップディレクトリ４１６Ａごとに記録する。もし、コンフリクト平均発生回数に増減があり、コンフリクト発生頻度４１６Ｃに変更が生じた場合、ディレクトリ管理テーブル４１６のコンフリクト発生頻度４１６Ｃと同期時間上限４１６Ｄの値を更新する。
【０１７１】
＜公開ディレクトリ設定インタフェース＞
第２の実施形態では、管理者は公開ディレクトリ設定時に用途を入力する必要がなくなる。すなわち、図１６における４１６０Ｂから４１６０Ｅのチェックボックスが不要となる。
【０１７２】
このように、第２の実施形態では、ＮＡＳデバイス１１２が拠点間のコンフリクト発生頻度の統計情報を取得することで、管理者が用途を入力することなく、コンフリクト発生頻度の推測が可能となる。その結果、管理者の管理コストの削減や、事前にファイルの用途の推測が難しいディレクトリに対しても、本発明が適用可能となる。
【０１７３】
また、他の実施の形態として、ユーザによって入力された４１６Ｂの用途や、４１６Ｃのコンフリクト頻度を参照して、トップディレクトリ以下のファイルについて、複数拠点からのファイル更新の可否を判断するという形態も考えられる。具体的には、コンフリクト発生可能性が低いトップディレクトリ下のファイルについては複数拠点からのファイル更新を許すが、コンフリクト発生可能性が高いトップディレクトリ下のファイルについては、複数拠点からのファイル更新を許さず、ある特定の拠点からのファイル更新のみを許し、他のサイトからは参照のみが可能となる。なお、この場合、第１の実施例の更新ファイルをサブツリー単位に分割するのは、コンフリクト発生可能性が低いものだけである。何故なら複数拠点からのファイル更新を許されないファイルについてはロックを取る必要性がなく、その範囲であるサブツリーを決定する必要がないためである。サブツリーの範囲を決定する必要のあるディレクトリが減るため、迅速に同期を行う事ができる。
【符号の説明】
【０１７４】
１０  情報処理システム
１００  拠点Ａ（第１のサブ計算機システム）
１１０  拠点Ｂ（第２のサブ計算機システム）
１０１、１１１  クライアント
１０２、１１２  ＮＡＳデバイス（ＮＡＳ）
１０５、１１５  データアクセスネットワーク
１２０  データセンタ
１２１  ＣＡＳデバイス（ＣＡＳ）
１２２  ＣＡＳコントローラ
１２３  記憶装置
１２４  管理端末
１２５  管理ネットワーク
１３０、１４０  バックエンドネットワーク
２００  ファイルシステムＦＳ＿Ａ
２１０  ファイルシステムＦＳ＿Ａ’
２２０  ファイルシステムＦＳ＿Ａ’’
４０６  ファイル共有サーバプログラム
４０７  ファイル共有クライアントプログラム
４０８  ファイルシステムプログラム
４０９  オペレーティングシステム
４１０  同期プログラム
４１１  同期ファイル分割プログラム
４１２  管理画面表示プログラム
４１３  自拠点更新ファイルリスト
４１３Ａ  ファイル名
４１３Ｂ  更新日時
４１３Ｃ  更新対象
４１３Ｄ  更新内容
４１４  他拠点更新ファイルリスト
４１４Ａ  拠点  
４１４Ｂ  同期番号
４１４Ｂ  ファイル名
４１４Ｄ  更新日時
４１４Ｅ  更新対象
４１５  分割同期ファイルリスト
４１５Ａ  サブツリー番号
４１５Ｂ  排他範囲
４１５Ｃ  ファイル名
４１５Ｄ  更新日時
４１５Ｅ  更新対象
４１５Ｆ  更新内容
４１６  ディレクトリ管理テーブル
４１６Ａ  トップディレクトリ
４１６Ｂ  用途
４１６Ｃ  コンフリクト頻度
４１６Ｄ  同期時間上限
４１６Ｅ  平均スループット
５０９  同期済みファイルリスト
５０９Ａ  拠点
５０９Ｂ  同期番号
５０９Ｃ  ファイル名
５０９Ｄ  更新日時
５０９Ｅ  更新対象
５０９Ｆ  更新内容
５１０  ロックリスト
５１０Ａ  サブツリールート
５１０Ｂ  ロックオーナー
５１０Ｃ  獲得日時
５１０Ｄ  保持期間
【図１】
0006033949.tif 000002
【図２】
0006033949.tif 000003
【図３】
0006033949.tif 000004
【図４】
0006033949.tif 000005
【図５】
0006033949.tif 000006
【図６】
0006033949.tif 000007
【図７】
0006033949.tif 000008
【図８】
0006033949.tif 000009
【図９】
0006033949.tif 000010
【図１０】
0006033949.tif 000011
【図１１】
0006033949.tif 000012
【図１２】
0006033949.tif 000013
【図１３】
0006033949.tif 000014
【図１４】
0006033949.tif 000015
【図１５】
0006033949.tif 000016
【図１６】
0006033949.tif 000017