"リモートサイトから遠く離れて配置されたローカルサイトを含む情報システムにおけるデータ処理の方法であって、前記ローカルサイトは、ホストコンピュータに結合されたキャッシュファイルサーバを含み、前記リモートサイトは、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むものであり、データ処理要求のためのデータの1つ以上のファイルの各々がキャッシュされているか否かを判断し、YESの場合は、前記ローカルサイトにおいて結果を生じさせるように、各キャッシュされたファイルのデータ処理を実行することと、NOの場合は、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成することと、前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトの前記サロゲート処理コンピュータに送信することと、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信することと、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、前記リモートサイトで既に実行済みの前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信することとを含む、方法。前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の前記結果とマージすることをさらに含む、請求項1に記載の方法。前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含むものであり、前記処理プログラム及び前記リモートサイトで処理されるファイルの前記ファイルリストを含む、仮想マシンイメージを作成することと、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信することと、をさらに含む、請求項1に記載の方法。前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するために、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタプログラムを実行することをさらに含む、請求項3に記載の方法。前記仮想マシンイメージは、前記リモートサイトにおける第1データ処理のために第1回目に送信されるものであり、前記リモートサイトにおける第2データ処理のために、前記第1回目に続く第2回目に、前記リモートサイトの前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信することをさらに含む、請求項3に記載の方法。前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断することをさらに含む方法であって、当該判断が前記リモートサイトの前記サロゲート処理コンピュータによって前記ファイルリストの前記データの一部分について前記データ処理を実行することと、前記リモートサイトにおける前記ファイルリストの前記データの前記部分のデータ処理のためのリモート処理時間を測定することと、前記リモートサイトにおける前記ファイルリストの前記データの残りの部分の処理が、前記ローカルサイトにおける前記ファイルリストの前記データの前記残りの部分の処理よりも速いか否かを、前記ローカルサイトの前記ホストコンピュータによる前のデータの処理のためのローカル処理時間に基づいて判断し、YESの場合は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であると判断することとを含む、請求項1に記載の方法。ホストコンピュータに結合されたキャッシュファイルサーバを含むローカルサイトと、前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含む、リモートサイトとを備える情報システムであって、キャッシュされているデータ処理要求のためのデータの1つ以上のファイルの各ファイルについて、前記ホストコンピュータは、各キャッシュされたファイルが前記ローカルサイトにおいて結果を生じるようにデータ処理を実行し、キャッシュされていない前記データ処理要求のためのデータの1つ以上のファイルの各ファイルについて、前記ホストコンピュータは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成し、前記ファイルリスト及び前記データ処理のための処理プログラムを、前記リモートサイトの前記サロゲート処理コンピュータに送信し、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記ホストコンピュータは、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信し、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記ホストコンピュータは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信する、情報システム。前記ホストコンピュータは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の結果とマージするように構成された、処理委譲モジュールを含む、請求項7に記載の情報システム。前記サロゲート処理コンピュータは、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断するように構成され、YESの場合は、前記サロゲート処理コンピュータは、前記ファイルリストのデータについて前記データ処理を実行し、前記データ処理の結果を前記ホストコンピュータに戻し、NOの場合は、前記サロゲート処理コンピュータは、未処理データの前記未処理ファイルリストを、前記ローカルサイトにおける前記未処理ファイルリストのデータ処理のために前記ホストコンピュータに戻し、前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を戻す、請求項7に記載の情報システム。前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含み、前記ホストコンピュータは、前記処理プログラムと、前記リモートサイトで処理されるべきファイルの前記ファイルリストとを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信する、請求項7に記載の情報システム。前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するように、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタリングプログラムを実行する、請求項10に記載の情報システム。前記ホストコンピュータは、前記リモートサイトにおける第1データ処理のために第1回目に前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第2データ処理のために、前記第1回目に続く第2回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信する、請求項10に記載の情報システム。前記仮想マシンイメージは、サロゲートプログラムを含み、前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のための前記受信された処理プログラムを実行するために前記サロゲートプログラムを実行する、請求項10に記載の情報システム。前記サロゲート処理コンピュータは、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断するように構成され、当該判断が、前記リモートサイトの前記サロゲート処理コンピュータによって前記ファイルリストの前記データの一部分について前記データ処理を実行することと、前記リモートサイトにおける前記ファイルリストの前記データの前記部分のデータ処理のためのリモート処理時間を測定することと、前記リモートサイトにおける前記ファイルリストの前記データの残りの部分の処理が、前記ローカルサイトにおける前記ファイルリストの前記データの前記残りの部分の処理よりも速いか否かを、前記ローカルサイトの前記ホストコンピュータによる前のデータの処理のためのローカル処理時間に基づいて判断し、YESの場合は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であると判断することとを含む、請求項7に記載の情報システム。ホストコンピュータに結合されたキャッシュファイルサーバを有するローカルサイトと、前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むリモートサイトとを含む、情報システムのホストコンピュータであって、前記ホストコンピュータは、プロセッサと、メモリと、処理モジュールと、ソートモジュールと、処理委譲モジュールとを備え、キャッシュされているデータ処理要求のためのデータの1つ以上のファイルの各ファイルについて、前記処理モジュールは、前記ローカルサイトにおいて結果を生じさせるために、キャッシュされた各ファイルについてデータ処理を実行するように構成され、かつキャッシュされていない前記データ処理要求のためのデータの1つ以上のファイルの各ファイルについて、前記ソートモジュールは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成するように構成され、前記処理委譲モジュールは、前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成され、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記処理委譲モジュールは、前記リモートサイトで実行される前記ファイルリストのデータについての前記データ処理の結果を受信するように構成され、及び前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記処理委譲モジュールは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信するように構成される、ホストコンピュータ。前記処理委譲モジュールは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行されかつ前記リモートサイトで受信されたデータ処理の前記結果とマージするように構成される、請求項15に記載のホストコンピュータ。前記処理委譲プログラムは、前記処理プログラム及び前記リモートサイトで処理されるべきファイルの前記ファイルリストを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成される、請求項15に記載のホストコンピュータ。前記処理委譲プログラムは、前記リモートサイトにおける第1データ処理のために第1回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第2データ処理のために、前記第1回目に続く第2回目に、前記仮想マシンイメージの異なる部分を前記サロゲート処理コンピュータに送信するように構成される、請求項17に記載のホストコンピュータ。前記仮想マシンイメージは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のために前記受信された処理プログラムを実行するために、前記サロゲート処理コンピュータによって実行されるべきサロゲートプログラムを含む、請求項17に記載のホストコンピュータ。0020以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態が実例として但し限定ではない示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する以下に説明し、かつ図面で示される通りが、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における一実施形態、本実施形態、又は上述の実施形態の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一つの実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしないように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ/又はブロック図において図示している場合もある。0021さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様に関して示されている。これらのアルゴリズム記述及び象徴的な態様は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相当量の物理的操作を必要とする。通常は必ずしもそうではないが、当該数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、要素、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、処理、演算、計算、判断、表示等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的電子的数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。0022本発明は、本明細書における動作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置ROM、ランダムアクセスメモリRAM、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等但し、これらに限定されないのコンピュータ読取可能記憶媒体に格納され得る。本明細書において示されるアルゴリズム及び情報提示は、特定のコンピュータ又はその他の装置に本質的に関係しているわけではない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置CPU、プロセッサ、又はコントローラによって実行され得る。0023以下により詳細に示す本発明の例示的実施形態は、複数のリモートファイルストレージシステムにおけるデータ処理のための装置、方法及びコンピュータプログラムを提供する。0024第1の実施形態0025A.システム構成0026図1a~eは、本発明の方法及び装置が第1の実施形態に従って適用され得る情報システム概要100の一例を示す。図1aに示されるように、情報システム100は、ローカルサイト110とリモートサイト111とを含む。ローカルサイト110は、ユーザがデータを物理的に使用し、かつデータを処理することを望むサイトである。ローカルサイト110は、1台以上のホストコンピュータ140と、キャッシュファイルサーバ160と、これらを接続するローカルネットワーク151とを含む。リモートサイト111は、ユーザデータが格納されている遠隔地に物理的に位置しているサイトである。リモートサイト11は、1台以上のサロゲート処理コンピュータ170と、リモートファイルサーバ130と、これらを接続するローカルネットワーク152とを含む。ローカルサイト110とリモートサイト111は、サイト間ネットワーク153を介して接続される。0027多様はコンピュータホストコンピュータ140、リモートファイルサーバ130、キャッシュファイルサーバ160、及びサロゲート処理コンピュータ170は各々、CPU中央演算装置141と、メモリ142と、ネットワークインタフェース150とを備える。CPU141は、コンピュータのデバイスをメモリ142内のプログラムとして制御する。メモリ142は、例えばプログラムやバッファキャッシュを含む多種のデータを格納する。ネットワークインタフェース150は、ネットワーク151及び152を介して他のコンピュータと通信するために使用される。0028図1bに示されるように、ホストコンピュータ140は、情報システム100のユーザがその業務のためにデータを処理するために使用するものである。ホストコンピュータ140は、そのメモリ142にプログラム143、144、145、及び146、並びリスト147を有する。ネットワークファイルシステムクライアントプログラム143は、ファイルI/O要求をネットワークインタフェース150を介してキャッシュファイルサーバ160に発行するためにCPU141によって実行され、ホストコンピュータ140がキャッシュファイルサーバ160のファイルにアクセスすることを可能にする。処理プログラム144は、ユーザが行いたいこと例えば、テキスト検索、ウィルススキャン、文書の編集などを記述するプログラムである。ソートプログラム145は、キャッシュファイルサーバ160のキャッシュステータス情報APIプログラム162と通信するためにCPU141によって実行され、ターゲットデータがローカルサイト110又はリモートサイト111のどちらで処理されるかを判断する。処理委譲プログラム146は、処理プログラム144及びファイルリスト147をリモートサイト111のサロゲート処理コンピュータ170に送信し、かつサロゲート処理コンピュータ170から結果を受信するために、CPU141によって実行される。ファイルリスト147は、リモートサイト111で処理されるべきファイルのリストである。0029図1cに示されるように、リモートサイト111のリモートファイルサーバ130は、ユーザのファイルデータを格納する。CPU141は、外部コンピュータからファイルI/O要求を受信し、ネットワークファイル処理プログラム134を参照することによってネットワークインタフェース150を介して結果を戻す。CPU141は、ファイルI/O要求を処理し、ファイルシステムプログラム135を参照することによって、ストレージインタフェース131を介して接続された記憶媒体132又はストレージアレイ133から/にデータを読み出す/書き込む。FCファイバチャネル、SATASerialAttachedTechnologyAttachment、SASSerialattachedSCSI、IDEIntegratedDeviceElectronics、又は他のインタフェースは、CPU141とストレージインタフェース131の間の通信のために使用される。リモートファイルサーバ130は、多種の記憶媒体132HDDハードディスクドライブ、SSDソリッドステートドライブ、フラッシュメモリ、光ディスク、磁気テープなどを備えることができる。RAIDRedundantArrayofIndependentDisk技術によるそれらのアレイは、記憶媒体132のためにも利用できる。さらに、外部ストレージアレイ133は、内蔵記憶媒体132の代わりに使用することができる。CPU141は、バッファキャッシュ136などの他の用途のためにメモリ142を使用することができる。このバッファキャッシュ136は、記憶媒体132へのI/O要求を減らすことによって高速データアクセスを達成するために、記憶媒体132のキャッシュデータを格納する。0030図1dに示されるように、キャッシュファイルサーバ160は、ローカルサイト110に存在し、その構造は、リモートファイルサーバ130に類似している。キャッシュファイルサーバ160は、リモートファイルサーバ130に比べて、いくつかの追加プログラム143、161、及び162を備えている。ネットワークファイルシステムクライアントプログラム143は、ホストコンピュータ140のシステムクライアントプログラム143と同じである。キャッシュファイルサーバ160は、リモートファイルサーバ130にファイルI/O要求を発行するために、このプログラム143を使用する。キャッシュ管理プログラム161は、キャッシュファイルサーバ160がリモートファイルサーバ130のためのキャッシュとして動作することを可能にする。キャッシュ管理プログラム161を使用することによって、ホストコンピュータ140は、リモートファイルサーバ130のデータに透過的にアクセスすることができるが、これは、ホストコンピュータ140が、キャッシュファイルサーバ160にファイルI/O要求を発行するだけでよく、リモートファイルサーバ130を意識する必要がないことを意味する。キャッシュステータス情報APIアプリケーションプログラムインタフェースプログラム162は、ホストコンピュータ140がキャッシュのステータスを取得することを可能にする。0031図1eに示されるように、サロゲート処理コンピュータ170は、リモートサイト111に存在し、リモートサイト111のデータ処理を担当する。このサロゲートコンピュータ170は、ローカルサイト110のホストコンピュータ140の代わりとしてデータを処理するものである。ネットワークファイルシステムクライアントプログラム123は、リモートファイルサーバ130にファイルI/O要求を発行するために使用される。サロゲートプログラム171は、処理委譲プログラム146と通信し、かつ受信された処理プログラム172及びファイルリスト173を含む委譲要求を受信するために、CPU141によって実行される。受信された処理プログラム172は、リモートサイトで実行されるようにホストコンピュータ140によって送信される。ファイルリスト173は、ホストコンピュータ140によって送信され、リモートサイトで処理されるべきターゲットファイルを列挙する。0032ローカルネットワーク151、152については、同じサイトのコンピュータは、互いに通信し、I/O要求を発行し、ネットワークインタフェース150を使用することによってローカルネットワーク151及び152を介してデータ処理要求を発行する。ローカルネットワーク151及び152もまた、異なるサイトのコンピュータが互いに通信できるように双方向に結合される。NFSネットワークファイルシステム、CIFSCommonInternetFileSystem、及びAFPAppleFilingProtocolなどのネットワークを介したファイルI/O要求インタフェースのための共通プロトコルがいくつか存在する。0033B.ファイルレベル階層型ストレージ管理0034本実施形態は、ファイルレベルHSM階層型ストレージ管理を使用することによるファイル単位キャッシュ管理方法の一例を示すが、本発明は、ファイルレベルHSMに基づく方法に限定されない。他のファイル単位キャッシュ管理方法は、本実施形態にも利用できる。0035一般に、HSMは、異なる特性を有する複数の記憶媒体を使用するための技術である。HSMが可能なストレージシステムは、各データがどの記憶媒体上に格納されているかをユーザが認識する必要がないように、データ位置を自動的に管理する。HSMを使用することによって、ユーザは、頻繁にアクセスされるデータを高速だが高価な記憶媒体に、頻繁にアクセスされないデータを低速だが安価な媒体に配置することができる。よって、ユーザは、記憶媒体のための総費用を削減し、合理的な性能を得ることができる。0036ファイルレベルHSMは、HSMの一種である。ファイルレベルHSM技術は、ファイル単位で異なる記憶媒体にデータを分配する。ファイルレベルHSMのいくつかの実装は、ファイルデータを他のいずれかの外部ファイルストレージシステムに配置することができる。この特性は、ファイル単位キャッシュ管理を実施するために使用されることができる。0037本実施形態は、ファイルデータを他のいずれかの外部ファイルストレージシステムに配置する、最後の種類のファイルレベルHSMに焦点を当てる。本実施形態では、キャッシュ管理プログラム161がこのようなファイルレベルHSMの機能を使用することを想定する。0038図2a及び2bは、スタブファイル技術を使用したファイルレベルHSMの実装の一例を示す。スタブファイルとは、基本的にファイルのデータを有さず、外部ファイルサーバ上に格納されたデータの位置を示す仮想ファイルである。スタブファイルは、データの一部分又は全体をキャッシュとして有してもよい。HSMファイルシステム200のファイルツリーは、HSMファイルサーバ130がクライアントに示すHSMファイルシステムの階層を示す。ファイルツリー200は、ルート210及びサブディレクトリ211、212、213を有し、各ディレクトリは、ファイル221、222、223、又は227などのいくつかのファイルを有する。各パス位置は、各ディレクトリ名とファイル名をスラッシュで区切ったパス名で示される。例えば、ファイル221のパス名は、rootdirAfile1である。HSMファイルシステム自体は、通常のファイルシステムとして使用されることができる。ファイル221、222、及び223は、クライアントがパス名rootdirAfile1、rootdirAfile2、及びrootdirAfile3などを指定することによって読み出す/書き込むことができるように、通常のファイルである。ファイル224、225、及び226は、HSM特性の例である。HSMファイルシステム200は、このようなファイルのデータのいくつかの部分をその内蔵記憶媒体132に格納する。例えば、HSMファイルシステム200は、ファイル名及びメタデータファイル作成時間又はアクセス制御情報などのみを格納するが、それらのデータは格納しない。ファイルのデータ全体を有する代わりに、HSMファイルシステムは、ファイルデータの位置に関する情報を格納する。0039図2bは、このようなスタブファイル224の構造例を示す。ファイルメタデータ270は、各ファイルのメタデータを格納する。ファイルメタデータ270は、ファイルがスタブであるか又はそうでないか通常ファイルを示すエントリ281を有する。ファイルがスタブである場合は、ファイルメタデータ270は、対応するスタブ情報271を有する。ファイルがスタブではない場合は、ファイルメタデータ270は、ファイルシステムユーザのために十分な情報283、284、及び285に提供するように満たされなければならない。ファイルがスタブである場合は、パス名、及びファイルがスタブであるか否かの状態を特定するために、エントリ281及びファイル名282のみが必要とされる。スタブファイルの他のエントリ283、284、及び285は格納されても格納されなくてもよい。なぜならば、ファイルシステムプログラム124は、対応するスタブ情報271及び外部ファイルサーバを参照することによって、このようなメタデータを取得することができるからである。スタブ情報271は、ファイルデータの実際の位置を示す。この例では、スタブ情報271は、外部サーバ名286、外部ファイルサーバ内のファイルシステム名287、及びファイルシステム上のパス名288を特定することによって位置を示す。実際のファイルは、HSMファイルシステムのパス名と同じパス名を有する必要はない。例えば、スタブファイル224は、パス名rootdirBfile4を有するが、実ファイル246ファイルシステムA231に格納されるは、rootdirDfile10となる。ファイルメタデータ270は、ファイルデータの部分ごとに複数のスタブ情報271を有し得る。これによって、複数のファイルサーバ間でのファイルデータの分配と、外部ファイルサーバへの当該データの一部のみの格納が可能になる。ファイルがスタブであっても、HSMファイルサーバ130は、より高速に応答するために外部ファイルサーバとの通信を減らすために、ファイルデータの一部又はデータ全体を内蔵記憶媒体132のキャッシュとして維持することができる。0040キャッシュファイルサーバ160は、リコール及び移動によってファイルをスタブに、かつスタブをファイルに変換できる。リコールは、スタブ情報で指定される外部ファイルサーバから実ファイルデータを読み出すためのプロセスである。データ全体を読み出した後で、キャッシュファイルサーバ160は、スタブをファイル全体で置き換えることができる。移動とは、ファイルデータを外部ファイルサーバにコピーし、スタブ情報を作成し、バックエンドネットワーク152を介してファイルをスタブに変換するための逆のプロセスである。0041ディレクトリ213rootdirCは、スタブファイルとして扱うことができる。この状況では、HSMファイルシステム200は、下のファイル227、228、及び229についての情報を有さなくてもよい。クライアントがディレクトリ213の下のファイルにアクセスした場合に、HSMファイルシステム200は、ディレクトリ254に実際に格納されたファイル227、228、及び229を有するように作動し、このディレクトリ254は、ファイルシステムB232内に存在する。なぜならば、ディレクトリ254は、かかる3つのファイル247、248、及び249を有するからである。0042図3aは、キャッシュファイルサーバ160がファイルI/O要求を受信した場合に、ファイルシステムプログラム135及びキャッシュ管理プログラム161が実行する処理フロー300の一例を示す。最初に、キャッシュファイルサーバ160は、要求されたファイルがスタブであるか否かを確認するために情報を調べるステップ305。ファイルがスタブでない場合は、キャッシュファイルサーバ160は、通常のファイルサーバステップ310として要求を処理する。ファイルがスタブである場合は、キャッシュファイルサーバ160は、必要に応じて、外部ファイルサーバからファイルデータをリコールするステップ315。クライアントが読み出しI/Oを要求した場合、キャッシュファイルサーバ160は、キャッシュファイルサーバ160が実データを有しないので、データをリコールしなければならない。クライアントが既存ファイルを上書きした場合、キャッシュファイルサーバ160は、クライアントがデータを送信するので、データをリコールする必要はない。リコールするか否かは、操作タイプ読み出し又は書き出し、データ範囲、及びユーザのポリシーによって異なる。リコールの後で、キャッシュファイルサーバ160は、通常のようにI/O要求を処理するステップ320。最後に、キャッシュファイルサーバ160は、再びファイルを外部サーバに移動してもよいステップ325。0043図3bは、キャッシュファイルサーバ160がディレクトリについてのI/O要求を受信した場合に、ファイルシステムプログラム135及びキャッシュ管理プログラム161が実行する処理フロー350の一例を示す。最初に、キャッシュファイルサーバ160は、要求されたディレクトリがスタブであるか否かを確認するために調べるステップ355。ディレクトリがスタブである場合は、キャッシュファイルサーバ160は、外部ファイルサーバからディレクトリエントリデータをリコールするステップ360。その後で、キャッシュ管理プログラム161は、必要に応じて、外部ファイルサーバのディレクトリエントリ及びメタデータを読み出すことによって、そのディレクトリの下のファイルのためのスタブを作成するステップ365。ステップ360及びステップ365によって、キャッシュ管理プログラム161は、当該ディレクトリの下のファイルに関する情報を有し、クライアントは、これらのファイルを調べることができる。ここでディレクトリはスタブではないため、キャッシュ管理プログラム161は通常のファイルシステムとして要求を処理するステップ370。クライアントが、親ディレクトリがスタブであるファイルについてI/O要求を発行した場合、キャッシュ管理プログラム161は、ターゲットファイルにアクセスするためにフロー350のように親ディレクトリをリコールする。0044これらのI/Oフロー300及び350によって、キャッシュファイルサーバ160は、クライアントが1つのキャッシュファイルサーバ160にアクセスするだけで、複数の外部ファイルサーバの中のファイルにアクセスできるように、クライアント用の外部ファイルサーバを隠す。0045C.キャッシュ情報及び処理委譲を用いたデータ処理0046図4は、第1の実施形態に従ったデータ処理フロー400の一例を示す。情報システム100のユーザによってホストコンピュータ140がデータ処理を開始した場合、情報システム100の構成要素は、このフロー400を実行する。0047最初に、ホストコンピュータ140のソートプログラム145は、キャッシュファイルサーバ160のキャッシュ管理プログラム161と通信し、ターゲットファイルの各々がキャッシュされているか否かを示すステータスを受信するステップ410。キャッシュ管理プログラム161が上記のようなキャッシュ管理のためのファイルレベルHSMを使用することを想定して、キャッシュ管理プログラムは、ファイルがスタブではない場合には、ファイルがキャッシュされていると判断し、ファイルがスタブである場合には、ファイルがキャッシュされていないと判断することができる。ホストコンピュータ140の処理プログラム144は、キャッシュファイルサーバ160にキャッシュされたファイルに対してユーザの目的のデータ処理を実行するステップ420。0048同時に又はその後で、ソートプログラム145は、データの長距離転送を防ぐために、キャッシュされておらず、かつリモートサイトで処理されるべきファイル名をリストしたファイルリスト147を作成するステップ430。ホストコンピュータ140の処理委譲プログラム146は、処理プログラム144及びファイルリスト147をリモートサイト111のサロゲート処理コンピュータ170に送信するステップ440。サロゲート処理コンピュータ170のサロゲートプログラム171は、処理委譲プログラム146からデータを受信し、そのメモリ142に当該データを、受信された処理プログラム172及びファイルリスト173として格納する。サロゲートプログラム171は、リモートサイト111におけるデータ処理が効果的か否かを判断するステップ450。いくつかの種類のデータ処理は、ローカルサイト110よりもリモートサイト111で行うのにより多くの時間がかかる。例えば、サロゲート処理コンピュータ170のCPU141は、ホストコンピュータ140のCPUよりも遅い。別の例では、ローカルサイト110のデータとリモートサイト111のデータとの間のデータ比較には、ローカルサイト110からリモートサイト111へのデータ転送、又は逆方向のデータ転送を必要とする。どちらのデータ転送も時間がかかるため、リモートサイト111における処理は効果的でない。0049ステップ450の問い合わせの回答がYESである場合は、サロゲートプログラム171は、データ処理のために受信済み処理プログラム172を実行するステップ460。受信済み処理プログラム172は、ファイルリスト173にリストされ、かつリモートファイルサーバ130に格納されたデータを処理する。この処理には、ローカルネットワーク152を介したデータ転送を要求するが、サイト間ネットワーク153を介した転送は必要としない。よって、この処理は、長距離転送のための時間があまりかからない。サロゲートプログラム171がステップ450でNOと判断した場合は、サロゲートプログラム171は、リモートサイト111における未処理データを列挙しているファイルリストを戻すステップ470。ローカルサイト110におけるホストコンピュータ140の処理プログラム144は、未処理データについてのデータ処理を実行するステップ480。ステップ420、450、460、470、及び480は、ファイル単位で並行して実行することができる。さらに、サロゲートプログラム171は、ステップ450及び480で前のデータを処理した結果の情報を使用することができる。例えば、サロゲートプログラム171がリストされたファイルの10を処理した後で、サロゲートプログラム171は、データの時間処理10を測定し、リモートサイト111で残りの90を処理することがより高速か否かを判断する。これらのステップの後で、処理委譲プログラム146は、ステップ420、460、及び480の結果をマージするステップ490。マージされた結果は最終的なものである。0050本実施形態は、複数のサイト間で処理されるべきファイルデータの転送を減らすが、処理プログラム144、ファイルリスト147、及び処理された結果の追加の転送を必要とする。一般に、データ処理の結果は、テキスト検索及びウィルススキャンなどのデータ自体よりもサイズが小さい。よって、本実施形態は、ローカルサイトとリモートサイトの間のデータ転送の削減を達成し、かつ全体的な処理時間を減らすことができる。0051第2の実施形態0052第1の実施形態は、サロゲート処理コンピュータ170が複数のホストコンピュータ140の同じプログラムを実行することを必要とする。それらが異なるCPUアーキテクチャ、異なるオペレーティングシステム、又は異なるライブラリを使用している場合に、上記要件を満たすことはできない。第2の実施形態は、仮想マシン技術を使用することによってこの要件を満たす。0053図5a~5cは、第2の実施形態に従った情報システム500の一例を示すものであり、この情報システム500は、ホストコンピュータ540及びサロゲートコンピュータ570が異なる点以外は図1のシステム100と類似している。ホストコンピュータ540は、図1のホストコンピュータ140と類似しているが、サロゲートプログラム171、処理プログラム144、及びファイルリスト147を含む仮想マシンイメージ541を有する図5b。サロゲートコンピュータ570は、図1のサロゲートコンピュータ140と類似しているが、仮想マシンイメージ541及び仮想マシンモニタプログラム571を有する図5c。0054A仮想マシンモニタ0055仮想マシンVM技術は、最近のコンピューティングシステムで広く使用されている。この技術は、異なる種類のCPU、メモリ、及び他の構成要素を有する場合がある仮想コンピュータをエミュレートする。この技術によって、情報システムのユーザは、異なるコンピュータで異なる種類のオペレーティングシステム及びプログラムを実行することができる。米国特許第7,117,499号は、このような技術の一例を開示し、その全体を参照することにより本明細書に組み込まれている。仮想マシンモニタVMM571は、仮想コンピュータをエミュレートするこのようなプログラムである。VMM571は、メモリ142内の仮想マシンイメージ541にアクセスし、エミュレートされた仮想コンピュータ上の仮想マシンイメージ541に格納されたオペレーティングシステム及びプログラムを実行する。0056VMMの多くの公知の実装が存在する。VMMの一例は、ハードウェアを仮想化し、VMM上のVMは、それらが実際のハードウェア上にあるかのように動作し実際には仮想化されている、その上でそれらのOS及びアプリケーションを実行する。しかし、VMが何らかの種類のハードウェアリソースCPU上の特別なレジスタ、メモリ上のページテーブル、ACPIAdvancedConfigurationandPowerInterface情報、及びPCIPeripheralComponentInterfaceのためのマップされたメモリ領域などにアクセスした場合に、又はVMが割込を引き起こした場合に、VMMは、アクセスをトラップし、動作をエミュレートし、実ハードウェアが行うように応答する。このアクションは、実際のハードウェア構成をVMから隠し、VMが仮想化ハードウェア上でそれ自身のOS及びアプリケーションを実行することを可能にする。0057Bキャッシュ情報及び処理委譲を用いたデータ処理0058図6は、第2の実施形態に従ったデータ処理フロー600の一例を示す。情報システム500のユーザによってホストコンピュータ540がデータ処理を開始した場合、情報システム500の構成要素は、このフロー500を実行する。0059このフロー600は、図4のフロー400とほぼ同じであるが、ステップ430とステップ450の間の異なる処理ステップを含む。図6のステップ430の後で、ホストコンピュータ540の処理委譲プログラム146は、ステップ430でリストされたファイルリスト147及び処理プログラム144を含むVMI541を生成するステップ635。このVMI541は、CPUアーキテクチャ、オペレーティングシステム、及びライブラリに関してホストコンピュータ540と同じ処理環境を含む。次に、処理委譲プログラム146は、サイト間ネットワーク153を介してVMI541をサロゲート処理コンピュータ570に送信するステップ640。VMI541は、オペレーティングシステム及びライブラリのための大量のデータを含むので、大きい場合がある。ユーザがデータを繰り戻し処理すると想定すると、ホストコンピュータ540が第1回目にVMI541全体を送信し、第2回目にVMI541の異なる部分を送信することによって、データ転送を減らすことは有用な方法である。サロゲート処理コンピュータ570のVMMプログラム571は、VMI571から仮想マシンをブートするステップ645。VMは、サロゲートプログラム171が図4のフロー400を実行するように、図6のステップ450、460、及び470を実行する。0060サロゲート処理コンピュータ570がホストコンピュータ540のCPUアーキテクチャ、オペレーティングシステム、又はライブラリとは異なるCPUアーキテクチャ、オペレーティングシステム、又はライブラリを備えていたとしても、本実施形態は、システムが、ローカルサイト510の全データを処理するよりも短い時間でデータを処理することを可能にする。0061当然のことながら、図1及び図5に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のI/O装置例えば、CD及びDVDドライブ、フロッピー登録商標ディスクドライブ、ハードドライブ等も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信例えば、通信ネットワークによって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク例えば、インターネット、無線ネットワーク、ストレージエリアネットワーク等を含む。0062説明では、本発明を徹底的に理解できるようにするために説明する目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図、構成図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。0063当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置ハードウェアを用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体ソフトウェア上に記憶された命令を用いて実施してもよく、これがプロセッサによって実行された場合には、本発明の実施形態を実行する方法をプロセッサに実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に分散することができる。ソフトウェアによって実施された場合、上記の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び/又は暗号化形式で命令を媒体に記憶することができる。0064上記により、本発明が、ファイルストレージステムのためのリモートサイトにおけるデータのデータ処理時間を短縮するための方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出されたいかなる構成を用いてもよい。本開示は、本発明のあらゆる適応又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。"