少なくとも部分的にコンピューターによって実施される方法であって、ストアの第1データーの表現に対する要求を送るステップであって、前記要求が、前記ストアの一部を特定する記述と共に伝えられる、ステップと、前記要求に応答して、前記ストアの前記一部に論理的に格納された第2データーを表すトークンを受け取るステップであって、前記第2データーが、前記第1データーの部分集合であり、適正な部分集合であることが可能である、ステップと、前記トークンを、第3データーを論理的に書き込むことを指示する情報と共に、前記トークンを使用して少なくとも前記第3データーを突き止めるように動作可能なオフロードプロバイダーを介して供給するステップであって、前記第3データーが、前記第2データーの部分集合であり、適正な部分集合であることが可能である、ステップと、を含む、方法。請求項1記載の方法において、ストレージの一部の記述を含む要求を送るステップが、オフセットおよび長さを送るステップを含み、前記オフセットが前記ストアにおける前記第1データーの位置を表し、前記長さが前記第1データーのサイズを表す、方法。請求項1記載の方法において、前記トークンを受け取るステップが、前記トークンが前記第2データーに結び付けられたときに前記第2データーが存在していた場合、前記第2データーを得るために使用可能な数値を受け取るステップを含み、前記数値が、前記第2データーを特定するために前記オフロードプロバイダーによって使用可能であり、前記数値がランダムまたは擬似ランダムメカニズムによって生成される、方法。請求項1記載の方法において、前記トークンを受け取るステップが、データー構造における他のトークンと共に前記トークンを受け取るステップを含み、前記データー構造における各トークンが、該トークンが前記第2データーの異なる部分に結び付けられたときに前記異なる部分が存在していた場合、前記異なる部分を得るために使用可能である、方法。請求項1記載の方法であって、更に、1つ以上の他のトークンを受け取るステップであって、その各々も前記第2データーを表すステップを含み、更に、前記他のトークンの内1つ以上を、前記トークンの供給と共に供給するステップを含む、方法。コンピューター実行可能命令を有するコンピューター記憶媒体であって、前記コンピューター実行可能命令が実行されると、要求元から、ストアに論理的に格納された第1データーの表現に対する要求を受け取る動作であって、前記要求が、前記ストアにおいて前記第1データーが位置する一部を特定する記述と共に伝えられる、動作と、前記ストアの前記一部に論理的に格納された第2データーを表すトークンを生成する動作であって、前記第2データーが、前記第1データーの部分集合あり、適正な部分集合であることが可能である、動作と、データー構造を介して、前記トークンを前記第2データーと関連付ける動作であって、前記トークンが、該トークンが前記第2データーと結び付けられたときに前記第2データーが存在していた場合、前記第2データーを得るために使用可能である、動作と、前記トークンを前記要求元に供給する動作と、を含む動作を実行する、コンピューター記憶媒体。請求項6記載のコンピューター記憶媒体であって、更に、前記第2データーの全部または一部のどちらを書き込むべきかを示す第3データーと共に、前記トークンを受け取る動作と、前記トークンが有効であるか否か判断する動作と、前記トークンが有効でない場合、前記要求に応じない動作と、を含む、コンピューター記憶媒体。請求項6記載のコンピューター記憶媒体において、ストアに論理的に格納された第1データーの表現に対する要求を受け取る動作が、記憶エリアネットワークデバイスのデーターアクセスコンポーネントにおいて前記要求を受け取る動作を含み、前記第2データーを表すトークンを生成する動作が、前記記憶エリアネットワークデバイスのコンポーネントによって値を生成する動作を含み、データー構造を介して前記トークンを前記第2データーと関連付ける動作が、エントリーを表に入れる動作を含み、前記エントリーが、前記トークンと、前記要求が前記データーアクセスコンポーネントにおいて受け取られた時点またはその後、および前記トークンが前記要求元に戻された時点またはその前において前記第2データーが存在していた場合、前記第2データーの識別子とを含む、コンピューター記憶媒体。請求項6記載のコンピューター記憶媒体であって、更に、前記第1データーを変更する要求を受け取る動作と、それに応答して、前記トークンを無効にする動作とを含む、コンピューター記憶媒体。請求項6記載のコンピューター記憶媒体であって、更に、メモリー制限、書き込み動作、ディスク制限、ネットワーク帯域幅制限、レイテンシー制限、および存続時間の内1つ以上に基づいて、前記トークンを無効にする動作を含む、コンピューター記憶媒体。請求項6記載のコンピューター記憶媒体であって、更に、前記第1データーを変更する要求を受け取る動作と、それに応答して前記変更を行い、前記トークンが前記第2データーに結び付けられたときに前記第2データーが存在していた場合、前記第2データーの論理コピーを維持する動作とを含む、コンピューター記憶媒体。コンピューター環境におけるシステムであって、ストアの第1データーの表現に対する要求を送るように動作可能な要求元であって、更に、前記第1データーの部分集合であり、適正な部分集合であることが可能である第2データーを表すトークンを受け取るように動作可能であり、更に、前記第2データーの全部または一部を論理的に書き込むことを指示する第3データーと共に、前記トークンを供給するように動作可能な、要求元と、前記トークンを生成し、データー構造を介して前記トークンを前記第2データーと関連付けるように動作可能なトークンマネージャーと、前記トークンを前記第3データーと共に受け取るように動作可能なオフロードプロバイダーであって、更に、前記トークンが有効であるか否か判断するために前記トークンマネージャーを参照するように動作可能であり、前記第2データーが、少なくとも前記トークンが有効である間変化しないまま論理的に維持される、オフロードプロバイダーと、を含む、システム。請求項12記載のシステムにおいて、前記オフロードプロバイダーが、更に、前記トークンが有効である場合、前記第3データーによって示される、前記第2データーの全部または一部を論理的に書き込むように動作可能であり、前記第3データーが、書き込まれたデーターを送る宛先も含む、システム。請求項12記載のシステムにおいて、前記要求元が、前記オフロードプロバイダーをホストする装置に対して外部である装置のコンポーネントを含む、システム。請求項12記載のシステムにおいて、前記トークンマネージャーおよび前記オフロードプロバイダーが、双方とも、記憶エリアネットワークの装置にホストされている、システム。環境の中には、比較的少ないデーターではこれが容認可能に機能することもあるが、データーが増大するに連れて、データーを読み出しそのデーターを他の位置に送るのに要する時間が長くなる。加えて、ネットワークを介してデーターにアクセスする場合、データーをソース位置から宛先位置まで送るときに、ネットワークが追加の遅延を課すこともある。更に、セキュリティ問題が記憶構成の複雑さと組み合わされて、データー移動を複雑にすることもある。0002本明細書において特許請求する主題は、いずれの欠点を解決する実施形態にも、以上に記載したような環境においてのみ動作する実施形態にも限定されるのではない。逆に、この背景は、本明細書に記載する実施形態を実施することができる技術分野の一例を例示するために示されたに過ぎない。0003端的に言うと、本明細書において記載する主題の形態は、オフロードリードおよびライトに関する。形態では、データーを送ろうとする要求元が、そのデーターの表現に対する要求を送る。応答して、要求元は、そのデーターを表す1つ以上のトークンを受け取る。次いで、要求元は、これらのトークンの内1つ以上を、これら1つ以上のトークンによって現されるデーターを書き込む要求と共に、コンポーネントに供給することができる。アプリケーション例の中には、このコンポーネントが1つ以上のトークンを使用してデーターを特定することができ、次いで、要求元との追加の対話処理を行うことなく、データーを読み出すこと、またはデーターを論理的に書き込むことができるものもある。トークンは、要求によって、または他の要因に基づいて無効にすることができる。0004この摘要は、詳細な説明の章において以下で更に説明する主題のいくつかの形態を端的に特定するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。0005本明細書において記載する主題という句は、コンテキストが明らかに他のことを示すのでなければ、詳細な説明において記載する主題を指す。形態という用語は、少なくとも1つの形態と解釈することとする。詳細な説明において記載する主題の形態を特定することは、特許請求する主題の鍵となる特徴または必須の特徴を特定することを意図するのではない。0006以上に記載した形態、および本明細書において記載する主題の他の形態は、一例として例示するのであり、添付図面に限定されるのではない。図面では、同様の参照番号は、同様の要素を示す。定義0010本明細書において使用する場合、含むという用語およびその変形は、含むがそれに限定されるのではないことを意味する、制限のない用語と解釈するものとする。またはという用語は、コンテキストが明らかに他のことを明言するのでないならばおよび/またはと解釈するものとする。基づくという用語は、少なくとも部分的に基づくと解釈するものとする。一実施形態および実施形態は、少なくとも1つの実施形態と解釈するものとする。他の実施形態は、少なくとも1つの他の実施形態と解釈するものとする。明示的および暗示的な他の定義も、以下に含まれることがある。0011本明細書では、第1、第2、第3等という用語が使用されることがある。これらの用語の使用は、特に特許請求の範囲においては、順序を含意することを意図するのではなく、むしろ識別の目的で使用される。例えば、第1データーおよび第2データーという句は、必ずしも、第1データーが物理的にまたは論理的に第2データーの前に位置することを意味するのではなく、第1データーが第2データーの前に要求または処理されることも意味するのでもない。むしろ、これらの句は、別個であるまたは同一である可能性があるデーター集合を識別するために使用される。即ち、第1データーおよび第2データーは、異なるデーター、同じデーター、同じデーターおよび異なるデーターの内の一部等に言及することができる。第1データーは、第2データーの部分集合、適正であることが可能な部分集合であってもよく、またその逆であってもよい。0012尚、ストアのデーターおよびストアにおけるデーターという句が本明細書では使用されることがあるが、述べられたデーターを、物理的にストアに格納されているデーターに限定するためにこれらの句を使用することを意図しているのではないことを注記しておく。むしろ、これらの句は、そのデーターが物理的にストアにない場合であっても、論理的にそのストアにあるデーターに限定することを意味する。例えば、記憶抽象化以下で説明するが最適化を実行する場合、ゼロまたは他のデーター値のチャンクが実際には基礎の記憶媒体には格納されず、代わりにゼロを表す短縮データー例えば、データーおよび長さによって表されることもある。他の例も以下では示される。動作環境の一例0013図1は、本明細書において記載する主題の形態を実現することが可能な適した計算システム環境100の一例を示す。計算システム環境100は、適した計算環境の一例に過ぎず、本明細書において記載する主題の形態の使用範囲や機能に関して、何の限定も示唆することは意図していない。また、動作環境100において示されるコンポーネントの内任意の1つまたはその組み合わせに関していかなる依存性や用件も有するように、計算環境100を解釈してはならない。0014本明細書において記載する主題の形態は、複数の他の汎用または特殊目的の計算システム環境または構成とでも動作する。本明細書において記載する主題の形態と共に使用するのに適していると考えられる周知の計算システム、環境、または構成の例には、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラベースシステム、セットトップボックス、プログラマブル消費者電子機器、ネットワークPC、ミニコンピューター、メインフレームコンピューター、パーソナルディジタルアシスタントPDA、ゲーミングデバイス、プリンター、セットトップを含む機器、メディアセンター、または他の機器、自動車埋め込み型または取り付け型計算デバイス、他のモバイルデバイス、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれる。0015本明細書において記載する主題は、コンピューターによって実行される、プログラムモジュールのような、コンピューター実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象的データータイプを実現する。また、本明細書において記載する主題は、分散型計算環境も使用することができ、この場合、通信ネットワークを通じてリンクされている遠隔処理デバイスによってタスクが実行される。分散型計算環境では、プログラムモジュールは、メモリー記憶デバイスを含むローカルおよびリモート双方のコンピューターストレージに配置することができる。0016図1を参照すると、本明細書において記載する主題を実現するシステム例は、コンピューター110の形態とした汎用計算デバイスを含む。コンピューターは、命令を実行することができる任意の電子デバイスを含むことができる。コンピューター110のコンポーネントは、処理ユニット120、システムメモリー130、およびシステムバス121を含むことができる。システムバス121は、システムメモリーを含む種々のシステムコンポーネントを処理ユニット120に結合する。システムバス121は、メモリーバスまたはメモリーコントローラ、周辺バス、および種々のバスアーキテクチャーの内任意のものを使用するローカルバスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャーは、業界標準アーキテクチャーISAバス、マイクロチャネルアーキテクチャーMCAバス、拡張ISAEISAバス、ビデオエレクトロニクス標準連盟VESAローカルバス、メザニンバスとしても知られている周辺素子相互接続PCIバス、周辺素子相互接続拡張PCI-Xバス、高度グラフィクスポートAGP、およびPCIエクスプレスPCIeを含む。0017コンピューター110は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター110によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。0018コンピューター読み取り可能記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラムモジュール、または他のデーターというような、情報の任意の記憶方法または技術で実現される。コンピューター読み取り可能記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリーまたは他のメモリー技術、CD-ROM、ディジタルバーサタイルディスクDVDまたは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、計算デバイス110によってアクセスすることができる任意の他の媒体が含まれる。0019通信媒体は、コンピューター読み取り可能命令、データー構造、プログラムモジュール、あるいは搬送波または他の伝送メカニズムのような、変調データー信号における他のデーターを具体化することができ、任意の情報配信媒体を含むことができる。変調データー信号という用語は、属性を有する信号であって、その信号の中に情報をエンコードするような形態でその属性の1つ以上が設定された信号または変化させられた信号を指す。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、RF、赤外線、および他のワイヤレス媒体というような、ワイヤレス媒体を含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてよい。0020システムメモリー130は、リードオンリメモリーROM131およびランダムアクセスメモリーRAM132のような揮発性および/または不揮発性メモリーの形態をなすコンピューター記憶媒体を含む。基本入出力システム133BIOSは、起動中のように、コンピューター110内のエレメント間における情報転送を補助する基本的なルーチンを含み、通例ROM131内に格納されている。RAM132は、通例、処理ユニット120が直ちにアクセス可能であるデーターおよび/またはプログラムモジュール、および/または現在処理ユニット120によって処理されているデーターおよび/またはプログラムモジュールを含む。一例として、そして限定ではなく、図1は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデーター137を示す。0021また、コンピューター110は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例として示すに過ぎないが、図1は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハードディスクドライブ141、リムーバブル不揮発性磁気ディスク152からの読み取りおよびこれへの書き込みを行なう磁気ディスクドライブ151、ならびにCDROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク156からの読み取りおよびこれへの書き込みを行なう光ディスクドライブ155を示す。本動作環境例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、磁気テープカセット、フラッシュメモリーカード、ディジタルバーサタイルディスク、他の光ディスク、ディジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等が含まれる。ハードディスクドライブ141は、インターフェース140を介してシステムバス121に接続することができ、磁気ディスクドライブ151および光ディスクドライブ155は、通例、インターフェース150のようなリムーバブル不揮発性メモリー用インターフェースによって、システムバス121に接続することができる。0022先に論じ図1に示すドライブおよびそれらと関連のあるコンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラムモジュール、およびコンピューター110のその他のデーターを格納する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデーター147を格納するように示されている。尚、これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデーター137と同じでも異なっていても可能であることを注記しておく。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデーター147は、ここで、少なくともこれらが異なるコピーであることを示すために、RAM132におけるこれらの対応する相当物とは異なる番号が与えられている。0023ユーザーは、キーボード162のような入力デバイス、および一般にマウス、トラックボールまたはタッチパッドと呼ばれているポインティングデバイス161によって、コマンドおよび情報をコンピューター110に入力することができる。他の入力デバイス図示せずには、マイクロフォン、ジョイスティック、ゲームパッド、衛星ディッシュ、スキャナー、タッチ感応スクリーン、ライティングタブレット等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザー入力インターフェース160を介して、処理ユニット120に接続されている。ユーザー入力インターフェース160は、システムバスに結合されているが、パラレルポート、ゲームポート、またはユニバーサルシリアルバスUSBのようなその他のインターフェースおよびバス構造によって接続することも可能である。0024モニター191またはその他の形式のディスプレイデバイスも、ビデオインターフェース190のようなインターフェースを介して、システムバス121に接続されている。モニターに加えて、コンピューターは、スピーカー197およびプリンター196のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース195を通じて接続することができる。0025コンピューター110は、リモートコンピューター180のような1つ以上のリモートコンピューターへの論理接続を使用して、ネットワーク接続環境において動作することも可能である。リモートコンピューター180は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードとすることができ、通例、コンピューター110に関して先に説明したエレメントの多くまたは全てを含むが、図1にはメモリー記憶装置181のみを示す。図1に示す論理接続は、ローカルエリアネットワークLAN171およびワイドエリアネットワークWAN173を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピューターネットワーク、イントラネットおよびインターネットにおいては、極一般的である。0026LANネットワーク環境で使用する場合、コンピューター110は、ネットワークインターフェースまたはアダプター170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピューター110は、通例、モデム172、またはインターネットのようなWAN173を通じて通信を行うその他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザー入力インターフェース160またはその他のしかるべき機構を介してシステムバス121に接続することができる。ネットワーク接続環境では、コンピューター110に関して図示したプログラムモジュール、またはその一部は、リモートメモリー記憶装置に格納することもできる。一例として、そして限定ではなく、図1は、リモートアプリケーションプログラム185がメモリーデバイス181に存在するものとして示している。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを作る他の手段も使用可能であることは認められよう。オフロードリードおよびライト0027先に述べたように、従前からのデーター移動動作には、効率的でなかったり、または今日の記憶環境では動作しないものもある。0028図2から図5は、本明細書において記載する主題の形態が動作することができるシステムのコンポーネントの構成例を表すブロック図である。図2から図5に示されているコンポーネントは一例であり、必要とされるコンポーネントまたは含まれるかもしれないコンポーネントが全て含まれていることを意図するのではない。他の実施形態では、本明細書において記載する主題の形態の範囲から逸脱せずに、図2から図5と関連付けて説明するコンポーネントおよび/または機能が他のコンポーネント図示されている、またはされていないに含まれていてもよく、またはサブコンポーネントの中に配置されていてもよい。実施形態の中には、図2から図5と関連付けて説明するコンポーネントおよび/または機能が複数のデバイスに跨がって分散されていてもよい場合もある。0029図2に移ると、システム205は、要求元210、データーアクセスコンポーネント215、トークンマネージャー225、ストア220、および他のコンポーネント図示せずを含むことができる。システム205は、1つ以上の計算デバイスによって実現することもできる。このようなデバイスは、例えば、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラベースシステム、セットトップボックス、プログラマブル消費者電子機器、ネットワークPC、ミニコンピューター、メインフレームコンピューター、セルフォン、パーソナルディジタルアシスタントPDA、ゲーミングデバイス、プリンター、セットトップを含む機器、メディアセンター、または他の機器、自動車埋め込み型または取り付け型計算デバイス、他のモバイルデバイス、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれる。0030システム205が1つのデバイスで構成される場合、システム205として動作するように構成することができるデバイスの一例は、図1のコンピューター110で構成される。システム205が複数のデバイスで構成される場合、複数のデバイスの内1つ以上は、図1と同様に構成されたコンピューター110またはこれとは異なる構成のコンピューター110を含むことができる。0031データーアクセスコンポーネント215は、データーをストア220間で送信するために使用することができる。データーアクセスコンポーネント215は、例えば、I/Oマネージャー、フィルター、ドライバー、ファイルサーバーコンポーネント、記憶エリアネットワークSANまたは他の記憶デバイスにおけるコンポーネント、および他のコンポーネント図示せずの内1つ以上を含むことができる。SANは、例えば、論理記憶ターゲットを露出するデバイスとして、このようなデバイスを含む通信ネットワーク等として実現することができる。0032一実施形態では、データーアクセスコンポーネントは、要求元210とストア220との間におけるI/Oを調べる機会が与えられ、I/Oを変化させる、完了する、または実行しない、あるいはそれに基づいて他の動作を実行するまたは何の動作も実行しないことができる任意のコンポーネントを含むことができる。例えば、システム205が1つのデバイスに存在する場合、データーアクセスコンポーネント215は、要求元210とストア220との間にあるI/Oスタックにおける任意のオブジェクトを含むことができる。システム205が複数のデバイスによって実現される場合、データーアクセスコンポーネント215は、要求元210をホストするデバイスにおけるコンポーネント、ストア220へのアクセスを与えるデバイス、および/または他のデバイスにおけるコンポーネント等を含むことができる。他の実施形態では、データーアクセスコンポーネント215は、使用されているコンポーネントをデーターが通過しなくても、I/Oが通過するコンポーネントによって使用される任意のコンポーネント例えば、サービス、データーベース等を含むことができる。0033本明細書において使用する場合、コンポーネントという用語は、デバイスの全部または一部、1つ以上のソフトウェアモジュールの集合体またはその一部、1つ以上のソフトウェアモジュールの何らかの組み合わせまたはその一部、および1つ以上のデバイスまたはその一部等を含むというように解釈するものとする。0034一実施形態では、ストア220は、データーを格納することができる任意の記憶媒体である。ストア220は、揮発性メモリー例えば、キャッシュおよび不揮発性メモリー例えば、永続的ストレージを含むことができる。データーという用語は、1つ以上のコンピューター記憶エレメントによって表すことができる任意のものを含むように広く解釈するものとする。論理的に、データーは、揮発性メモリーまたは不揮発性メモリーにおける一連の1および0として表すことができる。二進以外の記憶媒体を有するコンピューターでは、その記憶媒体の能力にしたがってデーターを表すことができる。データーは、異なるタイプのデーター構造に編成することもでき、数値、文字等のような単純なデータータイプ、階層状、リンク、または他の関連データータイプ、複数の他のデーター構造または単純なデータータイプを含むデーター構造等を含む。データー例の一部には、情報、プログラムコード、プログラム状態、プログラムデーター、コマンド、他のデーター等が含まれる。0035ストア220は、ハードディスクストレージ、ソリッドステートストレージ、または他の不揮発性ストレージ、RAMのような揮発性メモリー、他のストレージ、以上の何らかの組み合わせ等を含むことができ、複数のデバイス例えば、複数のSAN、多数のファイルサーバー、異質なデバイスの組み合わせ等に跨って分散されていてもよい。ストア220を実現するために使用されるデバイスは、物理的に一緒に位置付けられてもよく例えば、1つのデバイスにおいて、データーセンターにおいて等、または地理的に分散されてもよい。ストア220は、層状記憶配列または非層状記憶配列に配列することができる。ストア220は、外部であっても、内部であってもよく、またシステム205を実現する1つ以上のデバイスに対して内部または外部の双方であるコンポーネントを含むこともできる。ストア220は、フォーマットされていても例えば、ファイルシステムによって、またはフォーマットされていなくても例えば、生よい。0036他の実施形態では、ストア220は、直接的な物理ストレージとしてではなく、ストレージ抽象化として実現することもできる。ストレージ抽象化は、例えば、ファイル、ボリューム、ディスク、仮想ディスク、論理ユニット、データーストリーム、代替データーストリーム、メタデーターストリーム等を含むことができる。例えば、ストア220は、複数の物理記憶デバイスを有するサーバーによって実現することもできる。この例では、サーバーが、ストアのデーターにアクセスすることをデーターアクセスコンポーネントに可能にするインターフェースを提示することができ、ストアは、このサーバーの物理記憶デバイスの内1つ以上またはその一部を使用して実現される。0037この抽象化のレベルは、いずれの任意の深度にでも繰り返すことができる。例えば、ストレージ抽象化をデーターアクセスコンポーネント215に提供するサーバーもストレージ抽象化を拠り所としてデーターにアクセスし格納することもできる。0038他の実施形態では、ストア220は、不揮発性ストレージにおいて永続することができるデーターまたは永続しなくてもよいデーターを概観するコンポーネントを含むこともできる。0039データーアクセスコンポーネント215の内1つ以上が、要求元210をホストする装置に存在してもよく、一方データーアクセスコンポーネント215の内1つ以上の他のものが、ストア220へのアクセスをホストするまたは提供する装置に存在してもよい。例えば、要求元210がパーソナルコンピューターにおいて実行するアプリケーションである場合、データーアクセスコンポーネント215の内1つ以上は、このパーソナルコンピューターにおいてホストされているオペレーティングシステムに存在するのであってもよい。他の例として、ストア220が記憶エリアネットワークSANによって実現される場合、データーアクセスコンポーネント215の内1つ以上が、ストア220へのアクセスを管理するおよび/または提供するストレージオペレーティングシステムを実装することもできる。要求元210およびストア220が1つの装置においてホストされる場合、データーアクセスコンポーネント215の全てまたはその多くがその装置に存在するのであってもよい。0040ストア220のデーターのオフロードリード以下で説明するを開始するために、要求元210は、予め定められたコマンドを使用して例えば、APIを介してそのデーターを表すトークンを求める要求を送ることができる。応答して、データーアクセスコンポーネント215の内1つ以上が要求元210に応答し、データーまたはその部分集合を表す1つ以上のトークンを供給することができる。0041例えば、種々の理由によって、本来要求したデーターよりも少ないデーターを表すトークンを返すことが望ましい場合がある。トークンが戻されるとき、そのトークンが表すデーターの長さまたは複数の範囲と共に戻されるのでもよい。この長さは、本来要求されたデーターの長さよりも小さいこともある。0042データーアクセスコンポーネント215の内1つ以上は、オフロードリードおよびオフロードライトのいずれにおいても、トークンと関連のある要求長よりも短い長さのデーターに対して動作することもできる。実際に処理されるデーターの長さを、本明細書では、有効長と呼ぶこともある。要求長よりも短い長さで動作することは、種々の理由のために望ましい場合がある。有効長を戻して、コマンドによって何バイトが実際に処理されたのかを、要求元または他のデーターアクセスコンポーネントが把握するようにしてもよい。0043データーアクセスコンポーネント215は、例えば、次のことを含むオフロードリードまたはライトに応答して種々の方法で動作することができる。00441.区分データーアクセスコンポーネントが、次に低いデーターアクセスコンポーネントに要求を転送する前に、オフロードリードまたはオフロードライト要求のオフセットを調節することができる。00452.RAIDデーターアクセスコンポーネントがオフロードリードまたはライト要求を分割し、これらの複数の要求を同じまたは異なるデーターアクセスコンポーネントに転送することができる。RAID-0の場合、受け取られた要求はストライプ境界に沿って分割することができ有効長が短くなる結果となる、一方RAID-1の場合、要求全体を1つよりも多いデーターアクセスコンポーネントに転送することができる同じデーターに対して複数のトークンが得られる結果となる。00463.キャッシングデーターアクセスコンポーネントが、オフロードリード要求によって得られようとしているデーターを含む、そのキャッシュの部分を書き出すことができる。00474.キャッシングデーターアクセスコンポーネントが、そのキャッシュの内、オフロードライト要求によって上書きされようとしているデーターを含む部分を無効にすることができる。00485.データー検証データーアクセスコンポーネントが、オフロードライト要求によって上書きされようとしているデーターの、キャッシュされているチェックサムの内任意のものを無効にすることができる。00496.暗号化データーアクセスコンポーネントが、オフロードリードまたはライト要求に応じないことができる。00507.スナップショットデーターアクセスコンポーネントが、オフロードライト要求によって上書きされようとしている場所におけるデーターをコピーすることができる。これは、部分的に、必要であればそのデーターの以前のバージョンに後になって戻すことができるように行うことができる。スナップショットデーターアクセスコンポーネントは、それ自体がオフロードリードおよびライト命令を使用して、その場所におけるデーター上書きされようとしているをバックアップ位置にコピーすることもできる。この例では、スナップショットデーターアクセスコンポーネントを下流要求元以下で説明すると見なすことができる。0051以上の例は、全てを含むことも網羅的であることも意図していない。本明細書における教示に基づいて、当業者は、本明細書において記載する主題の形態の主旨や範囲から逸脱することなく、本明細書の教示を適用することができる他のシナリオも認めることができよう。0052データーアクセスコンポーネント215がオフロードライトまたはリードを行うことができない場合、エラーコードを戻すことができ、他のデーターアクセスコンポーネントまたは要求元が、そのデーターを読み出すまたは書き込むための他のメカニズムを試すことを可能にする。例えば、初期化の間に能力発見を実行することができる。ストアまたは下位の層のデーターアクセスコンポーネントさえも特定の動作をサポートしない場合、上位のデーターアクセスコンポーネントまたは要求元によって他の動作を実行して、同じ結果を得ることができる。例えば、記憶システム以下で説明するがオフロードリードおよびライトをサポートしない場合、データーアクセスコンポーネントがトークンを管理し、データーの概観を維持して、ストアまたは下位のデーターアクセスコンポーネントがこの能力を提供しないことを上位のデーターアクセスコンポーネントが意識しないようにすることができる。0053要求元は、原初要求元または下流側要求元を含むことができる。例えば、要求元は、トークンを要求するアプリケーションを含むことができ、このアプリケーションがオフロードライトを実行することができる。このタイプの要求元を原初要求元と呼ぶことができる。他の例として、要求元は、クライアントからのコピーコマンドを受け取るサーバーアプリケーション例えば、サーバーメッセージブロックSMBサーバーのようなを含むことができる。このクライアントは、そのデーターをソースストアから宛先ストアに、コピーコマンドによって、コピーすることを要求していたのでもよい。SMBサーバーは、この要求を受け取り、次いでオフロードリードおよびライトを使用してコピーを実行することができる。この場合、この要求元を下流側要求元と呼ぶことができる。0054本明細書において使用する場合、特に指定されていない限りまたはコンテキストから明らかでない限り、要求元という用語は、原初要求元および下流側要求元の双方を含むように解釈するものとする。原初要求元は、オフロードリードまたはライトの要求を最初に送った要求元である。言い換えると、要求元という用語は、要求元の上に追加のコンポーネントがあり、この要求元が追加のコンポーネントに応答してオフロードリードを開始する場合、および要求元がそれ自体の責任でオフロードリードまたはライトを始める場合を包含することを意図している。0055例えば、原初要求元は、データーをソースから宛先に送ることを望むアプリケーションであってもよい。このタイプの原初要求元は、1つ以上のオフロードリードおよびライト要求をデーターアクセスコンポーネント215に送り、そのデーターを送ることができる。0056下流側要求元は、他の要求元からの要求を満たすために、1つ以上のオフロードリードまたはライトを発行する要求元である。たとえば、データーアクセスコンポーネント215の内1つ以上が下流側要求元として動作することができ、他の要求元から出された要求を満たすために、1つ以上のオフロードリードまたはライトを開始することができる。下流側要求元のいくつかの例が、RAID-0、区分、およびスナップショットデーターアクセスコンポーネントを参照して先に示されているが、これらの例は、全てを含むことも網羅的であることも意図していない。0057一実施形態では、トークンは、想像することが難しい乱数または擬似乱数を含む。数値を想像することの難度は、その数値のサイズ、およびその数値を生成するために使用されるメカニズムによって選択することができる。この数値は、ストア220におけるデーターを表すが、そのデーターよりも遙かに小さくでもよい。例えば、要求元が100ギガバイトのファイルに対してトークンを要求するとする。応答して、要求元は、例えば、512バイトまたは他のサイズに作られたトークンを受け取るのであってもよい。0058トークンが有効である限り、トークンはデーターを表す。実現例の中には、トークンがデーターに結び付けられたときに論理的に存在していたデーターを表すことができる場合もある。論理的にという用語は、データー全てがストアに存在しているのではないとき、または永続しなくてもよいときにも使用される。例えば、データーの一部がキャッシュの中にあり、トークンを供給できるようになる前にキャッシュを一掃しなければならないという場合がある。他の例として、データーの一部を他のデーターから導き出すこともできる。他の例として、別個のソースからのデーターを組み合わせる、またはそれ以外で操作して、トークンによって表されるデーターを作る必要がある場合もある。結び付きは、トークンの要求が受けられた後で、トークンが戻される前または戻される時点において行うことができる。0059他の実現例では、トークンによって表されるデーターが変化してもよい。トークンが有効である間にデーターが変化することができるか否かの挙動は、要求元と、またはコンポーネント間で取り決めることができる。これについては以下で更に詳しく説明する。0060トークンは、有効期限が過ぎしたがって無効になることがあり、または期限切れの前に明示的に無効にさせることもできる。例えば、トークンによって表されるファイルが閉じられたとき、要求元210をホストしているコンピューターが停止されたとき、トークンによって表されるデーターを有するボリュームがディスマウントされたとき、意図されていたトークンの使用が完了したとき等において、トークンを明示的に無効にするためにメッセージを送ることができる。0061実現例の中には、トークンを無効にするメッセージが、強制として扱われ、それに従わせることもできる場合がある。他の実現例では、トークンを無効にするメッセージは、ヒントとして扱われるのでもよく、それに従っても従わなくてもよい。トークンが無効にされた後、もはやデーターにアクセスするためには使用することができない。0062トークンが表すデーターを保護する同じセキュリティーメカニズムによって、このトークンも保護することができる。例えば、ユーザーがファイルを開いて読み出す権利を有する場合、これは、ユーザーがこのファイルをいずれかの場所でコピーすることを許可するトークンを、ユーザーが得ることを可能にすることができる。ファイルを読み出すためにチャネルが確保される場合、確保されたチャネルを介してトークンを渡すとよい。データーを他のエンティティに提供することができる場合、トークンは、データーを渡すことができるように、他のエンティティに渡せばよい。受け取る側のエンティティは、データー自体が受け取る側に送られていたのであれば受け取る側のエンティティがデーター自体を使用することができたのと丁度同じように、このトークンを使用してデーターを求めることができる。0063トークンは、不変であってもよい。即ち、任意の方法でトークンが変化させられた場合、もはやトークンが表していたデーターにアクセスするためにこれを使用可能ではなくするのでもよい。0064一実施形態では、データーを表す1つのトークンのみが供給される。しかしながら、他の実施形態では、複数のトークンを供給することができ、各々がデーターの一部を表す。更に他の実施形態では、データーの一部または全部が複数のトークンによって表されるのであってもよい。これらのトークンは、他のデーター構造の中にカプセル化すること、または別個に供給することもできる。0065カプセル化される場合、要求元がデーターに対して処理例えば、オフロードライト、トークンの無効化を実行しようとするときに、高度でない要求元であれば、単にデーター構造をデーターアクセスコンポーネントに渡すのであってもよい。より高度な要求元210であれば、カプセル化データー構造においてトークンを構成し直し、個々のトークンを他のトークンとは別々に使用してデーター処理を実行し、または複数のトークンが受け戻されたときに他の動作を実行することができるとよい。0066トークンを受け取った後、要求元210は、そのトークンによって表されるデーターの全部または一部を論理的に書き込むことを要求することができる。本明細書では、この動作をオフロードライトと呼ぶこともある。要求元210は、トークンを1つ以上のオフセットおよび長さと共にデーターアクセスコンポーネント215に送ることによって、これを行うことができる。0067オフロードライトでは、関与するトークン毎に、トークン関連オフセットおよび宛先関連オフセットを示すことができる。これらのオフセットのいずれかまたは双方は、暗示的でも明示的でもよい。トークン関連オフセットは、例えば、トークンによって表されるデーターの先頭からのバイト数または他の単位を表すことができる。宛先関連オフセットは、宛先におけるデーターの先頭からのバイト数または他の単位を表すことができる。長さは、オフセットにおいて開始する、コピーするバイト数または他の単位を示すことができる。0068データーアクセスコンポーネント215の内1つ以上は、トークンを受け取り、このトークンがストアにおけるデーターを表すことを検証し、そうであれば、基礎となるストア220をホストする記憶システムの能力にしたがって、トークンによって表されるデーターの部分を論理的に書き込むことができる。基礎となるストア220をホストする記憶システムは、1つ以上のSAN、専用ファイルサーバー、汎用サーバーまたは他のコンピューター、ネットワーク機器、図1のコンピューター110を実現するのに適した任意の他のデバイス等を含むことができる。0069例えば、SANのような記憶システムによってストア220がホストされており、要求元210が、このSANに存在するデーターを表すトークンを使用して、オフロードライトをSANに要求している場合、SANは、当該SAN固有のメカニズムを利用して、データーを論理的に書き込むことができ、このデーターの他の物理的なコピーを行うことはない。例えば、参照カウンティングまたは他のメカニズムを使用して、データーの論理コピーの数を示すことができる。例えば、参照カウントをブロックレベルで使用するとよく、ブロックの参照カウントを増やすことによって、このブロックを論理的にSANにおいて複製することができる。0070他の例として、ストア220が、オフロードライトが物理的にデーターをコピーすることを伴わないようにオフロードライトを実行するときに有用な他のメカニズムを有することができるファイルサーバーのような、記憶システムによってホストされていてもよい。0071更に他の例として、ストア220がデーター処理能力がない記憶システムによってホストされていてもよい。これは、オフロードライトに応答して、当該記憶システムの1つの位置から他の位置にデーターを物理的にコピーする。0072以上の例は、全てを含むことも網羅的であることも意図していない。実際に、要求元の視点からは、記憶システムが、オフロードライトに対応するデーター移動をどのように実施するのかについては、関連がなくてもよい。0073先に注記したように、記憶システムのデーター移動動作は、時間遅延することがある。シナリオの中には、データー移動動作が全く行われないこともある。例えば、記憶システムは、オフロードライトが完了したことに素早く応答することができるが、記憶システムが実際にデーター移動を開始する前に、基礎となるストアをトリムするコマンドを受けることもあり得る。この場合、記憶システムにおけるデーター移動動作が取り消されることもある。0074要求元210は、トークンを1つ以上の他のエンティティと共有することもできる。例えば、要求元は、その要求元210がホストされている装置に対して外部にある装置にホストされているアプリケーションにトークンを送ることができる。このアプリケーションは、次いで、要求元210が行うことができたのと同様に、このトークンを使用してデーターを書き込むことができる。このシナリオを図5に示す。0075図5に移ると、データーアクセスコンポーネント215を使用して、要求元210はストア220におけるデーターを表すトークンを要求して入手する。次いで、要求元210はこのトークンを要求元510に渡す。要求元510は、次いで、このトークンをデーターアクセスコンポーネント515を介して送ることによって、このデーターを書き込むことができる。0076データーアクセスコンポーネント215および515の内1つ以上が同じであってもよい。例えば、要求元210および510が同じ装置においてホストされている場合、データーアクセスコンポーネント215および515の全てが、双方の要求元に対して同じであってもよい。要求元210および510が異なる装置においてホストされている場合、一部のコンポーネントは同一であってもよいが例えば、ストア220をホストするまたはこれへのアクセスを与える装置を実現するコンポーネント、他のコンポーネントは異なっていてもよい例えば、異なる装置におけるコンポーネント。0077図2に戻って、一実施形態では、データーアクセスコンポーネント215の内1つ以上が、トークンマネージャートークンマネージャー225のようなを含む、またはこれを参照することもできる。トークンマネージャーは、ストア220におけるデーターを表すトークンを生成または入手し、これらのトークンを正規の要求元に供給し、これらのトークンを使用してデーターを書き込む要求に応答し、トークンをいつ無効にするか決定することができる1つ以上のコンポーネントを含むことができる。以下で更に詳しく説明するが、トークンマネージャーを複数のデバイスに跨がって分散させて、オフロードリードにおいてトークンを得るため、そしてオフロードライトにおいてそのトークンを使用するための双方に、論理的に同じトークンマネージャーが使用されるようにすることもできる。この場合、トークンマネージャーの分散コンポーネントは、必要に応じて、互いに通信してトークンについての情報を得るようにするとよい。一実施形態では、トークンマネージャーがトークンを生成し、これらのトークンをストア220におけるデーターと関連付けるトークンストアにこれらのトークンを格納し、要求元から受け取ったトークンがトークンストアにおいて発見されることを検証することができる。0078トークンマネージャー225は、どこでデーターを発見することができるか特定するデーターと、トークンを関連付けることができる。また、このデーターは、トークンマネージャー225が複数のデバイス間で分散されている場合にも、トークンマネージャー225の分散コンポーネントからトークン情報トークンが表すのはどのデーターか、トークンが期限切れになっているか否か、他のデーター等を得るために使用することができる。また、トークンマネージャー225は、トークンと関連のあるデーターの終端を越えたデーターを要求元が入手できないことを確保するために、トークンをデーターの長さと関連付けることもできる。0079ストア220におけるデーターを変化させる場合または削除する場合、トークンマネージャー225は、どのようにトークンマネージャー225が構成されているかに依存して、種々の動作を実行することができる。例えば、トークンによって表されるデーターを保存するように構成されている場合、トークンマネージャー225は、トークンが生成された時点において存在していたデーターのコピーが維持されることを確保することができる。記憶システムの中には、データーが変化したときでもこのようなコピーを維持するための精巧なメカニズムを有するものもある。この場合、トークンマネージャー225は、記憶システムストア220がその一部をなすことができるに、ある時間期間またはそれ以外では命令された時間まで、元のデーターのコピーを維持することを命令することができる。0080他の場合では、記憶システムが、元のデーターのコピーを維持するメカニズムを実装しないこともある。この場合、トークンマネージャー225またはデーターアクセスコンポーネント215の別のものが、ある時間期間またはそれ以外では命令された時間まで、元のデーターのコピーを維持することを命令することができる。0081尚、元のデーターのコピーを維持するには、元のデーターの複製コピーではなく、論理コピーを維持することを伴っても良いことを注記しておく。論理コピーは、正確なコピーを作るために使用することができるデーターを含む。例えば、論理コピーは、データーの現在の状態と共に、変化ログを含むことができる。変化ログを逆に現在の状態に適用することによって、元のコピーを得ることができる。他の例として、コピー-オン-ライトcopyonwrite技法を使用して論理コピーを維持してもよく、この論理コピーは、元のデーターを再現するために使用することができる。以上の例は、限定を意図するのではない。何故なら、本明細書において記載する主題の形態の主旨や範囲から逸脱することなく、論理コピーを実現することができる方法は数多くあることは、当業者には分かっているからである。0082トークンマネージャー225は、データーが変化したときにトークンを無効にするように構成することもできる。この場合、トークンと関連のあるデーターが変化することを可能にすることと合わせて、トークンマネージャー225は、トークンがもはや有効でないことを示すことができる。これは、例えば、トークンを削除する、またはトークンストアにおいてこのトークンに無効の印を付けることによって行うことができる。トークンマネージャー225が記憶システムのコンポーネントによって実装されている場合、1つ以上の障害コードを1つ以上の他のデーターアクセスコンポーネントに渡し、そして要求元210に渡すことができる。0083トークンマネージャー225は、トークンの期限切れを管理することもできる。例えば、トークンが存続時間を有することができる。この存続時間が過ぎた後、トークンを無効にすることができる。他の実施形態では、以下を含む種々の要因に依存して、トークンが有効のままでいることもできる。00841.ストレージの制限。データーの元のコピーを維持すると、しきい値を超えて空間を消費する場合がある。その時点で、空間を取り戻すために1つ以上のトークンを無効にすることができる。00852.メモリーの制限。複数のトークンを維持することによって消費されるメモリーがしきい値を超える場合がある。その時点で、メモリー空間を取り戻すために、1つ以上のトークンを無効にすることができる。00863.トークンの数。システムが、ある設定された数のアクティブなトークンを許容することができる。トークンの最大数に達した後、トークンマネージャーは、他のトークンを供給する前に、既存のトークンを無効にすることができる。00874.入力/出力IOオーバーヘッド。余りに多くのトークンを有することによるIOオーバーヘッドについては、トークンマネージャーが1つ以上のトークンを無効にして、IOオーバーヘッドを低減することができるようにするとよい。00885.IOコスト/レイテンシー。ソースから宛先までのデーター移動のコストおよび/またはレイテンシーに基づいて、トークンを無効にすることもできる。例えば、コストがしきい値を超えた場合、トークンを無効にすることができる。同様に、レイテンシーがしきい値を超えた場合、トークンを無効にすることができる。00896.優先順位。ある種のトークンは、他のトークンよりも高い優先順位を有することができる。トークンを無効にしようとするとき、優先順位が低いトークンを無効にすることができる。トークンの優先順位は、種々の方針例えば、使用度、トークンについての明示的または暗示的知識、要求元による要求、他の方針等に基づいて調節することができる。00907.ストレージプロバイダーの要求。ストレージプロバイダー例えば、SANが、アクティブなトークンの数の減少を要求することができる。応答して、トークンマネージャーは、適宜、1つ以上のトークンを無効にすることができる。0091トークンを無効にするのは、そのトークンが成功したことに基づいて、1つ以上のオフロードライトの前、または後であっても任意の時点に行うことができる。0092一実施形態では、トークンはデーターを表す値のみを含む。他の実施形態では、トークンは他のデーターも含むか、またはそれと関連付けられていてもよい。この他のデーターは、例えば、データーを得ることができる記憶デバイス、記憶システム、または他のエンティティを決定するために使用することができるデーター、ネットワーク記憶システムの識別情報、ルーティングデーターおよびヒント、アクセス制御メカニズムに関する情報、トークンによって表されるデーターに関するチェックサム、データーのタイプ例えば、システム、メタデーター、データーベース、仮想ハードドライブ等、データーのアクセスパターン例えば、シーケンシャル、ランダム、使用パターン例えば、しばしばアクセスする、時々アクセスする、まれにしかアクセスしない等、望まれるデーターの整列、オフロードライトの間にデーターの配置を最適化するためのデーター例えば、異なるタイプの記憶デバイスを有する混成環境において等を含むことができる。0093以上の例は、トークンに含むことができるまたはトークンと関連付けることができる他のデーターを全てを含むことも網羅的であることも意図していない。本明細書における教示に基づいて、当業者は、本明細書において記載する主題の形態の主旨や範囲から逸脱することなく、トークンと共に伝えることができる他のデーターを認めることができよう。0094ストアに対するリード/ライト要求は、ファイルフラグメント境界、RAIDストライプ境界、ボリューム空間境界等に遭遇すると、内部において、記憶スタックの下位層にリード要求を分割する結果になることもある。この分割が行われるとよいのは、ソース/宛先が分割の前後でacross異なるからであり、またはオフセット変換が分割の前後で異なるからである。この分割は、結果的に生ずる分割IOが全て完了するまで、分割される必要がある要求を完了しないことによって、スプリッターによって隠すこともできる。0095このように記憶スタックにおける分割層内での分割を隠すのは、記憶スタック内における上位の層が分割について知る必要がないということにおいて便利である。本明細書において記載するトークンに基づく手法を使用する場合、一実施形態では、分割が見えるとよい。具体的には、分割の前後でソース/宛先が異なるために分割が行われる場合、オフロードプロバイダー以下で説明するが分割の前後で異なる可能性がある。例えば、データーを複製する場合または複製しない場合であっても、データーへのアクセスを与える複数のオフロードプロバイダーがあることがある。他の例として、SANに面する複数のファイルサーバーがあることもある。SANに加えてサーバーまたは他のデーターアクセスコンポーネントの内1つ以上をオフロードプロバイダーと見なすこともある。0096オフロードプロバイダーとは、ストア--ソースまたは宛先と関連のあるデーターへのアクセスを与える論理エンティティ恐らくは、複数のデバイス間に広がる複数のコンポーネントを含むである。本明細書において使用する場合、アクセスは、データーを読み出すこと、データーを書き込むこと、データーを削除すること、データーを更新すること、以上の内2つ以上を含む組み合わせ等を含むことができる。論理的に、オフロードプロバイダーは、オフロードリードまたはライトを実行することができる。物理的に、オフロードプロバイダーは、データーアクセスコンポーネント215の内1つ以上を含むことができ、更にトークンマネージャー225も含むことができる。0097オフロードプロバイダーは、データーをソースストアから送り、データーを宛先ストアに書き込み、このデーターと関連のあるトークンを受け取ったときに提供すべきデーターを維持することができる。実現例の中には、オフロードプロバイダーが、データーが論理的に宛先ストアに書き込まれた後に、オフロードライトコマンドが完了したことを示すことができる場合もある。加えて、オフロードプロバイダーは、オフロードライトコマンドが完了したことを示すが、都合がよくなるまで、オフロードライトと関連のあるデーターを物理的に書き込むのを遅らせることもできる。0098データーが分割されるとき、オフロードプロバイダーは、要求されたデーターの一部へのアクセスを与えることができるが、要求されたデーターの他の部分へのアクセスを与えることはできない。この場合、別々のトークンを、分割点の前にある部分に、そして分割点の後にある部分に供給することができる。記憶スタックの層またはオフロードプロバイダーにおいて、他に実現例に依存する制限があると、他の理由のために、トークンが分割範囲全域に亘ることができなくなる場合がある。要求元はリードから戻されるトークン1つまたは複数を見ることができるので、この実施形態では、分割は要求元には見ることができるのであってよい。0099分割を扱う2つの手法例を以下に示す。001001.リード要求が1つよりも多いトークンを戻すことができ、この場合、各トークンには、要求されたデーターの内異なる範囲が関連付けられている。これら複数のトークンは、前述のように、1つのデーター構造の中で戻すことができる。要求元がデーターを書き込もうとしている場合、データー構造全体を渡すことができ、また高度な方法で動作している場合、データー構造における1つ以上のトークンのみを渡すことができる。001012.1つのトークンが戻された場合、このトークンは、本来要求されたデーターから狭められた範囲を表す場合がある。したがって、要求元は、このトークンを使用して、短縮範囲の長さ限度内で1回以上のオフロードライトを実行することができる。オフロードライトが要求された場合、要求された書き込みの長さを切り捨てることもできる。リードおよびライト双方に対して、要求元は、以前の要求によって扱われなかったオフセットにおいて開始する他の範囲に対する要求を行うことができる。このように、要求元は、その要求元が必要とする範囲全体にわたって動作することができる。00102以上の手法は例示に過ぎない。本明細書における教示に基づいて、当業者は、本明細書において記載する主題の形態の主旨や範囲から逸脱することなく、利用することができる分割を扱う他の手法も認めることができよう。00103同じスタックの中に複数のオフロードプロバイダーがあってもよい。オフロードリード要求から戻される所与の範囲範囲切り捨ての場合、恐らく唯一の範囲について、トークンを供給しようとする複数のオフロードプロバイダーがあることもある。一実施形態では、同じデーターに対するこれら複数のトークンを要求元に戻し、オフロードライトにおいてこの要求元によって使用することができる。00104例えば、要求元は、オフロードライトにおいて使用するために、これらのトークンから1つを選択することができる。1つのトークンだけをオフロードプロバイダーに渡すことによって、要求元は、このように、データーを得るために使用されるソースオフロードプロバイダーを決定することができる。他の例では、要求元がこれらのトークンの内2つ以上を宛先オフロードプロバイダーに渡すこともできる。すると、宛先オフロードプロバイダーは、トークンと関連のあるソースオフロードプロバイダーから、トークンによって表されるデーターを得ようとする1つ以上を選択することができる。00105他の例では、複数のトークンを戻して、バルクデーターのオフロードコピー、およびバルクデーターに加えて他の補助データーのオフロードコピーの双方を可能にすることもできる。補助データーの一例に、データーに関するメタデーターがある。例えば、ファイルシステムオフロードプロバイダーが、オフロードライト要求が2つのトークン例えば、主データートークンおよびメタデータートークンを含み、オフロードコピー全体が成功するために宛先スタックにおいて首尾良く使用されることを指定することができる。00106対照的に、スタックにおける複数のバルクデーターオフロードプロバイダーをサポートする目的で使用される複数のトークンは、オフロードライトが成功するために、宛先スタックにおいて1つのトークンしか使用してはならないことが必要となる場合がある。00107データーをソースから宛先に送るのに複数のオフロードプロバイダーが利用可能であるとき、要求元は、利用可能なものの中から1つ以上の特定のオフロードプロバイダーを選択することができるとよい。一実施形態では、これは、スキップNコマンドを使用することを含むことができ、ここでスキップNは、最初のN個のオフロードプロバイダーを飛ばすことを示す。他の実施形態では、特定のオフロードプロバイダー1つまたは複数を特定するために使用される他のメカニズムがあってもよい例えば、オフロードプロバイダーのID。更に他の実施形態では、一部のオフロードプロバイダーが、トークンによって表されるデーターをコピーすることができないかもしれず、他のものはそれをできるかもしれないので、複数のトークンから1つを選択することは、データーをコピーするためのオフロードプロバイダー1つまたは複数を選択するために使用することもできる。00108実施形態の中には、2つよりも多いオフロードプロバイダーが、トークンによって表されるデーターをコピーするために利用可能である場合、最初のオフロードプロバイダー、最後のオフロードプロバイダー、ランダムなオフロードプロバイダー、少なくともロードされているオフロードプロバイダー、最も効率的なオフロードプロバイダー、レイテンシーが最も少ないオフロードプロバイダー、またはそれ以外で決定されたオフロードプロバイダーを自動的に選択することもできる。00109トークンは、ハードディスクまたは他の記憶媒体のあるセクターにおいて開始するデーターを表すことができる。トークンが表すデーターは、正確にセクターの倍数であることもあるが、多くの場合そうではない。ファイル処理においてその長さの終端を越えるデーターに対してトークンが使用されている場合、戻されるデーターは、ヌル、0、またはデーターがないことの他の何らかの指示とすることができる。つまり、要求元が、トークンによって表されるデーターの終端を越えてコピーしようとする場合、要求元は、このメカニズムによって、データーの終端を越えて物理的に位置するデーターを得ることはできない。00110大きなファイルの破棄をオフロードするために、トークンを使用することもできる。例えば、トークンが、ヌル、0、または他のデーターなしファイルを表すことができる。このトークンをオフロードライトにおいて使用することによって、ファイルまたは他のデーターを初期化するために、このトークンを使用することができる。00111図3は、トークンマネージャーが、ストアをホストするデバイスによってホストされるシステムのコンポーネントの配置例を概略的に表すブロック図である。図示のように、システム305は、図2の要求元210およびストア220を含む。図3のデーターアクセスコンポーネント215は、要求元210をホストするデバイス330に存在するデーターアクセスコンポーネント310と、ストア220をホストするデバイス335に存在するデーターアクセスコンポーネント315とに分割されている。他の実施形態では、ストア220がデバイス335の外部にある場合、ストア220へのアクセスを与える追加のデーターアクセスコンポーネントがあってもよい。00112デバイス335は、オフロードプロバイダーであると見なすことができる。何故なら、このデバイスは、トークンを供給するために必要なコンポーネント、およびトークンを与えられるとデーターを書き込むのに必要なコンポーネントを含むからである。00113トークンマネージャー320は、前述のように、トークンを生成しそれを有効にすることができる。例えば、要求元210がストア220におけるデーターに対するトークンを要求すると、トークンマネージャー320は、そのデーターを表すトークンを生成することができる。次いで、このトークンを要求元210に、データーアクセスコンポーネント310および315を介して送り返すことができる。00114トークンの生成と合わせて、トークンマネージャー320はトークンストア325においてエントリーを作ることができる。このエントリーは、ストア220のどこで、トークンによって表されるデーターを発見することができるかを示すデーターと、このトークンを関連付けることができる。また、エントリーは、いつトークンを無効にすべきか、トークンの存続時間、他のデーター等というような、トークンを管理するときに使用される他のデーターも含むことができる。00115要求元210または任意の他のエンティティがトークンをトークンマネージャー320に供給すると、このトークンマネージャーはトークンストア325において参照を行い、そのトークンが存在するか否か判断することができる。トークンが存在し有効である場合、トークンマネージャー320は位置情報をデーターアクセスコンポーネント315に提供し、これらのコンポーネントが論理的に、要求通りに、データーを書き込むことができるようにする。00116複数の物理的デバイスがストア220へのアクセスを与える場合、トークンマネージャー320および/またはトークンストア325が、これらの物理デバイスの内1つ以上によってホストされているコンポーネントを有するとよい。例えば、トークンマネージャー320がデバイス全てに亘るトークン状態を複製してもよく、集中トークンコンポーネントを有して、他のトークンコンポーネントがそれを参照するのでもよく、分散型システムを有し、トークン状態が必要に応じてピアトークンマネージャーから供給される等であってもよい。00117論理的に、トークンマネージャー320はトークンを管理する。物理的に、トークンマネージャー320は、1つのデバイスによってホストされてもよく、または2つ以上のデバイスにわたって分散されたコンポーネントを有してもよい。トークンマネージャー320は、ストア220をホストするいずれのデバイスからも別であるデバイスにホストされるのであってもよい。例えば、トークンマネージャー320は、アクセスコンポーネント315がコールするサービスであって、トークンを生成し有効にし、それと関連のある位置情報を提供することができるサービスとして存在することもできる。00118一実施形態では、トークンストア325をストア220に格納することもできる。他の実施形態では、トークンストア325はストア220と別々であってもよい。00119図4は、本明細書において記載する主題の形態にしたがって動作するシステムのコンポーネントの他の配置例を概略的に表すブロック図である。図示のように、装置405は、要求元210ならびにデーターアクセスコンポーネント310および仮想化層430もホストする。データーアクセスコンポーネント310は、積層状に配列されており、コンポーネント415、420、425、および他のコンポーネント図示せずを含むN個のコンポーネントを含む。数値Nは変数であり、装置毎に異なってもよい。00120要求元210は、データーアクセスコンポーネント310の内1つ以上に、アプリケーションプログラミングインターフェースAPI410を介してアクセスする。仮想化層430は、要求元またはデーターアクセスコンポーネントの内任意のものが仮想環境内に存在するかもしれないことを示す。00121仮想環境とは、コンピューターによってシミュレートまたはエミュレートされた環境のことである。仮想環境は、物理的マシン、オペレーティングシステム、1つ以上のインターフェースの集合、以上の内の一部、以上の組み合わせ等をシミュレートまたはエミュレートすることができる。マシンがシミュレートまたはエミュレートされるとき、そのマシンが仮想マシンと呼ばれることもある。仮想マシンとは、その仮想マシンにおいて実行しているソフトウェアには、物理的マシンであるように見えるマシンである。ソフトウェアは、仮想ハードドライブ、仮想フロッピー登録商標ディスク等のような仮想記憶デバイスの中にファイルを保存することができ、仮想CDからファイルを読み出すことができ、仮想ネットワークアダプターを介して通信すること等ができる。00122仮想ハードドライブ、フロッピー登録商標、CD、または他の仮想記憶デバイスの中にあるファイルは、装置405に対してローカルまたはリモートでもよい物理的媒体によってバックアップすることもできる。仮想化層430は、物理的媒体上にデーターを配列し、このデーターにアクセスする1つ以上のコンポーネントが、これらが仮想環境におけるデーターにアクセスしていることが分からないように、そのデーターを仮想環境に提供することができる。001231つよりも多い仮想環境が1つのコンピューターにおいてホストされていてもよい。即ち、2つ以上の仮想環境が1つの物理的コンピューターにおいて実行してもよい。各仮想環境において実行するソフトウェアには、仮想環境はそれ自体のリソース例えば、ハードウェアを有するように見えるが、1つのコンピューターにおいてホストされているこれらの仮想環境は、互いにそしてホストしているオペレーティングシステムと、1つ以上の物理的デバイスを物理的に共有すると考えられる。00124ソースストア435は、要求元210がトークンを要求しているストアを表す。宛先ストア440は、要求元がトークンを使用してデーターを書き込むことを要求するストアを表す。実現例では、ソースストア435および宛先ストア440は、1つのストア例えば、複数のボリュームを有するSAN、または2つ以上のストアとして実装することができる。ソースストア435が元のデーターのコピーを維持することをサポートしない場合、コンポーネント415~425の内1つ以上が、トークンの寿命の間元のデーターのコピーを維持するように動作することができる。00125ソースストア435および宛先ストア440が2つの別々のストアとして実装されている場合、装置405を巻き込むことなく、追加のコンポーネント例えば、記憶サーバーまたは他のコンポーネントがデーターをソースストア435から宛先ストア440に送ることができる。一実施形態では、しかしながら、ソースストア435および宛先ストア440が2つの別々のストアとして実装されていても、データーアクセスコンポーネント310の内1つ以上が、ソースストア435から宛先ストア440にデーターをコピーするように動作することができる。要求元210は、どのようにして基礎となるコピーが行われるかについて、知っていても知らなくてもよく、知らされても知らされなくてもよい。00126要求元210とソースストア435および/または宛先ストア440との間に、複数の経路がある場合もある。一実施形態では、本明細書において記載するトークン方法は、表されたデーター例えば、トークンマネージャーを介して入手可能が入手可能であることを示す情報があれば、通過する経路には無関係である。言い換えると、要求元210が、仮想化層430を通過する経路、仮想化層430を通過しないネットワーク経路、SMB経路、あるいはソースストアまたは宛先ストアまでの任意の他の経路を有する場合、要求元210は、これらの経路の内1つ以上を使用して、オフロードライトを宛先ストア440に発行することができる。言い換えると、ソースストアまでに通過する経路、および宛先ストアまでに通過する経路は、同じであっても異なっていてもよい。00127オフロードライトでは、トークンは、1つ以上のオフセットと、書き込むデーターの長さと共に、宛先ストア440に渡される。データーアクセスコンポーネント必ずしもデーターアクセスコンポーネント310の内の1つでなくてもよいがこのトークンを受け取り、このトークンを使用してトークンマネージャーから位置情報を得て、ソースストア435から宛先ストア440に論理的にデーターを書き込むことを開始することができる。00128コンポーネント415~425の内1つ以上または他のコンポーネント図示せずがトークンマネージャーを実装することもできる。00129以下に、本明細書において記載する主題の形態と共に使用することができるいくつかのデーター構造のいくつかの定義例を示す。00130本明細書において記載する主題の態様を実現するためのIOCTLデーター構造の例は、次のように定めることができる。00131図6から図8は、本明細書において記載する主題の形態にしたがって行うことができる動作例を概略的に表す流れ図である。説明を簡単にするために、図6から図8と関連付けて説明する方法は、一連の動作として図示されており、そのように説明する。尚、本明細書において記載する主題の形態は、図示される動作、および/またはその動作の順序によって限定されないことは言うまでもないことであり、認められてしかるべきである。一実施形態では、これらの動作は、以下で説明するような順序で行われる。しかしながら、他の実施形態では、これらの動作が並行に行われること、他の順序で行われること、および/または本明細書には紹介や説明がされない他の動作と共に行われることもある。更に、本明細書において記載する主題の形態にしたがってこの方法を実施するためには、図示されている動作の全てが必要ではない場合もある。加えて、この方法は、代わりに、状態図による一連の相互に関係付けられた状態として、またはイベントとして表すこともできることは、当業者には理解され認められよう。00132図6に移ると、ブロック605において、動作が開始する。ブロック610において、ストアのデーターの表現に対する要求が受け取られる。この要求は、ストアの一部を特定する記述例えば、位置および長さと共に伝えられる。ここでは、一部という単語は、ストアの全部または全部未満であってもよい。例えば、図2を参照すると、要求元210は、ストア220におけるデーターに対してトークンを要求することができる。要求を行うとき、要求元210は、データーの位置例えば、ファイル名、開いているファイルに対するハンドル、ファイルへの物理的オフセット、ボリューム、生ディスク等を長さと共に送ることができる。00133ブロック615において、要求に応答して、トークンがデーターに結び付けられたときにストアの一部に論理的に格納されていたデーターを表すトークンが受け取られる。前述のように、トークンは、要求されたデーターよりも少ないデーターを表すこともある。例えば、図2を参照すると、データーアクセスコンポーネント215の内1つ以上が、要求されたデーターまたはその部分集合を表すトークンを要求元210に戻すことができる。トークンは、そのトークンによって表されるデーターのサイズとは無関係なサイズあるビット数またはバイト数であってもよい。トークンは、データー構造における他のトークンと共に受け取られてもよく、この場合データー構造における各トークンには、データーの異なる部分と関連付けられているか、または2つ以上のトークンがデーターの同じ部分に関連付けられている。00134トークンの受け取りは、トークンが、要求されたデーターの部分集合であるデーターを表すことの指示を伴うこともできる。この指示は、例えば、トークンによって表されるデーターの長さの形態をなすことができる。00135ブロック620において、オフロードライトを実行するために、トークンが供給される。トークンは、オフロードプロバイダーを介して、データーの全部または一部のどちらを論理的に書き込むのかを示す情報と共に供給することもできる。この情報は、例えば、宛先関連オフセット、トークン関連オフセット、および長さを含むことができる。トークン関連オフセットが0の場合、そして長さがトークンによって表されるデーターの全長に等しい場合、データーの全てをコピーすることを示すことができる。一方、長さがデーターの全長未満である場合、データー全体未満をコピーすることを示すことができる。00136例えば、図2を参照すると、要求元は、トークンをトークンマネージャー225に渡したかもしれないデーターアクセスコンポーネント215にトークンを渡して、表されたデーターの位置を得ることができる。トークンマネージャー225が、ストア220へのアクセスを与える記憶システムの一部である場合例えば、SANにおける、トークンはSANのデーターアクセスコンポーネントに供給され、次いで、このデーターアクセスコンポーネントがこのトークンを使用してデーターを特定し、要求によって示されるデーターを論理的に書き込むことができる。00137前述のように、オフロードプロバイダーは、要求を送る装置の外部であってもよい。加えて、一旦オフロードプロバイダーが要求を受けたなら、このオフロードプロバイダーは、要求を送った装置の任意のコンポーネントとの追加の相互作用とは関係なく、データーを論理的に書き込むことができる。例えば、図3を参照すると、一旦トークンおよびライト要求がデーターアクセスコンポーネント315に到達すると、デバイス335のコンポーネントは、デバイス330からの追加の補助が全くなくても、要求通りにデーターを論理的に書き込むことができる。00138ブロック625において、何らかの他の動作があれば、実行することができる。尚、ブロック630において、トークンが生成された後の任意の時点において、要求元またはデーターアクセスコンポーネントの内他のものが、トークンを無効にすることを明示的に要求できることを注記しておく。この要求がコピー動作の間に送られた場合、一実現例では、コピーが完了するまで進めることを許可するとよい。他の実現例では、コピーを中断することもでき、エラーを発生してもよく、または他の動作を行ってもよい。00139図7に移って、ブロック705において、動作が開始する。ブロック710において、ストアのデーターの表現に対する要求が受け取られる。この要求は、ストアにおいてデーターが位置する部分を特定する記述と共に伝えられる。この要求は、記憶エリアネットワークのコンポーネントまたは他のデーターアクセスコンポーネントにおいて受け取られるのであればよい。例えば、図3を参照すると、データーアクセスコンポーネント315の内1つ以上が、トークンの要求を、ストア220におけるデーターを特定するオフセット、長さ、論理単位番号、ファイルハンドル等と共に受け取ることができる。00140ブロック715において、トークンが生成される。生成されたトークンは、論理的に格納された例えば、図3のストア220にデーターを表すことができる。前述のように、このデーターは、実現例に依存して、トークンが有効である間変化しないのでも、変化することが許されているのでもよい。このトークンは、以前に示したように、要求されたデーターの部分集合を表す場合もある。例えば、図3を参照すると、トークンマネージャー320は、ストア220において、要求元210によって要求されたデーターを表すトークンを生成することができる。00141ブロック720において、データー構造によって、トークンが、表されているデーターと関連付けられる。例えば、図3を参照すると、トークンマネージャー320は、生成されたトークンを、表されているデーターと関連付ける関連付けをトークンストア325に格納することができる。00142ブロック725において、トークンが要求元に供給される。例えば、図3を参照すると、トークンマネージャーまたはデーターアクセスコンポーネント315の内1つが、要求元210に供給するために、トークンをデーターアクセスコンポーネント310に供給することができる。トークンは、このトークンによって表されるデーターのサイズを示す長さと共に戻すことができる。00143ブロック730において、何らかの他の動作があれば、行うことができる。尚、ブロック735において、トークンが生成された後の任意の時点において、トークンマネージャーが、前述のような種々の要因に依存してトークンを無効にすることができることを注記しておく。データーに影響を及ぼす書き込み動作の間にトークンが無効にされた場合、一実現例では、書き込みを完了するまで進めることを許可するとよい。他の実現例では、書き込みを中断することもでき、エラーを発生してもよく、または他の動作を行ってもよい。00144図8は、オフロードライトがオフロードプロバイダーにおいて受け取られたときに、本明細書において記載する主題の種々の形態にしたがって行うことができる動作例を概略的に表すブロック図である。ブロック805において、動作が開始する。00145ブロック810において、トークンが受け取られる。トークンは、このトークンによって表されるデーターの全部または一部のどちらを論理的に書き込むのかを示すデーターと共に受け取ることができる。例えば、図3を参照すると、データーアクセスコンポーネント315の内の1つが、図3のデーターアクセスコンポーネント310の内の1つからトークンを受け取ることができる。00146ブロック815において、このトークンが有効か否かについて判断する。例えば、図3を参照すると、トークンマネージャー320は、トークンストア320を参照することによって、受け取ったトークンが有効か否か判断することができる。トークンが有効である場合、動作はステップ820に進む。そうでない場合、要求に応じなくてもよく、動作はブロック817に進む。00147ブロック817において、要求は応じられない。例えば、図3を参照すると、データーアクセスコンポーネント315は、コピーが行われないことを示すことができる。00148ブロック820において、オフロードコピーによって要求されたデーターが特定される。例えば、図3を参照すると、トークンマネージャー320は、トークンストア325を参照して、トークンと関連のあるデーターの位置または他の識別子を得ることができる。トークンは、このトークンによって表されるデーターをホストする装置を示すデーターを含むこと、またはこのデーターと関連付けることができる。00149ブロック825において、トークンによって表されるデーターの論理的書き込みが実行される。例えば、図3を参照すると、デバイス335が、トークンによって表されるデーターを論理的に書き込むことができる。00150ブロック830において、何らかの他の動作があれば、実行することができる。00151以上の詳細な説明から分かるように、オフロードリードおよびライトに関する形態について説明した。本明細書において記載する主題の形態は、種々の変更および代替構造の余地があるが、図面にはその内のある種の例示の実施形態を示し、以上で詳細に説明した。しかしながら、特許請求する主題の形態を、開示された特定の形態に限定するという意図はなく、逆に、全ての変更、代替構造、および本明細書において記載した主題の種々の形態の主旨および範囲に該当する均等物を全て包含することを意図していることは言うまでもない。