(57)【要約】  【課題】  システムと共有バッファ内のストレージとの間でデータを転送する方法、システム、及びプログラムを提供する。  【解決手段】  アプリケーションはコンポーネントからバッファを要求する。コンポーネントはバッファをアプリケーションに割り振り、アプリケーション・データに関するバッファの第１のオフセットと、第１のヘッダに関するバッファの第２のオフセットとをアプリケーションに返す。アプリケーションは、アプリケーション・データをバッファの第１のオフセットに書き込み、第１のヘッダをバッファの第２のオフセットに書き込む。第２のヘッダはバッファの第３のオフセットに書き込まれる。  【選択図】  図１
2008523485.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションがコンポーネントからバッファを要求するステップと、
コンポーネントがバッファを割り振るステップと、
コンポーネントがアプリケーション・データに関するバッファの第１のオフセットと、第１のヘッダに関するバッファの第２のオフセットとをアプリケーションに返すステップと、
アプリケーションがアプリケーション・データをバッファの第１のオフセットに書き込むステップと、
アプリケーションが第１のヘッダをバッファ内の第２のオフセットに書き込むステップと、
第２のヘッダをバッファの第３のオフセットに書き込むステップと、
を有する方法。
【請求項２】
第１のオフセットは第２のオフセットよりも大きく、第２のオフセットは第３のオフセットよりも大きい、請求項１に記載の方法。
【請求項３】
コンポーネントは第２のヘッダをバッファに書き込み、
第３のヘッダをバッファの第４のオフセットに書き込むステップを更に有し、第１のオフセットは第２のオフセットよりも大きく、第２のオフセットは第３のオフセットよりも大きく、第３のオフセットは第４のオフセットよりも大きい、
請求項１に記載の方法。
【請求項４】
前記コンポーネントは第１のコンポーネントからなり、
第２のコンポーネントが第２のヘッダをバッファ内容をストレージ・デバイスに転送するのに使用される情報に置き換えるステップ、
を更に有する請求項１に記載の方法。
【請求項５】
前記コンポーネントは第１のコンポーネントからなり、第３のオフセットにおける第２のヘッダはアプリケーション・データ及びヘッダを有するバッファ内容を第１のデバイス又は第２のデバイスに転送するよう指示し、
第１のコンポーネントが第２のヘッダを指すポインタを第２のコンポーネントに受け渡すステップと、
第２のコンポーネントが、バッファ内容を第１のデバイスと第２のデバイスのどちらに送信すべきか判定するために第２のヘッダを処理するステップと、
前記第２のヘッダが前記バッファ内容を前記第１のデバイスに送信するよう指示していることが判定されたことに応じて、前記バッファ内容を前記第１のデバイスに転送するのに使用されるデバイス情報を第２のヘッダに書き込むステップであって、デバイス情報が第１のコンポーネントによって書き込まれた第２のヘッダ情報と置き換えられるようにしたステップと、
を更に有する請求項１に記載の方法。
【請求項６】
第１のデバイスはストレージ・デバイスからなり、
バッファ内容をストレージ・デバイスに送信すべきことが判定されたことに応じて、ストレージ・デバイス用のストレージ・デバイス・ドライバが第２のヘッダのデバイス情報を使用してバッファ内容をバッファからストレージ・デバイスに転送するステップ、
を更に有する請求項５に記載の方法。
【請求項７】
前記第１のコンポーネントから受け渡される前記ポインタは第１のポインタからなり、
バッファ内容をストレージ・デバイスに送信すべきことが判定されたことに応じて、第２のコンポーネントがバッファを指す第２のポインタを第３のコンポーネントに送り、第３のコンポーネントがデバイス情報を前記第２のヘッダに書き込むステップと、
第３のコンポーネントがバッファを指す第３のポインタをストレージ・デバイス・ドライバに送り、ストレージ・デバイス・ドライバが第３のポインタを使用してバッファの内容をストレージ・デバイスのストレージ・メディアに書き込むステップと、
を更に有する請求項６に記載の方法。
【請求項８】
前記第１のコンポーネントは、ストレージ・マネージャのアプリケーション・プログラム・インターフェイス（ＡＰＩ）からなり、第３のコンポーネントはストレージ・エージェントからなる、請求項７に記載の方法。
【請求項９】
前記第２のデバイスはストレージ・サーバからなり、
第２のヘッダがバッファ内容をストレージ・サーバに送信するよう指示していることが判定されたことに応じて、第２のコンポーネントがバッファ内容をストレージ・サーバに送信するステップ、
を更に有する請求項５に記載の方法。
【請求項１０】
前記コンポーネントが、第１のオフセットを、アプリケーション・データを第１のオフセットから書き込んだ後に第１及び第２のヘッダを書き込むのに十分な量のスペースがバッファの第１のオフセットの前に設けられるように、計算するステップと、
前記コンポーネントが、第２のオフセットを、アプリケーション・データ及び第１のヘッダを書き込んだ後に第２のヘッダを書き込むのに十分な量のスペースがバッファの第２のオフセットの前に設けられるように、計算するステップと、
を更に有する請求項１に記載の方法。
【請求項１１】
前記コンポーネントが、第３のオフセットを、アプリケーション・データ及び第１のヘッダを書き込んだ後に第２のヘッダを書き込むのに十分な量のスペースがバッファの第３のオフセットの前に設けられるように、計算するステップ、
を更に有する請求項１０に記載の方法。
【請求項１２】
アプリケーション・データが固定の数の倍数であるかどうかを判定するステップを更に含み、第１及び第２のオフセットは、アプリケーション・データが固定の数の倍数でないことが判定されたことに応じて、空きスペース及びアプリケーション・データが固定の数の倍数を占有するように、第１のオフセットに書き込まれたアプリケーション・データの前に空きスペースを確保するように選択され、第１のヘッダは第２のオフセットから空きスペースの開始位置まで延びる、
請求項１に記載の方法。
【請求項１３】
第１のヘッダが固定の数の倍数であるかどうかを判定するステップを更に含み、第３のオフセットは、第１のヘッダが固定の数の倍数でないことが判定されたことに応じて、第１のヘッダ及び空きスペースが固定の数の倍数を占有するように、第１のヘッダの前に空きスペースを確保するように選択され、第２のヘッダは、第３のオフセットから第１のヘッダの前の空きスペースの開始位置まで延びる、
請求項１２に記載の方法。
【請求項１４】
前記固定の数は４キロバイトを有し、アプリケーション・データが固定の数の倍数でなくなるのは、バッファの第１のオフセットに書き込まれたアプリケーション・データがバッファの４キロバイト境界上に位置合わせされない場合である、請求項１２に記載の方法。
【請求項１５】
アプリケーションが複数のバッファを要求するステップと、
コンポーネントが複数のバッファをアプリケーションに返すステップと、
アプリケーションがアプリケーション・データと第１のヘッダとを複数のバッファに同時に書き込むステップと、
を更に有する請求項１に記載の方法。
【請求項１６】
プロセッサと、
プロセッサからアクセス可能であり、複数のバッファを有するメモリと、
アプリケーション及びコンポーネントを含むコンピュータに読み込み可能な媒体のコードと、を備えるシステムであって、前記プロセッサは、前記コードを実行して請求項１乃至１５のいずれか一項に記載の前記コンポーネント及びアプリケーションの各方法ステップを実施するものである、
システム。
【請求項１７】
それぞれ複数のバッファを含むメモリと通信し、請求項１乃至１５のいずれか一項に記載の各方法ステップを実施するように実行可能なアプリケーション及びコンポーネントを含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムと共有バッファのストレージとの間でデータを転送する方法、システム、及びプログラムに関するものである。
【背景技術】
【０００２】
ネットワーク・バックアップ環境において、クライアント・システムは、データをストレージ・デバイスにバックアップし、バックアップをバックアップ・サーバと協調させることができる。例えば、インターナショナル・ビジネス・マシーンズ（「ＩＢＭ」（Ｒ））社の製品であるＴｉｖｏｌｉ（Ｒ）ストレージ・マネージャは、クライアント・サーバ・システムがクライアント・データをバックアップするためのソフトウェアを提供する（ＩＢＭ及びＴｉｖｏｌｉはＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である）。クライアント・マシンは、クライアント・アプリケーションとストレージ・デバイスとの間で転送されるデータを処理する複数のプログラム・コンポーネントを含むことができる。各コンポーネントは、以前のコンポーネントによって使用されたデータをバッファから読み出し、次に、データをコンポーネントに割り振られたバッファにコピーするメモリ・コピー操作を実施する。データをコンポーネントに割り振られたバッファの間で受け渡されるデータとしてのデータの処理の一環として、プログラム・コンポーネントはヘッダ情報をデータに追加することができる。プログラム・コンポーネントは、データを以前のコンポーネントのバッファから読み出し、データを処理し、そして新しいヘッダをデータに追加した後、このデータ及び新しいヘッダをそのコンポーネントに割り当てられたバッファに書き込む。このデータを処理しているコンポーネント・チェーンの次のプログラム・コンポーネントもこれと同様の処理を行うことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
システムと共有バッファ内のストレージとの間でデータを転送する方法、システム、及びプログラムを提供する。
【課題を解決するための手段】
【０００４】
本発明の第１の態様において、アプリケーションはコンポーネントからバッファを要求する。コンポーネントはバッファをアプリケーションに割り振り、アプリケーション・データに関するバッファの第１のオフセットと、第１のヘッダに関するバッファの第２のオフセットとをアプリケーションに返す。アプリケーションはアプリケーション・データをバッファの第１のオフセットに書き込み、第１のヘッダをバッファの第２のオフセットに書き込む。第２のヘッダはバッファの第３のオフセットに書き込まれる。
【０００５】
本発明の第２の態様において、第１のコンポーネントは第２のコンポーネントからバッファを要求する。第２のコンポーネントはバッファを第１のコンポーネントに割り振り、アプリケーション・データに関するバッファの第１のオフセットと、第１のヘッダに関するバッファの第２のオフセットとを第１のコンポーネントに返す。第２のコンポーネントはアプリケーション・データをバッファの第１のオフセットに書き込み、第１のヘッダをバッファ内の第２のオフセットに書き込む。第２のヘッダはバッファの第３のオフセットに書き込まれる。
【０００６】
ここで、単なる例示のために、本発明の諸実施形態について添付図面を参照しながら説明する。
【発明を実施するための最良の形態】
【０００７】
以下の記載では、本明細書の一部を形成し、本発明のいくつかの実施形態を例示する添付図面を参照する。本発明の範囲から逸脱することがなければ、他の実施形態が利用されてもよく、構造上及び動作上の変更が施されてもよいことが理解されるだろう。
【０００８】
図１は、メモリ４を含むストレージ・クライアント２を有するネットワーク・コンピューティング環境を示している。ストレージ・クライアント２は、プログラム・コンポーネントとして、データベース・アプリケーション等のようなアプリケーション６と、ストレージ・マネージャのアプリケーション・プログラム・インターフェイス（ＡＰＩ）８と、仮想サーバ１０と、ストレージ・エージェント１２と、ストレージ・デバイス１６に対する書き込みインターフェイスを提供するストレージ・デバイス・ドライバ１４とを含んでいる。ストレージ・マネージャＡＰＩ８はバッファ・プール２０内のバッファ１８を管理する。
【０００９】
一実施形態において、ストレージ・デバイス・ドライバ１４は、ストレージ・デバイス１６に対する書き込みデータをストレージ・エリア・ネットワーク（ＳＡＮ）等のようなネットワーク２２を介してストレージ・デバイス１６に通信する。一代替実施形態において、クライアント２は周辺機器相互接続（ＰＣＩ）バスや小型コンピュータ・システム・インターフェイス（ＳＣＳＩ）バス等のようなバス・インターフェイスを介してストレージ・デバイス１６に接続することができる。
【００１０】
一実施形態において、仮想サーバ１０はストレージ・デバイス１６に対する書き込みデータ情報をローカル・エリア・ネットワーク（ＬＡＮ）等のような第２のネットワーク２８を介してストレージ・マネージャ・サーバ２６を有するサーバ２４に通信することができる。このようにして、ストレージとの間でやりとりされるデータは、ＳＡＮ等のような第１のネットワークを介して伝送され、転送中のデータに関する制御情報は、ＬＡＮ等のような別のネットワークを介して送られる。一代替実施形態では、データ及び情報とデータ転送処理に関するコマンドの両方を、図１に示されるような別個のネットワークではなく同一のネットワークを介して伝送することができる。サーバ２６は、ストレージ・デバイス１６に記憶されているデータに関する情報をバックアップ・データベースで維持し、バックアップ・データ・セットを管理する。
【００１１】
ストレージ・マネージャＡＰＩ８は、アプリケーション６とストレージ・デバイス１６との間で転送されるデータを記憶して使用するために、バッファ・プール２０のバッファ１８をクライアント２の各コンポーネントに割り振る。図２は、コンポーネント６、８、１０、１２及び１４がバッファ１８に追加する、アプリケーション６によって書き込まれるアプリケーション・データ４０及びアプリケーション・ヘッダ４４、ストレージ・マネージャＡＰＩ８によって書き込まれるＡＰＩヘッダ４６およびストレージ・マネージャＡＰＩ８によって書き込まれたバッファをどのように処理するかを指示するｖｅｒｂ情報４８を含む情報を示している。一実施形態において、ストレージ・エージェント１２は、デバイス固有情報をもつｖｅｒｂ情報４８を上書きして、ストレージ・デバイス・ドライバ１４がデータをストレージ・デバイス１６に転送できるようにすることができる。本明細書に記載の諸実施形態では、コンポーネント６、８、１０、１２及び１４等のコンポーネントは、バッファ内容を処理するために、コンポーネントがバッファに書き込んだヘッダ又は他の情報を含むバッファの内容を指すポインタをコンポーネント８、１０、１２、及び１４等の次のコンポーネントに伝達する。このようにして、バッファ１８は各コンポーネントによって共有され、したがって、バッファのデータを処理しヘッダ情報を追加する各コンポーネントは、バッファの内容をコピーする追加的なバッファを割り振る必要がない。その代わりに、各コンポーネントはデータを処理し、ヘッダ及び他の情報を同一の共有バッファに追加することができ、それによって別個のバッファとの間のメモリ・コピー操作を実施する必要が解消される。
【００１２】
図３、図４及び図５は、データをストレージ・デバイス１６に転送するためにデータをコンポーネント６、８、１０、１２及び１４等のコンポーネント間で転送するためにコンポーネントで実施する処理を示している。図３を参照すると、アプリケーション６はストレージ・マネージャＡＰＩ８に１つ又は複数のバッファ１８を要求することによって（ブロック１０２）アプリケーション・データをストレージ・デバイス１６に転送する処理を開始する（ブロック１００）。この要求はアプリケーション６が書き込もうとするヘッダの最大の長さを含むことができ、この長さはアプリケーション６がヘッダを書き込まない場合にはゼロとすることもできる。それに応じて、ストレージ・マネージャＡＰＩ８は、バッファ・プール２０内のフリー・バッファ１８として指示された１つ又は複数のバッファ１８をアプリケーションに割り振る（ブロック１０４）。第１のコンポーネント又はストレージ・マネージャＡＰＩ８は、アプリケーション・データ４０に関する第１のオフセットを、アプリケーション・データ４０を第１のオフセットから書き込んだ後に第１及び第２のヘッダ例えばアプリケーション・ヘッダ４４及びＡＰＩヘッダ４６を書き込むのに十分な量のスペースがバッファ１８内の第１のオフセットの前に設けられるように、計算する（ブロック１０６）。第１のオフセットは要求で指示されたヘッダの長さに対するバッファ１８内の十分なスペースを提供することができる。かくして、第１のオフセットはアプリケーション・データ４０のバッファ１８内の開始アドレスを指定する。第１のコンポーネント８は更に、第２のオフセットを、アプリケーション・データ４０及びアプリケーション・ヘッダ４４を書き込んだ後に第２のヘッダ例えばＡＰＩヘッダ４６を書き込むのに十分な量のスペースがバッファ内の第２のオフセットの前に設けられるように、計算する（ブロック１０８）。このようにして、各オフセットは、一つのコンポーネントがそれ以前のコンポーネントによって書き込まれたデータの前にデータを書き込むことが可能となるように計算され、それによって各コンポーネントはそれ以前に書き込まれたアプリケーション・データ４０及びヘッダの前にヘッダを追加することが可能となる。更に、バッファ１８内のオフセット及び各ヘッダの長さを含めて、ヘッダ４８、４６、４４等のすべてのヘッダ及びデータ４０に関する情報を有するデータ構造が、バッファ１８のトップに存在するようにし、コンポーネント６、８、１０、１２及び１４のいずれもがバッファ１８内のヘッダ及びデータの位置を判定することが可能になる。
【００１３】
本明細書に記載の諸実施形態において、ストレージ・マネージャＡＰＩ８は、データが４Ｋ境界等の固定された境界領域上に確実に留まることを望むこともある。アプリケーション６がストレージ・デバイス１６との間のＩ／Ｏを実行するときは、バッファ１８がＩ／Ｏ用のカーネルに受け渡される。当該カーネルは、ダイレクト・メモリ・アドレッシング（ＤＭＡ）を実現するために、Ｉ／Ｏデバイス（ＰＣＩバス、ＳＣＳＩバス、ＳＡＮ等）がデータにアクセスし、当該データを適切なデバイスに送信することができるように、バッファ１８を（仮想メモリではなく）物理メモリ４に「ピン（ｐｉｎ）」することができる。このようなバッファ１８の「ピニング（ｐｉｎｎｉｎｇ）」は、Ｉ／Ｏ転送の処理中に（Ｉ／Ｏ転送がバス上にある段階で）データが他のアプリケーションによって使用されないようにするものである。
【００１４】
ポインタのアプリケーション・データ４０が固定の数（例えば４キロバイト（Ｋｂ））の倍数でない場合には（ブロック１１０）、第１のコンポーネント（ストレージ・マネージャＡＰＩ８）は、第１及び第２のオフセットを、空きスペース及びアプリケーション・データが固定の数、即ち４Ｋｂの倍数を占有するように、第１のオフセットに書き込まれたアプリケーション・データの前に空きスペースを確保するように、計算する（ブロック１１２）。例えば、第２のオフセットは、アプリケーション・データ４０を４Ｋｂ境界上に位置合わせするのに必要な空きスペース４２の量と等しい、第１のオフセットからのオフセットを有することができ、それによって、書き込まれるヘッダの長さが第２のオフセット、例えばアプリケーション・ヘッダ４４から始まるようにすることができる。第１のコンポーネント８は、第１及び第２のオフセットと、それ自体に割り振られているバッファ１８のハンドルとをアプリケーション６に返す（ブロック１１４）。各オフセットに応じて、アプリケーション６は、アプリケーション・データ４０をバッファ１８内の第１のオフセットに書き込み（ブロック１１６）、第１のヘッダ、例えばアプリケーション・ヘッダ４４をバッファ１８内の第２のオフセットに書き込む（ブロック１１８）。アプリケーション・ヘッダ４４の書き込みは任意選択としてもよい。書き込みを行った後、アプリケーション６は、上記のバッファのハンドルを第１のコンポーネント（ストレージ・マネージャＡＰＩ  ８）に受け渡す（ブロック１２０）。
【００１５】
図４を参照すると、第１のコンポーネント（ストレージ・マネージャＡＰＩ８）は、上記のバッファのハンドルをアプリケーション６から受け取ったときは（ブロック１３０）、第３のオフセットを、アプリケーション・データ４０及び第１のヘッダ（アプリケーション・ヘッダ４４）を書き込んだ後に第２のヘッダ（ＡＰＩヘッダ４６）を書き込むのに十分な量のスペースがバッファ内の第３のオフセットの前に設けられるように、計算する（ブロック１３２）。一実施形態において、（ブロック１３４で）第１のヘッダ（アプリケーション・ヘッダ４４）が固定の数、例えば４Ｋｂの倍数である場合には、ストレージ・マネージャＡＰＩ８は、第３のオフセットを、第１のヘッダ及び空きスペースが固定の数（４Ｋｂ）の倍数を占有するように、第１のヘッダの前に空きスペースを確保するように、選択する（ブロック１３６）。第２のヘッダ（ＡＰＩヘッダ４６）は、バッファ１８内の第３のオフセットに書き込まれる（ブロック１３８）。ストレージ・マネージャＡＰＩ  ８は更に、第３のヘッダ（ｖｅｒｂヘッダ４８）を、バッファ内容をストレージ・デバイス１６とサーバ２４のどちらに転送すべきか指示するバッファ１８内の第４のオフセットに書き込む（ブロック１４０）。ストレージ・マネージャＡＰＩ８は、ストレージ・デバイス１６宛てのデータについてはストレージ・デバイス１６に転送し、バックアップ・コマンド及び関連情報についてはクライアント２のバックアップ処理を管理するサーバ２４に転送するよう指示する。次に、ストレージ・マネージャＡＰＩ８は、第３のヘッダを指すポインタを仮想サーバ１０等のような第２のコンポーネントに受け渡す（ブロック１４２）。
【００１６】
仮想サーバ１０は、第３のヘッダを指すポインタを受け取ったことに応じて、第３のヘッダ、例えばｖｅｒｂヘッダ４８がバッファ内容をストレージ・デバイス１６とサーバ２４のどちらに送信するよう指示しているか判定する（ブロック１４４）。（ブロック１４４で）バッファ内容がサーバ２４宛てのものである場合には、仮想サーバ１０は、当該バッファ内容をネットワーク２８を介してサーバ２４に送信する（ブロック１４６）。そうではなく、（ブロック１４４で）バッファ内容がストレージ・デバイス１６宛てのものである場合には、仮想サーバ１０は、バッファ１８を指す第２のポインタをストレージ・エージェント１２等のような第３のコンポーネントに送る（ブロック１４８）。
【００１７】
図５を参照すると、第３のコンポーネント（ストレージ・エージェント１２）は、第２のポインタを受け取ったことに応じて（ブロック１５０）、バッファ内容を第１のデバイスに転送するのに使用されるデバイス情報を、第３のヘッダに書き込む（ブロック１５２）。このデバイス固有情報は、第１のコンポーネント（ストレージ・マネージャＡＰＩ  ８）によって書き込まれた第２のヘッダ情報と置き換えられる。次に、ストレージ・エージェント１２は、バッファ１８を指す第３のポインタをストレージ・デバイス・ドライバ１４に送る（ブロック１５４）。それに応じて、ストレージ・デバイス・ドライバ１４は、第３のポインタを使用してバッファ１８の内容にアクセスし、当該内容をストレージ・デバイス１６内の磁気記憶媒体（例えばハード・ディスク・ドライブや磁気テープ等）、光記憶媒体、あるいは当業界で周知の他の適切な不揮発性記憶媒体等のようなストレージ・メディアに転送する（ブロック１５６）。
【００１８】
他の実施形態では、上記のヘッダのいくつかは書き込まれないこともある。例えば、アプリケーション６又はストレージ・マネージャＡＰＩ８がヘッダ４４又は４６を書き込まなかった場合、第２のヘッダはｖｅｒｂデータ４８からなることになる。別法として、各コンポーネントは、更なるオフセット計算が必要となる追加的なヘッダを書き込むこともできる。更に、任意の書き込み済みのヘッダのオフセットは、それ以前に書き込まれたヘッダに追加すべき空きスペースを考慮に入れて、当該空きスペース及び書き込み済みのヘッダが４Ｋｂ境界上にくることを保証することもできる。このようにして、空きスペース４２の後のオフセットに書き込まれるヘッダ４４は、当該オフセットから空きスペース４２の開始位置まで延びる。
【００１９】
一実施形態において、第１のオフセットは第２のオフセットよりも大きく、第２のオフセットは第３のオフセットよりも大きく、第３のオフセットは第４のオフセットよりも大きい。このようにして、データ処理における後続の各コンポーネントは、ヘッダをオフセットのデータに書き込んで、追加的なヘッダを、それ以前に書き込まれたアプリケーション・データ及びバッファに書き込まれたヘッダ上に配置することができる。
【００２０】
他の実施形態において、アプリケーション６は、ストレージ・デバイス１６にデータを要求することができる。それに応じて、ストレージ・デバイス・ドライバ１４は、当該データにアクセスし、当該データをストレージ・エージェント１２に返す。次に、ストレージ・エージェント１２（又は他のコンポーネント）は、ストレージ・マネージャＡＰＩ８に、検索対象のデータを追加するためのバッファ１８を要求することができる。次に、上記の各コンポーネントはオフセット計算を実施して、バッファ１８内の場所を設けるオフセットを提供することができ、それによって、各コンポーネントが検索対象のアプリケーション・データに関するヘッダをバッファ１８に追加し、その結果、バッファ１８を指すポインタが最終的に当該データにアクセスするアプリケーション６に受け渡されるようにすることができる。
【００２１】
様々なコンポーネントは、本明細書に記載の諸実施形態を用いてバッファを共有し、その同一のバッファのデータにアクセスし、ヘッダ情報をその同一のバッファに書き込み、当該バッファを指すポインタを他のコンポーネントに受け渡して、それらの他のコンポーネントが当該バッファにアクセスすることを可能にする。
【００２２】
他の実施形態において、アプリケーションは、ストレージ・マネージャＡＰＩ８に複数のバッファを要求し、次にアプリケーション・データ４０とアプリケーション・ヘッダ４４のデータを同時に複数のバッファに書き込んだ後、当該バッファのハンドルをストレージ・マネージャＡＰＩ  ８に受け渡すことができる。
【００２３】
（追加的な実施形態の詳細）
本明細書に記載の処理は、標準的なプログラミング技法又はエンジニアリング技法あるいはその両方を使用してソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組合せを製造する方法、装置、又は製品として実施することができる。本明細書で使用する「製品（ａｒｔｉｃｌｅ  ｏｆ  ｍａｎｕｆａｃｔｕｒｅ）」という用語は、ハードウェア・ロジック（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）、あるいは、磁気記憶媒体（例えば、ハード・ディスク・ドライブ、フレキシブル・ディスク、テープ等）、光記憶装置（ＣＤ−ＲＯＭ、光ディスク等）、揮発性及び不揮発性メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウェア、プログラマブル・ロジック等）のようなコンピュータに読み込み可能な媒体に実装されるコード又はロジックを指す。コンピュータに読み込み可能な媒体内のコードは、プロセッサによってアクセスされ実行される。更に、好ましい諸実施形態がその内部で実装されるコードは、伝送媒体を介してアクセス可能なものとすることができ、あるいはファイル・サーバからネットワークを介してアクセス可能なものとすることができる。そのような場合には、コードがその内部で実装される製品は、ネットワーク伝送回線、無線伝送媒体、空間内を伝搬する信号、電波、赤外線信号等のような伝送媒体を有していてもよい。それ故、「製品」は、コードがその内部で実施される媒体を有していてもよい。更に、「製品」は、コードがその内部で実装され処理され実行されるハードウェア構成要素とソフトウェア構成要素の組合せを有していてもよい。言うまでもなく、当業者なら本発明の範囲から逸脱することなく、多くの修正を上記の構成に施すことができ、上記の製品が当業界で知られる任意の情報保持媒体を有していてもよいことを理解するであろう。
【００２４】
図３乃至５に示される処理は、ある順番で発生する複数のイベントを示している。諸代替実施形態では、上記の処理の一部を別の順番で実施し、修正し、あるいは省略することもできる。また、いくつかのステップが上述のロジックに追加された場合にも、本明細書に記載の諸実施形態と矛盾するものではない。更に、本明細書に記載の処理は逐次的に行うことができ、あるいはいくつかの処理を並列的に処理することができる。更に、各処理は、単一の処理ユニットによって処理されてもよいし、分散処理ユニットによって処理されてもよい。
【００２５】
本発明の様々な実施形態の前述の記載は、例示及び説明のために提示されてきた。本発明を余すところのないものとし、又は開示の厳密な形態に限定することは、本出願人の意図するところではない。上記の教示に照らせば多くの修正形態及び変更形態が可能である。本発明の範囲は、上記の詳細な説明ではなく添付の特許請求範囲によって限定されることが意図されている。上記の明細書、実施例、及びデータは、本発明の製造及び使用に関する完全な説明を与えるものである。本発明の様々な実施形態は本発明の趣旨及び範囲から逸脱しない範囲で作成することができ、したがって、本発明の範囲は添付の特許請求範囲の各請求項によって定められる。
【図面の簡単な説明】
【００２６】
【図１】ネットワーク・コンピューティング環境の一実施形態を示す図である。
【図２】バッファ・フォーマットの一実施形態を示す図である。
【図３】データをアプリケーションからストレージ・デバイスに転送する処理の一実施形態を示す図である。
【図４】データをアプリケーションからストレージ・デバイスに転送する処理の一実施形態を示す図である。
【図５】データをアプリケーションからストレージ・デバイスに転送する処理の一実施形態を示す図である。
【図１】
2008523485.tif 000003
【図２】
2008523485.tif 000004
【図３】
2008523485.tif 000005
【図４】
2008523485.tif 000006
【図５】
2008523485.tif 000007
【国際調査報告】
2008523485.tif 000008
2008523485.tif 000009
2008523485.tif 000010