(57)【特許請求の範囲】
【請求項１】
制御部を有するデータ・ストレージ・システム内のデータを読み込む方法であって、
ホストからローカル・ストレージへの読み込みコマンドを受信するステップと、
前記読み込みコマンドで要求されたデータのボリューム・タイプを判別するステップと、
前記ボリューム・タイプが静的である場合に、前記ローカル・ストレージ内のローカル・ディスクからデータを読み込むステップと、
前記ボリューム・タイプがキャッシュの場合に、データが前記ローカル・ディスクに格納されているかどうかを調べるステップと、
前記データが前記ローカル・ディスクに格納されている場合に、前記ローカル・ディスクからデータを読み込むステップと、
前記データが前記ローカル・ディスクに格納されていない場合に、リモート・サービス・プロバイダ・サイトからデータを読み込み、前記データをローカル・ディスクに格納し、前記ローカル・ディスクから前記データを読み込むステップと、
前記ローカル・ディスクからデータを読み込んだ後に、前記読み込みコマンドに関係する統計情報であって、前記ローカル・ストレージのアクセス履歴情報を含む統計情報を更新するステップと、
前記データを前記ホストに返すステップと、
を前記制御部が実行する方法。
【請求項２】
制御部を有するデータ・ストレージ・システム内にデータを書き込む方法であって、
ホストからローカル・ストレージへの書き込みコマンドを受信するステップと、
前記書き込みコマンドのデータのボリューム・タイプを判別するステップと、
前記ボリューム・タイプが静的である場合に、前記ローカル・ストレージ内のローカル・ディスクに前記データを書き込むステップと、
前記ボリューム・タイプがキャッシュの場合に、前記データが前記ローカル・ディスクに格納されているかどうかを調べるステップと、
前記データが前記ローカル・ディスクに格納されている場合に、キャッシュを介して前記ローカル・ディスクに前記データを書き込むステップと、
前記データが前記ローカル・ディスクに格納されていない場合に、前記ローカル・ディスクと前記キャッシュ内にデータ領域を割り当てて、前記データを前記キャッシュから前記ローカル・ディスクに書き込むステップと、
前記データのボリューム・タイプが同期かどうかを調べるステップと、
前記ボリューム・タイプが同期の場合に、前記データをリモート・サービス・プロバイダ・サイトと即座に同期させ、前記書き込みコマンドに関係する統計情報であって、前記ローカル・ストレージのアクセス履歴情報を含む統計情報を更新するステップと、
前記ボリューム・タイプが同期でない場合に、前記データをリモート・サービス・プロバイダ・サイトと所定のスケジュールに基づいて同期させ、前記書き込みコマンドに関係する統計情報を更新するステップと、
を前記制御部が実行する方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ・ストレージ・システムに関し、より詳細には、ユーザ・サイトに仮想ボリューム・データ・ストレージを備えるシステムと方法に関する。
【０００２】
【従来の技術】
大規模なデータ・ストレージ・システムを管理することは非常に困難である。通常、データ・ストレージ・サービス・プロバイダは、ストレージ・ボリューム、データ・バックアップなどを実施するストレージ関連サービスを提供する。ユーザ・サイトから、ユーザがストレージ・サービス・プロバイダのディレクトリ経由でこのストレージに接続する場合、ユーザは、長距離接続を利用してこのストレージに接続する必要がある。このプロセスは、ユーザがローカル・ストレージに接続する場合に比べて遅延時間が長くなる。
【０００３】
World Wide Web（ＷＷＷ）は、広い地域でストレージ・システムとして効果的な働きをする。ユーザは、ユーザ・サイトにプロキシ・サーバを配備することができる。当業者には周知のように、プロキシ・サーバはクライアント・アプリケーション（Ｗｅｂブラウザなど）とリモート・サーバとの間に置かれるサーバである。プロキシ・サーバは、リモート・サーバ上で利用できるアイテムをキャッシュする機能を備える。プロキシ・サーバは、リモート・サーバに送られるすべての要求を横取りし、プロキシ・サーバ側でその要求を遂行できるかどうかを調べる。プロキシ・サーバ側でその要求を遂行できなければ、プロキシ・サーバはその要求をリモート・サーバに転送し、リモート・サーバに処理させる。プロキシ・サーバは、リモート・サーバ又はサイトから送られたキャッシュ・データを読み込むことができるだけであって、リモート・サーバ又はサイトへの書き込み手順をサポートしているわけではない。さらに、プロキシ・サーバでは、データの特徴に依存するサービスを提供することもできない。そのため、プロキシ・サーバでは、資源を効果的に利用することができず、またプロキシ・サーバを使用した場合、ローカル・ストレージを使用した場合に比べて遅延時間が長くなる。
【０００４】
米国特許第5,155,835号では、マルチレベルの階層型動的マッピング・データ・ストレージ・サブシステムを開示している。この特許では、ワイド・エリア・ネットワーク（ＷＡＮ）間のストレージ・システムを開示しておらず、アクセス・インタフェース・タイプ（ブロック又はファイルといったもの）、目的（ユーザ・データ又はシステム・ファイル又はバックアップ・ファイルといったもの）などのデータの特徴を無視している。したがって、この引用で開示されているサブシステムは不効率である。
【０００５】
インターネット・プロトコル小型コンピュータ用周辺機器インタフェース（ｉＳＣＳＩ）では、ネットワーキング・インフラにインターネット・プロトコル（ＩＰ）を利用し、既存のローカル・エリア・ネットワーク及び／又はワイド・エリア・ネットワーク上で大量のブロック・ストレージ（ＳＣＳＩ）データを素早く転送する。ｉＳＣＳＩ（ＩＰ  ＳＡＮ）では、すべての主要ネットワーキング・プロトコルをサポートできるため、企業全体のネットワーク・アーキテクチャを統一でき、それにより、全体のネットワーク・コスト及び複雑度を低減できる。信頼性を保証するために、ｉＳＣＳＩではＩＰネットワーク用に開発された周知のネットワーク管理ツール及びユーティリティを使用できる。たとえば、ｉＳＣＳＩプロトコルは、Ｗｅｂサイト（http://www.ece.cmu.edu/~ips/index.html）のＩＰストレージ・セクション（http://www.ece.cmu.edu/~ips/Docs/docs.html）で説明されている。
【０００６】
ＩＥＴＦ（Internet Engineering Task Force）の作業グループはhttp://www.ietf.orgで、ネットワーク・ファイル・システム（ＮＦＳ）バージョン３（ＩＥＴＦのｒｆｃ１８１３）及び共通のインターネット・ファイル・システム（ＣＩＦＳ）プロトコル（http://www.cifs.org）を提供している。
【０００７】
ＮＦＳは、オープン・オペレーティング・システムであり、このＯＳを利用すればすべてのネットワーク・ユーザが異なる種類のコンピュータに格納されている共有ファイルにアクセスできる。ＮＦＳでは、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）の上位で実行される仮想ファイル・システム（ＶＦＳ）と呼ばれるインタフェースを通じて共有ファイルにアクセスできる。ＮＦＳを使用すると、ネットワークに接続されているコンピュータをクライアントとして動作させながらリモート・ファイルにアクセスし、サーバとして動作させながらリモート・ユーザによるローカル共有ファイルへのアクセスを可能にできる。
【０００８】
ＣＩＦＳプロトコルは、数百万台のコンピュータに一度にリモート・ファイルにアクセスできるようにする標準を定めるものである。ＣＩＦＳでは、プラットフォームもコンピュータも異なるユーザでも、新規ソフトウェアをインストールすることなくファイルを共有できる。ＣＩＦＳは、ＴＣＰ／ＩＰ上で実行されるが、ファイル及びプリンタ・アクセス用にMicrosoft Windows（登録商標）にあるサーバ・メッセージ・ブロック（ＳＭＢ）プロトコルを使用する。したがって、ＣＩＦＳでは、すべてのアプリケーション（Ｗｅｂブラウザを含む）がインターネット上のファイルを開き、共有することができる。
【０００９】
Ｗｅｂサイトhttp://www.cnt.com及びhttp://www.san.comには、ストレージ又はストレージ・エリア・ネットワーク（ＳＡＮ）にワイド・エリア・ネットワークを接続する方法についての説明がある。ＷＡＮ接続は、非同期転送モード（ＡＴＭ）、同期光ネットワーク（ＳＯＮＥＴ）などが考えられる。
上記の引用では、ストレージ・システムとホスト・デバイスとの間の階層型管理手法を実現する方法を開示していない。
【００１０】
従来の方法とシステムの上述の欠陥を克服するシステムと方法が必要である。さらに、アクセス・サービス・プロバイダが信頼できるストレージ・システムを備えることができ、またユーザがストレージ・システムに素早くアクセスできるシステムと方法も必要である。さらに、アクセス・サービス・プロバイダがユーザ統計データ及びユーザ・ログ・データに基づいてローカル・ストレージ・システムをチューニングできるシステムと方法も必要である。
【００１１】
【発明が解決しようとする課題】
本発明は、ユーザ・サイトに信頼性の高い仮想ローカル・ストレージを使いやすい形で実現することができる。本発明はさらに、ユーザ向けの高速なアクセスを可能にする仮想ローカル・ストレージを使いやすい形で実現することができる。本発明はさらに、ローカル・ストレージで追跡されるユーザ統計データ及びユーザ・ログ・データを使用してローカル・ストレージをサービス・プロバイダ側で使いやすい形でチューンアップできるようにし、サービス・プロバイダはこのようなチューニング・サービスについてユーザに課金できる。
【００１２】
【課題を解決するための手段】
本発明の一実施形態では、サービス・プロバイダはワイド・エリア・ネットワーク経由でデータ・ストレージ・サービスを提供することができる。仮想ボリューム・ストレージはユーザ・サイトに配備される。ユーザ・サイトのホストは、仮想ボリューム・ストレージを使用することによりサービス・プロバイダ・サイトに配置されているサービス・プロバイダ・ストレージにアクセスできる。仮想ボリューム・ストレージを利用すると、ユーザはユーザ・サイトとサービス・プロバイダ・サイトの間で結合されているワイド・エリア・ネットワークに毎回アクセスする必要がなく便利である。
【００１３】
本発明の一実施形態では、データ・ストレージ・サービスを提供するシステムであって、データ・ストレージ・サービスを提供するように構成されているサービス・プロバイダ・サイト及びサービス・プロバイダ・サイトにワイド・エリア・ネットワーク（ＷＡＮ）により結合されたユーザ・サイトを備え、ユーザ・サイトは仮想ストレージを持つローカル・ストレージを備え、仮想ストレージは同期ボリューム及び非同期ボリュームを備え、ローカル・ストレージは同期ボリューム内に書き込まれたデータをサービス・プロバイダ・サイトに即座に送信し、非同期ボリュームに書き込まれたデータを所定のスケジュールでサービス・プロバイダ・サイトに送信し、データがローカル・ストレージに格納されていない場合にサービス・プロバイダ・サイトからデータを読み込むように構成されているシステムを広範にわたって提示する。
【００１４】
本発明の他の実施形態では、データの特徴に基づいてローカル・ストレージ内のデータを管理する方法を提示する。ローカル・ストレージ内の仮ボリューム・ストレージは、データが静的データかキャッシュされたデータか、同期データか非同期データかを判別する。仮想ボリューム・ストレージはさらに、ストレージ・ボリュームだけでなく、ディレクトリ、ファイル、シリンダ、及び／又はブロック・アドレスでもデータを管理できる。
【００１５】
本発明の他の実施形態では、ユーザ・サイト内のユーザのアクセス活動を追跡する方法を提示する。ユーザ・アクセス活動を記録することで、サービス・プロバイダはユーザ・アクセス活動のパターン分析できる。この分析に基づき、サービス・プロバイダはユーザ・サイト内の仮想ボリューム・ストレージをチューニングできる。
【００１６】
【発明の実施の形態】
以下では、当業者が本発明を実施し使用できるように説明し、また特定のアプリケーションとその要件の文脈において説明を行っている。実施形態のさまざまな修正は、当業者であればたやすく理解できるであろうし、またここで定義している一般的な原理は本発明の精神と範囲を逸脱することなく他の実施形態及びアプリケーションにも適用できる。そこで、本発明は示されている実施形態に限定されるのではなく、ここで開示されている原理、特徴および教示に一致する最も広い範囲を許容するものとする。
【００１７】
本発明による一実施形態では、システム１００はユーザ・サイト１０１、さらに第１のサービス・プロバイダ・サイト１０２及び第２のサービス・プロバイダ・サイト１０３により構成される。ユーザ・サイト１０１の詳細を以下で説明する。システム１００内のサービス・プロバイダ・サイトの数は異なっていてもよい。第１のサービス・プロバイダ・サイト１０２は、ストレージ・ボリューム１２１、１２２、１２３、及び１２４を備え、第２のサービス・プロバイダ・サイト１０３はストレージ・ボリューム１２５、１２６、１２７、及び１２８を備える。サービス・プロバイダ・サイト内のストレージ・ボリュームの数は異なっていてもよい。サービス・プロバイダ・サイト１０２及び１０３は、たとえば、２つの異なる安全な建物内に配置できる。ユーザ・サイト１０１、第１のサービス・プロバイダ・サイト１０２、及び第２のサービス・プロバイダ・サイト１０３はそれぞれ、ワイド・エリア・ネットワーク（ＷＡＮ）１１０に接続されている。サービス・プロバイダ１０２及び１０３は、ＷＡＮ  １１０経由でデータ・ストレージ・サービスをユーザ・サイト１０１のユーザに提供する。
【００１８】
当業者には周知のとおり、ＷＡＮとは、通常比較的広い範囲にわたる地理的領域にまたがるコンピュータ・ネットワークのことである。ＷＡＮはまた、ローカル・エリア・ネットワーク（ＬＡＮ）も含む。ＷＡＮに接続されているコンピュータは、多くの場合、電話システムなどの公衆網を通じて接続される。さらに、専用回線や衛星を通じて接続することもできる。現存最大のＷＡＮはインターネットである。
【００１９】
ＷＡＮ  １１０では、各サイト（ユーザ・サイト１０１とサービス・プロバイダ・サイト１０２及び１０３）の間で通信ができる。各サイト１０１、１０２、及び１０３は、長い距離で互いに隔てられていてよい。ＷＡＮ  １１０は、通常、非同期転送モード（ＡＴＭ）、同期光ネットワーク（ＳＯＮＥＴ）、高密度波長分割多重（ＤＷＤＭ）、又はインターネット・プロトコル（ＩＰ）ネットワークにより構成される。
【００２０】
ユーザ・サイト１０１では、第１のホスト１０４はストレージ・エリア・ネットワーク（ＳＡＮ）１０７を介してローカル・ストレージ１０６に接続され、第２のホスト１０５はローカル・エリア・ネットワーク（ＬＡＮ）１０８を介してローカル・ストレージ１０６に接続されている。ホスト１０４及び１０５はローカル・ストレージ１０６にアクセスする。ホスト１０４及び１０５は、たとえば、サーバである。ユーザ・サイト１０１内のホストの数は異なっていてもよい。ＬＡＮ  １０８は、たとえば、ルータ１０９を介してＷＡＮ  １１０に接続されている。本発明の教示から、ＳＡＮ  １０７又はＬＡＮ  １０８のいずれか１つ、又はＳＡＮ  １０７及びＬＡＮ  １０８の両方を含むようにユーザ・サイト１０１を実装することができることを当業者は理解するであろう。
【００２１】
当業者には周知のように、ＳＡＮは共有ストレージ・デバイスの高速サブネットワークであり、ＳＡＮによりＬＡＮ又はＷＡＮ内のすべてのサーバからすべてのストレージ・デバイスが利用可能である。ＳＡＮにさらにストレージ・デバイスを追加すると、その追加されたストレージ・デバイスも、さらに大きなネットワーク内の任意のサーバからアクセスできるようになる。
【００２２】
ＳＡＮ  １０７は、たとえば、ファイバ・チャネル又は小型コンピュータ用周辺機器インタフェース（ＳＣＳＩ）で構成できる。当業者には周知のように、ファイバ・チャネルはコンピュータ及び大容量記憶デバイス製造業者のコンソーシアムが開発したシリアル・データ転送アーキテクチャであり、現在は、米国規格協会（ＡＮＳＩ）によって標準化されている。最も有名なファイバ・チャネル標準は、Fibre Channel Arbitrated Loop（ＦＣ−ＡＬ）で、新しい大容量記憶デバイスや非常に高い帯域幅を必要とするその他の周辺機器用に設計されている。光ファイバでデバイスを接続するＦＣ−ＡＬは、全二重データ転送を行い、転送速度は毎秒約１００メガバイト（ＭＢｐｓ）である。
【００２３】
また当業者には周知のように、ＳＣＳＩは種々のコンピュータシステムで周辺装置をコンピュータに接続するために使用されているパラレル・インタフェース標準である。ＳＣＳＩインタフェースは、標準装備のシリアル・ポート及びパラレル・ポートに比べて高速なデータ転送速度（最大約８０ＭＢｐｓ）を利用できる。
【００２４】
また当業者には周知のように、ＬＡＮとは、通常比較的狭い地域に置かれるコンピュータ・ネットワークのことである。ほとんどのＬＡＮは、単一の建物又は建物群に制限されている。ほとんどのＬＡＮは、ワークステーション及びパーソナル・コンピュータを接続する。ＬＡＮ内の各ノード（個々のコンピュータ）は、個々に中央処理装置（ＣＰＵ）を備え、プログラムを実行するが、ＬＡＮ上の任意の場所にあるデータ及びデバイスにアクセスすることも可能である。したがって、多くのユーザが、レーザ・プリンタなどの高価なデバイスをデータとともに共有できる。ユーザはさらに、ＬＡＮを使用して、たとえば電子メールを送信したりチャット・セッションに参加したりして互いに通信することもできる。ＬＡＮにはいろいろな種類のものがあるが、ＰＣにはイーサネット（登録商標）が最も一般的である。ＬＡＮは非常に高速にデータを送信することができ、電話回線でデータを送信するよりもかなり高速である。しかし、ＬＡＮの配線距離は制限されており、また単一のＬＡＮに接続できるコンピュータの台数にも制限がある。
【００２５】
図１では、ＬＡＮ  １０８をたとえばイーサネット（登録商標）として構成している。
第１のホスト１０４は、たとえば、ブロック（ＳＣＳＩ）インタフェース（Ｉ／Ｆ）を使用してローカル・ストレージ１０６にアクセスする。第２のホスト１０５は、たとえば、ファイル（ＮＦＳ又はＣＩＦＳ）Ｉ／Ｆを使用してローカル・ストレージ１０６にアクセスする。第２のホスト１０５は、たとえば、ブロック（ｉＳＣＳＩ）Ｉ／Ｆを使用してローカル・ストレージ１０６にアクセスすることもできる。
【００２６】
ローカル・ストレージ１０６及びサービス・プロバイダ・サイト１０２及び１０３では、ＡＴＭ上でｉＳＣＳＩ又はファイバ・チャネル、ＳＯＮＥＴ上でファイバ・チャネル、又は独自ベンダ・プロトコルを使用できる。
ローカル・ストレージ１０６は、仮想ストレージ１１１、コンフィギュレーション・テーブル１１２（図４も参照）、統計情報１１３（図５も参照）、アクセス・ログ１１４（図６も参照）、キャッシュ情報１１５、及びプログラム１１６を含む。コンポーネント１１２、１１３、１１４、１１５、及び１１６ではローカル・ストレージ１０６をキャッシュとして動作させることができる。ホスト１０４及び１０５は仮想ストレージ１１１にアクセスできる。仮想ストレージ１１１は、いくつかのボリューム１１７、１１８、１１９、及び１２０を含む。仮想ストレージ１１１内のボリュームの数は異なっていてもよい。これらのボリューム１１７〜１２０の管理は、ローカル・ストレージ１０６が行う。ローカル・ストレージ１０６及びサービス・プロバイダ・サイト１０２及び１０３は、仮想ボリューム・ストレージ１１１の作成のため共同作業を行う。
【００２７】
ユーザは、ユーザ・サイト１０１に仮想ボリューム・ストレージ１１１（ローカル・ストレージ１０６内の）を配備することができる。仮想ボリューム・ストレージ１１１がユーザ・サイト１０１に配備されると、ホスト１０４及び／又はホスト１０５のユーザは仮想ボリューム・ストレージ１１１を使用することにより、巨大なサービス・プロバイダ・ストレージ（ボリューム１２１〜１２４及び／又はボリューム１２５〜１２８）にアクセスできる。仮想ボリューム・ストレージ１１１は通常、サービス・プロバイダ・ストレージ・ボリューム（ボリューム１２１〜１２４及び／又はボリューム１２５〜１２８）に比べてサイズが小さい。仮想ボリューム・ストレージ１１１は、たとえば以下で説明するようなブロックＩ／Ｆ（ＳＣＳＩ）、ファイルＩ／Ｆ（ＮＦＳ、ＣＩＦＳ）などのいくつかのインタフェースを備える。仮想ボリューム・ストレージ１１１は、ユーザがＷＡＮ  １１０に毎回アクセスしなくてよいようにすると都合がよい。仮想ボリューム・ストレージ１１１ではさらに、サービス・プロバイダがユーザ向けに高速で信頼性の高いストレージ・システムを提供することもできる。
【００２８】
図２は、ローカル・ストレージ１０６の一実施形態の詳細を示すブロック図である。ローカル・ストレージ１０６は、マイクロプロセッサ２０１（たとえば、Intel CorporationやMotorola Corporation製）、ローカル（内部）バス２０２、ＳＡＮ  １０７に結合されているＳＡＮインタフェース（Ｉ／Ｆ）２０３（図１）、ＬＡＮ  １０８に結合されているＬＡＮ  Ｉ／Ｆ  ２０４（図１）、ＷＡＮ  １１０に結合されているＷＡＮ  Ｉ／Ｆ  ２０５（図１）、メモリＩ／Ｆ  ２０６、メモリ２０７、ディスク・コントローラ２０８、及びローカル・ディスク２０９を備える。メモリ２０７は、コンフィギュレーション・テーブル１１２、統計情報１１３、アクセス・ログ１１４、キャッシュ情報１１５、及びプログラム１１６を格納する。マイクロプロセッサ２０１は、ローカル・ストレージ１０６内のすべてのリソースを制御し、プログラム１１６を使用してローカル・ストレージ１０６内のすべてのプロシージャを実行する。
【００２９】
図２は、ローカル・ストレージ１０６内のプロシージャを実行しているときのローカル・ディスク２０９のスナップショットを示している。当業者には周知のとおり、スナップショットとは、実際のストレージの全ボリューム又はボリュームの一部のコピーである。図２に示されている情報及びプログラムはローカル・ディスク２０９に格納されている。ローカル・ストレージ１０６のブート手順で、これらのデータ及びプログラムはローカル・ディスク２０９からメモリ２０７に移動される。
【００３０】
キャッシュ情報１１５は、キャッシュ・ディレクトリ２１０、保留データ・リスト２１１、及びキャッシュ・データ２１２で構成される。キャッシュ・ディレクトリ２１０は、メモリ２０７及びローカル・ディスク２０９内のキャッシュされたデータ２１２のディレクトリ（コンフィギュレーション情報）である。このキャッシュ・データ２１２は、ＬＲＵ（Least Recently Used）管理法で管理することができる。しかし、近い将来再びアクセスする可能性がないことで、ＬＲＵ管理の例外となるケースがある。このような例外の１つに順次アクセスがあり、ストレージ・アドレスが逐次的にアクセスされる。
【００３１】
保留データ・リスト２１１は、ローカル・ストレージ１０６に保存されている保留データのリストである。保留データ・リスト２１１は、保留データへのポインタ、サービス・プロバイダ・サイトへのポインタ、及び同期期間などの各保留データの情報を含む。同期期間は、データの特徴により定義される。データが重要でない場合、このデータは所定の期間、ローカル・ストレージ１０６内に格納することができる。この期間は、たとえば、１分、１時間、１日、１週間、又は１カ月とすることができる。データが重要な場合、データが仮想ストレージ１１１に格納された後、コンフィギュレーション・テーブル１１２（図４）を使用してデータを即座に（同期して）サービス・プロバイダ・サイト（たとえば、サイト１０２）に格納すべきである。たとえば、同期データはボリューム００  １１７に格納される。図４で、ボリューム００  １１７は識別番号ＩＤ  ００で識別される。ボリューム００  １１７に格納されているデータは同期データなので、データはサービス・プロバイダ・サイト１０２（リモート・サイト１）のボリューム１０  １２１（リモートＩＤ  １０）に即座に格納される。
【００３２】
この同期アクセス機能を使用すると、信頼性の高いデータ・ストレージを構築できる。ただし、ユーザ・サイト１０１からサービス・プロバイダ・サイト１０２及び／又は１０３にアクセスするのに時間がかかるため、同期アクセスにはかなりの時間が必要である。必要なアクセス時間は、システム１００で実行される特定のオペレーションによって異なる。
【００３３】
ホスト１０４及び／又は１０５からアクセスされたデータはメモリ２０７に格納される。このデータは、キャッシュ・データ２１２と呼ばれる。キャッシュ・データ２１２は、ホスト１０４及び／又はホスト１０５のユーザによって頻繁にアクセスされる一時的データである。
【００３４】
一実施形態では、プログラム１１６は、サーバ・プログラム２１３、シンクロナイザ２１７、キャッシュ制御２１８、スケジューラ２２０、及びデバイス・ドライバ２１９を含む。サーバ・プログラム２１３では、ローカル・ストレージ１０６及びホスト１０４（及び／又はホスト１０５）が互いに通信できる。サーバ・プログラム２１３は、ＮＦＳサーバ２１４、ＣＩＦＳサーバ２１５、及びＳＣＳＩサーバ２１６で構成される。ＮＦＳサーバ２１４は、従来のＮＦＳサーバとして動作する。ＣＩＦＳサーバ２１５、従来のＣＩＦＳサーバとして動作する。ＳＣＳＩサーバ２１６は、ＳＣＳＩターゲット・デバイスとして動作する。シンクロナイザ２１７は、保留データ・リスト２１１を使用して、ローカル・ストレージ１０６とサービス・プロバイダ・サイト１０２及び／又は１０３の同期をとる。キャッシュ制御２１８は、キャッシュ・ディレクトリ２１０を使用して、メモリ２０７とローカル・ディスク２０９内のキャッシュ・データ２１２を制御する。スケジューラ２２０は、サーバ・プログラム２１３、シンクロナイザ２１７、キャッシュ制御２１８、及びデバイス・ドライバ２１９などのすべてのプロシージャをスケジュールする。デバイス・ドライバ２１９は、ＳＡＮ  Ｉ／Ｆ  ２０３、ＬＡＮ  Ｉ／Ｆ  ２０４、ＷＡＮ  Ｉ／Ｆ  ２０５、メモリＩ／Ｆ  ２０６、及びディスク・コントローラ２０８などのローカル・ストレージ１０６内のすべてのデバイスを制御する。
【００３５】
図３は、本発明の実施形態によるデータ・レイアウトの一例を示すブロック図である。ローカル・ストレージ１０６の管理は、以下でさらに詳しく説明しているように、データの特徴を使用することに基づいている。仮想ボリューム・ストレージ１１１では、データが静的かキャッシュされているか、同期か非同期かに応じてデータの特徴を取り扱う。以下でさらに詳しく説明しているように、仮想ボリューム・ストレージ１１１は、ストレージ・ボリュームだけでなく、ディレクトリ、ファイル、シリンダ、及び／又はブロック・アドレスでもデータの特徴を取り扱える。ユーザ・サイト１０１では、仮想ストレージ１１１に４種類の仮想ボリューム（ボリューム００  １１７、ボリューム０１  １１８、ボリューム０２  １１９、及びボリューム０３  １２０）がある。これらの仮想ボリュームの特徴である、（１）静的同期ボリューム、（２）静的非同期ボリューム、（３）キャッシュされた同期ボリューム、及び（４）キャッシュされた非同期ボリュームについて次に説明する。
【００３６】
（１）静的同期ボリューム（ボリューム００  １１７）：
ボリューム００  １１７は静的同期ボリュームである。したがって、ボリューム００  １１７は、第１のサービス・プロバイダ・サイト１０２において実際のストレージ・ボリュームであるボリューム１０  １２１と同じサイズを占有する。ホスト１０４及び／又は１０５（ユーザ・サイト１０１の）は、ボリューム００  １１７からデータを読み込み、ボリューム１０  １２１からは読み込まない。アクセスされたデータがキャッシュ・データ・キャッシュ２１２（図２）内にある場合、ローカル・ストレージ１０６（図２）はローカル・ディスク２０９（図２）にアクセスせず、メモリ２０７にアクセスするだけである。ホスト１０４及び／又は１０５は、ボリューム００  １１７とボリューム１０  １２１にデータを書き込む。この静的非同期ボリューム、ボリューム００  １１７は、高速な読み込みアクセスと信頼性の高いストレージ・システムを実現する。
【００３７】
（２）静的非同期ボリューム（ボリューム０１  １１８）：
ボリューム０１  １１８は静的非同期ボリュームである。したがって、ボリューム００１  １１８は、第１のサービス・プロバイダ・サイト１０２において実際のストレージ・ボリュームであるボリューム１１  １２２と同じサイズを占有する。ホスト１０４及び／又は１０５は、ボリューム０１  １１８からだけデータを読み込み、ボリューム１１  １２２からはデータを読み込まない。アクセスされたデータがキャッシュ・データ２１２内にある場合、ローカル・ストレージ１０６はローカル・ディスク２０９にアクセスせず、メモリ２０７にアクセスするだけである。ホスト１０４及び／又は１０５は、ボリューム０１  １１８にデータを書き込み、保留データ・リスト２１１（図２）に登録する。この保留データは、以下で説明するように、所定のスケジュールで同期処理される。
【００３８】
この保留データは、バックグラウンド・ジョブでローカル・ストレージ１０６（図２）内に圧縮し、ＷＡＮ  １１０のトラフィックを低減することができる。この静的非同期ボリューム、ボリューム０１  １１８は、ボリュームの高速な読み書きを行うが、信頼度は同期ボリュームの場合と同じではないことがある。
【００３９】
（３）キャッシュされた同期ボリューム（ボリューム０２  １１９）：
ボリューム０２  １１９はキャッシュされた同期ボリュームである。したがって、ボリューム０２  １１９は、第１のサービス・プロバイダ・サイト１０２において実際のストレージ・ボリュームであるボリューム１２  １２３と同じサイズを占有する。ボリューム０２  １１９はキャッシュとして動作する。したがって、ホスト１０４及び／又は１０５によってアクセスされるデータがボリューム０２  １１９内にない。アクセスされたデータがローカル・ディスク２０９（図２）内にない場合、ローカル・ストレージ１０６（図２）は第１のサービス・プロバイダ・サイト１０２からデータを読み込んで、読み込んだデータをローカル・ディスク２０９に書き込む。データがローカル・ストレージ１０６内に入った後、ローカル・ストレージ１０６はメモリ２０７を介してローカル・ディスク２０９からデータをホスト１０４及び／又は１０５に送る。アクセスされたデータがキャッシュ・データ２１２内にある場合、ローカル・ストレージ１０６はローカル・ディスク２０９にアクセスせず、メモリ２０７にアクセスするだけである。ホスト１０４及び／又は１０５は、ボリューム０２  １１９とボリューム１２１２３にデータを書き込む。このキャッシュされた同期ボリューム、ボリューム０２  １１９は都合よく、ローカル・ストレージ１０６のサイズを減らすことができる。この仮想ボリューム、ボリューム０２  １１９ではさらに、信頼性の高いストレージ・システムを構築できる。
【００４０】
（４）キャッシュされた非同期ボリューム（ボリューム０３  １２０）：
ボリューム０３  １２０はキャッシュされた非同期ボリュームである。したがって、ボリューム０３  １２０は、第１のサービス・プロバイダ・サイト１０２において実際のストレージ・ボリュームであるボリューム１３  １２４と同じサイズを占有する。ボリューム０４  １２０はキャッシュとして動作する。したがって、ホスト１０４及び／又は１０５によってアクセスされるデータがボリューム０３  １２０内にない。アクセスされたデータがローカル・ディスク２０９内にない場合、ローカル・ストレージ１０６は第１のサービス・プロバイダ・サイト１０２からデータを読み込んで、この読み込んだデータをローカル・ディスク２０９に書き込む。データがすでにローカル・ストレージ１０６内に入っていた場合その後、ローカル・ストレージ１０６はメモリ２０７を介してローカル・ディスク２０９からデータをホスト１０４及び／又は１０５に送る。アクセスされたデータがデータ・キャッシュ２０７内にある場合、ローカル・ストレージ１０６はローカル・ディスク２０９にアクセスせず、メモリ２０７にアクセスするだけである。ホスト１０４及び／又は１０５は、ボリューム０１  １１８にデータを書き込み、保留データ・リスト２１１（図２）に登録する。この保留データは、あるスケジュールで同期処理される。このキャッシュされた非同期ボリューム、ボリューム０３  １２０は都合よく、ローカル・ストレージ１０６のサイズを減らすことができるが、信頼性は同期ボリュームと同じにならない場合がある。
【００４１】
図３はさらに、サービス・プロバイダ・サイトで提供しているサービスも示している。第１のサービス・プロバイダ・サイト１０２のボリューム１１  １２２は、第２のサービス・プロバイダ・サイト１０３内のボリューム２１  １２６に複製される。ボリューム１２  １２３は、第２のサービス・プロバイダ・サイト１０３内のボリューム２２  １２７に複製される。ボリューム１３  １２４は、第２のサービス・プロバイダ・サイト１０３内のボリューム２３  １２８に複製される。ボリューム・データのこの複製（リモート・コピー１３０）は、障害回復方法となる。ボリューム・データは、たとえば、従来のリモート・ミラーリング技術を使用して複製できる。さらに、第１のサービス・プロバイダ・サイト１０２では、ユーザ・サイト１０１の機能がなくてもボリューム１２  １２３のデータのバックアップを実行できる（矢印１３２を参照）。このバックアップ・サービスにより、ユーザはデータ・バックアップの作業負荷を軽減できる。
【００４２】
以下で説明しているように、仮想ボリューム・ストレージ１１１では、ホスト１０４及び／又は１０５からのアクセス活動に基づいてトレース・データを作成できる。仮想ボリューム・ストレージ１１１は、サービス・プロバイダに対して、ユーザ・アクセス・パターンの分析のためこのトレース・データを用意することができる。ユーザ・アクセス・パターンを分析した後、サービス・プロバイダは仮想ボリューム・ストレージ１１１を都合よくチューニングできる。
【００４３】
図４は、本発明の実施形態によるコンフィギュレーション・テーブル１１２の一例を示すブロック図である。コンフィギュレーション・テーブル１１２は、パラメータ「ＩＤ」、「インタフェース」、「サブエリア」、「リモート・サイト」、「リモートＩＤ」、「ボリューム・タイプ」、「サービス」（「バックアップ」、「分析」）、「サイズ」（「合計」、「使用済み」、「空き」）、及び「ポリシー」で構成される。「ＩＤ」は、ローカル・ストレージ１０６内の仮想ボリュームのボリューム識別を示す。たとえば、ボリューム００  １１７（図３）のＩＤは００である。「インタフェース」は、ＳＣＳＩ、ＮＦＳ、及びＣＩＦＳなどの仮想ボリューム・インタフェース・タイプを示す。「サブエリア」は、仮想ボリューム内のサブエリアの個数を示す。サブエリアは、ブロック・アドレス、シリンダ、ファイル、及び／又はディレクトリのあるエリアとすることができる。「ボリューム・タイプ」は、サブエリア間で異なることがある。この場合、図４の実例で、各サブエリアはボリューム・タイプが同じである。たとえば、ボリューム００  １１７（図３）（ＩＤは００）は上述のように同じ静的同期ボリューム・タイプである。「リモート・サイト」は、リモート・サイトの識別子を示す（たとえば、サービス・プロバイダ・サイト１０２の識別子）。これは、ｈｔｔｐアドレスのＩＰアドレスでもよい。「リモートＩＤ」は、サービス・プロバイダ・サイト内のボリュームＩＤを示す。たとえば、サービス・プロバイダ・サイト１０２のボリューム１０  １２１はリモートＩＤ  １０を持つ。「ボリューム・タイプ」は、静的な又はキャッシュされた、同期又は非同期などのボリュームのタイプを示す。「サービス」は、バックアップ・サービスや分析サービスなどのサービス・プロバイダが提供するサービスを示す。サービス・プロバイダは、分析サービスを提供するときに、統計情報１１３（図２）へのポインタを設定し、統計情報（アクセス・ログ）１１４を作成し、データの特徴を取得する。分析サービスが提供される場合、図４の例に示されているように「Ｐｔｒ」がコンフィギュレーション・テーブル１１２の分析セクションで表示される。たとえば、コンフィギュレーション・テーブル１１２のボリューム０２  １１９（ＩＤ０２）は、分析セクションにポインタＰｔｒを持つ（行４００を参照）。（ボリューム０２  １１９の）ＩＤ  ０２に対するこのポインタは、図５内の統計情報１１３の中のＩＤ  ０２を指している。ＩＤ  ０２は、サブエリア（ディレクトリ）「/usra」（行５００を参照）を持ち、ポインタ（「ptr」）はログＰｔｒセクション内にある。このポインタ（ptr）は、図６の例のボリューム０２  １１９に対し作成されたアクセス・ログであるアクセス・ログ１１４を指している。
【００４４】
さらに、図５の例では、（ボリューム０２  １１９の）ＩＤ  ０２はディレクトリ「/usrb」（行５０５参照）を含み、「Ｎｕｌｌ」値（ポインタなし）がログＰｔｒセクション内にある。さらに、ＩＤ  ０２は、ディレクトリ「/usrc」（行５１０を参照）を含み、Ｎｕｌｌ値（ポインタなし）がログＰｔｒセクション内にある。したがって、ディレクトリ/usrb及び/usrcにアクセス・ログを指すポインタがないため、これらのディレクトリに対し関連するアクセス・ログ１１４が作成されていない。
【００４５】
コンフィギュレーション・テーブル１１２で、「サイズ」は、ギガバイト単位で合計メモリ・サイズ（「合計」）を示し、また使用済みサイズ（「使用済み」）及び空きサイズ（「空き」）を示している。ボリュームがファイル・システムのローカル・ストレージ１０６内にない場合、合計サイズのみ判明している必要がある。パラメータ「ポリシー」は、同期のスケジュールを示す。たとえば、行４１０では、ボリューム００  １１７（ＩＤは００）は、図４で「ポリシー」パラメータに「Ｎｕｌｌ」値が設定されているが、このＮｕｌｌ値は同期スケジュールがボリューム００  １１７に対し設定されていないことを示す。ボリューム０２  １１９（ＩＤは０２）は、「ポリシー」パラメータで「週」値を設定しており、この値は、ボリューム０２  １１９内のデータが週に１度サービス・プロバイダ・サイト（たとえば、サイト１０２）のデータと同期処理されていることを示す。ボリューム０３  １２０（ＩＤは０３）は、「ポリシー」パラメータで「日」値を設定しており、この値は、ボリューム０３  １２０内のデータが毎日サービス・プロバイダ・サイト（たとえば、サイト１０２）のデータと同期処理されていることを示す。
【００４６】
コンフィギュレーション・テーブル１１２のパラメータは、コンフィギュレーション・テーブル１１２内のコンフィギュレーション・データを設定することにより設定される。各ストレージ・サブシステムは関連するコンフィギュレーション・テーブルを持つ。
【００４７】
図５は、本発明の実施形態による統計情報１１３の一例を示すブロック図である。ユーザ又はサービス・プロバイダがコンフィギュレーション・テーブル１１２（図４）で「サービス分析」パラメータを「Ｐｔｒ」に設定した場合、次のことが可能になる。ローカル・ストレージ１０６は、統計情報１１３のこのテーブルでローカル・ストレージ１０６のユーザ統計アクセス情報を収集する。「統計情報」は、「ＩＤ」、「サブエリア」、「ＩＯ／ｓ」及び「ＭＢ／ｓ」（「平均、最大読み込み」、「平均、最大書き込み」）、「ヒット率」、及び「ログＰｔｒ」で構成される。パラメータ「ＩＤ」及び「サブエリア」（図５）は、コンフィギュレーション・テーブル１１２（図４）の「ＩＤ」及び「サブエリア」と同じ意味を持つ。「ＩＯ／ｓ」は、１秒あたりの読み込み及び書き込みコマンドなど、１秒あたりのホスト／ユーザ入力又は出力活動の個数を示す。ボリューム又はボリューム・ディレクトリ内の読み込み又は書き込みアクセスは、知られている適当な方法で記録できる。
【００４８】
「ＭＢ／ｓ」は１秒あたりのバイト数を示す。ローカル・ストレージ１０６は、ボリューム（又はボリューム内のサブエリア）での読み込み及び書き込みの発生数を収集し、この発生の平均（Ａｖｅ）をとる。ローカル・ストレージ１０６は、さらに、ボリューム又はボリューム内のサブエリアでの読み込み及び書き込みの発生の最大発生回数（Ｍａｘ）も追跡する。
【００４９】
「ヒット率」は、ローカル・ストレージのヒット率を示す。このヒット率は、たとえば、ローカル・ディスク２０９（図２）だけのものである。ヒット率は、次の式（１）で定義される。
（１）ヒット率＝１００％（#ローカル・ディスク読み込み／#全読み込み）
ただし、「#ローカル・ディスク読み込み」は、ホスト別のローカル・ディスク２０９内の読み込み回数であり、「#全読み込み」は、ホスト別の合計読み込み回数である。
【００５０】
統計情報１１３は、サービス・プロバイダ・サイト１０２及び／又は１０３に定期的に送られる。サービス・プロバイダでは、データの特徴を分析し、この分析結果からサービス・プロバイダはユーザ・サイト１０１のホストのユーザに適切な解決策を提示することができる。
【００５１】
上述のように、ログＰｔｒは、アクセス・ログ１１４へのポインタを示している。サービス・プロバイダは、ユーザ・アクセス・パターンの詳細を知りたい場合、このポインタを作成されたアクセス・ログ１１４に設定する。
【００５２】
図６は、本発明の実施形態によるアクセス・ログ１１４の一例を示すブロック図である。サービス・プロバイダは、ユーザのアクセス・パターンの詳細を分析するときに、アクセス・ログ１１４を作成し、ログＰｔｒ（図５の統計情報１１３内にある）のポインタをこのアクセス・ログ１１４に設定する。ローカル・ストレージ１０６は、ユーザ別に各アクセスのアクセス・ログ１１４を収集する。アクセス・ログ１１４は、パラメータ「日付」、「時刻」、「コマンド」、「ファイルＩＤ」、「アドレス」、及び「サイズ」で構成される。「日付」は、ユーザがアクセスした日付を示す。「時刻」は、アクセスの時刻を示す。「コマンド」は、アクセスのコマンド・タイプ（たとえば、読み込み又は書き込み）を示す。「ファイルＩＤ」は、このコマンドでアクセスしたファイルの識別を示す。アクセス・ログがＳＣＳＩ用であれば、「ファイルＩＤ」はＮｕｌｌとすることもできる。「アドレス」及び「サイズ」は、アクセス・アドレス及びサイズを示す。
【００５３】
読み込みプロセス
読み込みプロシージャでは、キャッシュされたデバイス（ローカル・ストレージ１０６）はキャッシュとして動作する。ホスト１０４及び／又は１０５は、ローカル・ストレージ１０６にアクセスするが、これは、ローカル・ストレージ１０６の空き容量が大きいからである。まず、ホスト（たとえば、ホスト１０４又はホスト１０５）は、ＬＡＮ  １０８（図１）を介してＮＦＳ、ＣＩＦＳ、又はｉＳＣＳＩプロトコルの読み込みコマンドを発行するか、又はＳＡＮ  １０７を介してＳＣＳＩプロトコルの読み込みコマンドを発行する。ローカル・ストレージ１０６は、ＬＡＮ  Ｉ／Ｆ  ２０４又はＳＡＮ  Ｉ／Ｆ  ２０３（図２）を介して読み込みコマンドを受信する。デバイス・ドライバ２１９（図２）は、ホストからのこのコマンドを処理し、このコマンドをスケジューラ２２０に入れる。次にスケジューラ２２０は読み込みコマンドを分析して、読み込みコマンドをサーバ・プログラム２１３内において適切なサーバ（ＮＦＳサーバ２１４、ＣＩＦＳサーバ２１５、又はＳＣＳＩサーバ２１６）に入れて読み込みコマンドを処理することができる。各サーバ・プログラム２１３は、読み込みコマンドで要求されたデータがキャッシュ・データ２１２（図２）内にあるかどうかを調べる。すべてのデータ（読み込みコマンドで要求された）がキャッシュ・データ２１２内にある場合は、ローカル・ストレージ１０６は内部バス２０２とネットワーク・インタフェース（ＳＡＮ  Ｉ／Ｆ  ２０３又はＬＡＮ  Ｉ／Ｆ  ２０４）を介してデータを要求側ホスト（ホスト１０４又は１０５）に返す。他方、データ（読み込みコマンドで要求された）の全部又は一部がキャッシュ・データ２１２内にない場合、要求されたデータはローカル・ディスク２０９から、又はサービス・プロバイダ・サイト１０２又は１０３からキャッシュ・データ２１２に移動すべきである。
【００５４】
図７は、本発明の実施形態によるこの読み込みプロセスの流れ図である。ローカル・ストレージ１０６がホスト（たとえば、ホスト１０４又は１０５）から読み込みコマンドを受け取った後、ローカル・ストレージ１０６はデータのボリューム・タイプを調べる（ステップ７０１）。スケジューラ２２０は、ボリュームＩＤをチェックすることによりコンフィギュレーション・テーブル１１２内のボリューム・タイプ（たとえば、静的タイプ）を調べる。特に、スケジューラ２２０（図２）は、読み込みコマンドを分析して、データのボリューム・タイプを判別し、また読み込みコマンドを処理する（取り扱う）サーバ・プログラム（サーバ２１４、２１５、又は２１６）を決定する。スケジューラ２２０は、コンフィギュレーション・テーブル１１２（図４）を見て読み込みコマンドを処理するためのボリューム・タイプと適切なサーバ・プログラムを調べる。ボリューム・タイプが静的ボリュームの場合、ローカル・ストレージ１０６はステップ７０２、７０３、及び７０４を飛ばし、以下で説明するステップ７０５に進む。ボリューム・タイプがキャッシュされたボリュームの場合、ローカル・ストレージ１０６はデータ（読み込みコマンドで要求した）がキャッシュ・データ２１２内に格納されているかいないかを調べる（ステップ７０２）。
【００５５】
ローカル・ストレージ１０６は、キャッシュ・ディレクトリ２１０を調べる（ステップ７０３）。特に、サーバ・プログラム２１３の適切なサーバ（２１４、２１５、又は２１６）は、読み込みコマンドで要求したデータがローカル・ディスク２０９内にあるかどうかを調べる。すべてのデータ（読み込みコマンドで要求した）がローカル・ディスク２０９に格納されている場合、ローカル・ストレージ１０６はステップ７０４を飛ばして、以下で説明するステップ７０５に進む。データ（読み込みコマンドで要求した）がローカル・ディスク２０９内にない場合、ローカル・ストレージ１０６はステップ７０４を実行する。
【００５６】
ステップ７０４で、ローカル・ストレージ１０６はローカル・ディスク２０９内でデータ領域を割り当て、サービス・プロバイダ・サイト（たとえば、サービス・プロバイダ・サイト１０２）からデータ（読み込みコマンドで要求した）を読み込む。特に、キャッシュ制御２１８では、コンフィギュレーション・テーブル１１２（図４）を使用してデータが取り出されるサービス・プロバイダ・サイトを決定する。キャッシュ制御２１８では、サービス・プロバイダ・サイトからデータを読み込み、データをローカル・ディスク２０９に格納する。
【００５７】
データをローカル・ディスク２０９に格納した後、ローカル・ストレージ１０６はローカル・ディスク２０９からキャッシュ・データ２１２へデータを移動する（書き込む）（ステップ７０５）。特に、キャッシュ制御２１８は、ローカル・ディスク２０９からキャッシュ・データ２１２にデータを移動する。続いてローカル・ストレージ１０６は、統計情報１１３（図５）を更新する（ステップ７０６）。特に、ローカル・ストレージ１０６のスケジューラ２２０は、統計情報１１３を更新する。統計情報１１３内のログ・ポインタ（ログＰｔｒ）（図５）が設定されている場合、ローカル・ストレージ１０６はこの読み込みコマンドのログ・データをアクセス・ログ１１４（図６）に追加する。スケジューラ２２０又はデバイス・ドライバ２１９は、統計情報１１３とアクセス・ログ１１４を作成する。通常、統計情報１１３とアクセス・ログ１１４の作成においてはスケジューラ２２０が用いられる。
【００５８】
その後、データ（読み込みコマンドで要求した）はキャッシュ・データ２１２から、読み込みコマンドを送ったホスト（たとえばホスト１０４又は１０５）に移動される。特に、キャッシュ制御２１８はキャッシュ・データ２１２からデータを適切なサーバ・プログラム（２１４、２１５、又は２１６）に移動し、適切なサーバ・プログラム（２１４、２１４、又は２１６）がデータを、読み込みコマンドを送ったホストに返す。
【００５９】
書き込みプロセス
書き込みプロシージャでは、キャッシュされたデバイス（ローカル・ストレージ１０６）はキャッシュとして動作する。ホスト１０４及び／又は１０５は、ローカル・ストレージ１０６にアクセスするが、これは、ローカル・ストレージ１０６の空き容量が大きいからである。まず、ホスト（たとえば、ホスト１０４又はホスト１０５）は、ＬＡＮ  １０８を介してＮＦＳ、ＣＩＦＳ、又はｉＳＣＳＩプロトコルの書き込みコマンドを発行するか、又はＳＡＮ  １０７を介してＳＣＳＩプロトコルの書き込みコマンドを発行する。ローカル・ストレージ１０６は、ＬＡＮ  Ｉ／Ｆ  ２０４又はＳＡＮ  Ｉ／Ｆ  ２０３を介して書き込みコマンドを受信する。デバイス・ドライバ２１９（図２）は、ホストからのこの読み込みコマンドを処理し、このコマンドをスケジューラ２２０に入れる。次にスケジューラ２２０は書き込みコマンドを分析して、書き込みコマンドをサーバ・プログラム２１３内において適切なサーバ（ＮＦＳサーバ２１４、ＣＩＦＳサーバ２１５、又はＳＣＳＩサーバ２１６）に入れる。各サーバ・プログラム２１３は、書き込みコマンドのデータがキャッシュ・データ２１２（図２）内にあるかどうかを調べる。すべてのデータ（書き込みコマンドの）がキャッシュ・データ２１２内にある場合は、ローカル・ストレージ１０６は内部バス２０２とネットワーク・インタフェース（ＳＡＮ  Ｉ／Ｆ  ２０３又はＬＡＮ  Ｉ／Ｆ  ２０４）を介してホストからデータを受信する。ローカル・ストレージ１０６は、ローカル・ディスク２０９及びキャッシュ２１２内の割り当てられた空き領域にデータを上書きする。他方、（書き込みコマンドの）データの全部又は一部がキャッシュ・データ２１２内にない場合、ローカル・ストレージ１０６は、キャッシュ・データ２１２内にないデータの残りについてある領域（ローカル・ディスク２０９及びキャッシュ・データ２１２内の）を割り当てる。すべてのデータ領域の割り当てが済んだら、ローカル・ストレージ１０６はその割り当てられた領域内にデータを格納する。すべてのデータをキャッシュ・データ２１２内に格納する場合、ローカル・ストレージ１０６はローカル・ディスク２０９にデータを格納し、このデータをプロバイダ・サイト（たとえば、サービス・プロバイダ・サイト１０２）に送信する。
【００６０】
図８は、本発明の実施形態による書き込みプロセスの流れ図である。ローカル・ストレージ１０６がホストから書き込みコマンドを受け取った後、ローカル・ストレージ１０６は書き込みコマンドのデータのボリューム・タイプを調べる（ステップ８０１）。特に、スケジューラ２２０（図２）は、書き込みコマンドを分析して、データのボリューム・タイプを判別し、また読み込みコマンドを処理する（取り扱う）サーバ・プログラム（サーバ２１４、２１５、又は２１６）を決定する。スケジューラ２２０は、コンフィギュレーション・テーブル１１２（図４）を見て書き込みコマンドを処理するためのボリューム・タイプと適切なサーバ・プログラムを調べる。ボリューム・タイプが静的ボリュームの場合、ローカル・ストレージ１０６はステップ８０２、８０３、及び８０４を飛ばし、以下で説明するステップ８０５に進む。ボリューム・タイプがキャッシュされたボリュームの場合、ローカル・ストレージ１０６はデータ（書き込みコマンドの）がキャッシュ・データ２１２（図２）内に格納されているかいないかを調べる。ローカル・ストレージ１０６は、キャッシュ・ディレクトリ２１０（図２）を調べる（ステップ８０２）。
【００６１】
特に、サーバ・プログラム２１３の適切なサーバ（２１４、２１５、又は２１６）は、書き込みコマンドのデータがローカル・ディスク２０９内にあるかどうかを調べる。ステップ８０３で、すべてのデータ（書き込みコマンドで要求した）がローカル・ディスク２０９内で割り当てられている場合、ローカル・ストレージ１０６はステップ８０４を飛ばして、ステップ８０５に進む。ステップ８０３で、データがローカル・ディスク２０９内にない場合、ローカル・ストレージ１０６はステップ８０４を実行する。
【００６２】
（書き込みコマンドの）データがローカル・ディスク２０９内で割り当てられていない場合、ローカル・ストレージ１０６は書き込みデータについてローカル・ディスク２０９とキャッシュ・データ２１２の両方にデータ領域を割り当てる（ステップ８０４）。特に、キャッシュ制御２１８は、ローカル・ディスク２０９及びキャッシュ・データ２１２の両方でデータを割り当てる。
【００６３】
ローカル・ストレージ１０６は、キャッシュ・データ２１２を介して書き込みデータをローカル・ディスク２０９に書き込む。特に、適切なサーバ・プログラム（ＮＦＳサーバ２１４、ＣＩＦＳサーバ２１５、又はＳＣＳＩサーバ２１６）はデータをローカル・ディスク２０９に書き込む。
【００６４】
ローカル・ストレージ１０６は、コンフィギュレーション・テーブル１１２（図４）を使用してデータを書き込む際のボリューム・タイプを調べる（ステップ８０６）。特に、サーバ・プログラム（ＮＦＳサーバ２１４、ＣＩＦＳサーバ２１５、又はＳＣＳＩサーバ２１６）はコンフィギュレーション・テーブル１１２を使用してボリューム・タイプを調べる。ボリューム・タイプが同期領域の場合、ローカル・ストレージ１０６は即座にサービス・プロバイダ・サイト（たとえば、サイト１０２）とデータの同期をとり（書き込み）（ステップ８０８）、以下で説明するステップ８０９に進む。シンクロナイザ２１７（図２）はサービス・プロバイダ・サイトとの（ユーザ・サイト内の）データの同期処理を実行する。ローカル・ストレージ１０６内のキャッシュ制御２１８は、コンフィギュレーション・テーブル１１２を使用してサービス・プロバイダ・サイトに格納すべきデータを認識する。
【００６５】
ステップ８０６で、ボリューム・タイプが非同期領域の場合、ローカル・ストレージ１０６は保留データ・リスト２１１（図２）を更新する（ステップ８０７）。特に、サーバ・プログラム（サーバ２１４、２１５、又は２１６）が保留データ・リストを更新する。
【００６６】
続いてローカル・ストレージ１０６は、統計情報１１３（図５）を更新する（ステップ８０９）。特に、スケジューラ２２０は、統計情報１１３を更新する。統計情報１１３内のログ・ポインタ（ログＰｔｒ）（図５）が設定されている場合、ローカル・ストレージ１０６はこの書き込みコマンドのログ・データをアクセス・ログ１１４に追加する。特に、スケジューラ２２０は書き込みコマンドのログ・データをアクセス・ログ１１４に追加する。これで書き込みプロセスは終了する。
【００６７】
同期プロセス
非同期ボリューム書き込み（非同期領域へのデータ書き込み）の場合、データは、ユーザ又はサービス・プロバイダによって定められたスケジュールに従ってサービス・プロバイダ・サイト（たとえば、サイト１０２）に送信される。このスケジュールは、たとえば、図４のコンフィギュレーション・テーブル１１２内の「ポリシー」エントリ内の値により定められる。スケジューラ２２０（図２）は、シンクロナイザ２１７（図２）を定期的に実行することで、サービス・プロバイダ・サイトとデータの同期をとることができる。この期間は、システム１００設定に応じて、たとえば、約１．０ミリ秒又は１０．０ミリ秒に設定できる。図９は、本発明の実施形態による同期プロセスの流れ図である。同期プロセスは、シンクロナイザ２１７（図２）によって実行できる。
【００６８】
シンクロナイザ２１７は、保留データ・リスト２１１（図２）内のヘッド・データを選択する（ステップ９０１）。最初に、シンクロナイザ２１７は、保留データ・リスト２１１を調べる（ステップ９０２）。保留データ・リスト２１１にデータがなければ、シンクロナイザ２１７は同期プロセスを終了する。同期すべきデータが１つ又は複数（保留データ・リスト２１１内に）ある場合、シンクロナイザ２１７は以下で説明するようにステップ９０２〜９０５を実行する。
【００６９】
シンクロナイザ２１７は、保留データ・リスト２１１の情報を調べる（ステップ９０３）。保留データ・リスト２１１内のこの保留データの同期をとる必要があれば、シンクロナイザ２１７は保留データをサービス・プロバイダ・サイト（たとえば、サイト１０２）に送り、保留データとサービス・プロバイダ・サイトとの同期をとる（ステップ９０４）。ローカル・ストレージ１０６内のキャッシュ制御２１８は、コンフィギュレーション・テーブル１１２（図４）内の「リモートＩＤ」及び「リモート・サイト」の値に基づいてサービス・プロバイダ・サイト（たとえば、サイト１０２）に格納すべきデータを認識する。
【００７０】
シンクロナイザ２１７は、保留データ・リスト２１１内の次のデータを選択する（ステップ９０５）。シンクロナイザ２１７は、保留データ・リスト２１１内で選択するデータがなくなるまでステップ９０２〜９０５を繰り返す。保留データ・リスト２１１に選択するデータがなくなったら、図９の方法は終了する。
コンピュータが上述のいずれかの方法を実行できるようにコンピュータで読み取り可能な媒体に格納できるプログラム又はコードを実装することも本発明の範囲である。
【００７１】
そこで、本発明について特定の実施形態を引用しながら説明してきたが、前記開示においては修正、さまざまな変更、及び置き換えを許容することが意図されており、規定されているとおり本発明の範囲を逸脱することなく他の特徴の対応する使用がなくても場合によっては本発明のいくつかの特徴を採用することは認められるであろう。
【図面の簡単な説明】
【図１】本発明の実施形態によるシステムのブロック図。
【図２】図１に示されているローカル・ストレージの一実施形態の詳細を示すブロック図。
【図３】本発明の実施形態によるデータ・レイアウトの一例を示すブロック図。
【図４】本発明の実施形態によるコンフィギュレーション・テーブルの一例を示すブロック図。
【図５】本発明の実施形態による統計情報の一例のブロック図。
【図６】本発明の実施形態によるアクセス・ログの一例のブロック図。
【図７】本発明の実施形態による読み込みプロセスの流れ図。
【図８】本発明の実施形態による書き込みプロセスの流れ図。
【図９】本発明の実施形態による同期プロセスの流れ図。
【符号の説明】
１０１…ユーザ・サイト、１０２，１０３…サービス・プロバイダ・サイト、１０４，１０５…ホスト、１０６…ローカル・ストレージ、１０７…ＳＡＮ、１０８…ＬＡＮ、１１１…仮想ストレージ
【図１】
0004141143.tif 000002
【図２】
0004141143.tif 000003
【図３】
0004141143.tif 000004
【図４】
0004141143.tif 000005
【図５】
0004141143.tif 000006
【図６】
0004141143.tif 000007
【図７】
0004141143.tif 000008
【図８】
0004141143.tif 000009
【図９】
0004141143.tif 000010