(57)【要約】      （修正有）【課題】クライアントからの要求によってサーバ計算機の仮想ファイルサーバが管理しているファイルが更新された場合、そのファイル更新の通知をサーバ計算機内の他の仮想ファイルサーバ上のアプリケーションや、サーバ計算機外のアプリケーションに通知し、互いに連携動作する機構を提供する。【解決手段】サーバ計算機上の仮想ファイルサーバ内のアプリケーションのファイル操作を検知し、通知管理表に基づき、サーバ計算機内の他の仮想ファイルサーバ上のアプリケーションや、サーバ計算機外のアプリケーションに通知するファイル操作通知する。【選択図】図２
2010271963.tif 000002
【特許請求の範囲】
【請求項１】
クライアント計算機と、１つ以上のボリュームを有するストレージ装置と、管理計算機と、に接続された複数の仮想ファイルサーバを有するファイルサーバであって、
プロセッサと、メモリを有し、
前記メモリには、
前記プロセッサによって実行されるファイル操作通知手段と、
前記管理計算機から設定され、前記複数の仮想ファイルサーバ上のアプリション各々と、当該アプリケーションによるファイル操作の種類と、前記複数の仮想ファイルサーバ上のアプリケーションのうちの当該ファイル操作の通知先となるアプリケーション、とを対応付ける管理情報と、
が格納されており、
前記ファイル操作通知手段は、前記仮想ファイルサーバからのファイル操作を検知した場合、当該ファイル操作を行った仮想ファイルサーバ上のアプリケーションとファイル操作の種類と前記管理情報とに基づいて、前記複数の仮想ファイルサーバ上のアプリケーションの中から当該ファイル操作の通知先となるアプリケーションを特定し、前記特定されたアプリケーションに当該ファイル操作と対応する操作通知データを送信する
ことを特徴とするファイルサーバ。
【請求項２】
請求項１に記載のファイルサーバであって、
前記ファイルサーバは、複数の仮想ファイルサーバを有する他のファイルサーバと接続されており、
前記ファイル操作通知手段は、前記仮想ファイルサーバからのファイル操作を検知し、当該ファイル操作の通知先として前記他のファイルサーバの仮想ファイルサーバ上のアプリケーションが特定された場合には、前記他のファイルサーバのファイル操作通知手段のＩＰアドレスに基づいて、前記他のファイルサーバのファイル操作通知手段に対して、当該ファイル操作と対応する前記操作通知データを送信する
ことを特徴とするファイルサーバ。
【請求項３】
請求項１に記載のファイルサーバであって、
前記管理情報には、さらに、前記操作通知データの送信による前記特定されたアプリケーションへのファイル操作の通知と当該ファイル操作とを同期で行うか否かが設定されており、
前記ファイル操作通知手段は、前記管理情報に基づき、
同期で行う場合には、前記特定されたアプリケーションからの戻り値を受領後に、前記ファイル操作を行ったアプリケーションに当該ファイル操作の実行結果を送信し、
同期で行わない場合には、前記特定されたアプリケーションからの戻り値の受領を待つことなく、前記ファイル操作を行ったアプリケーションに当該ファイル操作の実行結果を送信することを特徴とするファイルサーバ。
【請求項４】
請求項１に記載のファイルサーバであって、
前記管理情報には、当該ファイル操作の通知先となるアプリケーションとして、複数のアプリケーションからなるグループが対応付けられており、当該グループの各々には、複数のファイル操作通知ポリシのうちのいずれか１つが対応づけられており、
前記ファイル操作通知手段は、前記管理情報のファイル通知ポリシに基づいて、当該ファイル操作の通知先となるアプリケーションに当該ファイル操作と対応する前記ファイル操作通知データを送信することを特徴とするファイルサーバ。
【請求項５】
請求項４に記載のファイルサーバであって、
複数のファイル操作通知ポリシのうちのいずれか１つは、前記グループ内の複数のアプリケーションへ当該ファイル操作を通知するＢｒｏａｄｃａｓｔ又は、前記グループ内の複数のアプリケーションへ順番に通知するＲｏｕｎｄ-Ｒｏｂｉｎであることを特徴とするファイルサーバ。
【請求項６】
請求項４に記載のファイルサーバであって、
前記グループ毎に、前記グループ内の複数のアプリケーションのそれぞれと対応する仮想ファイルサーバのＣＰＵ負荷又は、Ｉ/Ｏ負荷が管理されており、
複数のファイル操作通知ポリシのうちのいずれか１つは、前記グループ内の複数のアプリケーションそれぞれと対応する仮想ファイルサーバのうち最もＣＰＵ負荷が低い仮想ファイルサーバ上のアプリケーションへ当該ファイル操作を通知するＣＰＵＬｏａｄ又は、前記グループ内の複数のアプリケーションそれぞれと対応する仮想ファイルサーバのうち最もＩ／Ｏ負荷が低い仮想ファイルサーバ上のアプリケーションへ当該ファイル操作を通知するＩ／Ｏ  Ｌｏａｄであることを特徴とするファイルサーバ。
【請求項７】
クライアント計算機と、１つ以上のボリュームを有するストレージ装置と、管理計算機と、に接続された複数の仮想ファイルサーバを有するファイルサーバにおける前記複数仮想ファイルサーバ間のファイル操作通知方法であって、
前記仮想ファイルサーバからのファイル操作を検知した場合に、
前記ファイルサーバの有するメモリに格納された、前記複数の仮想ファイルサーバ上のアプリション各々と、当該アプリケーションによるファイル操作の種類と、前記複数の仮想ファイルサーバ上のアプリケーションのうちの当該ファイル操作の通知先となるアプリケーション、とを対応付ける管理情報を参照し、
前記管理情報と、前記検出されたファイル操作を行った仮想ファイルサーバ上のアプリケーションと、当該ファイル操作の種類とに基づいて、前記複数の仮想ファイルサーバ上のアプリケーションの中から当該ファイル操作の通知先となるアプリケーションを特定し、
前記特定されたアプリケーションに当該ファイル操作と対応する操作通知データを送信することを特徴とするファイル操作通知方法。
【請求項８】
請求項７に記載のファイル操作通知方法であって、
前記ファイルサーバは、複数の仮想ファイルサーバを有する他のファイルサーバと接続されており、
前記仮想ファイルサーバからのファイル操作を検知し、当該ファイル操作の通知先として前記他のファイルサーバの仮想ファイルサーバ上のアプリケーションが特定された場合には、前記他のファイルサーバのファイル操作通知手段のＩＰアドレスに基づいて、前記他のファイルサーバのファイル操作通知手段に対して、当該ファイル操作と対応する前記操作通知データを送信する
ことを特徴とするファイル操作通知方法。
【請求項９】
請求項７に記載のファイル操作通知方法であって、
前記管理情報には、さらに、前記操作通知データの送信による前記特定されたアプリケーションへのファイル操作の通知と当該ファイル操作とを同期で行うか否かが設定されており、
前記管理情報に基づき、
同期で行う場合には、前記特定されたアプリケーションからの戻り値を受領後に、前記ファイル操作を行ったアプリケーションに当該ファイル操作の実行結果を送信し、
同期で行わない場合には、前記特定されたアプリケーションからの戻り値の受領を待つことなく、前記ファイル操作を行ったアプリケーションに当該ファイル操作の実行結果を送信することを特徴とするファイルサーバ。
【請求項１０】
請求項７に記載のファイルサーバであって、
前記管理情報には、当該ファイル操作の通知先となるアプリケーションとして、複数のアプリケーションからなるグループが対応付けられており、当該グループの各々には、複数のファイル操作通知ポリシのうちのいずれか１つが対応づけられており、
前記管理情報のファイル通知ポリシに基づいて、当該ファイル操作の通知先となるアプリケーションに当該ファイル操作と対応する前記ファイル操作通知データを送信することを特徴とするファイル操作通知方法。
【請求項１１】
請求項１０に記載のファイル操作通知方法であって、
複数のファイル操作通知ポリシのうちのいずれか１つは、前記グループ内の複数のアプリケーションへ当該ファイル操作を通知するＢｒｏａｄｃａｓｔ又は、前記グループ内の複数のアプリケーションへ順番に通知するＲｏｕｎｄ-Ｒｏｂｉｎであることを特徴とするファイル操作通知方法。
【請求項１２】
請求項１０に記載のファイル操作通知方法であって、
前記グループ毎に、前記グループ内の複数のアプリケーションのそれぞれと対応する仮想ファイルサーバのＣＰＵ負荷又は、Ｉ/Ｏ負荷が管理されており、
複数のファイル操作通知ポリシのうちのいずれか１つは、前記グループ内の複数のアプリケーションそれぞれと対応する仮想ファイルサーバのうち最もＣＰＵ負荷が低い仮想ファイルサーバ上のアプリケーションへ当該ファイル操作を通知するＣＰＵＬｏａｄ又は、前記グループ内の複数のアプリケーションそれぞれと対応する仮想ファイルサーバのうち最もＩ／Ｏ負荷が低い仮想ファイルサーバ上のアプリケーションへ当該ファイル操作を通知するＩ／Ｏ  Ｌｏａｄであることを特徴とするファイル操作通知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ間のファイル操作の通知方法、システム、装置及びプログラムに関する発明である。
【背景技術】
【０００２】
ファイルサーバ計算機の運用管理を一元化し、管理コストを削減するため、複数のファイルサーバ計算機で提供していたファイル共有サービスを一台のファイルサーバ計算機で提供するファイルサーバコンソリデーションが提案されている。ファイルサーバコンソリデーションでは、複数のファイルサーバ計算機で提供していたファイル共有サービスを１台のファイルサーバ計算機で提供可能とするために、仮想ファイルサーバを用いる。仮想ファイルサーバとは、１台の物理的なファイルサーバ計算機のハードウェアリソースをいくつかに分割し、分割したリソース毎にファイルサーバプログラムを動かすことで、１台のファイルサーバ計算機上で仮想的に複数のファイルサーバ計算機が動作しているかのように見せる技術である。
【０００３】
特許文献１や特許文献２では、サーバ計算機上で動作する単一のＯＳ上で、ファイルサーバ計算機上のリソースの一部を分割して、複数の独立したファイルの名前空間、ファイルサーバプログラムを持つ実行環境を作り、仮想ファイルサーバとする技術が開示されている。
【０００４】
また、一般に、サーバ計算機上の複数のアプリケーション間でファイル操作に関する連携を行うために、ファイルシステム上のファイルが変更をアプリケーションへ通知するための手法が提案されている。例えば、サーバ計算機上で動作する単一のＯＳ上で、アプリケーションが特定のファイルの変更を監視するためのＦｉｎｄＦｉｒｓｔＣｈａｎｇｅＮｏｔｉｆｉｃａｔｉｏｎというインターフェースなどがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2004-227127号広報
【特許文献２】特開2003-223346号広報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の技術では、ファイルの変更通知を受け取れるアプリケーションは、ファイルを参照可能なアプリケーションのみを対象としていた。つまり、複数のアプリケーション間でファイル変更を契機とする連携を取る場合、それぞれのアプリケーションは同一のＯＳ上で動作し、同一のファイルを参照可能ということを前提としていた。そのため、それぞれ異なるＯＳが動作しファイルの名前空間が異なる複数の仮想ファイルサーバ上のアプリケーション（ファイルサーバプログラム）同士が特定のファイルの変更を契機として互いに連携動作することができなかった。
【０００７】
そこで本発明では、サーバ計算機の仮想ファイルサーバ上のアプリケーションがファイルに対して操作を行った場合、そのファイル操作を検知し、サーバ計算機内の他の仮想ファイルサーバ上のアプリケーションや、外部のサーバ計算機上のアプリケーションに通知する基盤を提供し、異なるサーバ計算機及び異なる仮想ファイルサーバ上のアプリケーション同士が互いに連携動作することを可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、クライアント計算機と、１つ以上のボリュームを有するストレージ装置と、管理計算機と、に接続された複数の仮想ファイルサーバを有するファイルサーバを提供する。ファイルサーバでは、複数の仮想ファイルサーバ上のアプリション各々と、当該アプリケーションによるファイル操作の種類と、前記複数の仮想ファイルサーバ上のアプリケーションのうちの当該ファイル操作の通知先となるアプリケーション、とを対応付けて管理されている。
【０００９】
仮想ファイルサーバ上のアプリケーションからのファイル操作を検知すると、ファイルサーバのファイル操作通知機構は、当該ファイル操作を行った仮想ファイルサーバ上のアプリケーションとファイル操作の種類とを基にして、複数の仮想ファイルサーバ上のアプリケーションの中から当該ファイル操作の通知先となるアプリケーションを特定し、特定されたアプリケーションに当該ファイル操作を通知する。
【発明の効果】
【００１０】
本発明によって、サーバ計算機内のある仮想ファイルサーバ上のアプリケーションによってファイル操作が発生した場合、サーバ計算機内の他の仮想ファイルサーバ上のアプリケーションや、複数の外部のサーバ計算機上のアプリケーションにファイル操作を通知し、アプリケーション間で連携動作可能な契機を作ることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例のハードウェア構成を示すブロック図である。
【図２】本発明の実施例のソフトウェア構成を示すブロック図である。
【図３】ファイル操作通知機構のソフトウェア構成である。
【図４】通知管理表の例である。
【図５】グループ管理表の例である。
【図６Ａ】サーバ管理表の例である。
【図６Ｂ】サーバ管理表の例である。
【図７】ファイル操作通知機構と通信するためのIPアドレスを管理するテーブルの一例である。
【図８】送信キューの模式図である。
【図９Ａ】ファイル操作を検知する処理のフローチャートである。
【図９Ｂ】ファイル操作を検知する処理のフローチャートである。
【図１０】ファイル操作通知を受信する処理のフローチャートである。
【図１１】ステータス情報を要求する処理のフローチャートである。
【図１２】ステータス情報を返信する処理のフローチャートである。
【図１３】ファイル操作通知を送信する処理のフローチャートである。
【図１４】システム管理者がファイル操作通知機構の設定を行う管理画面の例である。
【図１５】システム管理者がファイル操作通知機構のグループ設定を行う管理画面の例である。
【図１６】本発明の概要を示す模式図である。
【発明を実施するための形態】
【００１２】
以下に、本発明の実施の形態を説明する。
【００１３】
図１は、サーバ計算機１００（以後、サーバと省略して呼ぶ）と、管理計算機１２０と、一つ以上のクライアント計算機１１０（以後、クライアントと省略して呼ぶ）と、ストレージ装置１３０から構成される情報処理システムの構成を示すブロック図である。 
サーバ１００は、ファイル共有サービスとして、クライアントからのファイル要求に応じたファイルのデータに対するリードやライト、ファイルの作成や削除や属性の参照、ディレクトリの作成や削除や属性参照といったいわゆるアクセスを、クライアントに提供する計算機である。サーバ１００は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１０４、１０５と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０６と、メモリ１０７と、アダプタ１０８から構成され、それぞれの構成部位は内部バスまたは内部ネットワークにて接続される。なお、ＮＩＣ１０４、ＣＰＵ１０６、メモリ１０７、アダプタ１０８は、それぞれ図１に示した数に限定しない。また、サーバ１００の数は、図１に示した２つに限定しない。また、それぞれのサーバ１００は各計算機が連携して仮想的な一つのファイルサーバとする機能を有するような複数の計算機から構成されてもよい。
【００１４】
ＣＰＵ１０６は、サーバ１００を制御するプロセッサである。ＣＰＵ１０６は、メモリ１０７に格納されたプログラムを実行する。例えば、ＣＰＵ１０６は、ファイル共有サービスを提供するプログラム（サーバプログラム）を実行し、ストレージ装置１３０に格納されているファイルをクライアント１１０へ提供する。メモリ１０７内のプログラムの詳細な構成は、図２に示す。
【００１５】
メモリ１０７は、例えば半導体メモリであり、ＣＰＵ１０６が実行するプログラム及びＣＰＵ１０６が参照するデータやファイルキャッシュを格納する主記憶装置である。なお、メモリ１０７の一部としてＨＤＤなどの半導体メモリよりも低速な記憶装置を組み入れて使用してもよい。
【００１６】
ＮＩＣ１０４は、サーバ１００がクライアント１１０と通信のためのデータの送信や受信を行うために用いる。また、ＮＩＣ１０５は、サーバ１００が管理計算機１２０と通信のためのデータの送信や受信を行うために用いる。サーバ１００、クライアント１１０、管理計算機１２０は、それぞれ互いにＴＣＰやＵＤＰ等のネットワークプロトコルを使って通信を行う。なお、ＮＩＣは、ネットワークポートと呼ばれることもある。なお、ＮＩＣ１０４とＮＩＣ１０５は性能、信頼性等の理由からそれぞれが別なハードウェアであることが好ましいが、同一のハードウェアをＮＩＣ１０４とＮＩＣ１０５として用いても良い。
【００１７】
アダプタ１０８は、サーバ１００と二次記憶装置であるストレージ装置１３０を接続するために用いる。ＣＰＵ１０６は、アダプタ１０８を経由し、ストレージ装置１３０に格納されているプログラムやファイルをリードやライトに代表されるブロックアドレス形式のアクセス要求を送信したり、データを受信したりする。なお、アダプタ１０８は通信を行うという視点からはＮＩＣ１０４とＮＩＣ１０５と同じハードウェアであってもよいが、ＮＩＣ１０４及びＮＩＣ１０５とは別なハードウェアであることが性能や信頼性の視点からは好ましい。なお、以後に詳細に述べるが、本発明では、ＮＩＣ１０４はクライアント１１０からのファイル形式のアクセス要求を受信し、要求に応じたデータまたは制御情報を送信するが、アダプタ１０８はＣＰＵ１０６が生成するブロックアドレス形式のアクセス要求を送信し、ストレージ装置１３０からブロック形式のデータを受信したり、制御情報を受信したりする。
【００１８】
クライアント１１０は、サーバ１００上が提供しているファイル共有サービスにアクセスする計算機である。図示はしていないが、クライアント１１０はＣＰＵ、メモリ、ＮＩＣから構成される。
【００１９】
管理計算機１２０は、サーバ１００やサーバ１００上で動作するプログラムを管理する計算機である。管理計算機１２０は、ＮＩＣ１２１、ＣＰＵ１２２、メモリ１２３、入力装置１２４、ディスプレイ１２５、内蔵ディスク装置１２６から構成され、それぞれの構成部位は内部バスまたは内部ネットワークにて接続される。
【００２０】
ＮＩＣ１２１は、ＬＡＮ１０２を介してサーバ１００と通信するために用いる。
【００２１】
ＣＰＵ１２２は、管理計算機１２０を制御するプロセッサである。ＣＰＵ１２２は、メモリ１２３に格納されたプログラムを実行する。例えば、ＣＰＵ１２２は、サーバ１００を管理するプログラム（管理プログラム）を実行し、サーバ１００上で動作するプログラムの設定変更などを行う。
【００２２】
メモリ１２３は、例えば半導体メモリであり、ＣＰＵ１２２が実行するプログラム及びＣＰＵ１２２が参照するデータを格納する主記憶装置である。なお、メモリの一部として内蔵ディスク装置１２６を用いても良い。
【００２３】
入力装置１２４は、管理計算機１２０上で動作するプログラムに指示を与えるためのキーボードやマウスである。ディスプレイ１２５は、管理計算機１２０上で動作するプログラムのユーザインタフェースを表示する出力装置である。管理計算機１２０は、複数あっても良い。なお、入力装置とディスプレイは管理計算機１２０とは別な操作用の計算機が担うことも考えられる。その場合、操作用計算機１２０への入力は通信として管理計算機１２０が受信し、同様に管理計算機１２０が表示する情報を操作用計算機に送信し、当該表示情報を受信した操作用計算機は表示情報に従った画面表示を行うことになる。
【００２４】
ストレージ装置１３０は、サーバ１００が使用するプログラムやファイルを格納するための二次記憶装置である。ストレージ装置１３０は、ストレージキャッシュ１３１と、ストレージコントローラ１３２、ディスク装置１３３とから構成され、それぞれの構成部位は内部バスまたは内部ネットワークにて接続される。ストレージキャッシュ１３１、ストレージコントローラ１３２、ディスク装置１３３は、それぞれ図１に示した数に限定しない。また、ストレージ装置についても、図１に示した数に限定しない。
【００２５】
ストレージコントローラ１３２は、サーバ１００と通信し、ストレージ装置１３０を制御する。具体的には、ストレージコントローラ１３２は、サーバ１００と通信し、サーバ１００からの要求に従って後述のストレージキャッシュ１３１を用いつつディスク装置１３３にデータを書き込み、又はストレージキャッシュ１３１を用いつつディスク装置１３３からデータを読み出す。前述の通り、ストレージコントローラが受信するアクセス要求または送信するデータはブロックアドレス形式によって指定されるブロックデータ（単にブロックと呼ぶことがある）を対象とする。
【００２６】
ストレージキャッシュ１３１は、例えば、半導体メモリであり、ディスク装置１３３に書き込むデータ又はディスク装置１３３から読み出したブロックデータを一時的に格納するために用いる。なお、ストレージキャッシュの一部として半導体メモリより低速な記憶装置を用いても良いものとする。
【００２７】
ディスク装置１３３は、データを格納する装置である。図１では、ストレージ装置１３０Ａがディスク装置１３３Ａを２個、１３０Ｂがディスク装置１３３Ｂを２個持っているが、ストレージ装置１３０には、任意の数のディスク装置１３３を設置できる。なお、ディスク装置１３３はＨＤＤが典型的な装置であるがブロック形式のデータを保存できるのであればＨＤＤ以外であってもよいため、例えばＤＶＤやＣＤやＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（半導体ディスク）で代用しても良い。
【００２８】
なお、高速化や冗長化や高信頼化等の理由から、ストレージコントローラは、複数のディスク装置１３３を一つ以上の仮想的なディスク装置にしてサーバ１００にアクセスを提供する処理（より具体的にはＲＡＩＤ技術に開示された処理）を実施してもよい。なお、以後の説明ではこの仮想的なディスク装置をボリュームと呼び、「ストレージ装置またはストレージコントローラがボリュームにブロックデータを書き込む」と説明した場合は、実際はストレージコントローラ１３２がストレージキャッシュ１３１またはディスク装置１３３にブロックデータを書き込むことを意味する。同様に、「ストレージ装置またはストレージコントローラがボリュームからブロックデータを読む」と説明した場合は、実際はストレージコントローラ１３２がストレージキャッシュ１３１またはディスク装置１３３からブロックデータを読み出すことを意味する。一般に、ストレージコントローラ１３２は、サーバ１００などからボリュームに対するデータを書き込む要求を受信した場合、アクセス速度の速いストレージキャッシュ１３１に一時的にデータを書き込んだ後、サーバ１００に書き込み完了を通知する。そして、サーバからの書き込み要求とは非同期にディスク装置１３３にストレージキャッシュ１３１に格納されていたデータを書き込むことで、ストレージキャッシュ１３１に比較してディスク装置１３３の性能が低い場合でも、ストレージ装置１３０全体としての性能の向上を保っている。
【００２９】
サーバ１００のアダプタ１０８とストレージ装置１３０のストレージコントローラ１３２間のＦＣ１０３は、スイッチを介して繋がっていても良い。また、サーバ１００と接続するストレージ装置１３０は、複数あっても良い。また、サーバ１００と複数のストレージ装置１３０がストレージエリアネットワーク（ＳＡＮ）を構成しても良い。また、図１では、１つのＬＡＮ１０１上に複数のクライアント１１０が接続しているが、これ以外の接続形態であってもよい。同様にサーバ１００はＬＡＮ１０２を介して管理計算機１２０と接続しているが、ＬＡＮ１０１とＬＡＮ１０２とが共通のネットワークであってもよい。
【００３０】
アダプタ１０８とストレージ装置１３０間の通信路１０３は、例えばファイバーチャネル（ＦＣ）での接続が考えられるが、通信可能であればこれ以外の接続媒体（例えばＥｔｈｅｒｎｅｔ（登録商標））を採用してもよい。
【００３１】
図１では、サーバ１００はそれぞれ個別のストレージ装置１３０と接続する構成としているが、複数のサーバ１００が一台のストレージ装置１３０に接続する構成であってもよい。
【００３２】
図２は、本発明のプログラム及び情報の構成及び、当該プログラム及び情報とハードウェアの関係を示すブロック図である。
【００３３】
図１と同じ番号を付与したものの説明は省略する。
【００３４】
サーバ１００のメモリ１０７には、ファイル操作通知機構２００、複数の仮想ファイルサーバ２２０を格納している。上述のとおり、これらはＣＰＵ１０６により実行され動作する。
【００３５】
仮想ファイルサーバ２２０は、サーバを提供するために必要となる情報やプログラムを有する情報である。仮想ファイルサーバ２２０は、アプリケーション２２１（図２中Ａｐｐ）、マウントテーブル２２２からなる。
【００３６】
アプリケーション２２１は、仮想ファイルサーバ２２０がクライアント１１０に提供するファイルサーバなどのプログラムである。単一の仮想ファイルサーバ２２０内に複数の異なる種類のアプリケーション２２１があっても良い。例えば、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）プロトコル対応のファイルサーバと、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）対応のファイルサーバを単一の仮想ファイルサーバ２２０で提供しても良い。また、単一のサーバ１００内の異なる仮想ファイルサーバ２２０上に同じ種類のアプリケーション２２１があり、同じファイル共有サービスを同時に提供しても良い。
【００３７】
なお、本発明による仮想ファイルサーバは、従来技術で実現していた部分も含め、以下の全ての特徴を有するものとする。ただし、一部の特徴については有さなくても本発明による恩恵を受けることが可能である（例えば（Ｄ）と（Ｇ））。（Ａ）各仮想ファイルサーバは、ファイルサーバが有するＣＰＵ１０６、メモリ１０７、アダプタ１０８、ＮＩＣ１０４、ＮＩＣ１０５（いずれも複数であってもよい）の少なくともいずれか一つまたは一部（一つしかない場合はＣＰＵ１０６やＮＩＣやアダプタであれば時分割したタイムスライスの一部で、メモリであれば空間分割または使用容量分割したことによって確保した全容量の一部を指しても良い）を割り当てられ、ファイル共有サービスを提供するために使用する。なお、ファイル共有サービスの提供とは、ファイルの生成及び更新及び削除及び属性変更や、ディレクトリの生成及び更新及び削除及び属性変更や、ファイルやディレクトリが含まれるファイルの名前空間の提供及び操作を提供することが含まれるが、これ以外のサービスを含んでも良い。また、これら提供する項目は、ＸＡＭに代表されるオブジェクト形式のアクセスを提供するために必要な操作で代替してもよいし、他のプロトコルで必要な操作で代替してもよい。（Ｂ）ファイル共有サービスを提供するために、仮想ファイルサーバ毎に個別のＩＰアドレスを有する。これによってクライアント１１０からは各仮想ファイルサーバは個別に計算機として物理的に存在するように見せる。（Ｃ）ファイル共有サービスを提供するために各仮想ファイルサーバが提供するファイルの名前空間は、各々で異なる。各仮想ファイルサーバは、サーバ１００がストレージ装置１３０のボリュームに格納したファイルの名前空間の別々な部分空間を、仮想ファイルサーバがファイルの名前空間として提供するとも言える（Ｄ）ファイル共有サービスを提供するために、各仮想ファイルサーバは、独立な提供するファイルの名前空間に対応したユーザ群を有し、当該ユーザに基づいたアクセス制御を実施する。（Ｅ）ファイル共有サービスを提供するために、各仮想ファイルサーバは、個別に設定管理を実施することができる。なお、設定管理の一例としては、先ほどのユーザに関する設定や、仮想ファイルサーバが使用中のＣＰＵ１０６、メモリ１０７、アダプタ１０８、ＮＩＣ１０４、ＮＩＣ１０５に関する設定（例えば、ＩＰアドレスの割り当て）などがある。（Ｆ）ファイル共有サービスまた（Ｅ）の管理において、各仮想ファイルサーバは、割り当てられていないＣＰＵ１０６、メモリ１０７、アダプタ１０８、ＮＩＣ１０４、ＮＩＣ１０５を使用しない。これによってセキュリティの確保や性能保証を実現することがある。（Ｇ）各仮想ファイルサーバは、各々が提供するファイル共有サービスの利用を許可する（仮想ファイルサーバが提供するファイルの名前空間へのアクセスを許可すると表現してもよい）一つ以上のクライアントの識別子情報、または当該サービスの利用を制限する一つ以上のクライアントの識別子情報を有し、アクセス制御を行っても良い。
【００３８】
なお、（Ａ）で割り当てられたＣＰＵ１０６、メモリ１０７、アダプタ１０８、ＮＩＣ１０４、ＮＩＣ１０５は（Ｅ）による設定変更以外では割り当てが変化しない実装や、一部の部位については動的に割り当て状況が変化する場合があってもよい。例えば、メモリ１０７に余剰がある場合に自動的に仮想ファイルサーバに割り当てたり、各部位の動作不良が検知または予知した場合に代替部位を用いたりする場合が考えられるが、これ以外の理由であってもよい。
【００３９】
また、（Ｅ）の仮想ファイルサーバ毎の設定については、各ファイルサーバに独自の管理用のＩＰアドレスと管理操作を行う前の認証用のパスワードを有することが考えられる。しかし、ＩＰアドレスの代替として各仮想ファイルサーバを特定可能な情報が、管理用計算機から送信されるのであれば、他の情報で代替してもよい。その一例としては、サーバ１００共通の認証画面に認証対象の仮想ファイルサーバを入力できる処理が存在する場合がある。
【００４０】
ボリューム１３４は、ストレージ装置１３０がサーバ１００に提供する仮想的なディスク装置である。ストレージコントローラ１３２が、ＲＡＩＤ技術によってストレージ装置１３０内の複数のディスク装置１３３を一つ以上の仮想的なディスク装置に分割し、ボリューム１３４を生成する。
【００４１】
マウントテーブル２２２は、アプリケーション２２１が使用するデータを格納するファイルシステム２１０と、ファイルシステムが作成されたボリューム１３４の識別情報との対応を格納する情報である。マウントテーブル２２２には、複数のファイルシステム２１０とボリューム１３４の識別情報を格納しても良い。アプリケーション２２１は、マウントテーブル２２２に識別情報を格納しているボリューム１３４を使用してクライアント１１０にサービスを提供する。このサービスの提供は、アプリケーション２２１が、クライアント１１０が読み書きするファイルをマウントテーブル２２２に格納された識別情報に対応したボリューム１３４に格納することで実現する。
【００４２】
共有メモリ２４０は、仮想ファイルサーバ２２０とファイル操作通知機構２００との通信に用いるメモリ１０７上の共有領域である。共有メモリ２４０は、仮想ファイルサーバ２２０ごとに一つあり、仮想ファイルサーバ２２０とファイル操作通知機構２００が互いに読み書き可能である。共有メモリ２４０は、一つの仮想ファイルサーバ２２０に対して複数あっても良い。
【００４３】
ファイル操作通知機構２００は、仮想ファイルサーバ２２０がストレージ装置１３０に格納されたデータにアクセスする際に発行する要求を検知し、その要求に基づいて他の仮想ファイルサーバ２２０に情報を通知するプログラムである。ファイル操作通知機構２００の動作フローや保持する情報の詳細は、図３乃至図１３に示す。
【００４４】
管理計算機１２０上のメモリ１２３には、管理プログラム２３０を格納している。
【００４５】
管理プログラム２３０は、システム管理者からの指示に基づき、サーバ１００上のファイル操作通知機構２００に指示を出す。具体的には、管理プログラム２３０は、ファイル操作通知機構２００の設定要求を行う。管理プログラム２３０を用いた管理例は、図１４、図１５に示す。
【００４６】
ここでプログラム間の通信を示す矢印２５０乃至２５４を使い、各プログラム間での通信内容と通信に用いるインタフェースの説明をする。
【００４７】
通信２５０は、クライアント１１０上のプログラムとアプリケーション２２１間で送受信するデータ通信を示す。２５０の通信路は、ＬＡＮ１０１を用いる。また、クライアント１１０上のプログラムとアプリケーション２２１間の通信プロトコルには、ＮＦＳやＣＩＦＳ、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの各アプリケーション２２１に固有のプロトコルを用いる。２５０によって、クライアント１１０上のプログラムからのＩ／Ｏ要求がアプリケーション２２１へ送信され、その結果がクライアント１１０上のプログラムへ返信される。
【００４８】
通信２５１は、アプリケーション２２１とファイル操作通知機構２００間のファイル操作とそのファイル操作の戻り値からなる通信を示す。ファイル操作とは、ファイルの作成（ＣＲＥＡＴＥ）、ファイルの書き込み（ＷＲＩＴＥ）、ファイルの属性変更（ＳＥＴ＿ＡＴＴＲ）などのファイルに対する操作と戻り値の通信を示す。２５１の通信路は、メモリ１０７を用いる。また、２５１のインタフェースの一例としては、ＯＳが標準で提供するシステムコールを用いる。ファイル操作通知機構２００は、２５１を介してアプリケーション２２１のファイル操作を受け取り、通知が必要なファイル操作のみを他の仮想ファイルサーバ２２０上のアプリケーション２２１へ通知し、ファイル操作自体は２５４へと転送する。
【００４９】
通信２５２と通信２５６は、ファイル操作通知機構２００からアプリケーション２２１へのファイル操作の発生通知とその戻り値の通信を示す。２５２と２５６の通信路は、メモリ１０７を用いる。ファイル操作通知機機構２００とアプリケーション２２１との通信手順の一例を以下に示す。ファイル操作通知機構２００は、メモリ１０７内の特定の領域である共有メモリ２４０に対し、アプリケーション２２１へ通知する内容を書き込む（通信２５２）。次に仮想ファイルサーバ２２０上のアプリケーション２２１は、共有メモリ２４０から自アプリケーション２２１宛の通知内容を取得し、通知内容に対する返信を戻り値として共有メモリ２４０へ書き込む（通信２５６）。次にファイル操作機構は、アプリケーション２２１からの戻り値を共有メモリ２４０から読み込む（通信２５２）。 また、共有メモリ２４０を用い通信するインタフェースの一例としては、通信ソケットを用いる。具体的には、共有メモリ２４０上に仮想ファイルシステムを構成し、仮想ファイルシステム上に通信用のソケットファイルを用意し、ファイル操作通知機構２００とアプリケーション２２１が互いにソケットファイルを共有し、ファイル操作通知機構２００とアプリケーション２２１とがソケットインタフェースを用いて通信を行う方式である。
【００５０】
通信２５３は、異なるサーバ１００間のファイル操作通知機構２００間でファイル操作通知を行う通信を示す。２５３の通信路は、ＬＡＮ１０２を用いる。また、ファイル操作通知機構２００間の通信プロトコルには、ＴＣＰやＵＤＰをベースとしたプロトコルを用いる。ファイル操作通知機構２００は、２５３を介して、外部サーバ１００上の仮想ファイルサーバ２２０上のアプリケーション２２１へファイル操作の発生の通知を行う。
【００５１】
通信２５４は、ファイル操作通知機構２００とストレージ装置１３０間のディスクＩ／Ｏを示す。２５４の通信路は、ＦＣ１０３を用いる。ファイル操作通知機構２００は、アプリケーション２２１からのファイル操作（システムコール）を中継し、ストレージ装置１３０へ転送する。また、転送の際、ファイル操作通知機構２００は、アプリケーション２２１から指示されたファイル操作をＳＣＳＩコマンドに変換してストレージ装置１３０へ送信する。
【００５２】
通信２５５は、管理プログラム２３０とファイル操作通知機構２００間の管理用の通信を示す。２５５の通信路にはＬＡＮ１０２を用いる。また、ファイル操作通知機構２００間の通信プロトコルには、ＴＣＰやＵＤＰをベースとしたプロトコルを用いる。２５４によって、管理プログラム２３０から、ファイル操作通知機構への設定の変更要求が送信される。
【００５３】
ここで図２を使い、クライアント１１０が、ＶＳ１（仮想ファイルサーバ２２０）で提供中のファイル共有サービス（アプリケーション２２１）へファイルの書き込み要求を出し、そのファイル操作通知がＶＳ３（仮想ファイルサーバ２２０）のアプリケーション２２１へ送信される場合の流れについて説明する。
【００５４】
クライアント１１０からファイルシステム２１０Ａへのファイルの書き込み要求は、ＬＡＮ１０１を介してサーバ１００ＡのＶＳ１に届く（通信２５０）。
【００５５】
ＶＳ１のファイル共有サービスは、クライアント１１０からの要求を受信し、ファイルへ書き込みを行うためにＷＲＩＴＥシステムコールを発行する（通信２５１）。ここでファイル操作通知機構２００Ａは、ファイル共有サービスのＷＲＩＴＥシステムコールを検知し、ＶＳ３のアプリケーション２２１への通知が必要であると判定した場合には、ＬＡＮ１０２を介してファイル操作通知機構２００Ｂへ通知する（通信２５３）。
【００５６】
ファイル操作通知機構２００Ｂは、ＶＳ１のファイル共有サービスがファイル操作を発行した情報を受信する。次にファイル操作通知機構２００Ｂは、共有メモリ２４０に対して、ＶＳ１のファイル共有サービスでファイル操作が発生したことを書き込む（通信２５２）。次にＶＳ３上のアプリケーション２２１は、共有メモリ２４０から通知内容を受け取り、通知内容に対する返信を戻り値として共有メモリ２４０へ書き込む（通信２５６）。次に、ファイル操作通知機構２００Ｂは、共有メモリ２４０から戻り値を取り出す（通信２５２）。次にファイル操作通知機構２００Ｂは、取り出した戻り値を送信元のファイル操作通知機構２００Ａへ返信する（通信２５３）。
【００５７】
一方、ファイル操作通知機構２００Ａは、ファイル操作通知機構２００Ｂへファイル操作の発生を通知した後、ファイル共有サービスからのＷＲＩＴＥシステムコールを実行する。具体的には、ファイル操作通知機構２００Ａは、マウントテーブル２２２から、ファイルシステム２１０Ａに対応するボリューム１３４Ａを特定し、ボリューム１３４Ａへ書き込み要求（ＳＣＳＩコマンド）を発行し、書き込みの結果を受け取る（通信２５４）。ファイル操作通知機構Ａは、ＷＲＩＴＥシステムコールの結果をファイル共有サービスへ返す（通信２５１）。
【００５８】
ファイル共有サービスは、ボリューム１３４Ａへの書き込み成功後、ＬＡＮ１０１を介してクライアント１１０に書き込みが成功した戻り値を返す（通信２５０）。
【００５９】
次に図１６の模式図を用いて本発明の概要を説明する。なお、本概要で説明した事項は例示に過ぎず、本発明の権利をこれに限定するものではない。
【００６０】
情報システムの利用方法の拡大や情報機器の普及に伴い、ファイルサーバに格納するファイルが非常に多量になっている。
【００６１】
そのため、多数の人間が共有して利用しているファイルサーバでは、多数のファイルから、ある目的のファイルを見つけるための検索エンジンや、ファイルを複製して保存しておくためのバックアップサーバ、災害に備えてファイルを遠隔地に複製するためのリモートコピーサーバなどを併用して使用することが多い。
【００６２】
これらのファイルサーバと同時に使用するサーバは、ファイルサーバのファイル更新情報を利用してサービスを実行する。例えば、検索エンジンはファイルが更新されると検索用のインデックス情報を変更する必要がある。また、バックアップサーバやリモートコピーサーバは、複製する情報を削減するため、更新されたファイルのみを選択する処理を行っている。
【００６３】
しかし、これまではクライアントからの要求によってファイルサーバが管理しているファイルが更新された場合、そのファイル更新の通知をサーバ計算機内の他の仮想ファイルサーバ上のアプリケーションや、外部のサーバ計算機上のアプリケーションに通知し、互いに連携動作することはできなかったため、各サーバのファイルサーバに保存された全てのファイルを定期的に走査して、変更を調査する必要があった。
【００６４】
ファイルサーバの更新情報を他のサーバに通知することで、本発明は、定期的な走査を不要とし、ファイルサーバおよびそのデータを格納するストレージ装置の負荷軽減を実現する。
【００６５】
図１６は、本発明の仮想ファイルサーバ（以後、ＶＳと呼ぶことがある)２２０同士の関係やファイル操作通知機構の動作の一例を模式的に表した図面である。
【００６６】
図１６において、サーバ１００Ａは、仮想ファイルサーバ２２０ＡでＮＦＳサービスによりファイルアクセスサービス処理を行っている。また、サーバ１００Ｂは、仮想ファイルサーバ２２０Ｂで検索サービス処理を行っている。
【００６７】
また、サーバ１００はファイル操作通知機構２００を持ち、ファイル更新を検知し、他の仮想ファイルサーバへの当該ファイル更新の通知が必要であるか否かを判定し、必要であると判定した場合には、別のサーバ１００が持つファイル操作通知機構２００にそのファイル更新に関する情報を通知する。ファイル操作通知機構は、ファイル更新の情報を仮想ファイルサーバ２２０で処理を行っているサービス（アプリケーション）に対して、通知する。
【００６８】
ファイル操作通知機構２００を使用する場合、通知する対象となるサービス（アプリケーション）と、通知先となるサービス（アプリケーション）との対応関係をあらかじめ、ファイル操作通知機構２００に登録しておく。ファイル操作通知機構２００は、当該登録に基づいて、ファイル更新の通知の必要性の有無を判定する。図１６の例では、サーバ１００ＡがＮＦＳサービス１６０１を実施しているファイルシステムを通知の対象とし、通知先はＮＦＳサービス１６０１の検索サービスを実行するサーバ１００Ｂの検索エンジン１６０２として、登録済みである。また、検索エンジン１６０２は、検索対象であるＮＦＳサーバ１６０１にアクセス可能であるように設定済みである。
【００６９】
図１６は、サーバ１００Ａで提供するＮＦＳサービスで格納するファイルを、サーバ１００Ｂで提供する検索サービスで検索可能にする例を示している。
【００７０】
サーバ１００ＡのＮＦＳサービスに対して、クライアントからデータの更新を要求する（１６１１）。クライアントからのデータ更新要求は、本例ではＮＦＳプロトコルのＷＲＩＴＥ要求として発行される。ＮＦＳサーバ以外にもデータを更新するためのプロトコルは、ＣＩＦＳやＨＴＴＰ、ＦＴＰなどがある。
【００７１】
更新要求を受けた仮想ファイルサーバ２２０ＡはＮＦＳサービス１６０１がストレージ装置へのファイル変更要求として実行する（１６１２）。ＮＦＳサービス１６０１により、クライアントからの要求はファイルシステムへのシステムコールとして仮想ファイルサーバ２００Ａ上で処理する。
【００７２】
ファイル操作通知機構２００Ａは、この要求がファイル更新の要求であることを検知すると、その情報を一時保存して、ストレージ装置へのファイル１６０３更新処理を実行する（１６１４）。ファイル操作通知機構２００は、仮想ファイルサーバ２００が発行したシステムコールを監視し、ＮＦＳサービス１６０１に対応するファイルシステムへのＷＲＩＴＥシステムコールであれば、更新の通知が必要であると判定し、ファイルの更新として検知する。ＷＲＩＴＥシステムコール以外にも、新たにファイルを作成するＣＲＥＡＴＥシステムコールや、ファイルの属性を変更するＳＥＴ＿ＡＴＴＲシステムコールなども検知の対象に含むことができる。また、ストレージ装置へのファイル１６０３更新処理は、システムコールからストレージ装置がもつブロックへのデータ保存のために、ＳＣＳＩコマンドに変換する。
【００７３】
ファイル操作通知機構２００Ａは、一時保存したファイル更新要求の情報をサーバ１００Ｂのファイル操作通知機構２００Ｂを経由して仮想ファイルサーバ２２０Ｂの検索サービス１６０２にその情報を通知する（１６１５）。ファイル操作通知機構２００同士の間は、ネットワークのプロトコルであるＴＣＰ／ＩＰの上にファイル操作通知機構２００専用のプロトコルを用いて行う。通知を受けたファイル操作通知機構２００Ｂと検索エンジン１６０２との間の通知は、サーバに通知専用のインタフェースを設けることで行う。
【００７４】
サーバ１００Ｂのファイル操作通知機構２００Ｂから、ファイル更新の通知を受けた検索サービス１６０２は、通知に含まれるファイルの情報を元にサーバ１００ＡのＮＦＳサービス１６０１に対して、更新されたファイルを取得する（１６１６）。検索エンジン１６０２からのデータの取得は、ファイルサーバ２００Ａに接続するクライアントと同様に、ＮＦＳプロトコルに基づいて実行する。
【００７５】
検索エンジン１６０２は取得したファイルを元に、検索サービスのためのインデックス情報を更新する（１６１７）。検索サービスのためのインデックスは、検索対象となるファイルのメタデータ、ファイルに含まれるデータのキーワードなどをデータベース化したものである。例えば、ファイルの作成時刻や作成者を元にファイルを検索する場合、メタデータの情報に含まれるかを検索できる。また、ファイルに含まれるデータのキーワードのデータベースを用いれば、あるキーワードを指定すると、そのキーワードを含むファイルを検索することができる。
【００７６】
このように、検索エンジン１６０２はファイル操作通知機構２００による通知の情報を元に、検索サービスに用いるインデックス情報の更新を行うことが出来る。なお、上記ユースケースはあくまでも例示に過ぎず、本発明の用途を限定するものではない。以下、本発明の詳細な説明を行う。
【００７７】
図３は、ファイル操作通知機構２００を示す。
【００７８】
ファイル操作通知機構２００は、操作検知処理部３０１、操作通知受信処理部３０２、ステータス要求処理部３０３、ステータス返信処理部３０４、定期送信処理部３０５、管理処理部３０６、通知管理表３０７、グループ管理表３０８、サーバ管理表３０９、アドレス管理表３１０、送信キュー３１１を有する。
【００７９】
操作検知処理部３０１は、サーバ１００内のある仮想ファイルサーバ２２０上のアプリケーション２２１がボリューム１３４のファイルシステム２１０に対してファイル操作を発行したことを検知し、通知管理表３０７、グループ管理表３０８、サーバ管理表３０９を元に操作通知データ８００を作成し、前記操作通知データ８００を送信キュー３１１に投入するか、または、前記操作通知データ８００を直接特定のファイル操作通知機構２００へ通知するプログラムである。操作通知データ８００の詳細については、図８に示す。また、操作検知処理部３０１の処理フローについては、図９に示す。
【００８０】
操作通知受信処理部３０２は、操作検知処理部３０１または定期送信処理部３０５がファイル操作通知機構２００へ送信してくる操作通知データ８００を受信し、操作通知データ８００が示すアプリケーションへ通知するプログラムである。操作通知受信処理部３０２の処理フローについては、図１０に示す。
【００８１】
ステータス要求処理部３０３は、グループ管理表３０８、サーバ管理表３０９を元に特定のサーバ１００のファイル操作通知機構２００にサーバ１００のＣＰＵ負荷情報やＩ／Ｏ負荷情報などのステータス情報を要求するプログラムである。ステータス要求処理部３０３の処理フローについては、図１１に示す。
【００８２】
ステータス返信処理部３０４は、ステータス要求処理部３０３がファイル操作通知機構へステータス情報を要求してきた場合に、サーバ１００内のステータス情報を収集し、ステータス情報を返信するプログラムである。ステータス返信処理部３０４の処理フローについては、図１２に示す。
【００８３】
定期送信処理部３０５は、送信キュー３１１を定期的にチェックし、操作通知データ８００がキューイングされている場合、当該の操作通知データ８００を特定のファイル操作通知機構２００へ通知するプログラムである。定期送信処理部３０５の処理フローについては、図１３に示す。
【００８４】
管理処理部３０６は、管理プログラム２３０と連携してファイル操作通知機構の設定を行うプログラムである。管理プログラム２３０がシステム管理者に提供する設定画面の例と管理処理部３０６との連携処理については、図１４、図１５に示す。
【００８５】
通知管理表３０７は、ファイル操作通知機構２００が監視対象とするアプリケーションや、ファイル操作、ファイル操作の通知先などを管理するテーブルである。通知管理表３０７の詳細は、図４に示す。
【００８６】
グループ管理表３０８は、操作通知データ８００の送信先と通知ポリシを管理するテーブルである。グループ管理表３０８は、操作通知データ８００の送信先となる複数の仮想ファイルサーバ２２０をグループ化して管理するために、サブテーブルとしてサーバ管理表３０９を持つ。サーバ管理表３０９は、操作通知データ８００の送信先となる複数の仮想ファイルサーバ２２０上のアプリケーション２２１の情報を管理するテーブルである。グループ管理表３０８の詳細は図５に示す。またサーバ管理表３０９の詳細は図６に示す。
【００８７】
アドレス管理表３１０は、操作通知データ８００を特定の仮想ファイルサーバ２２０上のアプリケーション２２１へ送信する場合に、中継するファイル操作通知機構２００のＩＰアドレスを管理するテーブルである。アドレス管理表３１０の詳細は図７に示す。
【００８８】
送信キュー３１１は、操作検知処理部３０１が操作通知データ８００を一時的に格納するキュー型のデータ構造である。送信キュー３１１に格納された操作通知データ８００は、定期送信処理部３０５によって取り出され、操作通知データ８００が示すサーバ１００のファイル操作通知機構２００へ送信される。送信キュー３１１の詳細は図８に示す。
【００８９】
以上、ファイル操作通知機構２００が持つプログラム、テーブル、データ構造について説明した。 
図４は、通知管理表３０７を示す。
【００９０】
通知管理表３０７は、ファイル操作通知機構２００の設定を管理するテーブルである。各ファイル操作通知機構２００は、一つの通知管理表３０７を持つ。
【００９１】
通知管理表３０７の行４１１乃至４１４は、各仮想ファイルサーバ２２０のアプリケーション２２１ごとに検出するファイル操作の種類と、検出したファイル操作の情報を通知する方式、ファイル操作の通知先を表している。
【００９２】
サーバ名４０１の列は、ファイル操作通知機構２００が監視対象とする仮想ファイルサーバ２２０のホスト名などの識別子を保持する。 
アプリケーション名４０２（図４中のＡｐｐ）の列は、ファイル操作通知機構２００が監視対象とするアプリケーション２２１の名前やプロセスＩＤなど、仮想ファイルサーバ２２０上で実行しているアプリケーション２２１を特定可能な識別子を保持する。
【００９３】
ファイル操作４０３の列は、ファイル操作通知機構２００が監視対象とするサーバ名４０１中のアプリケーション名４０２のファイル操作の種類を保持する。具体的には、ファイルの書き込み（ＷＲＩＴＥ）、ファイルの読込み（ＲＥＡＤ）、ファイルの新規作成（ＣＲＥＡＴＥ）、ファイルのパス名変更（ＲＥＮＡＭＥ）、ファイルの削除（ＵＮＬＩＮＫ）などのシステムコールを指定する。ただし、以上のファイル操作の種類４０３は例示に過ぎず、本発明の権利をこれに限定するものではない。
【００９４】
引数フラグ４０４（図４中の引数）の列は、操作通知データ８００に、ファイル操作（システムコール）の引数を含めるか否かを示すフラグを保持する。図４中では「Ｙ」が格納されている場合は引数を含め、「Ｎ」が格納されている場合は引数を含めないことを示す。なお、引数フラグ４０４の表記方法は一例であり、この方式に限定するものではない。 
同期フラグ４０５（図４中の同期）の列は、アプリケーション名４０２のアプリケーション２２１から検出したファイル操作の通知を同期または非同期のどちらで行うかを示すフラグを保持する。同期で行う場合、グループ名４０７で指定したグループに操作通知データ８００を送信し、その結果が返ってくるまで、アプリケーション名４０２のアプリケーション２２１の処理をブロックする。その結果タイムアウトとなった場合には、対象となるファイル動作をおこなったアプリケーション２２１にエラーを返す。非同期で行う場合、送信キュー３１１に操作通知データ８００を格納し、アプリケーション名４０２のアプリケーション２２１の処理をブロックしない。図４中では「Ｙ」が格納されている場合は同期、「Ｎ」が格納されている場合は非同期を示す。なお、同期・非同期の表記方法は一例であり、この方式に限定するものではない。同期フラグによる処理の詳細は、図９で示す。
【００９５】
添付タイプ４０６（図４中添付）の列は、操作通知データ８００に添付するデータの種類を保持する。具体的には、Ｆｉｌｅ（ファイル）、ＮＤ（データ無し）、を指定する。ただし、以上の添付タイプ４０６は例示に過ぎず、本発明の権利をこれに限定するものではない。ここで、添付タイプ４０６で指定するデータの利用方法の例を示す。ＣＲＥＡＴＥ操作時の通知データ８００にファイルを添付してウィルススキャンサーバに通知することで、クライアント１１０がアプリケーション２２１を経由して作成したファイルのウィルスチェックを行うことが可能となる。
【００９６】
グループ名４０７の列は、ファイル操作を通知するアプリケーション２２１のグループの名を保持する。グループには、複数の仮想ファイルサーバ２２０中のアプリケーション２０１が含まれる。グループについての詳細は、後述する図５、図６に示す。
【００９７】
ファイル操作通知機構２００は、検知したファイル操作が通知管理表３０７の各行のサーバ名４０１、アプリケーション名４０２、ファイル操作４０３と一致するか確認し、一致した行のグループ名４０７に対してファイル操作の通知処理を行う。また、ファイル操作通知機構２００が検知したファイル操作が、通知管理表３０７内の複数の行のサーバ名４０１、アプリケーション名４０２、ファイル操作４０３と一致する場合、各行のグループ名４０７に対して通知処理を行う。例えば、図４の場合、ＶＳ１上のＮＦＳサーバがファイル操作ＣＲＥＡＴＥを発行すると、ファイル操作通知機構２００は、ファイル操作を検知し、通知管理表３０７の行４１１乃至行４１４まで発行されたファイル操作に適合する行があるか順番に確認し、適合する行４１１のＶＳＳ  Ｇｒｏｕｐと、行４１２のＳＥ  Ｇｒｏｕｐに対して順番にファイル操作の通知処理を行う。ファイル操作通知機構２００による、通知管理表３０７を走査する処理の詳細は図９に示す。 
以上、通知管理表３０７を説明した。なお、通知管理表３０７は、後述する図１４、図１５の設定画面例を使ってシステム管理者が手動で管理しても良いし、アプリケーション２２１をインストールするタイミングで自動的に更新してもよい。例えば、検索エンジンをあるサーバ１００にインストールした場合、サーバ１００内のＮＦＳサーバがファイルを書き込む操作は、新たにインストールした検索エンジンのグループに通知するように通知管理表３０７を自動更新してもよい。 
図５は、グループ管理表３０８を示す。
【００９８】
グループ管理表３０８は、グループの設定情報を管理するテーブルである。 
グループ管理表３０８の行５１１乃至５１２は、各グループの設定を表している。
【００９９】
グループ名５０１の列は、操作通知データ８００の送信先となる、複数の仮想ファイルサーバ２２０上のアプリケーション２２１をグループ化した識別子を保持する。
【０１００】
通知ポリシ５０２の列は、グループ内のアプリケーション２２１への通知する方針を保持する。具体的には、グループ内の全てのアプリケーション２２１へ通知するＢｒｏａｄｃａｓｔ、グループ内の複数のアプリケーション２２１へ順番に通知するＲｏｕｎｄ-Ｒｏｂｉｎ、最もＣＰＵ負荷が低い仮想ファイルサーバ２２０上のアプリケーション２２１へ通知するＣＰＵ  Ｌｏａｄ、最もＩ／Ｏ負荷が低い仮想ファイルサーバ２２０上のアプリケーション２２１へ通知Ｉ／Ｏ  Ｌｏａｄを指定する。ただし、以上の通知ポリシ５０２の種類は例示に過ぎず、本発明の権利をこれに限定するものではない。
【０１０１】
サーバ管理表名５０３の列は、グループ名５０１に対応するサーバ管理表３０９の識別子を保持する。サーバ管理表名５０３の詳細は図６で示す。
【０１０２】
例えば、図５中の５１２で示す行は、ＳＥ  Ｇｒｏｕｐの通知ポリシはＢｒｏａｄｃａｓｔであり、サーバ管理表３０９Ｂで管理する仮想ファイルサーバ２２０上のアプリケーション２２１全てへ操作通知データ８００を送信することを意味する。
【０１０３】
ここでグループの構成方針と、通知ポリシ５０２の選択方針を示す。例えば、ファイル操作に対する処理を複数のアプリケーション２２１で負荷分散して実行する場合、システム管理者は、同じ種類のアプリケーション２２１でグループを構成し、通知ポリシ５０２としてＲｏｕｎｄ−Ｒｏｂｉｎや、ＣＰＵ  Ｌｏａｄ、Ｉ／Ｏ  Ｌｏａｄ、を設定する。特にＣＰＵ  ＬｏａｄやＩ／Ｏ  Ｌｏａｄの設定は、アプリケーション２２１が要求するＣＰＵ負荷やＩ／Ｏ負荷が大きいことが分かっている場合に、確実にＣＰＵ負荷やＩ／Ｏ負荷に余裕があるサーバ１００上のアプリケーション２２１で処理を実行させる場合に用いる。負荷分散を行うアプリケーション２２１としては、ウィルススキャンサーバやバックアップサーバなどがある。
【０１０４】
また、一つのファイル操作に対する通知をまとめて複数のアプリケーションに通知する必要がある場合、システム管理者は、まとめて通知する複数のアプリケーションで一つのグループを構成し、通知ポリシ５０２としてＢｒｏａｄｃａｓｔを設定する。例えば、複数の検索エンジンで検索インデックスを分散して管理する方式の検索エンジンへファイルの更新を通知する場合、全ての検索エンジンへファイルの更新を通知するためにＢｒｏａｄｃａｓｔを用いる。ファイルの更新を受信した各検索エンジンは、自身が管理する検索インデックスを更新する必要があるか自身で判断し、更新の必要がある検索エンジンだけ処理を行うことになる。
【０１０５】
以上、グループ管理表３０８を説明した。 なお、グループ管理表３０８は、後述する図１４、図１５の設定画面例を使ってシステム管理者が手動で管理しても良いし、アプリケーション２２１をインストールするタイミングで自動的に更新してもよい。例えば、検索エンジンを新規にインストールする時、グループ管理表３０８及び図６で示すサーバ管理表３０９を自動的に確認して、新規にインストールした検索エンジンが所属するグループが無い場合は、自動的に検索エンジンのグループ（サーバ管理表３０９を含む）を新規作成してグループ管理表３０８に登録してもよい。また、システム管理者が手動で管理する例としては、設定ポリシ５０２にＲｏｕｎｄ−Ｒｏｂｉｎを設定していたが、通知先の複数のサーバ１００間でＣＰＵ負荷やＩ／Ｏ負荷に偏りが発生した場合に、設定ポリシ５０２をＣＰＵ  ＬｏａｄやＩ／Ｏ  Ｌｏａｄに変更するケースが考えられる。 
図６Ａ、図６Ｂは、サーバ管理表３０９を示す。
【０１０６】
サーバ管理表３０９は、通知先のグループを構成する仮想ファイルサーバ２２０と、アプリケーション２２１の情報を管理するテーブルである。ファイル操作通知機構２００は、グループ管理表３０８が管理する各グループにつき一つのサーバ管理表３０９を持つ。なお、図５のサーバ管理表名５０３が示すところの、図６Ａは、ＶＳＳ  Ｇｒｏｕｐのサーバ管理表３０９Ａであり、図６Ｂは、ＳＥ  Ｇｒｏｕｐのサーバ管理表３０９Ｂである。
【０１０７】
サーバ管理表３０９Ａの行６１１Ａと６１２Ａ、サーバ管理表３０９Ｂの行６１１Ｂと６１２Ｂは、仮想ファイルサーバ２２０と前記仮想ファイルサーバ２２０上で動作するアプリケーションの情報を表す。
【０１０８】
サーバ名６０１の列は、仮想ファイルサーバ２２０のホスト名などの識別子を保持する。
【０１０９】
ＣＰＵ負荷６０２の列は、サーバ名６０１のＣＰＵ負荷情報を保持する。図６では、ＣＰＵ負荷の度合いをパーセントで表示している。
【０１１０】
Ｉ／Ｏ負荷６０３の列は、サーバ名６０１のＩ／Ｏ負荷情報を保持する。図６では、Ｉ／Ｏ負荷の度合いをパーセントで表示している。
【０１１１】
アプリケーション名６０４の列は、プログラム名やプロセスＩＤなど、サーバ名６０１で示す仮想ファイルサーバ２２０上で実行中のアプリケーション２２１を識別するための識別子を保持する。
【０１１２】
例えば、図６中の６１１Ｂで示す行は、ＳＥ  Ｇｒｏｕｐに含まれるアプリケーション２２１は、ＶＳ２上で動作する検索エンジンであり、ＶＳ２のＣＰＵ負荷は２０％で、Ｉ／Ｏ負荷は３０％であることを意味する。
【０１１３】
以上、サーバ管理表３０９を説明した。なお、実施例では、サーバ管理表３０９が格納するサーバ名６０１の情報として、ＣＰＵ負荷６０２とＩ／Ｏ負荷６０３の情報を示したが、この二つの情報は、例示に過ぎず、本発明をこれに限定するものではない。グループ管理表３０８の通知ポリシ５０２を実現するために必要な情報をサーバ管理表３０９に追加して格納しても本発明を実施可能である。また、サーバ管理表３０９は、後述する図１４、図１５の設定画面例を使ってシステム管理者が手動で管理しても良いし、図５で示したようにアプリケーション２２１をインストールするタイミングで自動的に作成してもよい。 
図７は、アドレス管理表３１０を示す。
【０１１４】
アドレス管理表３１０は、操作通知データ８００を特定の仮想ファイルサーバ２２０上のアプリケーション２２１へ送信する場合に、中継するファイル操作通知機構２００のＩＰアドレスを管理するテーブルである。
【０１１５】
アドレス管理表３１０の行７１１乃至７１４は、通知する仮想ファイルサーバ２２０ごとに、どのＩＰアドレスへ操作通知データ８００を送信するかを示している。
【０１１６】
サーバ名７０１の列は、仮想ファイルサーバ２２０のホスト名などの識別子を保持する。
【０１１７】
管理ＩＰアドレス７０２の列は、サーバ名７０１の仮想ファイルサーバ２２０が動作しているサーバ１００上のファイル操作通知機構２００と通信するためのＩＰアドレスを保持する。図７の例示では、ＶＳ１とＶＳ２の仮想ファイルサーバ２２０が動作するサーバ１００のファイル操作通知機構２００と通信するためには、ＩＰアドレス１２７。０。０。１を使うことを意味する。同様にＶＳ３とＶＳ４の仮想ファイルサーバ２２０が動作するサーバ１００のファイル操作通知機構２００と通信するためには、ＩＰアドレス１９２。１６８。１０。１を使うことを意味する。
【０１１８】
以上、アドレス管理表３１０を説明した。なお、サーバ１１０で運用する仮想ファイルサーバ２２０を追加・削除する場合には、同時にアドレス管理表３１０のサーバ名７０１と管理ＩＰアドレス７０２の組も追加・削除を行う。
【０１１９】
図８は、送信キュー３１１の模式図である。
【０１２０】
送信キュー３１１は、ファイル操作通知機構２００の操作検知処理部３０１がファイル操作を検出して作成した操作通知データ８００を順番に一時的に格納するキュー型のデータ構造である。図８で例示した送信キュー３１１では、アプリケーション２２１へ通知する３つの操作通知データ８００Ａ乃至８００Ｃを順番に格納していることを意味する。また、送信キュー３１１に格納された操作通知データ８００Ａ乃至８００Ｃの内部構成を、８０１Ａ乃至８１２Ａ、８０１Ｂ乃至８１２Ｂ、８０１Ｃ乃至８１２Ｃに示す。
【０１２１】
操作通知データ８００は、時間８０１、送信元サーバ８０２、送信元アプリケーション８０３（図８中、送信元Ａｐｐ）、送信先サーバ８０４、送信先アプリケーション８０５（図８中、送信先Ａｐｐ）、ファイル操作８０６、パス８０７、引数サイズ８０８、引数８０９、添付タイプ８１０、添付サイズ８１１、添付データ８１２からなる。
【０１２２】
時間８０１は、操作通知データ８００が作成された時間を保持する。図８中では、時間８０１を秒単位の時間として保存しているが、時間の保存形式が、本発明の権利に限定を加えることはない。
【０１２３】
送信元サーバ８０２は、ファイル操作を発行したアプリケーション２２１が動作する仮想ファイルサーバ２２０の識別子を保持する。
【０１２４】
送信元アプリケーション８０３は、ファイル操作を発行したアプリケーション２２１の識別子を保持する。
【０１２５】
送信先サーバ８０４には、操作通知データ８００の送信先のアプリケーション２２１が動作する仮想ファイルサーバ２２０の識別子を保持する。
【０１２６】
送信先アプリケーション８０５は、操作通知データ８００の送信先のアプリケーション２２１の識別子を保持する。
【０１２７】
ファイル操作８０６には、送信元アプリケーション８０３が発行したファイル操作の種類を保持する。ファイル操作の種類は、具体的には、ファイルの書き込み（ＷＲＩＴＥ）、ファイルの読込み（ＲＥＡＤ）、ファイルの新規作成（ＣＲＥＡＴＥ）、ファイルのパス変更（ＲＥＮＡＭＥ）、ファイルの削除（ＵＮＬＩＮＫ）、ファイルの属性変更（ＳＥＴ  ＡＴＴＲ）、を指定する。ただし、以上のファイル操作は例示に過ぎず、本発明の権利をこれに限定するものではない。
【０１２８】
パス８０７には、ファイル操作の対象となったファイルのパス名を保持する。
【０１２９】
引数サイズ８０８には、アプリケーション２２１が発行したファイル操作の引数のサイズを保持する。通知管理表３０７の引数フラグ４０４により、通知が不要の場合は、０が指定される。
【０１３０】
引数８０９には、送信元アプリケーション８０３が発行したファイル操作の引数を保持する。
【０１３１】
添付タイプ８１０には、添付データ８１２の種類を意味する識別子を保持する。具体的には、Ｆｉｌｅ（ファイル）、ＮＤ（データ無し）、を指定する。ただし、以上の通知するデータの種類は例示に過ぎず、本発明の権利をこれに限定するものではない。
【０１３２】
添付サイズ８１１には、添付データ８１２のサイズを保持する。ただし、添付タイプ８１０に「データ無し」が保持されている場合には、サイズが０となる。
【０１３３】
添付データ８１２には、ファイル、パス名、読み書きしたデータなど、実際のデータを保持する。ただし、添付タイプ８１０に「データ無し」が保持されている場合には、添付データ８１２は空となる。
【０１３４】
操作検知処理部３０１は、送信キュー３１１に操作通知データ８００を格納する。送信キュー３１１に格納された操作通知データ８００は、定期送信処理部３０５によって、通知管理表３０７、グループ管理表３０８、サーバ管理表３０９、アドレス管理表３１０から特定したサーバ１００上のファイル操作通知機構２００へ送信される。定期送信処理部３０５の詳細な処理は、図１３に示す。
【０１３５】
以上、送信キュー３１１を説明した。なお、送信キュー３１１を、ファイル操作通知機構２００内に複数用意し、ファイル操作８０６や添付タイプ８１０、送信先アプリケーション８０５などの種類に応じて使い分けても良い。複数ある場合、ファイル操作８０６や添付タイプ８１０、送信先アプリケーション８０５などの特性に応じて、異なる送信間隔で操作通知データ８００をアプリケーション２２１へ通知可能となる利点がある。また図８では、送信キュー３１１に３つの操作通知データ８００Ａ乃至８００Ｃを格納している状態を提示したが、これは一例であり、格納できる操作通知データ８００の数を３つに限定するものではない。
【０１３６】
図９Ａ、図９Ｂは、操作検知処理部３０１による操作検知処理フローである。
【０１３７】
仮想ファイルサーバ２２０上のアプリケーション２２１がファイル操作を発行することでステップ９００乃至９１９で示す操作検知処理が動作する。なお、当該操作検知処理は、ファイル操作名と、ファイル操作の引数と、ファイル操作対象のファイル名（パス名）と、ファイル操作を発行したアプリケーション名と、ファイル操作を発行したアプリケーションが動作する仮想ファイルサーバ名と、を指定する。なお、ファイル操作の引数とは、例えば、ＲＥＮＡＭＥ操作の場合は変更前と変更後のファイル名（パス名）、ＷＲＩＴＥ操作の場合は書き込むデータなどである。
【０１３８】
（ステップ９００）操作検知処理部３０１は、当該操作検知処理が指定した情報を入力として処理を開始する。
【０１３９】
（ステップ９０１）操作検知処理部３０１は、一次記憶領域に整数型の変数Ｎを用意し、０で初期化する。
【０１４０】
（ステップ９０２）操作検知処理部３０１は、ＮにＮ＋１の値を代入する。つまり、操作検知処理部３０１が開始して最初にステップ９０２を実行した場合は、Ｎが１となり、２回目にステップ９０２を実行した場合は、Ｎが２となり、１ずつ増加する。
【０１４１】
（ステップ９０３）操作検知処理部３０１は、通知管理表３０７のＮ行目を取り出す。通知管理表３０７にＮ行目があれば「Ｙｅｓ」へ進む。一方、通知管理表３０７にＮ行目が無ければ「Ｎｏ」へ進む。
【０１４２】
（ステップ９０４）操作検知処理部３０１は、Ｎ行目のサーバ名４０１、アプリケーション名４０２とファイル操作４０３が、操作検知処理部３０１の入力と一致するか確認を行う。入力と一致する場合は、「Ｙｅｓ」へ進む。一方、入力と一致しない場合は、「Ｎｏ」へ進む。
【０１４３】
（ステップ９０５）操作検知処理部３０１は、ファイル操作の通知先となるグループの通知ポリシに基づき、ファイル操作の通知先となるサーバのリスト（以後サーバリストと呼ぶ）を作成する。具体的には、操作検知処理部３０１は、操作通知表３０７のＮ行目のグループ名４０７をキーとしてグループ管理表３０８を引く。次に操作検知処理部３０１は、グループ管理表３０８のグループ名５０１の列で、グループ名４０７と一致する行の通知ポリシ５０２を取得する。次に操作検知処理部３０１は、通知ポリシ５０２に該当するサーバを指すサーバ管理表３０９の行番号をリストにし、サーバリストとする。通知ポリシに応じた操作検知処理部３０１の処理を以下に示す。通知ポリシ５０２がＢｒｏａｄｃａｓｔの場合、操作検知処理部３０１は、単純にサーバ管理表３０９の全行番号をサーバリストに加える。例えば図６Ａでのサーバリストは、{1, 2}となる。また、通知ポリシ５０２がＲｏｕｎｄ−Ｒｏｂｉｎの場合、操作検知処理部３０１は、前回指定したサーバの行番号を変数に記憶しておき、その行番号が示す次のサーバの行番号をサーバリストに加える。例えば図６Ａでのサーバリストは、１回目にサーバリストを作る場合は{1}となり、２回目にサーバリストを作る場合は{2}となり、３回目にサーバリストを作る場合は、サーバ管理リストを一周して１つ目のサーバの指定に戻るため{1}となる。また、通知ポリシ５０２がＣＰＵ  Ｌｏａｄの場合、操作検知処理部３０１は、サーバ管理表３０９から最もＣＰＵ  Ｌｏａｄが低いサーバを検索し、該当するサーバを示す行番号をサーバリストに加える。例えば図６Ａでのサーバリストは、{1}となる。また、通知ポリシ５０２がＩ／Ｏ  Ｌｏａｄの場合、操作検知処理部３０１は、サーバ管理表３０９から最もＩ／Ｏ  Ｌｏａｄが低いサーバを検索し、該当するサーバを示す行番号をサーバリストに加える。例えば図６Ａでのサーバリストは、{1}となる。
【０１４４】
（ステップ９０６）操作検知処理部３０１は、一次記憶領域に整数型の変数Ｍを用意し、０で初期化する。
【０１４５】
（ステップ９０７）操作検知処理部３０１は、ＭにＭ＋１の値を代入する。つまり、操作検知処理部３０１がステップ９０７を実行するたびにＭの値が１ずつ増加する。
【０１４６】
（ステップ９０８）操作検知処理部３０１は、ステップ９０５で作成したサーバリストからサーバ管理表３０９の行番号を示すＭ番目の要素を取り出す。サーバリストにＭ番目の要素があれば「Ｙｅｓ」へ進む。一方、サーバリストにＭ番目の要素が無ければ「Ｎｏ」へ進む。
【０１４７】
（ステップ９０９）操作検知処理部３０１は、操作検知下請処理フローを実行する。なお、操作検知下請処理は、操作検知処理が指定した入力と、整数Ｎと、ステップ９０８で取り出した行番号が指すサーバ管理表３０９のサーバ名６０１、アプリケーション名６０４と、を指定する。
【０１４８】
（ステップ９１０）操作検知処理部３０１は、当該操作検知下請処理が指定した情報を入力として、当該操作検知下請処理を開始する。
【０１４９】
（ステップ９１１）操作検知処理部３０１は、入力情報を基に操作通知データ８００を作成する。操作検知処理部３０１による、より具体的な操作管理データ８００の作成方法を以下に示す。時間８０１にはサーバ１００の現在の時刻を格納する。送信元サーバ８０２には入力の仮想ファイルサーバ名を格納する。送信元アプリケーション８０３には入力のアプリケーション名を格納する。送信先サーバ８０４には、入力で受け取ったサーバ名６０１を格納する。送信先アプリケーション８０５には、入力で受け取ったアプリケーション名６０４を格納する。ファイル操作８０６には入力のファイル操作名を格納する。パス８０７には、入力のパス名を格納する。引数サイズ８０８には、引数８０９のデータサイズを格納する。ただし、操作通知表３０７のＮ行目の引数フラグ４０４が「Ｎ」の場合、引数サイズ８０８には０を格納する。本実施例では、引数サイズ８０８の単位は、バイトであることを想定しているが、他の形式であっても発明の権利を限定するものではない。引数８０９は、引数サイズ８０８が１以上の場合に、入力のファイル操作の引数データを格納する。一例として、ファイル操作８０６がＷＲＩＴＥ操作の場合には、引数８０９には、ＷＲＩＴＥ操作で書き込む内容を格納する。また、ファイル操作８０６がＲＥＮＡＭＥ操作の場合には、引数８０９には、ファイル名の変更前・変更後のパス名を保存する。
【０１５０】
添付タイプ８１０には、操作通知表３０７のＮ行目の添付タイプ４０６を格納する。具体的には、添付タイプ８１０には、Ｆｉｌｅ（ファイル）、Ｃａｃｈｅ（ファイルキャッシュのメモリ上のアドレス）、ＮＤ（データ無し）を格納する。 
添付サイズ８１１には、添付データ８１２のデータサイズを格納する。本実施例では、添付サイズ８１１の単位は、バイトであることを想定しているが、他の形式であっても発明の権利を限定するものではない。
【０１５１】
添付データ８１２には、添付タイプ８１０で指定されたデータを格納する。具体的には、添付データ８１２として、ファイル、ファイルキャッシュのメモリ上のアドレスを格納する。
【０１５２】
（ステップ９１２）操作検知処理部３０１は、当該行の同期フラグ４０５を参照する。同期フラグ４０５が「Ｙ」ならば、「Ｙｅｓ」へ進む。一方、同期フラグ４０５が「Ｎ」ならば、「Ｎｏ」へ進む。
【０１５３】
（ステップ９１３）操作検知処理部３０１は、作成した操作通知データ８００を送信キュー３１１の最後尾に投入する。なお、操作検知処理部３０１は、作成した操作通知データ８００を送信キュー３１１に投入する前に、送信キュー３１１に投入済みの操作通知データ８００をチェックし、時間８０１を除いて同一の操作通知データ８００が投入済みの場合は、作成した操作通知データ８００を送信キュー３１１へ投入せずに破棄する処理としてもよい。重複する操作通知データ８００を削減することで、他のサーバ１００へ通知するためのＬＡＮ１０２を流れる通信データ量の削減、送信キュー３１１のために用いるメモリ量の削減、通知先アプリケーション２２１が個々の操作通知データ８００に対する連携処理を行う時間やＣＰＵ負荷の削減、といった効果が生まれる。
【０１５４】
（ステップ９１４）操作検知処理部３０１は、操作検知下請処理フローを終了し、ステップ９０７に戻る。
【０１５５】
（ステップ９１５）操作検知処理部３０１は、入力として受け取ったファイル操作を実行し、実行結果と共に処理をアプリケーション２２１へ返す。
【０１５６】
（ステップ９１６）操作検知処理部３０１は、操作検知処理フローを終了する。
【０１５７】
（ステップ９１７）操作検知処理部３０１は、作成した操作通知データ８００を送信先アプリケーション８０５が動作する送信先サーバ８０４のファイル操作通知機構２００へ送信する。より具体的には、操作通知データ８００の送信先サーバ８０４をキーとして、アドレス管理表３１０のサーバ名７０１の列を検索し、サーバ名７０１が一致した行の管理ＩＰアドレス７０２を送信先として、操作通知データ８００を送信する。
【０１５８】
（ステップ９１８）操作検知処理部３０１は、ステップ９１７の送信処理の実行時にエラーが発生したか確認を行う。具体的なエラーとしては、送信先サーバ８０４のダウンや、送信先サーバ８０４までのネットワーク経路のダウンによる通信障害などがある。エラーが発生した場合には、「Ｙｅｓ」へ進む。一方、エラーが発生しなかった場合には、「Ｎｏ」へ進む。
【０１５９】
（ステップ９１９）操作検知処理部３０１は、入力として受け取ったファイル操作を実行せずに、ファイル操作実行時にエラーが発生したことを、ファイル操作を発行した当該アプリケーション２２１に返す。
【０１６０】
上記ステップ９１２、ステップ９１７乃至ステップ９１９において、操作検知処理部３０１は、操作通知データ８００の送信エラーが発生した場合、即座にファイル操作を発行したアプリケーション２２１へエラーを返す処理とした。しかし、管理者などが予めタイムアウトを設定しておき、操作通知データ８００の送信エラーが発生した場合でも何度かリトライし、タイムアウトしたらファイル操作を発行したアプリケーション２２１へエラーを返す処理としてもよい。
【０１６１】
図１０は、操作通知受信処理部３０２による操作通知受信処理フローである。
【０１６２】
ファイル操作通知機構２００が、操作検知処理部３０１または定期送信処理部３０５からの操作通知データ８００の送信要求を受信することでステップ１０００乃至１００４で示す操作通知受信処理が動作する。なお、当該受信処理は、受信した操作通知データ８００を指定する。
【０１６３】
（ステップ１０００）操作通知受信処理部３０２は、当該受信処理が指定した情報を入力として処理を開始する。
【０１６４】
（ステップ１００１）操作通知受信処理部３０２は、操作通知データ８００中の送信先サーバ８０４、送信先アプリケーション８０５を参照し、送信先の仮想ファイルサーバ２２０とアプリケーション２２１を決定する。操作通知受信処理部３０２は、決定したアプリケーション２２１へ操作通知データ８００を送信する。より具体的な処理を以下にしめす。まず操作通知受信処理部３０２は、仮想ファイルサーバ２２０と操作通知受信処理部３０２との共有メモリ２４０に対して、操作通知データ８００を書き込む。一方、仮想ファイルサーバ２２０内のアプリケーション２２１は、共有メモリ２４０を定期的に監視する。アプリケーション２２１が、共有メモリ２４０に操作通知データ８００が書き込まれたことを検知したら、操作通知データ８００中の送信先アプリケーション８０５の識別子を確認し、自アプリケーション２２１宛の操作通知データ８００だけを共有メモリ２４０から取りだす。操作通知データ８００を取り出したアプリケーション２２１は、操作通知データ８００の内容に基づき、送信元のアプリケーション２２１との連携処理を行う。一例として、操作通知データ８００の送信元のアプリケーション２２１がＮＦＳ、送信先のアプリケーション２２１が検索エンジンだった場合の連携処理を以下に示す。まず、クライアント１１０が、ＮＦＳの共有ファイルに書き込みを行うと、ファイル操作通知機構２００によって操作通知データ８００が検索エンジンに通知される。次に検索エンジンは、操作通知データ８００のファイル操作８０６がＷＲＩＴＥであることを確認し、更新された送信元サーバ８０２のパス８０７のファイルを取得し、検索エンジンのインデックスを更新する処理を行う。
【０１６５】
（ステップ１００２）操作通知受信処理部３０２は、操作通知データ８００を送ったアプリケーション２２１から戻り値を受け取る。より具体的には、操作通知受信処理部３０２は、仮想ファイルサーバ２２０と操作通知受信処理部３０２との共有メモリ２４０を介して戻り値を受け取る。
【０１６６】
（ステップ１００３）操作通知受信処理部３０２は、アプリケーション２２１からの戻り値を操作通知データ８００の送信元サーバ８０２のファイル操作通知機構２００へ返す。一例として、送信元のアプリケーション２２１がＮＦＳ、送信先のアプリケーション２２１がウィルススキャンサーバだった場合の戻り値の利用例を以下に示す。まず、クライアント１１０が、ＮＦＳの共有ファイルとして新規ファイルを作成しようとすると、ファイル操作通知機構２００によって操作通知データ８００がウィルススキャンサーバに通知される。次にウィルススキャンサーバでは、操作通知データ８００のファイル操作がＣＲＥＡＴＥであることを確認し、添付データ８１２のファイルを検疫し、ウィルスではないと確認できたら戻り値として正常コード、ウィルスと確認できたら戻り値としてエラーコードを送信元のファイル操作通知機構２００へ返す。送信元のファイル操作通知機構２００では、戻り値を見てエラーコードの場合には、ＣＲＥＡＴＥ操作をエラーにしてＮＦＳに返す。
【０１６７】
（ステップ１００４）操作通知受信処理部３０２は、操作通知受信処理フローを終了し、ファイル操作通知機構２００へ処理を返す。
【０１６８】
図１１は、ステータス要求処理部３０３によるステータス要求処理フローである。
【０１６９】
ファイル操作通知機構２００が、定期的にステータス要求処理部３０３を実行することでステップ１１００乃至１１０５で示すステータス要求処理が動作する。 
（ステップ１１００）ステータス要求処理部３０３は、処理を開始する。
【０１７０】
（ステップ１１０１）ステータス要求処理部３０３は、グループ管理表３０８から、ファイル通知機構２００が持つ全てのサーバ管理表３０９を特定し、各サーバ管理表３０９に登録している全てのサーバ名６０１を集める。次に、ステータス要求処理部３０３は、各サーバ名６０１に対応する管理ＩＰアドレスをアドレス管理表３１０から収集する。
【０１７１】
（ステップ１１０２）ステータス要求処理部３０３は、ステップ１１０１で収集した全ての管理ＩＰアドレスに対して、ステータス情報の要求を送信する。
【０１７２】
（ステップ１１０３）ステータス要求処理部３０３は、ステップ１１０２で送信したステータス要求の返信を受信する。受信したデータには、各仮想ファイルサーバ２２０のステータス情報が含まれる。
【０１７３】
（ステップ１１０４）ステータス要求処理部３０３は、ステップ１１０３で受信したステータス情報を元に、サーバ管理表３０９の各行のサーバ名６０１のＣＰＵ負荷６０２や、Ｉ／Ｏ負荷６０３を更新する。
【０１７４】
（ステップ１１０５）ステータス要求処理部３０３は、ステータス要求処理フローを終了し、ファイル操作通知機構２００へ処理を返す。
【０１７５】
図１２は、ステータス返信処理部３０４によるステータス返信処理フローである。
【０１７６】
ファイル操作通知機構２００が、ステータス要求処理部３０３からのステータス情報の要求を受け付けることでステップ１２００乃至１２０３で示すステータス返信処理が動作する。なお、当該返信処理は、ステータス要求の送信元のＩＰアドレスを指定する。
【０１７７】
（ステップ１２００）ステータス返信処理部３０４は、当該返信処理が指定した情報を入力として処理を開始する。
【０１７８】
（ステップ１２０１）ステータス返信処理部３０４は、サーバ１００内の各仮想ファイルサーバ２２０のＣＰＵ負荷情報や、Ｉ／Ｏ負荷情報をステータス情報として収集する。なお、ここで収集したステータス情報は例示に過ぎず、本発明の権利をこれに限定するものではない。
【０１７９】
（ステップ１２０２）ステータス返信処理部３０４は、入力されたＩＰアドレス宛に、収集したステータス情報を送信する。
【０１８０】
（ステップ１２０３）ステータス返信処理部３０４は、ステータス返信処理フローを終了し、ファイル操作通知機構２００へ処理を返す。
【０１８１】
図１３は、定期送信処理部３０５による定期送信処理フローである。
【０１８２】
ファイル操作通知機構２００が、定期的に定期送信処理部３０５を実行することでステップ１３００乃至１３０５で示す定期送信処理が動作する。なお、当該定期送信処理は、送信キュー３１１を指定する。
【０１８３】
（ステップ１３００）定期送信処理部３０５は、当該定期送信処理が指定した情報を入力として処理を開始する。
【０１８４】
（ステップ１３０１）定期送信処理部３０５は、送信キュー３１１の先頭に操作通知データ８００が入っているかどうか確認する。操作通知データ８００が入っていれば、「Ｙｅｓ」へ進む。一方、操作通知データ８００が入っていなければ「Ｎｏ」へ進む。
【０１８５】
（ステップ１３０２）定期送信処理部３０５は、送信キュー３１１に入っている先頭の操作通知データ８００を通知先アプリケーション８０５へ送信する。より具体的には、操作通知データ８００の通知先サーバ８０４の識別子をキーとしてアドレス管理表３１０のサーバ名７０１の列を検索し、通知先サーバ８０４とサーバ名７０１とが一致する行の管理ＩＰアドレス７０２宛に操作通知データを送信する。
【０１８６】
（ステップ１３０３）定期送信処理部３０５は、送信処理中にエラーが発生した場合、「Ｙｅｓ」へ進む。一方、送信処理でエラーが発生しなかった場合、「Ｎｏ」へ進む。具体的なエラーとしては、送信先サーバ８０４のダウンや、送信先サーバ８０４までのネットワーク経路のダウンによる通信障害などがある。
【０１８７】
（ステップ１３０４）定期送信処理部３０５は、操作通知データ８００を正常に送信できた場合、送信キュー３１１先頭の操作通知データ８００を削除し、ステップ１３０１の処理に戻る。
【０１８８】
（ステップ１３０５）定期送信処理部３０５は、操作通知データ８００を送信時にエラーが発生した場合、当該の操作通知データ８００を送信キュー３１１から外し、送信キュー３１１の最後尾に回し、ステップ１３０１の処理に戻る。
【０１８９】
（ステップ１３０６）定期送信処理部３０５は、定期送信処理フローを終了し、ファイル操作通知機構２００へ処理を返す。
【０１９０】
なお、本実施例では、ファイル操作通知機構２００が定期送信処理部３０５を定期的に実行する間隔として分単位のオーダを想定しているが、本発明の権利をこの時間間隔に限定するものではない。また、用途に応じて、送信キュー３１１が複数用意し、定期送信処理部３０５が引数に取る送信キュー３１１ごとに異なる時間間隔で定期送信処理部３０５を実行しても良い。
【０１９１】
図１４、図１５は、システム管理者が、ファイル操作通知機構２００の設定を行う管理画面の例である。
【０１９２】
図１４は、ファイル操作通知設定ウィンドウ１４００を示す。システム管理者が、管理プログラム２３０を実行すると、管理プログラム２３０によってファイル操作通知設定ウィンドウ１４００が提供される。
【０１９３】
実行された管理プログラム２３０は、ファイル操作通知機構２００の管理処理部３０６と通信し、ファイル操作通知機構２００が管理する通知管理表３０７、グループ管理表３０８、サーバ管理表３０９のコピーを取得し、メモリ１２３上に一時的に保存する。ファイル操作通知設定ウィンドウ１４００や後述するグループ設定ウィンドウ１５００には、メモリ１２３上に一時保存した通知管理表３０７、グループ管理表３０８、サーバ管理表３０９の設定情報が表示される。
【０１９４】
システム管理者は、ファイル操作通知設定ウィンドウ１４００を用いて、ファイル操作の通知先設定１４１０、通知先のグループ設定１４３０を行うことができる。
【０１９５】
ファイル操作の通知先設定１４１０では、通知管理表３０７の新規行の追加、既存行の修正、既存行の削除を行うことができる。
【０１９６】
システム管理者は、「追加」ボタン１４１８を押すことで、新規行を作成することができる。システム管理者が「追加」ボタン１４１８を押すと、サーバ名４０１、アプリケーション名４０２、ファイル操作４０３、引数フラグ４０４、同期・非同期の指定４０５、添付タイプ４０６、通知先グループ名４０７の入力が可能となる。管理プログラム２３０は、入力された情報をメモリ１２３上の通知管理表３０７に追加する。
【０１９７】
また、システム管理者は、ラジオボタン１４１１を使い行の指定をして、「修正」ボタン１４１９を押すことで、既存行の修正を行うことができる。システム管理者が「修正」 ボタン１４１９を押すと、ラジオボタン１４１１で指定した行のサーバ名４０１、アプリケーション名４０２、ファイル操作４０３、引数フラグ４０４、同期・非同期の指定４０５、添付タイプ４０６、通知先グループ名４０７の修正が可能となる。管理プログラム２３０は、入力された情報でメモリ１２３上の通知管理表３０７を更新する。
【０１９８】
また、システム管理者は、ラジオボタン１４１１を使い行の指定をして、「削除」ボタン１４２０を押すことで、既存行の削除を行うことができる。システム管理者が「削除」 ボタン１４２０を押すと、管理プログラム２３０は、削除対象の行をメモリ１２３上の通知管理表３０７から削除する。
【０１９９】
通知先のグループ設定１４３０では、グループ管理表３０８とサーバ管理表３０９で管理するグループの作成、修正、削除を行うことができる。
【０２００】
システム管理者は、「追加」ボタン１４３３を押すことで、新たなグループを作成することができる。システム管理者が「追加」 ボタン１４３３を押すと、管理プログラム２３０は、グループ設定ウィンドウ１５００を表示する。グループ設定ウィンドウ１５００については、後述する。
【０２０１】
また、システム管理者は、ラジオボタン１４３１を使いグループ名１４３２を指定して、「修正」ボタン１４３４を押すことで、既存グループの修正を行うことができる。システム管理者が「修正」 ボタン１４３４を押すと、管理プログラム２３０は、グループ設定ウィンドウ１５００を表示する。グループ設定ウィンドウ１５００については、後述する。
【０２０２】
また、システム管理者は、ラジオボタン１４３１を使いグループ名１４３２を指定して、「削除」ボタン１４３５を押すことで、既存グループの削除を行うことができる。システム管理者が「削除」 ボタン１４３４を押すと、管理プログラム２３０は、削除対象のグループ名４０７と一致する行をメモリ１２３上のグループ管理表３０８のグループ名４０７の列から検索し、一致した行のサーバ管理表名５０３からメモリ１２３上のサーバ管理表３０９を特定して削除する。また、管理プログラム２３０は、メモリ１２３上のグループ管理表３０８から前記一致した行を削除する。
【０２０３】
システム管理者が「ＯＫ」ボタン１４４０を押した場合、管理プログラム２３０は、メモリ１２３上に一時保存していた通知管理表３０７、グループ管理表３０８、サーバ管理表３０９のコピーを管理処理部３０６に送信する。
【０２０４】
一方、システム管理者が「Ｃａｎｃｅｌ」ボタン１４５０を押した場合、管理プログラム２３０は、メモリ１２３上に一時保存していた通知管理表３０７、グループ管理表３０８、サーバ管理表３０９を破棄し、ファイル操作通知設定ウィンドウ１４００を閉じる。
【０２０５】
図１５は、グループ設定ウィンドウ１５００を示す。システム管理者が、「追加」ボタン１４３３または「修正」ボタン１４３４を押した場合、管理プログラム２３０は、グループ設定画面１５００を提供する。「修正」ボタン１４３４が押された場合、管理プログラム２３０は、予めメモリ１２３上に一時保存しているグループ管理表３０８及びサーバ管理表３０９の情報から、グループ名５０１、グループのポリシ５０２、ターゲット設定１５３０のサーバ６０１、アプリケーション６０４の情報をグループ設定ウィンドウ１５００に表示する。
【０２０６】
システム管理者は、グループ設定ウィンドウ１５００を用いて、グループ管理表３０８及びサーバ管理表３０９で管理するグループ名５０１、グループのポリシ５０２、ターゲット設定１５３０を変更できる。
【０２０７】
ターゲット設定１５３０では、サーバ管理表３０９で管理する通知先アプリケーションの追加、修正、削除が可能である。
【０２０８】
システム管理者が「追加」ボタン１５３４を押すと、通知先のサーバ６０１とアプリケーション６０４の組となるエントリを登録することができる。管理プログラム２３０は、入力された情報をメモリ１２３上のサーバ管理表３０９に追加する。
【０２０９】
また、システム管理者がラジオボタン１５３１でエントリを指定して、「修正」ボタン１５３５を押すと、ラジオボタン１５３１で指定したエントリのサーバ名６０１、アプリケーション６０４の修正が可能となる。管理プログラム２３０は、入力された情報でメモリ１２３上のサーバ管理表３０９を更新する。
【０２１０】
また、システム管理者がラジオボタン１５３１でエントリを指定して、「削除」ボタン１５３６を押すと、当該エントリを削除することが可能となる。管理プログラム２３０は、当該エントリをメモリ１２３上のサーバ管理表３０９から削除する。
【０２１１】
システム管理者が「ＯＫ」ボタン１５４０を押すと、管理プログラム２３０は、システム管理者が入力したグループ名５０１、ポリシ５０２をメモリ１２３上のグループ管理表３０８に保存してグループ設定ウィンドウ１５００を閉じ、ファイル操作通知設定ウィンドウ１４００を表示する。なお、グループの追加・削除やグループ名の修正を行った場合は、ファイル操作通知設定ウィンドウ１４００のグループ設定１４３０に反映される。
【０２１２】
管理プログラム２３０は通知管理表３０７、グループ管理表３０８、サーバ管理表３０９の更新情報さえ管理処理部３０６に送信することができれば、上記で説明した図１４、図１５以外の画面を採用してもよい。なお、上記処理と連動して管理処理部３０６は、メモリ１０７上の通知管理表３０７、グループ管理表３０８、サーバ管理表３０９を、管理プログラム２３０から受け取った通知管理表３０７、グループ管理表３０８、サーバ管理表３０９で置き換える。
【０２１３】
以上、本発明によれば、サーバ１００内のある仮想ファイルサーバ２２０上のアプリケーション２２１がファイル操作を行った場合、ファイル操作通知機構２００によって前記サーバ１００内の他の仮想ファイルサーバ２２０上のアプリケーション２２１や、複数の外部のサーバ１００上のアプリケーション２２１へファイル操作を通知することが可能となり、複数のアプリケーション２２１間での連携動作が可能となる。本実施例では、一例としてＮＦＳサーバと検索エンジンとの連携について図１６に示した。その他のアプリケーションの連携例としては、ファイル共有サーバとバックアップサーバの連携、またはファイル共有サーバとリモートコピーサーバの連携などがある。ファイル操作通知機構２００が、ファイル共有サーバ経由でファイルが更新されたことをリモートコピーサーバやバックアップサーバに通知することで、更新されたファイルだけをリモートコピーで遠隔地のサーバに送信したり、バックアップ装置に保存したりすることが可能となる。
【０２１４】
バックアップサーバやリモートコピーサーバとの連携では、ファイルをバックアップする場合の更新ファイルの検索時間の短縮や、バックアップメディアの容量削減、バックアップデータの通信量削減、といった効果を得ることができる。
【産業上の利用可能性】
【０２１５】
ファイルサーバ、特にＮＡＳなどに広く適用可能である。
【符号の説明】
【０２１６】
１００：サーバ
１１０：クライアント
１２０：管理計算機
１３０：ストレージ装置
１３３：ディスク装置
１３４：ボリューム
２００：ファイル操作通知機構
２１０：ファイルシステム
２２０：仮想ファイルサーバ
２２１：アプリケーション
２２２：マウントテーブル
２４０：共有メモリ
３０１：操作検知処理部
３０２：操作通知受信処理部
３０３：ステータス要求処理部
３０４：ステータス返信処理部
３０５：定期送信処理部
３０６：管理処理部
３０７：通知管理表
３０８：グループ管理表
３０９：サーバ管理表
３１０：アドレス管理表
３１１：送信キュー
【図１】
2010271963.tif 000003
【図２】
2010271963.tif 000004
【図３】
2010271963.tif 000005
【図４】
2010271963.tif 000006
【図５】
2010271963.tif 000007
【図６Ａ】
2010271963.tif 000008
【図６Ｂ】
2010271963.tif 000009
【図７】
2010271963.tif 000010
【図８】
2010271963.tif 000011
【図９Ａ】
2010271963.tif 000012
【図９Ｂ】
2010271963.tif 000013
【図１０】
2010271963.tif 000014
【図１１】
2010271963.tif 000015
【図１２】
2010271963.tif 000016
【図１３】
2010271963.tif 000017
【図１４】
2010271963.tif 000018
【図１５】
2010271963.tif 000019
【図１６】
2010271963.tif 000020