説明

同期方法、同期プログラム及び情報処理装置

【課題】ファイルリストの作成時間を短縮することを課題とする。
【解決手段】メインサーバ10は、同期対象とするファイルについてファイルリストを予め作成する。さらに、メインサーバ10は、ファイルの更新に関するイベントを取得する。さらに、メインサーバ10は、イベントが取得された更新ファイルの数を算出する。さらに、メインサーバ10は、同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値を超えた場合に、ファイルリストを部分更新する。また、メインサーバ10は、同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値よりも大きい第2の閾値を超えた場合に、ファイルリストの更新ではなく、ファイルリストを再作成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、同期方法、同期プログラム及び情報処理装置に関する。
【背景技術】
【0002】
近年のネットワークの高速化および大容量化に伴い、LAN(Local Area Network)で接続されたコンピュータ間だけでなく、ネットワークを経由して接続されたコンピュータ間でも、大量のファイルの送受信が可能となった。かかるファイルの送受信の一態様としては、複数のサーバ間で保持する内容を一致させる同期処理が行われる。
【0003】
OS(Operating System)のセキュリティパッチの配布や、更新されたウィルス定義ファイルの配布など、非常に多くのパーソナルコンピュータ(PC:Personal Computer)にデータを配布する用途では、配布負荷の分散が重要である。例えば、多段構成の資源配布サーバを設け、配布元であるマスタサーバから下位のサブサーバへ配布データを同期させ、各PCにマスタサーバではなくサブサーバへアクセスさせることにより、配布負荷の分散が行われている。
【0004】
このようなサーバ間での配布データの同期においては、対象となるフォルダおよびファイルの総数が非常に多くなることから、ファイルリストを作成することによる同期処理が行われている。例えば、同期処理を行うサーバ側とクライアント側の双方で作成したファイルリストを比較して差分ファイルリストを作成し、差分ファイルリストに基づき同期処理を行うクライアントサーバシステムが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−49647号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来技術には、管理対象とするフォルダおよびファイルの増加に伴い、差分となるフォルダおよびファイルの数とは関係なく、ファイルリストの作成時間が増大するという問題がある。
【0007】
すなわち、同期処理が必要な変更が、管理対象のデータの全体にわたる場合と、一部分に限られる場合では、同期処理として実行される処理の量、例えばファイルの追加、更新または削除の量は大きく異なる。それにもかかわらず、上記のクライアントサーバシステムでは、ファイルリストを同期処理の度に作成するので、同期処理が必要な変更が一部分のみである場合にファイルリストの作成に過大な処理時間が必要となる。
【0008】
開示の技術は、上記に鑑みてなされたものであって、ファイルリストの作成時間を短縮できる同期方法、同期プログラム及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本願の開示する同期方法は、異なるファイルシステム間における同期方法であって、コンピュータが、同期対象とするファイルについてファイルリストを予め作成する処理を実行する。さらに、前記コンピュータが、前記ファイルの更新に関するイベントを取得する処理を実行する。さらに、前記コンピュータが、前記イベントが取得された更新ファイルの数を算出する処理を実行する。さらに、前記コンピュータが、同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値を超えた場合に、前記ファイルリストを部分更新する処理を実行する。さらに、前記コンピュータが、同期対象とするファイルの総数に対する更新ファイルの数の割合が前記第1の閾値よりも大きい第2の閾値を超えた場合に、前記ファイルリストの部分更新ではなく、前記ファイルリストを再作成する処理を実行する。
【発明の効果】
【0010】
本願の開示する同期方法の一つの態様によれば、ファイルリストの作成時間を短縮できるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、実施例1に係るデータ配布システムのシステム構成を示す図である。
【図2】図2は、実施例1に係るメインサーバの機能的構成を示すブロック図である。
【図3】図3は、配下数リストの一例を示す図である。
【図4】図4は、ファイルリストの一例を示す図である。
【図5】図5は、ファイル更新イベントのスタック方法を説明するための図である。
【図6】図6は、ファイルリストの作成所要時間と更新ファイル数の関係を示すグラフの模式図である。
【図7】図7は、ファイルリストの作成所要時間と更新ファイル数の関係を示すグラフの模式図である。
【図8】図8は、実施例1に係るスタック処理の手順を示すフローチャートである。
【図9】図9は、実施例1に係る第1の監視処理の手順を示すフローチャートである。
【図10】図10は、実施例1に係る第2の監視処理の手順を示すフローチャートである。
【図11】図11は、実施例1及び実施例2に係る同期プログラムを実行するコンピュータの一例について説明するための図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する同期方法、同期プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例1】
【0013】
[システム構成]
まず、本実施例に係るデータ配布システムのシステム構成について説明する。図1は、実施例1に係るデータ配布システムのシステム構成を示す図である。図1に示すデータ配布システム1は、メインサーバ10及び複数のサブサーバ30A〜30C上で動作するオペレーティングシステムが提供するファイルシステム間で互いが保持するデータを一致させる同期処理を実行し、図示しない端末装置へのデータの配布を複数のサブサーバ30A〜30Cに分散して実行させるものである。
【0014】
図1に示すように、データ配布システム1には、メインサーバ10と、複数のサブサーバ30A〜30Cとが収容される。この図1の例では、サブサーバ30A〜30Cを3つ収容する場合を図示したが、任意の数のサブサーバが収容される場合に適用できる。
【0015】
これらメインサーバ10及びサブサーバ30A〜30Cの間は、ネットワーク3を介して相互に通信可能に接続される。かかるネットワーク3には、LAN(Local Area Network)を始め、VPN(Virtual Private Network)、インターネットなどの任意の通信網を採用できる。
【0016】
このうち、メインサーバ10は、図示しない端末装置へ配布させるデータをサブサーバ30に配布するサーバ装置である。一態様としては、メインサーバ10は、サブサーバ30との間でデータを同期するように設定された同期対象のフォルダに格納されるファイルリストを作成してサブサーバ30A〜30Cに送信する。ここで言う「同期対象のフォルダ」には、同期対象として設定されたフォルダをルートフォルダとしたディレクトリ全体、すなわちルートフォルダ及びその下位に所属するフォルダを含む。その後、メインサーバ10は、メインサーバ10及びサブサーバ30A〜30Cによって作成された2つのファイルリストの間で検出された差分のファイルをサブサーバ30A〜30Cに送信する。
【0017】
サブサーバ30A〜30Cは、自装置が保持するデータを図示しない端末装置に配布するサーバ装置である。一態様としては、サブサーバ30A〜30Cは、メインサーバ10との間でデータを同期するように設定された同期対象のフォルダに格納されるファイルリストを作成する。そして、サブサーバ30A〜30Cは、先に作成したファイルリストとメインサーバ10から転送されたファイルリストとの間で差分を検出する。その後、サブサーバ30A〜30Cは、2つのファイルリストの間で差分が検出されたファイルをメインサーバ10から取得する。これによって、サブサーバ30A〜30Cは、メインサーバ10によって保持されるデータの内容と自装置が保持するデータの内容とを一致させる。なお、以下では、サブサーバ30A〜サブサーバ30Cを区別なく総称する場合に「サブサーバ30」と記載する場合がある。
【0018】
[メインサーバの構成]
続いて、本実施例に係るメインサーバ10の機能的構成について説明する。図2は、実施例1に係るメインサーバ10の機能的構成を示すブロック図である。図2に示すように、メインサーバ10は、通信I/F(interface)部11と、記憶部12と、制御部13とを有する。なお、メインサーバ10は、図2に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【0019】
このうち、通信I/F部11は、他の装置、例えばサブサーバ30との間で通信制御を行うインタフェースである。一例としては、通信I/F部11は、メインサーバ10が作成したファイルリストをサブサーバ30へ送信する。他の一例としては、通信I/F部11は、メインサーバ10及びサブサーバ30によって作成されたファイルリストの間で差分が検出されたファイルの取得要求をサブサーバ30から受信する。かかる通信I/F部11の一態様としては、LANカードなどのネットワークインタフェースカード(NIC:Network Interface Card)やモデムを採用できる。
【0020】
記憶部12は、制御部13で実行されるOS(Operating System)やサブサーバ30との間でデータの同期処理を実行する同期プログラムなどの各種プログラムを記憶する。さらに、記憶部12は、制御部13で実行されるプログラムの実行に必要なデータの一例として、更新フォルダリスト12aと、配下数リスト12bと、ファイルリスト12cとを記憶する。
【0021】
このうち、更新フォルダリスト12aは、更新があったフォルダのリストデータである。一例としては、更新フォルダリスト12aには、同期対象のフォルダのうち更新があったファイルを配下に持つフォルダが後述のスタック部13bによって追加される。他の一例としては、更新フォルダリスト12aは、後述のファイルリスト12cが部分更新または再作成された場合に、後述の部分更新部13cまたは後述の作成部13eによってクリアされる。かかる更新フォルダリスト12aの一態様としては、更新があったフォルダの絶対パス、いわゆるフルパスを採用できる。
【0022】
配下数リスト12bは、各々のフォルダが配下に持つファイル数のリストデータである。一例としては、配下数リスト12bは、後述のファイルリスト12cが部分更新または再作成された場合に、後述の部分更新部13dまたは後述の作成部13eによって更新される。
【0023】
かかる配下数リスト12bの一態様としては、フォルダ及びフォルダ配下のファイル数が対応付けられたデータを採用できる。図3は、配下数リスト12bの一例を示す図である。図3では、図中のアルファベットの大文字はフォルダ名を表すこととする。図3の例では、フォルダAの配下には3つのファイルがあり、フォルダKの配下には2つのファイルがあり、フォルダBの配下には3つのファイルがあり、さらに、フォルダCの配下には7つのファイルがあることを示す。なお、ここでは、フォルダ配下のファイル数を対応付けて記憶する場合を例示したが、例えば、フォルダ間の階層関係、例えば上位のフォルダや下位のフォルダをさらに記憶することとしてもよい。
【0024】
ファイルリスト12cは、メインサーバ10が保持するファイルのリストデータである。一例としては、ファイルリスト12cは、記憶部12内にファイルリストが未登録の初期状態である場合に、後述の作成部13eによって新規作成される。他の一例としては、ファイルリスト12cは、同期対象とするファイルの総数に対する更新のあったファイルの数の割合が所定の閾値βを超える場合に、更新フォルダリスト12aにあるフォルダに関するリストが後述の部分更新部13dによって部分更新される。更なる一例としては、ファイルリスト12cは、同期対象とするファイルの総数に対する更新のあったファイルの数の割合が所定の閾値αを超える場合に、後述の作成部13eによって再作成される。
【0025】
かかるファイルリスト12cの一態様としては、ファイル、サイズ、属性およびハッシュ値が対応付けられたデータを採用できる。ここで言う「属性」は、ファイルのプロパティを指し、例えば、読み取り専用属性(Read-only file)、アーカイブ属性(Archive file)、システムファイル属性(System file)や隠しファイル属性(Hidden file)などが挙げられる。また、「ハッシュ値」は、ハッシュ関数を用いて生成される疑似乱数を指し、例えば、ファイルの同一性をチェックするために使用される。
【0026】
図4は、ファイルリスト12cの一例を示す図である。図4では、図中のアルファベットの大文字はフォルダ名を表し、図中のアルファベットの小文字はファイル名を表し、図中の「.xxx」は拡張子を表すこととする。図4の例では、ファイルa1、ファイルa2及びファイルa3は、いずれもDドライブのルートフォルダ配下のフォルダAに格納されたファイルであり、読み取り専用属性が付与されていることを示す。また、図4の例では、ファイルk1及びファイルk2は、いずれもフォルダA配下のフォルダKに格納されたファイルであり、ファイルk1にはアーカイブ属性が付与されており、ファイルk2には隠しファイル属性が付与されていることを示す。
【0027】
制御部13は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部13は、図2に示すように、OS実行部13aと、スタック部13bと、監視部13cと、部分更新部13dと、作成部13eと、同期処理部13fとを有する。
【0028】
このうち、OS実行部13aは、コンピュータシステム全体を管理する基本ソフトウェアであるOSの実行を制御する処理部である。一例としては、OS実行部13aは、OSのセキュリティパッチの配布やウィルス定義ファイルをダウンロードしたり、インストールしたりする。他の一例としては、OS実行部13aは、アプリケーションをインストールまたはアンインストールしたり、ユーザファイルを追加、削除または変更したりする。更なる一例としては、OS実行部13aは、図示しないユーザインタフェースを介して指定されたファイルの属性を変更したりする。このように、ファイルの追加、削除、更新や属性の変更などが実行された場合には、OS実行部13aは、更新があったファイルのフルパス及び更新日時を含むファイル更新イベントを後述のスタック部13bへ通知する。なお、上記のファイル更新イベントの通知は、OSによって提供されるAPI(Application Program Interface)、例えば「FindFirstChangeNotification」などを使用することによって実現できる。
【0029】
スタック部13bは、更新があったフォルダを更新フォルダリスト12aへスタックする処理部である。一態様としては、スタック部13bは、OS実行部13aからファイル更新イベントが通知された場合に、当該ファイルを配下に持つフォルダが更新フォルダリスト12aに登録されているか否かを判定する。このとき、スタック部13bは、更新フォルダリスト12aに登録されていない場合に、当該フォルダを更新フォルダリスト12aにスタックする。
【0030】
図5を用いて、ファイル更新イベントのスタック方法について説明する。図5は、ファイル更新イベントのスタック方法を説明するための図である。図5では、図中の左側に示すファイルのフルパスを含むファイル更新イベントが上から順番に通知される場合を想定する。さらに、図5では、ファイル更新イベントが始めに通知される段階では更新フォルダリスト12aにフォルダが未登録である場合を想定する。
【0031】
図5に示すように、ファイルのフルパス「D:\A\a1.xxx」を含むファイル更新イベントが通知されると、スタック部13bは、ファイルa1のフルパスのうち末尾のファイル名「a1.xxx」を削除する。このように末尾のファイル名を削除することによって、ファイル更新イベントが通知されたファイルa1を配下に持つフォルダAのフルパス「D:\A」に加工される。その上で、スタック部13bは、フォルダAが更新フォルダリスト12aに登録されているか否かを判定する。この場合には、更新フォルダリスト12aにフォルダが未登録であるので、スタック部13bは、フォルダAのフルパス「D:\A」を更新フォルダリスト12aに登録する。
【0032】
このように、フォルダAのフルパス「D:\A」が登録された後には、フォルダAに格納されたファイルa1、ファイルa2及びファイルa3のファイル更新イベントが通知されたとしても、更新フォルダリスト12aへの登録は実行しない。すなわち、図5の例では、更新フォルダリスト12aにフォルダAのフルパスを登録した後に、ファイルa2のフルパス「D:\A\a2.xxx」及びファイルa3のフルパス「D:\A\a3.xxx」が通知される。これらは、いずれもフォルダAに格納されたファイルであるので、更新フォルダリスト12aへの登録は実行されない。
【0033】
その後、ファイルのフルパス「D:\A\K\k1.xxx」を含むファイル更新イベントが通知されると、スタック部13bは、ファイルk1のフルパスのうち末尾のファイル名「k1.xxx」を削除する。このように末尾のファイル名を削除することによって、ファイル更新イベントが通知されたファイルk1を配下に持つフォルダKのフルパス「D:\A\K」に加工される。その上で、スタック部13bは、フォルダKが更新フォルダリスト12aに登録されているか否かを判定する。この場合には、更新フォルダリスト12aにフォルダKが未登録であるので、スタック部13bは、フォルダKのフルパス「D:\A\K」を更新フォルダリスト12aに登録する。その後、ファイルk2のフルパス「D:\A\K\a2.xxx」が通知されるが、これはフォルダKに格納されたファイルであるので、更新フォルダリスト12aへの登録は実行されない。
【0034】
さらに、ファイルのフルパス「D:\B\b1.xxx」を含むファイル更新イベントが通知されると、スタック部13bは、ファイルb1のフルパスのうち末尾のファイル名「b1.xxx」を削除する。このように末尾のファイル名を削除することによって、ファイル更新イベントが通知されたファイルb1を配下に持つフォルダBのフルパス「D:\B」に加工される。その上で、スタック部13bは、フォルダBが更新フォルダリスト12aに登録されているか否かを判定する。この場合には、更新フォルダリスト12aにフォルダBが未登録であるので、スタック部13bは、フォルダKのフルパス「D:\B」を更新フォルダリスト12aに登録する。その後、ファイルb2のフルパス「D:\B\b2.xxx」が通知されるが、これはフォルダBに格納されたファイルであるので、更新フォルダリスト12aへの登録は実行されない。
【0035】
このように、スタック部13bは、OS実行部13aから通知されるファイル更新イベントをファイル単位でリスト登録するのではなく、フォルダ単位でリスト登録する。このため、同じフォルダに格納されたファイルが更新された場合にそのファイルを改めてリスト登録せずともよくなるので、ファイル更新イベントをスタックする処理の負荷を軽減できる。
【0036】
監視部13cは、同期対象とするファイルの総数に対する更新のあったファイルの数の割合を監視する処理部である。この監視部13cは、第1の周期および第2の周期の2つの異なる周期で上記の割合を監視する。なお、以下では、同期対象とするファイルの総数のことを「ファイル総数」と記載し、更新のあったファイルの数のことを「更新ファイル数」と記載する場合がある。
【0037】
このうち、第1の周期は、ファイルリスト12cを部分更新するよりも再作成した方がコストパフォーマンスがよくなってしまう前の段階でファイルリスト12cの部分更新を実行するために設定される監視時間である。かかる第1の周期には、ファイル更新イベントが通知されることを契機に監視を実行することもできるが、ファイル更新イベントが短期間に集中して通知された場合には監視の処理負荷が高くなる場合があるので、例えば、10秒周期などの周期が設定される。一方、第2の周期は、定期または定時にファイルリスト12cを部分更新した方がよいか、あるいは再作成した方がよいのかを判定するために設定される監視時間であり、第1の周期よりも長い周期、例えば1時間などの周期が設定される。
【0038】
例えば、監視部13cは、前回に監視を実行してから第1の周期が経過した場合に、ファイルリスト12cを部分更新するか否かを判定する第1の監視処理を実行する。これを説明すると、まず、監視部13cは、更新フォルダリスト12aにスタックがあるか否かを判定する。このとき、監視部13cは、更新フォルダリスト12aにスタックがある場合に、配下数リスト12bに搭載されているファイル数を合計することによってファイル総数f1を算出する。続いて、監視部13cは、配下数リスト12bに搭載されているファイル数のうち、更新フォルダリスト12aにスタックされたフォルダが配下に持つファイル数を合計することによって更新ファイル数f2を算出する。その上で、監視部13cは、ファイル総数f1に対する更新ファイル数f2の割合、すなわちf2/f1が所定の閾値βを超えるか否かを判定する。このとき、ファイル総数f1に対する更新ファイル数f2の割合が閾値βを超える場合には、後述の部分更新部13dによってファイルリスト12cの部分更新が実行される。
【0039】
また、監視部13cは、前回に監視を実行してから第2の周期が経過した場合、図示しないユーザインタフェースを介して同期指示を受け付けた場合、あるいはコンソール等の外部装置から同期指示を受け付けた場合などに、次のような処理を起動する。すなわち、監視部13cは、ファイルリスト12cを部分更新するか、あるいは再作成するかを判定する第2の監視処理を実行する。これを説明すると、監視部13cは、上記の第1の監視処理と同様に、更新フォルダリスト12aにスタックがある場合に、ファイル総数f1及び更新ファイル数f2を算出する。その上で、監視部13cは、ファイル総数f1に対する更新ファイル数f2の割合、すなわちf2/f1が所定の閾値βを超えるか否かを判定する。このとき、ファイル総数f1に対する更新ファイル数f2の割合が閾値αを超える場合には、後述の作成部13eによってファイルリスト12cが再作成される。一方、ファイル総数f1に対する更新ファイル数f2の割合が閾値αを超えない場合には、後述の部分更新部13dによってファイルリスト12cの部分更新が実行される。
【0040】
このように、監視部13cは、配下数リスト12bに搭載されているファイル数のうち、更新フォルダリスト12aにスタックされたフォルダが配下に持つファイル数を合計することによって最大の更新ファイル数を見積もる。このため、ファイル更新イベントをファイル単位でスタックせずとも、更新があったファイルが更新ファイル数から洩れることなく、更新ファイル数を求めることができる。
【0041】
部分更新部13dは、ファイルリスト12cを部分更新する処理部である。一態様としては、部分更新部13dは、ファイル総数に対する更新ファイル数の割合が第1の監視処理にて閾値βを超えた場合、あるいは第2の監視処理にて閾値αを超えなかった場合に、ファイルリスト12cを部分更新する。
【0042】
これを説明すると、部分更新部13dは、更新フォルダリスト12aにスタックされたフォルダのフルパスを指定して当該フォルダ配下のファイルの取得要求をOS実行部13aに通知する。そして、部分更新部13dは、OS実行部13aからフォルダ配下のファイルを取得すると、所定のハッシュ関数を用いてファイルのハッシュ値を算出する。その後、部分更新部13dは、ファイルリスト12cに登録されたファイルのうち更新フォルダリスト12aにスタックされたフォルダの配下にあるファイルを削除する。その上で、部分更新部13dは、OS実行部13aから取得したファイルのフルパス、サイズ、属性およびハッシュ値を対応付けたデータをファイルリスト12cに追加する。このように、更新フォルダリスト12aにスタックされたフォルダ配下のファイルに関するリストがファイルリスト12cにマージされる。これによって、ファイルリスト12cが部分更新されることになる。
【0043】
ここで、上記の「閾値β」は、システムリソースの空き状況、プロセッサの性能またはディスクのアクセス性能のうち少なくとも1つを用いて設定される。すなわち、上記の閾値βの値を小さく設定すると、ファイルリスト12cの部分更新が実行される頻度も高くなる。このように、ファイルリスト12cが部分更新される頻度を過度に高くすると、メインサーバ10のシステムリソースを定常的に圧迫する上、定期または定時に実行される第2の監視処理を実行する意義が薄くなる。このことから、第2の監視処理に用いられる閾値αよりも低い値であってメインサーバ10のCPUやメモリの使用率が低くなるほど値を低く、ディスクへのアクセス速度が高いほど値が低くなるように定められた閾値βの算出アルゴリズムによって算出された閾値βが監視部13cの第1の監視処理に用いられる。
【0044】
作成部13eは、ファイルリスト12cを作成する処理部である。一態様としては、作成部13eは、記憶部12にファイルリスト12cが未登録である場合に、ファイルリスト12cを新規作成する。他の一態様としては、作成部13eは、ファイル総数に対する更新ファイル数の割合が閾値αを超えた場合に、ファイルリスト12cを再作成する。なお、ファイルリスト12cの新規作成および再作成は、以下に説明するように、同様の処理が実行される。
【0045】
これを説明すると、作成部13eは、同期対象のフォルダのうち最上層に位置するルートフォルダを指定してルートフォルダ及びその下位のフォルダに格納された全てのファイルの取得要求をOS実行部13aに通知する。このように、作成部13eは、OSによって提供されるフォルダ監視用のAPIを用いて、OS実行部13aから同期対象とする全てのファイルを取得する。その後、作成部13eは、OS実行部13aから取得した同期対象のファイルごとに、所定のハッシュ関数を用いてファイルのハッシュ値を算出する。その上で、作成部13eは、OS実行部13aから取得した同期対象のファイルごとにフルパス、サイズ、属性およびハッシュ値を対応付けることによってファイルリスト12cに作成する。そして、作成部13eは、記憶部12にファイルリスト12cが未登録である場合には、作成したファイルリスト12cを記憶部12に登録する。一方、作成部13eは、記憶部12にファイルリスト12cが既に登録されている場合には、今回再作成したファイルリスト12cを前回作成されていたファイルリストに上書き保存する。
【0046】
ここで、上記の「閾値α」は、同期対象とするファイルの総数、1つのファイルにつき部分更新をファイルリスト12cにマージするマージ所要時間または1つのファイルにつきハッシュ値の算出にかかる算出所要時間のうち少なくとも1つを用いて設定される。
【0047】
図6及び図7は、ファイルリスト12cの作成所要時間と更新ファイル数の関係を示すグラフの模式図である。図6及び図7では、図中のグラフの縦軸がファイルリスト12cの作成所要時間を指し、また、図中のグラフの横軸が更新ファイル数を指す。また、図6に示す一点鎖線60は、ファイルリスト12cの再作成所要時間のグラフを示す。さらに、図6に示す実線61は、ファイルリスト12cの部分更新所要時間のグラフを示す。また、図7に示す一点鎖線70は、ハッシュ値の算出所要時間を含む再作成所要時間のグラフを示す。また、図7に示す二点鎖線71は、ハッシュ値の算出所要時間を含む部分更新所要時間のグラフを示す。
【0048】
図6に示すように、ファイルリスト12cの再作成は、同期対象とするファイル総数にしか依存しない。よって、再作成所要時間のグラフ60は、更新ファイル数の多寡にかかわらず、所要時間は常に一定である。一方、部分更新所要時間のグラフ61は、更新ファイル数が増加するほど所要時間が増加する。
【0049】
そして、ファイルリスト12cを再作成する場合には、更新フォルダリスト12aに登録されているフォルダ配下のファイルを対象に、前回作成されていたリストデータを削除した上で今回作成したリストデータがマージされる。このため、ファイルリスト12cを部分更新する場合には、更新フォルダリスト12aに登録されているフォルダ配下のファイルのリストデータを削除する分、ファイルリスト12cを再作成する場合よりもファイル1つ当たりの所要時間が長くなる。それゆえ、更新ファイル数によっては、部分更新所要時間のグラフ61が再作成所要時間のグラフ60よりも上回る場合がある。
【0050】
このことから、ファイル1つ当たりのマージ所要時間から再作成所要時間のグラフ60及び部分更新所要時間のグラフ61の交点となる更新ファイル数を求めた上でその交点の更新ファイル数fα1と同期対象とするファイルの総数から閾値αを算出することができる。かかる閾値αを採用した場合には、部分更新所要時間のグラフ61が再作成所要時間のグラフ60と交わるまでは部分更新部13dにファイルリスト12cを部分更新させることができる。さらに、部分更新所要時間のグラフ61が再作成所要時間のグラフ60を上回る場合には作成部13eにファイルリスト12cを再作成させることができる。したがって、閾値αを採用すれば、ファイルリスト12cの部分更新または再作成を適応制御できる。
【0051】
さらに、ファイルの同一性をチェックするためにファイルのハッシュ値をファイルリスト12cに含める場合には、ハッシュ値の算出所要時間をパラメータに含めて閾値αを設定するのが好ましい。なぜなら、ハッシュ値の算出所要時間は、マージ所要時間と比較して非常に長いので、図7に示すように、ハッシュ値を算出しない場合の部分更新所要時間のグラフ60と比べてハッシュ値の算出所要時間を含む部分更新所要時間のグラフ71の傾きが小さくなるからである。これに伴って、再作成所要時間のグラフ70とハッシュ値の算出所要時間を含む部分更新所要時間のグラフ71との交点も右側にシフトする。
【0052】
これらのことから、ファイルのハッシュ値を算出する場合には、ファイル1つ当たりのマージ所要時間及びファイル1つ当たりのハッシュ値の算出所要時間から2つのグラフの交点における更新ファイル数fα2を算出する。その上で、更新ファイル数fα2と同期対象とするファイルの総数から閾値αを算出するのが好ましい。かかる閾値αを採用した場合には、ファイルリスト12cにファイルのハッシュ値を含める場合にも、ファイルリスト12cの部分更新または再作成を適応制御できる。
【0053】
同期処理部13fは、複数のサブサーバ30A〜30Cの間で互いが保持するデータを一致させる同期処理を実行する処理部である。一態様としては、同期処理部13fは、第2の監視処理が実行された場合に、部分更新部13dによって部分更新されたファイルリスト12cまたは作成部13eによって再作成されたファイルリスト12cをサブサーバ30へ転送する。その後、同期処理部13fは、メインサーバ10及びサブサーバ30A〜30Cによって作成された2つのファイルリストの間で検出された差分のファイルをサブサーバ30へ送信する。かかる差分のファイルがサブサーバ30に格納されることによって、メインサーバ10及びサブサーバ30の間で両者が保持するデータの内容が一致することになる。
【0054】
[処理の流れ]
次に、本実施例に係るメインサーバ10の処理の流れについて説明する。なお、ここでは、(1)スタック処理を説明した後に(2)第1の監視処理を説明し、最後に、(3)第2の監視処理を説明することとする。
【0055】
(1)スタック処理
図8は、実施例1に係るスタック処理の手順を示すフローチャートである。このスタック処理は、メインサーバ10の電源がON状態である限り、繰り返し実行される処理である。
【0056】
図8に示すように、OS実行部13aからファイル更新イベントが通知された場合(ステップS101肯定)に、スタック部13bは、次のような処理を実行する。すなわち、スタック部13bは、当該ファイルのフルパスのうち末尾のファイル名を削除することによってファイル更新イベントが通知されたファイルを配下に持つフォルダのフルパスを特定する(ステップS102)。
【0057】
その後、スタック部13bは、当該ファイルを配下に持つフォルダが更新フォルダリスト12aにスタック済みであるか否かを判定する(ステップS103)。このとき、フォルダが更新フォルダリスト12aにスタックされていない場合(ステップS103否定)に、スタック部13bは、当該フォルダを更新フォルダリスト12aにスタックし(ステップS104)、上記のステップS101に戻る。
【0058】
一方、フォルダが更新フォルダリスト12aにスタック済みである場合(ステップS103肯定)には、更新フォルダリスト12aへのスタックを実行せずに、上記のステップS101に戻る。
【0059】
(2)第1の監視処理
図9は、実施例1に係る第1の監視処理の手順を示すフローチャートである。この第1の監視処理は、前回に第1の監視処理を実行してから第1の周期、例えば10秒間が経過した場合に、処理が起動される。
【0060】
図9に示すように、まず、監視部13cは、更新フォルダリスト12aにスタックがあるか否かを判定する(ステップS201)。なお、更新フォルダリスト12aにスタックがない場合(ステップS201否定)には、ファイルリスト12cを部分更新または再作成する必要がないので、そのまま処理を終了する。
【0061】
このとき、更新フォルダリスト12aにスタックがある場合(ステップS201肯定)に、監視部13cは、配下数リスト12bに搭載されているファイル数を合計することによってファイル総数f1を算出する(ステップS202)。
【0062】
続いて、監視部13cは、配下数リスト12bに搭載されているファイル数のうち、更新フォルダリスト12aにスタックされたフォルダが配下に持つファイル数を合計することによって更新ファイル数f2を算出する(ステップS203)。
【0063】
その上で、監視部13cは、ファイル総数f1に対する更新ファイル数f2の割合、すなわちf2/f1が所定の閾値βを超えるか否かを判定する(ステップS204)。
【0064】
ここで、ファイル総数f1に対する更新ファイル数f2の割合が閾値βを超える場合(ステップS204肯定)には、部分更新部13dは、更新フォルダリスト12aにスタックされたフォルダを対象に、ファイルリスト12cを部分更新する(ステップS205)。
【0065】
その後、部分更新部13dは、配下数リスト12bのうちファイルリスト12cを部分更新したフォルダの配下数を部分更新後のファイル数に更新する(ステップS206)。さらに、部分更新部13dは、更新フォルダリスト12aをクリアし(ステップS207)、処理を終了する。
【0066】
なお、ファイル総数f1に対する更新ファイル数f2の割合が閾値βを超えない場合(ステップS204否定)には、ファイルリスト12cを部分更新する必要はないので、そのまま処理を終了する。
【0067】
(3)第2の監視処理
図10は、実施例1に係る第2の監視処理の手順を示すフローチャートである。この第2の監視処理は、前回に第2の監視処理を実行してから第2の周期、例えば1時間が経過した場合、図示しないユーザインタフェースを介して同期指示を受け付けた場合やコンソール等の外部装置から同期指示を受け付けた場合などに、処理が起動される。
【0068】
図10に示すように、まず、監視部13cは、更新フォルダリスト12aにスタックがあるか否かを判定する(ステップS301)。なお、更新フォルダリスト12aにスタックがない場合(ステップS301否定)には、ファイルリスト12cを部分更新または再作成する必要がないので、そのまま処理を終了する。
【0069】
このとき、更新フォルダリスト12aにスタックがある場合(ステップS301肯定)に、監視部13cは、配下数リスト12bに搭載されているファイル数を合計することによってファイル総数f1を算出する(ステップS302)。
【0070】
続いて、監視部13cは、配下数リスト12bに搭載されているファイル数のうち、更新フォルダリスト12aにスタックされたフォルダが配下に持つファイル数を合計することによって更新ファイル数f2を算出する(ステップS303)。
【0071】
その上で、監視部13cは、ファイル総数f1に対する更新ファイル数f2の割合、すなわちf2/f1が所定の閾値αを超えるか否かを判定する(ステップS304)。
【0072】
ここで、ファイル総数f1に対する更新ファイル数f2の割合が閾値αを超える場合(ステップS304肯定)には、作成部13eは、ファイルリスト12cを部分更新した方が時間がかかるので、ファイルリスト12cを再作成する(ステップS305)。
【0073】
その後、作成部13eは、配下数リスト12bに登録された各フォルダの配下数を再作成後のファイル数に更新する(ステップS306)。さらに、作成部13eは、更新フォルダリスト12aをクリアし(ステップS307)、処理を終了する。
【0074】
一方、ファイル総数f1に対する更新ファイル数f2の割合が閾値αを超えない場合(ステップS304否定)には、部分更新部13dは、更新フォルダリスト12aにスタックされたフォルダを対象に、ファイルリスト12cを部分更新する(ステップS308)。
【0075】
その後、部分更新部13dは、配下数リスト12bのうちファイルリスト12cを部分更新したフォルダの配下数を部分更新後のファイル数に更新する(ステップS306)。さらに、部分更新部13dは、更新フォルダリスト12aをクリアし(ステップS307)、処理を終了する。
【0076】
[実施例1の効果]
上述してきたように、本実施例に係るメインサーバ10は、サブサーバ30との間でファイルリストを用いて同期処理を行う場合に、ファイル総数に対する更新ファイル数の割合に応じてファイルリストの部分更新または再作成を適応制御する。例えば、本実施例に係るメインサーバ10では、同期対象とするファイルの更新がファイルリスト12cの一部に限られる場合にはファイルリスト12cを部分更新する一方で、ファイルリスト12cの全体にわたる場合にはファイルリスト12cを再作成できる。したがって、本実施例に係るメインサーバ10によれば、ファイルリストの作成時間を短縮できる。
【実施例2】
【0077】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【0078】
[適用範囲]
例えば、上記の実施例1では、メインサーバ10のファイルリストを作成する場合を例示したが、開示の装置はこれに限定されるものではない。例えば、図2に示したスタック部13b、監視部13c、部分更新部13d及び作成部13eの各機能部をサブサーバ30に実装することによって、サブサーバ30がファイルリストを作成する場合にも本発明を適用できる。
【0079】
また、上記の実施例1では、メインサーバ10及び複数のサブサーバ30間におけるファイルの同期方法について説明したが、必ずしも異なるコンピュータが同期対象とするファイルを保持している必要はない。すなわち、開示の装置は、複数のファイルシステム間でファイルを同期する場合、例えば1つのコンピュータに複数または異なる複数のファイルシステムが搭載される場合に同様に適用できる。例えば、開示の装置は、複数の仮想マシンを搭載するコンピュータが有するファイルシステム間でファイルを同期する場合に適用することもできるし、また、ディスクサーバが有するファイルシステム間でファイルを同期する場合に適用することもできる。
【0080】
また、上記の実施例1では、同期処理に用いるファイルリストを作成する場合について例示したが、開示の装置はこれに限定されず、バックアップデータのファイルリストを作成するなど他の処理を高速化する場合にも同様に適用することができる。
【0081】
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、スタック部13b、監視部13c、部分更新部13dまたは作成部13eをメインサーバ10の外部装置としてネットワーク経由で接続するようにしてもよい。また、スタック部13b、監視部13c、部分更新部13dまたは作成部13eを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記のメインサーバ10の機能を実現するようにしてもよい。
【0082】
[同期プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図11を用いて、上記の実施例と同様の機能を有する同期プログラムを実行するコンピュータの一例について説明する。
【0083】
図11は、実施例1及び実施例2に係る同期プログラムを実行するコンピュータの一例について説明するための図である。図11に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180と有する。これら110〜180の各部はバス140を介して接続される。
【0084】
HDD170には、図11に示すように、上記の実施例1で示したスタック部13b、監視部13c、部分更新部13d及び作成部13eと同様の機能を発揮する同期プログラム170aが予め記憶される。この同期プログラム170aについては、図2に示した各々のスタック部13b、監視部13c、部分更新部13d及び作成部13eの各構成要素と同様、適宜統合又は分離しても良い。すなわち、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
【0085】
そして、CPU150が、同期プログラム170aをHDD170から読み出してRAM180に展開する。これによって、図11に示すように、同期プログラム170aは、同期プロセス180aとして機能する。この同期プロセス180aは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、同期プロセス180aは、図2に示したスタック部13b、監視部13c、部分更新部13d及び作成部13eにて実行される処理、例えば図8〜図10に示す処理を含む。また、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【0086】
なお、上記の同期プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【0087】
1 データ配布システム
10 メインサーバ
11 通信I/F部
12 記憶部
12a 更新フォルダリスト
12b 配下数リスト
12c ファイルリスト
13 制御部
13a OS実行部
13b スタック部
13c 監視部
13d 部分更新部
13e 作成部
13f 同期処理部
30A,30B,30C サブサーバ

【特許請求の範囲】
【請求項1】
異なるファイルシステム間における同期方法であって、
コンピュータが、
同期対象とするファイルについてファイルリストを予め作成し、
前記ファイルの更新に関するイベントを取得し、
前記イベントが取得された更新ファイルの数を算出し、
同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値を超えた場合に、前記ファイルリストを部分更新し、
同期対象とするファイルの総数に対する更新ファイルの数の割合が前記第1の閾値よりも大きい第2の閾値を超えた場合に、前記ファイルリストの部分更新ではなく、前記ファイルリストを再作成する
処理を実行することを特徴とする同期方法。
【請求項2】
前記イベントを取得する処理として、
前記イベントが取得されたファイルを配下に持つフォルダが、更新があったフォルダを記憶する更新フォルダ記憶部に記憶されていない場合に、当該フォルダを前記更新フォルダ記憶部に登録する処理を実行し、
前記更新ファイルの数を算出する処理として、
前記更新フォルダ記憶部に記憶されたフォルダが配下に持つファイルの数に基づいて最大更新ファイル数を見積もり、
前記ファイルリストを部分更新する処理として、
同期対象とするファイルの総数に対する最大更新ファイルの数の割合が第1の閾値を超えた場合に、前記更新フォルダ記憶部に記憶されたフォルダを対象に前記ファイルリストをフォルダ単位で更新する処理を実行することを特徴とする請求項1に記載の同期方法。
【請求項3】
前記第2の閾値は、同期対象とするファイルの総数、1つのファイルにつき部分更新を前記ファイルリストにマージするマージ所要時間または1つのファイルにつきハッシュ値の算出にかかる算出所要時間のうち少なくとも1つを用いて設定された設定値であることを特徴とする請求項1または2に記載の同期方法。
【請求項4】
前記第1の閾値は、システムリソースの空き状況、プロセッサの性能またはディスクのアクセス性能のうち少なくとも1つを用いて設定された設定値であることを特徴とする請求項1、2または3に記載の同期方法。
【請求項5】
異なるファイルシステム間における同期方法を実行するための同期プログラムであって、
コンピュータに、
同期対象とするファイルについてファイルリストを予め作成し、
前記ファイルの更新に関するイベントを取得し、
前記イベントが取得された更新ファイルの数を算出し、
同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値を超えた場合に、前記ファイルリストを部分更新し、
同期対象とするファイルの総数に対する更新ファイルの数の割合が前記第1の閾値よりも大きい第2の閾値を超えた場合に、前記ファイルリストの部分更新ではなく、前記ファイルリストを再作成する
処理を実行させることを特徴とする同期プログラム。
【請求項6】
異なるファイルシステム間でファイルの同期処理を行う情報処理装置であって、
同期対象とするファイルについてファイルリストを予め作成する作成部と
前記ファイルの更新に関するイベントを取得する取得部と、
前記イベントが取得された更新ファイルの数を算出する算出部と、
同期対象とするファイルの総数に対する更新ファイルの数の割合が第1の閾値を超えた場合に、前記ファイルリストを部分更新する部分更新部と、
同期対象とするファイルの総数に対する更新ファイルの数の割合が前記第1の閾値よりも大きい第2の閾値を超えた場合に、前記ファイルリストの部分更新ではなく、前記ファイルリストを再作成する再作成部と
を有することを特徴とする情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−97566(P2013−97566A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−239644(P2011−239644)
【出願日】平成23年10月31日(2011.10.31)
【出願人】(000005223)富士通株式会社 (25,993)