(57)【要約】【課題】従来のキャッシュ管理方法では、ファイルのメタデータをキャッシュサーバから別のキャッシュサーバに移動する場合に、いずれかの端末がファイルにアクセス中である場合、移動することができないことである。【解決手段】ファイルサーバとキャッシュサーバとキャッシュ管理サーバとを備える計算機システムであって、キャッシュ管理サーバは、ファイルのキャッシュデータの管理権限を表す権限情報を管理し、第１のキャッシュサーバは、ファイルのロック状態を第３のキャッシュサーバに移動させるようにロック管理情報を更新し、第３のキャッシュサーバはファイルのロック状態を第３のキャッシュサーバに移動させるように第３のロック管理情報を更新し、キャッシュ管理サーバは、第１のファイルのキャッシュデータの管理権限を第１のキャッシュサーバから第３のキャッシュサーバに変更するように権限情報を更新する。【選択図】図１
2011187026.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリとを備え、複数のファイルを格納するファイルサーバと、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムであって、
前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータの少なくともいずれか一方を含み、
前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、
前記キャッシュサーバは、第１のキャッシュサーバ、第２のキャッシュサーバ及び第３のキャッシュサーバを含み、
前記第１のキャッシュサーバは、当該第１のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第１のロック管理情報を備え、
前記第２のキャッシュサーバは、当該第２のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第２のロック管理情報を備え、
前記第３のキャッシュサーバは、当該第３のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第３のロック管理情報を備え、
前記ファイルは、第１のファイルを含み、
前記第１のキャッシュサーバは、当該第１のキャッシュサーバに接続されるクライアント端末から前記第１のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得し、
前記取得された権限情報を参照して、前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有するか否かを判定し、
前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第１のファイルに対する処理命令を実行し、
前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第１のファイルの前記管理権限を有する前記第２のキャッシュサーバに、前記第１のファイルに対する処理命令を送信して、前記第２のキャッシュサーバから前記第１のファイルに対する処理命令の実行結果を受信し、
前記キャッシュ管理サーバは、前記第１のキャッシュサーバが有する、前記第１のファイルのキャッシュデータの前記管理権限を、前記第３のキャッシュサーバに変更する更新命令を、前記第１のキャッシュサーバに送信し、
前記第１のキャッシュサーバは、前記更新命令を受信した後、前記更新命令を前記第３のキャッシュサーバに送信し、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第１のロック管理情報を更新する第１の更新処理を実行し、
前記第３のキャッシュサーバは、前記更新命令を受信した後、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第３のロック管理情報を更新する第２の更新処理を実行し、
前記キャッシュ管理サーバは、前記第１のファイルのキャッシュデータの管理権限を前記第１のキャッシュサーバから前記第３のキャッシュサーバに変更するように前記権限情報を更新することを特徴とする計算機システム。
【請求項２】
前記第１の更新処理では、
前記第１のロック管理情報から前記第１のファイルのロック状態に関する情報を抽出して、
前記抽出された第１のファイルのロック状態に関する情報を削除するように前記第１のロック管理情報を更新し、
前記抽出された第１のファイルのロック状態に関する情報を前記第３のキャッシュサーバに送信し、
前記更新命令に対する応答を前記キャッシュ管理サーバに送信し、
前記第２の更新処理では、前記第１のキャッシュサーバから送信された第１のファイルのロック状態に関する情報を追加するように前記第３のロック管理情報を更新し、
前記権限情報を更新する処理は、前記第１のキャッシュサーバから送信された前記更新命令に対する応答を受信した後に実行することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第１の更新処理では、前記更新命令に対する応答を前記キャッシュ管理サーバに送信する前又は後に、前記第１のファイルのキャッシュデータを前記ファイルサーバに送信することを特徴とする請求項２に記載の計算機システム。
【請求項４】
前記第１の更新処理では、前記更新命令を前記第３のキャッシュサーバに送信した後に、前記第１のファイルのキャッシュデータを前記第３のキャッシュサーバに送信することを特徴とする請求項２に記載の計算機システム。
【請求項５】
前記第１のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第１の受付管理情報を備え、
前記第２のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第２の受付管理情報を備え、
前記第３のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第３の受付管理情報を備え、
前記第１の更新処理では、
前記第１のファイルに関する情報を追加するように前記第１の受付管理情報を更新し、
その後、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第１の受付管理情報を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対するアクセスが前記第１のファイルに対する処理命令か否かを判定し、
前記端末または前記他のキャッシュサーバからのファイルに対するアクセスが前記第１のファイルに対する処理命令であると判定された場合に前記第１のファイルに対する処理命令を一時的に蓄積し、
前記抽出された第１のファイルのロック状態に関する情報が前記第３のキャッシュサーバに移動されるように前記第１のロック管理情報が更新された後、前記第２のキャッシュサーバに前記第１のファイルに対するアクセスの受け付けを開始させるための受付開始命令を送信し、
前記受付開始命令が送信された後に、前記第１のファイルに関する情報を削除するように前記第１の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第１のファイルに対する処理命令を実行し、
前記第２の更新処理では、
前記第１のキャッシュサーバから送信された前記更新命令を受信した後に、前記第１のファイル関する情報を追加するように前記第３の受付管理情報を更新し、
前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第３の受付管理表を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対する処理要求が前記第１のファイルに対する処理要求か否かを判定し、
前記端末または前記他のキャッシュサーバからのファイルに対する処理命令が前記第１のファイルに対する処理命令であると判定された場合に、前記第１のファイルに対する処理要求を一時的に蓄積し、
前記受付開始命令を受信した後に、前記第１のファイルに関する情報を削除するように前記第３の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第１のファイルに対する処理命令を実行することを特徴とする請求項２に記載の計算機システム。
【請求項６】
前記権限情報は、ファイルシステムのサブディレクトリと、前記キャッシュサーバとを対応させた情報を格納する権限管理表であり、
前記ロック管理情報は、前記ファイルの識別子と、前記ファイルのロックを取得したユーザ名と、前記取得されたロックの識別情報とを格納するロック管理表であり、
前記受付管理情報は、前記ファイルシステムのサブディレクトリを格納する受付管理表であり、
前記キャッシュサーバは、前記権限管理表に示された前記サブディレクトリ配下に格納される複数のファイルについての前記管理権限を有し、
前記キャッシュサーバは、前記受付管理表に示された前記サブディレクトリ配下に格納される複数のファイルに対する処理命令を一時的に蓄積することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記キャッシュ管理サーバは、前記ファイル毎に前記処理命令の実行時のアクセス数を算出し、
前記キャッシュ管理サーバに入力された前記処理命令の実行時のアクセス回数の条件に基づいて、前記更新命令を前記第１のキャッシュサーバに送信することを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記キャッシュ管理サーバは、
前記計算機システムの時間を管理し、
前記計算機システムの時間に基づいて前記管理権限を保持する前記キャッシュサーバを変更するための時刻情報を備え、
前記時刻情報において示された前記計算機システムの時間時間が経過した後に、前記更新命令を前記第１のキャッシュサーバに送信することを特徴とする請求項１に記載の計算機システム。
【請求項９】
第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリとを備え、複数のファイルを格納するファイルサーバと、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムにおけるキャッシュ制御方法であって、
前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータ及び前記ファイルを特定可能なデータ、の少なくとも一方を含み、
前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、
前記キャッシュサーバは、第１のキャッシュサーバ、第２のキャッシュサーバ及び第３のキャッシュサーバを含み、
前記第１のキャッシュサーバは、当該第１のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第１のロック管理情報を備え、
前記第２のキャッシュサーバは、当該第２のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第２のロック管理情報を備え、
前記第３のキャッシュサーバは、当該第３のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第３のロック管理情報を備え、
前記ファイルは、第１のファイルを含み、
前記方法は、
前記第１のキャッシュサーバが、当該第１のキャッシュサーバに接続されるクライアント端末から前記第１のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得する第１のステップと、
前記第１のキャッシュサーバが、前記取得された権限情報を参照して、前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有するか否かを判定する第２のステップと、
前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第１のキャッシュサーバが、前記第１のファイルに対する処理命令を実行する第３のステップと、
前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第１のファイルの前記管理権限を有する前記第２のキャッシュサーバに、前記第１のファイルに対する処理命令を送信して、前記第２のキャッシュサーバから前記第１のファイルに対する処理命令の実行結果を受信する第４のステップと、
前記キャッシュ管理サーバが、前記第１のキャッシュサーバが有する、前記第１のファイルのキャッシュデータの前記管理権限を、前記第３のキャッシュサーバに変更する更新命令を、前記第１のキャッシュサーバに送信する第５のステップと
前記第１のキャッシュサーバが、前記更新命令を受信した後、前記更新命令を前記第３のキャッシュサーバに送信し、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第１のロック管理情報を更新する第１の更新処理を実行する第６のステップと、
前記第３のキャッシュサーバが、前記更新命令を受信した後、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第３のロック管理情報を更新する第２の更新処理を実行する第７のステップと、
前記キャッシュ管理サーバが、前記第１のファイルのキャッシュデータの管理権限を前記第１のキャッシュサーバから前記第３のキャッシュサーバに変更するように前記権限情報を更新する第８のステップとを含むことを特徴とするキャッシュ制御方法。
【請求項１０】
前記第６のステップは、
前記第１のキャッシュサーバが、前記第１のロック管理情報から前記第１のファイルのロック状態に関する情報を抽出するステップと、
前記第１のキャッシュサーバが、前記抽出された第１のファイルのロック状態に関する情報を削除するように前記第１のロック管理情報を更新するステップと、
前記第１のキャッシュサーバが、前記抽出された第１のファイルのロック状態に関する情報を前記第３のキャッシュサーバに送信するステップと、
前記第１のキャッシュサーバが、前記更新命令に対する応答を前記キャッシュ管理サーバに送信するステップと、を含み
前記第７のステップは、前記第３のキャッシュサーバが、前記第１のキャッシュサーバから送信された第１のファイルのロック状態に関する情報を追加するように前記第３のロック管理情報を更新するステップを含み、
前記第８のステップは、前記キャッシュ管理サーバが、前記第１のキャッシュサーバから送信された前記更新命令に対する応答を受信した後に前記権限情報を更新するステップを含むことを特徴とする請求項９に記載のキャッシュ制御方法。
【請求項１１】
前記第６のステップは、前記第１のキャッシュサーバが、前記更新命令に対する応答を前記キャッシュ管理サーバに送信する前又は後に、前記第１のファイルのキャッシュデータを前記ファイルサーバに送信するステップを含むことを特徴とする請求項１０に記載のキャッシュ制御方法。
【請求項１２】
前記第６のステップは、前記第１のキャッシュサーバが、前記更新命令を前記第３のキャッシュサーバに送信した後に、前記第１のファイルのキャッシュデータを前記第３のキャッシュサーバに送信するステップを含むことを特徴とする請求項１０に記載のキャッシュ制御方法。
【請求項１３】
前記第１のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第１の受付管理情報を備え、
前記第２のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第２の受付管理情報を備え、
前記第３のキャッシュサーバは、前記ファイルに対する前記端末または他の前記キャッシュサーバからのアクセスか否かを判定するための第３の受付管理情報を備え、
前記第６のステップは、
前記第１のキャッシュサーバが、前記第１のファイルに関する情報を追加するように前記第１の受付管理情報を更新するステップと、
前記第１のキャッシュサーバが、その後、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第１の受付管理情報を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対するアクセスが前記第１のファイルに対する処理命令か否かを判定するステップと、
前記第１のキャッシュサーバが、前記端末または前記他のキャッシュサーバからのファイルに対するアクセスが前記第１のファイルに対する処理命令であると判定された場合に前記第１のファイルに対する処理命令を一時的に蓄積するステップと、
前記第１のキャッシュサーバが、前記抽出された第１のファイルのロック状態に関する情報が前記第３のキャッシュサーバに移動されるように前記第１のロック管理情報が更新された後、前記第２のキャッシュサーバに前記第１のファイルに対するアクセスの受け付けを開始させるための受付開始命令を送信するステップと、
前記第１のキャッシュサーバが、前記受付開始命令が送信された後に、前記第１のファイルに関する情報を削除するように前記第１の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第１のファイルに対する処理命令を実行するステップと、を含み、
前記第７のステップは、
前記第３のキャッシュサーバが、前記第１のキャッシュサーバから送信された前記更新命令を受信した後に、前記第１のファイル関する情報を追加するように前記第３の受付管理情報を更新するステップと、
前記第３のキャッシュサーバが、前記端末または前記他のキャッシュサーバから前記ファイルに対する処理命令を受信した場合に、前記第３の受付管理表を参照して、前記端末または前記他のキャッシュサーバからの前記ファイルに対する処理要求が前記第１のファイルに対する処理要求か否かを判定するステップと、
前記第３のキャッシュサーバが、前記端末または前記他のキャッシュサーバからのファイルに対する処理命令が前記第１のファイルに対する処理命令であると判定された場合に、前記第１のファイルに対する処理要求を一時的に蓄積するステップと、
前記第３のキャッシュサーバが、前記受付開始命令を受信した後に、前記第１のファイルに関する情報を削除するように前記第３の受付管理情報を更新して、前記一時的に蓄積された端末または他のキャッシュサーバからの第１のファイルに対する処理命令を実行するステップと、を含むことを特徴とする請求項１０に記載のキャッシュ制御方法。
【請求項１４】
前記権限情報は、ファイルシステムのサブディレクトリと、前記キャッシュサーバとを対応させた情報を格納する権限管理表であり、
前記ロック管理情報は、前記ファイルの識別子と、前記ファイルのロックを取得したユーザ名と、前記取得されたロックの識別情報とを格納するロック管理表であり、
前記受付管理情報は、前記ファイルシステムのサブディレクトリを格納する受付管理表であり、
前記キャッシュサーバは、前記権限管理表に示された前記サブディレクトリ配下に格納される複数のファイルについての前記管理権限を有し、
前記キャッシュサーバは、前記受付管理表に示された前記サブディレクトリ配下に格納される複数のファイルに対する処理命令を一時的に蓄積することを特徴とする請求項１３に記載のキャッシュ制御方法。
【請求項１５】
前記キャッシュ管理サーバは、前記ファイル毎に前記処理命令の実行時のアクセス数を算出し、
前記キャッシュ管理サーバに入力された前記処理命令の実行時のアクセス回数の条件に基づいて、前記更新命令を前記第１のキャッシュサーバに送信することを特徴とする請求項９に記載のキャッシュ制御方法。
【請求項１６】
前記キャッシュ管理サーバは、
前記計算機システムの時間を管理し、
前記計算機システムの時間に基づいて前記管理権限を保持する前記キャッシュサーバを変更するための時刻情報を備え、
前記第５のステップは、前記キャッシュ管理サーバが、前記時刻情報において示された前記計算機システムの時間時間が経過した後に、前記更新命令を前記第１のキャッシュサーバに送信することを特徴とする請求項９に記載のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ファイルシステム、またはキーバリューストア等に代表されるオブジェクトストアのデータキャッシュの制御方法に関する。
【背景技術】
【０００２】
広域網（ＷＡＮ）を介してデータセンタと拠点との間でデータアクセスを行う場合、距離に応じて転送遅延、または、広域網の実効帯域が契約帯域と比べて大幅に小さく転送速度が遅いなどの問題が生じる。
【０００３】
前述した問題に対処するためにキャッシュが用いられる。キャッシュには、更新されないファイルまたは更新頻度が低いファイルの参照を高速化するためのリードキャッシュと、更新頻度の高いファイルの参照およびファイルの更新を速くするためのライトキャッシュとがある。複数のユーザが同一のデータに対して更新を行う環境では、実際のデータとキャッシュされたデータとの一貫性を制御する必要がある。
【０００４】
［通常のキャッシュ］
一貫性制御を実現する方法は、データを保持するサーバを用いて同期をとる方法である（例えば、非特許文献１参照）。以下、図３０、図３１および図３２を用いてデータを保持するサーバとしてファイルサーバを用いる場合を例に説明する。
【０００５】
図３０は、従来のファイルサーバを備えた計算機システムの構成例を示すブロック図である。
【０００６】
計算機システムは、中央拠点３０００、拠点Ａ３０１０および拠点Ｂ３０２０から構成され、広域網（ＷＡＮ）３０３０を介して互いに接続される。
【０００７】
中央拠点３０００には、ファイルサーバ３００１が含まれる。ファイルサーバ３００１は、各拠点から参照または更新されるファイル３００５を格納する。
【０００８】
拠点Ａ３０１０には、キャッシュサーバＡ３０１１および端末Ａ３０１２−１が含まれる。キャッシュサーバＡ３０１０と端末Ａ３０１２−１とは、直接、またはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を介して接続される。端末Ａ３０１２−１がキャッシュサーバＡ３０１１を介して中央拠点３０００のファイルサーバ３００１に格納されるファイル３００５を参照および更新する。
【０００９】
拠点Ｂ３０２０には、キャッシュサーバＢ３０２１および端末Ｂ３０１２−２が含まれる。キャッシュサーバＢ３０２１と端末Ｂ３０１２−２とは、直接、またはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を介して接続される。端末Ｂ３０１２−２がキャッシュサーバＢ３０２１を介して中央拠点３０００のファイルサーバ３００１に格納されるファイル３００５を参照および更新する。
【００１０】
以下、キャッシュサーバＡ３０１１がファイルサーバ３００１に格納されるファイル３００５に対応するファイルのキャッシュ３０１５を格納する場合について説明する。なお、当該ファイルのキャッシュ３０１５は最新である。
【００１１】
図３１は、従来のキャッシュサーバが実行するファイル参照処理を説明するフローチャートである。
【００１２】
キャッシュサーバは、端末からファイル名を含むファイル参照要求を受け取り、ファイル参照処理を開始する（Ｓ３１０１）。
【００１３】
まず、キャッシュサーバは、端末から受け取ったファイル名に対応するファイルのキャッシュを検索し（Ｓ３１０２）、当該ファイルのキャッシュが存在するか否かを判定する（Ｓ３１０３）。
【００１４】
キャッシュサーバＡ３０１１の場合、端末Ａ３０１２−１から受け取ったファイル名に対応するファイルのキャッシュ３０１５が存在すると判定され、また、キャッシュサーバＢ３０２１の場合、端末Ａ３０１２−１から受け取ったファイル名に対応するファイルのキャッシュ３０１５が存在しないと判定される。
【００１５】
端末から受け取ったファイル名に対応するファイルのキャッシュが存在すると判定された場合、キャッシュサーバは、ファイルサーバから、端末から受け取ったファイル名に対応するファイルを取得する（Ｓ３１０４）。
【００１６】
キャッシュサーバは、当該キャッシュサーバに格納されるファイルのキャッシュが最新であるか否かを判定する（Ｓ３１０５）。
【００１７】
具体的には、キャッシュサーバは、端末から受け取ったファイル名に対応するファイルのフィンガープリントをファイルサーバから取得し、取得されたフィンガープリントを参照し、当該キャッシュサーバに格納されるファイルのキャッシュが最新であるか否かを判定する。
【００１８】
ファイルのキャッシュが最新か否かの厳密な判定を行うためにはファイルサーバからファイルそのものを受信する必要があるが、この場合、キャッシュを用いても高速化が達成できないため、ファイルのフィンガープリントが用いられる。
【００１９】
ここで、ファイルのフィンガープリントとはファイル内容の特徴を表す短いデータを示す。ファイルのフィンガープリントは、ファイルの内容が少しでも異なれば大幅に変わるという性質を持つ。そのため、ファイルのフィンガープリントを用いて、キャッシュが最新か否かの判定ができ、また、フィンガープリントのデータ量はファイルそのものよりも少なくて済む。したがって、ファイルのフィンガープリントの取得時間も少なくてすむ。このような、フィンガープリントを計算する方法としてＭＤ５などが知られている（例えば、非特許文献２参照）。ＭＤ５が用いられた場合、Ｓ３１０４において取得されるデータ量は１２８ビットとなる。
【００２０】
キャッシュサーバに格納されるファイルのキャッシュが最新であると判定された場合、キャッシュサーバは、当該ファイルのキャッシュからファイルのデータを取得し（Ｓ３１０６）、取得されたファイルのデータをユーザに送信して処理を終了する（Ｓ３１０７）。
【００２１】
Ｓ３１０３において端末から受け取ったファイル名に対応するファイルのキャッシュが存在しないと判定された場合、またはＳ３１０５においてキャッシュサーバに格納されるファイルのキャッシュが最新でないと判定された場合、キャッシュサーバは、ファイルサーバからファイルのデータを取得し（Ｓ３１０８）、取得されたファイルのデータをユーザに送信して処理を終了する（Ｓ３１０７）。
【００２２】
図３２は、従来のキャッシュサーバが実行するファイル参照処理の流れを説明するシーケンス図である。
【００２３】
図３２では、端末Ａ３０１２−１がキャッシュサーバＡ３０１１を介してファイルサーバ３００１にアクセスし、キャッシュヒットした場合、すなわち、キャッシュからファイルのデータが取得される場合の処理手順を示す図である。
【００２４】
端末Ａ３０１２−１は、ファイル名を含むファイル参照要求をキャッシュサーバＡ３０１１に送信する（Ｓ３２０１）。
【００２５】
ファイル名を含むファイル参照要求を受信したキャッシュサーバＡ３０１１は、ファイル参照処理を開始し（Ｓ３２０２）、ファイル参照要求に含まれるファイル名に対応するファイルのキャッシュを検索する（Ｓ３２０３）。
【００２６】
ここで、キャッシュサーバＡ３０１１は、ファイル参照要求に含まれるファイル名に対応するファイルのキャッシュを格納するため、次に、当該ファイルのメタデータの取得要求をファイルサーバ３００１に送信する（Ｓ３２０４）。
【００２７】
キャッシュサーバＡ３０１１は、ファイルサーバ３００１から、ファイル参照要求に含まれるファイル名に対応するファイルのメタデータを受信する（Ｓ３２０５）。
【００２８】
キャッシュサーバＡ３０１１は、格納されるファイルのキャッシュが最新であるため、当該ファイルのキャッシュからファイルのデータを取得し（Ｓ３２０７）、取得されたファイルのデータを端末Ａ３０１２−１に送信して（Ｓ３２０８）、処理を終了する。
【００２９】
図３０に示す計算機システムにおいて、端末Ａ３０１２−１および端末Ｂ３０１２−２は、ファイルサーバ３００１に格納される全ファイルにアクセスすることが可能性である。したがって、枠線３２０６で囲ったＳ３２０４およびＳ３２０５の処理に伴うキャッシュサーバＡ３０１１からファイルサーバ３００１への通信によって一貫性を制御する必要がある。
【００３０】
しかし、図３２に示す処理では、ファイルのキャッシュが最新でるため、枠線３２０６で囲ったＳ３２０４およびＳ３２０５の処理は、処理の遅延を発生させる。
【００３１】
さらに、図３０に示す計算機システムでは、キャッシュサーバＡ３０１１とファイルサーバ３００１とは広域網（ＷＡＮ）３０３０を介して接続されているため遅延が大きく、例えば、数百ミリ秒から１秒遅延が発生する。したがって、広域網（ＷＡＮ）３０３０を介したフィンガープリントの取得では、取得されるデータ量が小さい場合であっても、例えば数百ミリ秒の遅延が生じる。
【００３２】
したがって、キャッシュサーバＡ３０１１内の処理（例えば、Ｓ３２０２、Ｓ３２０７）は数ミリ秒から数十ミリ秒と高速に処理が可能であるため、枠線３２０６で囲った処理が実行されない一貫性制御方式が望ましい。
【００３３】
なお、Ｓ３１０５において取得されるフィンガープリントのように、ファイルにはファイルの内容以外の情報が含まれる。ファイルの内容以外の情報としては、例えば、ファイルの作者、ファイルの作成日時、ファイルの最終更新日時、ファイルのアクセス権などが考えられる。以下では、ファイルの内容以外の情報をまとめてメタデータと呼ぶ。また、ファイルの内容を実データと呼ぶ。
【００３４】
また、以下ではディレクトリもファイルの一種とする。したがって、特に断りのない限り、ファイルは狭義のファイルとディレクトリとを含む。
【００３５】
［Ｗｉｒｅ  ＦＳ］
前述したような、従来技術における遅延を考慮した一貫性制御の方法として、ファイルサーバ内のあるサブツリーへのキャッシュサーバ間のアクセスの偏りに応じて、当該サブツリーのメタデータ管理権と実データとを適切なキャッシュサーバが管理することによって、一貫性制御に必要となる広域網を介した通信の回数を削減し、ファイルアクセスを高速化する方法がある（例えば、特許文献１参照）。
【００３６】
特許文献１に記載の方法では、ファイルサーバ内のディレクトリを含む各ファイルに対してｈｏｍｅとｏｗｎｅｒという役割を持つキャッシュサーバがある。
【００３７】
あるファイルに頻繁にアクセスするキャッシュサーバが当該ファイルのｈｏｍｅとなり、当該ファイルのメタデータを管理する。また、当該ファイルにアクセスするキャッシュサーバはその都度ｈｏｍｅであるキャッシュサーバからｏｗｎｅｒの権利を期限付きで借りうけｏｗｎｅｒとなり、該ファイルに関する一時的なメタデータの管理権と実データのキャッシュを持つ。
【００３８】
なお、ファイルに対して頻繁にアクセスするキャッシュサーバがｈｏｍｅとなるため、通常、ｈｏｍｅとｏｗｎｅｒとは同一のキャッシュサーバとなる。また、当該ファイルに対し頻繁にアクセスするキャッシュサーバが現在のｈｏｍｅではなくなった場合、頻繁にアクセスするキャッシュサーバにｈｏｍｅを移動させる。このとき、アクセス偏りの統計値の算出およびｈｏｍｅ移動の判定は中央拠点に配置された管理サーバが行う。
【００３９】
特許文献１に記載の方法を用いると、特定のキャッシュサーバからの統計的にアクセスが多いファイルのｏｗｎｅｒとなったキャッシュサーバは、ｏｗｎｅｒの権利が切れるまでは一貫性制御の実行時に広域網を介した通信を行うことなく、常に自分が保持するキャッシュが最新であると判定できる。つまり、図３２の枠線３２０６で囲った処理を行う必要がなくなる。
【００４０】
しかし、特許文献１に記載の方法では、多くの拠点から統計的に均等なアクセスを受けるようなファイルの扱いに問題となる。
【００４１】
すなわち、特許文献１に記載の方法において、統計値を算出するための情報を取得する期間を十分に長くする、または十分なアクセスの偏りがある場合に偏りが検出されるようにすると、当該ファイルについてのアクセス偏りが検出できないため、当該ファイルのｈｏｍｅとなるキャッシュサーバを特定できない。
【００４２】
つまり、統計的に多くの拠点から均等にアクセスを受けるようなファイルの一貫性制御の実行時に広域網を介した処理の実行を低減することができない。
【００４３】
前述した問題に対して、統計値を算出するための情報を取得する期間を短くしたり、わずかなアクセスの偏りがある場合にアクセス偏りが検出されるようにすることによって、特定のキャッシュサーバをｈｏｍｅとする方法が考えられる。しかし、この方法では、あるファイルに対してあるキャッシュサーバからのアクセスが一時的に増加する場合など、ノイズのようなアクセスの影響を強く受けるため、ｈｏｍｅの移動を頻繁に行う必要がある。
【００４４】
しかし、特許文献１に記載の方法では、以下で述べる理由によって、いずれかの端末からアクセスされるファイルのｈｏｍｅを移動させることができない。特定のキャッシュサーバがｈｏｍｅとなるファイルは、頻繁にアクセスを受けるファイルであるため、いずれかの端末がアクセス中である可能性が高く、アクセス中のファイルのｈｏｍｅを動かせないことの影響は大きい。すなわち、多くの拠点から統計的に均等なアクセスを受けるようなファイルの一貫性制御に必要とする広域網を介した処理の低減を実現できない。
【００４５】
あるファイルのｈｏｍｅ移動については、特許文献１に記載されており、全てのキャッシュ（すなわち、ｈｏｍｅとｏｗｎｅｒとが持っているキャッシュ）を無効化し、ｈｏｍｅ移動通知をｈｏｍｅから中央拠点の管理サーバに送る。その後、当該ファイルのメタデータとｈｏｍｅ権限とを新しいｈｏｍｅに送る。
【００４６】
つまり、全てのキャッシュを無効化できるのはｏｗｎｅｒ権利の期限が切れた後である。一方、ｏｗｎｅｒであるキャッシュサーバは、いずれかの端末がファイルにアクセス中である場合、ｏｗｎｅｒ権利を更新するため、ｏｗｎｅｒ権利の期限が切れない。そのため、いずれかの端末がアクセス中のファイルのｈｏｍｅを移動させることはできない
さらに、特許文献１に記載の方法では、あるキャッシュサーバのメンテナンスまたはリプレースに伴う計画停止を行う場合にも、前述したと同様の理由によって、当該キャッシュサーバがｈｏｍｅであるファイルにいずれかの端末がアクセス中である場合、当該キャッシュサーバを停止することはできない。
【００４７】
前述したように、従来の方法では広域網を介して中央拠点と拠点との間でアクセスを行う場合に、遅延解消のためにキャッシュを用いても、統計的に多くの拠点から均等にアクセスを受けるようなファイルについては一貫性制御のための通信遅延を解消することができないという問題があった。
【００４８】
なお、ここではデータアクセスの一例としてファイルアクセスを例に挙げたが、対象が他のデータオブジェクトであっても本質的に違いは無く、同様の問題が生じる。
【先行技術文献】
【特許文献】
【００４９】
【特許文献１】米国特許出願公開第２００７／０１６２４６２号明細書
【非特許文献】
【００５０】
【非特許文献１】Ｎｅｌｓｏｎ、「Ｃａｃｈｉｎｇ  ｉｎ  ｔｈｅ  Ｓｐｒｉｔｅ  Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ」、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ、Ｖｏｌｕｍｅ  ６、Ｉｓｓｕｅ  １（Ｆｅｂｕｒａｕａｒｙ  １９８８）、ｐ．１３４−１５４
【非特許文献２】ＲＦＣ１３２１、「Ｔｈｅ  ＭＤ５  Ｍｅｓｓａｇｅ−Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ」
【発明の概要】
【発明が解決しようとする課題】
【００５１】
発明が解決しようとする課題は、従来手法を用いてファイルのメタデータをキャッシュサーバで管理すると、当該ファイルのメタデータを当該キャッシュサーバから別のキャッシュサーバに動かそうとしても、いずれかの端末が該ファイルにアクセス中である場合には動かすことができないことである。
【課題を解決するための手段】
【００５２】
本発明の代表的な一例を示せば、以下の通りである。すなわち、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリとを備え、複数のファイルを格納するファイルサーバと、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリとを備え、前記ファイルのキャッシュデータを格納するキャッシュサーバと、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリとを備え、前記キャッシュサーバを管理するキャッシュ管理サーバとを備える計算機システムであって、前記ファイルのキャッシュデータは、前記ファイルを特定可能なデータ、又は、前記ファイルを構成するデータの少なくともいずれか一方を含み、前記キャッシュ管理サーバは、前記ファイルサーバに格納される前記ファイルのキャッシュデータに対する前記キャッシュサーバの管理権限を表す権限情報を管理し、前記キャッシュサーバは、第１のキャッシュサーバ、第２のキャッシュサーバ及び第３のキャッシュサーバを含み、前記第１のキャッシュサーバは、当該第１のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第１のロック管理情報を備え、前記第２のキャッシュサーバは、当該第２のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第２のロック管理情報を備え、前記第３のキャッシュサーバは、当該第３のキャッシュサーバが管理権限を有するファイルへのアクセスの可否を示すロック状態を管理する第３のロック管理情報を備え、前記ファイルは、第１のファイルを含み、前記第１のキャッシュサーバは、当該第１のキャッシュサーバに接続されるクライアント端末から前記第１のファイルに対する処理命令を受信した場合に、前記キャッシュ管理サーバから前記権限情報を取得し、前記取得された権限情報を参照して、前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有するか否かを判定し、前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有すると判定された場合に、前記第１のファイルに対する処理命令を実行し、前記第１のキャッシュサーバが前記第１のファイルのキャッシュデータの管理権限を有しないと判定された場合に、当該第１のファイルの前記管理権限を有する前記第２のキャッシュサーバに、前記第１のファイルに対する処理命令を送信して、前記第２のキャッシュサーバから前記第１のファイルに対する処理命令の実行結果を受信し、前記キャッシュ管理サーバは、前記第１のキャッシュサーバが有する、前記第１のファイルのキャッシュデータの前記管理権限を、前記第３のキャッシュサーバに変更する更新命令を、前記第１のキャッシュサーバに送信し、前記第１のキャッシュサーバは、前記更新命令を受信した後、前記更新命令を前記第３のキャッシュサーバに送信し、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第１のロック管理情報を更新する第１の更新処理を実行し、前記第３のキャッシュサーバは、前記更新命令を受信した後、前記第１のファイルのロック状態を前記第３のキャッシュサーバに移動させるように前記第３のロック管理情報を更新する第２の更新処理を実行し、前記キャッシュ管理サーバは、前記第１のファイルのキャッシュデータの管理権限を前記第１のキャッシュサーバから前記第３のキャッシュサーバに変更するように前記権限情報を更新することを特徴とする。
【発明の効果】
【００５３】
本発明によれば、アクセス偏りがあるファイルに対し、時間ごとに適切なキャッシュサーバが当該ファイルの管理権限を保持することができるため、一貫性制御に要する通信遅延を解消できる。
【００５４】
また、本発明の別の効果として、管理権限を任意のタイミングで変更できるため、計画停止など運用が容易に実現できる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施形態の計算機システムを説明するブロック図である。
【図２】本発明の実施形態のファイルサーバの構成例を説明するブロック図である。
【図３】本発明の実施形態のキャッシュ管理サーバの構成例を説明するブロック図である。
【図４】本発明の実施形態のキャッシュサーバの構成例を説明するブロック図である。
【図５】本発明の実施形態のロック管理表の一例を示す説明図である。
【図６】本発明の実施形態の受付停止管理表の一例を示す説明図である。
【図７】本発明の実施形態のマスタ管理表の一例を示す説明図である。
【図８】本発明の実施形態のファイルサーバが起動後に実行する処理を説明するフローチャートである。
【図９】本発明の実施形態のファイルサーバ制御部が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
【図１０】本発明の実施形態のファイルサーバ制御部が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
【図１１】本発明の実施形態のファイルサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
【図１２】本発明の実施形態のファイルサーバ制御部が備えるファイル更新機能によって実行される処理を説明するフローチャートである。
【図１３】本発明の実施形態のファイルサーバ制御部が備えるファイルクローズ機能によって実行される処理を説明するフローチャートである。
【図１４】本発明の実施形態のファイルサーバ制御部が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
【図１５】本発明の実施形態のキャッシュサーバが起動時に実行する処理を説明するフローチャートである。
【図１６】本発明の実施形態のキャッシュサーバ制御部が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
【図１７】本発明の実施形態のキャッシュサーバ制御部が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
【図１８Ａ】本発明の実施形態のキャッシュサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
【図１８Ｂ】本発明の実施形態のキャッシュサーバ制御部が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
【図１９Ａ】本発明の実施形態のキャッシュサーバ制御部が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。
【図１９Ｂ】本発明の実施形態のキャッシュサーバ制御部が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。
【図２０】本発明の実施形態のキャッシュサーバ制御部が備えるファイルのクローズ機能によって実行される処理を説明するフローチャートである。
【図２１】本発明の実施形態のキャッシュサーバ制御部が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
【図２２】本発明の実施形態のキャッシュ管理サーバが起動後に実行する処理を説明するフローチャートである。
【図２３】本発明の実施形態のマスタ管理表制御ＵＩ部が備えるマスタ場所変更ＵＩ機能およびキャッシュサーバ制御部が備えるマスタ変更機能によって実行される処理の概要を説明するシーケンス図である。
【図２４】本発明の実施形態のマスタ場所更新処理実行時における、マスタ管理表制御ＵＩ部が実行する処理の詳細を説明するフローチャートである。
【図２５】本発明の実施形態のマスタ場所更新処理実行時における、旧キャッシュサーバの旧キャッシュサーバ制御部が実行する処理の詳細を説明するフローチャートである。
【図２６】本発明の実施形態のマスタ場所更新処理実行時における、新キャッシュサーバの新キャッシュサーバ制御部が実行する処理の詳細を説明するフローチャートである。
【図２７】本発明の実施形態のキャッシュ管理サーバのマスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能によって実行される処理を説明するフローチャートである。
【図２８】本発明の実施形態のキャッシュサーバがアクセス履歴の送信命令を受信したときに実行する処理を説明するフローチャートである。
【図２９】本発明の実施携帯の制御端末が備えるタイムテーブルを説明するフローチャートである。
【図３０】従来のファイルサーバを備えた計算機システムの構成例を示すブロック図である。
【図３１】従来のキャッシュサーバが実行するファイル参照処理を説明するフローチャートである。
【図３２】従来のキャッシュサーバが実行するファイル参照処理の流れを説明するシーケンス図である。
【発明を実施するための形態】
【００５６】
本実施形態は、複数の拠点に位置する端末が遅延の大きい広域網（ＷＡＮ）を介して中央拠点に配置されたファイルサーバにアクセスする場合にキャッシュサーバを適用した一例である。
【００５７】
本実施形態では、ファイルサーバ中の任意のサブツリーに含まれるディレクトリ下のファイルの実データおよびメタデータの管理権とロック管理表を備えるキャッシュサーバをマスタとして定義する。なお、ここでは管理権の定義を「あるファイルに関するメタデータまたは実データがキャッシュに格納されている場合に、当該キャッシュに格納された情報が最新であると判定してよい権限」とする。
【００５８】
サブツリーごとのアクセス統計の算出結果からアクセス偏りがあった場合、またはユーザの指示があった場合に、当該サブツリーに対してマスタを定義できるようにする。マスタの定義は、マスタ管理表で管理される。また、ユーザがサブツリーごとにマスタを定義できるようにユーザインタフェースを設ける。
【００５９】
ロック管理表はキャッシュサーバが備え、当該キャッシュサーバがマスタとして管理する全てのサブツリーのうち、ロックが取得されたファイルについてのロック情報を格納する。
【００６０】
任意のサブツリーについてマスタが変更される場合に、マスタが有する権利とあわせて、ロック管理表にから当該サブツリーに含まれるファイルに関する行が変更前のマスタであるキャッシュサーバから変更後のマスタであるキャッシュサーバに送信される。
【００６１】
図１は、本発明の実施形態の計算機システムを説明するブロック図である。
【００６２】
計算機システムは、中央拠点１０１、拠点Ａ１０２および拠点Ｂ１０３から構成され、
中央拠点１０１、拠点Ａ１０２および拠点Ｂ１０３は、広域網１１２を介して互いに接続される。
【００６３】
中央拠点１０１は、ファイルサーバ１０５、キャッシュサーバ１０６およびキャッシュ管理サーバ１０７を含む。
【００６４】
ファイルサーバ１０５は、各種ファイルを格納し、当該ファイルの参照および更新処理を実行する。なお、本実施形態ではファイルは、フルパスを用いて一意に識別されるものとする。ファイルサーバ１０５の構成については、図２を用いて後述する。
【００６５】
キャッシュサーバ１０６は、ファイルサーバ１０５に格納されるファイルに関するキャッシュを格納する。キャッシュサーバ１０６の構成については、図４を用いて後述する。
【００６６】
キャッシュ管理サーバ１０７は、各キャッシュサーバが格納するキャッシュを管理する。また、キャッシュ管理サーバ１０７には制御端末１０４が接続され、管理者が制御端末１０４を用いて、キャッシュ管理サーバを操作する。キャッシュ管理サーバ１０７の構成については、図３を用いて後述する。
【００６７】
拠点Ａ１０２は、キャッシュサーバ１０８、および端末１０９−１、１０９−２を含む。キャッシュサーバ１０８および端末１０９−１、１０９−２は、ローカル網１２を介して接続される。
【００６８】
キャッシュサーバ１０８は、キャッシュサーバ１０６と同一のものである。
【００６９】
端末１０９−１、１０９−２は、ファイルサーバ１０５からファイルを参照または更新の要求を送信する。端末１０９−１、１０９−２は、ＣＰＵ（図示省略）、主記憶部（図示省略）および二次記憶部（図示省略）を備える。また、主記憶部（図示省略）には、少なくともファイルにアクセスするプログラムが格納される。
【００７０】
拠点Ｂ１０３は、拠点Ａ１０２と同一の構成である。すなわち、拠点Ｂ１０３は、キャッシュサーバ１１０、および端末１１１−１、１１１−２を含む。キャッシュサーバ１１０、および端末１１１−１、１１１−２は、ローカル網１１３を介して接続される。
【００７１】
なお、図１に示す例では、拠点Ａ１０２と拠点Ｂ１０３とが同一の構成であるが、異なる構成であってもよい。
【００７２】
図２は、本発明の実施形態のファイルサーバ１０５の構成例を説明するブロック図である。
【００７３】
ファイルサーバ１０５は、ＣＰＵ２００、主記憶部２１０、二次記憶部２２０およびネットワークインタフェース２３０を備える。ＣＰＵ２００、主記憶部２１０、二次記憶部２２０およびネットワークインタフェース２３０は、内部バス等によって互いに接続される。
【００７４】
ＣＰＵ２００は、主記憶部２１０に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
【００７５】
主記憶部２１０は、ＣＰＵ２００によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部２１０は、例えば、メモリ等が考えられる。
【００７６】
主記憶部２１０は、ファイル保持部２１１、ロック管理部２１２、ファイルサーバ制御部２１３およびロック管理表２１４を格納する。
【００７７】
ファイル保持部２１１は、ファイルの実データおよびメタデータを管理する。ファイル保持部２１１は、ファイル実データ取得機能、ファイルメタデータ取得機能、ファイル実データ更新機能およびファイルメタデータ更新機能を備える。
【００７８】
ファイル実データ取得機能は、ファイルのフルパスを引数としてファイルの実データを取得する。ファイルメタデータ取得機能は、ファイルのフルパスを引数としてファイルのメタデータを取得する。
【００７９】
ファイル実データ更新機能は、ファイルのフルパスと実データとを引数としてファイルの実データを更新する。ファイルメタデータ更新機能は、ファイルのフルパスとメタデータとを引数としてファイルのメタデータを更新する。
【００８０】
ロック管理部２１２は、ファイルのロック状態を管理する。なお、本実施形態では、説明を簡単にするため排他ロックについて説明する。また、本実施形態では、ロック管理部２１２は、ファイルのフルパスごとに当該ファイルのロック状態を管理する。
【００８１】
ロック管理部２１２は、ロック取得機能およびロック解放機能を備える。ロック取得機能は、ファイルのフルパスを引数としてファイルのロックを取得する機能である。すなわち、ロックを取得したユーザ以外はファイルを操作できない状態にするための機能である。ロック解放機能は、ファイルのフルパスを引数としてファイルのロックを解放するための機能である。
【００８２】
ファイルサーバ制御部２１３は、ファイルサーバ１０５全体を制御する。具体的には、ファイルのメタデータ参照機能、ファイルのロック取得機能、ファイルオープン機能、ファイル更新機能、ファイルクローズ機能およびファイルのロック解放機能を備える。
【００８３】
各機能によって実現される処理については、図８〜１４を用いて後述する。
【００８４】
ロック管理表２１４は、ファイルサーバ１０５に格納されるファイルのロック状態を格納する。具体的にはファイルサーバ１０５に格納されるファイルのうち、ロックが取得されたファイルに関する情報とを格納する。
【００８５】
二次記憶部２２０は、主記憶部２１０に読み出されるプログラム、および各種データを格納する。二次記憶部２２０は、例えば、ＨＤＤ等が考えられる。
【００８６】
ネットワークインタフェース２３０は、他の装置と通信するためのインタフェースであり、本実施形態では広域網１１２と接続される。
【００８７】
なお、主記憶部２１０に格納されるファイル保持部２１１、ロック管理部２１２およびファイルサーバ制御部２１３は、ハードウェアによって実現されてもよい。
【００８８】
図３は、本発明の実施形態のキャッシュ管理サーバ１０７の構成例を説明するブロック図である。
【００８９】
キャッシュ管理サーバ１０７は、ＣＰＵ３００、主記憶部３１０、二次記憶部３２０およびネットワークインタフェース３３０を備える。ＣＰＵ３００、主記憶部３１０、二次記憶部３２０およびネットワークインタフェース３３０は、内部バス等によって互いに接続される。
【００９０】
ＣＰＵ３００は、主記憶部３１０に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
【００９１】
主記憶部３１０は、ＣＰＵ３００によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部３１０は、例えば、メモリ等が考えられる。
【００９２】
主記憶部３１０は、キャッシュ管理サーバ制御部３１１、キュー管理部３１２、マスタ管理表制御ＵＩ部３１３、マスタ管理表制御部３１４およびマスタ管理表３１５を格納する。
【００９３】
キャッシュ管理サーバ制御部３１１は、キャッシュ管理サーバ１０７全体を制御する。キャッシュ管理サーバ制御部３１１は、マスタ場所変更機能およびアクセス偏り集計機能を備える。なお、各機能によって実現される処理については、図２２〜図２８を用いて後述する。
【００９４】
キュー管理部３１２は、マスタ管理表制御ＵＩ部３１３または他のキャッシュサーバ１０８、１１０との間の通信に用いられるキューを管理する。
【００９５】
各部は必要に応じてキュー管理部３１２を用いて新しいキューを作成できる。本実施形態ではキューはポート番号によって識別されるが、別の実装方式としてメッセージのヘッダに宛先となるキューの識別子を付与して送信し、受信側のキュー管理部３１２が当該識別子を用いて適切なキューに割り振る方法も考えられる。
【００９６】
マスタ管理表制御ＵＩ部３１３は、マスタ管理表３１５を操作するためのユーザインタフェースである。マスタ管理表制御ＵＩ部３１３は、マスタ場所変更ＵＩ機能およびアクセス偏り集計ＵＩ機能を備える。
【００９７】
マスタ場所変更ＵＩ機能は、任意のサブディレクトリのマスタとなるキャッシュサーバを変更するＵＩを提供する機能である。アクセス偏り集計ＵＩは、ファイルサーバ１０５が提供するファイルシステムのツリーに含まれる全てのサブディレクトリについて、キャッシュサーバごとのアクセス数を集計するＵＩを提供する機能である。
【００９８】
ここで、マスタとは、キャッシュサーバ１０６、１０８、１１０に格納されるキャッシュ（ファイルの実データおよびメタデータ）の管理権限を保持するキャッシュサーバ１０６、１０８、１１０を意味する。マスタは、サブディレクトリ毎に設定される。すなわち、マスタであるキャッシュサーバ１０６、１０８、１１０には、当該サブディレクトリ配下に格納されるファイルの最新の実データおよびメタデータを管理する権限が付与される。
【００９９】
マスタ管理表制御部３１４は、マスタ管理表３１５を管理する。マスタ管理表制御部３１４は、他の構成部またはキャッシュサーバ１０６、１０８、１１０からの要求にしたがって、マスタ管理表３１５に対して処理を実行する。具体的には、マスタ管理表制御部３１４は、マスタ管理表送信機能を備える。マスタ管理表送信機能は、マスタ管理表３１５を送信する機能である。
【０１００】
マスタ管理表３１５は、マスタとして管理権限を保持するサブディレクトリとマスタであるキャッシュサーバ１０６、１０８、１１０が含まれる拠点との対応関係を格納する。マスタ管理表３１５は、図７を用いて後述する。
【０１０１】
なお、マスタ管理表３１５は、二次記憶部３２０に格納され、必要な場合に主記憶部３１０に読み出されるようにしてもよい。また、マスタ管理表３１５のデータ量が増加した場合に、主記憶部３１０から二次記憶部３２０に退避されるようにしてもよい。
【０１０２】
二次記憶部３２０は、主記憶部３１０に読み出されるプログラム、および各種データを格納する。二次記憶部３２０は、例えば、ＨＤＤ等が考えられる。
【０１０３】
ネットワークインタフェース３３０は、他の装置と通信するためのインタフェースであり、本実施形態では広域網１１２と接続される。
【０１０４】
なお、主記憶部３１０に格納されるキャッシュ管理サーバ制御部３１１、キュー管理部３１２、マスタ管理表制御ＵＩ部３１３およびマスタ管理表制御部３１４は、ハードウェアによって実現されてもよい。
【０１０５】
図４は、本発明の実施形態のキャッシュサーバ１０８の構成例を説明するブロック図である。
【０１０６】
キャッシュサーバ１０８は、ＣＰＵ４００、主記憶部４１０、二次記憶部４２０およびネットワークインタフェース４３０を備える。ＣＰＵ４００、主記憶部４１０、二次記憶部４２０およびネットワークインタフェース４３０は、内部バス等によって互いに接続される。
【０１０７】
ＣＰＵ４００は、主記憶部４１０に格納される各種プログラムを読み出し、読み出されたプログラムを実行する。
【０１０８】
主記憶部４１０は、ＣＰＵ４００によって実行されるプログラムおよび当該プログラムの実行に必要となる情報を格納する。主記憶部４１０は、例えば、メモリ等が考えられる。
【０１０９】
主記憶部４１０は、キャッシュサーバ制御部４１１、ロック管理部４１２、キャッシュ保持部４１３、アクセス履歴保持部４１４、キュー管理部４１５、ロック管理表４１６および受付停止管理表４１７を格納する。
【０１１０】
キャッシュサーバ制御部４１１は、キャッシュサーバ１０８全体を制御する。キャッシュサーバ制御部４１１は、ファイルのメタデータ参照機能、ファイルのロック取得機能、ファイルオープン機能、ファイルの実データ更新機能、ファイルクローズ機能およびファイルのロック解放機能を備える。なお、各機能によって実現される処理の詳細については、図１５〜２１を用いて後述する。
【０１１１】
さらに、キャッシュサーバ制御部４１１は、マスタを変更する処理を実行するためのマスタ変更機能を備える。
【０１１２】
ロック管理部４１２はファイルサーバ１０５のロック管理部２１２と同一の機能を備える。キャッシュ保持部４１３は、ファイルの実データおよびメタデータを格納する。アクセス履歴保持部４１４は、ファイルのアクセス履歴を格納する。
【０１１３】
キュー管理部４１５は、キャッシュ管理サーバ１０７のキュー管理部３１２と同一の機能を備え、さらに、ロックの状態をロック管理表４１６に書き出す機能と、任意のファイルのロックを無効化する機能とを備える。
【０１１４】
ロックの状態をロック管理表４１６に書き出す機能とは、ロックが取得された場合、ロック管理表４１６に当該ロックに関する情報を追加し、また、ロックが解放された場合、ロック管理表４１６から当該ロックに関する情報を削除する機能である。
【０１１５】
ロックの無効化機能とは、ロック管理表４１６には手を加える事なく、ロック管理部４１２の内部状態から任意のファイルに関する行を削除する機能である。
【０１１６】
ロック管理表４１６は、マスタであるキャッシュサーバ１０８が管理するファイルのうち、ロックが取得されたファイルに関する情報とを格納する。なお、ロック管理表４１６は図５を用いて後述する。
【０１１７】
受付停止管理表４１７は、マスタであるキャッシュサーバを変更する場合に、当該マスタであるキャッシュサーバが管理するサブディレクトリに対するアクセスに関する情報を格納する。なお、受付停止管理表４１７は図６を用いて後述する。
【０１１８】
二次記憶部４２０は、主記憶部４１０に読み出されるプログラム、および各種データを格納する。二次記憶部４２０は、例えば、ＨＤＤ等が考えられる。
【０１１９】
ネットワークインタフェース４３０は、他の装置と通信するためのインタフェースであり、本実施形態では広域網１１２と接続される。
【０１２０】
キャッシュサーバ１０６およびキャッシュサーバ１１０は、キャッシュサーバ１０８と同一の構成であるため説明を省略する。
【０１２１】
図５は、本発明の実施形態のロック管理表４１６の一例を示す説明図である。
ロック管理表４１６は、ファイル名５０１、ユーザ名５０２及びロック情報５０３を含む。
【０１２２】
ファイル名５０１は、ロックが取得されたファイルの名称である。ユーザ名５０２は、ファイル名５０１に対応するファイルのロックを取得したユーザを識別する情報である。例えば、ユーザ名５０２は、端末を操作するユーザ名が考えられる。
【０１２３】
ロック情報５０３は、取得されたロックの識別情報である。ロックの識別情報は、例えば、ロックのシーケンス番号等が考えられる。
【０１２４】
なお、ファイルサーバ１０５におけるロック管理表２１４は、各キャッシュサーバ１０６、１０８、１１０が備えるロック管理表４１６を全て足し合わせたものに相当する。
【０１２５】
図６は、本発明の実施形態の受付停止管理表４１７の一例を示す説明図である。
【０１２６】
受付停止管理表４１７は、サブディレクトリパス名６０１を含む。
【０１２７】
サブディレクトリパス名６０１は、キャッシュサーバ１０６、１０８、１１０がマスタとして管理するサブディレクトリパスの名称である。サブディレクトリパス名６０１には、マスタ移動時にアクセスがあったファイルを格納するサブディレクトリパス名が格納される。
【０１２８】
図７は、本発明の実施形態のマスタ管理表３１５の一例を示す説明図である。
【０１２９】
マスタ管理表３１５は、サブディレクトリパス名７０１およびマスタ拠点名７０２を含む。
【０１３０】
サブディレクトリパス名７０１は、キャッシュサーバ１０６、１０８、１１０がマスタとして管理するサブディレクトリパスの名称である。マスタ拠点名７０２は、サブディレクトリパス名７０１に格納されるサブディレクトリをマスタとして管理するキャッシュサーバが含まれる拠点を識別するための情報である。
【０１３１】
以下の説明において、ファイルサーバ１０５によって用いるファイル共有プロトコルでは、端末が備えるファイルにアクセスするプログラムは以下の手順で動作する。
【０１３２】
第１の手順では、端末が対象となるファイルのロックを取得する。第２の手順では、端末が当該ファイルをオープンする（開く）。第３の手順では、端末が当該ファイルを任意の回数だけ更新する。第４の手順では、端末が当該ファイルをクローズする（閉じる）。第５の手順では、端末が当該ファイルのロックを解放する。
【０１３３】
ファイル共有プロトコルによっては、ファイルオープン命令と同時にファイルがロックされたり、ファイルクローズ命令と同時にファイルのロックが解放されたりといったバリエーションがある。しかし、前述した方法は、第１の手順と第２の手順とを同時に実行し、第４の手順と第５の手順とを同時に実行する等、前述した手順の簡単な組み合わせによって実現可能である。
【０１３４】
なお、本実施形態では、第１の手順において取得されるロックは排他ロックとする。すなわち、あるユーザが排他ロックを取得すると、他のユーザは排他ロックを取得できないといった、排他的なアクセス権について説明する。したがって、ユーザは排他ロックが取得できない場合、ファイルをオープンすることもできなくなるため、結果としてファイルの参照ができない。
【０１３５】
なお、一般にロックには、共有ロックまたは排他ロックなど複数の種類がある。例えば、あるユーザが共有ロックを取得したファイルは別のユーザがさらに共有ロックをかけることができ、あるユーザが排他ロックを取得したファイルは別のユーザが共有ロックを取得できないというように、ロックの組み合わせの方法もある。
【０１３６】
ロックの管理方法、ロック情報をユーザに渡す方法およびロックの組み合わせの管理方法は公知技術であるため説明を省略する。
【０１３７】
また、本発明は、どのようなロックの管理方法、ロック情報をユーザに渡す方法およびロックの組み合わせの管理方法を用いても実施可能である。
【０１３８】
また、本実施形態ではファイルサーバ１０５のロック情報は、ロック管理部２１２が一元的に管理する。
【０１３９】
また、ファイルにアクセスする一般的なプログラムを実行する端末は、ファイルサイズなどファイルにアクセスするプログラムの動作に必要な情報を取得するため、ファイルのロックを取得する前にファイルのメタデータを参照する。
【０１４０】
次に、ファイルサーバ１０５について説明する。
【０１４１】
図８は、本発明の実施形態のファイルサーバ１０５が起動後に実行する処理を説明するフローチャートである。
【０１４２】
ファイルサーバ１０５は、起動後処理を開始し（Ｓ８０１）、ロック管理部２１２を初期化する（Ｓ８０２）。
【０１４３】
次に、ファイルサーバ１０５は、キャッシュサーバ１０６、１０８、１１０から命令を受信し（Ｓ８０３）、受信した命令を実行する（Ｓ８０４）。すなわち、取り出された命令に対応する処理が実行される。ファイルサーバ１０５は、Ｓ８０３〜Ｓ８０４の処理を繰り返し実行する。
【０１４４】
以下、ファイルサーバ１０５のファイルサーバ制御部２１３が備える各機能について、図９〜図１４を用いて説明する。
【０１４５】
図９は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
【０１４６】
図９に示す処理は、Ｓ８０３において受信した命令がメタデータ参照処理の実行命令である場合に実行される処理である。
【０１４７】
Ｓ８０３おいて受信した命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名およびロックのシーケンス番号が含まれる。
【０１４８】
以下の説明において、メタデータを参照するファイルをファイルＸとし、また、メタデータを参照するユーザのユーザ名をユーザＹとする。
【０１４９】
Ｓ８０３おいて受信した命令に含まれるファイルＸのフルパスとユーザＹとを取得したファイルサーバ制御部２１３は、メタデータ参照処理を開始し（Ｓ９０１）、ファイル保持部２１１からファイルＸのメタデータを取得する（Ｓ９０２）。なお、メタデータには、ファイルのアクセス権限（パーミション）を示す情報が含まれる。
【０１５０】
ファイルサーバ制御部２１３は、ユーザＹがファイルＸのアクセス権を持っているか否かを判定する（Ｓ９０３）。具体的には、ファイルサーバ制御部２１３は、取得されたメタデータに含まれるファイルのアクセス権限を参照して、ユーザＹが当該ファイルのアクセス権限を持っているか否かを判定する。
【０１５１】
ユーザＹがファイルＸのアクセス権を持っていると判定された場合、ファイルサーバ制御部２１３は、Ｓ８０３において受信した命令を送信したキャッシュサーバ１０６、１０８、１１０にファイルＸのメタデータを送信して処理を終了する（Ｓ９０４）。
【０１５２】
ユーザＹがファイルＸのアクセス権を持っていないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して、処理を終了する（Ｓ９０５）。
【０１５３】
なお、ファイルサーバ１０５がユーザのアクセス権の認証を実行するバリエーションとしては、Ｓ８０３において受信した命令には、さらに、認証鍵またはパスワード等の認証に必要な情報が含まれていてもよい。また、ファイルサーバ１０５に対する認証処理は初回アクセス時のみに実行するものであってもよい。この場合、初回アクセス時に認証専用命令を用いた認証が実行されるため、Ｓ８０３において受信した命令にはユーザ名が含まれなくともよい。以下で説明する処理では、ユーザのアクセス権の認証処理では、いずれのバリエーションを用いてもよい。
【０１５４】
図１０は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
【０１５５】
図１０に示す処理は、Ｓ８０３において受信した命令がロック取得処理の実行命令である場合に実行される処理である。
【０１５６】
Ｓ８０３おいて受信した命令には、ロックが取得されるファイルのフルパス、および当該ファイルのロックを取得するユーザのユーザ名が含まれる。
【０１５７】
以下の説明において、ロックが取得されるファイルをファイルＸとし、当該ファイルＸのロックを取得するユーザのユーザ名をユーザＹとする。
【０１５８】
Ｓ８０３において受信した命令に含まれるファイルＸのフルパスとユーザＹとを取得したファイルサーバ制御部２１３は、ロック取得処理を開始し（Ｓ１００１）、ファイル保持部２１１からファイルＸのメタデータを取得する（Ｓ１００２）。
【０１５９】
ファイルサーバ制御部２１３は、ユーザＹがファイルＸのアクセス権を持っているか否かを判定する（Ｓ１００３）。当該処理はＳ９０３と同一の処理である。
【０１６０】
ユーザＹがファイルＸのアクセス権を持っていないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを返信して、処理を終了する（Ｓ１００８）。
【０１６１】
ユーザＹがファイルＸのアクセス権を持っていると判定された場合、ファイルサーバ制御部２１３は、ファイルＸのロックを取得する（Ｓ１００４）。具体的には、ファイルサーバ制御部２１３がロック管理部２１２にロックの取得を指示し、当該指示を受けたロック管理部２１２が、ロック取得機能を用いてロックの取得を実行する。ここでは、ロック管理部２１２は、ロック管理表２１４を参照し、他のユーザがファイルＸのロックを取得していない場合はユーザＹの行をロック管理表２１４に追加し、ロック取得成功とする。一方、すでにファイルＸのロックが他のユーザによって取得されていた場合は、ロック管理部２１２はユーザＹの行をロック管理表２１４に追加せず、ロック取得失敗とする。
【０１６２】
ファイルサーバ制御部２１３は、ロックを取得できたか否かを判定する（Ｓ１００５）。すなわち、他のユーザがファイルＸのロックをすでに取得しているか否かが判定される。
【０１６３】
具体的には、手順Ｓ１００４実行後に、ファイルサーバ制御部２１３はロック管理部２１２からロックの取得可否を受け取る。
【０１６４】
ロックを取得できないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して処理を終了する（Ｓ１００８）。
【０１６５】
ロックを取得できたと判定された場合、ファイルサーバ制御部２１３は、Ｓ１００２において取得されたファイルＸのメタデータを更新し（Ｓ１００６）、ロック情報をユーザＹに送信して処理を終了する（Ｓ１００７）。
【０１６６】
ここで、送信されるロック情報は、ファイルサーバ１０５とユーザＹとの間でロックが取れたことを確認するための鍵のペアであり、当該鍵としては通し番号または乱数値などが用いられる。
【０１６７】
本実施形態では、ファイルＸのメタデータを更新では、最終アクセス日時が更新される。以下、本実施形態では断りのない限り、メタデータの更新は、最終アクセス日時の更新を意味するものとする。なお、ファイルＸのメタデータを更新処理のバリエーションとして、最終アクセス日時と最終アクセスユーザとを更新してもよいし、最終アクセス日時の粒度が最終更新日時と最終参照日時に分かれていてもよい。本発明はいずれのバリエーションを用いてもよい。
【０１６８】
図１１は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
【０１６９】
図１１に示す処理は、Ｓ８０３において受信した命令がファイルオープン処理である場合に実行される処理である。
【０１７０】
Ｓ８０３おいて受信した命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザを識別する情報、および当該ユーザに付与されたロック情報が含まれる。
【０１７１】
以下の説明において、オープンされるファイルをファイルＸとし、当該ファイルＸをオープンするユーザのユーザ名をユーザＹとする。
【０１７２】
Ｓ８０３において受信した命令に含まれるファイルＸのフルパス、ユーザＹおよびロック情報を取得したファイルサーバ制御部２１３は、ファイルオープン処理を開始し（Ｓ１１０１）、取得されたロック情報が適切であるか否かを判定する（Ｓ１１０２）。
【０１７３】
具体的には、ファイルサーバ制御部２１３が、ロック管理表２１４を参照して、取得されたロック情報がファイルＸに対応するロック情報５０３と同一であるか否かを判定する。
【０１７４】
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して処理を終了する（Ｓ１１０６）。
【０１７５】
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部２１３は、ファイル保持部２１１からファイルＸの実データを取得し（Ｓ１１０３）、さらに、ファイルＸのメタデータを更新する（Ｓ１１０４）。
【０１７６】
ファイルサーバ制御部２１３は、ユーザＹに取得されたファイルＸの実データを送信して処理を終了する（Ｓ１１０５）。
【０１７７】
図１２は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイル更新機能によって実行される処理を説明するフローチャートである。
【０１７８】
図１２に示す処理は、Ｓ８０３において受信した命令がファイル更新処理の実行命令である場合に実行される処理である。
【０１７９】
Ｓ８０３において受信した命令には、更新されるファイルのフルパス、当該ファイルを更新するユーザのユーザ名、およびロック情報が含まれる。
【０１８０】
以下の説明において、更新されるファイルをファイルＸとし、当該ファイルＸを更新するユーザのユーザ名をユーザＹとする。
【０１８１】
Ｓ８０３において受信した命令に含まれるファイルＸのフルパス、ユーザＹおよびロック情報を取得したファイルサーバ制御部２１３は、ファイル更新処理を開始し（Ｓ１２０１）、取得されたロック情報が適切であるか否かを判定する（Ｓ１２０２）。当該判定は、Ｓ１１０２と同一の処理である。
【０１８２】
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して処理を終了する（Ｓ１２０６）。
【０１８３】
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部２１３は、ファイルＸの実データを更新し（Ｓ１２０３）、さらに、ファイルＸのメタデータを更新する（Ｓ１２０４）。
【０１８４】
ファイルサーバ制御部２１３は、更新処理が成功したことを示す更新成功をユーザＹに送信して処理を終了する（Ｓ１２０５）。
【０１８５】
図１３は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイルクローズ機能によって実行される処理を説明するフローチャートである。
【０１８６】
図１３に示す処理は、Ｓ８０３において受信した命令がファイルクローズ処理の実行命令である場合に実行される処理である。
【０１８７】
Ｓ８０３において受信した命令には、クローズされるファイルのフルパス、当該ファイルをクローズするユーザのユーザ名、および当該ユーザに付与されたロック情報が含まれる。
【０１８８】
以下の説明において、更新されるファイルをファイルＸ、またファイルＸを更新するユーザのユーザ名をユーザＹとする。
【０１８９】
Ｓ８０３において受信した命令に含まれるファイルＸのフルパス、ユーザＹおよびロック情報を取得したファイルサーバ制御部２１３は、ファイルクローズ処理を開始し（Ｓ１３０１）、取得されたロック情報が適切であるか否かを判定する（Ｓ１３０２）。当該判定は、Ｓ１１０２と同一の処理である。
【０１９０】
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部２１３は、ファイルＸのメタデータを更新し（Ｓ１３０３）、ファイルクローズ処理が成功したことを示すクローズ成功をユーザＹに送信して処理を終了する（Ｓ１３０４）。
【０１９１】
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して処理を終了する（Ｓ１３０５）。
【０１９２】
図１４は、本発明の実施形態のファイルサーバ制御部２１３が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
【０１９３】
図１４に示す処理は、Ｓ８０３において受信した命令がロック解放処理である場合に実行される処理である。
【０１９４】
Ｓ８０３において受信した命令には、クローズされるファイルのフルパス、当該ファイルをクローズするユーザのユーザ名、および当該ユーザに付与されたロック情報が含まれる。
【０１９５】
以下の説明において、更新されるファイルをファイルＸ、またファイルＸを更新するユーザのユーザ名をユーザＹとする。
【０１９６】
Ｓ８０３において受信した命令に含まれるファイルＸのフルパス、ユーザＹおよびロック情報を取得したファイルサーバ制御部２１３は、ロック解放処理を開始し（Ｓ１４０１）、取得されたロック情報が適切であるか否かを判定する（Ｓ１４０２）。当該判定は、Ｓ１１０２と同一の処理である。
【０１９７】
取得されたロック情報が適切でないと判定された場合、ファイルサーバ制御部２１３は、ユーザＹにエラーを送信して処理を終了する（Ｓ１４０６）。
【０１９８】
取得されたロック情報が適切であると判定された場合、ファイルサーバ制御部２１３は、ファイルＸのメタデータを更新し（Ｓ１４０３）、ファイルＸのロックを解放する（Ｓ１４０４）。
【０１９９】
ファイルサーバ制御部２１３は、ロック解放処理が成功したことを示すロック解放成功情報をユーザに送信して処理を終了する（Ｓ１４０５）。
【０２００】
次に、キャッシュサーバ１０８について説明する。なお、キャッシュサーバ１０６、１１０は、キャッシュサーバ１０８と同一であるため説明を省略する。
【０２０１】
図１５は、本発明の実施形態のキャッシュサーバ１０８が起動時に実行する処理を説明するフローチャートである。
【０２０２】
キャッシュサーバ１０８は、起動後処理を開始し（Ｓ１５０１）、アクセス履歴保持部４１４、キュー管理部４１５、ロック管理表４１６および受付停止管理表４１７を初期化する（Ｓ１５０２）。
【０２０３】
初期化処理では、キャッシュサーバ１０８は、キュー管理部４１５に命令キューと受付停止キューとの作成を指示する。
【０２０４】
命令キューは、端末１０９、１１１または他のキャッシュサーバから命令を受け付けるためのキューである。停止キューは、端末１０９、１１１または他のキャッシュサーバからアクセスの受付が停止されているサブディレクトリパスへ送信された命令を一時的に保持するためのキューである。
【０２０５】
キャッシュサーバ１０８は、命令キューから命令を取り出し（Ｓ１５０３）、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであるか否かを判定する（Ｓ１５０４）。
【０２０６】
具体的には、キャッシュサーバ１０８は、受付停止管理表４１７を参照して、取り出された命令によってアクセスされるファイルのパスがサブディレクトリパス名６０１に格納されたサブディレクトリパスに含まれるか否かを判定する。当該ファイルのパスがサブディレクトリパス名６０１に格納されたサブディレクトリパスに含まれる場合には、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
【０２０７】
例えば、受付停止管理表４１７のサブディレクトリパス名６０１に「／ａ／ｂ」が格納され、取り出された命令によってアクセスされるファイルのフルパスが「／ａ／ｂ／ｃ．ｔｘｔ」である場合には、当該命令は受付停止中のサブディレクトリパスへのアクセスであると判定される。
【０２０８】
取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定された場合は、キャッシュサーバ１０８は、当該命令を受付停止キューの末尾に追加し（Ｓ１５０５）、Ｓ１５０３に戻りＳ１５０３〜Ｓ１５０６の処理を繰り返し実行する。
【０２０９】
取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定された場合は、キャッシュサーバ１０８は、新しくスレッドを生成して当該命令を実行し（Ｓ１５０６）、Ｓ１５０３に戻りＳ１５０３〜Ｓ１５０６の処理を繰り返し実行する。すなわち、取り出された命令に対応する処理が実行される。
【０２１０】
なお、取り出された命令を実行する場合に、新たにスレッドを生成する以外に、予め複数のスレッドを生成しておき、生成されたスレッドを使いまわすスレッドプールが用いられてもよい。これによって、取り出された命令の実行時に毎回新しいスレッドを生成するコストが高い場合にコストを削減できる。
【０２１１】
次に、キャッシュサーバ１０８のキャッシュサーバ制御部４１１が備える各機能について、図１６〜図２１を用いて説明する。
【０２１２】
図１６は、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルのメタデータ参照機能によって実行される処理を説明するフローチャートである。
【０２１３】
図１６に示す処理は、Ｓ１５０３において取り出された命令がメタデータ参照処理の実行命令である場合に実行される処理である。
【０２１４】
Ｓ１５０３において取り出された命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名および当該ユーザが位置する拠点の拠点名が含まれる。
【０２１５】
以下の説明において、メタデータが参照されるファイルをファイルＸとし、当該ファイルＸを参照するユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０２１６】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹおよび拠点Ｚを取得したキャッシュサーバ制御部４１１は、メタデータ参照処理を開始する（Ｓ１６０１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０２１７】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ１６０２）。
【０２１８】
具体的には、キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７のマスタ管理表制御部３１４にマスタ管理表３１５の送信を要求し、当該要求を受けたマスタ管理表制御部３１４がマスタ管理表送信機能用いて送信したマスタ管理表３１５を受信する。
【０２１９】
マスタ管理表３１５を取得する理由は、本実施形態では、頻繁にマスタが変更される場合を想定しているため、処理の開始時にマスタを確認する必要があるためである。
【０２２０】
なお、マスタ管理表３１５の管理方法としては、キャッシュサーバ制御部４１１は、受信したマスタ管理表３１５を一時的の保持し、キャッシュ管理サーバ１０７からマスタ管理表３１５が更新された旨の通知を受けたときにマスタ管理表３１５のキャッシュを無効化する方法が考えられる。
【０２２１】
この場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５が必要となったときに再度キャッシュ管理サーバ１０７からマスタ管理表３１５を取得してもよいし、マスタ管理表３１５が更新された旨の通知を受けた直後、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得してもよい。
【０２２２】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ１６０３）。
【０２２３】
具体的には、以下のような判定処理が実行される。
【０２２４】
まず、キャッシュサーバ制御部４１１は、ファイルＸのフルパスがサブディレクトリパス名７０１に格納されるサブディレクトリに含まれるか否かを判定する。
【０２２５】
次に、ファイルＸのフルパスがサブディレクトリパス名７０１に格納されるサブディレクトリに含まれると判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、当該サブディレクトリに対応する行のマスタ拠点名７０２が自拠点の拠点名であるか否かを判定する。
【０２２６】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ１６０４）。
【０２２７】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ１６０９）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１６１０）、Ｓ１６０５に進む。
【０２２８】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３からファイルＸのメタデータを取得する（Ｓ１６０５）。
【０２２９】
キャッシュサーバ制御部４１１は、ユーザＹがファイルＸのアクセス権を持っているか否かを判定する（Ｓ１６０６）。
【０２３０】
ユーザＹがファイルＸのアクセス権を持っていないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信し、処理を終了する（Ｓ１６１３）。
【０２３１】
ユーザＹがファイルＸのアクセス権を持っていると判定された場合、キャッシュサーバ制御部４１１は、拠点ＺからファイルＸのメタデータが参照されたことを示すアクセス履歴を記録する（Ｓ１６０７）。具体的には、キャッシュサーバ制御部４１１は、アクセス履歴保持部４１４にアクセス履歴を格納する。
【０２３２】
キャッシュサーバ制御部４１１は、ファイルＸのメタデータをファイルサーバ１０５に送信し、処理を終了する（Ｓ１６０８）。
【０２３３】
Ｓ１６０３において、ファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにメタデータ参照処理の実行を要求する（Ｓ１６１１）。
【０２３４】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹおよび拠点Ｚが含まれるメタデータ参照処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ１６０１〜Ｓ１６１３の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０２３５】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ１６１２）。
【０２３６】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ１６０８に進む。
【０２３７】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ１６１３に進む。
【０２３８】
図１７は、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルのロック取得機能によって実行される処理を説明するフローチャートである。
【０２３９】
図１７に示す処理は、Ｓ１５０３において取り出された命令がロック取得処理の実行命令である場合に実行される処理である。
【０２４０】
Ｓ１５０３において取り出された命令には、メタデータが参照されるファイルのフルパス、当該メタデータを参照するユーザのユーザ名および当該ユーザが位置する拠点の拠点名が含まれる。
【０２４１】
以下の説明において、ロックが取得されるファイルをファイルＸとし、当該ファイルＸのロックを取得するユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０２４２】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹおよび拠点Ｚを取得したキャッシュサーバ制御部４１１は、ロック取得処理を開始する（Ｓ１７０１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０２４３】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ１７０２）。なお、当該処理はＳ１６０２と同一である。
【０２４４】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ１７０３）。なお、当該処理は、Ｓ１６０３と同一の処理である。
【０２４５】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ１７０４）。なお、当該処理は、Ｓ１６０４と同一の処理である。
【０２４６】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ１７１２）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１７１３）、Ｓ１７０６に進む。なお、Ｓ１７１２およびＳ１７１３の処理は、Ｓ１６０９およびＳ１６１０と同一の処理である。
【０２４７】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３からファイルＸのメタデータを取得し（Ｓ１７０５）、ユーザＹがファイルＸのアクセス権を持っているか否かを判定する（Ｓ１７０６）。Ｓ１７０５およびＳ１７０６の処理は、Ｓ１６０５およびＳ１６０６と同一の処理である。
【０２４８】
ユーザＹがファイルＸのアクセス権を持っていないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信して処理を終了する（Ｓ１７１６）。当該処理は、Ｓ１６１３と同一の処理である。
【０２４９】
ユーザＹがファイルＸのアクセス権を持っていると判定された場合、キャッシュサーバ制御部４１１は、ファイルＸのロックを取得する（Ｓ１７０７）。具体的には、キャッシュサーバ制御部４１１がロック管理部４１２にロック取得を指示する。
【０２５０】
ロック取得の指示を受けたロック管理部４１２は、ロック取得機能を用いてファイルＸのロックを取得する。具体的には、ロック管理部４１２は、ロック管理表４１６を参照し、他のユーザがファイルＸのロックを取得していない場合はユーザＹの行をロック管理表４１６に追加し、ロック取得成功とする。一方、すでにファイルＸのロックが他のユーザによって取得されていた場合は、ロック管理部４１２はユーザＹの行をロック管理表４１６に追加せず、ロック取得失敗とする。
【０２５１】
キャッシュサーバ制御部４１１は、ロックを取得できたか否かを判定する（Ｓ１７０８）。すなわち、他のユーザがファイルＸのロックをすでに取得しているか否かが判定される。
【０２５２】
具体的には、手順Ｓ１７０７実行後に、ファイルサーバ制御部２１３はロック管理部２１２からロックの取得可否を受け取る。
【０２５３】
ロックを取得できないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信し、処理を終了する（Ｓ１７１６）。
【０２５４】
ロックが取得できたと判定された場合、キャッシュサーバ制御部４１１は、ファイルＸのメタデータを更新する（Ｓ１７０９）。すなわち、最終アクセス日時が更新される。
【０２５５】
キャッシュサーバ制御部４１１は、拠点ＺからファイルＸのロックが取得されたことを示すアクセス履歴を記録する（Ｓ１７１０）。なお、当該処理は、Ｓ１６０７と同一の処理である。
【０２５６】
キャッシュサーバ制御部４１１は、ファイルＸのメタデータをファイルサーバ１０５に送信し、処理を終了する（Ｓ１７１１）。
【０２５７】
Ｓ１７０３においてファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにロック取得処理の実行を要求する（Ｓ１７１４）。
【０２５８】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹおよび拠点Ｚが含まれるロック取得処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ１７０１〜Ｓ１７１６の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０２５９】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ１７１５）。
【０２６０】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ１７１１に進む。
【０２６１】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ１７１６に進む。
【０２６２】
なお、後述するマスタ場所更新処理のＳ２０１４を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ１０５に送信する方法がある。
【０２６３】
図１８Ａおよび図１８Ｂは、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルオープン機能によって実行される処理を説明するフローチャートである。
【０２６４】
図１８Ａおよび図１８Ｂに示す処理は、Ｓ１５０３において取り出された命令がファイルオープン処理の実行命令である場合に実行される処理である。
【０２６５】
Ｓ１５０３において取り出された命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザを識別する情報、当該ユーザが位置する拠点に関する情報およびロック情報が含まれる。
【０２６６】
以下の説明において、ロックが取得されるファイルをファイルＸとし、当該ファイルＸのロックを取得するユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０２６７】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報を取得したキャッシュサーバ制御部４１１は、ファイルオープン処理を開始する（Ｓ１８０１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０２６８】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ１８０２）。なお、当該処理はＳ１６０２と同一である。
【０２６９】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ１８０３）。なお、当該処理は、Ｓ１６０３と同一の処理である。
【０２７０】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、取得されたロック情報が適切であるか否かを判定する（Ｓ１８０４）。
【０２７１】
具体的には、取得されたファイルＸのフルパスを用いて、ロック管理表４１６を参照し、ファイルＸのフルパスに対応する行のロック情報５０３と取得されたロック情報とが一致するか否かを判定する。
【０２７２】
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信して処理を終了する（Ｓ１８１７）。当該処理は、Ｓ１６１３と同一の処理である。
【０２７３】
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸの実データが格納されるか否かを判定する（Ｓ１８０５）。
【０２７４】
キャッシュ保持部４１３にファイルＸの実データが格納されないと判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ１８１０）。なお、当該処理は、Ｓ１６０４と同一の処理である。
【０２７５】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ１８１３）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１８１４）、Ｓ１８１１に進む。なお、Ｓ１８１３およびＳ１８１４の処理は、Ｓ１６０９およびＳ１６１０と同一の処理である。
【０２７６】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸの実データを取得し（Ｓ１８１１）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１８１２）、Ｓ１８０６に進む。
【０２７７】
Ｓ１８０５において、キャッシュ保持部４１３にファイルＸの実データが格納されると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３からファイルＸの実データを取得する（Ｓ１８０６）。
【０２７８】
キャッシュサーバ制御部４１１は、ファイルＸのメタデータを更新する（Ｓ１８０７）。当該処理は、Ｓ１７０９と同一の処理である。
【０２７９】
キャッシュサーバ制御部４１１は、拠点ＺからファイルＸがオープンされたことを示すアクセス履歴を記録する（Ｓ１８０８）。なお、当該処理は、Ｓ１６０７と同一の処理である。
【０２８０】
キャッシュサーバ制御部４１１は、ファイルＸの実データをファイルサーバ１０５に送信し、処理を終了する（Ｓ１８０９）。
【０２８１】
Ｓ１８０３において、ファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにファイルオープン処理の実行を要求する（Ｓ１８１５）。
【０２８２】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報が含まれるロック取得処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ１８０１〜Ｓ１８１７の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０２８３】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ１８１６）。
【０２８４】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ１８０９に進む。
【０２８５】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ１８１７に進む。
【０２８６】
なお、後述するマスタ場所更新処理のＳ２０１４を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ１０５に送信する方法がある。
【０２８７】
図１９Ａおよび図１９Ｂは、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルの実データ更新機能によって実行される処理を説明するフローチャートである。
【０２８８】
図１９Ａおよび図１９Ｂに示す処理は、Ｓ１５０３において取り出された命令が実データ更新処理の実行命令である場合に実行される処理である。
【０２８９】
Ｓ１５０３において取り出された命令には、オープンされるファイルのフルパス、当該ファイルをオープンするユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
【０２９０】
以下の説明において、ロックが取得されるファイルをファイルＸとし、当該ファイルＸのロックを取得するユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０２９１】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報を取得したキャッシュサーバ制御部４１１は、実データ更新処理を開始する（Ｓ１９０１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０２９２】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ１９０２）。なお、当該処理はＳ１６０２と同一である。
【０２９３】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ１９０３）。なお、当該処理は、Ｓ１６０３と同一の処理である。
【０２９４】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、取得されたロック情報が適切であるか否かを判定する（Ｓ１９０４）。当該処理は、Ｓ１８０４と同一の処理である。
【０２９５】
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信し、処理を終了する（Ｓ１９１７）。当該処理は、Ｓ１６１３と同一の処理である。
【０２９６】
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸの実データが格納されるか否かを判定する（Ｓ１９０５）。
【０２９７】
キャッシュ保持部４１３にファイルＸの実データが格納されないと判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ１９１０）。なお、当該処理は、Ｓ１６０４と同一の処理である。
【０２９８】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ１９１３）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１９１４）、Ｓ１９１１に進む。なお、Ｓ１９１３およびＳ１９１４の処理は、Ｓ１６０９およびＳ１６１０と同一の処理である。
【０２９９】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸの実データを取得し（Ｓ１９１１）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ１９１２）、Ｓ１９０６に進む。なお、Ｓ１９１１およびＳ１９１２の処理は、Ｓ１８１１およびＳ１８１２と同一の処理である。
【０３００】
Ｓ１９０５において、キャッシュ保持部４１３にファイルＸの実データが格納されると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３に格納されたファイルＸの実データを更新する（Ｓ１９０６）。
【０３０１】
キャッシュサーバ制御部４１１は、ファイルＸのメタデータを更新する（Ｓ１９０７）。当該処理は、Ｓ１７０９と同一の処理である。
【０３０２】
キャッシュサーバ制御部４１１は、拠点ＺからファイルＸが更新されたことを示すアクセス履歴を記録する（Ｓ１９０８）。なお、当該処理は、Ｓ１６０７と同一の処理である。
【０３０３】
キャッシュサーバ制御部４１１は、ファイルＸの実データをファイルサーバ１０５に送信し、処理を終了する（Ｓ１９０９）。
【０３０４】
Ｓ１９０３において、ファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにファイルオープン処理の実行を要求する（Ｓ１９１５）。
【０３０５】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報が含まれる実データ更新処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ１９０１〜Ｓ１９１７の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０３０６】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ１９１６）。
【０３０７】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ１９０９に進む。
【０３０８】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ１９１７に進む。
【０３０９】
なお、後述するマスタ場所更新処理のＳ２０１４を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ１０５に送信する方法がある。
【０３１０】
図２０は、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルのクローズ機能によって実行される処理を説明するフローチャートである。
【０３１１】
図２０に示す処理は、Ｓ１５０３において取り出された命令がファイルクローズ処理の実行命令である場合に実行される処理である。
【０３１２】
Ｓ１５０３において取り出された命令には、クローズされるファイルのフルパス、ファイルをクローズするユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
【０３１３】
以下の説明において、クローズされるファイルをファイルＸとし、当該ファイルＸをクローズするユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０３１４】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報を取得したキャッシュサーバ制御部４１１は、ファイルクローズ処理を開始する（Ｓ２００１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０３１５】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ２００２）。なお、当該処理はＳ１６０２と同一である。
【０３１６】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ２００３）。なお、当該処理はＳ１６０３と同一の処理である。
【０３１７】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、取得されたロック情報が適切であるか否かを判定する（Ｓ２００４）。なお、当該処理はＳ１８０４と同一の処理である。
【０３１８】
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信して処理を終了する（Ｓ２０１３）。なお、当該処理はＳ１６１３と同一の処理である。
【０３１９】
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ２００５）。なお、当該処理は、Ｓ１６０４と同一の処理である。
【０３２０】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ２００９）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ２０１０）、Ｓ２００６に進む。なお、Ｓ２００９およびＳ２０１０の処理は、Ｓ１６０９およびＳ１６１０と同一の処理である。
【０３２１】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、ファイルＸのメタデータを更新する（Ｓ２００６）。なお、当該処理はＳ１７０９と同一の処理である。
【０３２２】
キャッシュサーバ制御部４１１は、拠点ＺからファイルＸがクローズされたことを示すアクセス履歴を記録する（Ｓ２００７）。なお、当該処理は、Ｓ１６０７と同一の処理である。
【０３２３】
キャッシュサーバ制御部４１１は、ファイルクローズ処理が完了したことを示すファイルクローズ完了をユーザに送信し、処理を終了する（Ｓ２００８）。
【０３２４】
Ｓ２００３において、ファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにファイルクローズ処理の実行を要求する（Ｓ２０１１）。
【０３２５】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報が含まれるファイルクローズ処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ２００１〜Ｓ２０１３の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０３２６】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ２０１２）。
【０３２７】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ２００８に進む。
【０３２８】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ２０１３に進む。
【０３２９】
なお、後述するマスタ場所更新処理のＳ２０１４を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュサーバに格納されるメタデータをファイルサーバ１０５に送信する方法がある。
【０３３０】
図２１は、本発明の実施形態のキャッシュサーバ制御部４１１が備えるファイルのロック解放機能によって実行される処理を説明するフローチャートである。
【０３３１】
図２１に示す処理は、Ｓ１５０３において取り出された命令がロック解放処理の実行命令である場合に実行される処理である。
【０３３２】
Ｓ１５０３において取り出された命令には、ロックが解放されるファイルのフルパス、ファイルのロックを解放するユーザのユーザ名、当該ユーザが位置する拠点の拠点名およびロック情報が含まれる。
【０３３３】
以下の説明において、ロックが解放されるファイルをファイルＸとし、当該ファイルＸのロックを解放するユーザのユーザ名をユーザＹとし、当該ユーザＹが位置する拠点の拠点名を拠点Ｚとする。
【０３３４】
Ｓ１５０３において取り出された命令に含まれるファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報を取得したキャッシュサーバ制御部４１１は、ロック解放処理を開始する（Ｓ２１０１）。なお、Ｓ１５０３において取り出された命令には、拠点名が含まれていなくともよく、この場合、拠点名をキャッシュサーバ１０８自身が位置する拠点の拠点名として処理が実行される。
【０３３５】
キャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からマスタ管理表３１５を取得する（Ｓ２１０２）。なお、当該処理はＳ１６０２と同一である。
【０３３６】
キャッシュサーバ制御部４１１は、取得されたマスタ管理表３１５を参照して、ファイルＸのマスタが自拠点であるか否かを判定する（Ｓ２１０３）。なお、当該処理はＳ１６０３と同一の処理である。
【０３３７】
ファイルＸのマスタが自拠点であると判定された場合、キャッシュサーバ制御部４１１は、取得されたロック情報が適切であるか否かを判定する（Ｓ２１０４）。なお、当該処理はＳ１８０４と同一の処理である。
【０３３８】
取得されたロック情報が適切でないと判定された場合、キャッシュサーバ制御部４１１は、ユーザＹにエラーを送信し、処理を終了する（Ｓ２１１４）。なお、当該処理はＳ１６１３と同一の処理である。
【０３３９】
取得されたロック情報が適切であると判定された場合、キャッシュサーバ制御部４１１は、キャッシュ保持部４１３にファイルＸのメタデータが格納されるか否かを判定する（Ｓ２１０５）。なお、当該処理は、Ｓ１６０４と同一の処理である。
【０３４０】
キャッシュ保持部４１３にファイルＸのメタデータが格納されないと判定された場合、キャッシュサーバ制御部４１１は、ファイルサーバ１０５からファイルＸのメタデータを取得し（Ｓ２１１０）、取得されたファイルＸのメタデータをキャッシュ保持部４１３に格納して（Ｓ２１１１）、Ｓ２１０６に進む。なお、Ｓ２１１０およびＳ２１１１の処理は、Ｓ１６０９およびＳ１６１０と同一の処理である。
【０３４１】
キャッシュ保持部４１３にファイルＸのメタデータが格納されると判定された場合、キャッシュサーバ制御部４１１は、ファイルＸのロックを解放する（Ｓ２１０６）。具体的には、キャッシュサーバ制御部４１１は、ロック管理表４１６からファイルＸに対応する行を削除する。
【０３４２】
キャッシュサーバ制御部４１１は、ファイルＸのメタデータを更新する（Ｓ２１０７）。なお、当該処理はＳ１７０９と同一の処理である。
【０３４３】
キャッシュサーバ制御部４１１は、拠点ＺからファイルＸのロックが解放されたことを示すアクセス履歴を記録する（Ｓ２１０８）。なお、当該処理は、Ｓ１６０７と同一の処理である。
【０３４４】
キャッシュサーバ制御部４１１は、ロック解放処理が完了したことを示すロック完了をユーザに送信し、処理を終了する（Ｓ２１０９）。
【０３４５】
Ｓ２１０３において、ファイルＸのマスタが自拠点でないと判定された場合、キャッシュサーバ制御部４１１は、マスタ管理表３１５を参照して、ファイルＸのマスタである他のキャッシュサーバにロック解放処理の実行を要求する（Ｓ２１１２）。
【０３４６】
具体的には、キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバに、ファイルＸのフルパス、ユーザＹ、拠点Ｚおよびロック情報が含まれるロック解放処理の実行要求を送信する。当該実行要求を受信した、ファイルＸのマスタである他のキャッシュサーバは、Ｓ２１０１〜Ｓ２１１４の処理を実行し、当該処理の実行結果をキャッシュサーバ制御部４１１に送信する。
【０３４７】
キャッシュサーバ制御部４１１は、ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであるか否かを判定する（Ｓ２１１３）。
【０３４８】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーでないと判定された場合、キャッシュサーバ制御部４１１は、Ｓ２１０９に進む。
【０３４９】
ファイルＸのマスタである他のキャッシュサーバから送信された処理結果がエラーであると判定された場合、キャッシュサーバ制御部４１１は、Ｓ２１１４に進む。
【０３５０】
なお、後述するマスタ場所更新処理のＳ２０１４を高速化するためのバリエーションとして、実データ更新処理実行後に、キャッシュされたメタデータをファイルサーバ（１０２）に反映させる方法がある。
【０３５１】
次に、キャッシュ管理サーバ１０７について説明する。
【０３５２】
図２２は、本発明の実施形態のキャッシュ管理サーバ１０７が起動後に実行する処理を説明するフローチャートである。
【０３５３】
キャッシュ管理サーバ１０７は、起動後、処理を開始し（Ｓ２２０１）、キュー管理部３１２、マスタ管理表制御ＵＩ部３１３およびマスタ管理表３１５を初期化する（Ｓ２２０２）。
【０３５４】
初期化処理では、キャッシュ管理サーバ１０７は、キュー管理部３１２に管理キューと制御キューとの作成を指示する。
【０３５５】
管理キューは、マスタ管理表制御ＵＩ部３１３から管理命令を受け付けるためのキューである。なお、管理命令とはファイルの実データおよびメタデータの取得や更新ではない命令であり、本実施形態ではマスタ場所更新処理と偏り集計処理を指示する命令である。制御キューは、キャッシュサーバから制御情報を受け付けるためのキューである。なお、制御情報とは管理命令実行中に各処理においてやり取りされる情報である。
【０３５６】
キャッシュ管理サーバ１０７は、管理キューから命令を取り出し（Ｓ２２０３）、取り出された命令を実行し（Ｓ２２０４）、Ｓ２２０３に戻りＳ２２０３〜Ｓ２２０４の処理を繰り返し実行する。すなわち、取り出された命令に対応する処理が実行される。
【０３５７】
次に、キャッシュ管理サーバ１０７のマスタ管理表制御ＵＩ部３１３が備える各機能について図２３〜図２８を用いて説明する。
【０３５８】
図２３は、本発明の実施形態のマスタ管理表制御ＵＩ部３１３が備えるマスタ場所変更ＵＩ機能およびキャッシュサーバ制御部が備えるマスタ変更機能によって実行される処理の概要を説明するシーケンス図である。
【０３５９】
本実施形態では、キャッシュサーバ１０８からキャッシュサーバ１１０にマスタが変更される場合について説明する。以下、キャッシュサーバ１０８を旧キャッシュサーバ１０８と記載し、キャッシュサーバ１１０を新キャッシュサーバ１１０と記載する。また、キャッシュサーバ１０８のキャッシュサーバ制御部４１１を旧キャッシュサーバ制御部４１１−１と記載し、キャッシュサーバ１１０のキャッシュサーバ制御部４１１を新キャッシュサーバ制御部４１１−２と記載する。
【０３６０】
マスタ管理表制御ＵＩ部３１３は、マスタ場所変更ＵＩ機能の実行を開始し、現在マスタである旧キャッシュサーバ１０８の旧キャッシュサーバ制御部４１１−１に、更新処理開始命令を送信する（Ｓ２３０１）。
【０３６１】
なお、更新処理開始命令には、旧キャッシュサーバ１０８がマスタとして管理するサブディレクトリのサブディレクトリパス名と、旧キャッシュサーバ１０８の識別子および新キャッシュサーバ１１０の識別子が含まれる。本実施形態では、旧キャッシュサーバ１０８の識別子および新キャッシュサーバ１１０の識別子は、キャッシュサーバ１０８およびキャッシュサーバ１１０の名称とする。
【０３６２】
以下の説明において、更新処理開始命令に含まれるサブディレクトリパス名をサブディレクトリパスＡとし、旧キャッシュサーバ１０８の名称をキャッシュサーバＢとし、新キャッシュサーバ１１０の名称をキャッシュサーバＣとする。
【０３６３】
マスタ管理表制御ＵＩ部３１３から更新処理開始命令を受信した旧キャッシュサーバ制御部４１１−１は、マスタ場所の更新処理を開始する。
【０３６４】
まず、旧キャッシュサーバ制御部４１１−１は、更新処理開始命令に含まれる新キャッシュサーバ１１０の名称を参照することによって、新キャッシュサーバ１１０を特定し、新キャッシュサーバ１１０の新キャッシュサーバ制御部４１１−２に更新処理開始命令を送信する（Ｓ２３０２）。なお、更新処理開始命令には、サブディレクトリパスＡが含まれる。
【０３６５】
旧キャッシュサーバ制御部４１１−１は、受付停止管理表４１７を更新する（Ｓ２３０３）。また。旧キャッシュサーバ制御部４１１−１から更新処理開始命令を受信した新キャッシュサーバ制御部４１１−２も同様に、受付停止管理表４１７を更新する（Ｓ２３０５）。
【０３６６】
具体的には、旧キャッシュサーバ制御部４１１−１および新キャッシュサーバ制御部４１１−２は、受付停止管理表４１７のサブディレクトリパス名６０１にサブディレクトリパスＡを追加する。
【０３６７】
Ｓ２３０３およびＳ２３０５の処理によって、受付停止管理表４１７に追加されたサブディレクトリパスＡ以下のファイルに対する命令が受付停止キューに格納される。すなわち、旧キャッシュサーバ制御部４１１−１および新キャッシュサーバ制御部４１１−２は、他のキャッシュサーバからのアクセスを受け付けることが可能となる。これによって、他のキャッシュサーバからの命令を停止することなくマスタを変更することが可能となる。
【０３６８】
旧キャッシュサーバ制御部４１１−１は、キャッシュ保持部４１３に格納されるサブディレクトリパスＡ以下のファイルのキャッシュ（実データおよびメタデータ）をファイルサーバ１０５に書き戻す（ライトバックする）（Ｓ２３０４）。なお、サブディレクトリパスＡ以下のファイルのキャッシュは、新キャッシュサーバ１１０に送信されてもよい。
【０３６９】
旧キャッシュサーバ制御部４１１−１は、ロック管理表４１６の該当行をキャッシュサーバ制御部４１１−２に移動させる（Ｓ２３０６）。
【０３７０】
具体的には、旧キャッシュサーバ制御部４１１−１は、ロック管理表４１６からサブディレクトリパスＡ以下のファイルに対応する情報が格納される行を抽出し、抽出された行に含まれる情報を新キャッシュサーバ制御部４１１−２に送信し、また、ロック管理表４１６から当該行を削除する。
【０３７１】
新キャッシュサーバ制御部４１１−２は、サブディレクトリパスＡ以下のファイルに対応する情報に基づいて、ロック管理表４１６を更新する（Ｓ２３０７）。
【０３７２】
具体的には、新キャッシュサーバ制御部４１１−２は、サブディレクトリパスＡ以下のファイルに対応する情報をロック管理表４１６に追加する。当該処理によって、マスタが旧キャッシュサーバ１０８から新キャッシュサーバ１１０に変更される。
【０３７３】
旧キャッシュサーバ制御部４１１−１は、サブディレクトリパスＡ以下のファイルに対するアクセスの受付開始命令を新キャッシュサーバ制御部４１１−２に対して送信する（Ｓ２３０８）。なお、当該受付開始命令は、新キャッシュサーバ制御部４１１−２の制御キューに格納される。
【０３７４】
旧キャッシュサーバ制御部４１１−１は、受付停止管理表４１７を更新する（Ｓ２３０９）。また、受付開始命令を受信した新キャッシュサーバ制御部４１１−２も同様に、受付停止管理表４１７を更新する（Ｓ２３１１）。
【０３７５】
具体的には、旧キャッシュサーバ制御部４１１−１および新キャッシュサーバ制御部４１１−２は、受付停止管理表４１７のサブディレクトリパス名６０１からサブディレクトリパスＡを削除する。
【０３７６】
旧キャッシュサーバ制御部４１１−１は、受付停止キューに格納された命令を命令キューの先頭に挿入（プッシュ）する（Ｓ２３１０）。
【０３７７】
サブディレクトリパスＡのマスタは新キャッシュサーバ制御部４１１−２であるため、新キャッシュサーバ制御部４１１−２に、受付停止キューに格納されたサブディレクトリパスＡ以下のファイルに対する命令が送信される。
【０３７８】
新キャッシュサーバ制御部４１１−２は、受付停止キューに格納された命令を命令キューの先頭に挿入（プッシュ）する（Ｓ２３１２）。
【０３７９】
新キャッシュサーバ制御部４１１−２自身がサブディレクトリパスＡのマスタであるため、新キャッシュサーバ制御部４１１−２が受付停止キューに格納されたサブディレクトリパスＡ以下のファイルに対する命令を実行する。
【０３８０】
なお、この時点では、旧キャッシュサーバ制御部４１１−１および新キャッシュサーバ制御部４１１−２のみがマスタが変更されたことを認識しているが、他のキャッシュサーバは、マスタが変更されたことを認識できない。
【０３８１】
旧キャッシュサーバ制御部４１１−１は、マスタ場所更新処理の完了通知をマスタ管理表制御ＵＩ部３１３に送信する（Ｓ２３１３）。当該通知は、キャッシュ管理サーバ１０７の制御キューに入力される。
【０３８２】
完了通知を受信したマスタ管理表制御ＵＩ部３１３は、マスタ管理表３１５を更新し処理を終了する（Ｓ２３１４）。マスタ管理表３１５が更新されることによって、他のキャッシュサーバが、旧キャッシュサーバ制御部４１１−１から新キャッシュサーバ制御部４１１−２にマスタが変更されたことを認識することが可能となる。
【０３８３】
以上で説明した処理によって、旧キャッシュサーバ１０８および新キャッシュサーバ１１０以外のキャッシュサーバがマスタの変更を認識していなくとも、当該キャッシュサーバに影響を与えることなくマスタの変更が可能となる。
【０３８４】
以下、マスタ管理表制御ＵＩ部３１３、旧キャッシュサーバ制御部４１１−１および新キャッシュサーバ制御部４１１−２のそれぞれの処理の詳細について説明する。
【０３８５】
図２４は、本発明の実施形態のマスタ場所更新処理実行時における、マスタ管理表制御ＵＩ部３１３が実行する処理の詳細を説明するフローチャートである。
【０３８６】
マスタ管理表制御ＵＩ部３１３は、制御端末１０４からマスタ場所更新処理の開始命令を受信し、マスタ場所更新処理を開始する（Ｓ２４０１）。当該マスタ場所更新処理の開始命令には、サブディレクトリパスＡ、キャッシュサーバＢおよびキャッシュサーバＣが含まれる。
【０３８７】
マスタ管理表制御ＵＩ部３１３は、旧キャッシュサーバ制御部４１１−１にマスタ場所更新処理開始命令を送信する（Ｓ２４０２）。
【０３８８】
具体的には、マスタ管理表制御ＵＩ部３１３は、旧キャッシュサーバ１０８の命令キューにサブディレクトリパスＡとキャッシュサーバＣを引数にマスタ場所更新処理開始命令を格納し、マスタ場所更新処理の開始を指示する。
【０３８９】
マスタ管理表制御ＵＩ部３１３は、制御キューから制御情報を取り出し（Ｓ２４０３）、取り出された制御情報がマスタ場所更新処理の完了通知であるか否かを判定する（Ｓ２４０４）。
【０３９０】
取り出された制御情報がマスタ場所更新処理の完了通知でないと判定された場合、マスタ管理表制御ＵＩ部３１３は、取り出された制御情報を制御キューの先頭に戻し、（Ｓ２４０７）、Ｓ２４０３〜Ｓ２４０７の処理を実行する。
【０３９１】
取り出された制御情報がマスタ場所更新処理の完了通知であると判定された場合、マスタ管理表制御ＵＩ部３１３は、マスタ管理表３１５を更新し（Ｓ２４０５）、処理を終了する（Ｓ２４０６）。
【０３９２】
図２５は、本発明の実施形態のマスタ場所更新処理実行時における、旧キャッシュサーバ１０８の旧キャッシュサーバ制御部４１１−１が実行する処理の詳細を説明するフローチャートである。
【０３９３】
マスタ管理表制御ＵＩ部３１３から更新処理開始命令を受信した旧キャッシュサーバ制御部４１１−１は、マスタ場所更新処理を開始する（Ｓ２５０１）。具体的には、更新処理開始命令は、命令キュー入力され、旧キャッシュサーバ制御部４１１−１が図１５に示す処理を開始する。この場合、Ｓ１５０４において、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
【０３９４】
なお、当該更新処理開始命令には、サブディレクトリパスＡおよびキャッシュサーバＣが含まれる。
【０３９５】
旧キャッシュサーバ制御部４１１−１は、新キャッシュサーバ制御部４１１−２に更新処理開始命令を送信する（Ｓ２５０２）。なお、当該更新処理開始命令には、ディレクトリパスＡが含まれる。
【０３９６】
旧キャッシュサーバ制御部４１１−１は、受付停止管理表４１７にサブディレクトリパスＡを追加する（Ｓ２５０３）。
【０３９７】
旧キャッシュサーバ制御部４１１−１は、キャッシュ保持部４１３に格納されるサブディレクトリパスＡ以下のファイルのキャッシュをファイルサーバ１０５に書き戻す（ライトバックする）（Ｓ２５０４）。なお、サブディレクトリパスＡ以下のファイルのキャッシュは、新キャッシュサーバ１１０に送信されてもよい。
【０３９８】
旧キャッシュサーバ制御部４１１−１は、サブディレクトリパスＡ以下のファイルのロック情報を新キャッシュサーバ制御部４１１−２に送信する（Ｓ２５０５）。
【０３９９】
具体的には、旧キャッシュサーバ制御部４１１−１は、ロック管理表４１６のサブディレクトリパスＡ以下のファイルに対応する情報が含まれる行を抽出し、抽出された行に含まれる情報を新キャッシュサーバ制御部４１１−２に送信するとともに、ロック管理表４１６から当該行を削除する。
【０４００】
なお、ロック管理表４１６のサブディレクトリパスＡ以下のファイルに対応する行の情報は、新キャッシュサーバ１１０の制御キューに入力される。
【０４０１】
旧キャッシュサーバ制御部４１１−１は、新キャッシュサーバ制御部４１１−２にディレクトリパスＡ以下のファイルに対する命令の受付開始要求を送信する（Ｓ２５０６）。なお、当該受付開始要求は、新キャッシュサーバ１１０の制御キューに入力される。
【０４０２】
旧キャッシュサーバ制御部４１１−１は、受付停止管理表４１７からディレクトリパスＡを削除する（Ｓ２５０７）。
【０４０３】
旧キャッシュサーバ制御部４１１−１は、サブディレクトリパスＡ以下のファイルに対する命令を命令キューの先頭に挿入する（Ｓ２５０８）。
【０４０４】
具体的には、旧キャッシュサーバ制御部４１１−２は、受付停止キューからサブディレクトリパスＡ以下のファイルに対する命令を検索し、検索されたサブディレクトリパスＡ以下のファイルに対する命令を命令キューの先頭に挿入する。
【０４０５】
旧キャッシュサーバ制御部４１１−１は、マスタ場所更新処理の完了通知をマスタ管理表制御ＵＩ部３１３に送信し、処理を終了する（Ｓ２５０９）。
【０４０６】
図２６は、本発明の実施形態のマスタ場所更新処理実行時における、新キャッシュサーバ１１０の新キャッシュサーバ制御部４１１−２が実行する処理の詳細を説明するフローチャートである。
【０４０７】
新キャッシュサーバ制御部４１１−２は、旧キャッシュサーバ制御部４１１−１からマスタ場所更新処理の開始要求を受信し、マスタ場所更新処理を開始する（Ｓ２６０１）。
【０４０８】
なお、当該開始要求は、命令キューに入力され、新キャッシュサーバ制御部４１１−２が図１５に示す処理を開始する。この場合、Ｓ１５０４において、取り出された命令が受付停止中のサブディレクトリパスへのアクセスであると判定される。
【０４０９】
なお、当該開始要求には、サブディレクトリパスＡが含まれる。
【０４１０】
新キャッシュサーバ制御部４１１−２は、受付停止管理表４１７にサブディレクトリパスＡを追加する（Ｓ２６０２）。
【０４１１】
新キャッシュサーバ制御部４１１−２は、制御キューから制御情報を取り出し（Ｓ２６０３）、取り出された制御情報がロック引き継ぎに関する情報であるか否かを判定する（Ｓ２６０４）。
【０４１２】
具体的には、新キャッシュサーバ制御部４１１−２は、取り出された制御情報がサブディレクトリパスＡ以下のファイルのロックに関する情報であるか否かを判定する。
【０４１３】
取り出された制御情報がロック引き継ぎに関する情報でないと判定された場合、新キャッシュサーバ制御部４１１−２は、取り出された制御情報を制御キューの先頭に戻し、（Ｓ２６１１）、Ｓ２６０１〜Ｓ２６１２の処理を実行する。
【０４１４】
取り出された制御情報がロック引き継ぎに関する情報であると判定された場合、新キャッシュサーバ制御部４１１−２は、ロック管理表４１６を更新する（Ｓ２６０５）。
【０４１５】
具体的には、新キャッシュサーバ制御部４１１−２は、サブディレクトリパスＡ以下のファイルのロックに関する情報をロック管理表４１６に追加する。
【０４１６】
新キャッシュサーバ制御部４１１−２は、制御キューから制御情報を取り出し（Ｓ２６０６）、取り出された制御情報がサブディレクトリパスＡ以下のファイルに対する命令の受付開始命令であるか否かを判定する（Ｓ２６０７）。
【０４１７】
取り出された制御情報がサブディレクトリパスＡ以下のファイルに対する命令の受付開始命令でないと判定された場合、新キャッシュサーバ制御部４１１−２は、取り出された制御情報を制御キューの先頭に戻し、（Ｓ２６１２）、Ｓ２６０６〜Ｓ２６１２の処理を実行する。
【０４１８】
取り出された制御情報がサブディレクトリパスＡ以下のファイルに対する命令の受付開始命令であると判定された場合、新キャッシュサーバ制御部４１１−２は、受付停止管理表４１７を更新する（Ｓ２６０８）。
【０４１９】
具体的には、新キャッシュサーバ制御部４１１−２は、サブディレクトリパスＡに対応する行を受付停止管理表４１７から削除する。
【０４２０】
新キャッシュサーバ制御部４１１−２は、サブディレクトリパスＡ以下のファイルに対する命令を命令キューの先頭に挿入し（Ｓ２６０９）、処理を終了する（Ｓ２６１０）。
【０４２１】
具体的には、新キャッシュサーバ制御部４１１−２は、受付停止キューからサブディレクトリパスＡ以下のファイルに対する命令を検索し、検索されたサブディレクトリパスＡ以下のファイルに対する命令を命令キューの先頭に挿入する。
【０４２２】
図２７は、本発明の実施形態のキャッシュ管理サーバ１０７のマスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能によって実行される処理を説明するフローチャートである。
【０４２３】
マスタ管理表制御ＵＩ部３１３は、制御端末１０４から偏り集計処理の開始要求を受信し、偏り集計処理を開始する（Ｓ２７０１）。なお、マスタ管理表制御ＵＩ部３１３は、周期的に当該処理を実行してもよい。
【０４２４】
マスタ管理表制御ＵＩ部３１３は、全てのキャッシュサーバ（本実施形態では、キャッシュサーバ１０６、１０８、１１０）にアクセス履歴の送信命令を送信する（Ｓ２７０２）。
【０４２５】
アクセス履歴の送信命令は、各キャッシュサーバ（本実施形態では、キャッシュサーバ１０６、１０８、１１０）の命令キューに入力される。アクセス履歴の送信命令に対する処理結果はキャッシュ管理サーバ１０７の制御キューに出力される。また、マスタ管理表制御ＵＩ部３１３は、キャッシュ管理サーバ１０７の制御キューからアクセス履歴を取得する。
【０４２６】
マスタ管理表制御ＵＩ部３１３は、キャッシュ管理サーバ１０７の制御キューから制御情報を取得し（Ｓ２７０３）、取得された制御情報がアクセス履歴であるか否かを判定する（Ｓ２７０４）。
【０４２７】
取得された制御情報がアクセス履歴でないと判定された場合、マスタ管理表制御ＵＩ部３１３は、取り出された制御情報を制御キューの先頭に戻し、（Ｓ２７０８）、Ｓ２７０４〜Ｓ２７０８の処理を実行する。
【０４２８】
取得された制御情報がアクセス履歴であると判定された場合、マスタ管理表制御ＵＩ部３１３は、全てのキャッシュサーバ（本実施形態では、キャッシュサーバ１０６、１０８、１１０）からアクセス履歴を受信したか否かを判定する（Ｓ２７０５）。
【０４２９】
当該判定は、例えば、アクセス履歴の受信回数と計算機システム内のキャッシュサーバの数とが同一か否か判定することによってできる。
【０４３０】
全てのキャッシュサーバ（本実施形態では、キャッシュサーバ１０６、１０８、１１０）からアクセス履歴を受信していないと判定された場合、マスタ管理表制御ＵＩ部３１３は、Ｓ２７０４に戻り、Ｓ２７０４〜Ｓ２７０８の処理を実行する。
【０４３１】
全てのキャッシュサーバ（本実施形態では、キャッシュサーバ１０６、１０８、１１０）からアクセス履歴を受信したと判定された場合、マスタ管理表制御ＵＩ部３１３は、全てのファイルのフルパスごとにアクセス履歴を集計し（Ｓ２７０６）、集計結果を出力するための出力情報を生成し、処理を終了する（Ｓ２７０７）。
【０４３２】
具体的には、マスタ管理表制御ＵＩ部３１３は、キャッシュサーバごとのファイルのフルパスに対するアクセス数を算出する。例えば、ファイルのフルパス「／ａ／ｂ／ｃ．ｔｘｔ」に対して拠点Ａ１０２のキャッシュサーバ１０８からのアクセスが９５回、拠点Ｂ１０３のキャッシュサーバ１１０からのアクセスが５回と算出される。また、「／ａ／ｂ／」などサブディレクトリのパスの場合、サブディレクトリ配下に含まれる全てのファイルに対するアクセス数が算出される。
【０４３３】
図２８は、本発明の実施形態のキャッシュサーバ１０８、１１０がアクセス履歴の送信命令を受信したときに実行する処理を説明するフローチャートである。
【０４３４】
キャッシュサーバ１０８、１１０のキャッシュサーバ制御部４１１は、キャッシュ管理サーバ１０７からアクセス履歴の送信命令を受信し、アクセス履歴送信処理を開始する（Ｓ２８０１）。
【０４３５】
キャッシュサーバ制御部４１１は、アクセス履歴保持部４１４に格納される全てのアクセス履歴をキャッシュ管理サーバ１０７の制御キューに送信する（Ｓ２８０２）。
【０４３６】
キャッシュサーバ制御部４１１は、アクセス履歴保持部４１４に格納される全てのアクセス履歴を消去し、処理を終了する（Ｓ２８０３）。
【０４３７】
以上の処理によって、キャッシュサーバごとの全てのサブディレクトリについてのアクセス数を求めることができる。
【０４３８】
本実施形態では、初回時には全ファイルのマスタは、中央拠点１０１のキャッシュサーバ１０６である。この状態から処理の実行開始後、アクセス偏りの大きい、すなわち、アクセス数の多いサブディレクトリから順に他の拠点のキャッシュサーバにマスタが変更される。また、マスタの変更のトリガは、制御端末１０４から出力される。
【０４３９】
この場合、以下のようなユースケースが考えられる。
１．管理者が制御端末１０４を用いて、マスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能を実行し、サブディレクトリごとのアクセス履歴を取得する。
２．管理者が取得されたアクセス履歴に基づいて、アクセス偏りが大きいサブディレクトリを特定する。
３．管理者が特定されたサブディレクトリごとに、制御端末１０４を用いてマスタ管理表制御ＵＩ部３１３が備えるマスタ場所変更ＵＩ機能を実行し、マスタを変更する。
【０４４０】
また、他のユースケースとして、自動的にマスタの変更を実行するユースケースが考えられる。この場合、予めアクセス偏りの判定条件を設定しておく必要がある。例えば、アクセス偏りの判定条件としては以下のようなものが考えられる。
１．アクセス偏り集計間隔：１時間ごと。
２．アクセス偏りしきい値：システム全体へのアクセスの９０％以上。
３．アクセス均一しきい値：システム全体へのアクセスの７０％以上。
【０４４１】
前述した判定条件を用いて、以下のように自動的に管理する方法が考えられる。
１．制御端末１０４は、制御端末１０４が備えるタイマに基づいて、アクセス偏り集計間隔時間が経過した後に処理を実行する。
２．制御端末１０４は、マスタ管理表制御ＵＩ部３１３からマスタ管理表を取得する。
３．制御端末１０４は、マスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能を実行し、サブディレクトリごとのアクセス履歴を取得する。
４．制御端末１０４は、取得されたアクセス履歴に基づいて、アクセス偏りしきい値より大きく、かつ、その偏ったキャッシュサーバが手順２で取得したマスタ管理表に記載されたキャッシュサーバとは異なるサブディレクトリを抽出する。
５．制御端末１０４は、抽出されたサブディレクトリのうち、直接の親子関係にあるサブディレクトリは上位のサブディレクトリを変更対象とする。具体的には、「／ａ／ｂ／ｃ」と「／ａ／ｂ」とが抽出された場合、「／ａ／ｂ」を変更の対象とすれば、「／ａ／ｂ／ｃ」も自動的に変更の対象となる。
６．制御端末１０４は、マスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能を実行することによって、変更対象のサブディレクトリを、マスタ管理表に記載されたキャッシュサーバから、手順４において抽出されたキャッシュサーバにマスタを変更する
７．制御端末１０４は、取得されたアクセス履歴に基づいて、アクセス均一しきい値を下回り、かつ、その中で最もアクセス頻度の高いキャッシュサーバが手順２で取得したマスタ管理表に記載されたキャッシュサーバとは異なるサブディレクトリを抽出する。
８．制御端末１０４は、手順７で抽出されたサブディレクトリのうち、直接の親子関係にあるサブディレクトリは上位ディレクトリを変更対象とする。具体的には、「／ａ／ｂ／ｃ」と「／ａ／ｂ」とが抽出された場合、「／ａ／ｂ」を変更の対象とすれば、「／ａ／ｂ／ｃ」も自動的に変更の対象となる。
９．制御端末１０４は、マスタ管理表制御ＵＩ部３１３が備えるアクセス偏り集計ＵＩ機能を実行することによって、手順８で抽出されたサブディレクトリを、マスタ管理表に記載されたキャッシュサーバから中央拠点１０１のキャッシュサーバ１０６にマスタを変更する。
【０４４２】
また、他のユースケースとして、時刻をトリガとしファイルシステムのサブツリーに対するマスタの場所を周期的に変更するユースケースも考えられる。
【０４４３】
例えば、世界中に複数の拠点を持つ企業などで、時差等によって拠点の稼働する時間帯がずれる場合に適用する方法が考えられる。
【０４４４】
この場合、管理者が、制御端末１０４に予め図２９に示すタイムテーブル２９００を登録しておく。
【０４４５】
図２９は、本発明の実施携帯の制御端末１０４が備えるタイムテーブル２９００を説明するフローチャートである。
【０４４６】
タイムテーブル２９００は、制御端末１０４のタイムゾーンまたはＧＭＴを基準に、サブディレクトリのパスごとに時刻とマスタである拠点が格納される。
【０４４７】
図２９に示す例では、３時間ごとにマスタの位置が管理される。
【０４４８】
具体的には、サブディレクトリパス名が「／ｍａｎａｇｅｍｅｎｔ／ｂｏａｒｄ」以下のサブディレクトリは０時〜１２時までは拠点Ａがマスタであり、１２時から２４時までは拠点Ｂがマスタであることを示す。
【０４４９】
また、サブディレクトリパス名が「／ｏｆｆｉｃｅ／ｐｅｒｓｏｎｎｅｌ」以下のサブディレクトリは０時から９時までは拠点Ｃがマスタであり、９時から１８時までは拠点Ｄがマスタであり、１８時から２１時までは拠点Ｅがマスタであることを示す。
【０４５０】
このユースケースでは、管理者がタイムテーブルを更新したときに制御端末１０４が以下のような処理実行することによって、マスタの場所が周期的に変更するように管理することが可能となる。
１．制御端末１０４が、タイムテーブル２９００を参照して、サブディレクトリのパス名ごとにマスタとなる拠点が変更される時刻と、どの拠点からどの拠点に変更されるかを抽出する。図２９に示す例では、「／ｍａｎａｇｅｍｅｎｔ／ｂｏａｒｄ」について１２時に拠点Ａから拠点Ｂへマスタが変更され、また、２４時に拠点Ｂから拠点Ａにマスタが変更される。また、「／ｏｆｆｉｃｅ／ｐｅｒｓｏｎｎｅｌ」について９時に拠点Ｃから拠点Ｄへマスタが変更され、１８時に拠点Ｄから拠点Ｅへマスタが変更され、２４時に拠点Ｅから拠点Ｃへマスタが変更される。
２．制御端末１０４は、抽出されたサブディレクトリのパス名、時刻、どの拠点からどの拠点にマスタが変更されるかの情報を用いて、制御端末１０４のタイマにマスタ場所更新処理（図２４参照）の実行を登録する。図２９に示す例では以下の引数でタイマにマスタ場所更新処理の実行が登録される。
１２時：サブツリーパス＝／ｍａｎａｇｅｍｅｎｔ／ｂｏａｒｄ、旧マスタキャッシュサーバ拠点＝拠点Ａ、新マスタキャッシュサーバ＝拠点Ｂ
０時：サブツリーパス＝／ｍａｎａｇｅｍｅｎｔ／ｂｏａｒｄ、旧マスタキャッシュサーバ拠点＝拠点Ｂ、新マスタキャッシュサーバ＝拠点Ａ
９時：サブツリーパス＝／ｏｆｆｉｃｅ／ｐｅｒｓｏｎｎｅｌ、旧マスタキャッシュサーバ拠点＝拠点Ｃ、新マスタキャッシュサーバ＝拠点Ｄ
１８時：サブツリーパス＝／ｏｆｆｉｃｅ／ｐｅｒｓｏｎｎｅｌ、旧マスタキャッシュサーバ拠点＝拠点Ｄ、新マスタキャッシュサーバ＝拠点Ｅ
２４時：サブツリーパス＝／ｏｆｆｉｃｅ／ｐｅｒｓｏｎｎｅｌ、旧マスタキャッシュサーバ拠点＝拠点Ｅ、新マスタキャッシュサーバ＝拠点Ｃ
なお、本実施形態では、ロック管理表２１４、マスタ管理表３１５、受付停止管理表４１７、タイムテーブル２９００等は、全て表形式の情報として格納されているが、本発明はこれに限定されず、各情報の対応関係がわかるものであればどのような形式で情報が保持されてもよい。
【０４５１】
本発明の一形態によれば、サブディレクトリ配下のファイルの管理権限を有するマスタの移動時に、当該マスタが管理するサブディレクトリ配下のファイルのロック状態を保ちつつ、他のキャッシュサーバに影響を与えることなく、マスタの変更を実行することができる。
【符号の説明】
【０４５２】
１２  ローカル網
１０１  中央拠点
１０２  拠点Ａ
１０３  拠点Ｂ
１０４  制御端末
１０５  ファイルサーバ
１０６  キャッシュサーバ
１０７  キャッシュ管理サーバ
１０８  キャッシュサーバ
１０９  端末
１１０  キャッシュサーバ
１１１  端末
１１２  広域網
１１３  ローカル網
２００  ＣＰＵ
２１０  主記憶部
２１１  ファイル保持部
２１２  ロック管理部
２１３  ファイルサーバ制御部
２１４  ロック管理表
２２０  二次記憶部
２３０  ネットワークインタフェース
３００  ＣＰＵ
３１０  主記憶部
３１１  キャッシュ管理サーバ制御部
３１２  キュー管理部
３１３  マスタ管理表制御ＵＩ部
３１４  マスタ管理表制御部
３１５  マスタ管理表
３２０  二次記憶部
３３０  ネットワークインタフェース
４００  ＣＰＵ
４１０  主記憶部
４１１  キャッシュサーバ制御部
４１２  ロック管理部
４１３  キャッシュ保持部
４１４  アクセス履歴保持部
４１５  キュー管理部
４１６  ロック管理表
４１７  受付停止管理表
４２０  二次記憶部
４３０  ネットワークインタフェース
５０１  ファイル名
５０２  ユーザ名
５０３  ロック情報
６０１  サブディレクトリパス名
７０１  サブディレクトリパス名
７０２  マスタ拠点名
２９００  タイムテーブル
【図１】
2011187026.tif 000003
【図２】
2011187026.tif 000004
【図３】
2011187026.tif 000005
【図４】
2011187026.tif 000006
【図５】
2011187026.tif 000007
【図６】
2011187026.tif 000008
【図７】
2011187026.tif 000009
【図８】
2011187026.tif 000010
【図９】
2011187026.tif 000011
【図１０】
2011187026.tif 000012
【図１１】
2011187026.tif 000013
【図１２】
2011187026.tif 000014
【図１３】
2011187026.tif 000015
【図１４】
2011187026.tif 000016
【図１５】
2011187026.tif 000017
【図１６】
2011187026.tif 000018
【図１７】
2011187026.tif 000019
【図１８Ａ】
2011187026.tif 000020
【図１８Ｂ】
2011187026.tif 000021
【図１９Ａ】
2011187026.tif 000022
【図１９Ｂ】
2011187026.tif 000023
【図２０】
2011187026.tif 000024
【図２１】
2011187026.tif 000025
【図２２】
2011187026.tif 000026
【図２３】
2011187026.tif 000027
【図２４】
2011187026.tif 000028
【図２５】
2011187026.tif 000029
【図２６】
2011187026.tif 000030
【図２７】
2011187026.tif 000031
【図２８】
2011187026.tif 000032
【図２９】
2011187026.tif 000033
【図３０】
2011187026.tif 000034
【図３１】
2011187026.tif 000035
【図３２】
2011187026.tif 000036