説明

リモート・ストレージに対してファイル・システムにネーティブな支援を与えるファイル・システム・プリミティブ

【課題】大量のデータを格納する全体的なコストを削減するために、第1ローカル・ディスクからアーカイブ・オフライン・ストレージまでの記憶デバイスの階層を用いるシステムを開発した。
【解決手段】記憶デバイス118,122は、階層状に管理することができ、稀にしかアクセスされないデータをアーカイブ・ストレージ122に移動させることができる。階層ストレージ・マネージャ110のI/Oシステムへの緊密な統合化に基づき、リモート格納属性112を識別し、他のあらゆる属性と丁度同じようにI/Oシステム内部で追跡することを可能にする。下位ドライバ104がリモート格納属性112を有するファイルの存在を検出し、次いでリモート格納属性112を有するファイルを伴うI/O要求を処理する制御を、上位ドライバ100に移管する。次いで、上位ドライバ100は、I/O要求の処理を終了する制御を引き受ける。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファイル・システムにおいてリモート・ストレージに対する支援を与えるシステムおよび方法に関する。更に特定すれば、本発明は、ファイル・システムがリモート・ストレージに対してネーティブな支援(native support)を与えられるようにすることにより、一部分をリモートに格納してあるファイルまたはその他のエンティティにおいて、当該ファイル・システムが、ファイルまたはその他のエンティティを伴うI/O要求を本質的に識別しかつ処理することを可能とするものである。
【背景技術】
【0002】
コンピュータのハードウエアおよびソフトウエアにおいては多くの発展がなされたが、一般的原理の一部は不変のままである。メモリやデータ・ストレージのコストは減少し続け、所与のサイズのデバイスの記憶容量は増大し続けているが、データを格納するために用いる媒体や、データのアクセス性(accessibility)というようないくつかの要因によって、引き続きデータ格納コストには差がある。例えば、一般的に、1データ・ワードをキャッシュ・メモリに格納する方がシステムRAMに格納するよりも高価である。一方、システムRAMは、磁気ディスク・ストレージよりも1ワード当たりの格納は高価である。磁気ディスク・ストレージは、アーカイブ・ストレージよりも1ワード当たりの格納は高価である。このように、用いないデータまたは使用頻度の低いデータ程安価なストレージに移動させようという考えに進みつつある。加えて、これまで以上に増大しつつあるデータ量にアクセスする要望が、データを価格効率的に格納しながらも、同時に所望のデータに対する適度なアクセス速度を得ようとする動機付けになっている。
【0003】
従来技術におけるデータのリモート・ストレージの開発および実施は、別個の非統合階層型記憶システムを有するメインフレーム計算機モデルに基づくものである。階層型記憶システムは、データセットと呼ぶ記憶単位の、記憶デバイスの階層における配置を管理する。記憶デバイスの階層は、ハイエンド高スループット磁気ディスク、通常のディスク群、ジュークボックス型光ディスク(jukeboxes of optical disks)、テープ・サイロ(tape silo)、オフ・ラインで格納するテープ群のように、広範囲のデバイスを含むことができる。種々のデータセットをどこに格納すべきか決定する場合、階層型記憶システムは、典型的に、格納のコスト、検索時間、アクセス頻度等のような種々の検討項目間のバランスを取る。
【発明の開示】
【発明が解決しようとする課題】
【0004】
ファイルは、典型的に、ユーザまたはその他のソフトウエア・エンティティがデータを格納可能なデータ部分、名称部分、およびファイルへのアクセス制御というようなことに用いることができる種々のフラグのような、種々のコンポーネントを有する。従来技術のシステムでは、主ストレージから除去しリモート・ストレージに移動させるファイルは、多くの場合「スタブ・ファイル」で置換する。スタブ・ファイルとは、階層型記憶システムが、当該ファイル内のデータがどこに格納されているか判断可能にする情報を含むファイルである。しかしながら、このような手法には、いくつかの問題がある。
【0005】
スタブ・ファイルは、ファイルのデータ部分においてリモート格納ファイルの位置を記述する情報を格納する。旧来のファイル・システムは、通常、ファイル・システムがファイルのデータ部分の内容を判定できるように構成されていない。したがって、従来技術のシステムは、非統合的な階層ストレージ・マネージャを頼りに、スタブ・ファイルのデータ部分を読み出し、リモート格納ファイルがどこに位置するのか判断している。このような非統合的な手法では、階層型記憶システムは、スタブ・ファイルと同じ外観を有するファイルに向けて送られるあらゆるI/O動作を傍受することが必要となる。言い換えると、ファイルを見ただけでは、それがスタブ・ファイルか、または単にスタブ・ファイルと同じ外観を偶然有するに過ぎない非スタブ・ファイルか判断することは不可能である。例えば、スタブ・ファイルは多くの場合固定長を有する。しかしながら、固定長以外には、スタブ・ファイルを、スタブ・ファイルと同じ長さを偶然有する通常のファイルから区別するものは、外部には何もない。全てのスタブ・ファイルを識別するためには、典型的に、スタブ・ファイルと同じ長さを有するファイルに向けられる全てのコールを傍受するように、階層ストレージ・マネージャを設定する。一旦コールを傍受したなら、次にファイルを検査し、これが本当にスタブ・ファイルなのか、または偶然長さが同じなだけの通常のファイルなのか判定することができる。
【0006】
以上の検討から、階層ストレージ・マネージャによって非スタブ・ファイルを検査する可能性が確かにあることは明白である。この結果は望ましいものではない。何故なら、通常のファイルへのアクセスが遅れ、不要な処理オーバーヘッドが余分に生ずるからである。従来技術のシステムには、異なる方法を用いて、同じデータ・バイト数を有するが通常のデータ・ファイルであるユーザ・ファイルからスタブ・ファイルを差別化することによって、このオーバーヘッドを解消しようとしたものがある。これら種々の手法は、エラーの確率を低下させることができるが、完全にそれを解消することはできない。したがって、通常のデータ・ファイルと、リモート格納データを有するデータ・ファイルとの間で明確に差別化することが可能な階層ストレージ・マネージャを提供することができれば、当技術分野における発展となろう。また、このようなリモート格納ファイルが実際にI/Oシステムが処理するI/O動作に関与する場合にのみ、リモート格納ファイルに伴う余分なオーバーヘッドが発生する階層ストレージ・マネージャを有することができれば、当技術分野における発展となろう。
【0007】
従来技術の階層ストレージ・マネージャには、当該階層ストレージ・マネージャの非統合的本質により、既存のファイル・システムに殆どまたは全く影響を与えることなく、システム内に階層型記憶を実施することができるという1つの利点がある。このような階層ストレージ・マネージャは、各コールを検査して、それがスタブ・ファイルを伴うか否かについて判定を行うことができる。コールがスタブ・ファイルを伴う場合、階層ストレージ・マネージャはこのコールを傍受し、このコールを処理することができる。しかしながら、このコールがスタブ・ファイルを伴わない場合、階層ストレージ・マネージャはこのコールを正規のファイル・システムに渡すことができる。したがって、ファイル・システムは、階層ストレージ・マネージャが存在することを知る必要がない。残念なことに、このような手法では、コールがスタブ・ファイルを伴わない場合でも、コールが行われる毎に余分なオーバーヘッドが生じてしまう。これは、階層ストレージ・マネージャが各コールを検査しなければならないからである。システムが多数の階層ストレージ・マネージャを使用する場合、オーバーヘッドは急速に増加する虞れがある。したがって、既存のファイル・システムに殆どまたは全く変更が生じないという利点を維持しつつ、同時にリモート格納データのないファイルに対するあらゆるオーバーヘッドを極力抑えるかあるいは解消するような階層ストレージ・マネージャを提供することが望ましい。言い換えると、リモート格納データのないファイルに対しては既存のアクセス速度を維持し、リモート格納データのあるファイルについてのみ追加のオーバーヘッドを発生する、階層型記憶の手法を有することができれば非常に有利であろう。また、単一のシステムに複数の階層ストレージ・マネージャを用いる場合においてもこれらの特性全てを維持することができれば、非常に有利であろう。
【0008】
従来技術の階層ストレージ管理方法には、これらの基準となるモデルが新たな記憶要件への組み込みや適応化に容易に対応できないという別の欠点がある。例えば、従来技術のリモート・データ格納方法は、通常のファイルをスタブ・ファイルと置換することを必要とした。このようなスタブ・ファイルは、事実上通常のファイルの全コンポーネントをスタブ・ファイルのコンポーネントと置換する。したがって、何らかの動作が通常のファイルを伴う場合、典型的に、要求を満たすためにリモート・ストレージからこれを検索しなければならない。特定のファイルに関連する情報の内どれがリモートに格納されているのか判定する際に高い自由度を可能とし、実行する頻度が高いと考えられる動作は、リモート・ストレージからファイル全体を呼び出すことなく処理可能とすることができれば、非常に有利であろう。
【課題を解決するための手段】
【0009】
本発明は、従来の技術的現状における前述の問題を効果的に克服するものであり、ファイル・システムにおいてリモート・データ格納に対するネーティブな支援を与えつつ、同時にこのようなネーティブな機能を組み込むために既存のファイル・システムに必要ないかなる変更も最小に抑えるシステムおよび方法に関する。
【0010】
本発明は、複数のドライバまたはデータ・マネージャが協働してI/O要求を満たすモデルを基本とすることができる。ドライバまたはデータ・マネージャは、層状関係を有することができ、各ドライバまたはデータ・マネージャがI/O要求の特定部分を処理する任務を負う。全ての層が協働してI/O要求を完全に満たすように、層間で情報を互いに受け渡すことができる。
【0011】
本発明では、ファイルおよびディレクトリは、典型的に、2つの広いカテゴリのコンポーネント即ち「属性」を有することを認識する。属性のカテゴリの一方は、典型的に、ユーザ制御情報を格納するために用いる。このユーザ属性カテゴリは、ファイルのデータ部分を含み、ユーザまたはその他のクライアント・プロセスが所望の情報を格納するところである。属性の他のグループは、典型的に、I/Oシステムによる主な使用または排他的な使用のために除外しておく。これらのシステム属性は、アクセス制御情報を含む。これは、どのユーザまたはクライアント・プロセスが当該ファイルを、そしてどのように(例えば、リード・オンリ・アクセス、リード・ライト・アクセス等)アクセスすることができるのか確認する。I/Oシステムによる主なアクセスまたは排他的なアクセスのために確保してある他の属性には、ローカル記憶媒体上のどこに主データ属性を格納してあるかファイル・システムに確認させる情報を含むことも可能である。本発明は、リモート・ストレージ属性(remote storage attribute)と呼ぶ、追加のシステム属性を加える。このリモート・ストレージ属性は、I/Oシステムが、リモートに格納してあるファイルまたはディレクトリの属性をどこで見つけることができるのか確認させるのに十分な情報を収容する。
【0012】
本発明の最も一般的な観点では、ファイル属性のいずれでもまたは全てをリモートに格納することが可能である。この柔軟度により、使用頻度の高い情報をローカルに保持しておき、使用頻度の低い情報をリモートに格納することが可能となる。ローカル/リモート格納の判断は、属性毎に下すことができる。しかしながら、I/Oシステムに、どの属性をリモートに格納し、リモートに格納した属性がどこに位置するのかを確認させるには、十分な情報をローカル・ストレージに残しておかなければならない。
【0013】
本発明の一実施形態では、前述の層状ドライバ・モデルを利用して本発明を実施する。このような実現例は、例えば、ローカル記憶媒体上に格納してある情報にアクセスすることができる1つ以上のファイル・システム・ドライバを備えることができる。ファイル・システム・ドライバの内少なくとも1つは、ファイルのリモート・ストレージ属性が存在する場合、それを識別するように適合化してある。したがって、このファイル・システム・ドライバは、リモート・ストレージ属性に格納してあるあらゆる情報を抽出し、その情報を階層ストレージ・マネージャに渡すことができる。すると、階層ストレージ・マネージャは、I/O要求を完了する責務を引き受けることができる。場合によっては、階層ストレージ・マネージャは、それ自体でI/O要求を完全に処理することが可能なこともあり、あるいはリモート・ストレージ属性またはローカル記憶媒体に格納してある情報を用いてI/O要求を処理することができることもある。このような場合、階層ストレージ・マネージャは、リモートに格納してある属性をリコールする必要がない。
【0014】
階層ストレージ・マネージャが、リモートに格納してある属性をリコールせずにはI/O要求を処理することができない場合、階層ストレージ・マネージャはリコール情報を発生し、これを適切なドライバまたはコンポーネントに渡すことによって、必要な情報をリコールすることができる。人の介入なく検索できるように情報を格納してある場合、このようなリコール手順は、I/O要求をドライバまたはその他のデータ・マネージャに発行することを伴う場合がある。その際、ドライバまたはその他のデータ・マネージャはリコール手順を起動し、一旦データを検索したなら、適切な情報を階層ストレージ・マネージャに渡す。代替案として、階層ストレージ・マネージャは、オペレータまたはその他の個人に適切な媒体を検索しロードするように警告することによって、情報にアクセスすることができる。本発明の構造全体は、広範囲にわたる記憶モデルおよび記憶階層に対応する高い柔軟性を提供する。
【0015】
以上の要約から、多種多様の階層ストレージ・マネージャを実施し、既存のシステムに組み込むことができ、しかもリモートに格納した属性を有さないファイルまたはディレクトリにアクセスするI/O要求には全くオーバーヘッドの追加を招かないことが明白であろう。その理由は、このようなI/O要求は、階層ストレージ・マネージャを必要とすることなく処理するからである。ファイル・システム・ドライバは、ファイルがリモート格納属性(remotely stored attribute)を必要とせず、従来通りにI/O要求を満たす(fill)ように進めることを絶対的に判断することができる。しかしながら、リモートに格納してある属性を有するファイルに遭遇した場合、ファイル・システム・ドライバは適切な情報を階層ストレージ・マネージャに渡し、階層ストレージ・マネージャはこのI/O要求を処理する責務を引き受ける。この実現例では、リモートに格納してあるデータに対する対応は、通常ではI/O処理に関与しないソフトウエア・コンポーネントに介入させI/O要求を処理するための制御を引き受けさせる機構による、通常の処理シーケンスの割込と見なすことができる。
【0016】
一実施形態では、リモート・ストレージ属性は、タグおよびデータ値双方を有する。タグは、リモート・ストレージ属性の「オーナ」である階層ストレージ・マネージャを特定するために用いる。通常、リモート・ストレージ属性のオーナは、関連するファイルを伴うI/O要求の全てまたは一部を処理する責務を負う。データ値は、リモート・ストレージ属性のオーナがその中に格納したデータを収容する。オーナは、リモート・ストレージ属性の値を用いて、関連するファイルを伴うI/O要求を適正に完了するために必要なまたは役立つあらゆる情報を格納することができる。例えば、殆どではないにしても多くの階層ストレージ・マネージャは、このようなデータ値を用いて、リモートに格納してある属性の位置を格納することが予期される。加えて、データ値は、どの属性をローカルに格納し、どの属性をリモートに格納するのかを格納するためにも用いることができる。
【0017】
複数の層状ドライバを用いる際、ファイル・システム・ドライバがリモート・ストレージ属性を識別する場合、ドライバは、リモート・ストレージ属性のタグおよび値を抽出することができる。次いで、階層ストレージ・マネージャがそれ自体をリモート・ストレージ属性のオーナであると認識するまで、このタグおよび値を他の情報と共に、他の層状ドライバに渡すことができる。次に、リモート・ストレージ属性のオーナは、I/O要求を処理する制御を引き受けることができ、このI/O要求を完全に処理することができる。あるいは、他のドライバまたはコンポーネントを利用してI/O要求を完全に処理することも可能である。
【0018】
このような実現例は、非常に柔軟なフレームワークをもたらし、多数の階層ストレージ・マネージャが単一システム内に共存することを可能にする。この場合、各階層ストレージ・マネージャは、それ自体の個々のリモート格納属性に関係するI/O要求を処理する。このような実現例は、高度のオーバーヘッド分離を達成するので、特定の形式のファイルを処理するためにシステムに追加の階層ストレージ・マネージャを加入しても、リモート格納属性を有するファイルまたはディレクトリに関係するI/O要求に伴うオーバーヘッドが大幅に追加されることはない。
【0019】
本発明の更に別の利点は、以下の説明に明記してあり、部分的にその説明から自明であり、あるいは本発明の実施によって習得することができよう。本発明の利点は、添付の請求の範囲に特定して指摘してある手段(instrument)および組み合わせによって、実現し獲得することができる。本発明のこれらおよびその他の特徴は、以下の説明および添付の請求の範囲から一層明白となり、以下に明記する本発明の実施によって習得することができよう。
【発明を実施するための最良の形態】
【0020】
本発明の前述の利点およびその他の利点を得る態様について、添付図面に図示した具体的な実施形態を参照しながら先に端的に記載した本発明を更に特定して説明する。これらの図面は本発明の典型的な実施形態を図示するに過ぎず、したがってその範囲の限定と見なすべきでないことを理解の上、添付図面の使用により、更に具体的かつ詳細に本発明の記載および説明を行う。
【0021】
以下、本発明のシステムおよび方法を実施するために用いる実施形態の構造または処理を例示する図を用いて、本発明の説明を行う。このように図を用いて本発明を提示することは、その範囲の限定と見なすべきではない。本発明は、データのリモート格納を実施する方法およびシステム双方を、ファイル・システムのネーティブ・コンポーネントとして考える。本発明の実施形態は、1つ以上の中央演算装置(CPU)またはコンピュータ実行可能命令を実行するその他の処理手段、実行可能な命令を格納するコンピュータ読取可能媒体、ディスプレイあるいは情報を表示または出力するその他の出力手段、キーボードあるいは情報を入力するその他の入力手段等の標準的なコンピュータ・ハードウエアを備えた、特殊目的用コンピュータまたは汎用コンピュータで構成することができる。
【0022】
本発明は、記憶デバイスの階層がシステムに使用可能であることを想定する。このような記憶デバイスの階層は、あらゆる数または形式の記憶媒体を備えることができ、それらには、ハイエンド・高スループット磁気ディスク、1つ以上の通常のディスク、光ディスク、光ディスクのジュークボックス、テープ・サイロおよび/またはオフラインで格納するテープの集合体を含み、なおもこれらに限定する訳ではない。一般的には、しかしながら、種々の記憶デバイスは2つの基本的なカテゴリに分類することができる。第1のカテゴリは、コンピュータ・システムにローカルに使用可能な情報を収容するローカル・ストレージ (local storage)である。第2のカテゴリは、コンピュータ・システムにローカルにアクセスすることができない情報を収容するあらゆる形式の記憶デバイスを含む、リモート・ストレージ (remote storage)である。これら2つデバイス・カテゴリ間の線は明確に定義することはできないが、一般的に、ローカル・ストレージは、比較的アクセス時間が素早く、頻繁にアクセスするデータを格納するために用いる。一方リモート・ストレージは、アクセス時間がかなり長く、頻繁にはアクセスしないデータを格納するために用いる。また、リモート・ストレージの容量は、典型的に、ローカル・ストレージの容量よりも1桁大きい。
【0023】
また、本発明の範囲内の実施形態は、実行可能な命令またはデータ・フィールドを格納してある、コンピュータ読取可能媒体も含む。このようなコンピュータ読取可能媒体は、汎用コンピュータまたは特殊目的用コンピュータによってアクセス可能なあらゆる入手可能な媒体とすることができる。限定ではない一例として、このようなコンピュータ読取可能媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク・ストレージ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の実行可能命令またはデータ・フィールドを格納するために使用することができ、かつ汎用コンピュータまたは特殊目的用コンピュータによってアクセス可能なその他のあらゆる媒体を含むことができる。また、これらの組み合わせも、コンピュータ読取可能媒体の範囲内に含まれて当然である。実行可能な命令は、例えば、汎用コンピュータ、特殊目的用コンピュータ、または特殊目的処理装置にある種の機能または機能群を実行させる命令およびデータから成る。
【0024】
本発明の実施形態には、I/O処理を行うために複数のドライバ手段を用いるシステムにおいて実施するとよいものがある。これらの実施形態の状況(context)を一層よく理解するために、図1を参照する。図1は、クライアント・プロセスと、I/O処理を行うための複数のドライバ手段を用いるI/Oシステムを有するオペレーティング・システムとの間の双方向処理の簡略化した図を示す。この図は、例えば、Microsoft Windows NT (R)オペレーティング・システムを表わす。図1は、I/O処理を行うために複数のドライバ手段を用いるあらゆるオペレーティング・システムを表わす図と考えることもできる。図1において、クライアント・プロセス20は、オペレーティング・システム・サービス22を利用してI/O要求を行う。これを行うには、典型的に、オペレーティング・システムが提供するアプリケーション・プログラム・インターフェース(API)機能に対して、クライアント・プロセス20がコールする。適切なAPI機能をコールすることにより、結果的にオペレーティング・システム・サービス22へのコールが得られる。このようなコールを矢印24で示す。
【0025】
図1では、クライアント・プロセス20は、「ユーザ」モードで動作するように示してあり、オペレーティング・システム・サービスは、「カーネル」モードで動作するように示してある。最近のオペレーティング・システムは、典型的に、種々のアプリケーション・プログラムや直感的ユーザ・インターフェースにロバストな環境を提供する。このようなオペレーティング・システムは、通常、当該オペレーティング・システムの精巧さのレベルや、オペレーティング・システムが実施するセキュリティ機能(security feature)に応じて、異なるオペレーティング・レベルまたは「モード」を有する。通常のアプリケーション・プログラムは、典型的には最も低い優先度で走り、セキュリティ・デバイスの完全な補体(full complement)を適所に有し、他のアプリケーションまたはオペレーティング・システムのその他の層との干渉を禁止する。オペレーティング・システムが提供するハードウエアおよびその他のサービスは、インターフェースまたは機構を制御することによってのみアクセスされ、ユーザ・アプリケーションまたはその他のユーザ・モードのプロセスがシステムを「クラッシュ」する可能性を抑制する。典型的に、最低優先度モードをユーザ・モードと呼び、これは殆どのコンピュータ・ユーザが精通しているモードである。ドライバとそれらに関連するハードウエアの緊密な統合化のため、および多くのドライバが実行するタスクの時間厳格性(time critical nature)のため、ドライバは典型的にオペレーティング・システム・モードで走る。これは、優先度がかなり高く、セキュリティ保護はかなり低い。このモードを一般に「カーネル」モードと呼ぶ。ドライバおよび他のオペレーティング・システム・サービスをカーネル・モードに置くことにより、オペレーティング・システムはより高い優先度で走り、ユーザ・モードからでは不可能な多くの機能を実行することが可能となる。
【0026】
クライアント・プロセス20がオペレーティング・システム・サービス22をコールしてI/O要求を実行する場合、I/O要求を第1ドライバ手段に渡し、I/O処理を実行する。図1では、ファイル・システム・ドライバ26およびデバイス・ドライバ28が、I/O処理を実行するドライバ手段の例を表わす。I/O要求の第1ドライバ手段への受け渡しは、図1では、例えば矢印30で示してある。すると、ファイル・システム・ドライバ26はI/O要求を取り込み、次のドライバにI/O要求を渡す前に、このI/O要求の部分的処理を概略的に実行する。
【0027】
一例として、クライアント・プロセス20がハードウエア・デバイス36上で特定のファイルを開いて、そのファイルから情報を検索または格納したいと仮定する。I/O要求は、クライアント・プロセス20からオペレーティング・システム・サービス22に移り、次いでファイル・システム・ドライバ26に達する。次に、ファイル・システム・ドライバ26は、I/O要求をファイル名からハードウエア・デバイス36上の特定位置に変換する。この変換プロセスは、その特定位置においてハードウエア・デバイスから読み取るべきまたはハードウエア・デバイスに書き込むべきデータ・ブロックの数を含むとよい。この情報は、次に、次のドライバ、例えば、デバイス・ドライバ28に渡すことができる。デバイス・ドライバ28が要求する情報を受け渡すプロセスは、図1では矢印32および34で示している。デバイス・ドライバ28は、読み出しまたは書き込みを行う位置およびデータ・ブロック数を取り込み、これらを適切な制御信号に変換し、所望の情報をハードウエア・デバイス36から検索するか、あるいは所望の情報をハードウエア・デバイス36に格納する。検索したデータは、次に、デバイス・ドライバ28からファイル・システム・ドライバ26に渡し、最終的には、戻り矢印38で示すように、クライアント・プロセス20に戻すことができる。ステータス情報も同様に戻すことができる。
【0028】
図1において、I/O要求は、ファイル・システム・ドライバ26とデバイス・ドライバ28との間で直接受け渡すことはしない。代わりに、I/O要求は、I/Oマネージャ40を介して、ドライバ間で受け渡しする。しかしながら、全ての実現例においてI/Oマネージャを有することが必要という訳ではない。I/O要求を直接あるドライバから別のドライバに渡し、I/Oマネージャによって転送を調整しなくてもよい実施形態も存在する。
【0029】
次に図2を参照し、ファイルのある属性をリモートに格納し、ファイルの別の属性をローカルに格納するプロセスを一般化した図を示す。図2に示すように、全体的に42で示すファイルは、システム属性44およびユーザ属性46で構成することができる。以下で更に詳細に論ずるが、システム属性とは、オペレーティング・システムおよびI/Oシステムが主にまたは排他的に用いて、当該オペレーティング・システムおよびI/Oシステムがそれらの種々のタスクを実行可能とするのに必要または有用な情報を格納するための属性である。システム属性の一例は、ファイルまたはディレクトリに対するセキュリティ情報またはアクセス制御情報である。ユーザ属性とは、ユーザまたはその他のクライアント・プロセスがそれ自体の目的のために用いる属性である。ファイルのデータ属性が、ユーザ属性のよい例である。システム属性およびユーザ属性については、以下で更に詳しく論ずる。
【0030】
リモート格納処理ブロック48によってファイル42を検査する。リモート格納処理ブロック48は、ファイル42のどの属性をリモートに格納し、リモートに格納する属性をどこに格納するのかを決定する責務を担う。これらの決定を下す際に、リモート格納処理ブロック48は、多数のファクタを検討することができる。このようなファクタには、例えば、これまでに当該属性をアクセスした頻度を含むことができる。一般に、長時間データがアクセスされないでいる場合、近い将来においてそれにアクセスする可能性は低いという理論から、アクセス頻度が非常に低いデータは、リモート・ストレージに移動させるとよい。リモート格納処理ブロック48が考慮するとよい別のファクタにサイズがある。ある属性が費やすローカル記憶空間が非常に少ない場合、この属性をリモート・ストレージに移動させても、得るものは多くない。一方、大量のローカル記憶空間を費やす属性の場合、この属性をリモート・ストレージに移動させると、大量のローカル・ストレージが空くので、ローカル・ストレージの空間が貴重な場合、このような移動は有効である。
【0031】
どの属性をリモートに格納し、どこにその属性を格納するのかについて決定する際に、多数の他のファクタも影響する場合がある。このようなファクタには、例えば、リモート記憶媒体にアクセスする時間が含まれる場合がある。例えば、属性をローカル・ストレージから光ジュークボックスに移動させる場合、アクセス時間が大幅に増大しないと思われる。恐らく、適正な光ディスクを選択し装填して、そこから情報を検索するために必要な時間はさほど多くないであろう。一方、属性をオフライン・テープ・ストレージに移動させた場合、オペレータの手作業によって検索しロードしなければならないので、検索時間が多大となる可能性がある。一般に、どの属性をリモートに格納し、このような属性をどこに格納すべきかについて決定する場合、リモート格納処理ブロック48は、ストレージの総合的費用効率性や、異なるクラスのアプリケーションに対するI/Oの応答時間のような異なるパラメータを最適化する。どの属性をリモートに格納し、このような属性をどこに格納すべきかについて選択するために利用する正確な方法論は、本発明では規定しない。本発明を用いると、いかなるリモート格納の目標を所望する場合でも、それを達成することができる。
【0032】
本発明の範囲内の実施形態は、様々な方法で、リモート格納処理ブロック48と関連付けて記載する総合的な処理を実施することができる。以下で更に詳しく説明するが、リモート格納処理ブロック48の機能は、I/O処理を実行するドライバ手段によって実施することができる。このようなドライバ手段は、I/Oシステム内の他のあらゆるドライバ手段からも分離することができる。代替案では、リモート格納処理ブロック48の機能は、I/Oシステム内で用いられる多目的ドライバ手段または単一目的ドライバ手段に組み込むことも可能である。以下の説明で一層明白になるであろうが、本発明にとって重要なのは、リモート格納処理ブロック48の機能をI/Oシステム内に組み込み、I/Oシステムがリモート・ストレージに対するネーティブな支援に対処し、従来技術に記載したような非統合コンポーネントに頼る必要性をなくすことが全てである。
【0033】
リモート格納処理ブロック48が、ファイル42の属性のどれをリモートに格納し、このような属性をどこに格納すべきか決定した後、リモート格納処理ブロック48は、適切なフォーマットに属性を組み立て、これらの属性をリモート・ストレージに転送するステップを開始する。図2では、この手順は、概略的に、リモート格納属性50、読み出し/書き込みデータ処理ブロック52、およびリモート・ストレージ54によって示している。複数のリモート格納属性50、読み出し/書き込みデータ処理ブロック52、およびリモート・ストレージ54を示すのは、特定のファイルからのリモート格納属性は、同じ場所に格納したり、同じ形式のリモート記憶デバイスに格納することさえも不要であることを強調するためである。図2では、50で示す各ブロックが、リモートに格納する1つ以上の属性を収容することができる。本発明の固有の柔軟性のために、リモート格納処理ブロック49は、属性1つ毎に決定を下すことができるので、個々の属性を最も適切な場所に格納することが可能となる。このような柔軟性は、特定のファイルの属性全てを同じ場所に格納可能であることを当然含むものである。
【0034】
リモート格納属性50、読み出し/書き込みデータ処理ブロック52、およびリモート・ストレージ54は、特定のリモート記憶デバイスにアクセスするために存在するいかなる機構を用いても、適切なデータを転送し、適切なリモート記憶デバイス上に格納することを単に必要とする概念的なデータ・フロー経路を示す。より詳細な例によって以下に例示するように、読み出し/書き込みデータ処理ブロック52は、対応するリモート記憶デバイスが、リモート格納処理ブロック48が位置するシステムによって直接アクセス可能である場合、I/O処理を実行するためには単一のドライバ手段を用いて実施することができ、あるいはネットワークまたは多数のコンピュータ・システム間で通信するその他の手段を通じた多数のコンピュータ上で走るI/O処理を実行するためには、数個のドライバ手段とすることも可能である。必要なのは、適切なデータを適切なリモート記憶デバイスに渡し、そこに格納するだけである。一般的に、読み出し/書き込みデータ処理ブロック52を実施するために用いる機構は、本発明を実施するために用いる具体的な動作環境、ならびにリモート記憶デバイス54とリモート格納処理ブロック48が位置するシステムとの間のデータ・フロー経路を備えるのに必要な特定のハードウエアおよび/またはソフトウエアによって、かなり左右される。
【0035】
リモート格納処理ブロック48が、どの属性をリモートに格納するか決定し、リモート格納属性50のように、適切なデータ・フォーマットの属性を組み立てた後、ファイル42から属性を安全に除去することができる。実施形態によっては、リモート格納属性50をリモート・ストレージ上に安全に格納するまで、これらをファイル42から除去する前に待つ方が望ましい場合もある。リモート格納属性50の除去は、図2では、破線エリア56および58で示す。これらのエリアは、システム属性およびユーザ属性双方共、本発明にしたがってリモートに格納できることを示す。加えて、リモート格納処理ブロック48は、リモート・ストレージ属性60をファイル42のシステム属性に追加する。
【0036】
リモート・ストレージ属性60については以下で更に詳しく論ずるが、リモート・ストレージ属性60は、通常、リモート格納処理ブロック48が、リモート格納属性50がどこに位置するのか確認するために必要なあらゆる情報を格納するために用いられる。加えて、リモート・ストレージ属性60は、リモート格納処理ブロック48の個々の実施にしたがって、多種多様のその他の情報を収容することができる。例えば、リモート・ストレージ属性60内でどの属性をリモートに格納してあるかを格納することが望ましい場合がある。別の場合には、ファイル42は、どの属性をリモートに格納してあるかについてのアイデンティティを、他の機構によって判定可能とするような構造である場合も恐らくあるであろう。同様に、他の情報もリモート・ストレージ属性60に格納することも可能である。例えば、リモート格納処理ブロック48は、リモート・ストレージ54内に格納してあるデータの保全性(integrity)を全面的に信頼してはいない場合も恐らくあるであろう。このような場合、リモート格納処理ブロック48は、リモート格納属性上でディジタル指紋またはサインを計算し、この指紋またはサインをリモート・ストレージ属性60にセーブすることができる。この場合、リモート属性を検索すると、リモート属性に対して第2サインを計算し、計算したサインを、リモート・ストレージ属性60に格納してあるサインと比較することができる。このような手順により、リモート格納処理ブロック48は、リモート格納属性をリモート・ストレージ54から検出する際に、それらに生じたあらゆる変化を検出することが可能になる。
【0037】
以上の説明から明らかなように、リモート格納処理ブロック48が必要とするまたは所望するあらゆる数または形式のデータでも、リモート・ストレージ属性60に格納することができる。リモート・ストレージ属性60の重要な特徴は、これがファイル42の状態の固有部分を形成するので、I/Oシステムはこれを追跡しファイルの他の属性全てと同様に一元管理することにある。これが意味するのは、ファイル・システムは、ファイル内の他のあらゆる属性と全く同様に、リモート・ストレージ属性を検出し、操作し、またはその他の方法で処理可能であるということである。したがって、ファイルを扱うユーティリティは、リモート・ストレージ属性上で具体的に動作する機能性を組み込むことができる。例えば、ディレクトリのリストは、リモート・ストレージ属性60を検査し、ローカル・ストレージ空間の割合、および使用可能なファイルが占めるリモート・ストレージ空間の割合を確認することができる。加えて、あるリモート格納データにアクセスするために必要な検索時間を推定するユーティリティを開発することも可能である。このようなユーティリティによって、システム・マネージャは、変化する状態またはその他の基準に基づいて、リモート格納処理ブロックの動作を微調整(fine-tune)即ち修正することが可能となる。この情報全ては、単に、ローカルに格納してある情報を検査するだけでコンパイル可能であることを注記しておく。また、本発明は、従来技術のシステムでは得られない他の利点も広く提供する。
【0038】
図2では、ファイル42のシステム属性部分に追加するものとして、リモート・ストレージ属性60を示している。以下で一層明らかとなる理由のために、リモート・ストレージ属性60をユーザの変更から保護することが考えられる。リモート・ストレージ属性60は、リモート格納処理ブロック48がその様々な機能を実行するために必要な情報を格納するために用いるので、ユーザの変更や干渉から保護して当然である。しかしながら、リモート・ストレージ属性60に格納する情報の少なくとも一部は、場合によっては、ユーザやその他のクライアント・プロセスに関心があることも考えられる。適切な状況において、このような情報をユーザまたはクライアント・プロセスに使用可能にしてもよい。また、システム・マネージャが使用するために設計したユーティリティのような特殊化したクライアント・プロセスに、リモート・ストレージ属性60内の情報を変更させることが必要となることも、稀にあり得る。このような特殊化ユーティリティによる特別な場合のアクセスは、リモート・ストレージ属性60をシステム属性グループの外側に置くものとして解釈すべきでない。リモート・ストレージ属性60の主な使用は、I/Oシステム自体が、そのリモート格納機能を実施するため、および本発明のリモート格納機能性をファイル・システム自体に統合するためである。
【0039】
一旦リモート・ストレージ属性60をファイルに追加し、リモート格納属性をファイルから除去したなら、そのファイルをローカル・ストレージに格納することができる。このプロセスは、図2において、読み出し/書き込みデータ処理ブロック62およびローカル・ストレージ64によって示してある。読み出し/書き込み処理ブロック62およびローカル・ストレージ64は、リモート格納処理ブロック48からローカル・ストレージ64までの概念的なデータ・フロー経路を表わそうとしたものである。正確な実施の詳細は、本発明を実施するために選択する個々の動作環境によって異なる。以下で更に詳しく説明するが、読み出し/書き込みデータ処理ブロック62は、I/O処理を実行するための別個のドライバ手段によって実施してもよく、あるいはリモート格納処理ブロック48と纏めて、I/O処理を実行するためのより大きなモノリシック・ドライバ手段(monolithic, driver means)を形成してもよい。
【0040】
図2に提示する例は、リモート格納処理ブロック48が検査する特定のファイル、およびどの属性をローカルに格納し、どの属性をリモートに格納し、リモートに格納する属性をどこに配置するかについて行う決定を示す。このような手順は、システムに適切な機構であればいずれによっても行えることを注記しておく。例えば、ローカル・ストレージ64において、リモート・ストレージに移動させるべき情報を検査するために周期的にユーティリティを走らせるようにスケジューリングを行うことも可能である。あるいは、アクセスする毎に各ファイルを検査するように、システムを設定することも可能である。更に別の例として、恐らくこのような手順は、ユーザまたはシステム・マネージャの要求によってのみ起動する。本質的に、本発明は、このような手順をいつ利用するかについては定義せず、単に情報をローカル・ストレージからリモート・ストレージに移動させる機構について記載するに止まる。
【0041】
これまでの説明は具体的に本発明がファイルに対してどのような処理を行うのかということを対象にしてきたが、本発明の概念は、排他的にまたは主にシステムが用いるために設計した属性の集合を有する、あらゆるローカルに格納したエンティティとでも使用可能である。したがって、ファイルの例は、あらゆる観点においても例示として見なし、本発明の範囲をいずれの特定のエンティティにも限定して捕らえてはならない。
【0042】
次に図3を参照し、リモート格納属性を有するファイルを伴うI/O要求の処理を表わす上位ブロック図を示す。本発明の関連においては、I/O要求は、本発明を実施するI/Oシステムが実行することができるあらゆる動作であるとする。したがって、I/O要求の定義は、単なるファイル・データの読み書きを遥かに越えるものである。状況によっては、特定のファイルをアクセスした場合にある電話番号に通話するというように、I/O要求が、従来のI/O動作と関連のない他のアクションをトリガする場合もある。本発明の状況においては、この用語は広く解釈することを想定する。
【0043】
I/O要求が、リモート格納属性を有するファイルまたはその他のエンティティを伴う場合、読み出し/書き込みデータ処理ブロック62は、リモート格納属性が関与することを確認することができる。これは、リモート・ストレージ属性60の存在によるものである。このような属性を検出した場合、リモート・ストレージ属性60内の情報をリモート格納処理ブロック48に渡すことができる。すると、リモート格納処理ブロック48は、I/O要求を処理するために何をする必要があるかについて判定を行うことができる。種々の実施形態が、種々の形式の情報をリモート格納処理ブロック48に渡すことができる。例えば、リモート・ストレージ属性60内の情報を単にリモート格納処理ブロック48に渡すことも可能である。次に、リモート格納処理ブロック48がローカル・ストレージ64からの他の情報を必要とする場合、リモート格納処理ブロック48は、読み出し/書き込みデータ処理ブロック62が所望の情報を検索することを要求することができる。あるいは、当初からより多くの情報をリモート格納処理ブロック48に渡してもよい。このような詳細は、本発明にはさほど重要ではない設計上の選択事項と見なす。図3では、ローカル・ストレージ64からリモート格納処理ブロック48へ検索情報を渡す処理は、ファイル66によって示しており、このファイルをリモート格納処理ブロック48に渡す。
【0044】
一旦リモート格納処理ブロック48がリモート・ストレージ属性60およびその他のあらゆる必要な情報を受け取ったならば、リモート格納処理ブロック48は、I/O要求はローカルに格納してある情報を用いて処理することができるか、またはI/O要求を処理するには、リモート・ストレージ54から情報を検索することが必要であるかについて判定を行うことができる。リモート・ストレージ54から情報を検索することなくI/O要求を処理できるか否かに関する問題は、個々のI/O要求およびリモートに格納してある属性によって異なる。
【0045】
特定的な例として、システムにアクセス可能な情報のコンテンツ・インデックス付け(content indexing)を実施するI/Oシステムについて検討する。このようなシステムでは、ユーザは、ローカルまたはリモート記憶デバイス上の個々のアドレスによってではなく、キー・ワードまたはその他のコンテンツ情報によって、情報を検索することができる。例えば、ユーザは、ある個人が著した文書全て、特定のトピックに関する文書全て、または特定の単語または文章を有する文書全てを要求することができる。このようなコンテンツ・インデックス付け方式の場合、情報を検査し、種々のコンテンツ・キーを格納する必要がある。実現例によっては、コンテンツ・キーを1つ以上のファイルの属性として格納することが可能な場合もある。その際、ファイルのデータをリモートに格納する場合であっても、コンテンツ・キーはローカルに保持するとよい。このような状況では、ユーザが、あるコンテンツ・キーを収容する全ファイルのリストを要求する場合、コンテンツ・キーをローカルに保持してあれば、単にローカル・ストレージ64から情報を読み出すことによって、この要求を満たすことができる。このような状況では、リモート格納処理ブロック48は、単にローカル・ストレージ64上で適切な情報を検査し、応答68で例示するように、適切な応答を発生する。
【0046】
しかしながら、リモートに格納してある情報にユーザがアクセスしたい場合、このような情報はリモート・ストレージ54から検索する必要がある。このような状況では、リモート格納処理ブロック48は、要求された情報を検索するステップを起動すればよい。これを、図3において、属性リコール70で示す。図3では、属性リコール70は、読み出し/書き込みデータ処理ブロック52が処理するものとして示す。リモート・ストレージ54が、オペレータの介入なく、読み出し/書き込みデータ処理ブロック52によるアクセスが可能な場合、読み出し/書き込みデータ処理ブロック52は単にリモート・ストレージ54から、要求された属性を検索し、リモート格納属性72で示すように、リモート格納処理ブロック48にこれらを返せばよい。しかしながら、オペレータの介入が必要な場合、恐らく読み出し/書き込みデータ処理ブロック52、またはその他の処理ブロックは、要求された情報を検索するために必要な適切なリモート記憶媒体をロードするか、またはその他の方法でアクセス可能にするように、オペレータに警告する必要がある場合もあり得る。次に、一旦適切な媒体が使用可能になったなら、要求された情報を検索し、リモート格納処理ブロック48に返すことができる。いずれの場合でも、例えば、応答68のような適切な応答を戻すことができる。
【0047】
次に図4を参照し、本発明と共に用いるのに適したファイルの属性を表わす図を示す。これらの属性は、Microsoft Windows NT(R)に特定して開発したNTFSファイル・システムが用いる属性の修正リストを表わす。NTFSファイル・システムについては、Microsoft Press(マイクロソフト・プレス社)が発行したHelen Custer(ヘレン・カスター)によるInside the Windows NT file System(Windows NTファイル・システムの内側)により詳細に記載されており、この言及により本願にも含まれるものとする。図4では、ファイルを構成する属性は、2つの基本的グループに分割することができる。第1グループはシステム属性を収容し、第2グループはユーザ属性を収容する。一般的に、システム属性は、システムがその種々の機能を実行するために必要なまたは要求される情報を格納するために用いられる。このようなシステム属性は、通常、ロバストなファイル・システムの実施を可能にする。システム属性の正確な数および形式は、概して、個々のオペレーティング・システムまたは利用する個々のファイル・システムに全面的に依存する。一方、ユーザ属性は、ユーザが制御するデータを格納するために用いられる。これは、ユーザがある状況の下では1つ以上のシステム属性へのアクセスを得られないということではない。しかしながら、ユーザ属性は、ユーザまたはクライアント・プログラムが対象のデータをプログラムに格納することができる格納場所を定義する。図4では、システム属性は全体的に74で示し、ユーザ属性は全体的に76で示している。
【0048】
システム属性は、例えば、標準情報属性78、属性リスト80、名称属性82、セキュリティ記述子属性84、およびリモート・ストレージ属性86で構成することができる。標準情報属性78は、読み出しのみ、読み出し/書き込み、隠れ(hidden)等のような標準的な"MS-DOS"属性を表す。属性リスト80は、ファイルがマスタ・ファイル・テーブル内において2つ以上の記憶レコードを占有する場合に、ファイルを構成する追加の属性の場所を識別するためにNTFSが使用する属性である。マスタ・ファイル・テーブルは、ファイルまたはディレクトリの常駐属性全てを格納する場所である。名称属性82は、ファイルの名称である。NTFSでは、ファイルは多数の名称属性、例えば、長い名称、短いMS-DOS名称等を有する場合がある。セキュリティ記述子属性84は、ファイルを所有するのが誰で、それにアクセスすることができるのは誰かを指定するために、Windows NT (R)が用いるデータ構造を収容する。これらの属性については、先に言及して本願にも含まれるものとした、Inside the Windows NT File Systemに更に詳細に記載されている。
【0049】
リモート・ストレージ属性86は、本発明が追加する新たな属性である。リモート・ストレージ属性86は、特定のファイルを、リモート格納属性を有するものとして識別する。リモート・ストレージ属性は、リモート格納属性の場所を識別できるのに十分な情報を収容することが好ましい。全ての属性は、全体として捕らえた場合、特定のファイルのどの属性がリモート格納であり、どの属性がローカル格納か識別可能でなければならない。このような情報は、リモート・ストレージ属性86に収容することができ、あるいはこのような情報は、ファイルの他の属性を検査することによって得ることも可能である。例えば、各属性が特定の長さである場合、または特定の属性の長さを属性と共に格納する場合、単純に予測長を実際にローカル・ストレージ上に格納してある長さと比較することによって、どの属性がリモート格納であるのか識別することが可能となる。例えば、あるデータ属性が100Kバイト長であると予想し、実際に格納してある情報量がかなり少ない場合、このデータ属性はリモート格納と推定することができる。あるいは、このような情報は、単純にリモート・ストレージ属性86に組み込むことも可能である。一実施形態では、リモート・ストレージ属性は、次のように構成する。
【0050】
【表1】

【0051】
以下で更に詳しく説明するように、本発明の実施形態のあるものは、I/O処理を実行するために複数のドライバ手段を利用し、リモート・データ格納処理を実施する場合がある。例えば、図2または図3のリモート格納処理ブロック48は、I/O処理を実行するための1つのドライバ手段に実施することができ、読み出し/書き込みデータ処理ブロック62は、I/O処理を実行するための他のドライバ手段を用いて実施することができる。この場合、これら2つのドライバ手段は、これらの間で情報をやりとりすることにより、本発明の目的を達成するように調整することができる。実際には、リモート格納処理の機能を実施するI/O処理を実行するためのドライバ手段は、単純に、I/Oシステム内の種々の目的のために用いる複数のドライバ手段の内の1つとしてもよい。このような実施形態について、以下に論ずる。このような状況では、リモート格納属性を有するファイルを伴うI/O要求を処理する責務を引き受けるのは、どのドライバであるのか確認する必要がある場合もある。本発明の範囲内の実施形態は、I/O要求の少なくとも一部を処理すべきドライバとして、特定のドライバ手段を特定する手段を備えることができる。特定のドライバをリモート・ストレージ属性のオーナとして特定する機構であれば、いずれでもこのような手段に用いることができる。リモート・ストレージ属性が、先のテーブルに示す構造を有する場合、このような手段は、例えば、タグ値を備えることができる。この例では、タグは、リモート・ストレージ属性のオーナのIDを収容するデータ・ワードである。このような機構により、単一システム内に複数の階層ストレージ・マネージャが存在することが可能となり、各階層ストレージ・マネージャは、異なる形式のファイルまたは異なる形式のリモート記憶デバイスを伴うI/O要求を処理するように適合化してある。
【0052】
ドライバをどのシステム上にインストールするかには係わらず、同じタグを常に同じオーナ・ドライバに関連付けるように、タグを割り当てることが好ましい。言い換えると、タグ値を特定のドライバに割り当てる何らかの機構が存在することが好ましい。例えば、タグ値のブロックを種々のドライバ製造者に割り当てる中央レポジトリまたはクリアリング・ハウスがあるとよい。こうすると、ドライバ製造者は、タグを特定のドライバに割り当てることができる。タグ値を多くとも1つのドライバに関連付けさせる他のいずれの機構も、使用可能である。このようにタグ値を割り当てることにより、どのシステムにインストールしたかには係わらず、同じオーナ・ドライバが同じリモート格納要求を処理することが可能となる。あるいは、状況によっては、ローカル・タグ値を動的な方法で割り当て、インストール中にシステムによってタグ値を割り当てるようにすることも可能となる。しかしながら、このような方法ではいくつかの問題も存在する場合があるので、一般的には好ましくない。
【0053】
先のテーブルに示したリモート・ストレージ属性では、任意のリモート格納フラグを示した。先程リモート格納フラグを示したのは、リモート格納属性を有するファイルの識別を可能にする機構が存在しなければならないことを示すためである。このような指示を与えるには、例えば、リモート格納属性を有するファイルを示すリモート格納フラグを用いることができる。あるいは、他の機構を用いることも可能である。例えば、リモートに格納可能な各属性毎に、フラグを保持することも可能である。属性をリモートに格納する場合、フラグをセットすることができる。このような機構は、リモート格納属性が存在するという事実の確認だけでなく、どの属性をリモートに格納してあるかという確認も可能にする。更に別の例として、各属性の予想長を、ローカルに格納してあるデータの実際の長さと比較してもよい。更に別の例として、1つ以上のタグ値を、ファイルがリモート格納属性を全く有していないことを示すために確保することも可能である。このような機構を用いることにより、例えば、ファイルがリモート格納属性を全く有していないことを示すためにタグ0を確保することも可能となろう。ファイルが少なくとも1つのリモート格納属性を有する場合、他のいずれかのタグ値がこれを示すことになる。
【0054】
先に示したリモート・ストレージ属性によって、オーナが制御するデータの格納が可能となる。したがって、本発明の実施形態は、ドライバ手段がリモート格納属性を管理するために用いる情報を格納する手段を備える。一例として、限定ではなく、このような手段はオーナ制御データ・フィールドを備えるとよい。オーナ制御データ・フィールドは、リモート・ストレージ属性のオーナが、リモート格納属性を適正に管理するために必要なあらゆる形式のデータでも置くことができる場所を表わす。例えば、リモート格納属性の場所は、リモート・ストレージ属性のデータ・フィールドに格納することができる。他の例も既に示した。更に他の例として、階層ストレージ・マネージャの一部が、オーナ制御データ・フィールド内に、リモート格納属性のアイデンティティを格納できるようにするとよい。これは、階層ストレージ・マネージャが、どの属性をローカルに格納し、どの属性をリモートに格納したのかを素早く確認することを可能にする機構にもなる。このデータ・フィールドには、他のあらゆる形式のデータでも格納可能である。
【0055】
先に示したリモート・ストレージ属性では、データ・フィールドの前にデータ長指示子がある。この記憶フォーマットでは、データ・フィールドの長さを格納し、データ・フィールドを完成するために読み出さなければならないデータ量を確認する。あるいは、実施形態によっては、固定長のデータ・フィールド、あるいはポインタまたはリンクによって互いに連鎖した情報のブロックを利用するデータ・フィールドを格納する方が一層効率的な場合もあり得る。本質的に、データ・フィールドを完成するために読み出さなければならないデータ量を確認するあらゆる機構が利用可能である。オーナ・ドライバによって格納する必要があり得るデータ量についても考慮すべきであろう。このような考慮は、データ・フィールドをどのように格納するか、およびデータ・フィールドの最大可能長に影響を与える。
【0056】
次に図4を参照し、ファイルのユーザ属性を表わすグループ76について検討する。先に説明したように、ユーザ属性は、ユーザまたはクライアント・プロセス情報を格納するためにユーザまたはその他のクライアント・プロセスが用いる属性を表わす。NTFSファイルは、典型的に、図4にデータ1属性88およびデータ2属性90として示す、1つ以上のデータ属性を有する。従来のファイル・システムの殆どは、単一のデータ属性に対応するに過ぎない。データ属性は、ユーザ制御データを格納可能な場所と基本的には全く同様である。例えば、ワード・プロセッシング文書では、典型的に、ファイルのデータ属性に文書を格納する。NTFSファイル・システムでは、ファイルは多数のデータ属性を有することができる。1つのデータ属性を「無名」属性(unnamed attribute)と呼び、他の属性は各々関連する名称を有する名称付き属性である。データ属性の各々は、異なる形式のユーザ制御データを格納できる格納場所を表わす。本発明と組み合わせた場合、このようなファイル構造は、データ属性のいずれかまたは全てをローカルまたはリモートのいずれにも格納することが可能となる。これは、従来技術のシステムに対する有意義な利点を表わすことができる。従来技術のシステムでは、ファイル内のデータは、全てローカルに格納するか、あるいは全てリモートに格納するかのいずれかであった。データの一部分をローカルに、そしてデータの一部分をリモートに格納するという概念はなかった。NTFSファイル・システムの多数のデータ属性を用いることにより、あるデータをローカルに格納し、他のデータをリモートに格納することが可能となる。したがって、あるファイルが、規則的にアクセスされるある種のデータ、および稀にしかアクセスされなかった他のデータを収容する場合、稀にしかアクセスされなかったデータをリモート・ストレージに移動させることができ、一方頻繁にアクセスされたデータをローカル・ストレージに維持することができる。
【0057】
1つ以上のデータ属性に加えて、ファイルは、他の属性92で示すように、他のユーザ定義属性も有することができる。このような属性は、ユーザが定義し、ファイルと共に格納するその他のあらゆる属性を表わす。このようなユーザ定義属性は、ユーザが所望するあらゆる目的のために作成し用いることが可能である。
【0058】
これまでの説明は、特定のファイル形式に関して多少詳細に入り込んだものであったが、これは例示に過ぎず、本発明の範囲を限定するものと解釈すべきではない。本発明は、既存のファイルの属性にリモート・ストレージ属性を追加したあらゆる形式のファイルまたはその他のエンティティとでも作用する。代替物では、既存のシステム属性を共に選択(co-opt)即ち利用することにより、リモート格納情報を格納し、したがって、ファイル内の既存のシステム属性数を増大させることなく、リモート・ストレージ属性を含ませる方法を同等に備えることも可能な場合もあり得る。
【0059】
次に図5に移り、本発明の一実施形態の全体的な構造を示す。図5は、I/O処理を実行するためのドライバ手段を複数個利用するI/Oシステムを示す、上位概念図を表わす。クライアント・プロセス94は、I/O要求を作成し、矢印98で示すように、オペレーティング・システム・サービス96に最終的に送出する。図5に示すI/Oシステムは、複数のI/O処理を実行するドライバ手段を備えている。一例として、限定ではなく、図5では、このような手段は、層1ドライバ100、層2ドライバ102、および層Nドライバ104で示してある。
【0060】
このようなI/O要求はドライバ間でやりとりされるので、本発明の範囲内の実施形態は、ドライバ手段間でI/O要求を受け渡す手段を備えることができる。一例として、図5では、1つのドライバから他のドライバに直接受け渡すI/O要求を示す矢印106および108によって、このような手段を示している。このような手段は、ドライバ間のI/O要求の転送を扱うI/Oマネージャを備えることも可能である。このようなI/Oマネージャは、図5のI/Oマネージャ110とすることができる。
【0061】
図5において、I/Oマネージャ110は、クライアント・プロセッサ94から受け取ったI/O要求を層1ドライバ100に送出する。このようなI/O要求は、I/Oマネージャがコールした関数またはサービスの形態、あるいは、適切な情報を適切なドライバに転送する他のあらゆる機構とすることができる。例えば、Microsoft Windows NT (R)では、メッセージ・ドリブン機構(message driven mechanism)を用いてI/Oシステムの種々のドライバ間で通信を行う。このシステムでは、I/O要求の結果、I/OマネージャがI/O要求パケット(IRP:I/O Request Packet)を作成し、IRPを適切なドライバに送る。I/O要求を処理し別のドライバに送出する際、IRPに情報を添付し、IRPを次のドライバに渡す。加えて、新たなIRPを作成し次のドライバに送ることも可能である。状況によっては、IRPを次のドライバに渡す前に、修正するまたは「変身させる」(transmogrify)ことも可能である。Microsoft Windows NT (R)では、I/Oマネージャがドライバ間でIRPを転送する責務を負う。他のシステムでは、他の機構を用いることができる。このような実施の詳細は、設計上の選択事項であり、本発明には重要ではない。
【0062】
ここで図5に戻り、I/O要求は、矢印106で示すように、種々のドライバを通過し、各ドライバはあらゆる要求された処理を実行してから、I/O要求を次のドライバに送出する。尚、図5は各ドライバがI/O要求を順番に受け取ることを示すが、実施形態によっては、あるドライバを飛ばし、I/O要求を処理する必要のあるドライバのみが実際にI/O要求を扱うようにすることが望ましい場合もあり得る。
【0063】
本発明の一実施形態では、複数のドライバを用いてI/O処理を実行する場合、リモート・ストレージ属性を有するファイルに遭遇した場合、通常の処理シーケンスを中断する機構が存在する。この場合、制御を他のドライバに渡し、どのようにI/O要求を処理すべきかについて判断を下す。したがって、本発明の範囲内の実施形態は、I/O要求の処理を中断する手段を備えることができる。図5では、このような手段は、例えば、層Nドライバ104に組み込むことができる。本発明のこの実施形態では、リモート格納属性を有するファイルに遭遇した場合、通常の処理シーケンスを中断する。このようなファイルは、例えば、リモート・ストレージ属性の存在によって、あるいはリモート・ストレージ属性および/または先に説明した他の属性の検査によって識別することができる。
【0064】
リモート格納属性を有するファイルを認識した場合、I/O要求の通常の処理シーケンスを保留とし、I/O要求の処理を完了するステップを行う。これらのステップは、I/O要求を処理する制御を別のドライバに転送し、リモート格納属性を有するファイルに対するI/O要求の処理にこのドライバを参加させることを伴う。したがって、本発明の範囲内の実施形態は、I/O要求を処理する制御をドライバ間で転送する手段を備えることができる。I/O要求の処理を途中で中断する場合、I/O要求を処理するドライバから別のドライバに制御を移管するいずれの機構でも利用可能である。例えば、図5では、このような機構は矢印112で示している。これは、I/O要求の処理中にリモート格納属性を有するファイルに遭遇した際に、層Nドライバ104から層1ドライバ100にI/O要求を処理する制御を移管することを示す。以下で更に詳しく説明するが、制御をドライバ間で移管する機構は、制御を引き受けるドライバが適正にI/O要求を処理することができるように、ある情報を転送しなければならない場合もあり得る。したがって、本発明の範囲内の実施形態は、リモート格納情報をドライバに渡す手段も備えることができる。
【0065】
一旦層Nドライバ104から層1ドライバ100に制御を移管したなら、層1ドライバ100は適正にI/O要求を処理しなければならない。ある状況および実施形態では、制御を引き受けたドライバは、制御を移管したときに供給した情報によって、またはローカル・ストレージから追加情報を得ることによって、I/O要求を完全に処理できる場合もある。ドライバが追加情報を検索することなくI/O要求を処理することができる場合、矢印108および114で示すように、結果をクライアント・プロセッサに戻せばよい。
【0066】
ローカル・ストレージからまたはリモート・ストレージからの追加情報の検索なしではI/O要求を完全に処理することができない場合、ドライバは1つ以上の追加I/O要求を作成し、適切な情報を検索することが必要になる場合もある。したがって、本発明の範囲内の実施形態は、第2のI/O要求を作成する手段を含むことができる。図5では、このような作成手段は、ドライバを介してI/O要求を返送し、ローカル・ストレージ118から情報を得ることを表わす矢印116、またはリモート・ストレージ122から情報を検索するために送る要求を示す矢印120で表わしている。
【0067】
第2のI/O要求を作成するためには、所望の情報を検索するために必要なあらゆる機構を利用することができる。例えば、Microsoft Windows NT (R)では、このような手段は、新たなIRPを作成するか、または既存のIRPを変身させ、このIRPを適切なドライバに渡すことによって、実施することができる。以下で更に詳細に説明するが、ローカル・ストレージまたはリモート・ストレージから情報を検索する場合、他のコンピュータ・システムが処理を要求する場合もあり得る。したがって、第2のI/O要求を作成するためのこのような手段は、I/O要求を他のコンピュータにも転送する場合もある。しかしながら、いずれの場合でも、一旦適切な情報を検索すれば、矢印108および114で示すように、適切な応答をクライアント・プロセス94に返送することができる。
【0068】
要約すると、本発明のある実施形態は、I/O要求の通常処理シーケンスを中断し、階層ストレージ管理の責務を負うドライバに、リモート格納属性を有するファイルまたはその他のエンティティを伴うI/O要求の処理に介入および関与させるシステムおよび方法を提供する。図5は複数の層状ドライバを示すが、複数のドライバの機能性を1つ以上のモノリシック・ドライバに組み込んでもよいことは明白であろう。このようなシステムでは、ドライバ間通信の必要性が軽減する。しかしながら、層状ドライバを有するI/Oシステムの様々な利点は得られない。本発明を複数の層状ドライバに実施するかまたは数個の層状ドライバの機能性を組み込んだ1つ以上のモノリシック・ドライバに実施するかの選択は、設計上の選択事項であり、本発明には重要ではない。しかしながら、種々の機能エレメントが本質的に図示した態様で協働することが好ましい。言い換えると、1つ以上のリモート格納属性を有するファイルに遭遇した場合、このようなファイルを伴うI/O要求を処理する責務を負う処理ブロックに制御を渡す。適切な機能性については、既に説明した。
【0069】
次に図6に移り、I/O処理を実行する複数のドライバ手段を備えたI/Oシステムの更に詳細な図を提示する。図6におけるI/Oシステムは、Microsoft Windows (R)が利用するようなI/Oシステムとすればよい。I/O要求を処理する複数のドライバ手段を使用するその他のオペレーティング・システムも、同様の構造を有する場合もあり得る。同様に、図6との関連で論ずる概念は、複数のドライバまたは単一のモノリシック・ドライバを用いるあらゆるI/Oシステムを用いても、適切な機能性を適切なドライバに組み込むまたは組み合わせることによって実施することができる。したがって、図6に示す構造の使用は、あらゆる観点においても本発明の限定と見なすべきではなく、可能な実現例の1つに過ぎないと見なすべきである。
【0070】
図6に示す実施形態は、I/O処理を実行する複数のドライバ手段を備えている。既に説明したように、I/O処理およびI/O要求という用語は、広く解釈し、I/Oシステムが実行可能なあらゆる機能および動作を含むすることを意図している。一例として、限定ではなく、図6では、このようなドライバ手段は、全体的に124で示すドライバA、および全体的に126で示すドライバBによって例示してある。また、本発明の範囲内の実施形態は、ドライバ手段間でI/O要求を受け渡す手段も備えることができる。一例として、図6では、このような手段はI/Oマネージャ128によって示している。I/Oマネージャ128は、例えば、I/Oシステムが用いる複数のドライバ間でI/O要求を移管する責務を負うI/Oマネージャを表わす。先に論じたように、実施形態によっては、I/Oマネージャを利用しない場合もあり、更に種々のドライバ間の直接通信に頼る場合もある。このような実施形態では、ドライバ間でI/O処理要求を受け渡す手段は、一方のドライバがI/O要求を直接別のドライバに渡すために用いる機構となる。1つ以上のドライバの機能性をモノリシック・ドライバに組み込んだ更に別の実施形態では、ドライバ間でI/O要求を受け渡しする手段を必要としない場合もあり、あるいは単にモノリシック・ドライバ自体の内部に位置する場合もある。
【0071】
図6に示すように、ドライバA124およびドライバB126は、I/Oマネージャ128が種々の機能を行うためにアクセス可能な1組のサービスまたはルーチンを備えている。図6に示すルーチンは、Microsoft Windows NT (R)の下で動作するドライバが有することができる可能なルーチンの一部分を表わす。種々のルーチンに関する詳細は、Microsoft Press(マイクロソフト・プレス社)が発行したHelen Custer(ヘレン・カスター)によるInside the Windows NT file System(Windows NTファイル・システムの内側)の第8章に見ることができ、この言及により本願にも含まれるものとする。
【0072】
ある種のルーチンは、ドライバA124およびドライバB126双方に同様の機能を実行する。ルーチンの正確な詳細は非常に異なる場合もあるが、ルーチンの総合的な目的は同一である。ドライバA124およびドライバB126双方に同様の機能を実行するルーチンは、初期化ルーチン130、開始I/Oルーチン132、割込サービス・ルーチン134、延期手順コール・ルーチン136、キャンセルI/Oルーチン138、およびアンロード・ルーチン140を含む。これらのルーチンは、Microsoft Windows NT (R)のようなオペレーティング・システムの下でのドライバの動作には重要であるが、これらは本発明の目的上は総じて重要ではない。しかしながら、これらのルーチンの機能について以下に手短かに纏めておく。
【0073】
ドライバA124およびドライバB126双方は、初期化ルーチン130を有する。初期化ルーチンは各ドライバ毎に異なる場合もあるが、初期化ルーチンは、I/Oマネージャがドライバをオペレーティング・システムにロードするときに、I/Oマネージャが実行する。このルーチンは、I/Oマネージャにドライバを使用させかつアクセスさせるために必要なあらゆる初期化を実行する。開始I/Oルーチン132は、デバイスへのデータ転送またはデバイスからのデータ転送を起動するために用いる。割込サービス・ルーチン134は、デバイスが特定のドライバに割込を送る際にコールする。Windows NT (R)の下では、割込サービス・ルーチンにおける処理は、絶対少数に維持し、下位の割込を不必要に阻害することを回避している。延期手順コール・ルーチン136は、割込サービス・ルーチンを実行した後に、デバイスの割込を処理する際に必要な処理の殆どを実行する。キャンセルI/Oルーチン138は、I/O動作を取り消す場合にコールする。アンロード・ルーチン140は、I/Oマネージャがドライブをメモリから除去することができるように、システム資源を解放する。
【0074】
Microsoft Windows NT (R)の下にあるドライバは、ドライバA124のディスパッチ・ルーチン142やドライバB126のディスパッチ・ルーチン144のような、1組のディスパッチ・ルーチンを含む。ディスパッチ・ルーチンは、デバイス・ドライバが備える主要な機能である。その例には、読み出しまたは書き込み機能およびその他のあらゆるデバイスの機能(capability)、ファイル・システム、またはドライバが対応するネットワークがある。ドライバA124を用いてリモート格納機能を実行する場合、ディスパッチ・ルーチン142は、適切な機能性を発揮する(expose)ルーチンを含む。I/O動作をドライバによって処理する場合、I/Oマネージャ128はI/O要求パケット(IRP)を発生し、ドライバのディスパッチ・ルーチンの1つを通じて、ドライバをコールする。このように、図6では、I/O要求は、ドライバ間またはI/Oマネージャとドライバとの間で受け渡しされるIRPによって表わすことができる。
【0075】
多数のドライバが協働して種々の機能を実行する場合、1つのドライバが、I/O要求を後続のドライバに受け渡す前に、このI/O要求の部分的な処理を実行することも可能である。このような処理は、図6において、IRP146をドライバA124に渡し、IRP処理ブロック148で示すようにドライバA124によって部分的に処理し、更にIRP150を介してドライバB126に渡すことによって示している。IRP146およびIRP150は、同じIRPであることに注意されたい。しかしながら、IRPがどのようにドライバ間を流れることができるのかを明確に確認するために、図6ではこれらに別個の番号を付してある。また、IRP146およびIRP150とは異なるように、新たなIRPを作成する実施形態を有することも可能な場合もある。
【0076】
I/O要求がリモート格納属性を有するファイルまたはその他のエンティティを伴わない場合、ドライバは通常の方法でI/O要求を処理し、通常の方法でI/O要求に関連する情報を戻す。したがって、1つ以上の階層ストレージ・マネージャをインストールしているシステムは、リモート格納属性を有するファイルを伴うI/O要求に遭遇する前に、階層ストレージ・マネージャからは殆どまたは全く処理オーバーヘッドを受けることはない。例えば、図6では、ドライバB126がIRP150を受け取った場合、IRP処理ブロック152がこれを通常の方法で処理することができる。処理の結果は、IRP154に戻すことができる。図6には示さないが、IRP154は、ドライバB126による処理の後、ドライバA124に戻すことができる。これは、通常のI/O処理の全部分であり、先に言及によって本願にも含まれるものとした、Inside Windows NTに更に詳細に説明されている。
【0077】
図5との関連で既に説明したように、複数のドライバ手段を利用して本発明の機能性を実施する実施形態では、リモート格納属性を有するファイルを伴うI/O要求に遭遇した場合、I/O要求の正常な処理を中断し、リモート格納属性を有するファイルを伴うI/O要求を扱うように特定して適合化したドライバに制御を移管する。このプロセスを遂行するために、本発明の範囲内の実施形態は、I/O要求の処理を中断する手段を備えている。このような手段は、I/O要求がリモート格納属性を有するファイルを伴い、I/O要求の処理を途中で終了し制御を他のドライバに移管できるようにすることをドライバが認識する機構であれば、そのいずれでもよい。図6では、このような手段は、例えば、リモート格納検出ブロック156で示している。
【0078】
リモート格納属性を有するファイルの検出は、種々の方法で実施することができる。これらの殆どについては、リモート・ストレージ属性の可能な1実現例との関連で既に論じてある。リモート・ストレージ属性の正確な内容および個々の実現例によっては、リモート・ストレージ属性の内容を単に検査することによって、リモート格納属性を有するファイルを識別することが可能なこともあり得る。既に論じたように、このようなリモート・ストレージ属性は、当該リモート・ストレージ属性がリモート格納属性に関する情報を収容したときを特定する、フラグまたはその他の手段を備えることができる。あるいは、単にファイル自体の中の情報を検査することによって、リモート格納属性を有するファイルを識別することが可能な場合もあり得る。例えば、1つ以上の属性の予想長を、ローカル・ストレージ上に格納してある属性の実際の長さと比較することにより、リモート格納属性を有するファイルを識別することが可能な場合もある。更に第3の代替物では、リモート格納属性を有するファイルの識別は、ある実施形態では、リモート・ストレージ属性に格納してある情報およびファイルに格納してあるその他の情報双方を検査することによって遂行することも可能である。一旦リモート・ストレージ属性の正確な実現例およびファイル構造を識別したなら、リモート格納属性を有するファイルを検出するために使用可能な種々の選択肢は明らかとなろう。
【0079】
リモート格納検出ブロック156が、あるI/O要求がリモート格納属性を有するファイルを伴うことを確認した場合、I/O要求の通常の処理を終了し、I/O要求を処理する責務を他のドライバに移管するためのステップを実行する。図6では、これらのステップはリモート格納処理ブロック158によって実行する。
【0080】
リモート格納処理ブロック158は、現ドライバから、I/O要求を処理する責務を引き受けるドライバに制御を移管するのに必要なあらゆる事前処理を実行する。例えば、リモート・ストレージ属性が既に論じたようにタグおよびデータ・フィールドを収容する場合、リモート格納処理ブロック158は、リモート・ストレージ属性からタグおよびデータ・フィールドを抽出し、リモート・ストレージ属性のオーナへの移管のためにこれらを準備する。このように、本発明の範囲内の実施形態は、リモート格納情報をドライバに渡す手段を備えることができる。一例として、限定ではなく、図6ではリモート格納データ160によってこのような手段を示している。リモート格納データ160は、単に、リモート格納処理ブロック158が抽出したリモート格納情報を表わす。実施形態によっては、リモート・ストレージ属性からリモート格納情報を抽出し、図6に示すようにそれをI/Oマネージャ128を介して渡すのではなく、これを直接リモート・ストレージ属性のオーナに渡すことができる場合もある。本質的に、リモート格納情報のオーナに、リモート・ストレージ属性内に格納してある情報にアクセスさせる機構であれば、そのいずれでも、リモート格納情報をドライバに渡す手段として利用することができる。これは、リモート格納情報を格納してある場所またはリモート・ストレージ属性自体にポインタを渡すことを含む。一実施形態では、リモート格納データ160は、IRPに含まれており、別のドライバに渡される。
【0081】
リモート格納属性を有するファイルを伴うI/O要求を識別した場合、このI/O要求を処理する責務をドライバ間で移管する。したがって、本発明の範囲内の実施形態は、I/O要求を処理する制御をドライバ間で移管する手段を備えている。図6に示す実施形態では、このような手段は、例えば、完了ルーチン162を備えることができる。Windows NT (R)オペレーティング・システムのために書かれたドライバは、下位ドライバがIRPを処理し終えた後に、I/Oマネージャがコールする1つ以上の完了ルーチンを備えることができる。例えば、ファイル・システム・ドライバおよびデバイス・ドライバを有する実施形態では、I/Oマネージャは、デバイス・ドライバがデータをファイルにまたはファイルから転送し終えた後に、ファイル・システム・ドライバの完了ルーチンをコールすることができる。完了ルーチンは、動作の成功、失敗、または取消についてファイル・システム・ドライバに通知することができ、ファイル・システムにクリーンアップ動作(cleanup operation)を実行させる。このように、通常の処理の間、ドライバB126がIRP150を受け取り、完全にこれを処理し、IRP154を戻した場合、I/Oマネージャ128はブロック162における完了ルーチンをコールすることができ、これがドライバA124にI/O動作の成功または失敗を通知し、ドライバA124にあらゆるクリーンアップ処理を実行させる。
【0082】
I/Oマネージャ128は、下位ドライバがその処理を完了したときに完了ルーチンをコールするので、このような完了ルーチンは、リモート格納属性を有するファイルを伴うI/O要求を処理する制御の移管を検出する機構を配置する理想的な場所を形成する。したがって、完了ルーチン162は、リモート格納データ160を検査し、ドライバA124がリモート・ストレージ属性のオーナであり、I/O要求を処理する責務を引き受けなければならないか否か確認することができる。
【0083】
しかしながら、リモート格納属性を有するファイルを伴うI/O要求を処理する責務をドライバが引き受ける前に、当該ドライバは、自分がリモート・ストレージ属性のオーナであるか否かについて確認しなければならない。これまでの説明によって、複数の階層ストレージ・マネージャまたはその他の特殊化ドライバを特定のシステム内に組み込み可能であることは明白であろう。したがって、ドライバの各々は、何らかの形式の特殊化処理を実行するように適合化することができる。前述のようなリモート・ストレージ属性を用いて、ドライバの各々に一意のタグ値を割り当てる。下位ドライバがリモート・ストレージ属性を有するファイルに遭遇した場合、下位ドライバは、タグおよびリモート・ストレージ属性の値を抽出し、これを上位のドライバまで受け戻す。すると、上位のドライバの各々は、タグ値を検査し、それ自体がリモート・ストレージ属性のオーナであり、I/O要求を処理する責務を引き受けなければならないか否か確認する。このように、個々のシステム内に異なるドライバ記憶マネージャが存在し、協働して、記憶の階層的管理を達成することができる。リモート格納または他の形式の特殊化処理のいずれかに使用可能な、これらの原理を採用し一般化した機構が、"FILE SYSTEM PRIMITIVE ALLOWING REPROCESSING OF I/O REQUESTS BY MULTIPLE DRIVERS IN A LAYERED DRIVER I/O SYSTEM"(層状ドライバI/Oシステムにおける多数のドライバによってI/O要求の再処理を可能にするファイル・システム・プリミティブ)と題する、同時係属中の米国特許出願番号第08/862,025号に開示されており(以下「再解析点」出願)、この言及により本願にも含まれるものとする。
【0084】
多層環境では、本発明の範囲内の実施形態は、特定のドライバが受け取ったリモート格納情報が、当該ドライバが所有するものであるか否かについて確認する手段を備えることができる。一例として、限定ではなく、図6ではリモート格納検出ブロック164によってこのような手段を示している。リモート格納検出ブロック164は、リモート格納データ160を検査し、ドライバA124がリモート格納情報のオーナであるか否かについて確認する。ドライバA124がリモート格納情報のオーナでない場合、ドライバA124は、完了処理ブロック166によって示す、必要な通常の完了処理を全て実行し、別のドライバに転送するためにリモート格納データ160をI/Oマネージャ128に渡すことができる。
【0085】
一方、リモート格納検出ブロック164が、ドライバA124をリモート格納情報のオーナとして特定した場合、制御はリモート格納処理ブロック168に移り、I/O要求の処理を更に進める。I/O要求を処理する制御を引き受けること以外に、ドライバがそれ自体をリモート格納情報のオーナとして特定した場合に発生することは、本発明では定義しない。しかしながら、通常、ドライバはI/O要求を処理する責務を引き受け、更にI/O要求を完了するステップを実行する。例えば、リモート格納処理ブロック168は、I/O要求の完了のために更に図2または図3に関連して既に説明した機能のいずれでも実行することができる。これは、リモート格納処理ブロック168が、リモート格納データ160内で受け取った情報を用いてI/O要求を完全に処理し終えることができるという状況を含む。このような状況では、ドライバがI/O要求を処理し終えた後に、通常の完了手順が続く。Microsoft Windows NT (R)の場合、これは、IRP内の必要なあらゆる情報をI/Oマネージャに返送し、更に転送することを含む。また、これは、いずれかの上位ドライバの完了ルーチンをコールし、必要なあらゆるクリーンアップ処理をそれらに実行させるか、あるいはI/O要求のステータスをそれらに知らせることも含む場合がある。
【0086】
状況によっては、リモート格納情報のオーナであるドライバは、それ自体でI/O要求の残りを完全に処理できない場合もあり得る。このような状況では、リモート格納処理ブロック169はIRPを発生し、これを他のドライバに渡すことによって、I/O要求を更に処理することを可能にする。あるいは、以下で図8との関連で論ずるように、I/O要求を発生し、他のコンピュータに渡して、更に処理を進めることも可能である。したがって、本発明の範囲以内の実施形態は、第2のI/O要求を作成し、元のI/O要求の処理を継続する手段を備えることができる。このような手段には、この特定の実施形態が利用して他のドライバまたはシステムのヘルプをリストに纏めI/O要求を完了する機構であれば、そのいずれでも利用することができる。例えば、図6では、第2のI/O要求を作成する手段は、リモート格納処理ブロック168およびIRP170によって示している。次いで、IRP170は、例えば、ドライバB126のような他のドライバ、または図6に示すようなリモート・ストレージ・ドライバに渡すことができる。IRP170を受け取ったドライバは、次に、他のあらゆるIRPと同様にこれを処理する。例えば、IRP170をドライバB126に送り、元のI/O要求を完全に処理するために必要な情報を更にローカル・ストレージから検索することができる。あるいは、IRP170は、リモート格納属性のリコール要求を発行する機構とすることも可能である。したがって、起動してリモート・ストレージから必要な情報をリコールするリモート・ストレージ・ドライバまたはその他のデバイスに、IRP170を渡すことができる。
【0087】
リモート格納処理ブロック168がIRP170を作成するとき、当該IRPを最初から作成することも、既存のIRPを取り込み当該IRPを「変身させる」ことも可能である。変身のプロセスは、既存のIRPを取り込み、IRP内の情報を変更して修正IRP即ち新たなIRPを作成する。第2のI/O要求を作成する手段は、異なるシステムにおいて別個に実施することも可能である。例えば、1つのドライバが直接別のドライバをコールするシステムでは、第2のI/O要求を作成する手段は、情報を組み立て、直接コール機構を介してその他のドライバに渡す機構とすることができる。本質的に、第2のI/O要求を作成する手段を実施するために必要な全ては、I/O要求を作成または修正し、次いで更に処理するために他のドライバまたはエンティティに渡すことができる機能を有することである。
【0088】
これより図7を参照し、これを用いて、多数のドライバがいかに協働して階層的記憶管理を実施することができるのかについて明確化するために、具体例を提示する。図7では、クライアント・プロセス172がI/O要求をI/Oシステムに作成する。I/Oシステムは、I/O処理を実行する複数のドライバ手段を備えている。クライアント・プロセス172は、矢印176で示すように、オペレーティング・システム・サービス174にコールを行う。I/Oマネージャ178は、I/O要求を受け取り、I/Oシステムの種々のドライバ手段間で、I/O要求の転送を調整する。
【0089】
図7では、I/O処理を実行する複数のドライバ手段を示す。このようなドライバ手段は、階層ストレージ・マネージャ180、ファイル・システム・ドライバ182、ディスク・ドライバ184、およびリモート・ストレージ・ドライバ186を備えている。階層ストレージ・マネージャ180は、ファイルまたはその他のエンティティのリモート格納属性を管理する責務を負う。階層ストレージ・マネージャ180は、稀にしかアクセスされないファイルまたはその他のエンティティから属性を除去し、リモート・ストレージ188のような、リモート位置にこれらを格納する。また、階層ストレージ・マネージャ180は、必要に応じて、適切な属性のリコールを調整する。本質的に、階層ストレージ・マネージャ180は、図2および図3との関連で先に論じた上位機能性を組み込む。ファイル・システム・ドライバ182は、ファイルまたはディレクトリに対するアクセス要求を、ローカル・ストレージ190上の物理的な場所に変換する責務を負う。ディスク・ドライバ184は、ローカル・ストレージ190から情報を検索しかつローカル・ストレージ190に情報を入力する責務を負う。リモート・ストレージ・ドライバ186は、リモート・ストレージ188との双方向情報転送を調整および管理する責務を負う。リモート・ストレージ・ドライバ186は、多くの中間ドライバまたはシステムを介して動作し、リモート・ストレージ188に情報を格納したり、あるいはリモート・ストレージ188から情報を検索してもよいことを注記しておく。図7のI/Oシステムは、このように複数のドライバを用い、その各々が特定の機能または機能群を担当することにより、ロバストなI/O環境を備えている。
【0090】
矢印176で示すように、クライアント・プロセス172がI/O要求を行うと、I/Oマネージャ178はIRP192を作成し、I/Oシステム内の種々のドライバ間でIRP192の転送を調整する。この例では、連続する各ドライバを介してIRP192を受け渡す。各ドライバは、ディスク・ドライバ184に到達するまで、下位ドライバの機能をイネーブルするために必要なあらゆる予備処理を実行する。次に、ディスク・ドライバ184は、ローカル・ストレージ190から所望の情報を検索し、このような情報をIRP194を介してファイル・システム・ドライバ182に戻す。I/O要求がリモート格納属性を有するファイルを伴う場合、ファイル・システム・ドライバ182は、IRP194内において情報が戻されたときに、これを認識する。ファイル・システム・ドライバ182は、既に論じた種々の機構を用いて、個々のI/O動作が、リモート格納属性を有するファイルを伴うか否かについて検出することができる。図7では、リモート格納データ196のファイル・システム・ドライバ182への返送によって、これを具体的に示す。しかしながら、リモート格納データ196は、例えば、IRP194のようなIRP内で戻してもよいことを思い出されたい。同様に、個々の実現例によっては、IRP194はIRP192と同じIRPとしてもよい場合もある。
【0091】
ファイル・システム・ドライバ182が、I/O動作がリモート格納属性を有するファイルを伴うことを認識した場合、ファイル・システム・ドライバ182は、最小限、リモート・ストレージ属性内の情報を抽出し、その情報を上位ドライバに渡すことによって、上位ドライバの1つがそれ自体をリモート・ストレージ属性のオーナであることを認識し、I/O要求を処理する責務を引き受けるようにする。図7では、これは、ファイル・システム・ドライバ182がリモート格納データ196を階層ストレージ・マネージャ180に渡すことによって示している。これは、図6との関連で既に説明したように、I/Oマネージャが階層ストレージ・マネージャ180の完了ルーチンにコールすることによって遂行することができる。他の機構も適宜用いることができる。
【0092】
階層ストレージ・マネージャ180がリモート格納データ196を受け取った場合、階層ストレージ・マネージャ180はリモート・ストレージ属性においてその情報を検査し、それがリモート・ストレージ属性を所有し、I/O要求を処理する制御を引き受けるべきか否かについて確認する。この例では、階層ストレージ・マネージャ180は、それ自体をリモート・ストレージ属性のオーナとして認識し、I/O要求を処理する責務を引き受ける。
【0093】
一旦階層ストレージ・マネージャ180がそれ自体をオーナとして認識し、I/O要求を処理する責務を引き受けたなら、階層ストレージ・マネージャ180は次にI/O要求の処理を更に進めるためにすべきことを確認する。一般に、3つの潜在的に可能な状況設定の1つを想定することができる。階層ストレージ・マネージャ180は、単にファイル・システム・ドライバ182から階層ストレージ・マネージャ180に渡された情報を用いることによって、I/O要求を完全に処理できる場合もある。このような情報は、リモート・ストレージ属性内の情報を含み得るだけでなく、他の属性からの他の情報も含み得ることを思い出されたい。ファイル・システム・ドライバ182から階層ストレージ・マネージャ180に渡される正確な情報は、個々の実現例によって異なる。階層ストレージ・マネージャ180が、それが有する情報によってI/O要求を完全に処理することができる場合、次にIRP198および矢印200によって、適切な結果をクライアント・プロセス182に戻すことができる。
【0094】
しかしながら、階層ストレージ・マネージャ180が、それが使用可能な情報のみを用いて、I/O要求を完全に処理することができない場合、階層ストレージ・マネージャ180は、I/O要求を処理するために必要な情報を検索するためのステップを実行することができる。I/O要求および正確な状況にしたがって、必要な情報は、ローカル・ストレージ、またはリモート・ストレージ、あるいは双方から検索しなければならない場合もある。ローカル・ストレージ190からの検索は、図7では、ファイル・システム・ドライバ182およびディスク・ドライバ184に渡すIRP202、および要求された情報を戻すために用いるIRP204で示す。リモート・ストレージ188からの検索は、図7では、リモート・ストレージ・ドライバ186に転送され、必要に応じてリモート・ストレージ188への情報転送またはリモート・ストレージ188からの情報転送を開始するIRP206、およびあらゆる適切な情報を階層ストレージ・マネージャ180に戻すIRP208で示す。階層ストレージ・マネージャ180がリモート・ストレージ190またはリモート・ストレージ188あるいは双方から適切な情報を検索した後、階層ストレージ・マネージャ180はI/O要求の処理を完了し、図示のように、IRP198および矢印200によって適切な応答を返すことができる。I/O要求を完了するためにローカル・ストレージ190またはリモート・ストレージ188に情報を書き込む必要がある場合、多少変更した形態で同じ状況設定を用いる。
【0095】
次に図8を参照し、リモート格納属性を有するファイルに遭遇した場合に、特定の形式の階層ストレージ・マネージャが別個の計算機システムを利用してI/O要求を処理するという例を提示する。図8に示す実施形態では、クライアント・プロセス210は、ローカル・コンピュータ212上で実行している。ローカル・コンピュータ212は、コンピュータを相互接続するネットワーク手段を通じて、リモート・コンピュータ214に接続してある。図8では、このようなネットワーク手段は、ネットワーク・カード216および接続部218によって示している。ローカル・コンピュータ212のI/Oシステム220は、I/O処理を実行するための複数のドライバ手段を備えている。図8では、このようなドライバ手段は、例えば、暗号化ファイル・マネージャ222、ファイル・システム・ドライバ224、およびディスク・ドライバ226によって示している。また、I/Oシステム220は、オペレーティグ・システム・サービス228およびI/Oマネージャ230も備えている。図7におけると同様、クライアント・プロセス210は、オペレーティング・システム・サービス228にコールを行う。I/Oマネージャ230はI/O要求を受け取り、I/Oシステムの種々のドライバ手段間でのI/O要求の転送を調整する。あるいは、I/Oシステムの種々のドライバ手段は、I/Oマネージャや情報の転送を調整するその他のデバイスを用いずに、互いに直接通信することも可能である。
【0096】
このシステムでは、ある種のファイル属性を暗号化してリモート・コンピュータ214に送り、アクセスを制限した安全な環境でこれらを格納する。したがって、暗号化しリモート・コンピュータ214に格納したファイルを伴うあらゆるI/O要求は、暗号化せずにローカルに格納した他のファイルとは別個に処理しなければならない。この例では、クライアント・プロセス210は、リモート・コンピュータ214上に格納してある暗号化ファイルを伴うI/O要求を行うと想定する。このような要求を行うには、例えば、矢印232で示すように、クライアント・プロセス210がオペレーティング・システム・サービス228をコールする。I/O要求をファイル・システム・ドライバ224に渡し、ディスク・ドライバ226を利用して適切な情報を検索する。ディスク・ドライバ226は、ディスク・コントローラ234を利用し、ローカル・ストレージ236から情報を検索する。暗号化ファイルにアクセスする試みが行われた場合、ファイル・システム・ドライバ224は、そのファイルがリモート格納属性であることを認める。次に、リモート・ストレージ属性内の情報を、暗号化ファイル・マネージャ222に渡し、暗号化ファイルを、リモート・コンピュータ214上に格納してあるものとして確認する。次に、暗号化ファイル・マネージャ222は、適切なファイルを検索するステップを実行する。
【0097】
適切なファイルを検索するステップは、I/O要求をリモート・コンピュータ214に送ることを伴う場合がある。I/O要求を暗号化ファイル・マネージャ222からリモート・コンピュータ214に転送するあらゆる機構が利用可能である。図8では、このようなI/O要求は、リディレクタ(redirector)238およびネットワーク・トランスポート・ドライバ240を介して送ることができる。リディレクタ238は、ローカル・コンピュータ212がネットワークを通じて他の機械にある資源にアクセスするために必要な利器 (facility)を備える。ネットワーク・トランスポート・ドライバ240は、ネットワーク・カード216および接続部218を通じてローカル・コンピュータ212からリモート・コンピュータ214に情報を転送する機構を備える。他の機構も使用可能であり、図8に示すコンポーネントは、あらゆる観点においても例示と見なして当然である。このような機構は、一般に、専用リンク、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、電話回線、ワイヤレス接続等のような、あらゆる形式の接続を2つのコンピュータ間に含むことができる。これらの通信機構に対応するために、種々の形式のソフトウエア・ドライバまたはコンポーネントが必要となる場合もあり得る。
【0098】
暗号化ファイル・マネージャ222からの要求は、リディレクタ238に送られ、リディレクタ238はネットワーク・トランスポート・ドライバ240を用いて、ネットワーク・カード216および接続部218を通じてI/O要求をリモート・コンピュータ214に転送する。この特定例では、I/O要求は、暗号化しリモート・コンピュータ214上に格納してある属性を検索するためのものとする。このようなI/O要求は、ネットワーク・カード216、ネットワーク・トランスポート・ドライバ242、およびサーバ・ファイル・システム244を通じて、リモート・コンピュータ214が受信する。サーバ・ファイル・システム244は、リディレクタ238と通信し、リモート・コンピュータ214に送られて来たあらゆるI/O要求を処理しこれを満たす。暗号化属性を検索するI/O要求を満たすために、サーバ・ファイル・システム244は、ファイル・システム・ドライバ246やディスク・コントローラ248のような、リモート・コンピュータ214のドライバおよびハードウエアを利用することができる。本例では、サーバ・ファイル・システム244は、ファイル・システム・ドライバ246を利用して、ディスク250から適切な暗号化属性を検索する。次に、暗号化ファイル・マネージャ222に暗号化属性を返す。暗号化ファイル・マネージャ222が暗号化属性を受け取ったなら、暗号化ファイル・マネージャ222は、情報を解読するステップを実行し、次いでその情報をクライアント・プロセス210に戻すことができる。
【0099】
図5ないし図8に与えた例は、複数の異なるドライバを層状ドライバ・モデルで使用して階層ストレージ管理を実施した実施形態について説明した。このような層状ドライバ・モデルを用いて本発明を実施した場合、階層ストレージ・マネージャを作成するために必要なステップは、以下に示すように纏めることができる。
【0100】
最初のステップは、具体的な階層ストレージ・マネージャを特定するタグを定義することである。前述のように、このタグは、所与のシステム上において既存のタグ全てと異なるようにする必要がある。先に言及して本願にも含まれるものとした同時係属中の再解析点特許出願は、本出願に開示されている機構と同様の一般的な機構を、あらゆる形式の特殊化したドライバ(階層ストレージ・マネージャを含む)が、どのようにしてI/O要求の処理に介入するために用いることができるかについて説明している。そこに記載されている機構も、タグ値を有する属性を用いていた。このようなシステムでは、多数のドライバが存在する場合があるので、階層ストレージ・マネージャに割り当てるタグは、システム内の既存のあらゆる他のタグとも異なるものでなければならない。既に説明したように、何らかの集中割り当て機構を用いてタグを予め関連付けることも可能であり、あるいはインストール時に動的に割り当てることも可能である。
【0101】
次のステップは、リモート・ストレージを記述する情報を設計することである。この情報は、リモート・ストレージ属性に置き、階層ストレージ・マネージャが用いるものである。このような情報は、リモート・ストレージ内のデータの完全な識別を可能にしなければならない。既に説明したように、このデータは、システム内に存在する各階層ストレージ・マネージャ毎に専用(private)であるので、あらゆる情報を収容することができ、あるいは階層ストレージ・マネージャが所望するあらゆるフォーマットを有することができる。オペレーティング環境を破壊する階層ストレージ・マネージャについては、リモート・ストレージ属性は適切な痕跡を含み、階層ストレージ・マネージャが、データをローカル・ストレージまたはリモート・ストレージに保持していた間に、データに何らかの変更があったか否かについて認識できるようにすることも可能である。
【0102】
次のステップは、リモート・ストレージ属性内に格納するデータを処理し、リモート格納属性を有するファイルを伴うI/O要求を処理するために、層状階層ストレージ・マネージャを構築することである。一旦層状階層ストレージ・マネージャを作成しシステム内にインストールしたなら、階層ストレージ・マネージャは、図5ないし図8との関連で既に論じたように、リモート格納属性を有するファイルを伴うI/O要求を処理する。既に論じたように、I/O要求を処理する場合、階層ストレージ・マネージャは、元のI/O要求と共に到来した情報にアクセスし、当該I/O要求を処理するために取るべきアクションを決定することができる。追加の情報にアクセスすることなく解決するアクションもあるが、ローカル・ストレージから情報を読み出したり、ローカル・ストレージに情報を書き込む必要のあるアクションもあり、更に、リモート・ストレージから情報を読み出したり、リモート・ストレージに情報を書き込む必要のある更に別のアクションもある。
【0103】
図5ないし図8に与えた例は、複数の異なるドライバを用いて階層的記憶管理を実施する実施形態を強調したが、これらのドライバのいずれの機能性も、組み合わせることにより一層高度な機能性を有する更に別のモノリシック・ドライバも得られることは明白であろう。このような事項は、設計上の選択事項であり、本発明の実現例には重要ではない。本発明は、階層ストレージ管理の既存のI/Oシステム内への密接な統合に関するものである。本発明の目標の1つは、I/Oシステム内に、種々の属性をリモートに格納するためにネーティブな支援を与えることである。これは、ファイル・システムに、リモート格納属性を有するファイルを検出し確認させることを含む。ここに記載した発明は非常に柔軟性があるので、ファイルまたはその他のエンティティの属性のいずれかまたは全てを、ローカルまたはリモートに格納することを可能にする。ローカル・ストレージ上に残す必要があるのは、どこにリモート格納属性が位置するかを階層ストレージ・マネージャに確認させるために十分な情報だけでよい。その結果、リモート格納情報の状態をファイル・システムの一体部分として追跡し保持することを可能にするI/Oシステムが得られた。
【0104】
本発明は、その精神または本質的な特徴から逸脱することなく、他の特定形態にも具体化が可能である。記載した実施形態は、あらゆる観点においても、限定的ではなく、例示として見なすべきである。したがって、本発明の範囲は、前述の記載ではなく、添付の請求の範囲によって示すものとする。請求の範囲の均等の意味および範囲に該当する全ての変更は、その範囲内に含まれるものとする。
【図面の簡単な説明】
【0105】
【図1】図1は、層状ドライバを用いたI/Oシステムを示す図である。
【図2】図2は、リモートに属性を格納するプロセスを示す図である。
【図3】図3は、リモートに格納してある属性を伴うI/O要求の処理を示す図である。
【図4】図4は、本発明と共に用いるのに適したファイルの属性を示す図である。
【図5】図5は、リモート・ストレージ属性に遭遇した場合の、ある層状ドライバから別の層状ドライバへの制御移管を示す図である。
【図6】図6は、2つの層状ドライバが提供するサービスを示し、本発明によるドライバへの全体的な機能性の組み込みを示す図である。
【図7】図7は、リモートに格納してあるデータを伴うI/O要求を処理するために、本発明をどのように利用することができるかについて示す一例である。
【図8】図8は、別のコンピュータを用いてI/O要求を完了する例を示す図である。

【特許請求の範囲】
【請求項1】
ローカルおよびリモート記憶媒体双方へのアクセスを有するI/Oシステムの一体部分として、リモート・ファイル格納を実施する方法であって、前記I/Oシステムが、複数の属性から成るファイルを伴うI/O要求を処理し、前記属性の第1部分がユーザ制御データを格納するために適合化してあり、前記属性の第2部分が前記I/Oシステムによる使用のために適合化してあり、前記方法が、
リモートに格納すべきファイルの前記第1部分または前記第2部分のいずれかに格納してある少なくとも1つの属性を識別するステップと、
前記I/Oシステムにアクセス可能な前記リモート記憶媒体に、前記識別した属性の少なくとも一部を格納するステップと、
前記I/Oシステムが前記リモート格納属性の位置を突き止めることを可能にする情報を前記第2部分に格納し、前記I/Oシステムが、前記第2部分を検査することによって、リモート格納属性を直接識別し、その位置を突き止めることを可能にするステップと、
から成ることを特徴とする方法。
【請求項2】
請求項1記載のリモート・ファイル格納を実施する方法において、前記I/Oシステムが前記リモート格納属性の位置を突き止めることを可能にする情報を前記第2部分に格納する前記ステップが、少なくとも、
前記第2部分に、リモートに格納すべき少なくとも1つの属性を識別する前記ステップを実行する責務を負う、複数の層状ドライバの1つを特定する手段を格納するステップと、
前記リモートに格納すべき少なくとも1つの属性と、該少なくとも1つの属性を格納する前記リモート記憶媒体内の場所とを識別するために、前記第2部分に、前記複数の層状ドライバの前記1つが所望するあらゆる情報を格納する手段を格納するステップと、
を実行することによって、遂行することを特徴とする方法。
【請求項3】
請求項1記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法において、少なくとも1つの属性を識別する前記ステップと、前記識別した属性の少なくとも一部を格納する前記ステップを、前記I/Oシステムの一体部分を形成する複数の層状ドライバの少なくとも1つによって実行することを特徴とする方法。
【請求項4】
請求項1記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法であって、更に、ローカル・ストレージから前記ファイルの属性を読み出し、1つ以上の属性をリモートに格納すべきか判定するために、十分な情報を使用可能とするステップを含むことを特徴とする方法。
【請求項5】
請求項1記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法において、前記識別した属性の少なくとも一部を格納する前記ステップは、I/O処理を実行する第1ドライバ手段によって実行し、該第1ドライバ手段は、少なくとも(1)リモートに格納すべき情報を抽出するステップと、(2)前記抽出した情報を、I/O処理を実行する第2ドライバ手段に送るステップとを実行することによって、前記識別した属性の少なくとも一部を格納する前記ステップを実行することを特徴とする方法。
【請求項6】
ローカルおよびリモート記憶媒体双方へのアクセスを有するI/Oシステムの一体部分として、リモート・ファイル格納を実施する方法であって、前記I/Oシステムが、複数の属性から成るファイルを伴うI/O要求を処理し、前記属性の第1部分が、ユーザ制御データを格納するために適合化してあり、前記属性の第2部分が、前記I/Oシステムによる使用のために適合化してあり、前記方法が、
前記ローカル記憶媒体上に少なくとも一部が格納されているファイルへのアクセスを要求するI/O要求を受け取るステップと、
前記ローカル記憶媒体から、前記ファイルの属性の前記第2部分から少なくとも1つの属性を読み出し、前記ファイルが、前記リモート記憶媒体に格納した属性を有するか否か確認するステップと、
前記ファイルが、前記リモート記憶媒体に格納した属性を有する場合、少なくとも以下のステップ、即ち、
前記I/O要求は、前記リモート・ストレージ内に格納した属性へのアクセスなく、満たすことができるか否かについて判定を行うステップと、
前記リモート・ストレージ内に格納した属性へのアクセスなく、前記I/O要求を満たすことができる場合、前記ローカル記憶媒体からあらゆる必要な情報を読み出し、前記ローカル記憶媒体にあらゆる必要な情報を書き込むことによって前記I/O要求を満たし、次いで前記方法を終了するステップと、
前記リモート・ストレージ内に格納した属性へのアクセスなく、前記I/O要求を満たすことができない場合、前記リモート記憶媒体からあらゆる必要な情報を読み出し、前記リモート記憶媒体にあらゆる必要な情報を書き込むことによって前記I/O要求を満たすステップと、
を実行するステップと、
から成ることを特徴とする方法。
【請求項7】
請求項6記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法において、前記ローカル記憶媒体から少なくとも1つの属性を読み出す前記ステップは、I/O処理を実行する第1ドライバ手段によって実行し、前記I/O要求は、前記リモート・ストレージ内に格納した属性へのアクセスなく、満たすことができるか否かについて判定を行う前記ステップは、I/O処理を実行する第2ドライバ手段によって実行することを特徴とする方法。
【請求項8】
請求項7記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法であって、更に、
前記第2ドライバ手段を前記I/O要求を処理すべきドライバ手段として特定する、前記ファイルの属性の前記第2部分に格納してある情報を、前記第1ドライバ手段によって抽出するステップと、
前記第2ドライバ手段が前記I/O要求の処理を続けることができるように、前記第2ドライバ手段に制御を移管するステップと、
を含むことを特徴とする方法。
【請求項9】
請求項8記載のI/Oシステムの一体部分としてリモート・ファイル格納を実施する方法において、制御を移管する前記ステップが、前記第2ドライバ手段がそれ自体を、前記I/O要求を処理する責務を引き受けるべきドライバ手段として認識するまで、複数のドライバ手段の各々に、前記抽出した情報を順に受け渡すステップから成ることを特徴とする方法。
【請求項10】
I/O処理を実行する複数のドライバ手段を用いるI/Oシステムにおいて、I/Oシステム・プリミティブとして、リモート・ファイル格納を実施する方法であって、
I/O処理を実行する第1ドライバ手段が、I/O要求を受け取り、少なくとも1つのファイルまたはディレクトリのいずれかを伴う、指定されたI/O動作を実行するステップと、
前記第1ドライバ手段が、前記少なくとも1つのファイルまたはディレクトリのいずれかが、あらゆるユーザ制御データとは別個に格納してあるリモート・ストレージ属性を、前記少なくとも1つのファイルまたはディレクトリのいずれかに収容しているか否か確認することによって、前記少なくとも1つのファイルまたはディレクトリのいずれかが、リモート格納情報を有するか否か確認し、
前記少なくとも1つのファイルまたはディレクトリのいずれかが、リモート格納情報を収容している場合、前記第1ドライバが、少なくとも以下のステップ、即ち、
前記リモート格納属性からリモート格納情報を抽出するステップと、
前記抽出したリモート格納情報を、処理のために第2ドライバに渡すステップと、
を実行すること、
を特徴とする方法。
【請求項11】
請求項10記載のI/Oシステム・プリミティブとしてリモート・ファイル格納を実施する方法であって、更に、I/O処理を実行する第2ドライバ手段が、抽出したリモート格納情報を受け取り、前記I/O要求を処理する責務を引き受けるステップを含むことを特徴とする方法。
【請求項12】
請求項11記載のI/Oシステム・プリミティブとしてリモート・ファイル格納を実施する方法において、前記第2ドライバ手段が、少なくとも以下のステップ、即ち、
前記I/O要求は、リモート格納情報へのアクセスなく、満たすことができるか否かについて判定を行うステップと、
リモート格納情報へのアクセスなく、前記I/O要求を満たすことができる場合、前記I/Oシステムにアクセス可能なローカル記憶媒体からあらゆる必要な情報を読み出し、前記ローカル記憶媒体にあらゆる必要な情報を書き込むことによって前記I/O要求を満たし、次いで前記方法を終了するステップと、
リモート格納情報へのアクセスなく、前記I/O要求を満たすことができない場合、前記リモート格納情報が位置するリモート記憶媒体からあらゆる必要な情報を読み出し、前記リモート記憶媒体にあらゆる必要な情報を書き込むことによって前記I/O要求を満たすステップと、
を実行することにより、前記I/O要求を処理することを特徴とする方法。
【請求項13】
コンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、
I/OシステムにおいてI/O処理を実行する第1ドライバ手段であって、リモート格納属性を有する少なくとも1つのファイルまたはディレクトリのいずれかを伴うI/O要求の少なくとも部分的な処理を実行するように適合化してある、第1ドライバ手段と、
前記I/OシステムにおいてI/O処理を実行する第2ドライバ手段と、
前記第2ドライバ手段が備え、I/O要求が前記少なくとも1つのファイルまたはディレクトリを伴う場合、前記第2ドライバ手段が前記要求のI/O処理を完全に完了する前に、前記第2ドライバ手段によって前記要求のI/O処理を中断する手段と、
前記I/O要求を処理する制御を、前記第2ドライバ手段から前記第1ドライバ手段に移管し、前記第1ドライバ手段に前記I/O要求を処理させ続ける手段と、
を備えることを特徴とするコンピュータ読取可能媒体。
【請求項14】
請求項13記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、更に、前記第1ドライバ手段と前記第2ドライバ手段との間でI/O処理要求を受け渡す手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項15】
請求項13記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第2ドライバ手段が、前記少なくとも1つのファイルまたはディレクトリのいずれかに関連するリモート格納情報を前記第1ドライバ手段に渡す手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項16】
請求項15記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記リモート格納情報がタグと値とから成り、前記タグが前記リモート格納情報を所有するドライバ手段のIDを示し、前記値がリモート格納属性を突き止めるために前記オーナが必要とするデータから成ることを特徴とするコンピュータ読取可能媒体。
【請求項17】
請求項13記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第1ドライバ手段が、前記第1ドライバ手段が受信するリモート格納情報は当該第1ドライバ手段が所有することを確認する手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項18】
請求項17記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記確認する手段が、前記リモート格納情報のタグを検査し、前記第1ドライバ手段が前記リモート格納情報を所有するか否か確認することを特徴とするコンピュータ読取可能媒体。
【請求項19】
コンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、
I/OシステムにおいてI/O処理を実行する第1ドライバ手段であって、リモート格納属性を有する少なくとも1つのファイルまたはディレクトリのいずれかを伴うI/O要求の少なくとも部分的な処理を実行するように適合化してある、第1ドライバ手段と、
前記I/OシステムにおいてI/O処理を実行する第2ドライバ手段と、
前記第1ドライバ手段と前記第2ドライバ手段との間でI/O処理要求を受け渡す手段と、
前記第2ドライバ手段が備え、I/O要求が前記少なくとも1つのファイルまたはディレクトリを伴う場合、前記第2ドライバ手段が前記要求のI/O処理を完全に完了する前に、前記第2ドライバ手段によって前記要求のI/O処理を中断する手段と、
前記I/O要求を処理する制御を、前記第2ドライバ手段から前記第1ドライバ手段に移管し、前記第1ドライバ手段に前記I/O要求を処理させ続ける手段と、
を備えることを特徴とするコンピュータ読取可能媒体。
【請求項20】
請求項19記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第2ドライバ手段が、前記少なくとも1つのファイルまたはディレクトリに関連するリモート格納情報を、前記第1ドライバ手段に渡す手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項21】
請求項20記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第1ドライバ手段が、前記第1ドライバ手段が受信するリモート格納情報は当該第1ドライバ手段が所有することを確認する手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項22】
請求項21記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記リモート格納情報がタグと値とから成り、前記タグが前記リモート格納情報を所有するドライバ手段のIDを示し、前記値がリモート格納属性を突き止めるために前記オーナが必要とするデータから成ることを特徴とするコンピュータ読取可能媒体。
【請求項23】
請求項22記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記確認する手段が、前記タグを検査し、前記第1ドライバ手段が前記リモート格納情報を所有するか否か確認することを特徴とするコンピュータ読取可能媒体。
【請求項24】
複数のデータ・フィールドを記憶し、データ構造を表わすコンピュータ読取可能媒体であって、
前記データ構造を格納するために割り当てた記憶アドレスの範囲の第1領域内に格納してある第1データ・フィールド集合であって、ユーザ・データを格納するために使用可能であり、ユーが内部に格納してあるデータを検索するためにアクセス可能な第1データ・フィールド集合であって、
前記ユーザによって内部に格納したデータを収容する、前記第1領域内に格納した第1データ・フィールド、
を備える、第1データ・フィールド集合と、
前記データ構造を格納するために割り当てた記憶アドレスの前記範囲の第2領域内に格納してある第2データ・フィールド集合であって、前記データ構造の種々の属性を格納するために使用可能であり、前記属性はドライバ手段が前記データ構造に関連するI/O要求を処理するためのアクセスに適合化してある、該第2データ・フィールド集合であって、
リモート・ストレージ属性を表わすデータを収容する、前記第2領域内に格納した第3データ・フィールド、
を備える第2データ・フィールド集合と、
を備え、
前記第3データ・フィールドが、
リモート格納データを管理するドライバ手段を特定する手段と、
前記ドライバ手段が前記データ構造のリモート格納データ・フィールドを管理するために用いる情報を格納する手段と、
を備えること、を特徴とするコンピュータ読取可能媒体。
【請求項25】
請求項24記載のコンピュータ読取可能媒体において、前記情報を格納する手段が、各リモート格納データ・フィールドがどこに格納されているのか確認し、前記ドライバ手段が、必要なときに、前記リモート格納データ・フィールドを突き止めかつこれを検索可能とする情報を備えることを特徴とするコンピュータ読取可能媒体。
【請求項26】
請求項25記載のコンピュータ読取可能媒体において、前記情報を格納する手段が、前記データ構造の前記データ・フィールドの内どれをリモートに格納してあるのかを確認する情報を備えることを特徴とするコンピュータ読取可能媒体。
【特許請求の範囲】
【請求項1】
ローカルおよびリモートの記憶媒体双方へのアクセスを有するI/Oシステムにおいて実行するI/O要求処理方法であって、前記I/Oシステムが、I/O処理を実行するための複数のドライバを有し、かつI/O要求の処理に、複数の属性を含むファイルが関係し、前記I/O要求処理方法が、
ファイルの前記複数の属性のうちのリモートに格納すべき少なくとも1つの属性を、前記複数のドライバの1つによって識別するステップと、
前記少なくとも1つの属性を前記リモート記憶媒体に格納し、前記ファイルの前記複数の属性のうちの前記少なくとも1つの属性以外の属性を前記ローカル記憶媒体に格納するステップであって、前記少なくとも1つの属性が前記リモート記憶媒体に格納されていることを前記I/Oシステムに示すリモート・ストレージ属性が前記少なくとも1つの属性以外の属性に含まれる、前記のステップと、
を備え、前記リモート・ストレージ属性が、
前記複数のドライバのうちの特定のドライバを、前記ファイルに関係した前記I/O要求を処理する制御を引き受けることができるドライバとして特定するタグと、
前記少なくとも1つの属性を格納してある、前記リモート記憶媒体内の場所を表わす情報と、
を含むことを特徴とするI/O要求処理方法。
【請求項2】
請求項1記載の方法において、前記少なくとも1つの属性を格納することは、前記特定のドライバによって実行することを特徴とするI/O要求処理方法。
【請求項3】
請求項1記載の方法であって、更に、前記ファイルの属性をローカル記憶媒体から読み出したとき、前記少なくとも1つの属性がリモートに格納されていると判定するステップを含むことを特徴とするI/O要求処理方法。
【請求項4】
請求項1記載の方法において、前記少なくとも1つの属性を格納することは、前記特定のドライバによって実行し、かつ(1)リモートに格納すべき情報を抽出するステップと、(2)前記抽出した情報を、前記複数のドライバに含まれる他のドライバに送るステップと、を少なくとも含むことを特徴とするI/O要求処理方法。
【請求項5】
ローカルおよびリモートの記憶媒体双方へのアクセスを有するI/Oシステムにおいて実行するI/O要求処理方法であって、前記I/Oシステムが、I/O処理を実行するための複数のドライバを有し、かつI/O要求の処理に、複数の属性を含むファイルが関係し、前記I/O要求処理方法が、
ファイルへのアクセスを要求するI/O要求を受け取るステップであって、前記ファイルの前記複数の属性のうちの少なくとも1つの属性が前記リモート記憶媒体に格納してあり、前記ファイルの前記複数の属性のうちの前記少なくとも1つの属性以外の属性が、前記ローカル記憶媒体上に格納してあるリモート・ストレージ属性を含む、ステップと、
前記リモート記憶媒体に格納してある前記少なくとも1つの属性を前記ファイルが有することを確認するため、前記ローカル記憶媒体から前記リモート・ストレージ属性を読み出すステップであって、
前記リモート・ストレージ属性に含まれるタグを読み出すステップであって、該タグが、前記I/O要求を処理する制御を引き受けることができる前記複数のドライバのうちの特定のドライバを特定する、前記のステップと、
前記リモート・ストレージ属性に含まれる情報を読み出すステップであって、該情報が、前記少なくとも1つの属性を格納してある前記リモート記憶媒体内の場所を表わす、前記のステップと、
を含む、前記のリモート・ストレージ属性を読み出すステップと、
前記特定のドライバによって、前記リモート記憶媒体に格納してある前記少なくとも1つの属性へのアクセスなしで、現在入手可能な情報によって前記I/O要求を満たすことができるか否かについて判定を行うステップと、
前記少なくとも1つの属性へのアクセスなしで前記I/O要求を満たすことができる場合、前記ローカル記憶媒体内の必要なあらゆる情報にアクセスすることによって前記I/O要求を満たすステップと、
前記少なくとも1つの属性へのアクセスなしで前記I/O要求を満たすことができない場合、前記特定のドライバによって前記リモート記憶媒体内の前記少なくとも1つの属性にアクセスすることにより前記I/O要求を満たすステップと、
を備えたI/O要求処理方法。
【請求項6】
請求項5記載の方法において、前記ローカル記憶媒体から前記リモート・ストレージ属性を読み出す前記ステップを、前記複数のドライバに含まれ、前記特定のドライバとは異なる他のドライバによって実行することを特徴とするI/O要求処理方法。
【請求項7】
請求項6記載の方法であって、更に、
前記他のドライバによって前記タグを抽出するステップと、
前記特定のドライバに制御を移管して、該特定のドライバが、前記I/O要求を処理する制御を引き受けることができるようにするステップと、
を含むことを特徴とするI/O要求処理方法。
【請求項8】
請求項7記載の方法であって、前記特定のドライバは第1階層ストレージ・マネージャであり、前記複数のドライバは第2階層ストレージ・マネージャを含み、制御を移管する前記ステップは、
前記タグを前記第2階層ストレージ・マネージャに渡し、前記第2階層ストレージ・マネージャが前記タグに応答しないステップと、次に、
前記タグを前記特定のドライバに渡し、このとき前記タグに基づいて、前記特定のドライバがそれ自身を、前記I/O要求を処理する制御を引き受けることができるドライバとして認識するステップと、
を含むことを特徴とするI/O要求処理方法。
【請求項9】
I/Oシステムにおいて実行するI/O要求処理方法であって、前記I/OシステムがI/O処理を実行するための複数のドライバ手段を用い、前記I/O要求処理方法が、
I/O処理を実行する第1ドライバ手段によって、I/O要求を受け取るステップであって、前記I/O要求の処理には、ファイルおよびディレクトリのうちの少なくとも1つが関係する、前記のステップと、
前記第1ドライバ手段によって、前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート・ストレージ属性を収容することを判定することによって、前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート格納属性を有することを判定するステップであって、前記リモート・ストレージ属性が、ローカルに格納されており、前記リモート・ストレージ属性が、
I/O処理を実行する第2ドライバ手段を、前記I/O要求を処理する制御を引き受けることができるドライバ手段として特定するタグと、
前記リモート格納属性を格納したリモート記憶媒体内の場所を表わす場所情報と、
を含む、前記のステップと、
前記第1ドライバ手段によって、前記リモート・ストレージ属性から前記タグおよび前記場所情報を抽出するステップと、
前記タグおよび前記場所情報を前記第2ドライバ手段に渡し、このとき前記第2ドライバ手段が、前記I/O要求を処理する制御を引き受けるステップと、
を備えたI/O要求処理方法。
【請求項10】
請求項9記載の方法において、前記タグおよび前記場所情報を前記第2ドライバ手段に渡す前記ステップは、前記第2ドライバ手段が、前記タグに基づいてそれ自身を、前記I/O要求を処理する制御を引き受けることができる前記ドライバ手段として認識するステップを含むことを特徴とするI/O要求処理方法。
【請求項11】
請求項10記載の方法において、前記第2ドライバ手段は、少なくとも以下のステップ、即ち、
リモート格納属性へのアクセスなしで現在入手可能な情報によって前記I/O要求を満たすことができるか否かについて判定を行うステップと、
前記リモート格納属性へのアクセスなしで前記I/O要求を満たすことができる場合、ローカル記憶媒体内の必要なあらゆる情報にアクセスすることによって前記I/O要求を満たすステップと、
前記リモート格納属性へのアクセスなしで前記I/O要求を満たすことができない場合、前記リモート記憶媒体内の前記リモート格納属性にアクセスすることによって前記I/O要求を満たすステップと、
を実行することにより前記I/O要求を処理することを特徴とするI/O要求処理方法。
【請求項12】
コンピュータ実行可能命令を有するコンピュータ読取可能媒体であって、前記コンピュータ実行可能命令が、
I/OシステムにおいてI/O処理を実行する第1ドライバ手段であって、前記I/OシステムがI/O要求を受け取ったときに、ファイルおよびディレクトリのうちの少なくとも1つに関係したリモート・ストレージ属性を読み取る手段を備え、前記I/O要求の処理には前記ファイルおよび前記ディレクトリのうちの少なくとも1つが関係し、前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート格納属性を有し、前記リモート・ストレージ属性がローカルに格納され、前記リモート・ストレージ属性が、
前記I/OシステムにおいてI/O処理を実行する第2ドライバ手段を、前記I/O要求の制御を引き受けるドライバ手段として識別するタグと、
前記リモート格納属性を格納したリモート記憶媒体内の場所を表わす場所情報と、
を含む、前記の第1ドライバ手段と、
前記I/O要求の制御を引き受けるように適合させた前記第2ドライバ手段と、
前記読み取る手段が前記リモート・ストレージ属性を読み取ったことに応答して、前記第1ドライバ手段が実行しているI/O処理を中断する手段と、
前記I/O要求を処理する制御を、前記第1ドライバ手段から前記第2ドライバ手段に移管して、前記タグに応答して前記I/O要求の処理の制御を前記第2ドライバ手段が引き受けるようにする手段と、
を備えることを特徴とするコンピュータ読取可能媒体。
【請求項13】
請求項12記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第1ドライバ手段は、前記場所情報を前記第2ドライバ手段に渡す手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項14】
請求項12記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記第2ドライバ手段は、前記タグに応答して、前記I/O要求を処理する制御を前記第2ドライバ手段それ自身が引き受けることができると判定する手段を備えることを特徴とするコンピュータ読取可能媒体。
【請求項15】
請求項13記載のコンピュータ実行可能命令を有するコンピュータ読取可能媒体において、
前記第2ドライバ手段は、第1階層ストレージ・マネージャであり、第1指定値を有するタグを前記第1ドライバ手段が前記リモート・ストレージ属性から読み出したときに、前記第2ドライバ手段は前記I/O要求を処理する制御を引き受け、
前記コンピュータ実行可能命令は、更に、第2指定値を有するタグを前記第1ドライバ手段が前記リモート・ストレージ属性から読み出したときに、前記I/O要求を処理する制御を引き受ける第2階層ストレージ・マネージャを備えること、
を特徴とするコンピュータ読取可能媒体。
【請求項16】
請求項1記載の方法において、前記タグは、複数のドライバを、前記I/O要求を処理する制御を引き受けることができるドライバとして特定することを特徴とするI/O要求処理方法。
【請求項17】
請求項1記載の方法において、前記少なくとも1つの属性を前記リモート記憶媒体に格納することは、更に、前記少なくとも1つの属性にデジタル指紋およびサインのうちの1つを格納し、その後に、前記デジタル指紋またはサインを使用して、前記少なくとも1つの属性に対し、これが後の時点で検索されたとき変更がなされたかどうか検出すること、を含むことを特徴とするI/O要求処理方法。
【請求項18】
請求項9記載の方法において、前記第1ドライバ手段によって前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート格納属性を有することを判定するステップは、複数の属性のどれがリモートに格納されているかを、前記ファイルに関連した前記複数の属性の長さに少なくとも部分的に基づいて判定すること、を含むことを特徴とするI/O要求処理方法。
【請求項19】
ローカルおよびリモートの記憶媒体双方へのアクセスを有するI/Oシステムであって、前記I/Oシステムが、I/O処理を実行するための複数の処理手段を有し、かつI/O要求の処理に、複数のカテゴリの情報を含むファイルが関係し、前記I/Oシステムが、
ファイルの前記複数のカテゴリの情報のうちのリモートに格納すべき少なくとも1つのカテゴリの情報を識別する前記複数の処理手段のうちの1つの処理手段と、
前記少なくとも1つのカテゴリの情報を前記リモート記憶媒体に格納し、前記ファイルの前記複数のカテゴリの情報のうちの前記少なくとも1つのカテゴリの情報以外のカテゴリの情報を前記ローカル記憶媒体に格納する手段であって、前記少なくとも1つのカテゴリの情報が前記リモート記憶媒体に格納されていることを前記I/Oシステムに示すリモート・ストレージ情報が前記少なくとも1つのカテゴリの情報以外のカテゴリの情報に含まれる、前記の手段と、
を備え、前記リモート・ストレージ情報が、
前記複数の処理手段のうちの特定の処理手段を、前記ファイルに関係した前記I/O要求を処理する制御を引き受けることができる処理手段として特定するタグと、
前記少なくとも1つのカテゴリの情報を格納してある、前記リモート記憶媒体内の場所を表わす場所情報と、
を含むことを特徴とするI/Oシステム。
【請求項20】
ローカルおよびリモートの記憶媒体双方へのアクセスを有するI/Oシステムであって、前記I/Oシステムが、I/O処理を実行するための複数の処理手段を有し、かつI/O要求の処理に、複数のカテゴリの情報を含むファイルが関係し、前記I/Oシステムが、
ファイルへのアクセスを要求するI/O要求を受け取る手段であって、前記ファイルの前記複数のカテゴリの情報のうちの少なくとも1つのカテゴリの情報が前記リモート記憶媒体に格納してあり、前記ファイルの前記複数のカテゴリの情報のうちの前記少なくとも1つのカテゴリの情報以外のカテゴリの情報が、前記ローカル記憶媒体上に格納してあるリモート・ストレージ情報を含む、前記の手段と、
前記リモート記憶媒体に格納してある前記少なくとも1つのカテゴリの情報を前記ファイルが有することを確認するため、前記ローカル記憶媒体から前記リモート・ストレージ情報を読み出す手段であって、前記リモート・ストレージ情報が、
前記I/O要求を処理する制御を引き受けることができる前記複数の処理手段のうちの特定の処理手段を特定するタグと、
前記少なくとも1つのカテゴリの情報を格納してある前記リモート記憶媒体内の場所を表わす場所情報と、
を含む、前記のリモート・ストレージ情報を読み出す手段と、
前記リモート記憶媒体に格納してある前記少なくとも1つのカテゴリの情報へのアクセスなしで、現在入手可能な情報によって前記I/O要求を満たすことができるか否かについて判定を行う前記特定の処理手段と、
前記少なくとも1つのカテゴリの情報へのアクセスなしで前記I/O要求を満たすことができる場合、前記ローカル記憶媒体内の必要なあらゆる情報にアクセスすることによって前記I/O要求を満たす手段と、
前記少なくとも1つのカテゴリの情報へのアクセスなしで前記I/O要求を満たすことができない場合、前記リモート記憶媒体内の前記少なくとも1つのカテゴリの情報にアクセスすることによって前記I/O要求を満たす前記特定の処理手段と、
を備えたI/Oシステム。
【請求項21】
I/O処理を実行する複数の処理手段を用いるI/Oシステムであって、
a)I/O処理を実行する第1処理手段であって、該第1処理手段が、
i.I/O要求を受け取り、前記I/O要求の処理には、ファイルおよびディレクトリのうちの少なくとも1つが関係し、
ii.前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート・ストレージ情報を収容することを判定することによって、前記ファイルおよび前記ディレクトリのうちの前記少なくとも1つがリモート格納情報を有することを判定し、前記リモート・ストレージ情報が、ローカルに格納されており、前記リモート・ストレージ情報が、
I/O処理を実行する第2処理手段を、前記I/O要求を処理する制御を引き受けることができる処理手段として特定するタグと、
前記リモート格納情報を格納したリモート記憶媒体内の場所を表わす場所情報と、
を含み、
iii.前記リモート・ストレージ情報から前記タグおよび前記場所情報を抽出する
前記の第1処理手段と、
b)前記タグおよび前記場所情報を前記第1処理手段から受ける前記第2処理手段であって、このとき前記第2処理手段が、前記I/O要求を処理する制御を引き受ける、前記の第2処理手段と、
を備えたI/Oシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−344234(P2006−344234A)
【公開日】平成18年12月21日(2006.12.21)
【国際特許分類】
【外国語出願】
【出願番号】特願2006−202829(P2006−202829)
【出願日】平成18年7月26日(2006.7.26)
【分割の表示】特願平11−502819の分割
【原出願日】平成10年6月3日(1998.6.3)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】