(57)【特許請求の範囲】
【請求項１】
ファイルに含まれるデータをスキャンして所定の情報を生成する第１のスキャン処理部を有し、第１のファイルシステムと第２のファイルシステムとを仮想的に統合して生成された仮想ファイルシステムに基づいてクライアント端末にファイルを提供する、第１のファイルサーバと、
ファイルに含まれるデータをスキャンして所定の情報を生成する第２のスキャン処理部と、前記第２のファイルシステムと、を有する第２のファイルサーバと、を備え、
前記第１のファイルサーバは、さらに、前記仮想ファイルシステムと実際のファイル又はディレクトリの格納場所との対応関係と、１つのディレクトリに含まれる全てのファイルが前記第２のファイルシステムに移動されていることを示す一括処理フラグとを管理するオブジェクト管理テーブルを含み、
前記第１のスキャン処理部は、管理端末からの前記第１及び第２のファイルシステムに含まれるファイルに対する第１のスキャン処理要求に応答し、前記仮想ファイルシステムに基づいて、前記第１のファイルシステムに含まれるファイルに対してスキャン処理を実行すると共に、前記第１のスキャン処理要求に対応するファイル及びディレクトリについて前記オブジェクト管理テーブルを参照し、前記一括処理フラグがONとなっているディレクトリに含まれる全ファイルについてのみスキャン処理を実行するように、前記第２のファイルシステムに含まれるファイルについてスキャン処理を実行するように前記第２のファイルサーバに第２のスキャン処理要求を送信し、
前記第２のスキャン処理部は、受信した前記第２のスキャン処理要求に応答して対象となっているファイルに対してスキャン処理を実行し、スキャン処理結果を前記第１のファイルサーバに送信し、
前記第１のファイルサーバは、前記第１のスキャン処理部が実行して得たスキャン処理結果と前記第２のスキャン処理部から得たスキャン処理結果を統合して前記管理端末に提供する、ファイル共有システム。
【請求項２】
請求項１において、
前記仮想ファイルシステムは、上位のファイルシステムとして定義された前記第１のファイルシステムと、下位のファイルシステムとして定義された前記第２のファイルシステムとによって階層構造のファイルシステムを構成し、
前記第１のファイルサーバは、さらに、所定の条件に従って、ファイルを前記第１のファイルシステムから前記第２のファイルシステムに階層移動させるファイル移動処理部を備えることを特徴とする、ファイル共有システム。
【請求項３】
請求項１において、
前記第１のスキャン処理部は、前記一括処理フラグがOFFとなっているディレクトリに含まれるファイルであって、前記第２のファイルシステムに含まれるファイルについては、前記第２のスキャン処理部にスキャン処理を実行させるのではなく自らスキャン処理を実行することを特徴とする、ファイル共有システム。
【請求項４】
請求項１において、
前記第１及び第２のスキャン処理部はメモリ上にロードされたプログラムで構成され、
前記第１のファイルサーバは、任意のタイミングで、前記第２のファイルサーバに対して、前記第２のファイルサーバのメモリ上に前記第２のスキャン処理部を実現するためのプログラムをロード及びアンロードするように指示を与えることを特徴とする、ファイル共有システム。
【請求項５】
請求項１において、
前記第１のファイルサーバは、前記第２のファイルサーバとの通信状態を監視し、当該通信状態が示すネットワーク遅延量がネットワーク遅延に関する閾値をよりも大きい場合かつ前記オブジェクト管理テーブルにおける一括処理フラグがOFFとなっている場合、前記一括処理フラグをONに変更することを特徴とする、ファイル共有システム。
【請求項６】
請求項１において、
さらに、前記第１のファイルサーバに接続され、第３のファイルシステムを提供する第３のファイルサーバを備え、
前記第１のファイルサーバは、前記第３のファイルサーバが前記第２のスキャン処理部に相当する第３のスキャン処理部を備えているかどうか確認し、当該確認結果に基づいて、前記第３のファイルシステムが提供する１つ以上のオブジェクトについて、自身の前記第１のスキャン処理部によってスキャン処理を実行するか、前記第３のスキャン処理部にスキャン処理を実行させるかを決定することを特徴とする、ファイル共有システム。
【請求項７】
請求項１において、
前記第１及び第２のスキャン処理部が実行するスキャン処理は、ファイルからキーワードを抽出して検索用索引情報を作成する索引作成処理、又はファイルをスキャンしてウイルスをチェックするウイルスチェック処理であることを特徴とする、ファイル共有システム。
【請求項８】
請求項１において、
前記第１のファイルサーバは、前記クライアント端末と前記管理端末にネットワークを介して接続されたファイルサーバであり、
前記第２のファイルサーバは、前記第１のファイルサーバにネットワークを介して接続されたクラウドコンピューティング環境であり、
前記第１のファイルシステムは、前記第１のファイルサーバに接続されたディスクアレイ装置が提供する上位の実ファイルシステムであり、
前記第２のファイルシステムは、クラウドコンピューティング環境が提供する下位の実ファイルシステムであり、
前記第１及び第２のスキャン処理部は、ファイルの索引データを作成する索引処理、又はファイルに含まれるウイルスを検出するウイルスチェック処理を実行するプログラムで構成され、
前記仮想ファイルシステムは、前記上位の実ファイルシステムと、前記下位の実ファイルシステムとによって階層構造のファイルシステムを構成し、
前記第１のファイルサーバは、さらに、前記オブジェクト管理テーブルと、ファイルを階層間で移動させるためのポリシである階層移動ポリシに記述された条件に従って、ファイルを前記上位の実ファイルシステムから前記下位の実ファイルシステムに階層移動させる階層移動処理部と、を備え、
前記第１のスキャン処理部は、さらに、前記一括処理フラグがOFFとなっているディレクトリに含まれるファイルであって、前記第２のファイルシステムに含まれるファイルについては、前記第２のスキャン処理部にスキャン処理を実行させるのではなく自らスキャン処理を実行し、
前記第２のスキャン処理部は、受信した前記第２のスキャン処理要求に応答して対象となっているファイルに対してスキャン処理を実行し、スキャン処理結果を前記第１のファイルサーバに送信することを特徴とする、ファイル共有システム。
【請求項９】
第１のファイルシステムを含む第１のファイルサーバと、第２のファイルシステムを含む第２のファイルサーバと、を備えるファイル共有システムにおけるファイル処理方法であって、
前記第１のファイルサーバは、さらに、仮想的なファイルシステムと実際のファイル又はディレクトリの格納場所との対応関係と、１つのディレクトリに含まれる全てのファイルが前記第２のファイルシステムに移動されていることを示す一括処理フラグとを管理するオブジェクト管理テーブルを含み、
前記第１のファイルサーバは、前記第１のファイルシステムと前記第２のファイルシステムとを統合して前記仮想的なファイルシステムを生成し、当該仮想的なファイルシステムに基づいてクライアント端末にファイルを提供し、
前記第１のファイルサーバは、管理端末からの前記第１及び第２のファイルシステムに含まれるファイルに対するスキャン処理要求に応答し、前記仮想的なファイルシステムに基づいて前記第１のファイルシステムに含まれるファイルに対してスキャン処理を実行すると共に、前記スキャン処理要求に対応するファイル及びディレクトリについて、前記オブジェクト管理テーブルを参照し、前記一括処理フラグがONとなっているディレクトリに含まれる全ファイルについてのみスキャン処理を実行するように、前記第２のファイルシステムに含まれるファイルについてスキャン処理を実行するように前記第２のファイルサーバにスキャン処理要求を送信し、
前記第２のファイルサーバは、前記第１のファイルサーバから受信したスキャン処理要求に応答して対象となっているファイルに対してスキャン処理を実行し、スキャン処理結果を前記第１のファイルサーバに送信し、
前記第１のファイルサーバは、自ら実行して得たスキャン処理結果と前記第２のファイルサーバから得たスキャン処理結果を統合して前記管理端末に提供する、ファイル処理方法。
【請求項１０】
請求項９において、
前記第１のファイルサーバは、前記クライアント端末と前記管理端末にネットワークを介して接続されたファイルサーバであり、
前記第２のファイルサーバは、前記第１のファイルサーバにネットワークを介して接続されたクラウドコンピューティング環境であり、
前記第１のファイルシステムは、前記第１のファイルサーバに接続されたディスクアレイ装置が提供する上位の実ファイルシステムであり、
前記第２のファイルシステムは、前記クラウドコンピューティング環境が提供する下位の実ファイルシステムであり、
前記スキャン処理は、ファイルの索引データを作成する索引処理、又はファイルに含まれるウイルスを検出するウイルスチェック処理を実行するプログラムで構成され、
前記仮想的なファイルシステムは、前記上位の実ファイルシステムと、前記下位の実ファイルシステムとによって階層構造のファイルシステムを構成し、
前記第１のファイルサーバは、
前記上位及び下位の実ファイルシステムで構成される階層間でファイルを移動させるためのポリシである階層移動ポリシに記述された条件に従って、ファイルを前記上位の実ファイルシステムから前記下位の実ファイルシステムに階層移動させる階層移動処理を実行し、
前記階層移動処理を行いながら、前記オブジェクト管理テーブルの情報を更新し、
前記管理端末からのスキャン処理要求に対応するファイル及びディレクトリについて前記オブジェクト管理テーブルを参照し、前記一括処理フラグがONとなっているディレクトリに含まれる全ファイルについてのみスキャン処理を実行するように前記第２のファイルサーバに対してスキャン処理要求を送信し、前記一括処理フラグがOFFとなっているディレクトリに含まれるファイルであって、前記第２のファイルシステムに含まれるファイルについては、前記第２のファイルサーバにスキャン処理を実行させるのではなく自らスキャン処理を実行し、
前記クラウドコンピューティング環境は、前記第１のファイルサーバから受信したスキャン処理要求に応答して対象となっているファイルに対して前記スキャン処理を実行し、スキャン処理結果を前記第１のファイルサーバに送信することを特徴とする、ファイル処理方法。
【請求項１１】
記憶装置を有する、或いは記憶装置に接続された、複数のコンピュータを請求項１のファイル共有システムとして機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル共有システムおよびファイル処理方法、並びにプログラム関し、ファイルサーバによるサービス提供のための技術に関するものである。
【背景技術】
【０００２】
現在、様々な性能を持つストレージ装置が開発されており、ストレージ装置を構成するボリュームには性能に差がある。一般的には、性能が高いボリュームは高価で、容量を多く確保することができない。一方、性能が低いボリュームは安価で、容量を多く確保することができる。
【０００３】
特性が異なるこれらのボリュームを複数利用し、ストレージ装置にかかるコストの削減などを目的として、ファイルを最適配置するHSM（Hierarchical Storage Management）機能と呼ぶデータ管理方法が知られている。HSM機能は、ファイルシステムプログラムが頻繁に利用されているファイルを「高速・高価」なボリュームに移動し、あまり利用されていないファイルを「低速・安価」なボリューム（ドライブ）に移動する。さらに、HSM機能は、これらのファイルの移動をクライアントに対して隠蔽する。HSM機能は、このようにファイル保存ボリュームを制御することで、ストレージにかかるコストの削減を可能とする。
【０００４】
ファイルの移動先として、別のファイルサーバを利用することもできる。より「低速・安価」なボリュームをもつファイルサーバに対してファイルを移動することで、より細やかに階層を構成し更なるコスト削減を実現できる。例えば、特許文献１は、ファイルの移動先として、別のファイルサーバを利用する方法を開示している。特許文献１では、あるファイルサーバから別のファイルサーバへファイルを移動した後、ファイルアクセス要求があった場合に、当該ファイルがスタブファイルであるかどうかを判定し、スタブファイルであれば移動先のファイルサーバに要求を転送して処理を行わせる。
【０００５】
また、近年では、インターネットを介して、ネットワークの向こう側にある巨大なコンピューティング環境やストレージを従量課金方式のサービスとして利用する、所謂クラウドコンピューティングやクラウドストレージが普及しつつある（以下、単にクラウドと称する場合がある）。ファイルの移動先として、このクラウドストレージを利用することも考えられる。容量管理や障害対応などの各種ストレージ管理は、クラウドストレージを提供するベンダが行うため、クラウドストレージ上にファイルを移動することで、ストレージの管理コストの削減が期待できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−５９２０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１で開示されているファイルアクセス方法を、あるファイルサーバから物理的に遠い場所（例えばクラウドコンピューティング環境やクラウドストレージ）に移動したファイルに適用する場合、ネットワークのレイテンシが問題となる。例えば、検索エンジンで使用する索引を作成しようとすると、移動済みのディレクトリツリーにある全てのファイルを逐一アクセスしなければならず、ファイルアクセス回数が増大する。すると、アクセス対象のファイルは、レイテンシの大きなネットワーク上にあるため、処理時間が増大してしまう。また、索引作成時だけでなく、ディレクトリツリー全体を走査するようなプログラム（例えば、ウイルスチェック）を実行する場合、同様に処理時間が増大する。
【０００８】
本発明はこのような状況に鑑みてなされたものであり、ネットワークレイテンシの大きなクラウドコンピューティング環境を、HSM機能におけるファイル移動対象として利用する場合であっても、ネットワークのレイテンシを生じさせることなく、ファイルサーバから物理的に遠い場所に配置されたストレージに格納されたファイルやディレクトリを効率的に操作することができる技術を提供するものである。
【課題を解決するための手段】
【０００９】
（１）上記課題を解決するために、本発明では、クラウドコンピューティング環境に移行済みのファイル（特に、ディレクトリツリー下のファイル）については、クラウド側で一括して索引作成処理やウイルスチェック処理を実行可能にし、結果のみを授受することで、処理時間を短縮する。
【００１０】
具体的には、あるディレクトリ以下の全てのファイルがクラウド側へ移動済みとなったとき、そのディレクトリのメタデータに、クラウド側での一括処理を行うか否かを示すフラグを有効化する。この一括処理フラグは、索引作成処理やウイルスチェック処理などのアプリケーション毎に保持してもよい。
【００１１】
また、例えば索引作成プログラムがディレクトリツリー全体を走査しながら索引を作成していく。走査対象がディレクトリの場合には、一括処理が有効か否かを確認する。一括処理が有効である場合には、あらかじめ配置したクラウドコンピューティング環境側の索引作成プログラムに対して索引作成要求を出す。索引作成要求には、走査対象のディレクトリ以下にあるファイルの識別子のリストを含む。
【００１２】
そして、クラウドコンピューティング環境側の索引作成プログラムは、要求を受けて対象のファイルの索引を作成し、結果をファイルサーバ側の索引作成プログラムに送信する。
【００１３】
最後に、ファイルサーバ側の索引作成プログラムは、得られた結果を自ファイルサーバの名前空間にマッピングし、ユーザに対してはあたかも全ての処理がファイルサーバ側で行われたかのように見せる。
【００１４】
（２）即ち、本発明によるファイル共有システムは、ファイルに含まれるデータをスキャンして所定の情報を生成する第１のスキャン処理部(290, 1810)を有し、第1のファイルシステム(370, 380)と第２のファイルシステム(490)とを仮想的に統合して生成された仮想ファイルシステム(360)に基づいてクライアント端末(100)にファイルを提供する、第１のファイルサーバ(200, 1800)と、ファイルに含まれるデータをスキャンして所定の情報を生成する第２のスキャン処理部(460, 1910)と、前記第２のファイルシステム(490)と、を有する第２のファイルサーバ(400, 1900)と、を備えている。
【００１５】
前記第1のスキャン処理部(290, 1810)は、管理端末(110)からの前記第1及び第２のファイルシステム(370, 380, 490)に含まれるファイルに対する第１のスキャン処理要求に応答し、前記仮想的なファイルシステム(360)に基づいて、前記第１のファイルシステム(370, 380)に含まれるファイルに対してスキャン処理を実行すると共に、前記第２のファイルシステム(490)に含まれるファイルについてスキャン処理を実行するように前記第２のファイルサーバ(400, 1900)に第２のスキャン処理要求を送信し、
前記第２のスキャン処理部(460, 1910)は、受信した前記第２のスキャン処理要求に応答して対象となっているファイルに対してスキャン処理を実行し、スキャン処理結果を前記第1のファイルサーバ(200, 1800)に送信し、
前記第1のファイルサーバ(200, 1800)は、前記第1のスキャン処理部(290, 1810)が実行して得たスキャン処理結果と前記第２のスキャン処理部(460, 1910)から得たスキャン処理結果を統合して前記管理端末(110)に提供する。ここで、前記第１及び第２のスキャン処理部(290, 460, 1810, 1910)が実行するスキャン処理は、例えば、ファイルからキーワードを抽出して検索用索引情報を作成する索引作成処理、又はファイルをスキャンしてウイルスをチェックするウイルスチェック処理である。
【００１６】
（３）また、前記仮想的なファイルシステム(360)は、上位のファイルシステムとして定義された前記第1のファイルシステム(370, 380)と下位のファイルシステムとして定義された前記第２のファイルシステム(490)とによって階層構造のファイルシステムを構成している。さらに、前記第1のファイルサーバ(200, 1800)は、所定の条件(階層移動ポリシ550)に従って、ファイルを前記第1のファイルシステム(370, 380)から前記第２のファイルシステム(490)に階層移動させるファイル移動処理部(540)を備えている。
【００１７】
さらに、前記第1のファイルサーバ(200, 1800)は、前記仮想的なファイルシステム(360)と実際のファイル又はディレクトリの格納場所との対応関係と、１つのディレクトリに含まれる全てのファイルが前記第２のファイルシステム(490)に移動されていることを示す一括処理フラグ(860)とを管理するオブジェクト管理テーブル(800)を有している。この場合、前記第1のスキャン処理部(290, 1810)は、前記第1のスキャン処理要求に対応するファイル及びディレクトリについて前記オブジェクト管理テーブル(800)を参照し、前記一括処理フラグ(860)がONとなっているディレクトリに含まれる全ファイルについてのみスキャン処理を実行するように前記第２のファイルサーバ(400, 1900)に対して前記第２のスキャン処理要求を送信する。そして、前記第２のスキャン処理部(460, 1910)は、受信した前記第２のスキャン処理要求に応答して対象となっているファイルに対してスキャン処理を実行し、スキャン処理結果を前記第1のファイルサーバ(200, 1800)に送信する。
【００１８】
一方、前記第1のスキャン処理部(290, 1810)は、前記一括処理フラグ(860)がOFFとなっているディレクトリに含まれるファイルであって、前記第２のファイルシステム(490)に含まれるファイルについては、前記第２のスキャン処理部(460, 1910)にスキャン処理を実行させるのではなく自らスキャン処理を実行する。
【００１９】
また、前記第１のファイルサーバ(200, 1800)は、前記第２のファイルサーバ(400, 1900)との通信状態を監視し、当該通信状態が示すネットワーク遅延量がネットワーク遅延に関する閾値をよりも大きい場合かつ前記オブジェクト管理テーブル(800)における一括処理フラグ(860)がOFFとなっている場合、前記一括処理フラグ(860)をONに変更するようにしても良い。
【００２０】
（４）前記第１及び第２のスキャン処理部(290, 460, 1810, 1910)はメモリ上にロードされたプログラムで構成されるようにしても良い。この場合、前記第1のファイルサーバ(200, 1800)は、任意のタイミングで、前記第２のファイルサーバ(400, 1900)に対して、前記第２のファイルサーバ(400, 1900)のメモリ(440)上に前記第２のスキャン処理部(460, 1910)を実現するためのプログラムをロード及びアンロードするように指示を与える。
【００２１】
（５）ファイル共有システムは、さらに、前記第１のファイルサーバ(200, 1800)に接続され、第３のファイルシステムを提供する第３のファイルサーバを備える場合、前記第１のファイルサーバ(200, 1800)は、前記第３のファイルサーバが前記第２のスキャン処理部(460, 1910)に相当する第３のスキャン処理部を備えているかどうか確認し、当該確認結果に基づいて、前記第３のファイルシステムが提供する１つ以上のオブジェクトについて、自身の前記第1のスキャン処理部(290, 1810)によってスキャン処理を実行するか、前記第３のスキャン処理部にスキャン処理を実行させるかを決定する。
【００２２】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００２３】
本発明によれば、ネットワークのレイテンシを生じさせることなく、ファイルサーバから物理的に遠い場所に配置されたストレージに格納されたファイルやディレクトリを効率的に操作することができるようになる。
【図面の簡単な説明】
【００２４】
【図１】第１の実施形態におけるファイル共有システムの構成例を示す図である。
【図２】第１の実施形態におけるファイルサーバの内部構成を示す図である。
【図３】第１の実施形態におけるファイルサーバが使用するディスクアレイ装置の内部構成を示す図である。
【図４】第１の実施形態におけるクラウドコンピューティング環境の内部構成を示す図である。
【図５】第１の実施形態におけるＨＳＭプログラムの内部構成を示す図である。
【図６】第１の実施形態におけるＨＳＭ機能を提供するファイルシステムツリーの構成を示す図である。
【図７】第１の実施形態における階層管理テーブルの内部構成を示す図である。
【図８】第１の実施形態におけるオブジェクト管理テーブルの内部構成を示す図である。
【図９】第１の実施形態における索引作成画面の一例を示す図である。
【図１０】第１の実施形態におけるオブジェクト作成モジュールの処理の一例を示す図である。
【図１１】第１の実施形態における階層移動モジュールの処理の一例を示す図である。
【図１２】第１の実施形態におけるファイル移動処理の一例を示す図である。
【図１３】第１の実施形態におけるデータ読込モジュールの処理の一例を示す図である。
【図１４】第１の実施形態におけるデータ書込モジュールの処理の一例を示す図である。
【図１５】第１の実施形態における索引作成プログラムＡの処理の一例を示す図である。
【図１６】第１の実施形態における索引作成プログラムＢの処理の一例を示す図である。
【図１７】第１の実施形態における検索エンジンプログラムの処理の一例を示す図である。
【図１８】第２の実施形態におけるファイルサーバの内部構成を示す図である。
【図１９】第２の実施形態におけるクラウドコンピューティング環境の内部構成を示す図である。
【図２０】第２の実施形態におけるウイルスチェック画面の一例を示す図である。
【図２１】第２の実施形態におけるウイルスチェックプログラムＡの処理の一例を示す図である。
【図２２】第２の実施形態におけるウイルスチェックプログラムＢの処理の一例を示す図である。
【発明を実施するための形態】
【００２５】
本発明は、ファイルシステムの特性に応じてファイルの最適配置を行うファイルサーバにおいて、ファイルの検索サービスやウイルスチェックサービスを提供する際に、クラウドコンピューティング環境側に移動済みのディレクトリツリーを走査するようなアプリケーションを高速に実行する。これにより、HSM機能のファイル移動対象として、ネットワークレイテンシが大きなクラウドコンピューティング環境を利用する場合であっても、クラウド側のディレクトリツリーを走査するようなアプリケーションを高速に実行することができる。
【００２６】
以下、HSM機能により、あるファイルサーバからネットワークレイテンシが大きなクラウドコンピューティング環境に移動されたディレクトリツリーに対して索引作成処理及びウイルスチェックを実行する例を用いて本発明を説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００２７】
（１）第1の実施形態
＜ファイル共有システムの構成＞
図１は、本発明によるファイル共有システムの概略構成を示すブロック図である。ファイル共有システムは、クライアント（１つ以上の端末）100と、少なくとも１つの管理端末110と、ネットワーク120を介してクライアント100及び管理端末110と接続された少なくとも１つのファイルサーバ200と、ファイルサーバ200にローカル接続されたディスクアレイ装置300と、ネットワーク130を介してファイルサーバ200と接続された少なくとも1つのクラウドコンピューティング環境400と、を備えている。
【００２８】
クライアント100は、ファイルサーバ200で提供されるファイル共有サービスを利用するユーザが使用する計算機である。
【００２９】
管理端末110は、ファイルサーバ200を管理する計算機であり、ファイルサーバ200を管理するシステム管理者が使用する。
【００３０】
ファイルサーバ200は、ファイル共有サービスをクライアント100へ提供する計算機である。また、ファイルサーバ200は、HSM機能を有しており、HSM機能においてクラウドコンピューティング環境400と通信することで、クラウドコンピューティング環境400が提供するファイル共有サービスを二次的にクライアント100に提供するファイルサーバでもある。
【００３１】
クラウドコンピューティング環境400は、ファイルサーバ200が利用するファイル共有サービスと各種アプリケーションを実行するための環境とを提供する計算機である。つまり、本発明では、クラウドコンピューティグ環境400は、単なるストレージ機能を有するだけでなく、各種演算を実行することが前提となるものである。
【００３２】
ネットワーク120は、クライアント100と、管理端末110と、ファイルサーバ200とを相互に接続するネットワークである。ネットワーク120は、例えばLAN（Local Area Network）である。
【００３３】
ネットワーク130は、ファイルサーバ200とクラウドコンピューティング環境400とを相互に接続するネットワークである。ネットワーク130は、例えば、WAN（Wide Area Network）やインターネットである。
【００３４】
ディスクアレイ装置300は、クライアント100がファイルサーバ200を通して読み書きするデータを格納する記憶装置である。ディスクアレイ装置300とファイルサーバ200の接続形態は、SAN（Storage Area Network）を用いたものでもよいし、直接接続されたものでもよい。また、ファイルサーバ200が内部にディスクアレイ装置300に相当するストレージ部を有していても良い。
【００３５】
＜ファイルサーバの構成＞
図２は、ファイルサーバ200の概略構成を示すブロック図である。図２に示されるように、ファイルサーバ200は、メモリ250に格納されたプログラムを実行するCPU 210と、クライアント100との通信に使用するネットワークインタフェース220と、クラウドコンピューティング環境400との通信に使用するネットワークインタフェース230と、ディスクアレイ装置300との通信に使用するディスクインタフェース240と、プログラムやデータを格納するメモリ250と、を搭載し、それらを内部的な通信路（例えば、バス）によって接続している計算機である。
【００３６】
ファイルサーバ200のメモリ250には、プログラムやデータが格納される。例えば、ファイルサーバプログラム260、HSMプログラム500、ファイルシステムプログラム270、検索エンジンプログラム280、索引作成プログラムＡ290、索引295などである。
【００３７】
ファイルサーバプログラム260は、クライアント100から入出力要求（I/O要求）に応じて、クライアント100に対してファイル共有サービスを提供するプログラム（例えばNFSサーバプログラム）である。
【００３８】
HSMプログラム500は、ファイルシステムプログラム270が管理する実ファイルシステムＡ370及び実ファイルシステムＢ380と、クラウドコンピューティング環境400のファイルシステムプログラム470が管理する実ファイルシステムＣ490とを用いて疑似ファイルシステム360（例えば、仮想ファイルシステム）を構成し、ファイルの利用状況などに合わせて、クライアント100からは透過的に、実ファイルシステムＡ370と実ファイルシステムＢ380と実ファイルシステムＣ470との間でファイルを移動させるHSM機能を提供するプログラムである。これにより、実ファイルの移動があったとしても、擬似ファイルシステム360によって実ファイルの格納場所が管理されているので、クライアント100からはファイルサーバ200のみへのアクセスによって、ファイルを提供することができるようになっている。
【００３９】
ファイルシステムプログラム270は、ディスクアレイ装置300に格納されている実ファイルシステムＡ370と、実ファイルシステムＢ380とを管理するプログラムである。
【００４０】
検索エンジンプログラム280は、ファイルサーバ200が有するファイル群から、ユーザが必要とするファイルを検索するサービスを提供するプログラムである。
【００４１】
索引作成プログラムＡ290は、検索エンジンプログラム280が、ユーザが必要とするファイルを高速かつ的確に検索するための索引を作成するプログラムである。また、索引作成プログラムＡ 290は、索引作成プログラムＢ460と協調して動作する。
【００４２】
索引295は、索引作成プログラムＡ290によって作成される索引データであり、例えば、定期的にディスクアレイ装置300における索引295から索引データをコピーしてメモリに格納したものである。また、索引295は、検索エンジンプログラム280が、ユーザが必要とするファイルを検索するために使用される。
【００４３】
＜ディスクアレイ装置の構成＞
図３は、ディスクアレイ装置300の概略構成を示すブロック図である。図３に示すように、ディスクアレイ装置300は、ディスクコントローラ310と、ディスクインタフェース320と、FC（Fibre Channel）ディスクドライブ330および340と、SATA（Serial Advanced Technology Attachment）ディスクドライブ350と、を備えている。
【００４４】
ディスクコントローラ310は、ディスクインタフェース320を介して得られた、ファイルサーバ200の入出力要求に基づいて、FCディスクドライブ330および340と、SATAディスクドライブ350のデータを例えばブロック単位で入出力する。
【００４５】
ディスクインタフェース320は、ファイルサーバ200との通信に使用するインタフェースである。
【００４６】
FCディスクドライブ330および340と、SATAディスクドライブ350は、ファイルサーバ200が読み書きするデータを格納するためのディスクドライブである。FCディスクドライブ330には、疑似ファイルシステム360と索引295が格納されている。FCディスクドライブ340には、実ファイルシステムＡ370が格納されている。SATAディスクドライブ350には、実ファイルシステムＢ380が格納されている。
【００４７】
なお、HSM機能を提供するためには、疑似ファイルシステム360を構成する実ファイルシステムＡ370と実ファイルシステムＢ380とを格納するディスクドライブが、それぞれ性能や容量や価格などにおいて性質の異なるディスクドライブであればよい。
【００４８】
したがって、FCディスクドライブ340やSATAディスクドライブ350は、それぞれ別のディスクドライブであってもよい。また、FCディスクドライブ330についても、必ずしもFCでなくともよく、SATAディスクドライブであっても、その他のディスクドライブであってもよい。
【００４９】
また、疑似ファイルシステム360を格納するディスクドライブは、クライアント100が実ファイルシステムＡ370や実ファイルシステムＢ380や実ファイルシステムＣ490にアクセスする際に、頻繁に参照されるため、一般的には高性能なディスクドライブ（例えば、FCディスクドライブ）が使用されるが、どのようなディスクドライブであってもよい。
【００５０】
＜クラウドコンピューティング環境の構成＞
図４は、クラウドコンピューティング環境400の概略構成を示すブロック図である。図４に示すように、クラウドコンピューティング環境400は、メモリ440に格納されたプログラムを実行するCPU410と、ファイルサーバ200との通信に使用するネットワークインタフェース420と、ディスクコントローラ430と、SATAディスクドライブ480と、プログラムやデータを格納するメモリ440とを搭載し、それらを内部的な通信路（例えば、バス）によって接続している計算機である。
【００５１】
クラウドコンピューティング環境400のメモリ440には、プログラムやデータが格納される。例えば、ファイルサーバプログラム450、ファイルシステムプログラム470などである。また、クラウドコンピューティング環境400のメモリ440には、クラウドコンピューティングサービスの利用者が、任意のプログラムを配置し、CPU 410によって実行することができる。本実施形態においては、ファイルサーバ200が、索引作成プログラムＢ460を配置している。
【００５２】
ファイルサーバプログラム450は、ファイルサーバ200に対してファイル共有サービスを提供するプログラム（例えばWebDAVサーバプログラム）である。
【００５３】
索引作成プログラムＢ460は、索引作成プログラムA 290と協調して動作し、検索エンジンプログラム280が使用する索引を作成するプログラムである。
【００５４】
ファイルシステムプログラム470は、SATAディスクドライブ480に格納されている実ファイルシステムＣ490を管理するプログラムである。
【００５５】
ディスクコントローラ430は、メモリ440に格納された各種プログラムの入出力要求に基づいて、SATAディスクドライブ480のデータを例えばブロック単位で入出力する。
【００５６】
SATAディスクドライブ480は、メモリ440に格納された各種プログラムが読み書きするデータを格納するためのディスクドライブである。SATAディスクドライブ480には、実ファイルシステムＣ490が格納されている。
【００５７】
なお、クラウドコンピューティング環境400が使用するディスクドライブは、SATAディスクドライブ480のように直接接続してもよいし、SANに接続されたディスクアレイ装置上のディスクドライブに、ディスクインタフェースを介して接続してもよい。
【００５８】
また、クラウドコンピューティング環境400が使用するディスクドライブは、必ずしもSATAでなくともよく、FCディスクドライブであっても、その他のディスクドライブであってもよい。
【００５９】
＜HSMプログラムの機能構成＞
図５は、HSMプログラム500の機能構成を示すブロック図である。図５に示すように、HSMプログラム500は、オブジェクト作成モジュール510と、データ読込モジュール520と、データ書込モジュール530と、階層移動モジュール540と、階層移動ポリシ550と、階層管理テーブル700と、オブジェクト管理テーブル800とを備える。
【００６０】
オブジェクト作成モジュール510は、クライアント100から、ファイルサーバプログラム260経由でファイル作成要求やディレクトリ作成要求があった場合に、ファイルサーバ200のCPU 210によって実行される。オブジェクト作成モジュール510は、オブジェクト管理テーブル800にエントリを追加し、ファイルサーバ200にオブジェクト（ファイルおよびディレクトリ）を作成する。
【００６１】
データ読込モジュール520は、クライアント100から、ファイルサーバプログラム260経由でデータ読込要求があった場合に、ファイルサーバ200のCPU 210によって実行される。データ読込モジュール520は、オブジェクト管理テーブル800を参照し、要求されたファイルが存在する実ファイルシステムを特定した上で当該ファイルからデータを読み込む。ファイルが存在する実ファイルシステムが、クラウドコンピューティング環境400の実ファイルシステムである場合には、クラウドコンピューティング環境400に対して、データ読込要求を送信する。
【００６２】
データ書込モジュール530は、クライアント100から、ファイルサーバプログラム260経由でデータ書込要求があった場合に、ファイルサーバ200のCPU 210によって実行される。データ書込モジュール530は、オブジェクト管理テーブル800を参照し、要求されたファイルが存在する実ファイルシステムを特定した上で当該ファイルにデータを書き込む。ファイルが存在する実ファイルシステムが、クラウドコンピューティング環境400の実ファイルシステムである場合には、クラウドコンピューティング環境400に対して、データ書込要求を送信する。
【００６３】
階層移動モジュール540は、管理者の指示やあらかじめ指定されたスケジュール（例えば、1日1回）に従って、ファイルサーバ200のCPU 210によって実行される。階層移動モジュール540は、階層移動ポリシ550で指定された条件に基づいて、階層間の移動を行う。
【００６４】
階層移動ポリシ550は、階層間でファイルを移動させるときのポリシである。本実施形態では、実ファイルシステムＡ370と実ファイルシステムＢ380と実ファイルシステムＣ490の3つの階層間でファイルを移動させることになる。また、階層移動ポリシ550は、ファイルの作成時刻、最終更新時刻、最終アクセス時刻、ファイルサイズなどの属性情報を組み合わせて、設定される。例えば、「第１階層のファイルシステムにある１ヶ月以上前に作成されたファイルは、第２階層のファイルシステムに移動する」といったポリシである。階層移動ポリシ550は、実ファイルシステムＡ370および実ファイルシステムＢ380を構成するディスクドライブの性能や信頼性、コストに応じて、管理者が事前に指定しておく。実ファイルシステムＣ490のように、クラウドコンピューティング環境400に実ファイルシステムがあり、ファイルサーバプログラム450を通してファイルにアクセスする場合には、管理者が管理端末110を用いて、ファイルサーバプログラム450の性能や信頼性、コストに応じて、階層移動ポリシ550を指定する。
【００６５】
なお、高性能・高信頼で高価なディスクドライブとは、例えば、FCディスクドライブのことである。また、それよりも性能や信頼性では劣るが、安価なディスクドライブとしては、例えば、SATAディスクドライブなどがある。また、第１階層のファイルシステムや第２階層のファイルシステムを、用途に応じてそれぞれRAID1やRAID5で構成することで、性能や信頼性、コストに差をつけて運用してもよい。
【００６６】
また、ファイルシステムの階層は、ファイルサーバ200上の実ファイルシステム１つとクラウドコンピューティング環境400の実ファイルシステム１つで構成される２階層であってもよいし、クラウドコンピューティング環境400の実ファイルシステムを少なくとも１つ含む４つ以上の階層であってもよい。
【００６７】
階層管理テーブル700は、疑似ファイルシステム360を構成する実ファイルシステムを管理するためのテーブルである。
【００６８】
オブジェクト管理テーブル800は、疑似ファイルシステム360のオブジェクト（ファイルおよびディレクトリ）と、実ファイルシステムのオブジェクト（ファイルおよびディレクトリ）を対応付けるためのテーブルである。
【００６９】
なお、図5では図示していないが、HSMプログラム500は、オブジェクト削除要求やディレクトリ読込要求など、ファイルサーバプログラム260が受信したその他の要求を処理するためのモジュールを持っている。
【００７０】
＜ファイルシステムにおけるツリー構造の例＞
図６は、本実施形態においてHSM機能を使用する場合の、ファイルシステムツリー600の構成例を示す模式図である。ファイルシステムツリー600は、ファイルサーバ200によって構築され、クライアント100へ提供するファイルシステムの名前空間である。
【００７１】
ファイルシステムツリー600は、/（ルート）ディレクトリとルートの下のEXPORTディレクトリとTier１ディレクトリとTier２ディレクトリとTier３ディレクトリで構成されている。実ファイルシステムＡ370は、第１階層としてTier１ディレクトリにマウントされ、実ファイルシステムＢ380は、第２階層としてTier２ディレクトリにマウントされ、実ファイルシステムＣ490は、第３階層としてTier３ディレクトリにマウントされている。また、本実施形態におけるHSM機能は、Tier１ディレクトリとTier２ディレクトリとTier３ディレクトリとをEXPORTディレクトリへ重ねる。このとき、ファイルシステムスタック構造650のように、実ファイルシステムＡ370を上段に、実ファイルシステムＢ380を中段に、実ファイルシステムＣ490を下段に配置して、疑似ファイルシステム360を構成する。ファイルサーバプログラム260は、クライアント100に対して、EXPORTディレクトリ以下を公開、提供する。
【００７２】
＜階層管理テーブルの例＞
図７は、階層管理テーブル700の構成例を示す図である。階層管理テーブル700は、実ファイルシステム（例えば、実ファイルシステムＡ370、実ファイルシステムＢ380、実ファイルシステムＣ490）のマウント位置を示すマウントパス710と、ファイルシステムの管理IDであるFSID720と、ファイルシステムの階層を示す階層730と、接続先情報740と、を1つのエントリとして構成するテーブルである。
【００７３】
接続先情報740は、実ファイルシステムが他のファイルサーバやクラウドコンピューティング環境にある場合に、他のファイルサーバやクラウドコンピューティング環境に接続するための情報であり、例えばIPアドレスなどである。接続先情報740には、IPアドレスに加えて、接続対象のファイルサーバやクラウドコンピューティング環境の特徴を示す情報（例えば、アプリケーションを実行可能な環境があるか否かなど）や、接続対象に複数の実ファイルシステムがある場合、それらを識別する情報を含めてもよい。
【００７４】
なお、階層730の上位・下位は、HSMシステムの運用を開始する際に管理者が管理端末110を用いて指定する。擬似ファイルシステム360を構成するため、例えば、FCディスクドライブで構成された実ファイルシステムＡ370を上位階層として指定した上で登録を行い、SATAディスクドライブで構成された実ファイルシステムＢ380を中位階層として指定した上で登録を行い、さらに、クラウドコンピューティング環境400にある実ファイルシステムＣ490を下位階層として指定した上で登録を行う。このような登録作業を行うことで、階層管理テーブル700にエントリが追加される。図7の例では、階層0x0Fが第１階層を、階層 0x11が第２階層を、階層0x20が第３階層を示している。階層を表す数値は、階層の上位と下位を識別できるように序列がついていれば、どのような値でもよい。図7の例のように、間隔を空けて指定すれば、第１階層と第２階層や第２階層と第３階層の間に新たな階層を設けたい場合にも対応可能である。
【００７５】
＜オブジェクト管理テーブルの例＞
図８は、オブジェクト管理テーブル800の構成例を示す図である。オブジェクト管理テーブル800は、オブジェクト名810と、疑似FS オブジェクトID820と、FSID 830と、実FS オブジェクトID 840と、カウンタ850と、一括処理フラグ860と、を1つのエントリとして構成し、対応関係を管理するためのテーブルである。
【００７６】
オブジェクト名810は、擬似ファイルシステム360のファイル名やディレクトリ名を示す。擬似FSオブジェクトID 820は、擬似ファイルシステム360におけるそのファイルやディレクトリの識別子（例えばinode番号）である。FSID 830は、そのファイルやディレクトリが実際に格納されている実ファイルシステムのIDである。実FSオブジェクトID840は、実ファイルシステム内で一意にファイルやディレクトリを特定するための識別子である。例えば、実ファイルシステムがローカルファイルシステムである場合は、inode番号であり、実ファイルシステムが他のファイルサーバやクラウドコンピューティング環境にある場合は、URLやファイルハンドルである。カウンタ850は、あるディレクトリ以下のファイルまたはディレクトリのうち、何個のファイルまたはディレクトリがクラウドコンピューティング環境400側に移動されていない状態にあるかどうかをカウントするための数値である。例えば、エントリ８７１は、/DIR2下の全てのオブジェクトがクラウド側に移行された状態を示しており、カウンタが０、一括処理フラグが有効となっている。ただし、本実施形態では、ディレクトリは移行しない方式を採用しているので、/DIR2自体はクラウド側になく、FSIDが0x01のままとなっている。図８には、この場合の/DIR2以下の２つのファイルの例（エントリ872及び873）が示されている。
【００７７】
なお、ディレクトリがクラウドコンピューティング環境400側に移動されている状態とは、当該ディレクトリ以下のすべてのオブジェクトがクラウドコンピューティング環境400側に移動されている状態を意味するものである。また、一括処理フラグ860は、クラウドコンピューティング環境400側に移動されたディレクトリツリーをクラウドコンピューティング環境400側の索引作成プログラムＢ460を用いて一括して索引付けするか否かを示すフラグである。なお、一括処理フラグ860は、索引作成プログラム以外のアプリケーションに関して、一括処理を行うか否かを表すために用いてもよいし、複数のアプリケーションに関して兼用してもよい。
【００７８】
オブジェクト管理テーブル800は、1エントリに1つのファイルまたはディレクトリを対応付ける。クライアント100を利用するユーザは、オブジェクト名810を指定して、ファイルまたはディレクトリにアクセスする。その際、HSMプログラム500が、オブジェクト名に対応するエントリを特定し、オブジェクトの実体に対して処理を行う。
【００７９】
＜索引作成画面の例＞
図９は、システム管理者が索引を作成するため、索引作成プログラムＡ290が管理端末110に表示する索引作成画面900の一例を示す図である。索引作成画面900は、索引作成対象のディレクトリを非排他的に選択するためのチェックボックス910と、索引作成処理を実行するためのボタン920とを備える。
【００８０】
チェックボックス910は、あるディレクトリ以下のディレクトリを全て選択した場合、チェックマークが表示され、あるディレクトリ以下の一部のディレクトリを選択した場合、プラスマークが表示される。例えば、図９では、/export/dir1ディレクトリと/export/dir1/subdir1ディレクトリと/export/dir2ディレクトリを索引作成対象として選んでいるため、/export/dir1、export/dir1/subdir1、/export/dir2にはチェックマークが表示され、/exportディレクトリにはプラスマークが表示されている。
【００８１】
＜索引作成処理の処理内容＞
以下では、本実施形態におけるシステムが、索引作成処理を行う際の処理について図１０から図１７を用いて説明する。
【００８２】
（ｉ）オブジェクト作成処理
図１０は、オブジェクト作成モジュール510（CPU210と協働して）が実行するオブジェクト作成処理の詳細を説明するためのフローチャートの一例である。オブジェクト作成モジュール510は、ファイルサーバプログラム260がファイル作成要求やディレクトリ作成要求を受信したときに実行する。ファイル作成要求やディレクトリ作成要求は、ファイルサーバプログラム260がNFS（Network File System）の場合、create要求やmkdir要求に相当する。オブジェクト作成要求には、作成するオブジェクトの名前とオブジェクトの種別（ファイルまたはディレクトリ）含まれる。
【００８３】
まず、オブジェクト作成モジュール510は、疑似ファイルシステム360において使用される疑似FSオブジェクトIDを採番する（S1010）。例えば、１つのエントリ870に入力される擬似FSオブジェクトID（0x0001）を作成する（図８参照）。
【００８４】
次に、オブジェクト作成モジュール510は、最上位の階層の実ファイルシステム（本実施形態の場合には実ファイルシステムＡ370であり、FSIDは0x01）に対してオブジェクト作成処理を実行する（S1020）。例えば、１つのエントリ870（図８）における、FILE１に対する実FSオブジェクトID（0x12345）を割り当てる。
【００８５】
また、オブジェクト作成モジュール510は、S1020のオブジェクト作成処理の結果から、作成したオブジェクトの実FSオブジェクトIDを取得する（S1030）。
【００８６】
そして、オブジェクト作成モジュール510は、オブジェクト管理テーブル800のエントリを1つ（例えば、エントリ870）作成し、指定されたオブジェクトの名前（オブジェクト名810）と、S1010で採番した疑似FSオブジェクトID820と、S1020でオブジェクトを作成した実ファイルシステムのID（FSID 830）と、S1030で取得した実FSオブジェクトID840を保存する（S1040）。
【００８７】
続いて、作成したオブジェクトがファイルかどうかを確認する（S1050）。
作成したオブジェクトがファイルである場合（S1050でYESの場合）、オブジェクト管理テーブル800を検索し、親ディレクトリに該当するエントリのカウンタ850を1インクリメントし（S1060）、終了する。なお、親ディレクトリのカウンタ850が0から1にインクリメントされた場合、さらに親のディレクトリのカウンタ850も1インクリメントし、このインクリメント処理を再帰的に繰り返す。
【００８８】
作成したオブジェクトがディレクトリである場合（S1050でNOの場合）、オブジェクト管理テーブル800の当該エントリのカウンタを0にし（S1070）、終了する。
【００８９】
（ii）階層移動処理
図１１は、階層移動モジュール540（CPU210と協働して）が実行する階層移動処理の詳細を説明するためのフローチャートの一例である。階層移動モジュール540は、管理者の指示やあらかじめ指定されたスケジュール（例えば、1日1回）に従って実行される。階層移動モジュール540は、疑似ファイルシステム360を対象として、疑似ファイルシステム360の各オブジェクトを辿りながら、階層移動ポリシ550で指定された条件に基づいて、階層間の移動を行う。
【００９０】
まず、階層移動モジュール540は、オブジェクト管理テーブル800から1つオブジェクトを選択し、エントリを取得する（S1110）。当該取得されたエントリが階層移動処理の対象となる。
【００９１】
次に、階層移動モジュール540は、S1110で選択したオブジェクトがファイルであるかどうかを確認する（S1120）。本実施形態では、オブジェクトがファイルである場合にのみ階層間を移動させるようにしている。
【００９２】
選択したオブジェクトがファイルである場合（S1120でYESの場合）、階層移動モジュール540は、S1110で取得したエントリのFSID830と実FSオブジェクトIDに基づいて、ファイルの実体を特定し、属性情報を取得する（S1130）。
【００９３】
そして、階層移動モジュール540は、S1130で取得した属性情報が階層移動ポリシ550に合致するかを確認する（S1140）。
【００９４】
取得した属性情報が階層移動ポリシ550に合致する場合（S1140でYESの場合）、階層移動モジュール540は、移動対象のファイルのオブジェクト名810と、実FSオブジェクトID840と移動先の階層730とを指定してファイル移動処理を実行し（S1150）、当該ファイルを移動する。本実施形態では、オブジェクトがファイルのときのみ移動処理を行っており、移動先の階層にファイルを移動したときにディレクトリをその移動先に作るようにしている。ただし、移動元のディレクトリと移動対象のファイルとの対応関係を管理すれば移動先にディレクトリを必ずしも作成する必要はない。なお、移動先にファイル移動処理の詳細については後述する（図12）。
【００９５】
そして、階層移動モジュール540は、対象オブジェクトがあるか、すなわち、オブジェクト管理テーブル800のうち、まだ選択していないオブジェクトがあるかを確認する（S1160）。
【００９６】
対象オブジェクトがある場合（S1160でYESの場合）、階層移動モジュール540は、再びオブジェクト管理テーブル800から1つオブジェクトを選択し、エントリを取得する（S1110）。
【００９７】
対象オブジェクトがない場合（S1160でNOの場合）、階層移動モジュール540は、終了する。
【００９８】
選択したオブジェクトがディレクトリである場合（S1120でNOの場合）、および、取得した属性情報が階層移動ポリシ550に合致しない場合（S1140でNOの場合）には、ファイル移動処理は行わずに次の対象オブジェクトがあるかを確認する（S1160）。
【００９９】
（iii）ファイル移動処理（S1150）の詳細
図１２は、図１１におけるファイル移動処理（S1150）の詳細を説明するためのフローチャートの一例である。
【０１００】
まず、階層移動モジュール540は、ファイルの移動先がローカルファイルシステム（例えば、実ファイルシステムＢ）及びクラウドコンピューティング環境400上のファイルシステム（例えば、実ファイルシステムＣ）のどちらであるか確認する（S1205）。より具体的には、階層移動モジュール540が、階層管理テーブル700を検索し、ファイル移動処理の実行時に指定された移動先の階層に対応するエントリの接続先情報740が空（例えばNULL値）であるかどうかを確認する。接続先情報740が空の場合は、ファイルの移動先はローカルファイルシステムであり、接続先情報740が空でない場合は、ファイルの移動先はクラウドコンピューティング環境400上のファイルシステムであることが分かる。
【０１０１】
接続先情報が空の場合（S1205でYESの場合）、階層移動モジュール540は、階層管理テーブル700を参照し、移動先の階層730の実ファイルシステムを特定した上で、当該実ファイルシステムに対してオブジェクト作成処理を実行する（S1210）。なお、本実施形態では、オブジェクト作成処理を実行する際、途中のディレクトリが存在しない場合は、元のファイルのパスが維持されるように、途中のディレクトリも併せて作成する。例えば、実ファイルシステムＡ370の/DIR/FILE2というパスのファイルを実ファイルシステムＢ380に移動する場合に、DIRディレクトリが存在しなければ、DIRディレクトリを作成した上で、FILE2を作成する。
【０１０２】
次に、階層移動モジュール540は、S1210のオブジェクト作成処理の結果から、作成したオブジェクトの実FSオブジェクトIDを取得する（S1215）。
【０１０３】
次に、階層移動モジュール540は、ファイル移動処理の実行時に指定された実FSオブジェクトIDを有するファイルから、S1215で取得した実FSオブジェクトIDを有するファイルへ、データと属性情報をコピーする（S1220）。
【０１０４】
接続先情報740が空でない場合、つまり移動先がローカルでない場合（S1205でNOの場合）、階層移動モジュール540は、階層管理テーブル700を参照し、接続先情報740から接続先の他のファイルサーバ200やクラウドコンピューティング環境400を特定した上で、それらの上で動作するファイルサーバプログラム450に対してファイル書込要求を送信する（S1235）。例えば、ファイルサーバプログラム450のプロトコルがWebDAV（Web-based Distributed Authoring and Versioning）の場合、ファイル書込要求はPUT要求に相当する。ファイル書込要求には、当該ファイルのオブジェクト名810とファイルの実体が含まれる。ファイルの実体は、ファイル移動処理の実行時に指定された実FSオブジェクトID 840を用いて実ファイルシステムから取得される。なお、ファイル書込要求を送信する際に、途中のディレクトリが存在しない場合は、元のファイルのパスが維持されるように、途中のディレクトリも併せて作成する。例えば、実ファイルシステムＡ370の/DIR/FILE3というパスのファイルを実ファイルシステムＣ490に移動する場合に、DIRディレクトリが存在しなければ、DIRディレクトリを作成した上で、FILE3を作成するためのファイル作成要求を送信する。
【０１０５】
次に、階層移動モジュール540は、クラウドコンピューティング環境400のファイルサーバプログラム450が送信したファイル書込応答を受信する（S1240）。
【０１０６】
次に、階層移動モジュール540は、オブジェクト管理テーブル800を検索し、親ディレクトリに該当するエントリのカウンタ850を1デクリメントする（S1245）。
【０１０７】
そして、階層移動モジュール540は、親ディレクトリに該当するエントリのカウンタ850が０であるかどうかを確認する（S1250）。
【０１０８】
カウンタ850が０である場合（S1250でYESの場合）、当該親ディレクトリに含まれるファイルは全て移動されたことになるので、当該親ディレクトリに該当するエントリの一括処理フラグ860を有効化し（S1255）、さらに、当該親ディレクトリのもう1つ上の親のディレクトリに該当するエントリのカウンタ850を1デクリメントする（S1245）。そして、再帰的に親ディレクトリを辿った結果、カウンタ850が0でないディレクトリに到達した時点で（S1250でNOの場合）、S1225の処理へ遷移する。より具体的に説明すると、例えば/DIR2/DIR3/FILE1を移行する場合、FILE1の移動が完了した後（S1205乃至S1230を実行した後）、まずFILE1が属していた直近のディレクトリである/DIR2/DIR3のカウンタ850をデクリメントする。その結果、カウンタ850が０になった場合には一括処理フラグを有効化する。そして、さらに/DIR2のカウンタをデクリメントし、０でなければループを抜けることになる。
【０１０９】
S1210からS1220または、S1235からS1255の処理により、ファイルを移動した後、階層移動モジュール540は、オブジェクト管理テーブル800のFSID830と実FSオブジェクトID 840を更新した上で（S1225）、移動前の階層の実ファイルシステムにあるファイルを削除し（S1230）、終了する。
【０１１０】
なお、S1255において有効化した一括処理フラグ860は、必ずしもこの条件で有効化しなくともよい。例えば、ファイルサーバ200が定期的にネットワーク130のレイテンシ（クラウドコンピューティング環境400との通信に関するレイテンシ）を計測し、事前にシステム管理者が設定した閾値を超えた場合に、親ディレクトリのカウンタ850が０であるかどうかを確認した上で一括処理フラグ860を有効化してもよい。また、システム管理者がクラウドコンピューティング環境400の資源を利用することによって生じる課金コストを考慮して、管理端末110を用いて一括処理フラグ860を無効化してもよい。あるいは、クラウドコンピューティング環境400側に移動されたディレクトリツリーが大きく、一括処理が完了するまでに時間を要する場合に、システム管理者が一括処理フラグ860を無効化することで、索引作成処理が完了したファイルに関しては索引295が随時更新されるようにしてもよい。ただし、その場合には一括処理を行った場合に比べて全体の処理時間は長くなる。
【０１１１】
（iv）データ読込処理
図１３は、データ読込モジュール520（CPU210と協働して）が実行するデータ読込処理の詳細を説明するためのフローチャートの一例である。データ読込モジュール520は、ファイルサーバプログラム260がデータ読込要求を受信したときに読込処理を実行する。ファイルサーバプログラム260がNFSの場合、read要求がこのデータ読込要求に相当する。データ読込要求には、読み込むファイルの疑似FSオブジェクトID820と読み込むファイルの範囲情報（オフセット）が含まれる。
【０１１２】
まず、データ読込モジュール520は、疑似FSオブジェクトID 820を用いてオブジェクト管理テーブル800を検索し（S1310）、読み込む対象のファイルがローカルファイルシステムにあるか、クラウドコンピューティング環境400上のファイルシステムにあるかどうかを確認する（S1320）。具体的には、オブジェクト管理テーブル800のエントリに含まれるFSID830を用いて、階層管理テーブル700を検索し、接続先情報740が空かどうかを確認する。
【０１１３】
読み込む対象のファイルがローカルファイルシステムにある場合（S1320でYESの場合）、データ読込モジュール520は、疑似FSオブジェクトID820に対応する実FSオブジェクトIDを用いて、実ファイルシステムに対してデータ読込処理を実行し（S1330）、終了する。データ読込処理により得られた結果は、ファイルサーバプログラム260を介してクライアント100に返される。
【０１１４】
読み込む対象のファイルがクラウド上のファイルシステムにある場合（S1320でNOの場合）、データ読込モジュール520は、階層管理テーブル700を参照し、接続先情報から接続先のファイルサーバやクラウドコンピューティング環境を特定した上で、それらの上で動作するファイルサーバプログラム450に対してファイル読込要求を送信する（S1340）。例えば、ファイルサーバプログラム450のプロトコルがWebDAVの場合、ファイル読込要求はGET要求に相当する。ファイル読込要求には、当該ファイルのオブジェクト名810が含まれる。
【０１１５】
次に、データ読込モジュール520は、ファイルサーバプログラム450が送信したファイル読込応答を受信する（S1350）。
【０１１６】
そして、データ読込モジュール520は、ファイルサーバプログラム260が受信したデータ読込要求に含まれる範囲情報に基づいて、S1350で受信したデータの一部のみを切り出し（S1360）、終了する。切り出された結果は、ファイルサーバプログラム260を介してクライアント100に返される。なお、S1360の切り出し処理は、ファイルサーバプログラム450に対して送信するファイル読込要求が、読み込むファイルの範囲情報を含むことができず、ファイル読込応答として、ファイル全体のデータが返ってくる場合を想定した処理である。ファイルサーバプログラム450に対して送信するファイル読込要求が、読み込むファイルの範囲情報を含むことができる場合には、データ読込モジュール520はS1360のような切り出し処理は行わない。S1350で受信したデータは、ファイルサーバプログラム260を介してそのままクライアント100に返される。
【０１１７】
（v）データ書込処理
図１４は、データ書込モジュール530（CPU210と協働して）が実行するデータ書込処理の詳細を説明するためのフローチャートの一例である。データ書込モジュール530は、ファイルサーバプログラム260がデータ書込要求を受信したときに実行される。ファイルサーバプログラム260がNFSの場合、write要求がこのデータ書込要求に相当する。データ書込要求には、書き込むファイルの疑似FSオブジェクトID 820と書き込むファイルの範囲情報（オフセット）と書き込むデータが含まれる。
【０１１８】
まず、データ書込モジュール530は、疑似FSオブジェクトID 820を用いてオブジェクト管理テーブル800を検索し（S1410）、書き込む対象のファイルがローカルファイルシステムにあるか、クラウドコンピューティング環境400上のファイルシステムにあるかどうかを確認する（S1420）。具体的には、オブジェクト管理テーブル800のエントリに含まれるFSID830を用いて、階層管理テーブル700を検索し、接続先情報740が空かどうかを確認する。
【０１１９】
書き込む対象のファイルがローカルファイルシステムにある場合（S1420でYESの場合）、データ書込モジュール530は、疑似FSオブジェクトID820に対応する実FSオブジェクトIDを用いて、実ファイルシステムに対してデータ書込処理を実行し（S1430）、終了する。データ書込処理により得られた結果は、ファイルサーバプログラム260を介してクライアント100に返される。
【０１２０】
書き込む対象のファイルがクラウド上のファイルシステムにある場合（S1420でNOの場合）、データ書込モジュール530は、階層管理テーブル700を参照し、接続先情報から接続先のファイルサーバやクラウドコンピューティング環境を特定した上で、それらの上で動作するファイルサーバプログラム450に対してファイル読込要求を送信する（S1440）。ここで送信するファイル読込要求は、読み込むファイルの範囲情報を含むことができず、ファイル読込応答として、ファイル全体のデータが返ってくる場合を想定している。
【０１２１】
次に、データ書込モジュール530は、ファイルサーバプログラム450が送信したファイル読込応答を受信する（S1450）。
【０１２２】
次に、データ書込モジュール530は、ファイルサーバプログラム260が受信したデータ書込要求に含まれる範囲情報に基づいて、S1450で受信したファイルの一部にデータを書き込む（S1460）。
【０１２３】
次に、データ書込モジュール530は、ファイルサーバプログラム450に対してファイル書込要求を送信する（S1470）。例えば、ファイルサーバプログラム450のプロトコルがWebDAVの場合、ファイル書込要求はPUT要求に相当する。ファイル書込要求には、当該ファイルのオブジェクト名810とファイルの実体が含まれる。ファイルの実体は、S1460で所望の部分が更新されたファイルである。
【０１２４】
そして、データ書込モジュール530は、ファイルサーバプログラム450が送信したファイル作成応答を受信し（S1480）、終了する。受信した結果は、ファイルサーバプログラム260を介してクライアント100に返される。なお、S1440からS1480のようにあらかじめファイル全体を読み込み、データを書き換えた上で、ファイル全体を書き込んでいるのは、ファイルサーバプログラム450に対して送信するファイル書込要求が、書き込むファイルの範囲情報を含むことをできない（すなわち、ファイルの特定の箇所だけにデータを書き込むことができない）ためである。ファイルサーバプログラム450に対して送信するファイル書込要求が、書き込むファイルの範囲情報を含むことができる場合には、データ書込モジュール530は、ファイルサーバプログラム260が受信したデータ書込要求に含まれる範囲情報に基づいて、直接ファイルを更新してもよい。
【０１２５】
（vi）索引作成処理
図１５は、索引作成プログラムＡ290（CPU210と協働して）が実行する索引作成処理の詳細を説明するためのフローチャートの一例である。索引作成プログラムＡ290は、例えば、システム管理者が索引を作成するため、索引作成画面900において実行ボタン920を押下した場合に実行される。索引作成プログラムＡ290が実行される際には、システム管理者によって索引作成対象の範囲に関する情報（例えば、索引作成対象のディレクトリツリー）が指定される。
【０１２６】
まず、索引作成プログラムＡ290は、索引作成対象のディレクトリツリーから、オブジェクトを1つ選択し（S1505）、当該オブジェクトがファイルかどうかを確認する（S1510）。
【０１２７】
オブジェクトがファイルである場合（S1510でYESの場合）、索引作成プログラムＡ290は、ファイルのデータやメタデータを読み込んで、キーワードを抽出する（S1515）。
【０１２８】
次に、索引作成プログラムＡ290は、S1515で抽出したキーワードとファイルの対応関係を索引295に記録する（S1520）。この対応関係は、例えば、あるキーワードと、そのキーワードが出現するファイル識別子（例えば、オブジェクト名810や疑似FSオブジェクトID 820）のリストを組である。なお、索引295は、メモリ250上で保持していてもよいし、ディスクアレイ装置300が管理するいずれかのディスクドライブに保持してもよい。さらには、DBMS（Data Base Management System）のような他の記憶システムに保持してもよい。
【０１２９】
そして、索引作成プログラムＡ290は、索引作成対象となるオブジェクトがまだ存在するかを確認する（S1525）。
【０１３０】
索引作成対象となるオブジェクトが存在する場合（S1525でYESの場合）、索引作成プログラムＡ290は、再び索引作成対象のディレクトリツリーから、オブジェクトを1つ選択する（S1505）。
【０１３１】
索引作成対象となるオブジェクトが存在しない場合（S1525でNOの場合）、索引作成プログラムA 290は、プログラムを終了する。
【０１３２】
オブジェクトがディレクトリの場合（S1510でNOの場合）、索引作成プログラムＡ290は、当該ディレクトリの一括処理フラグ860が有効であるかを確認する（S1530）。
【０１３３】
一括処理フラグ860が有効である場合（S1530でYESの場合）、索引作成プログラムＡ290は、当該ディレクトリ以下の全てのファイルから、ファイルリストを作成する（S1535）。
【０１３４】
また、索引作成プログラムＡ290は、索引作成プログラムＢ460に対して、索引作成要求を送信する（S1540）。索引作成要求には、S1535で作成した、クラウドコンピューティング環境400側で索引を作成する対象のファイルの実FSオブジェクトID 840のリストが含まれている。
【０１３５】
そして、索引作成プログラムＡ290は、索引作成プログラムＢ460が送信する索引作成応答を受信する（S1545）。索引作成応答には、索引作成プログラムＢ460が作成したクラウドコンピューティング環境400側のファイルに関する一時索引が含まれる。なお、索引作成要求を受信した索引作成プログラムＢ460の処理については後述する（図１６参照）。
【０１３６】
次に、索引作成プログラムＡ290は、S1545で受信した索引作成応答に含まれる一時索引を、索引295の形式にマッピングし（S1550）、S1525の処理に遷移する。このマッピング処理は、例えば、一時索引の形式がキーワードと実FSオブジェクトID840の組である場合には、実FSオブジェクトID 840からオブジェクト名810や疑似FSオブジェクトID 820を特定し、実FSオブジェクトID 840をそれらに置き換えた上で、索引295に記録する処理である。
【０１３７】
一括処理フラグ860が有効でない場合（S1530でNOの場合）、索引作成プログラムＡ290は、再び索引作成対象のディレクトリツリーから、オブジェクトを1つ選択する（S1505）。すなわち、一括処理フラグ860が有効でないディレクトリ以下のオブジェクトが、一括処理ではなく、通常の処理によって逐次索引付けされる。
【０１３８】
なお、本実施形態では、ファイルサーバ200が事前にクラウドコンピューティング環境400のメモリ440に配置した索引作成プログラムＢ460を利用するが、任意のプログラムを配置することができるクラウドコンピューティング環境400だけでなく、任意のプログラムを配置することができない他のファイルサーバ200や他のクラウドコンピューティング環境400にファイルを移動する場合もある。その場合、索引作成プログラムＡ290は、S1530において一括処理フラグ860が有効であるかを確認する際に、接続先情報740を併せて確認してもよい。具体的には、一括処理フラグ860が有効で、かつ、接続際情報740に任意のプログラムを配置可能であることを示す情報が含まれている場合にのみ、S1535からS1550によって一括して索引付けを行い、それ以外の場合には、S1515からS1520によって逐次索引付けを行ってもよい。例えば、他のファイルサーバが２つある場合、一方はプログラム配置可能な、計算機環境を備えたサーバで、もう一方はプログラム配置不可能な、計算機環境を備えていないサーバであるときに、階層管理テーブル700の接続先情報740に”プログラム配置可否”フラグを設けておき、前者では当該フラグを有効に、後者では当該フラグを無効に設定する。そして、一括処理フラグ860が有効か否かを確認する際に、併せてプログラム配置可否フラグも確認し、不可であれば一括処理を行わずに個別処理を行うようにする。これにより、様々な性能レベルからなる複数のファイルサーバやクラウドコンピューティング環境を有効に統合することができるようになる。
【０１３９】
また、索引作成プログラムＢ460を常時クラウドコンピューティング環境400のメモリ440に配置した場合に、クラウドコンピューティング環境400でのサービス利用料が問題となるならば、例えば、索引作成処理Ａを開始した際に配置し、索引処理Ａを終了する際に、回収してもよい。より具体的には、クラウドコンピューティング環境400でプログラムを実行する場合、仮想マシン(VM)の単位でロード・アンロード(起動・停止)を行うのが一般的で、VMの起動中に利用料を課金されることがある。このコストを削減するため、任意のタイミング（例えば、索引作成処理Ａの開始直後・索引作成処理Ａの終了直前）でプログラム（索引作成処理プログラムＢ）をロード・アンロードすることで、クラウドコンピューティング環境400のメモリにプログラムを置いておく時間を短縮するようにしても良い。
【０１４０】
図１６は、索引作成プログラムＢ460（CPU410と協働して）が実行する索引作成処理の詳細を説明するためのフローチャートの一例である。索引作成プログラムＢ460は、クラウドコンピューティング環境400がファイルサーバ200から索引作成要求を受信したときに実行される。索引作成要求には、索引を作成する対象のファイルの実FSオブジェクトID840のリストを含む。
【０１４１】
まず、索引作成プログラムＢ460は、索引作成プログラムＡ290がS1540で送信した索引作成要求を受信する（S1610）。
【０１４２】
また、索引作成プログラムＢ460は、索引作成要求に含まれる索引作成対象のファイルリストからファイルを1つ選択し、実FSオブジェクトID 840を取得する（S1620）。
【０１４３】
そして、索引作成プログラムＢ460は、実FSオブジェクトID840を用いて、ファイルのデータやメタデータを読み込んで、キーワードを抽出する（S1630）。なお、ファイルを読み込む際、クラウドコンピューティング環境400が行うアクセス制限や、実FSオブジェクトIDの形式により、実ファイルシステムＣ490に直接アクセスすることができない場合もある。その場合、ファイルサーバプログラム450を介して、ファイル読込要求を発行してファイルを読み込んでもよい。
【０１４４】
次に、索引作成プログラムＢ460は、S1630で抽出したキーワードとファイルの対応関係を一時索引に記録する（S1640）。この対応関係は、例えば、あるキーワードと、そのキーワードが出現するファイル識別子（例えば、実FSオブジェクトID840）のリストを組である。なお、一時索引は、索引作成プログラムＢ460により、メモリ440上に一時的に保持される。
【０１４５】
次に、索引作成プログラムＢ460は、索引作成対象のファイルリストが空かどうかを確認する（S1650）。
【０１４６】
そして、索引作成対象のファイルリストが空の場合（S1650でYESの場合）、索引作成プログラムＢ460は、索引作成プログラムＡ290に対して、索引作成応答を送信し（S1660）、終了する。
【０１４７】
索引作成対象のファイルリストが空でない場合（S1650でNOの場合）、索引作成プログラムＢ460は、再び索引作成対象のファイルリストから、ファイルを1つ選択し（S1620）、索引作成対象のファイルを全て処理するまで繰り返す。
【０１４８】
以上のような処理を実行することにより、全てのファイルについての索引データ（検索用インデックス）を漏れなく作成する。
【０１４９】
（vii）検索処理
図１７は、検索エンジンプログラム280（CPU210と協働して）が実行する検索処理の詳細を説明するためのフローチャートの一例である。検索エンジンプログラム280は、ファイルサーバ200がユーザ（クライアント端末100）からの検索要求を受信したときに実行される。検索要求には、ユーザが指定したキーワードまたはキーワードのリストを含む。
【０１５０】
まず、検索エンジンプログラム280は、例えばクライアント100で動作するWebブラウザなどが送信した検索要求を受信する（S1710）。
【０１５１】
そして、検索エンジンプログラム280は、検索要求に含まれるキーワードまたはキーワードのリストを用いて索引295を検索し、ユーザが指定したキーワードを含むファイルの識別子（例えばオブジェクト名810や疑似FSオブジェクトID820）をリストアップする（S1720）。検索要求にキーワードのリストが含まれている場合は、それらのキーワードを全て含むファイルの識別子をリストアップしてもよいし、それらのキーワードのいずれかを含むファイルの識別子をリストアップしてもよい。さらに、それらの挙動のうち、どちらを実行するかをユーザによって指定させ、検索要求に含めてもよい。
【０１５２】
次に、検索エンジンプログラム280は、S1720でリストアップしたファイルをユーザにとって価値があると思われる順序にソートする（S1730）。例えば、ファイルにおけるキーワードの出現頻度や、ファイルの更新日時でソートしてもよいし、複数のパラメータを総合的に考慮してソートしてもよい。
【０１５３】
最後に、検索エンジンプログラム280は、S1730でソートしたファイルの識別子のリストをユーザにとって理解しやすい形式（例えば、オブジェクト名のリスト）に変換した上で、クライアント100のWebブラウザに対して検索応答を送信し（S1740）、終了する。
【０１５４】
以上が、本実施形態の説明である。本実施形態によれば、クラウドコンピューティング環境400に移動されたファイルについては、クラウドコンピューティング環境400上に配置した索引作成プログラムB460により、一括して索引を作成することができるため、ファイルサーバ260で提供される疑似ファイルシステム360の索引作成処理を高速に行うことが可能となる。
【０１５５】
（２）第２の実施形態
次に、本発明の第２の実施形態について説明する。以下、第１の実施形態との相違点を主に説明し、第1の実施形態との共通点については、説明を省略または簡略する。
【０１５６】
＜ウイルスチェック処理の概要＞
実施形態の説明をする前に、ここではウイルスチェック処理の概要（流れ）について説明する。
【０１５７】
まず、あるディレクトリ以下の全てのファイルがクラウドコンピューティング環境側へ移動済みとなったとき、そのディレクトリのメタデータに、クラウド側でウイルスチェック処理を一括して行うか否かを示すフラグを有効化する。
【０１５８】
次に、ウイルスチェックプログラムがディレクトリツリー全体を走査しながらウイルスチェックを行っていく。走査対象がディレクトリの場合には、一括処理が有効か否かを確認する。一括処理が有効である場合には、あらかじめ配置したクラウドコンピューティング環境側のウイルスチェックプログラムに対してウイルスチェック要求を出す。ウイルスチェック要求には、走査対象のディレクトリ以下にあるファイルの識別子のリストを含む。 
【０１５９】
クラウドコンピューティング環境側のウイルスチェックプログラムは、要求を受けて対象のファイルのウイルスチェックを行い、結果をファイルサーバ側のウイルスチェックプログラムに送信する。
【０１６０】
最後に、ファイルサーバ側のウイルスチェックプログラムは、得られた結果を自ファイルサーバの名前空間にマッピングし、ユーザに対してはあたかも全ての処理がファイルサーバ側で行われたかのように見せる。
【０１６１】
以下、第２の実施形態について詳細に説明する。
＜ファイルサーバ及びクラウドコンピューティング環境の構成＞
図１８は、本実施形態におけるファイルサーバの構成を示すブロック図である。本実施形態によるファイルサーバ1800は、図２におけるファイルサーバ200が有する検索エンジンプログラム280と索引作成プログラムＡ290と索引295の代わりに、ウイルスチェックプログラムＡ1810を有する構成を採っている。
【０１６２】
ウイルスチェックプログラムＡ1810は、ファイルサーバ200で提供されるファイルがコンピュータウイルスに感染していないかどうかを確認するプログラムである。また、ウイルスチェックプログラムＡ1810は、ウイルスチェックプログラムＢ1910と協調して動作する。
【０１６３】
図１９は、本実施形態におけるクラウドコンピューティング環境の構成を示すブロック図である。本実施形態におけるクラウドコンピューティング環境1900は、クラウドコンピューティング環境400が有する索引作成プログラムＢ460のかわりに、ウイルスチェックプログラムＢ1910を有する。
【０１６４】
ウイルスチェックプログラムＢ1910は、ウイルスチェックプログラムＡ1810と協調して動作し、クラウド側にあるファイルのウイルスをチェックするプログラムである。
【０１６５】
＜ウイルスチェック画面＞
図２０は、システム管理者がウイルスチェックを行うため、ウイルスチェックプログラムＡ1810が管理端末110に表示するウイルスチェック画面2000の一例である。
【０１６６】
ウイルスチェック画面2000は、ウイルスチェック対象のディレクトリを非排他的に選択するためのチェックボックス2010と、ウイルスチェック処理を実行するためのボタン2020とを備える。チェックボックス2010は、あるディレクトリ以下のディレクトリを全て選択した場合、チェックマークが表示され、あるディレクトリ以下の一部のディレクトリを選択した場合、プラスマークが表示される。例えば、図２０では、全てのディレクトリが選択されているため、全てのチェックボックスにチェックマークが表示されている。
【０１６７】
＜ウイルスチェック処理＞
以下では、本実施形態におけるシステムが、ウイルスチェック処理を行う際の処理について図２１及び２２を用いて説明する。
【０１６８】
図２１は、ウイルスチェックプログラムＡ1810（CPU210と協働して）が実行するウイルスチェック処理の詳細を説明するためのフローチャートの一例である。ウイルスチェックプログラムＡ1810は、例えば、システム管理者がウイルスチェックを行うため、ウイルスチェック画面2000において実行ボタン2020を押下した場合に実行される。ウイルスチェックプログラムＡ1810が実行される際には、システム管理者によってウイルスチェック対象の範囲に関する情報（例えば、ウイルスチェック対象のディレクトリツリー）が指定される。
【０１６９】
まず、ウイルスチェックプログラムＡ1810は、ウイルスチェック対象のディレクトリツリーから、オブジェクトを1つ選択し（S2105）、当該オブジェクトがファイルかどうかを確認する（S2110）。
【０１７０】
オブジェクトがファイルである場合（S2110でYESの場合）、ウイルスチェックプログラムＡ1810は、ファイルのデータを読み込み、ウイルスのパターンとマッチングを行う（S2115）。ファイルのデータにウイルスのパターンと一致するデータがあった場合には、当該ファイルの識別子（例えば、オブジェクト名810や疑似FSオブジェクトID820）を結果として保持しておく。
【０１７１】
そして、ウイルスチェックプログラムＡ1810は、ウイルスチェック対象となるオブジェクトがまだ存在するかを確認する（S2120）。
【０１７２】
ウイルスチェック対象となるオブジェクトが存在する場合（S2120でYESの場合）、ウイルスチェックプログラムＡ1810は、再びウイルスチェック対象のディレクトリツリーから、オブジェクトを1つ選択する（S2105）。
【０１７３】
また、ウイルスチェック対象となるオブジェクトが存在しない場合（S2110でNOの場合）、ウイルスチェックプログラムＡ1810は、S2115の結果をユーザにとって理解しやすい形式（例えば、オブジェクト名のリスト）に変換した上で、ウイルスチェック画面2000に表示し、プログラムを終了する。
【０１７４】
一方、オブジェクトがディレクトリの場合（S2110でNOの場合）、ウイルスチェックプログラムＡ1810は、当該ディレクトリの一括処理フラグ860が有効であるかを確認する（S2125）。
【０１７５】
一括処理フラグ860が有効である場合（S2125でYESの場合）、ウイルスチェックプログラムＡ1810は、当該ディレクトリ以下の全てのファイルから、ファイルリストを作成する（S2130）。
【０１７６】
次に、ウイルスチェックプログラムＡ1810は、ウイルスチェックプログラムＢ1910に対して、ウイルスチェック要求を送信する（S2135）。ウイルスチェック要求には、S2130で作成した、クラウドコンピューティング環境1900側でウイルスチェックを行う対象のファイルの実FSオブジェクトID 840のリストを含む。
【０１７７】
また、ウイルスチェックプログラムＡ1810は、ウイルスチェックプログラムＢ1910が送信するウイルスチェック応答を受信する（S2140）。ウイルスチェック応答には、ウイルスチェックプログラムＢ1910が、クラウドコンピューティング環境1900側のファイルに関してウイルスチェックを行って作成された一時結果が含まれる。なお、ウイルスチェック要求を受信したウイルスチェックプログラムＢ1910の処理については後述する（図２２参照）。
【０１７８】
そして、ウイルスチェックプログラムＡ1810は、S2140で受信したウイルスチェック応答に含まれる一時結果を、S2125で作成される結果と同じ形式にマッピングし（S2145）、S2120の処理に遷移する。このマッピング処理は、例えば、一時結果の形式がウイルスに感染したファイルの実FSオブジェクトID840である場合には、実FSオブジェクトID 840からオブジェクト名810や疑似FSオブジェクトID 820を特定し、実FSオブジェクトID 840をそれらに置き換えた上で、S2125で作成される結果とマージする処理である。
【０１７９】
一方、一括処理フラグ860が有効でない場合（S2125でNOの場合）、ウイルスチェックプログラムＡ1810は、対象オブジェクトがまだ存在するとき（S2120でYESの場合）には、再びウイルスチェック対象のディレクトリツリーから、オブジェクトを1つ選択する（S2105）。すなわち、一括処理フラグ860が有効でないディレクトリ以下のオブジェクトが、一括処理ではなく、通常の処理によって逐次ウイルスチェックされる。
【０１８０】
図２２は、ウイルスチェックプログラムB1910（CPU410と協働して）が実行するウイルスチェック処理の詳細を説明するためのフローチャートの一例である。ウイルスチェックプログラムB1910は、クラウドコンピューティング環境1900がウイルスチェック要求をファイルサーバ1800から受信したときに実行される。ウイルスチェック要求には、ウイルスチェック対象のファイルの実FSオブジェクトID 840のリストを含む。
【０１８１】
まず、ウイルスチェックプログラムＢ1910は、ウイルスチェックプログラムＡ1810が送信したウイルスチェック要求を受信する（S2210）。
【０１８２】
そして、ウイルスチェックプログラムＢ1910は、ウイルスチェック要求に含まれるウイルスチェック対象のファイルリストからファイルを1つ選択し、実FSオブジェクトID840を取得する（S2220）。
【０１８３】
次に、ウイルスチェックプログラムＢ1910は、実FSオブジェクトID 840を用いて、ファイルのデータを読み込み、ウイルスのパターンとマッチングを行う（S2230）。ファイルのデータにウイルスのパターンと一致するデータがあった場合には、当該ファイルの識別子（例えば、実FSオブジェクトID840）を一時結果として保持しておく。
【０１８４】
また、ウイルスチェックプログラムＢ1910は、ウイルスチェック対象のファイルリストが空かどうかを確認する（S2240）。
【０１８５】
そして、ウイルスチェック対象のファイルリストが空の場合（S2240でYESの場合）、ウイルスチェックプログラムＢ1910は、ウイルスチェックプログラムＡ1810に対して、ウイルスチェック応答を送信し（S2250）、終了する。
【０１８６】
一方、ウイルスチェック対象のファイルリストが空でない場合（S2240でNOの場合）、ウイルスチェックプログラムＢ1910は、再びウイルスチェック対象のファイルリストから、ファイルを1つ選択し（S2220）、ウイルスチェック対象のファイルを全て処理するまで繰り返す。
【０１８７】
以上、第２の実施形態によれば、クラウドコンピューティング環境1900に移動されたファイルについては、クラウドコンピューティング環境1900上に配置したウイルスチェックプログラムＢ1910により、一括してウイルスチェックを行うことができるため、ファイルサーバ1800で提供される疑似ファイルシステム360のウイルスチェック処理を高速に行うことが可能となる。
【０１８８】
（３）まとめ
本発明では、ファイルサーバ200及び1800に接続されたディスクアレイ装置300における実ファイルシステムＡ370及びＢ380とクラウドコンピューティング環境400における実ファイルシステムＣ490とを仮想的に統合して擬似ファイルシステム360を構成し、それに基づいてクライアント端末100にファイルを提供する。そして、ファイルサーバ200及び1800側では、索引作成プログラムＡ290やウイルスチェックプログラムＡ1810にしたがって、管理端末110からの実ファイルシステムＡ乃至Ｃに含まれるファイルに対する索引作成要求及びウイルスチェック要求に応答し、擬似ファイルシステム360の情報に基づいて、実ファイルシステムＡ370及びＢ380に含まれるファイルに対して索引作成及びウイルスチェック処理を実行すると共に、実ファイルシステムＣ490に含まれるファイル（例えば、後述するような一括処理フラグがONとなっているディレクトリ下のファイル）について索引作成及びウイルスチェック処理を実行するようにクラウドコンピューティング環境400及び1900に索引作成要求及びウイルスチェック要求を送信する。一方、クラウドコンピューティング環境400及び1900側では、索引作成プログラムＢ460及びウイルスチェックプログラム1910に従って、受信した処理要求に応答して対象ファイルに対して索引作成処理及びウイルスチェック処理を実行し、処理結果をファイルサーバ200及び1800に送信する。また、ファイルサーバ200及び1800は、索引作成プログラムＡ290やウイルスチェックプログラムＡ1810による処理結果と索引作成プログラムＢ460及びウイルスチェックプログラムＢ1910による処理結果とをマッピング（統合）して管理端末110に提供する。このようにすることにより、ファイルサーバとクラウドコンピューティング環境との通信回数を減らすことでき、ネットワークのレイテンシの問題を解決することができる。よって、索引作成やウイルスチェック等の対象となる全ファイル（中身）をスキャンするための処理時間を短縮することが可能となる。なお、ファイルサーバやクラウドコンピューティング環境は、索引策プログラム及びウイルスチェックプログラムの両方を備えていても良い。
【０１８９】
また、擬似ファイルシステム360は、上位の実ファイルシステムＡ及びＢ（Ａの方がＢよりも上位）と下位の実ファイルシステムＣ490とによって階層構造のファイルシステムを構成する（図６参照）。そして、ファイルサーバ200及び1800では、階層移動ポリシ550に従って、ファイルを実ファイルシステムＡ370及び380から実ファイルシステムＣ490に階層移動させる（階層移動モジュール540）。これにより、高価な実ファイルシステムＡ370の記憶領域を効率よく利用することが可能となる。
【０１９０】
さらに、擬似ファイルシステム360は、擬似ファイルシステムオブジェクトと実際のファイル又はディレクトリの格納場所との対応関係と、１つのディレクトリに含まれる全てのファイルが実ファイルシステムＣ490に移動されていることを示す一括処理フラグ860とを管理するオブジェクト管理テーブル800を有している。この場合、索引作成プログラムＡ290及びウイルスチェックプログラムＡ1810に従って、ファイルサーバ200及び1800は、索引作成要求及びウイルスチェック要求に対応するファイル及びディレクトリについてオブジェクト管理テーブル800を参照し、一括処理フラグ860がONとなっているディレクトリに含まれる全ファイルについてのみスキャン処理を実行するようにクラウドコンピューティング環境400及び1900に対して索引作成及びウイルスチェック要求を送信する。そして、クラウドコンピューティング環境400及び1900側では、索引作成プログラムＢ460及びウイルスチェックプログラム1910に従って、受信した処理要求に応答して対象となっているファイルに対して索引作成及びウイルスチェック処理を実行し、処理結果をファイルサーバ200及び1800に送信する。一方、一括処理フラグ860がOFFとなっているディレクトリに含まれるファイルであって、実ファイルシステムＣ490に含まれるファイルについては、クラウドコンピューティング環境400及び1900側で処理を実行させるのではなく、ファイルサーバ200及び1800側で処理を実行する。このようにすることにより、より確実にファイルサーバ400及び1800とクラウドコンピューティング環境400及び1900との間の通信回数を最小限に抑えることができ、ネットワークのレイテンシの問題を改善することができる。
【０１９１】
なお、ファイルサーバ200及び1800では、クラウドコンピューティング環境400及び1900との通信状態を監視し、当該通信状態が示すネットワーク遅延量がネットワーク遅延に関する閾値をよりも大きい場合かつオブジェクト管理テーブル800における一括処理フラグ860がOFFとなっている場合、一括処理フラグ860をONに変更するようにしても良い。これにより、クラウドコンピューティング環境400及び1900側での一括処理が指示されていない場合であっても、その時々のネットワークの通信状態に応じた処理を実行することができ、効率的である。
【０１９２】
また、ファイルサーバ200及び1800は、任意のタイミングで、クラウドコンピューティング環境400及び1900に対して、そのメモリ440上に索引作成プログラムＢ460及びウイルスチェックプログラムＢ1910をロード及びアンロードするように指示を与えるようにしても良い。これにより、クラウドコンピューティング環境400及び1900のメモリにプログラムを置いておく時間を短縮して、サービス利用料を削減することができるようになる。
【０１９３】
さらに、ファイル共有システムは、さらに、ファイルサーバ200及び1800に接続され、別のファイルシステムを提供する別のファイルサーバを備えるようにしても良い。この場合、ファイルサーバ200及び1800は、当該新たなファイルサーバが索引作成プログラムＢ及びウイルスチェックプログラムＢに相当する処理プログラムを備えているかどうか確認し、当該確認結果に基づいて、当該新たなファイルシステムが提供する１つ以上のオブジェクトについて、索引作成プログラムＡ290及びウイルスチェックプログラムＡ1810によって処理を実行するか、新たなファイルサーバにおいて処理させるかを決定する。これにより、計算機環境を備えないファイルサーバとファイル共有システムを構築しなければならないような事態にも容易に対応することができるようになる。
【０１９４】
なお、本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１９５】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【０１９６】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【符号の説明】
【０１９７】
100・・・クライアント
110・・・管理端末
200、1800・・・ファイルサーバ
300・・・ディスクアレイ装置
400、1900・・・クラウドコンピューティング環境
260・・・ファイルサーバプログラム
450・・・ファイルサーバプログラム
270・・・ファイルシステムプログラム
470・・・ファイルシステムプログラム
280・・・検索エンジンプログラム
290・・・索引作成プログラムＡ
460・・・索引作成プログラムＢ
295・・・索引
360・・・疑似ファイルシステム
370・・・実ファイルシステムA
380・・・実ファイルシステムB
490・・・実ファイルシステムC
500・・・HSMプログラム
510・・・オブジェクト作成モジュール
520・・・データ読込モジュール
530・・・データ書込モジュール
540・・・階層移動モジュール
550・・・階層移動ポリシ
600・・・ファイルシステムツリー
700・・・階層管理テーブル
800・・・オブジェクト管理テーブル
【図１】
0005551245.tif 000002
【図２】
0005551245.tif 000003
【図３】
0005551245.tif 000004
【図４】
0005551245.tif 000005
【図５】
0005551245.tif 000006
【図６】
0005551245.tif 000007
【図７】
0005551245.tif 000008
【図８】
0005551245.tif 000009
【図９】
0005551245.tif 000010
【図１０】
0005551245.tif 000011
【図１１】
0005551245.tif 000012
【図１２】
0005551245.tif 000013
【図１３】
0005551245.tif 000014
【図１４】
0005551245.tif 000015
【図１５】
0005551245.tif 000016
【図１６】
0005551245.tif 000017
【図１７】
0005551245.tif 000018
【図１８】
0005551245.tif 000019
【図１９】
0005551245.tif 000020
【図２０】
0005551245.tif 000021
【図２１】
0005551245.tif 000022
【図２２】
0005551245.tif 000023