(57)【要約】      （修正有）【課題】ファイルストレージシステムのためのリモートサイトのデータの処理時間を減らすための方法および装置を提供する。【解決手段】ローカルサイト１１０とリモートサイト１１１とを含む情報システム１００において、データ処理要求のためのデータの１つ以上のファイルの各々がキャッシュされている場合、各キャッシュされたファイルのデータ処理をローカルサイトで実行する。キャッシュされていない場合、リモートサイトで処理されるべきファイルのファイルリストを作成し、ファイルリスト及び処理プログラムをサロゲート処理コンピュータに送信する。サロゲート処理コンピュータによって処理が実行されることが十分に効果的である場合は、リモートサイトで実行し、その結果を受信する。効果的ででない場合には、リモートサイトから未処理ファイルリストを受信し、ローカルサイトでデータ処理を実行し、かつリモートサイトで既に実行済みの結果を受信する。【選択図】図１（ａ）
2012133772.tif 000002
【特許請求の範囲】
【請求項１】
リモートサイトから遠く離れて配置されたローカルサイトを含む情報システムにおけるデータ処理の方法であって、前記ローカルサイトは、ホストコンピュータに結合されたキャッシュファイルサーバを含み、前記リモートサイトは、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むものであり、
データ処理要求のためのデータの１つ以上のファイルの各々がキャッシュされているか否かを判断し、ＹＥＳの場合は、前記ローカルサイトにおいて結果を生じさせるように、各キャッシュされたファイルのデータ処理を実行することと、ＮＯの場合は、
前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成することと、
前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトの前記サロゲート処理コンピュータに送信することと、
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信することと、
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、前記リモートサイトで既に実行済みの前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信することとを含む、方法。
【請求項２】
前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の前記結果とマージすることをさらに含む、請求項１に記載の方法。
【請求項３】
前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含むものであり、
前記処理プログラム及び前記リモートサイトで処理されるファイルの前記ファイルリストを含む、仮想マシンイメージを作成することと、
前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信することと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するために、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタプログラムを実行することをさらに含む、請求項３に記載の方法。
【請求項５】
前記仮想マシンイメージは、前記リモートサイトにおける第１データ処理のために第１回目に送信されるものであり、
前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記リモートサイトの前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信することをさらに含む、請求項３に記載の方法。
【請求項６】
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断することをさらに含む方法であって、
当該判断が
前記リモートサイトの前記サロゲート処理コンピュータによって前記ファイルリストの前記データの一部分について前記データ処理を実行することと、
前記リモートサイトにおける前記ファイルリストの前記データの前記部分のデータ処理のためのリモート処理時間を測定することと、
前記リモートサイトにおける前記ファイルリストの前記データの残りの部分の処理が、前記ローカルサイトにおける前記ファイルリストの前記データの前記残りの部分の処理よりも速いか否かを、前記ローカルサイトの前記ホストコンピュータによる前のデータの処理のためのローカル処理時間に基づいて判断し、ＹＥＳの場合は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であると判断することとを含む、請求項１に記載の方法。
【請求項７】
ホストコンピュータに結合されたキャッシュファイルサーバを含むローカルサイトと、
前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含む、リモートサイトと
を備える情報システムであって、
キャッシュされているデータ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ホストコンピュータは、各キャッシュされたファイルが前記ローカルサイトにおいて結果を生じるようにデータ処理を実行し、
キャッシュされていない前記データ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ホストコンピュータは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成し、前記ファイルリスト及び前記データ処理のための処理プログラムを、前記リモートサイトの前記サロゲート処理コンピュータに送信し、
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記ホストコンピュータは、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信し、
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記ホストコンピュータは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信する、情報システム。
【請求項８】
前記ホストコンピュータは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の結果とマージするように構成された、処理委譲モジュールを含む、請求項７に記載の情報システム。
【請求項９】
前記サロゲート処理コンピュータは、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断するように構成され、ＹＥＳの場合は、前記サロゲート処理コンピュータは、前記ファイルリストのデータについて前記データ処理を実行し、前記データ処理の結果を前記ホストコンピュータに戻し、ＮＯの場合は、前記サロゲート処理コンピュータは、未処理データの前記未処理ファイルリストを、前記ローカルサイトにおける前記未処理ファイルリストのデータ処理のために前記ホストコンピュータに戻し、前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を戻す、請求項７に記載の情報システム。
【請求項１０】
前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含み、
前記ホストコンピュータは、前記処理プログラムと、前記リモートサイトで処理されるべきファイルの前記ファイルリストとを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信する、請求項７に記載の情報システム。
【請求項１１】
前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するように、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタリングプログラムを実行する、請求項１０に記載の情報システム。
【請求項１２】
前記ホストコンピュータは、前記リモートサイトにおける第１データ処理のために第１回目に前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信する、請求項１０に記載の情報システム。
【請求項１３】
前記仮想マシンイメージは、サロゲートプログラムを含み、
前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のための前記受信された処理プログラムを実行するために前記サロゲートプログラムを実行する、請求項１０に記載の情報システム。
【請求項１４】
前記サロゲート処理コンピュータは、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断するように構成され、
当該判断が、
前記リモートサイトの前記サロゲート処理コンピュータによって前記ファイルリストの前記データの一部分について前記データ処理を実行することと、
前記リモートサイトにおける前記ファイルリストの前記データの前記部分のデータ処理のためのリモート処理時間を測定することと、
前記リモートサイトにおける前記ファイルリストの前記データの残りの部分の処理が、前記ローカルサイトにおける前記ファイルリストの前記データの前記残りの部分の処理よりも速いか否かを、前記ローカルサイトの前記ホストコンピュータによる前のデータの処理のためのローカル処理時間に基づいて判断し、ＹＥＳの場合は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であると判断することとを含む、請求項７に記載の情報システム。
【請求項１５】
ホストコンピュータに結合されたキャッシュファイルサーバを有するローカルサイトと、前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むリモートサイトとを含む、情報システムのホストコンピュータであって、
前記ホストコンピュータは、
プロセッサと、
メモリと、
処理モジュールと、
ソートモジュールと、
処理委譲モジュールとを備え、
キャッシュされているデータ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記処理モジュールは、前記ローカルサイトにおいて結果を生じさせるために、キャッシュされた各ファイルについてデータ処理を実行するように構成され、かつ
キャッシュされていない前記データ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ソートモジュールは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成するように構成され、前記処理委譲モジュールは、前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成され、
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記処理委譲モジュールは、前記リモートサイトで実行される前記ファイルリストのデータについての前記データ処理の結果を受信するように構成され、及び
前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記処理委譲モジュールは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信するように構成される、ホストコンピュータ。
【請求項１６】
前記処理委譲モジュールは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行されかつ前記リモートサイトで受信されたデータ処理の前記結果とマージするように構成される、請求項１５に記載のホストコンピュータ。
【請求項１７】
前記処理委譲プログラムは、前記処理プログラム及び前記リモートサイトで処理されるべきファイルの前記ファイルリストを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成される、請求項１５に記載のホストコンピュータ。
【請求項１８】
前記処理委譲プログラムは、前記リモートサイトにおける第１データ処理のために第１回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記仮想マシンイメージの異なる部分を前記サロゲート処理コンピュータに送信するように構成される、請求項１７に記載のホストコンピュータ。
【請求項１９】
前記仮想マシンイメージは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のために前記受信された処理プログラムを実行するために、前記サロゲート処理コンピュータによって実行されるべきサロゲートプログラムを含む、請求項１７に記載のホストコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は、概してストレージシステムに関し、特に、複数のリモートファイルストレージシステムの間のデータ処理のための方法及び装置に関する。
【背景技術】
【０００２】
０００２    複数のリモートサイト間のデータ転送は、通常、多様な目的のために使用される。例えば、複数のリモートオフィス間のデータ共有は、異なる場所の複数のユーザ間で文書を共有するために使用される。リモートサイトへのデータバックアップ及びレプリケーションは、地震や停電などの災害によって引き起こされる損害を避けるためのＤＲ（災害復旧）及びＢＳ（事業継続）のために有用であり、かつ通常使用される方法である。しかし、複数のリモートサイト間のデータ転送は、データ処理の問題をもたらす。長距離のデータ転送の結果、レイテンシが高くなり、帯域幅が小さくなる。ローカルサイトのコンピュータがリモートサイトに格納された全データを要求するデータ処理プログラム（テキスト検索又はウィルススキャンなど）を実行し、ローカルサイトがキャッシュデータを有しない場合、コンピュータは、リモートサイトから全データをリコールしなければならず、その結果、処理時間がかなり長くなってしまう。
【発明の概要】
【０００３】
０００３    本発明の例示的な実施形態は、ファイルストレージシステムのためのリモートサイトのデータのデータ処理時間を減らすための方法及び装置を提供する。特定の実施形態では、ローカルサイトは、リモートファイルサーバのキャッシュとして動作するファイルサーバを備える。このローカルファイルサーバは、各ファイルのキャッシングステータスを取得するためのインタフェースを提供する。データを処理するローカルサイトのローカルコンピュータは、ターゲットファイルがキャッシュされているか否かを問い合わせる。このローカルコンピュータは、キャッシュされたファイルをローカルで処理し、長距離のデータ転送を必要としないので、この処理は速く終了する。ローカルコンピュータは、ローカルで処理されない処理プログラム及びファイルリストをリモートサイトのリモート処理コンピュータに送信する。リモート処理コンピュータは、送信されたプログラムを処理し、その結果をローカルコンピュータに戻す。リモート処理コンピュータは、リモートファイルサーバに近く、長距離のデータ転送を必要としない。ローカルサイトとリモートサイトとの間で転送されるコンテンツは、処理プログラム、ファイルリスト、及び処理された結果である。これらのコンテンツは、一般にファイルデータよりも小さい。よって、ローカルコンピュータを使用した結果、処理時間を短縮することができる。本発明は、各ファイルのキャッシュステータスを考慮し、制限がありかつ高価なネットワーク帯域幅を効果的に使用する。
【０００４】
０００４    本発明の一態様は、リモートサイトから遠く離れて配置されたローカルサイトを含む情報システムにおけるデータ処理の方法を対象とし、前記ローカルサイトは、ホストコンピュータに結合されたキャッシュファイルサーバを含み、前記リモートサイトは、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むものである。前記方法は、データ処理要求のためのデータの１つ以上のファイルの各々がキャッシュされているか否かを判断し、ＹＥＳの場合は、前記ローカルサイトにおいて結果を生じさせるように、各キャッシュされたファイルのデータ処理を実行することと、ＮＯの場合は、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成することと、前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトのサロゲート処理コンピュータに送信することと、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信することと、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、前記リモートサイトで既に実行済みの前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信することとを含む。
【０００５】
０００５    ある実施形態では、前記方法は、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の前記結果とマージすることをさらに含む。前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含むものであり、前記方法は、前記処理プログラム及び前記リモートサイトで処理されるファイルの前記ファイルリストを含む、仮想マシンイメージを作成することと、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信することとをさらに含む。前記方法は、前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するために、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタプログラムを実行することをさらに含む。前記仮想マシンイメージは、前記リモートサイトにおける第１データ処理のために第１回目に送信されるものであり、前記方法は、前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記リモートサイトの前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信することをさらに含む。
【０００６】
０００６    ある実施形態では、前記方法は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断することをさらに含む方法であって、当該判断が、前記リモートサイトの前記サロゲート処理コンピュータによって前記ファイルリストの前記データの一部分について前記データ処理を実行することと、前記リモートサイトにおける前記ファイルリストの前記データの前記部分のデータ処理のためのリモート処理時間を測定することと、前記リモートサイトにおける前記ファイルリストの前記データの残りの部分の処理が、前記ローカルサイトにおける前記ファイルリストの前記データの前記残りの部分の処理よりも速いか否かを、前記ローカルサイトの前記ホストコンピュータによる前のデータの処理のためのローカル処理時間に基づいて判断し、ＹＥＳの場合は、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であると判断することとを含む。
【０００７】
０００７    本発明の他の態様に従って、情報システムは、ホストコンピュータに結合されたキャッシュファイルサーバを含むローカルサイトと、前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含む、リモートサイトとを備える。キャッシュされているデータ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ホストコンピュータは、各キャッシュされたファイルが前記ローカルサイトにおいて結果を生じるようにデータ処理を実行する。キャッシュされていない前記データ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ホストコンピュータは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成し、前記ファイルリスト及び前記データ処理のための処理プログラムを、前記リモートサイトの前記サロゲート処理コンピュータに送信する。前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記ホストコンピュータは、前記リモートサイトで実行された前記ファイルリストのデータについての前記データ処理の結果を受信する。前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記ホストコンピュータは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信する。
【０００８】
０００８    ある実施形態では、前記ホストコンピュータは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行され、かつ前記リモートサイトから受信されたデータ処理の結果とマージするように構成された、処理委譲モジュールを含む。前記サロゲート処理コンピュータは、前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的であるか否かを判断するように構成され、ＹＥＳの場合は、前記サロゲート処理コンピュータは、前記ファイルリストのデータについて前記データ処理を実行し、前記データ処理の結果を前記ホストコンピュータに戻し、ＮＯの場合は、前記サロゲート処理コンピュータは、未処理データの前記未処理ファイルリストを、前記ローカルサイトにおける前記未処理ファイルリストのデータ処理のために前記ホストコンピュータに戻し、前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を戻す。前記サロゲート処理コンピュータは、仮想コンピュータをエミュレートする仮想マシンモニタプログラムを含み、前記ホストコンピュータは、前記処理プログラムと、前記リモートサイトで処理されるべきファイルの前記ファイルリストとを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを、前記リモートサイトの前記サロゲート処理コンピュータに送信する。
【０００９】
０００９    特定の実施形態では、前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理を実行するように、前記サロゲート処理コンピュータの仮想マシンをブートするために、前記仮想マシンモニタリングプログラムを実行する。前記ホストコンピュータは、前記リモートサイトにおける第１データ処理のために第１回目に前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージの異なる部分を送信する。前記仮想マシンイメージは、サロゲートプログラムを含み、前記サロゲート処理コンピュータは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のための前記受信された処理プログラムを実行するために前記サロゲートプログラムを実行する。
【００１０】
００１０    本発明の他の態様は、ホストコンピュータに結合されたキャッシュファイルサーバを有するローカルサイトと、前記ローカルサイトから遠く離れて配置されて、かつ前記ローカルサイトに結合されるとともに、サロゲート処理コンピュータに結合されたリモートファイルサーバを含むリモートサイトとを含む、情報システムのホストコンピュータを対象とする。前記ホストコンピュータは、プロセッサと、メモリと、処理モジュールと、ソートモジュールと、処理委譲モジュールとを備える。キャッシュされているデータ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記処理モジュールは、前記ローカルサイトにおいて結果を生じさせるために、キャッシュされた各ファイルについてデータ処理を実行するように構成される。キャッシュされていない前記データ処理要求のためのデータの１つ以上のファイルの各ファイルについて、前記ソートモジュールは、前記リモートサイトで処理されるべき、キャッシュされていないファイルのファイルリストを作成するように構成され、前記処理委譲モジュールは、前記ファイルリスト及び前記データ処理のための処理プログラムを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成される。前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的である場合は、前記処理委譲モジュールは、前記リモートサイトで実行される前記ファイルリストのデータについての前記データ処理の結果を受信するように構成される。前記リモートサイトの前記サロゲート処理コンピュータによって前記データ処理が実行されることが十分に効果的でない場合は、前記処理委譲モジュールは、前記リモートサイトから未処理データの未処理ファイルリストを受信し、前記ローカルサイトにおいて前記未処理ファイルリストのデータ処理を実行し、かつ前記リモートサイトで既に実行された前記ファイルリストのデータについての前記データ処理のあらゆる結果を受信するように構成される。
【００１１】
００１１    ある実施形態では、前記処理委譲モジュールは、前記ローカルサイトで実行されたデータ処理の前記結果を、前記リモートサイトで実行されかつ前記リモートサイトで受信されたデータ処理の前記結果とマージするように構成される。前記処理委譲プログラムは、前記処理プログラム及び前記リモートサイトで処理されるべきファイルの前記ファイルリストを含む仮想マシンイメージを作成し、前記ファイルリスト及び前記処理プログラムを含む前記仮想マシンイメージを前記リモートサイトの前記サロゲート処理コンピュータに送信するように構成される。前記処理委譲プログラムは、前記リモートサイトにおける第１データ処理のために第１回目に、前記サロゲート処理コンピュータに前記仮想マシンイメージを送信し、前記リモートサイトにおける第２データ処理のために、前記第１回目に続く第２回目に、前記仮想マシンイメージの異なる部分を前記サロゲート処理コンピュータに送信するように構成される。前記仮想マシンイメージは、前記リモートサイトにおける前記ファイルリストのデータのデータ処理のために前記受信された処理プログラムを実行するために、前記サロゲート処理コンピュータによって実行されるべきサロゲートプログラムを含む。
【００１２】
００１２    本発明の上記及びその他の特徴及び効果は、特定の実施形態についての以下の詳細な説明を考慮することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【００１３】
【図１（ａ）】００１３    図１（ａ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要の一例を示す。
【図１（ｂ）】図１（ｂ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要の一例を示す。
【図１（ｃ）】図１（ｃ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要の一例を示す。
【図１（ｄ）】図１（ｄ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要の一例を示す。
【図１（ｅ）】図１（ｅ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要の一例を示す。
【図２（ａ）】００１４    図２（ａ）は、スタブファイル技術を使用したファイルレベルＨＳＭ（階層型ストレージ管理）の実装の一例を示す。
【図２（ｂ）】図２（ｂ）は、スタブファイル技術を使用したファイルレベルＨＳＭ（階層型ストレージ管理）の実装の一例を示す。
【図３（ａ）】００１５    図３（ａ）は、キャッシュファイルサーバがファイルＩ／Ｏ要求を受信した場合に、ファイルシステムプログラム及びキャッシュ管理プログラムが実行する処理フローの一例を示す。
【図３（ｂ）】００１６    図３（ｂ）は、キャッシュファイルサーバがディレクトリについてのＩ／Ｏ要求を受信した場合に、ファイルシステムプログラム及びキャッシュ管理プログラムが実行する処理フローの一例を示す。
【図４】００１７    図４は、第１の実施形態に従ったデータ処理フローの一例を示す。
【図５（ａ）】００１８    図５（ａ）は、第２の実施形態に従った情報システムの一例を示す。
【図５（ｂ）】図５（ｂ）は、第２の実施形態に従った情報システムの一例を示す。
【図５（ｃ）】図５（ｃ）は、第２の実施形態に従った情報システムの一例を示す。
【図６】００１９    図６は、第２の実施形態に従ったデータ処理フローの一例を示す。
【発明を実施するための形態】
【００１４】
００２０    以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態が実例として（但し限定ではない）示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する（以下に説明し、かつ図面で示される通り）が、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一つの実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしないように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ／又はブロック図において図示している場合もある。
【００１５】
００２１    さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様に関して示されている。これらのアルゴリズム記述及び象徴的な態様は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相当量の物理的操作を必要とする。通常は（必ずしもそうではないが）、当該数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、要素、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
【００１６】
００２２    本発明は、本明細書における動作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等（但し、これらに限定されない）のコンピュータ読取可能記憶媒体に格納され得る。本明細書において示されるアルゴリズム及び（情報）提示は、特定のコンピュータ又はその他の装置に本質的に関係しているわけではない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラによって実行され得る。
【００１７】
００２３    以下により詳細に示す本発明の例示的実施形態は、複数のリモートファイルストレージシステムにおけるデータ処理のための装置、方法及びコンピュータプログラムを提供する。
【００１８】
００２４    第１の実施形態
【００１９】
００２５    Ａ．     システム構成
【００２０】
００２６    図１（ａ）〜（ｅ）は、本発明の方法及び装置が第１の実施形態に従って適用され得る情報システム概要１００の一例を示す。図１（ａ）に示されるように、情報システム１００は、ローカルサイト１１０とリモートサイト１１１とを含む。ローカルサイト１１０は、ユーザがデータを物理的に使用し、かつデータを処理することを望むサイトである。ローカルサイト１１０は、１台以上のホストコンピュータ１４０と、キャッシュファイルサーバ１６０と、これらを接続するローカルネットワーク１５１とを含む。リモートサイト１１１は、ユーザデータが格納されている遠隔地に物理的に位置しているサイトである。リモートサイト１１は、１台以上のサロゲート処理コンピュータ１７０と、リモートファイルサーバ１３０と、これらを接続するローカルネットワーク１５２とを含む。ローカルサイト１１０とリモートサイト１１１は、サイト間ネットワーク１５３を介して接続される。
【００２１】
００２７    多様はコンピュータ（ホストコンピュータ１４０、リモートファイルサーバ１３０、キャッシュファイルサーバ１６０、及びサロゲート処理コンピュータ １７０）は各々、ＣＰＵ（中央演算装置）１４１と、メモリ１４２と、ネットワークインタフェース１５０とを備える。ＣＰＵ１４１は、コンピュータのデバイスをメモリ１４２内のプログラムとして制御する。メモリ１４２は、例えばプログラムやバッファキャッシュを含む多種のデータを格納する。ネットワークインタフェース１５０は、ネットワーク１５１及び１５２を介して他のコンピュータと通信するために使用される。
【００２２】
００２８    図１（ｂ）に示されるように、ホストコンピュータ１４０は、情報システム１００のユーザがその業務のためにデータを処理するために使用するものである。ホストコンピュータ１４０は、そのメモリ１４２にプログラム１４３、１４４、１４５、及び１４６、並びリスト１４７を有する。ネットワークファイルシステムクライアントプログラム１４３は、ファイルＩ／Ｏ要求をネットワークインタフェース１５０を介してキャッシュファイルサーバ１６０に発行するためにＣＰＵ１４１によって実行され、ホストコンピュータ１４０がキャッシュファイルサーバ１６０のファイルにアクセスすることを可能にする。処理プログラム１４４は、ユーザが行いたいこと（例えば、テキスト検索、ウィルススキャン、文書の編集など）を記述するプログラムである。ソートプログラム１４５は、キャッシュファイルサーバ１６０のキャッシュステータス情報ＡＰＩプログラム１６２と通信するためにＣＰＵ１４１によって実行され、ターゲットデータがローカルサイト１１０又はリモートサイト１１１のどちらで処理されるかを判断する。処理委譲プログラム１４６は、処理プログラム１４４及びファイルリスト１４７をリモートサイト１１１のサロゲート処理コンピュータ１７０に送信し、かつサロゲート処理コンピュータ１７０から結果を受信するために、ＣＰＵ１４１によって実行される。ファイルリスト１４７は、リモートサイト１１１で処理されるべきファイルのリストである。
【００２３】
００２９    図１（ｃ）に示されるように、リモートサイト１１１のリモートファイルサーバ１３０は、ユーザのファイルデータを格納する。ＣＰＵ１４１は、外部コンピュータからファイルＩ／Ｏ要求を受信し、ネットワークファイル処理プログラム１３４を参照することによってネットワークインタフェース１５０を介して結果を戻す。ＣＰＵ１４１は、ファイルＩ／Ｏ要求を処理し、ファイルシステムプログラム１３５を参照することによって、ストレージインタフェース１３１を介して接続された記憶媒体１３２又はストレージアレイ１３３から／にデータを読み出す／書き込む。ＦＣ（ファイバチャネル）、ＳＡＴＡ（Serial Attached Technology Attachment）、ＳＡＳ（Serial attached SCSI）、ＩＤＥ（Integrated Device Electronics）、又は他のインタフェースは、ＣＰＵ１４１とストレージインタフェース１３１の間の通信のために使用される。リモートファイルサーバ１３０は、多種の記憶媒体１３２（ＨＤＤ（ハードディスクドライブ）、ＳＳＤ（ソリッドステートドライブ）、フラッシュメモリ、光ディスク、磁気テープなど）を備えることができる。ＲＡＩＤ（Redundant Array of Independent Disk）技術によるそれらのアレイは、記憶媒体１３２のためにも利用できる。さらに、外部ストレージアレイ１３３は、内蔵記憶媒体１３２の代わりに使用することができる。ＣＰＵ１４１は、バッファキャッシュ１３６などの他の用途のためにメモリ１４２を使用することができる。このバッファキャッシュ１３６は、記憶媒体１３２へのＩ／Ｏ要求を減らすことによって高速データアクセスを達成するために、記憶媒体１３２のキャッシュデータを格納する。
【００２４】
００３０    図１（ｄ）に示されるように、キャッシュファイルサーバ１６０は、ローカルサイト１１０に存在し、その構造は、リモートファイルサーバ１３０に類似している。キャッシュファイルサーバ１６０は、リモートファイルサーバ１３０に比べて、いくつかの追加プログラム１４３、１６１、及び１６２を備えている。ネットワークファイルシステムクライアントプログラム１４３は、ホストコンピュータ１４０のシステムクライアントプログラム１４３と同じである。キャッシュファイルサーバ１６０は、リモートファイルサーバ１３０にファイルＩ／Ｏ要求を発行するために、このプログラム１４３を使用する。キャッシュ管理プログラム１６１は、キャッシュファイルサーバ１６０がリモートファイルサーバ１３０のためのキャッシュとして動作することを可能にする。キャッシュ管理プログラム１６１を使用することによって、ホストコンピュータ１４０は、リモートファイルサーバ１３０のデータに透過的にアクセスすることができるが、これは、ホストコンピュータ１４０が、キャッシュファイルサーバ１６０にファイルＩ／Ｏ要求を発行するだけでよく、リモートファイルサーバ１３０を意識する必要がないことを意味する。キャッシュステータス情報ＡＰＩ（アプリケーションプログラムインタフェース）プログラム１６２は、ホストコンピュータ１４０がキャッシュのステータスを取得することを可能にする。
【００２５】
００３１    図１（ｅ）に示されるように、サロゲート処理コンピュータ１７０は、リモートサイト１１１に存在し、リモートサイト１１１のデータ処理を担当する。このサロゲートコンピュータ１７０は、ローカルサイト１１０のホストコンピュータ１４０の代わりとしてデータを処理するものである。ネットワークファイルシステムクライアントプログラム１２３は、リモートファイルサーバ１３０にファイルＩ／Ｏ要求を発行するために使用される。サロゲートプログラム１７１は、処理委譲プログラム１４６と通信し、かつ受信された処理プログラム１７２及びファイルリスト１７３を含む委譲要求を受信するために、ＣＰＵ１４１によって実行される。受信された処理プログラム１７２は、リモートサイトで実行されるようにホストコンピュータ１４０によって送信される。ファイルリスト１７３は、ホストコンピュータ１４０によって送信され、リモートサイトで処理されるべきターゲットファイルを列挙する。
【００２６】
００３２    ローカルネットワーク１５１、１５２については、同じサイトのコンピュータは、互いに通信し、Ｉ／Ｏ要求を発行し、ネットワークインタフェース１５０を使用することによってローカルネットワーク１５１及び１５２を介してデータ処理要求を発行する。ローカルネットワーク１５１及び１５２もまた、異なるサイトのコンピュータが互いに通信できるように双方向に結合される。ＮＦＳ（ネットワークファイルシステム）、ＣＩＦＳ（Common Internet File System）、及びＡＦＰ（Apple Filing Protocol）などのネットワークを介したファイルＩ／Ｏ要求インタフェースのための共通プロトコルがいくつか存在する。
【００２７】
００３３    Ｂ．     ファイルレベル階層型ストレージ管理
【００２８】
００３４    本実施形態は、ファイルレベルＨＳＭ（階層型ストレージ管理）を使用することによるファイル単位キャッシュ管理方法の一例を示すが、本発明は、ファイルレベルＨＳＭに基づく方法に限定されない。他のファイル単位キャッシュ管理方法は、本実施形態にも利用できる。
【００２９】
００３５    一般に、ＨＳＭは、異なる特性を有する複数の記憶媒体を使用するための技術である。ＨＳＭが可能なストレージシステムは、各データがどの記憶媒体上に格納されているかをユーザが認識する必要がないように、データ位置を自動的に管理する。ＨＳＭを使用することによって、ユーザは、頻繁にアクセスされるデータを高速だが高価な記憶媒体に、頻繁にアクセスされないデータを低速だが安価な媒体に配置することができる。よって、ユーザは、記憶媒体のための総費用を削減し、合理的な性能を得ることができる。
【００３０】
００３６    ファイルレベルＨＳＭは、ＨＳＭの一種である。ファイルレベルＨＳＭ技術は、ファイル単位で異なる記憶媒体にデータを分配する。ファイルレベルＨＳＭのいくつかの実装は、ファイルデータを他のいずれかの外部ファイルストレージシステムに配置することができる。この特性は、ファイル単位キャッシュ管理を実施するために使用されることができる。
【００３１】
００３７    本実施形態は、ファイルデータを他のいずれかの外部ファイルストレージシステムに配置する、最後の種類のファイルレベルＨＳＭに焦点を当てる。本実施形態では、キャッシュ管理プログラム１６１がこのようなファイルレベルＨＳＭの機能を使用することを想定する。
【００３２】
００３８    図２（ａ）及び２（ｂ）は、スタブファイル技術を使用したファイルレベルＨＳＭの実装の一例を示す。「スタブファイル」とは、基本的にファイルのデータを有さず、外部ファイルサーバ上に格納されたデータの位置を示す仮想ファイルである。スタブファイルは、データの一部分又は全体をキャッシュとして有してもよい。ＨＳＭファイルシステム２００のファイルツリーは、ＨＳＭファイルサーバ１３０がクライアントに示すＨＳＭファイルシステムの階層を示す。ファイルツリー２００は、ルート２１０及びサブディレクトリ２１１、２１２、２１３を有し、各ディレクトリは、ファイル２２１、２２２、２２３、又は２２７などのいくつかのファイルを有する。各パス位置は、各ディレクトリ名とファイル名をスラッシュで区切ったパス名で示される。例えば、ファイル２２１のパス名は、「/root/dirA/file1」である。ＨＳＭファイルシステム自体は、通常のファイルシステムとして使用されることができる。ファイル２２１、２２２、及び２２３は、クライアントがパス名（「/root/dirA/file1」、「/root/dirA/file2」、及び「/root/dirA/file3」など）を指定することによって読み出す／書き込むことができるように、通常のファイルである。ファイル２２４、２２５、及び２２６は、ＨＳＭ特性の例である。ＨＳＭファイルシステム２００は、このようなファイルのデータのいくつかの部分をその内蔵記憶媒体１３２に格納する。例えば、ＨＳＭファイルシステム２００は、ファイル名及びメタデータ（ファイル作成時間又はアクセス制御情報など）のみを格納するが、それらのデータは格納しない。ファイルのデータ全体を有する代わりに、ＨＳＭファイルシステムは、ファイルデータの位置に関する情報を格納する。
【００３３】
００３９    図２（ｂ）は、このようなスタブファイル２２４の構造例を示す。ファイルメタデータ２７０は、各ファイルのメタデータを格納する。ファイルメタデータ２７０は、ファイルがスタブであるか又はそうでないか（通常ファイル）を示すエントリ２８１を有する。ファイルがスタブである場合は、ファイルメタデータ２７０は、対応するスタブ情報２７１を有する。ファイルがスタブではない場合は、ファイルメタデータ２７０は、ファイルシステムユーザのために十分な情報２８３、２８４、及び２８５に提供するように満たされなければならない。ファイルがスタブである場合は、パス名、及びファイルがスタブであるか否かの状態を特定するために、エントリ２８１及びファイル名２８２のみが必要とされる。スタブファイルの他のエントリ２８３、２８４、及び２８５は格納されても格納されなくてもよい。なぜならば、ファイルシステムプログラム１２４は、対応するスタブ情報２７１及び外部ファイルサーバを参照することによって、このようなメタデータを取得することができるからである。スタブ情報２７１は、ファイルデータの実際の位置を示す。この例では、スタブ情報２７１は、外部サーバ名２８６、外部ファイルサーバ内のファイルシステム名２８７、及びファイルシステム上のパス名２８８を特定することによって位置を示す。実際のファイルは、ＨＳＭファイルシステムのパス名と同じパス名を有する必要はない。例えば、スタブファイル２２４は、パス名「/root/dirB/file4」を有するが、実ファイル２４６（ファイルシステムＡ２３１に格納される）は、「/root/dirD/file10」となる。ファイルメタデータ２７０は、ファイルデータの部分ごとに複数のスタブ情報２７１を有し得る。これによって、複数のファイルサーバ間でのファイルデータの分配と、外部ファイルサーバへの当該データの一部のみの格納が可能になる。ファイルがスタブであっても、ＨＳＭファイルサーバ１３０は、より高速に応答するために外部ファイルサーバとの通信を減らすために、ファイルデータの一部又はデータ全体を内蔵記憶媒体１３２のキャッシュとして維持することができる。
【００３４】
００４０    キャッシュファイルサーバ１６０は、「リコール」及び「移動」によってファイルをスタブに、かつスタブをファイルに変換できる。「リコール」は、スタブ情報で指定される外部ファイルサーバから実ファイルデータを読み出すためのプロセスである。データ全体を読み出した後で、キャッシュファイルサーバ１６０は、スタブをファイル全体で置き換えることができる。「移動」とは、ファイルデータを外部ファイルサーバにコピーし、スタブ情報を作成し、バックエンドネットワーク１５２を介してファイルをスタブに変換するための逆のプロセスである。
【００３５】
００４１    ディレクトリ２１３「/root/dirC」は、スタブファイルとして扱うことができる。この状況では、ＨＳＭファイルシステム ２００は、下のファイル２２７、２２８、及び２２９についての情報を有さなくてもよい。クライアントがディレクトリ２１３の下のファイルにアクセスした場合に、ＨＳＭファイルシステム２００は、ディレクトリ２５４に実際に格納されたファイル２２７、２２８、及び２２９を有するように作動し、このディレクトリ２５４は、ファイルシステムＢ２３２内に存在する。なぜならば、ディレクトリ２５４は、かかる３つのファイル２４７、２４８、及び２４９を有するからである。 
【００３６】
００４２    図３（ａ）は、キャッシュファイルサーバ１６０がファイルＩ／Ｏ要求を受信した場合に、ファイルシステムプログラム１３５及びキャッシュ管理プログラム１６１が実行する処理フロー３００の一例を示す。最初に、キャッシュファイルサーバ１６０は、要求されたファイルがスタブであるか否かを確認するために情報を調べる（ステップ３０５）。ファイルがスタブでない場合は、キャッシュファイルサーバ１６０は、通常のファイルサーバ（ステップ３１０）として要求を処理する。ファイルがスタブである場合は、キャッシュファイルサーバ１６０は、必要に応じて、外部ファイルサーバからファイルデータをリコールする（ステップ３１５）。クライアントが「読み出し」Ｉ／Ｏを要求した場合、キャッシュファイルサーバ１６０は、キャッシュファイルサーバ１６０が実データを有しないので、データをリコールしなければならない。クライアントが既存ファイルを上書きした場合、キャッシュファイルサーバ１６０は、クライアントがデータを送信するので、データをリコールする必要はない。「リコールするか否か」は、操作タイプ（読み出し又は書き出し）、データ範囲、及びユーザのポリシーによって異なる。リコールの後で、キャッシュファイルサーバ１６０は、通常のようにＩ／Ｏ要求を処理する（ステップ３２０）。最後に、キャッシュファイルサーバ１６０は、再びファイルを外部サーバに移動してもよい（ステップ３２５）。
【００３７】
００４３    図３（ｂ）は、キャッシュファイルサーバ１６０がディレクトリについてのＩ／Ｏ要求を受信した場合に、ファイルシステムプログラム１３５及びキャッシュ管理プログラム１６１が実行する処理フロー３５０の一例を示す。最初に、キャッシュファイルサーバ１６０は、要求されたディレクトリがスタブであるか否かを確認するために調べる（ステップ３５５）。ディレクトリがスタブである場合は、キャッシュファイルサーバ１６０は、外部ファイルサーバからディレクトリエントリデータをリコールする（ステップ３６０）。その後で、キャッシュ管理プログラム１６１は、必要に応じて、外部ファイルサーバのディレクトリエントリ及びメタデータを読み出すことによって、そのディレクトリの下のファイルのためのスタブを作成する（ステップ３６５）。ステップ３６０及びステップ３６５によって、キャッシュ管理プログラム１６１は、当該ディレクトリの下のファイルに関する情報を有し、クライアントは、これらのファイルを調べることができる。ここでディレクトリはスタブではないため、キャッシュ管理プログラム１６１は通常のファイルシステムとして要求を処理する（ステップ３７０）。クライアントが、親ディレクトリがスタブであるファイルについてＩ／Ｏ要求を発行した場合、キャッシュ管理プログラム１６１は、ターゲットファイルにアクセスするためにフロー３５０のように親ディレクトリをリコールする。
【００３８】
００４４    これらのＩ／Ｏフロー３００及び３５０によって、キャッシュファイルサーバ１６０は、クライアントが１つのキャッシュファイルサーバ１６０にアクセスするだけで、複数の外部ファイルサーバの中のファイルにアクセスできるように、クライアント用の外部ファイルサーバを隠す。
【００３９】
００４５    Ｃ．     キャッシュ情報及び処理委譲を用いたデータ処理
【００４０】
００４６    図４は、第１の実施形態に従ったデータ処理フロー４００の一例を示す。情報システム１００のユーザによってホストコンピュータ１４０がデータ処理を開始した場合、情報システム１００の構成要素は、このフロー４００を実行する。
【００４１】
００４７    最初に、ホストコンピュータ１４０のソートプログラム１４５は、キャッシュファイルサーバ１６０のキャッシュ管理プログラム１６１と通信し、ターゲットファイルの各々がキャッシュされているか否かを示すステータスを受信する（ステップ４１０）。キャッシュ管理プログラム１６１が上記のようなキャッシュ管理のためのファイルレベルＨＳＭを使用することを想定して、キャッシュ管理プログラムは、ファイルがスタブではない場合には、ファイルがキャッシュされていると判断し、ファイルがスタブである場合には、ファイルがキャッシュされていないと判断することができる。ホストコンピュータ１４０の処理プログラム１４４は、キャッシュファイルサーバ１６０にキャッシュされたファイルに対してユーザの目的のデータ処理を実行する（ステップ４２０）。
【００４２】
００４８    同時に又はその後で、ソートプログラム１４５は、データの長距離転送を防ぐために、キャッシュされておらず、かつリモートサイトで処理されるべきファイル名をリストしたファイルリスト１４７を作成する（ステップ４３０）。ホストコンピュータ１４０の処理委譲プログラム１４６は、処理プログラム１４４及びファイルリスト１４７をリモートサイト１１１のサロゲート処理コンピュータ１７０に送信する（ステップ４４０）。サロゲート処理コンピュータ１７０のサロゲートプログラム１７１は、処理委譲プログラム１４６からデータを受信し、そのメモリ１４２に当該データを、受信された処理プログラム１７２及びファイルリスト１７３として格納する。サロゲートプログラム１７１は、リモートサイト１１１におけるデータ処理が効果的か否かを判断する（ステップ４５０）。いくつかの種類のデータ処理は、ローカルサイト１１０よりもリモートサイト１１１で行うのにより多くの時間がかかる。例えば、サロゲート処理コンピュータ１７０のＣＰＵ１４１は、ホストコンピュータ１４０のＣＰＵよりも遅い。別の例では、ローカルサイト１１０のデータとリモートサイト１１１のデータとの間のデータ比較には、ローカルサイト１１０からリモートサイト１１１へのデータ転送、又は逆方向のデータ転送を必要とする。どちらのデータ転送も時間がかかるため、リモートサイト１１１における処理は効果的でない。
【００４３】
００４９    ステップ４５０の問い合わせの回答がＹＥＳである場合は、サロゲートプログラム１７１は、データ処理のために受信済み処理プログラム１７２を実行する（ステップ４６０）。受信済み処理プログラム１７２は、ファイルリスト１７３にリストされ、かつリモートファイルサーバ１３０に格納されたデータを処理する。この処理には、ローカルネットワーク１５２を介したデータ転送を要求するが、サイト間ネットワーク１５３を介した転送は必要としない。よって、この処理は、長距離転送のための時間があまりかからない。サロゲートプログラム１７１がステップ４５０でＮＯと判断した場合は、サロゲートプログラム１７１は、リモートサイト１１１における未処理データを列挙しているファイルリストを戻す（ステップ４７０）。ローカルサイト１１０におけるホストコンピュータ１４０の処理プログラム１４４は、未処理データについてのデータ処理を実行する（ステップ４８０）。ステップ４２０、４５０、４６０、４７０、及び４８０は、ファイル単位で並行して実行することができる。さらに、サロゲートプログラム１７１は、ステップ４５０及び４８０で前のデータを処理した結果の情報を使用することができる。例えば、サロゲートプログラム１７１がリストされたファイルの１０％を処理した後で、サロゲートプログラム１７１は、データの時間処理１０％を測定し、リモートサイト１１１で残りの９０％を処理することがより高速か否かを判断する。これらのステップの後で、処理委譲プログラム１４６は、ステップ４２０、４６０、及び４８０の結果をマージする（ステップ４９０）。マージされた結果は最終的なものである。
【００４４】
００５０    本実施形態は、複数のサイト間で処理されるべきファイルデータの転送を減らすが、処理プログラム１４４、ファイルリスト１４７、及び処理された結果の追加の転送を必要とする。一般に、データ処理の結果は、テキスト検索及びウィルススキャンなどのデータ自体よりもサイズが小さい。よって、本実施形態は、ローカルサイトとリモートサイトの間のデータ転送の削減を達成し、かつ全体的な処理時間を減らすことができる。
【００４５】
００５１    第２の実施形態
【００４６】
００５２    第１の実施形態は、サロゲート処理コンピュータ１７０が複数のホストコンピュータ１４０の同じプログラムを実行することを必要とする。それらが異なるＣＰＵアーキテクチャ、異なるオペレーティングシステム、又は異なるライブラリを使用している場合に、上記要件を満たすことはできない。第２の実施形態は、仮想マシン技術を使用することによってこの要件を満たす。
【００４７】
００５３    図５（ａ）〜５（ｃ）は、第２の実施形態に従った情報システム５００の一例を示すものであり、この情報システム５００は、ホストコンピュータ５４０及びサロゲートコンピュータ５７０が異なる点以外は図１のシステム１００と類似している。ホストコンピュータ５４０は、図１のホストコンピュータ１４０と類似しているが、サロゲートプログラム１７１、処理プログラム１４４、及びファイルリスト１４７を含む仮想マシンイメージ５４１を有する（図５（ｂ））。サロゲートコンピュータ５７０は、図１のサロゲートコンピュータ１４０と類似しているが、仮想マシンイメージ５４１及び仮想マシンモニタプログラム５７１を有する（図５（ｃ））。
【００４８】
００５４    Ａ.        仮想マシンモニタ
【００４９】
００５５    仮想マシン（ＶＭ）技術は、最近のコンピューティングシステムで広く使用されている。この技術は、異なる種類のＣＰＵ、メモリ、及び他の構成要素を有する場合がある仮想コンピュータをエミュレートする。この技術によって、情報システムのユーザは、異なるコンピュータで異なる種類のオペレーティングシステム及びプログラムを実行することができる。米国特許第７，１１７，４９９号は、このような技術の一例を開示し、その全体を参照することにより本明細書に組み込まれている。仮想マシンモニタ（ＶＭＭ）５７１は、仮想コンピュータをエミュレートするこのようなプログラムである。ＶＭＭ５７１は、メモリ１４２内の仮想マシンイメージ５４１にアクセスし、エミュレートされた仮想コンピュータ上の仮想マシンイメージ５４１に格納されたオペレーティングシステム及びプログラムを実行する。
【００５０】
００５６    ＶＭＭの多くの公知の実装が存在する。ＶＭＭの一例は、ハードウェアを仮想化し、ＶＭＭ上のＶＭは、それらが実際のハードウェア上にあるかのように動作し（実際には仮想化されている）、その上でそれらのＯＳ及びアプリケーションを実行する。しかし、ＶＭが何らかの種類のハードウェアリソース（ＣＰＵ上の特別なレジスタ、メモリ上のページテーブル、ＡＣＰＩ（Advanced Configuration and Power Interface）情報、及びＰＣＩ（Peripheral Component Interface）のためのマップされたメモリ領域など）にアクセスした場合に、又はＶＭが割込を引き起こした場合に、ＶＭＭは、アクセスをトラップし、動作をエミュレートし、実ハードウェアが行うように応答する。このアクションは、実際のハードウェア構成をＶＭから隠し、ＶＭが仮想化ハードウェア上でそれ自身のＯＳ及びアプリケーションを実行することを可能にする。
【００５１】
００５７    Ｂ.        キャッシュ情報及び処理委譲を用いたデータ処理
【００５２】
００５８    図６は、第２の実施形態に従ったデータ処理フロー６００の一例を示す。情報システム５００のユーザによってホストコンピュータ５４０がデータ処理を開始した場合、情報システム５００の構成要素は、このフロー５００を実行する。
【００５３】
００５９    このフロー６００は、図４のフロー４００とほぼ同じであるが、ステップ４３０とステップ４５０の間の異なる処理ステップを含む。図６のステップ４３０の後で、ホストコンピュータ５４０の処理委譲プログラム１４６は、ステップ４３０でリストされたファイルリスト１４７及び処理プログラム１４４を含むＶＭＩ５４１を生成する（ステップ６３５）。このＶＭＩ５４１は、ＣＰＵアーキテクチャ、オペレーティングシステム、及びライブラリに関してホストコンピュータ５４０と同じ処理環境を含む。次に、処理委譲プログラム１４６は、サイト間ネットワーク１５３を介してＶＭＩ５４１をサロゲート処理コンピュータ５７０に送信する（ステップ６４０）。ＶＭＩ５４１は、オペレーティングシステム及びライブラリのための大量のデータを含むので、大きい場合がある。ユーザがデータを繰り戻し処理すると想定すると、ホストコンピュータ５４０が第１回目にＶＭＩ５４１全体を送信し、第２回目にＶＭＩ５４１の異なる部分を送信することによって、データ転送を減らすことは有用な方法である。サロゲート処理コンピュータ５７０のＶＭＭプログラム５７１は、ＶＭＩ５７１から仮想マシンをブートする（ステップ６４５）。ＶＭは、サロゲートプログラム１７１が図４のフロー４００を実行するように、図６のステップ４５０、４６０、及び４７０を実行する。
【００５４】
００６０    サロゲート処理コンピュータ５７０がホストコンピュータ５４０のＣＰＵアーキテクチャ、オペレーティングシステム、又はライブラリとは異なるＣＰＵアーキテクチャ、オペレーティングシステム、又はライブラリを備えていたとしても、本実施形態は、システムが、ローカルサイト５１０の全データを処理するよりも短い時間でデータを処理することを可能にする。
【００５５】
００６１    当然のことながら、図１及び図５に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のＩ／Ｏ装置（例えば、ＣＤ及びＤＶＤドライブ、フロッピー（登録商標）ディスクドライブ、ハードドライブ等）も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク（例えば、インターネット）、無線ネットワーク、ストレージエリアネットワーク等を含む。
【００５６】
００６２    説明では、本発明を徹底的に理解できるようにするために説明する目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図、構成図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【００５７】
００６３    当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置（ハードウェア）を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体（ソフトウェア）上に記憶された命令を用いて実施してもよく、これがプロセッサによって実行された場合には、本発明の実施形態を実行する方法をプロセッサに実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に分散することができる。ソフトウェアによって実施された場合、上記の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び／又は暗号化形式で命令を媒体に記憶することができる。
【００５８】
００６４    上記により、本発明が、ファイルストレージステムのためのリモートサイトにおけるデータのデータ処理時間を短縮するための方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出されたいかなる構成を用いてもよい。本開示は、本発明のあらゆる適応又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【図１（ｂ）】
2012133772.tif 000003
【図１（ｃ）】
2012133772.tif 000004
【図１（ｄ）】
2012133772.tif 000005
【図１（ｅ）】
2012133772.tif 000006
【図２（ａ）】
2012133772.tif 000007
【図２（ｂ）】
2012133772.tif 000008
【図３（ａ）】
2012133772.tif 000009
【図３（ｂ）】
2012133772.tif 000010
【図４】
2012133772.tif 000011
【図５（ａ）】
2012133772.tif 000012
【図５（ｂ）】
2012133772.tif 000013
【図５（ｃ）】
2012133772.tif 000014
【図６】
2012133772.tif 000015
【図１（ａ）】
2012133772.tif 000016
【外国語明細書】
2012133772000001.pdf