(57)【要約】【課題】異なるサイズを有するデータのブロックを格納し、取り出す方法を提供する。【解決手段】本方法は、ブロック記憶デバイス中に格納されるべき第１のデータ・セグメントを受け取るステップであって、前記第１のデータ・セグメントがアドレスを持っているステップを含むことができる。本方法は、また、前記第１のデータ・セグメントが標準サイズに適合するかどうかを判定するステップと、前記第１のデータ・セグメントが標準サイズを有しない場合に、前記宛先アドレスに従って前記第１のデータ・セグメントをソートするステップとを含むことができる。本方法は、さらに、非標準データ・セグメントを満たされていないブロック割付けの中に入れるステップと、第２の非標準データ・セグメントを、前記第２のデータ・セグメントが前記宛先識別子を有するとき、前記満たされていないブロック割付けの中に入れるステップとを含むことができる。他の実施形態も開示される。【選択図】図１
2011523135.tif 000002
【特許請求の範囲】
【請求項１】
ブロック記憶デバイス中に格納されるべき第１のデータ・セグメントを受け取るステップであって、前記第１のデータ・セグメントが宛先識別子を有するステップと、
前記第１のデータ・セグメントが少なくとも１つの予め決められたサイズに適合するかどうかを判定するステップであって、前記ブロック記憶デバイスが、前記少なくとも１つの予め決められたサイズのデータ・セグメントを受け付けるように構成されているステップと、
前記第１のデータ・セグメントが前記少なくとも１つの予め決められたサイズに適合していない場合に、前記宛先識別子に基づいて前記第１のデータ・セグメントをソートするステップと、
前記第１のデータ・セグメントが前記少なくとも１つの予め決められたサイズに適合しない場合に、前記第１のデータ・セグメントを満たされていないブロック割付けの中に入れるステップと、
前記少なくとも１つの予め決められたサイズに適合しない第２のデータ・セグメントを、前記第２のデータ・セグメントが前記宛先識別子を有するとき、前記第１のデータ・セグメントを有する前記満たされていないブロック割付けの中に入れるステップと、
を含む方法。
【請求項２】
前記第２のデータ・セグメントが前記少なくとも１つの予め決められたサイズに適合しないかどうかを判定するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のデータ・セグメントおよび前記第２のデータ・セグメントを有する前記ブロックをブロック記憶デバイスに送るステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記第１のデータ・セグメントおよび第２のデータ・セグメントによって占められない、前記ブロック割付けの領域を満たすステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記ブロック中に残された割付けの量を前記第１のセグメントのサイズに基づいて決定し、残っているブロック割付けに基づいて前記第２のデータ・セグメントを第１の部分と第２の部分にパーズし、第２のセグメントの前記第１の部分を前記ブロック割付けの中に入れるステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記第２のセグメントを第２のブロック割付けの中に入れるステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記宛先識別子が、論理アドレスである、請求項１に記載の方法。
【請求項８】
前記宛先識別子が、論理ユニット番号である、請求項１に記載の方法。
【請求項９】
前記少なくとも１つの予め決められたサイズに適合しないデータ・セグメントを有するブロック割付けにタグを付けるステップをさらに含む、請求項１に記載の方法。
【請求項１０】
複数のデータ・セグメントを受け取り、前記複数のデータ・セグメント中のデータ・セグメントが予め決められたサイズに適合するかどうかを判定し、さらに、前記データ・セグメントが前記予め決められたサイズに適合しない場合に、宛先識別子を利用して前記データ・セグメントを非標準セグメントとしてソートするためのソータと、
ブロック割付けを有するブロック配置モジュールであって、前記宛先識別子に基づいて前記非標準セグメントをブロック割付けの中に入れ、さらに他の非標準セグメントを前記ブロック割付けの中に入れる、前記ブロック配置モジュールと、
を含むシステム。
【請求項１１】
前記ブロック配置モジュールが、非標準セグメントを有するブロック割付けにタグを付ける、請求項１０に記載のシステム。
【請求項１２】
前記非標準セグメントを有する前記ブロック割付けをブロック記憶デバイスの中へ移動させるのを容易にするスタックをさらに備える、請求項１０に記載のシステム。
【請求項１３】
前記ブロック割付けをメモリに転送するのを容易にするハイパーバイザをさらに備える、請求項１０に記載のシステム。
【請求項１４】
前記ブロック配置モジュールが、非標準セグメントで満たされていない前記ブロック割付けの部分を満たす、請求項１０に記載のシステム。
【請求項１５】
区分計算システムの一部分である、請求項１０に記載のシステム。
【請求項１６】
ディジタル・コンピュータの内部メモリ中にロードすることができるコンピュータ・プログラムであって、前記コンピュータ上で動くとき、請求項１から９に記載の方法を実施するように機能するソフトウェア・コード部分を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムの分野に関する。より詳細には、本発明は、データ・ブロック処理システム中での非標準データ・セグメントのトランザクションに関する。
【背景技術】
【０００２】
多くの大型コンピュータ・システムは、複数のオペレーティング・システム（ＯＳ）を同時に動かすことができる。そのような構成の１つの問題は、システム資源を複数のＯＳに効率的に割り付けることである。複数のＯＳをサポートするいくつかのコンピュータは、資源割付けをＯＳごとに固定し、その割付けは、ある期間にわたって変わらない。より複雑なコンピュータ・システムは、各ＯＳの要求に基づいて資源を動的に割り付けることができる。
【０００３】
メモリ機能を仮想化することが関心の高い話題になっている。メモリの仮想化は、多くのやり方で行うことができる。１つの方法は、メモリを「ページング」することまたはメモリをスワップすることによっており、高性能メモリに格納された遊休情報は、ディスクのような遠隔位置にフラッシュされ、または移動される。ページングという用語は、仮想アドレス・スペースがページと呼ばれる固定サイズのブロックに分割されて、ページがフラッシュされるフラッシング技術であるので、しばしば利用される。「ページ」は、一般に、あるサイズのメモリの連続したブロックであり、システムは、ページのサイズのメモリのユニットまたはブロックを管理する。伝統的に、システム中のページは、一様なサイズまたはセグメント、例えば４０９６バイトを持っている。ページは、一般に、ＯＳが利用できる変換の最小セグメントまたはユニットである。したがって、ページは、システムによって移動され処理されることがあるデータの標準化セグメントの定義である。
【０００４】
メモリ仮想化の一部分として、従来のＯＳは、メモリ・ピン止めまたはメモリ・ページのピン止めを行う。ページのピン止めまたはメモリ・ページの予約は、典型的に、特権能力である。ピン止めは、典型的に、通常のプロセスが利用することはできないが、ＯＳのハイパーバイザおよびカーネル拡張機能だけが利用することができる。カーネル拡張機能は、資源の共用を調整するＯＳの一部分であることがあり、カーネルはＯＳから資源を「取得する」ことができる。
【０００５】
理解できることであるが、同じプラットフォーム上で複数のＯＳを効率的に動作させるためには、適切なメモリ管理が問題であることがある。複数のＯＳまたはプロセッサあるいはその両方を動かす計算プラットフォーム上で、大多数のＯＳまたはプロセッサあるいはその両方は、遊びの状態で、その資源のほんの小さなパーセンテージを利用しているにすぎないことがあり、一方で、少数のＯＳまたはプロセッサが容量以上で動いている。オーバーコミットされたまたは容量を超えて動いているＯＳは、資源の不足によって遅くなることがあり、また故障を起こすことさえある。理解できることであるが、メモリ割付けは重要な特徴であり、メモリ資源の不足はプラットフォームおよびＯＳに大きな影響を及ぼすことがある。
【０００６】
例えば、ＯＳが、ランダム・アクセス・メモリ（ＲＡＭ）のような実または高性能メモリ資産の範囲外で動くとき、ＯＳは、ＲＡＭに比べて遅く効率の悪いディスク・ドライブのような大容量データ・ストレージ資産にしばしば頼る。ＯＳまたはアプリケーションで要求されるメモリが、ＲＡＭに割り付けられたものを超え（例えば、予期されなかった大きな最大需要のために）、システムが追加のメモリ資源を捜し出して利用することができない場合、ＯＳはメモリの範囲外で動くことがあり、システムが異常停止するか「クラッシュ」することがある。
【０００７】
メモリの欠点を回避するために、いくつかの計算プラットフォームは、仮想メモリをＯＳに提供する。一般に、仮想メモリは、割り付けられているがいつでも「物理的」基盤を持っていない可能性のあるメモリであることがあるが、概念的な面では物理メモリとして模倣されることがある。言い換えると、仮想メモリは、計算プラットフォームによってシミュレートされたサブシステムであることがある。したがって、仮想メモリは、実際のメモリよりも大きなメモリの量を表すことができる。しかし、適切に動作する仮想メモリ・システムは、固定メモリ割付けを有するメモリ・システムよりも経済的なストレージを生成することができる。
【０００８】
多くの仮想メモリ・システムは、ハイパーバイザまたは仮想メモリ・マネージャ（ＶＭＭ）によって制御される。ハイパーバイザは、しばしば、仮想機械モニタ／制御装置と呼ばれ、ハイパーバイザは、複数のＯＳが一組の規則に従って資源を共用することができるように、システムを管理することができる。典型的な仮想メモリ設計は、メモリをオーバーコミットする。
【０００９】
仮想化メモリ環境で動くＯＳは、メモリ仮想化を知らないことがある。いくつかの従来のシステムは、「オフザシェルフ」・オペレーション・システムを使用し、ＯＳに協調型メモリ・オーバーコミットメント（ＣＭＯ）・カーネル拡張機能を追加することによってメモリ仮想化を実現する。このカーネル拡張機能は、ハイパーバイザが、仮想化されたＯＳのメモリ資源を管理するのを助けることができる。ピン止め可能なメモリの量を制限することによって、システムは、将来の割付けを管理するために大きな十分なページ可能プールを預けられる。
【００１０】
今日の社会では、グローバルな協調がますます重要になっている。ますます多くのアプリケーションが、地球全体のまたは所定ネットワーク内の多くのユーザがアプリケーション・データを共用することができるように設計されている。現在、このデータ共用を可能にするが欠陥のある方法が存在している。例えば、２人のユーザが１つの共通のファイルを変更する必要があることを考えよう。このファイルは、料金を伴うが、ネットワーク上で両方のユーザによって共用されることがある。ユーザは、現在、ネットワーク・ファイル・システム（ＮＦＳ）を設定してホストとしてファイルを処理しなければならず、それから、データにアクセスするために、情報がネットワークで転送されなければならない。機密保護が問題である場合には、安全なシステムが提供されなければならない。１つのファイルを共用するために、ユーザは、今では、ファイルにアクセスするために複数の技術を利用しなければならない。
【００１１】
多くの既存の分散計算解決策は、マスタ−スレーブ・アーキテクチャを実現し、このアーキテクチャには、作業負荷をスレーブ・ノードに送るマスタ・ノードが存在する。所定のタスクが完了するときに、マスタ・ノードは、各スレーブ・ノードから結果を集めることができる。この通信が行われるために、マスタ・ノードは、データ・オブジェクトを直列に変換するか、スレーブ・ノードによってパーズされ／非直列化されるように基本形でデータを渡さなければならない。このプロセスは、データをパーズするためにかなりのオーバーヘッドを必要とするので、時間のかかるものである。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
異なるサイズを有するデータのブロックを格納し、取り出す方法を提供する。
【課題を解決するための手段】
【００１３】
本方法は、ブロック記憶デバイスに格納されるべき第１のデータ・セグメントを受け取るステップであって、第１のデータ・セグメントがアドレスを有するステップを含むことができる。本方法は、また、第１のデータ・セグメントが予め決められたサイズに適合するかどうかを判定するステップと、第１のデータ・セグメントが予め決められたサイズに適合していない場合、宛先識別子に基づいて第１のデータ・セグメントをソートするステップとを含むことができる。本方法は、さらに、第１のデータ・セグメントが適合しない場合に、第１のデータ・セグメントを満たされていないブロック割付けの中に入れるステップと、少なくとも１つの予め決められたサイズに適合しない第２のデータ・セグメントを、第２のデータ・セグメントが宛先識別子を有するとき、第１のデータ・セグメントを有する満たされていないブロック割付けの中に入れるステップとを含むことができる。他の実施形態も開示される。
【００１４】
第１の態様から見ると、本発明は、ブロック記憶デバイス中に格納されるべき第１のデータ・セグメントを受け取るステップであって、第１のデータ・セグメントが宛先識別子を有するステップと、第１のデータ・セグメントが少なくとも１つの予め決められたサイズに適合するかどうかを判定するステップであって、ブロック記憶デバイスが、少なくとも１つの予め決められたサイズのデータ・セグメントを受け付けるように構成されているステップと、第１のデータ・セグメントが少なくとも１つの予め決められたサイズに適合していない場合に、宛先識別子に基づいて第１のデータ・セグメントをソートするステップと、第１のデータ・セグメントが少なくとも１つの予め決められたサイズに適合しない場合に、第１のデータ・セグメントを満たされていないブロック割付けの中に入れるステップと、少なくとも１つの予め決められたサイズに適合しない第２のデータ・セグメントを、第２のデータ・セグメントが宛先識別子を有するとき、第１のデータ・セグメントを有する満たされていないブロック割付けの中に入れるステップとを含む方法を提供する。
【００１５】
好ましくは、本発明は、第２のデータ・セグメントが少なくとも１つの予め決められたサイズに適合しないかどうかを判定するステップをさらに含む方法を提供する。
【００１６】
好ましくは、本方法は、第１のデータ・セグメントおよび第２のデータ・セグメントを有するブロックをブロック記憶デバイスに送るステップをさらに含む方法を提供する。
【００１７】
好ましくは、本方法は、第１のデータ・セグメントおよび第２のデータ・セグメントによって占められない、ブロック割付けの領域を満たすステップをさらに含む方法を提供する。
【００１８】
好ましくは、本方法は、ブロック中に残された割付けの量を第１のセグメントのサイズに基づいて決定し、残っているブロック割付けに基づいて第２のデータ・セグメントを第１の部分と第２の部分にパーズし、第２のセグメントの第１の部分をブロック割付けの中に入れるステップをさらに含む請求項１に記載の方法を提供する。
【００１９】
好ましくは、本発明は、第２のセグメントを第２のブロック割付けの中に入れるステップをさらに含む方法を提供する。
【００２０】
好ましくは、本発明は、宛先識別子が論理アドレスである方法を提供する。
【００２１】
好ましくは、本発明は、宛先識別子が論理ユニット番号である方法を提供する。
【００２２】
好ましくは、本発明は、少なくとも１つの予め決められたサイズに適合しないデータ・セグメントを有するブロック割付けにタグを付けるステップをさらに含む方法を提供する。  
【００２３】
他の態様から見ると、本発明は、ブロック記憶デバイスからデータの論理ボリュームを受け取るステップと、論理ボリューム中のデータが同質であるかどうかを判定するステップと、論理ボリュームのデータが同質でない場合には、論理ボリュームをデータ・セグメントにパーズするステップと、パーズされたデータ・セグメントを伝送するステップとを含む方法を提供する。
【００２４】
好ましくは、本発明は、パーズされたデータ・セグメントを要求エンティティに基づいて宛先ノードに送るステップをさらに含む方法を提供する。
【００２５】
好ましくは、本発明は、検出が、論理ボリュームに関連のあるタグを読み出してブロックが同質であるかどうかを判定することを含む方法を提供する。
【００２６】
好ましくは、本発明は、少なくとも同様な宛先識別子を有するデータ・セグメントを連結するステップをさらに含む方法を提供する。
【００２７】
他の態様から見ると、本発明は、複数のデータ・セグメントを受け取り、複数のデータ・セグメント中のデータ・セグメントが予め決められたサイズに適合するかどうかを判定し、さらに、データ・セグメントが予め決められたサイズに適合しない場合に、宛先識別子を利用してデータ・セグメントを非標準セグメントとしてソートするためのソータと、ブロック割付けを有するブロック配置モジュールとを備えるシステムを提供し、ブロック配置モジュールは、宛先識別子に基づいて非標準セグメントをブロック割付けの中に入れ、さらにブロック配置モジュールは、他の非標準セグメントをブロック割付けの中に入れる。
【００２８】
好ましくは、本発明は、ブロック割付けを受け付けるようにブロック配置モジュールに結合されたブロック記憶デバイスをさらに備えるシステムを提供する。
【００２９】
好ましくは、本発明は、ブロック配置モジュールが、非標準セグメントを有するブロック割付けにタグを付けるシステムを提供する。
【００３０】
好ましくは、本発明は、非標準セグメントを有するブロック割付けをブロック記憶デバイスの中へ移動させるのを容易にするスタックをさらに備えるシステムを提供する。
【００３１】
好ましくは、本発明は、ブロック割付けをメモリに転送するのを容易にするハイパーバイザをさらに備えるシステムを提供する。
【００３２】
好ましくは、本発明は、ブロック配置モジュールが、非標準セグメントで満たされていないブロック割付けの部分を満たすシステムを提供する。
【００３３】
好ましくは、本発明は、区分計算システムの一部分であるシステムを提供する。
【００３４】
本開示の態様は、以下の詳細な説明を読み、添付の図面を参照すると直ぐに明らかになり、図面では、同様な参照は似た要素を示すことがある。
【図面の簡単な説明】
【００３５】
【図１】仮想実メモリを有する計算プラットフォームの一部分を示すブロック図である。
【図２】仮想メモリを共用することができる分散計算システムを示すブロック図である。
【図３】仮想メモリを共用することができる他の分散計算システムを示すブロック図である。
【図４】仮想メモリを利用して分散計算を行う方法を示す流れ図である。
【図５】仮想メモリ用のブロック・ストレージ・インタフェースの動作を説明する方法の流れ図である。
【図６】仮想化システム中のＩ／Ｏを制御する方法を示す流れ図である。
【図７】仮想化システム中のＩ／Ｏを制御する他の方法を示す流れ図である。
【図８】仮想メモリ用のブロック・ストレージ・インタフェースの動作を説明する方法の流れ図である。
【図９】非一様データ・セグメントを格納する方法を示す流れ図である。
【図１０】非一様データ・セグメントを取り出す方法を示す流れ図である。
【発明を実施するための形態】
【００３６】
以下は、添付の図面に示された新規な実施形態の詳細な説明である。実施形態は、内容を明確に伝える程度に詳細である。しかし、示された詳細の程度は、説明された実施形態の予想される変形体を限定する意図でない。それどころか、特許請求の範囲および詳細な説明は、添付の特許請求の範囲で定義されるような本教示の範囲内に含まれる全ての修正物、同等物、および代替物をカバーすることになっている。以下の詳細な説明は、そのような実施形態を当業者に理解できるようにするように計画されている。特定の実施形態は、アダプタ、構成要素、回路または論理構成に関連して以下で説明されるが、本開示の実施形態が他の構成要素および構成を用いて有利に実現されることがあると、当業者は実感するだろう。
【００３７】
計算プラットフォームの仮想化に対する要求は最近高まっている。これが起こっているのは、インターネット・プロセスをサポートするデータセンタを経営するビジネスおよび他のビジネスにサービスするデータ・サービス・ビジネスなどのビジネスが、新しいクライアントおよび新しいアプリケーションの処理要求に遅れないでついていくことができないからである。サーバの仮想化は、新しい計算プラットフォームの追加または、いくつかの場合には、サーバの追加よりも遥かに効率的である。理解できることであるが、一般的には、データセンタは、サーバ数、床面積、消費される電気、および揚床面積の１平方フィート（９２９平方センチメートル）当たりの発生熱の点で、手を伸ばしすぎている。
【００３８】
計算プラットフォームの仮想化は、計算プラットフォームの利用効率を高めかつそのようなプラットフォームの動作コストを下げることによって、サーバ数を減少させることができる。仮想化は、また、処理資源に対する抗し難い需要の問題に対する優れた解決策である。仮想化技術は、ハイパーバイザ、ハードウェア区分化、論理区分化、さらに、本明細書の構成に従って、仮想化メモリ管理の機能を含むことができる。
【００３９】
一般に、仮想化は、計算プラットフォームの物理資源の共用を可能にする。仮想化は、ハードウェア、ファームウェア、およびソフトウェア構成の組合せによって実現されることがある多面的なプロセスである。仮想化の最も単純な形では、ハイパーバイザまたは仮想化エンジンは、ファームウェア・モジュールで構成された階層化アーキテクチャである。仮想化装置は、物理ハードウェア資源の一番上に「座り」、ハードウェアを制御してハードウェアの管理および資源管理を行うことができる。したがって、仮想化は、資源のプールへのＯＳアクセスの区分化のような多くの機能を制御することができる。そのような大規模な仮想化のために、ハイパーバイザは、複雑になり、重い作業負荷を担っている。ハイパーバイザの作業負荷を分散させることは、望ましい特徴である。
【００４０】
複数のＯＳが１つの計算プラットフォーム上で動作しているとき、ホストＯＳと、複数のゲストＯＳがあることがある。各ＯＳは、ハイパーバイザとの資源の共用を調整することができるカーネルまたはカーネル拡張機能を持つことができる。各ゲストＯＳのカーネルおよびそれのドライバは、一般的に、他のＯＳで動作するように修正される必要がある。例えば、仮想化ウィンドウズＸＰ（Ｒ）オペレーティング・システムと仮想化ＭａｘＯＳＸ（Ｒ）オペレーティング・システムの両方を動かすデスクトップは、典型的に、オペレーティング・システム・インスタンスごとに１つのカーネル拡張機能を持ち、そのカーネルは、特定のアプリケーションおよびハードウェア用に構成されなければならない。その上、典型的なカーネル拡張機能は、各ＯＳからメモリを取得する。各仮想化ＯＳのニーズが変わるときに、ＯＳのメモリ・プールからのカーネル・メモリ割付けが、割り付けられ、また再割り付けされることがある。
【００４１】
以下の多くの実施形態は、ページング、ページ・スペース、ブロックなどを述べるが、開示された実施形態は、ページによって定められる論理ボリュームのような任意の特定のサイズに限定されない。本明細書で使用されるようなページおよびページ・スペースという用語は、データを分割して入れることができるデータの任意の固定サイズの論理サイズまたは論理ボリュームを意味する意図である。したがって、ページという用語は、本明細書では、ブロックと同義に使用される。
【００４２】
したがって、開示されたプラットフォーム／システムはページおよびブロックでトランザクションを行うことができ、データのページまたはブロックがハードウェア・デバイス間を移動することができる。例えば、ブロック・メモリ・トランザクションは、仮想メモリと処理ノードの間でデータのブロックを移動させることができる。本明細書で利用されるようなページまたはブロックは、一般に、あるサイズのメモリ・アドレスの連続ブロックであり、システムは、そのようなサイズでメモリのブロックまたはページを管理する。本明細書で開示されたページまたはブロックは、一般に、ＯＳが利用することができる変換またはトランザクションの最小セグメント、ユニットまたはサイズである。したがって、本明細書で利用されるようなページまたはブロックは、開示されたシステムのハードウェアおよびソフトウェアが、情報ストレージまたは取出し要求に応答して、効率的に移動させ処理することができるデータの標準化セグメントまたはサイズである。
【００４３】
仮想化メモリは、データのブロックを格納し、また取り出すことができる。以下の説明では、処理される最小メモリ・セグメントとして、ブロックに言及する。しかし、開示された構成は、ページなどの任意の基準値で動作するかもしれず、そのような用語は、同義に扱われるべきである。計算プラットフォームによって管理されるメモリ・セグメントの正確なサイズは、一般的には、システムと、ハードウェアが実効アドレスから物理アドレスに変換することができる粒度とによって決定される。例えば、ページ・スペーシングは、ページまたはブロックとして格納されたサイズ（格納されたビット数またはバイト数）を変えることができるので、データの論理ボリューム、ブロックまたはページは、正確なサイズの点から定義することができない。
【００４４】
例えば、論理ボリューム・ページ・スペーシングは、ページのサイズを変えることができる。論理ボリューム・ページング・スペースは、新しいページング・スペース論理ボリュームを作ることによって、または既存のページング・スペース論理ボリュームのサイズを増すことによって定義される。論理ボリューム管理は、大容量記憶デバイスにスペースを割り付ける方法であり、この方法は、従来の区分化方式よりも柔軟性がある。特に、論理ボリューム・マネージャは、区分を互いに連結し、ストライプ化し、または、別な方法で組み合わせて、ことによると使用中にサイズ変更または移動されることがあるより大きな仮想ストレージ・ブロックにすることができる。論理ボリューム管理は、ストレージ仮想化の多くの形の１つである。ストレージ仮想化は、ＯＳディスク・ドライバ・スタック中の１つの層として実現されることがある。本明細書の説明は、しばしば、データのブロックまたはページでのデータ・トランザクションに言及する。そのような論理ボリュームは、開示された実施形態によって任意のサイズのデータが処理されるのと同義であると考えるべきである。したがって、ここで開示されたどんなページング・デバイスでもブロックまたはページを処理するかもしれない。
【００４５】
本明細書では、データのブロックに対してデータ操作を行うための構成が開示される。いくつかの実施形態は、仮想実メモリ・データのためのデータの操作と、処理ノードがグリッド環境内の共用仮想メモリ領域にアクセスすることができるように複数のノードへの直接メモリ・アクセスを可能にする技術とを含む。グリッド内の各ノードは、データ・グリッドまたは計算グリッドを形成する論理区分であることがある。グリッド内の全てのノードが、同じページング・デバイスにアクセスするかもしれないし、または全てのノードが、異なるデバイスにアクセスするかもしれないが、補助デバイスが、ノード間のデータ転送のために少なくとも１つの共通ページング・デバイスを提供するかもしれない。
【００４６】
開示された実施形態は、仮想入力出力サーバ（ＶＩＯＳ）を利用する。ＶＩＯＳは、論理区分（ＬＰＡＲ）間での物理資源の共用を可能にする。ＬＰＡＲは、一般に、コンピュータのハードウェア資源の部分集合であり、この部分集合は仮想化され、ＬＰＡＲは別個の計算デバイスとして動作することができる。事実上、物理機械が複数のＬＰＡＲに分割されることがあり、各々が別個のオペレーティング・システムを収容する。ＶＩＯＳは、区分ハードウェア・アダプタとして動作することができ、さらに、インターネット小型コンピュータ・システム・インタフェース（ｉＳＣＳＩ）・アダプタ、コンパチブル・ディスク、ファイバチャネル・ディスク、イーサネット（Ｒ）・ドライブ、コンパクト・ディスク（ＣＤ）、ディジタル・ビデオ・ディスク（ＤＶＤ）、および光ドライブまたはデバイスのような端末デバイスまたは論理デバイスにサービスすることができる。いくつかの実施形態は、本明細書で、ブロックＩ／Ｏデバイス、特にブロック記憶デバイスを動作させるようにＶＩＯＳを利用することを開示する。
【００４７】
図１を参照すると、仮想実メモリ（ＶＲＭ）１２０を有する計算システムまたはプラットフォーム１００を示す図が開示されている。プラットフォーム１００は、仮想クライアント１０２のような複数の仮想クライアントを含むことができる。仮想クライアント１０２は、論理区分（ＬＰＡＲ）で動いているオペレーティング・システム（ＯＳ）１０５を持っていることがある。区分仮想クライアント１０２は、ＬＰＡＲノード（１２１）または処理ノードと呼ばれることがある。分散処理アプリケーションでは、複数のノードが、プロセスを効率的に処理するように作業負荷を共用することができる。
【００４８】
仮想クライアント１０２は、メモリ１０４および仮想実メモリ・インタフェース１０６（ＶＲＭ）を含むことができる。仮想クライアント１０２は、アプリケーション１３９によって定義されるタスクを処理することができる。アプリケーション１３９は、ＶＲＭ１２０中に存在することがあり、処理のために仮想クライアント１０２に供給されることがある。より詳細には、アプリケーション１３９は、部分的にまたは全部メモリ１０４にロードされることがある。仮想クライアント１０２は、複数のアプリケーションを動かすことができるＯＳとして説明されることがある。仮想クライアント１０２は、Ｉ／Ｏデバイス１３５を介してユーザに入力および出力（Ｉ／Ｏ）を提供することができる。Ｉ／Ｏデバイス１３５は、いくつかを挙げると、キーボード、位置決めデバイスおよび表示装置を含むかもしれない。
【００４９】
一般に、ＶＩＯＳ１０７および１１１は、仮想クライアント１０２および１１３のようなＬＰＡＲベースのエンティティが、ＶＲＭ１２０およびブロック記憶デバイス１４２のような端末デバイスにアクセスすることができるようにする。ＶＩＯＳ１０７および１１１は、また、仮想化ハードウェア資源が論理デバイスを共用することができるようにする。ＶＩＯＳの資源またはＶＩＯＳ資源を制御するＬＰＡＲ資源は、ＶＩＯサーバ（ＶＩＯＳ）と呼ばれることがあり、また仮想クライアント１０２および１１３を持っているＬＰＡＲ１２１のような、ＶＩＯＳサービスを利用する他のＬＰＡＲは、ＶＩＯクライアントと呼ばれることがある。
【００５０】
ハイパーバイザ１０８はクライアント１０２に常駐していることがあり、またハイパーバイザ１０８はクライアント１１１に常駐していることがある。ハイパーバイザ１０８および１２９は、アプリケーション１３９によって与えられる最小限のメモリ指令または命令で、ＯＳ１０５および１１１のために、ページなどのメモリのブロックを格納することを容易にすることができる。各仮想クライアントは、ＶＩＯＳ通信チャネルのために、ハイパーバイザ１０８および１２９のようなハイパーバイザを持つことができる。したがって、ハイパーバイザ１０８は、一般に、システム・ハードウェアを制御しかつＯＳ１０５およびアプリケーション１３９から特定のタスクを取り除くように特化された「低レベル」・ソフトウェアである。ハイパーバイザ１０８および１２９は、ＶＲＭ１２０に格納されたファームウェア・コードであることがあるが、ハイパーバイザは、通信チャネルを生成し制御するので、通信チャネルの一部分として描かれる。
【００５１】
アプリケーション１３９は、メモリ動作をハイパーバイザ１０８に委託して、ハイパーバイザ１０８およびＶＲＭ１２０がメモリ動作を処理する間にアプリケーション１３９が処理を継続できるようにすることができる。ハイパーバイザ１０８は、また、実ストレージまたは局所メモリと外部ページ・ストレージの間の命令、データまたはその両方の転送であるページングを行うことができ、この転送は、一般的に、データがオペレーティング・システムまたはプロセッサによって要求されるときに大容量記憶デバイスによって容易にされる。したがって、ファームウェア１５０によって作動される集中型仮想メモリ１２０は、効率を高め、コストを低減し、さらに資源利用を最大限にすることができる。
【００５２】
いくつかの実施形態では、ＶＩＯＳ１０７は、ＶＲＭ１０６をページのような論理ボリュームに区分することができる。いくつかの実施形態では、複数のＶＩＯＳ区分は、記憶域ネットワーク（ＳＡＮ）１５４管理者によって、ブロック記憶デバイス１４２中の、ディスク・ストレージのような１つまたは複数の論理ユニットへのアクセスを認可されることがある。ＶＩＯＳ１０７は、ＰＳＰＮ１２３と協調して、共用論理ユニット番号（ＬＵＮ）を、特定のクライアントまたはＯＳ１０２にサービスするページング・デバイスに割り当てることができる。ＬＵＮは、アドレス指定目的のために利用されることがある。ページング・スペース・マネージャ１２３は、仮想メモリ・マネージャ１２２と対話して、そのようなページング・スペースを生成し、また、そのようなページング・スペースにアクセスすることができる。
【００５３】
全ての端末デバイス（１４２、１２０、その他）用の排他的物理Ｉ／Ｏアダプタまたはインタフェースを持つ各ＬＰＡＲまたはクライアント１０２、１１３の代わりに、ＶＩＯＳ１０７、１１１が、クライアント１０２および１１３（任意のずっと多くのもの）のような複数のクライアントのためにアダプタとして動作することができるので、ＶＩＯＳ１０７、１１１は、プラットフォーム効率を高めることができる。いくつかの実施形態では、ＶＩＯＳ１０７、１１１は、特化されないことがあり、または特定機能向けでないことがあるので、それらのＶＩＯＳが行うことができるインタフェース機能に限定されない。というのは、ＶＩＯＳは、複数のＩ／Ｏインタフェース機能を行い機能特定アダプタの必要性に取って代わるように構成することができるからである。Ｉ／Ｏインタフェースでのオールインワン特徴は、最終顧客に巨大な節約をもたらすことができる。
【００５４】
一実施形態では、ＶＩＯＳ１０７は、小型コンピュータ・システム・インタフェース（ＳＣＳＩ）・アダプタおよびＳＣＳＩディスク特徴（ＳＣＳＩ標準は、コンピュータと周辺デバイスの間でデータを転送するための指令およびプロトコルを定義する）として動作することができる。クライアント１０２と１１３の両方が、起動中にＳＣＳＩ特徴を利用して立ち上がることができる。その上、動作中に、同じＶＩＯＳ１０７が、ＶＲＭ１２０へのアクセスと、ブロック記憶デバイスおよび他の周辺装置へのアクセスとをクライアント１０２および１１３に提供することができる。多機能多ユーザＶＩＯＳ１０７は、非常に多くのアダプタ、アダプタ・スロット、コネクタ、ドライバ、インタフェース、ディスクなどをなくすことができるので、このＶＩＯＳ１０７は、コストをかなり低減することができる。
【００５５】
ＶＩＯＳセットアップ、転送およびＩ／Ｏ冗長の実施形態
いくつかの実施形態では、主ＶＩＯＳ１０７、バックアップＶＩＯＳ１１１および、ＰＳＰＭ１２３、ＶＲＭ１２０のようなページング・デバイスのようなエンティティは、ＯＳ１０５などのＯＳに割り当てられることがある。ページング・デバイスという用語は、ページおよびブロックのようなデータの論理ボリュームでトランザクションを行う任意のエンティティを含む。例えば、ページング・デバイスは、ＰＳＰＭシステム１２３中のスタック１１９であるかもしれないし、または仮想メモリ（ＶＲＭ１２０）のようなブロックＩ／Ｏデバイスまたはブロック記憶デバイス１４２として構成されたディスク・ドライブであるかもしれない。したがって、論理ボリュームまたはブロック・インクリメントでトランザクションを行うどんなハードウェアまたはソフトウェアでも、識別されたページング・デバイスであるかもしれない。
【００５６】
ＯＳに対する割当ては、立上げプロセス中に行われることがあり、割当ては動的であることがあり、または動作中に変化することがある。例えば、ＶＩＯＳ１０７および他のページング・デバイスまたはページング・エンティティは、ＯＳ１０５によって有用であると識別されることがあり、有用な割当ては、Ｉ／Ｏデバイス１３５の一部分としての表示装置によって、ユーザに表示されるかもしれない。いくつかの実施形態では、ＯＳ割当ての可能なＶＩＯＳページング・デバイスは、ユーザに表示され、ユーザ入力を介してユーザによって選ばれることがあり、さらに、いくつかの実施形態では、そのような割当ては、ことによるとハイパーバイザ１０８によって、自動選択プロセスで行われることがある。可能な割当て、ユーザ選択可能割当ておよび自動割当ては、プラットフォーム１００の物理接続、近接要素、能力、構成、作業負荷などに基づいていることがある。
【００５７】
したがって、割当てが行われた後で、ＯＳのために、または各ページング・デバイスのために、デバイス・インタフェース定義が生成されることがある。デバイス・インタフェース定義は、ＯＳ、主ＶＩＯＳ、バックアップＶＩＯＳ、主ページング・デバイス／エンティティ、バックアップ・ページング・デバイス／エンティティ、ＶＲＭ１２０中の論理メモリ割当てなどを含むことがある。デバイス・インタフェース定義は、好ましい通信チャネル、転送命令、および、輻輳または故障が起こったとき実現されることがある好ましいバックアップ・チャネルを定義することがある。万一の故障の場合に第１のバックアップが活動化され、第１のバックアップが利用できないか故障を起こしていれば、ハイパーバイザ１０８が第２のバックアップを試みるなどのように、バックアップＶＩＯＳまたはバックアップ・ページング・デバイスは順序または格付けを与えられることがある。
【００５８】
デバイス・インタフェース定義は、好ましい通信チャネルおよび、輻輳または故障が起こったとき実現されることがある好ましいバックアップ・チャネルを定義することがある。デバイス・インタフェース定義は、論理ユニット番号（ＬＵＮ）、論理アドレス、媒体アクセス制御アドレス、ハンドル、インタフェース定義、共用論理ユニット番号、ラベル、デバイス情報の状態などを含むことがある。この情報は、ＶＩＯＳなどの１つまたは複数の位置に格納されることがある。この情報は、１つまたは複数のＯＳ、ファームウェアまたはハイパーバイザ１０８、ＶＩＯＳ１０７、１１１、ＰＳＰＭ１２３、仮想メモリ、ページング・デバイス、ブロックＩ／Ｏデバイス、ブロック記憶デバイスなどによって利用されて、通信を経路設定し、また再経路設定することがある。
【００５９】
ページング・デバイスは、ＰＳＰＭ１２３中のスタック１１９であるかもしれないし、または、ＶＲＭ１２０のようなブロックＩ／Ｏデバイスか、ブロック記憶デバイス１４２中にブロック記憶デバイスとして構成されたディスク・ドライブかであるかもしれない。したがって、ブロック・インクリメントでトランザクションを行う任意のハードウェアまたはソフトウェアが、識別されたページング・デバイスであるかもしれない。プラットフォーム１００またはＶＲＭ１２０によって利用されるブロック・サイズまたは論理ボリュームは、ページ・サイズを定義する「属性型」に基づいて定義されることがある。この論理ボリューム・ブロック・サイズは、ページング・スペースまたはスワップ・スペースを定義するために利用される。
【００６０】
通信チャネルを制御するために、ハイパーバイザ１０８は、ＯＳ動作およびユーザ入力に基づいて、指令をＶＩＯＳ１０７および１１１にプログラムで送ることができる。デバイス・インタフェース定義の割当てを制御するために、ＯＳ１０７のカーネルは、拡張可能マーク付け言語（ＸＭＬ）コンパチブル・データ・ストリームで指令をＰＳＰＭ１２３に与えることができる。ＰＳＰＭ１２３は、デバイス・インタフェース定義に基づいて、ＸＭＬベースの指令を、ＶＩＯＳ対のうちの第２のＶＩＯＳ１１１の第２のＰＳＰＭに送ることがある。ＸＭＬデータ・ストリーム中の制御信号は、データのブロックを移動させるためにＰＳＰＭ１２３が利用することができるハンドル、ラベルまたはアドレスを持っていることがある。ラベルは、様々なＯＳにサービスすることができるページング・デバイスを管理者に表示するために利用されることがある。ＸＭＬストリーム中のデバイス・インタフェース定義は、ＰＳＰＭ１２３には見えないことがある。
【００６１】
ＶＩＯＳ１０７および１１１が、主ＶＩＯＳおよびバックアップＶＩＯＳとして対にされたとき、「デバイスの状態」、ハンドル、およびデバイス・インタフェース定義の他のデバイス情報は、ＶＩＯＳ対１０７、１１１によって格納されることがあり、ＰＳＰＭ１２３が利用できることがある。動作中に、ハンドルはハイパーバイザ１０８に送られることがあり、ハイパーバイザ１０８は、ハンドルを使用して、読出し／書込み要求をページング・デバイスとやりとりすることができる。ハイパーバイザ１０８は、書込みまたは読出し指令を送るだけであることがあり、ハイパーバイザ１０８は、デバイスに固有の情報を検出する必要がないことがある。ＶＩＯＳ１０７への読出し、または書込み要求が故障を起こした場合には、ハイパーバイザ１０８は、デバイス・インタフェース定義中のバックアップ情報を使用して、同じ要求を対のうちの第２のＶＩＯＳ１１１に送って、冗長性および頑強性を実現することができる。したがって、ＶＩＯＳは、プラットフォームの性能に大きな影響を及ぼすことなしに、保守のために取り外すことができる。
【００６２】
ハイパーバイザ１０８は、デバイス・インタフェース定義によって、ＰＳＰＭ１２３、スタック１１９、ＶＲＭＩインタフェース１０６、ＶＩＯＳ１０７、１１１、補助メモリ・ストレージ、ディスク・ストレージ、永久ストレージ、またはブロック記憶デバイス１４２のようなページング・デバイスのページング特徴に冗長アクセスすることができる。ページング・デバイスへの冗長アクセスおよびエンティティへの冗長アクセスは、一般に、追加の安定性および頑強性をＶＲＭ１０６の構成に与えることができる。転送がデバイス・インタフェース定義に含まれる場合、主ＶＩＯＳは、通信を他のＶＩＯＳに送ることができ、冗長動作が起こることがある。
【００６３】
ＶＲＭ１２０、ページング・デバイス、およびクライアント１０２および１１３は、ブロック記憶デバイス１４２とトランザクションを行うこと（ブロック記憶デバイス１４２にデータを格納し、ブロック記憶デバイス１４２からデータを取り出すこと）ができる。ブロック記憶デバイス１４２は、ページング・デバイス、ハードウェア・デバイス、大容量記憶デバイスなどであることがある。ブロック記憶デバイス１４２は、一般的には、メモリ・モジュール１２４およびそれのページを実現することができるランダム・アクセス・メモリ（ＲＡＭ）に比べて低性能の読出し−書込み時間または長いアクセス時間を持つハード・ディスクまたは任意の形の大容量記憶ユニットを含むかもしれない。ブロック記憶デバイス１４２の一部分としてのブロック記憶デバイスは、存続する機械読取り可能なやり方で大量の情報を格納することができる任意の大容量記憶ユニットまたは大容量記憶デバイスを含むことがある。ブロック記憶デバイス１４２は、１つまたは複数のハード・ディスク、フロッピー（Ｒ）・ディスク、フラッシュ・メモリ、光ディスク、磁気光学的ディスク、磁気テープ・ドラム、またはホリスティック・メモリであるかもしれない。そのようなブロック記憶デバイス１４２は、取外し可能および非取外し可能媒体を持つかもしれない。
【００６４】
上では、１つの仮想クライアント１０２のいくつかの構成要素が一般的に説明された。プラットフォーム１００は、仮想クライアント１１３（ＶＣ２）のような遥かに多くの仮想クライアントをサポートするかもしれない。大きなプラットフォームが複数の仮想クライアントをサポートすることは珍しいことではない。同様に、たった１つのＯＳ１０５、アプリケーション１３９、およびＬＰＡＲノード１２１に言及したが、それでもＯＳは動作するかもしれないし、プラットフォームは多くのそのようなエンティティを相互接続するかもしれない。たった１つまたは２つのエンティティだけが図に示され、１つまたは２つのエンティティの機能だけが一般的に本明細書で説明されるが、プラットフォームは任意の数のエンティティを持つことができる。仮想クライアント１０２および仮想クライアント１１３などの同様なエンティティは、類似の動作、同一の動作、または異なる動作をすることができるが、説明を単純化するために、本明細書ではたった１つのエンティティだけが一般的に説明される。したがって、例えば、クライアント１０２およびＯＳ１０５の説明された機能および動作は、ＯＳ、ＬＰＡＲノード、仮想クライアント１１３に当てはまることがあり、またしばしば当てはまる。
【００６５】
いくつかのプラットフォームは、ＶＲＭ１２０を持たないことがある。開示された構成をレガシー対応にするために、ＯＳ１０５などのＯＳは、ＶＲＭ１２０の存在を検出することができる。ＯＳ１０５がＶＲＭ１２０を検出した場合、ＯＳは、開示された特徴を利用するように動作モードを変えることができる。ＶＲＭ１２０が検出されないとき、ＯＳは、レガシー・システムに従って動作することができる。
【００６６】
動作中に、仮想クライアント１０２または真正クライアント１０２が、ＶＲＭ１２０を「個人用」ランダム・アクセス・メモリ（ＲＡＭ）として利用することができる。ＶＲＭ１２０は、メモリの論理量を各ＯＳに割り付けることができる。ＶＲＭ１２０は、ファームウェア（Ｆ／Ｗ）またはハイパーバイザ（ＰＨＹＰ）１０８の援助で仮想メモリを管理することができる。一般に、ＶＲＭ１２０が物理メモリを必要とするとき、仮想メモリ・マネージャ（ＶＭＭ）１２２は、メモリのブロックをブロック記憶デバイス１４２に送ることができる。このプロセスは、ページングと呼ばれることがある。
【００６７】
いくつかの実施形態では、ファームウェア１５０は、主ＶＩＯＳ１０７と対話する仕事を割り当てられることがあり、ハイパーバイザ１０８が、主ＶＩＯＳ１０７との通信の途絶などのエラーを検出した場合には、ファームウェア１５０は、同じ指令および入力−出力（Ｉ／Ｏ）を補助ＶＩＯＳ１１１に送ることができる。そのような解決策は、ＶＩＯＳ１０７、１１１のようなＶＩＯＳかＶＩＯＳを制御するソフトウェアに冗長性を与えることができ、さらに、複雑なファームウェア・コードを必要としないでまたは持たないで利用するように冗長ハードウェアをページング・デバイスに与えることができる。この冗長性は、クライアント１０２または複数のクライアントあるいはその両方に対するサービスを中断することなしに、ＶＩＯＳ１０７、１１１のハードウェア停止およびソフトウェア保守を可能にする。この解決策は、また、ハイパーバイザ１５０の複雑さを最小限にして、プラットフォーム頑強性および安定性を保証する。
【００６８】
ＶＲＭ１２０動作実施形態
いくつかの実施形態では、ＶＲＭ１２０は、ページング・デバイスまたは、ブロックでトランザクションを行うメモリとして考えることができる。ＶＲＭ１２０は、ブロックまたはページから論理位置までを、プラットフォーム１００で利用可能な全てまたはほとんど全ての物理アドレスを追跡するテーブルにマップすることができる。このマッピング・プロセスによって、データは、論理アドレス・スペースとして割り付けられるよりも少ない物理メモリまたは局所メモリを占めることができるようになる。メモリ・モジュール１２６、ＶＲＭスタック１１７などのＶＲＭ１２０の構成要素は、論理的にページに分割された２進ストレージを持つことができる。
【００６９】
ＶＲＭ１２０は、未使用のブロックまたはページ（ページアウト）、あるいは使用頻度の低いページ、ブロック、またはデータの論理サイズを、ブロック記憶デバイス１４２のスワップ域に送って、高性能メモリのニーズに備えてスペースを作ることができ、さらに、これらのページは、必要とされるときメモリ・モジュール１２４のＲＡＭの中へ「ページング」されて戻されることがある。そのようなスワッピング・プロセスによって、ＯＳ１０５で動作するプログラムまたはアプリケーションに、メモリ・モジュールで実際に利用可能であるよりも多いメモリを「割り付ける」ことができるようになり、したがって、ＶＲＭ１２０は仮想メモリとして機能することができる。
【００７０】
仮想メモリ・マネージャ１２２は、ページ、ブロック、フレーム、論理ボリュームなどに索引を付け、論理アドレスと物理メモリ位置の間の変換テーブルを形成することができる。ＶＲＭ１２０は、論理ボリューム／サイズ、ブロック、ページなどでトランザクションを行うことができ、また、メモリのページまたはブロックのような論理サイズまたはボリュームを利用して動作するメモリであることがある。仮想化メモリ・システムＶＲＭ１２０は、実効アドレスまたは仮想アドレスを実アドレスに変換するために利用されることがある１つまたは複数のページ・テーブルを持つことができる。ＯＳ１０５またはハイパーバイザ１０８は、ＯＳ１０５がどのようにしてメモリ資源を割り付けたかを反映するようにテーブルを管理することができる。テーブルは、どの物理位置が「使用中」であるかを追跡するための追跡機能を含むことができる。そのような追跡は、カーネル、アプリケーション、ＯＳなどによって使用されているメモリ位置の追跡、およびどの物理位置がピン止めされ、使用中であり、遊びであり、オープン・ファイルを格納しているかなどの追跡を含むことができる。
【００７１】
ＯＳに割り付けられた仮想メモリ・ブロックまたはページがハイパーバイザ１０８またはＯＳ１０２、１１３によって必要とされたとき、仮想メモリ・マネージャ１２２は、メモリのブロック（すなわち、論理ボリューム）をメモリ・モジュール１２４から出してブロック記憶デバイス１４２に物理的に移動させることができる。いくつかの実施形態では、ＯＳに割り付けられたメモリのページをメモリ・モジュール１２４から出してブロック記憶デバイス１４２に物理的に移動させることは、ＯＳに割り付けられたメモリの論理ボリュームまたはサイズを変えない。論理ボリュームまたはページは、必要とされるとき、ブロック記憶デバイス１４２に物理的に移動されて、他のＯＳ、ハイパーバイザ、カーネル拡張機能などによるニーズに備えて、メモリ・モジュール１２４中の物理メモリにスペースを作ることができる。メモリ・モジュール１２４ＲＡＭの中のＯＳハイパーバイザなどに割り付けられた、ブロック記憶デバイスに移動されたそのような論理ボリュームの物理メモリは、これらの他のエンティティに「貸し付け」られることがある。いくつかの実施形態では、ハイパーバイザ１０８は、物理アドレス・マッピングのための論理を生成し制御し、さらにページングまたは、いくつかの場合には、ページ・スワッピングを行うことができる。
【００７２】
本開示に従って、ＶＲＭ１２０は、ＯＳ１０５および１１３、ハイパーバイザ１０８からおよびページング・スペース区分モジュール（ＰＳＰＭ）１２３からの制御指令に基づいて、データのブロックを受け取り、格納し、取り出し、さらに伝送することによって、プラットフォーム１００中のエンティティとトランザクションを行うことができる。（一般に、ＰＳＰＭ１２３は、物理入力−出力デバイスと仮想入力−出力デバイスの間のブリッジングを可能にするブロック・コンパチブル・デバイスまたはページング・デバイスであることがある。）
【００７３】
理解できることであるが、ＶＲＭ１２０に常駐するいくつかの論理ボリュームまたはページは、めったにアクセスされないことがある。メモリ・モジュール１２４中の自由なランダム・アクセス・メモリ（ＲＡＭ）の量が少ないとき、最近利用されていない論理ボリューム、ページ、全プログラムまたはデータは、メモリ・モジュール１２４からブロック記憶デバイス１４２中のページング・スペースに移動されて、現在または他のより重要なアクティビティのために高性能ＲＡＭを完全に自由にすることがある。
【００７４】
ＶＲＭ１２０は、高速で効率的な高性能メモリをクライアント１０２および１１３に提供することができる。ＶＲＭ１２０は、また、ページ（ＲＡＭ）・メモリ・モジュール（ＭＭ）１２４の物理メモリ容量が残り少なくなったとき、ブロック記憶デバイス１４２にメモリのブロックを送るプロセスである「メモリのページング」を行うことができる。ＶＲＭ１２０を制御する制御指令は、ファームウェア１０８で生成されることがある。
【００７５】
したがって、一般に、クライアント１０２および１１３で表されるクライアントは、ファームウェアまたはハイパーバイザ１０８を利用して、ＶＩＯＳ１０７を制御するプラットフォーム１００の他のエンティティとトランザクションを行うことができる。ＶＲＭ１２０は、データのブロックでトランザクション（受け取り、格納し、取り出し、さらに伝送する）を行う方を好むが、クライアント１０２および１１３はデータのブロックでトランザクションを行うことがあり、または行わないことがある。いくつかの実施形態では、クライアント１０２は、ブロック記憶デバイス１４２で代表される他のメモリまたは記憶デバイスとトランザクションを行うことができる。ブロック記憶デバイスは、物理デバイス、物理ボリューム（ＰＶ）、ハード・ディスク、コンパクト・ディスク、読出し専用メモリ・ドライブまたはメモリ領域、ハード・ディスク区分、安価なドライブの冗長アレイ（ＲＡＩＤ）、記憶域ネットワーク（ＳＡＮ）１５４などであることがある。
【００７６】
データおよび情報という用語は、本明細書では同義で交換可能に使用される。データおよび情報は、これらの用語が本明細書で利用されるときに、命令、指令、アプリケーション・データ、アプリケーション・コンテキスト・データ、生データ、処理済みデータなどを含み、ワード・データは、本明細書で利用されるときに、任意の２進列を含む。ページング・デバイス、ブロック記憶デバイス１４２などのブロックＩ／Ｏデバイスのブロック・デバイスは、プラットフォーム１００がページまたはブロックなどの離散的サイズのデータを移動させるために利用する任意のデバイスを含むことができる。ブロック・デバイスがノードまたは論理ユニットとして動作するとき、ブロック・デバイスは、アドレス、物理アドレス、論理アドレスまたは論理ユニット番号を割り当てられることがある。ブロックＩ／Ｏデバイスは、しばしば、ランダム・アクセスおよび探索をサポートし、一般にブロック・バッファ付き入力および出力を使用することができる。
【００７７】
通信経路で、ＯＳ１０５、ページャ１１２、スタック１１７配置モジュールなどは、単一ブロックのデータを保持するために、ブロック・サイズのデータ・バッファを持っていることがある。実際、通信エンティティの各入力および出力は、ブロック・サイズのデータ・バッファを利用して、ブロックでのトランザクションを容易にすることができる。例えば、アプリケーション１３９およびＯＳ１０５が、ブロック記憶デバイス１４２からデータを読み出す要求またはブロック記憶デバイス１４２にデータを書き込む要求を送るとき、データ保管チェーン中の構成要素は、伝送のビットをブロック・サイズのバッファ中に格納することができる。バッファがいっぱいになったとき、ブロック・データ転送が行われて、次に入ってくるデータのブロックのためにバッファをクリアすることがある。ページは、しばしば、ブロックと呼ばれ、また逆にブロックがページと呼ばれ、そのような用語は本明細書で同義に使用される。
【００７８】
ページ・スペーシング区分モジュールの実施形態
いくつかの実施形態では、ブロックのようなデータの論理ボリュームは、主ＶＩＯＳ１０７と、ハイパーバイザ１０８によって容易にされた通信チャネルとを介して、クライアント１０２、１１３とＶＲＭ１２０の間の経路を流れることができる。ＶＩＯＳ１０７は、破線のボックスの中に含まれるようにページング・スペース区分モジュール（ＰＳＰＭ）１２３（上で説明された）を含むことができる。
【００７９】
そのようなブリッジング機能を達成するために、ＰＳＰＭ１２３は、仮想非同期サービス・インタフェース（ＶＡＳＩ）１１０、ページャ１１２またはページ・ドライバ、仮想ブロック記憶デバイス・インタフェース（ＶＢＳＤ）１１４、スタック１１９、ことによるとハイパーバイザ（中に示されていない）および仮想ページング・デバイス・ドライバ（ＶＰＤＤ）１１７を含むことができる。ＰＳＰＭ１２３は、また、論理ユニット割当てモジュール（ＬＵＡ）１３７、ｉＳＣＳＩモジュール１４１（一般に、ＳＣＳＩアダプタ１４１は、コンピュータと周辺デバイスの間でデータ転送を行うための十分に開発された標準の指令およびプロトコルに準拠することができる）、およびネイティブ・ストレージ・モジュール１１５を含むことができる。ＰＳＰＭ１２３は、ノードまたはクライアント１０２のようなクライアントから、ＶＲＭ１２０またはブロック記憶デバイス１４２あるいはその両方のようなブロックＩ／Ｏデバイス（ことによると仮想デバイス）へのデータ・ブロックの転送を容易にすることができる。
【００８０】
ページャ１１２は、ブロック・サイズのバッファとして動作して、入力および出力データをブロックまたはページの中に入れることによってデータ転送のためのページング・スペースを保証することができる。言い換えると、ページャ１１２は、直列データがブロック・インクリメントで移動されるようにそのデータをバッファリングすることによって、データのブロックを生成することができる。ページャ１１２は、データを直列に受け付けるバッファ・ページを持つことができ、バッファ・ページがいっぱいであるとき、ページャ１１２は、情報のページをＶＢＳＤ１１４またはＶＡＳＩ１１０にダンプするか転送することができる。ページャ１１２は、ＶＡＳＩ１１０からページインおよびページアウトまたはブロックイン、ブロックアウト要求を受け取ることができる。この要求に応答して、ページャ１１２は、ＶＢＳＤ１１４からページを受け取り、またはＶＢＳＤ１１４にページを送ることができる。同様に、ＶＡＳＩ１１０からの要求に応答して、ページャ１１２は、ＶＡＳＩ１１０からページを受け取り、またはＶＡＳＩ１１０にページを送ることができる。
【００８１】
いくつかの実施形態では、ＰＳＰＭ１２３の機能は、ＶＩＯＳ１０７とＶＩＯＳ１１１の間で共用されることがある。そのような構成は、冗長性を実現することができる。例えば、故障が起きた場合には、ＰＳＰＭ１２３は、ＶＩＯＳ１１１に仮想Ｉ／Ｏサービスを提供するだろう。ネイティブ・ストレージ・モジュール１１５は、ＶＩＯＳ１０７専用の情報を格納するために利用されることがある。
【００８２】
多機能ＶＢＳＤインタフェースの実施形態
従来のＯＳは、ブロックＩ／Ｏデバイスに送られてブロック入力／出力（Ｉ／Ｏ）デバイスの動作を制御し、またはブロック入力／出力（Ｉ／Ｏ）デバイスを管理するカーネル拡張機能（コードを制御する）を持っている。そのようなブロックＩ／Ｏデバイスは、ＶＩＯＳ１０７、ＶＩＯＳ１１１、ブロック記憶デバイス１４２、ＶＲＭ１２０、さらにはＰＳＰＭ１２３のようなページング・デバイスを含むことがある。したがって、ＯＳ１０５からＩ／Ｏデバイスに送られる伝送は、ブロックＩ／Ｏデバイスを制御するための論理をカーネル拡張機能中に含まなければならない。そのようなカーネル論理は、ブロックＩ／Ｏデバイスとの対話またはブロックＩ／Ｏデバイスへの問合せを行って、デバイスについて情報を集め、さらに、デバイスが所望のデータを供給されたとき適切に動作するような具合にデバイスを特定のやり方で構成することができる。理解できることであるが、記憶デバイス１４２およびＶＲＭ１２０のようなブロックＩ／Ｏデバイスの制御セットアップは、かなりの量のコードと、ＯＳ１０２とＶＲＭ１２０のようなＩ／Ｏデバイスの間の通信チャネル上での対話とを必要とする。その上、従来のＩ／Ｏデバイスよりもかなり多いカーネル論理およびコードが、ＶＲＭ１２０、スタック１１７およびブロック記憶デバイス１４２のような仮想ブロック記憶デバイスのために必要とされる。
【００８３】
いくつかの実施形態では、従来、ＯＳ１０５またはハイパーバイザ１０８に存在しているカーネル拡張機能は、ＶＢＳＤインタフェース１１４の中に置かれ、またはＶＢＳＤインタフェース１１４に移されて、ＯＳ１０２およびハイパーバイザ１０８の制御特徴を単純化し、さらに最も重要なことには、開示されたもののシステム動作を単純化する。
【００８４】
したがって、ＯＳ１０２によって制御されるＩ／Ｏデバイス１３５などの物理Ｉ／Ｏデバイスは、ＶＢＳＤインタフェース１１４を介して仮想Ｉ／Ｏブロック処理ＶＲＭ１２０にブリッジされることがある。ブロック処理トランザクション・インタフェース（すなわち、ＶＢＳＤインタフェース１１４）は、ＯＳ１０５から制御または管理指令を受け付けることができ、さらにＶＲＭ１２０またはブロック記憶デバイス１４２あるいはその両方のようなブロック・デバイスとデータ・トランザクションを行うことができる。いくつかの実施形態では、ＶＢＳＤインタフェース１１４は、ＯＳ１０５とＶＲＭ１２０の間のインタフェースとして動作することができる。ＶＢＳＤインタフェース１１４は、カーネル拡張機能または指令を受け付けることができ、さらに、ＶＢＳＤインタフェース１１４は、カーネル拡張機能を利用して、ＯＳ１０５とＶＲＭ１２０の間のデータ・トランザクションを容易にするようにＶＢＳＤインタフェース１１４との通信を管理することができる。
【００８５】
いくつかの実施形態では、ＶＢＳＤインタフェース１１４をドライブするカーネル拡張機能は、ＶＲＭ１２０によって生成されるかもしれない。その上、ページャ１１２は、ＶＢＳＤインタフェース１１４と通信しＶＢＳＤインタフェース１１４を制御することがあり、ページャ１１２は、ＶＲＭ１２０とＶＢＳＤインタフェース１１４の間のページング要求およびトランザクションを変えるか修正することがある。
【００８６】
いくつかの実施形態では、ＯＳ１０５は、インターネット１３１を介してｉＳＣＳＩターゲット・モジュール１４１に通信することができるｉＳＣＳＩイニシエータ・モジュール１０３を持っていることがある。ｉＳＣＳＩターゲット・モジュール１４１は、ＶＢＳＤインタフェース１４１と通信するかもしれない。ＯＳ１０５は、ＶＩＯＳ１０７のｉＳＣＳＩターゲット・モジュール１４１をｉＳＣＳＩ記憶デバイスとして検出することができ、さらに、ＯＳは、それがＶＩＯＳ１０７と通信していることを検出することができないことがある。ＶＩＯＳ１０７のディスク・ドライブ（示されていない）は、直列接続ＳＣＳＩ（ＳＡＳ）、並列ＳＣＳＩ、ファイバ・チャネルなどのほとんどどんな通信プロトコルでも利用するかもしれないし、ＶＢＳＤインタフェースは、ＶＩＯＳディスク・ドライブと通信することができる。
【００８７】
そのような柔軟性のある通信構造の１つの利点は、ＶＩＯＳ１０７をサポートするために比較的安価なディスクを利用できることである。ＶＩＯＳ１０７（ｉＳＣＳＩターゲット・モジュール１４１を有する）は、他のエンティティにはｉＳＣＳＩ記憶デバイスとして見えることがあり、ｉＳＣＳＩ通信を開始することができる（すなわち、ｉＳＣＳＩイニシエータ・アダプタを有する）どんなＯＳでも、ｉＳＣＳＩコンパチブルであるとそのＯＳが決定する、ＶＩＯＳ１０７の記憶デバイス（ディスク）にアクセスすることができる。したがって、ｉＳＣＳＩアダプタを有する、ＶＩＯＳ１０７のデータ・ストレージをＯＳが見ることができ、それでＯＳは、そのような具体化を実現するために特別な修正を必要としない。
【００８８】
カーネル拡張機能は、ブロックＩ／Ｏデバイス、より詳細には、ＶＲＭ１２０のようなブロック記憶デバイスまたはページング・デバイスを管理するために必要な論理を含むことができる。ブロック通信、ＰＳＰＭ１２３とＶＲＭ１２０の間のブロックＩ／Ｏを管理することによって、ＶＢＳＤインタフェース１１４は、ＯＳ１０５およびハイパーバイザ１０８の作業負荷を減らすことができる。理解できることであるが、働きすぎのＯＳ１０５およびハイパーバイザ１０８から制御を移すことで、複雑さを減少させ、さらに、新しいブロックＩ／Ｏデバイスおよびアプリケーションを開発するための開発時間を減少させることができる。例えば、以前に慣例であったように、多数の複雑なオペレーティング・システム用のインタフェースを開発する代わりに、新しいブロックＩ／Ｏデバイスは、余り複雑でないＶＢＳＤインタフェース１１４とインタフェースをとることができる。
【００８９】
いくつかの実施形態では、単一カーネル拡張機能がＶＢＳＤ１１４に常駐することがあり、このカーネルは、ＶＲＭ１２０のようなデバイスのためにブロックＩ／Ｏ機能を管理する複雑な論理を含むことがある。理解できることであるが、ブロックＩ／Ｏを管理するための従来のカーネルは、４０，０００〜６０，０００行のコードを持つことがある。そのようなコードは、ハイパーバイザ１０８を介してブロックＩ／Ｏデバイスと対話し、それからブロックＩ／Ｏをセットアップし制御するために利用される。開示された実施形態に従って、ＯＳ１０５によって生成されたカーネル拡張機能は、ブロックＩ／Ｏ機能およびサービスを管理することができるＶＢＳＤインタフェース１１４のカーネルを活動化することができる。そのような管理サービスは、いったん活動化されると、他のＯＳに常駐する他のＶＩＯＳおよび他のカーネル拡張機能によって利用されることがある。そのような拡張機能は、ＯＳ１０５のカーネルとＶＢＳＤ１１４カーネル拡張機能の間に、確定されたインタフェースを含むことがある。
【００９０】
いくつかの実施形態では、ＯＳ１０５とＶＢＳＤインタフェース１１４の間の制御通信は、ＶＩＯＳ１０７として動作するＡＩＸ（Ｒ）型ＯＳによって実現されるかもしれない。そのような実施形態では、ＶＩＯＳ１０７は、インターネット小型コンピュータ・システム・インタフェース（ｉＳＣＳＩ）・アダプタ１４１を含むことがある。上で述べられたように、ｉＳＣＳＩアダプタ１４１は、コンピュータと周辺デバイスの間でデータを転送するための十分に開発された標準の指令およびプロトコルに準拠することがある。ｉＳＣＳＩプロトコルは、クライアント（イニシエータと呼ばれる）がｉＳＣＳＩ指令記述語ブロック（ＣＤＢ）をｉＳＣＳＩデバイス（ターゲット）に送ることができるようにする。ＶＲＭ１２０またはブロック記憶デバイス１４２のようなブロックＩ／Ｏデバイスは、制御および通信を容易にするようにＳＣＳＩターゲット・デバイスとして構成されることがある。ブロック記憶デバイス１４２は、記憶域ネットワーク（ＳＡＮ）１５４の一部分であるかもしれないし、または遠隔サーバに位置付けされているかもしれない。
【００９１】
従来の構成では、ｉＳＣＳＩカーネル拡張機能は、ｉＳＣＳＩプロトコルとブロックＩ／Ｏデバイスの両方を管理しサポートするための複雑で大規模なコードおよび論理を持っている。いくつかの開示された実施形態では、ブロックＩ／Ｏデバイスを動かすコードおよび論理は、ＶＢＳＤインタフェース１１４に存在することがある。したがって、ブロックＩ／Ｏ用のｉＳＣＳＩカーネル拡張機能は、ＯＳのｉＳＣＳＩカーネル拡張機能から移されることがあり、そのＯＳのｉＳＣＳＩカーネルの複雑さを著しく減少させる。したがって、ｉＳＣＳＩカーネルは、ＯＳプロセッサと、ＯＳ１０５とＶＩＯＳ１０７の間の通信チャネルとを制御信号および論理で結びつける必要がない。
【００９２】
したがって、従来のｉＳＣＳＩカーネル構成の複雑なブロックＩ／Ｏ部分を、ブロックＩ／Ｏ機能を管理するためにＶＢＳＤ１１４が利用することができる単純化ブロックＩ／Ｏ指令に取り替えることによって、ＯＳ１０７によって生成される従来の組合せｉＳＣＳＩ−ブロックＩ／Ｏカーネルの複雑さを減少させることができる。したがって、ブロックＩ／Ｏを制御する複雑さは、ＶＩＯＳ１０７に押し出されて、ＯＳ１０５およびハイパーバイザ１０８の作業負荷が軽減されることがある。いくつかの実施形態では、ＶＢＳＤ１１４に存在しているカーネル拡張機能は、ＯＳ１０５またはハイパーバイザ１０８あるいはその両方のカーネルが検証済みのインタフェースを利用しかつ大きな修正なしにうまく動作するように、ｉＳＣＳＩターゲット・デバイスをエミュレートするかもしれない。したがって、動作中に、ＯＳ１０２およびカーネルは、それらがブロックＩ／Ｏデバイスとトランザクションをしていることを検出しない可能性がある。
【００９３】
上で述べられたように、ブロックＩ／Ｏ制御をＶＢＳＤ１１４の中に置くことで、ＯＳ１０５のｉＳＣＳＩカーネル拡張機能中のブロックＩ／Ｏカーネル拡張機能の必要がなくなる。ｉＳＣＳＩカーネル拡張機能は、ＶＢＳＤインタフェース１１４用の単純化制御信号をｉＳＣＳＩプロトコルおよび論理に与えることができる。製造業者は、今やＶＢＳＤインタフェース１１４に存在することができる４０ｋ〜６０ｋ行の複雑な論理を生成し試験することなしに済ますことができるので、ＶＢＳＤインタフェース１１４を実現し制御機能を分割することで、ブロックＩ／Ｏ型ｉＳＣＳＩ製品の製品化までの時間を減らすことができる。
【００９４】
分散計算およびデータ共用の実施形態
いくつかの実施形態では、ＶＲＭ１２０およびＰＳＰＭ１２３は、結果を複数の処理ノードから根処理ノードまたは要求ノードにコピーするサービスを行うことができる。そのような分散またはグリッド処理特徴の結果を共用することの実現には、複数の実施形態があり得る。いくつかの実施形態では、ソースＶＩＯＳ１０７と宛先ＶＩＯＳ１１１の両方が、ＰＳＰＭ１２３にアクセスすることができる。他の実施形態では、宛先ＶＩＯＳ１１１は、ソースＶＩＯＳまたはソース・ページング・デバイスに直接アクセスできないことがあり、ハイパーバイザ１０８は、ソースＶＩＯＳ１０７と宛先ＶＩＯＳ１１１の間にブロック・データ・トランザクションをブリッジすることができる中間ノードをセットアップすることができる。
【００９５】
そのような実施形態では、中間ノードは、グリッド中のソースＶＩＯＳ１０７と宛先ＶＩＯＳ１１１に共通なノードであることがあり、そのグリッドの中で、宛先ＶＩＯＳ１１１はＰＳＰＭ１２３のようなＰＳＰＭまたはソース・ページング・デバイスにアクセスすることができ、その結果、宛先ＶＩＯＳ１１１はソース・ノードＶＩＯＳに間接的にアクセスすることができるようになる。
【００９６】
いくつかの実施形態では、データまたはノードまたはクライアントによって行われた計算の結果あるいはその両方は、ＰＳＰＭ１２３によって提供されるサービスを使用して、ノードからノードに、またはクライアント１０２からクライアント１１３に渡されることがある。そのような構成は、クライアント１０２および１１３がデータ（データおよびアプリケーション）を共用し、さらにＶＲＭ１２０を共用することを可能にする。いくつかのメモリ共用実施形態では、ＰＳＰＭ１２３は、また、クライアント間またはノード間でデータおよびアプリケーションを共用するとき、スタック１１９を持つか、またはスタック１１９で動作することがある。スタック１１９は、一様はＶＲＭデータ・ブロックとコンパチブルであることがあり、ＶＲＭスタックと呼ばれることがある。スタック１１９は、ネイティブ・ストレージ１１５か、ＶＢＳＤ１１４またはＶＰＤＤ１１７のような任意の他のエンティティかに格納されるかもしれない。
【００９７】
プラットフォーム１００の「全ての」メモリが中央仮想メモリであり、ブロック記憶デバイス１４２およびメモリ・モジュール１２４が物理的にメモリ資源を提供できることがＯＳ１０５に見えるように、ＶＲＭ１２０が構成されることがある。したがって、ＶＩＯＳ１０７およびＶＲＭは、レジスタ型システムとは対照的に、情報を一時的にスタックに格納することができるので、ＶＩＯＳ１０７およびＶＲＭ１２０は、スタック・ベースのシステムと呼ばれることがある。スタック１１９に保持されたデータ・ブロックは、素早く安全に、ノードからノードにまたはＯＳからＯＳに送られることがある。開示されたデータ転送構成は、マスタ−スレーブ構成を利用する従来の分散計算構成より優れており、マスタ−スレーブ構成では、ユーザはネットワーク・ファイル・システム（ＮＦＳ）をセットアップしてファイルのホストとして働かなければならず、それからユーザは、高価な仮想専用ネットワークをしばしば利用して感知可能情報を公衆ネットワークで交換する。さらに、マスタ・ノードは、データ・オブジェクトを直列化するか、またはスレーブ・ノードによってパーズされ／非直列化されるように基本形でデータを送り、それから、スレーブ・ノードが所定のタスクを完了したとき、各スレーブから結果を集めなければならない。
【００９８】
この技術は、かなりのオーバーヘッドを必要とし、安全でなく、遅く、さらに複数の技術／システムを必要とする。開示されたノード間ブロック・スタック交換は安全であり、マスタおよびスレーブは、パージング／非直線化なしに通信することができ、その代わりデータをそのネイティブ２進形で読み出すことができる。ＰＳＰＭ１２３は、ブロック・トランザクション効率をさらに改善する機能を行うことができる。いくつかの実施形態では、ＶＩＯＳ（１０７、１１１）は、ＰＳＰＭ１２３を介して、ハイパーバイザ１０８の作業負荷、責任および制御を減らし、ハイパーバイザ１０８の負担を軽減することができる。
【００９９】
例えば、データまたはアプリケーション共用環境で、ＰＳＰＭ１２３は、ブロック・デバイスまたはＶＲＭ１２０のようなページング・デバイス、またはハイパーバイザ１０８とインタフェースをとることができるブロック記憶デバイス１４２を識別することができる。ＰＳＰＭ１２３は、それから、他のＰＳＰＭ（示されていない）を選ぶことができ、２つのＰＳＰＭは、デバイス１２０、１４２のような１つまたは複数のブロック記憶デバイスへのアクセスを構成することができる。ＰＳＰＭは、それから、ハイパーバイザ１０８と簡単なインタフェース通信を行って、ブロック記憶デバイス１２０、１４２の入力−出力（Ｉ／Ｏ）をサポートすることができる。
【０１００】
分散処理構成またはデータ共用構成で、ＰＳＰＭ１２３は、ハイパーバイザ１０８からいくつかの制御機能を取得し、ＶＲＭ型スタック１１９、ＶＰＤＤ１１７、ページャ１１２、ＶＡＳＩドライバ１１０、ＶＢＳＤ１１４、ネイティブ・ストレージ１１５、およびハイパーバイザ１０８を制御することができ、さらに、グリッド中の様々なノード間で、アプリケーション・データ、生データ、結果の戻し、その他の流れを制御することができる。
【０１０１】
上で述べられたように、ＶＲＭ１２０は、アプリケーションからのデータおよび命令を、クライアント１０２および１１３のような複数のクライアントおよびエンティティの間で共用するために利用されることがある。従来のデータ共用システムには重大な機密保護の問題があり、それで、データが公衆ネットワーク上で直列転送されるとき、データは暗号化される必要がある。一般的には、暗号化およびネットワーク待ち時間は、システム性能に深刻な影響を及ぼす。より具体的には、従来のシステムでデータをノードからノードに安全に移動させるには、非常に多くのプロセスおよび時には高価なハードウェアが必要となる。
【０１０２】
ＰＳＰＭ１２３およびＶＲＭ１２０を介したアプリケーション・データの格納および移動は、従来のシステムで利用される高価なハードウェアおよびソフトウェアをなくしながら、公衆ネットワークでデータを転送する必要を回避し、機密保護の向上を実現する。データおよびアプリケーション・データを共用することができるようにするほかに、開示された構成は、クライアント１０５および１１３のようなエンティティがアプリケーション・コンテキスト・データを共用することができるようにする。スタックを利用してブロック・データ転送で動作するＶＲＭ１２０およびＰＳＰＭ１２３は、処理ノードへのデータの移動および処理ノードからのデータの移動のための効率的なコンジットを実現する。
【０１０３】
プラットフォーム１００のＶＲＭ１２０およびＰＳＰＭ１２３は、アプリケーション・データを、共用可能で再使用可能な移動データ・ブロック中に、しばしばスタック１１７および１１９のようなスタック中に、およびメモリ・モジュール１２４およびブロック記憶デバイス１４２のようなＶＲＭ１２０資産中に格納することができるようにする。理解できることであるが、アプリケーションに関連した内容を持つデータ・ブロックが、ＰＳＰＭ１２３によって、ＶＲＭ１２０およびクライアント１０２および１１３を含むブロック・デバイスへ、またこのブロック・デバイスから、素早く自由に転送されることがある。
【０１０４】
本明細書で開示された論理ボリューム、論理サイズ、ページまたはブロック転送構成は、頑強性および機密保護の特徴を組み込んでいる。例えば、ハイパーバイザ１０８の機能およびブロック・ベースの伝送は、プラットフォーム通信を盗み聞きすることをずっと困難にしている。さらに、ハイパーバイザ１０８は、機密保護の特徴を実現し、安全なやり方でＶＲＭ１２０を管理する。その上、データがＶＲＭ１２０に格納され、アプリケーションの一部を処理するノードがダウンしたとき、アプリケーション・データは依然としてＶＲＭ１２０中に存在しているはずである。プラットフォームは、２つのシステム／ノードまたはクライアント１０２および１１３で構成されることがあり、各クライアント１０２および１１３がＶＲＭ１２０にアクセスすることができる。したがって、何らかの理由で、他方のクライアント１１３が、変化を続けることができないか、またはクライアント１１３が故障を起こす前の結果を格納することができない場合、クライアント１０２またはユーザは、データを回復することができる。
【０１０５】
プラットフォームまたはサーバの仮想メモリを検出することによって、ＯＳ１０５は、ＶＲＭ１２０またはコミュニティ・メモリを仮想メモリとして取り扱うことができるようになる。ＯＳ１０５は、ＶＲＭ１２０を検出することができ、それからＶＲＭ１２０は、ＯＳ１０５がＶＩＯＳ１０７を介してＶＲＭ１２０と通信することができるようにファームウェアまたはハイパーバイザ１０８を使用可能にすることができる。使用可能にされたハイパーバイザは、ページング・スペース区分モジュール（ＰＳＰＭ）１２３と協調してＯＳ１０５のために読出しおよび書込みトランザクションを管理することができ、それによって、ＯＳ１０５の資源の負担を軽減する。
【０１０６】
したがって、ＶＲＭ１２０およびそれの関連した通信サービスを使用して、アプリケーション・コンテキスト・データ、アプリケーション・データ、生データおよび処理済みデータを、クライアント１０２、１１３とＶＲＭ１２０の間で交換することができる。理解できることであるが、ＶＲＭ１２０は、ほとんどどんな型のブロック記憶デバイスまたはブロックＩ／Ｏデバイスもサポートすることができ、さらに、相当な数のＯＳまたは処理システムは、ＶＲＭ１２０またはＰＳＰＭ１２３中の共用メモリ領域にアクセスすることができるように構成されることがある。サポートされたＯＳのどれか１つがアプリケーション１３９を開くことができ、さらに、このアプリケーションを他の多くのＯＳと共に実時間で利用することができる。この分散計算実施形態は、図２および３に関連してより詳細に述べられる。
【０１０７】
異なるサイズを有するブロックのデータの格納および取出し
上で述べられたように、プラットフォーム１００は、データをセグメント化するか連結してブロックまたはページと呼ばれる標準または一様サイズにしてデータを利用する構成要素またはエンティティの間でデータを通信することができる。一般に、ブロックに整列されたデータを処理しないＯＳは、ＶＲＭ１２０を使用することができない。プラットフォーム１００での伝送が一様でないとき、データは属性を伴うことがある。伝送における属性または属性の型は、システム中を移動しているページなどの論理ボリュームのサイズ、型またはサイズを定義することができる。ハイパーテキスト・マーク付け言語（ＨＴＭＬ）および拡張可能マーク付け言語（ＸＭＬ）などのマーク付け言語は、属性を使用してデータおよびデータのフォーマティングを記述する。
【０１０８】
上で述べられたように、プラットフォーム１００および、特に、ＶＲＭ１２０およびブロック記憶デバイス１４２のようなブロック・デバイスは、データを効率的に移動させ、格納することができる。データのブロックが、プラットフォームが収容するように設計されている標準サイズに準拠している限り、これは本当である。プラットフォーム１００中を移動する非標準データ・セグメントは、多くの理由のためにプラットフォーム１００の効率をかなり低下させることがある。非標準セグメント、または、プラットフォームが設計されている最適ブロック・サイズよりも大きなまたは小さなデータ・セグメントの処理は、また、かなりのオーバーヘッドを必要とすることがある。
【０１０９】
理解できることであるが、標準サイズよりも大きなサイズを持つ非標準データ・セグメントは、その非標準データ・セグメントがプラットフォーム１００のまわりを移動するときに、データ処理エンティティによってパーズされなければならない。同様に、標準サイズデータよりも小さなサイズを持つデータ・セグメントが移動するとき、データ処理エンティティは、そのより小さなセグメントを一様セグメントに変換するために、未使用ビットを「埋め」なければならない。
【０１１０】
さらに、非一様セグメントを、一様サイズを持つブロック・デバイス中に格納するとき、少なくとも最終パーズ済みセグメントは後に残る可能性がある。この最終セグメントは、ブロックまたはページの小さな部分を満たすにすぎないことがある。同様に、標準ブロックよりも小さなサイズを持つ非一様データ・セグメントは、結果として部分的に満たされたブロックになることがあり、または、ブロック中の未使用ビット位置を埋めるために記憶デバイスを必要とすることがある。そのような充填要求／プロセスは、メモリ・マネージャがシステムの全容量の一部またはあるパーセンテージを格納し、または取り出すだけであるから、メモリ・システムの効率を相当に低下させることがある。
【０１１１】
いくつかの実施形態では、プラットフォーム１００中のデータ移動エンティティは、宛先アドレスで非一様データ・セグメント（または、全ブロックを満たしていないセグメント）をソートすることができ、同じ宛先を持つセグメントを１つのブロックにペーストすることができる。時には、ブロックは、２以上の関係のない非一様セグメントからのデータを含むかもしれない。
【０１１２】
ＶＲＭ１２０、およびことによるとページャ１１２のような他のデータ移動エンティティは、ソータ１３２のようなソータおよびバッファ、またはブロック配置モジュール１３４のような配置モジュールを持っていることがある。ソータ１３２は、属性、論理アドレスなどの宛先アドレス、または入力データ・セグメントに含まれる論理ユニット番号（ＬＵＮ）を監視することができる。この監視に基づいて、ソータ１３２は、ブロック記憶デバイスまたはブロックＩ／Ｏデバイスに向けられたデータを識別することができる。ソーティング後、ブロック配置モジュール１３４は、非一様データ・セグメントを合体させるか連結することができ、またはそれらのセグメントをブロックまたはページに配置することができる。いくつかの実施形態では、配置モジュール１３４は、複数の非一様（ことによると関連のない）データ・セグメントを、メモリのブロックがより適切に利用されるように単一ブロックまたはページに「ペースト」するかロードすることができる。合体によってそのようなブロック配置を行うことは、非標準データ・セグメントまたはデータ断片を標準ブロック・サイズに一体化して、システム効率を高めることができる。
【０１１３】
データが非標準サイズであるか、またはデータの転送長がＶＲＭＩ１０６で要求されるブロック・サイズと整列されない（すなわち、データ・セグメントが非一様である）場合には、ＶＲＭＩ１０６などのネイティブＩ／Ｏ記憶デバイス・ドライバ・スタックは、Ｉ／Ｏ要求中に故障を起こすことがある。ＯＳ１０５は、ＶＲＭ１２０または他のブロックＩ／Ｏデバイスを使用することができるが、ＶＲＭ１２０またはブロックＩ／Ｏデバイスがブロック・ベースの伝送に依存していることを決定できないことがある。ＶＲＭ１２０を利用するいくつかのＯＳは、非一様なデータ・セグメント、またはブロック記憶デバイスのブロック・サイズと整列されないデータ・セグメントを処理し、伝送することがある。したがって、ＶＲＭ１２０は、非標準またはブロック整列でないデータ・セグメントを受け付け、ソーティングによってデータをブロック整列にし、さらに転送およびストレージのためにデータを合体させるように構成を生成することができる。したがって、開示されたＶＲＭ１２０は、ブロック整列データを使用してトランザクションを行わないレガシーＯＳがＶＲＭ１２０とインタフェースをとることができるようにする。
【０１１４】
理解できることであるが、ＶＲＭ１２０は、仮想クライアント１０２からＶＢＳＤ１１４に送られたＩ／Ｏ要求によって、クライアント１０２からブロック記憶デバイス１４２へのデータ転送を使用可能にする。このＩ／Ｏ要求は、メモリ・モジュール１２４、記憶デバイスおよびＳＡＮ１５４のような異なるメモリ位置への複数のデータ転送を記述することがある。いくつかの実施形態では、ＶＲＭ１２０に入って来る各データ転送は、ソータ１３２によって調べられ、ブロックが向けられたブロック記憶デバイスの論理ブロック・アドレスに従ってソートされることがある。ソート済みデータ転送は、ブロック転送のために非ブロック整列データをブロック整列データに容易にグループ化し合体し易くするデータ構造で格納されることがある。
【０１１５】
ソータ１３２は、複数のデータ・セグメントを受け取り、データ・セグメントが、予め決められたサイズに一致するかどうかを判定することができる。ソータ１３２は、セグメントを非標準セグメントとして識別することができ、それの宛先識別子または宛先アドレスに基づいて非標準セグメントをグループ化することができる。
【０１１６】
ブロック配置モジュール１３４は、ブロック・インクリメントで割り付けられたメモリ・スペースを持つことがあり、ブロック配置モジュールは、グループ化セグメントに基づいて、または共通宛先識別子に基づいて、非標準セグメントをブロック割付け中に置くことができる。ブロック配置モジュール１３４は、メモリから取り出したときすぐにブロック割付けがパーズされて最初に受け取られた構成に戻されるように、非標準セグメントを含むブロックにタグを付けることができる。
【０１１７】
要求がソートされ合体されるとすぐに、データは、単一の指令を使用してネイティブ（すなわち、近くのものまたは他のオペレーティング・システムから独立している）Ｉ／Ｏデバイス・ドライバ・スタックに送られることがある。ソーティングおよび合体は、ブロック・データ転送を処理するために必要な処理オーバーヘッドおよび指令の数をかなり減らすことができ、したがって、ＶＲＭ１２０の性能および全プラットフォーム１００の性能を改善する。データがＯＳ１０２によって要求され、ブロック・ストレージ（１４２、１２４など）から取り出されるとき、適切なデータが、ハイパーバイザ１０８によって制御されたメモリに転送され、専用論理および局所バッファが、非標準データ・セグメントを再現することができる。それから、ハイパーバイザ１０８は、復元されたデータを使用のために仮想クライアント１０２に転送することができる。
【０１１８】
いくつかの実施形態では、ＶＲＭ１２０は、ＯＳ間で共用することができるかなりの量のメモリを集中型メモリに供給する。理解できることであるが、一般に、適切に割り付けられた仮想メモリを持つプラットフォームのＯＳが多ければ多いほど、それだけローナ（loaner）のプールは大きくなり、さらにＶＲＭ１２０のメモリ利用がそれだけ良くなる。ＯＳ１０５は、ホストＯＳまたは非ホストＯＳであるかもしれない。異なるサイズを持つデータのページまたはブロックの格納および取出しは、変化する論理ボリュームを監視し、ＯＳによって利用されるデータのサイズに従ってレジスタ、メモリ区分を再構成することができる。
【０１１９】
図２を参照すると、処理ノードが、仮想メモリ・システムからのアプリケーション・データおよびアプリケーション・コンテキスト・データを共用することができるようにする分散システム２００のブロック図が示されている。このシステムは、３つの処理ノードまたはオペレーティング・システム（ＯＳ）２０２、２０４、および２０８（すなわち、２０２〜２０８）、作業負荷（Ｗ／Ｌ）スプリッタ２１２、ソース仮想入力／出力サーバ（ＶＩＯＳ）２１０、宛先ＶＩＯＳ２２０、第３のＶＩＯＳ２０６、およびコミュニティ・ページング・スペース２３０を含むことがある。コミュニティ・ページング・スペース２３０は、処理ノード２０２〜２０８のコミュニティが利用できることがあるアプリケーションおよびデータ２１４を格納することができる。
【０１２０】
コミュニティ・ページング・スペース２３０は、図１のページング・スペース区分モジュール（ＰＳＰＭ）１２３によって実現されることがある。その上、このページング・スペースは、システム１００または２００中の様々な位置の仮想実メモリ・スタック１１９によって実現されるかもしれない。たった３つのノードが示されているが、システムはほとんどどんな数のノードでも収容するかもしれない。示されていないが、ハイパーバイザは、ＶＩＯＳ２１０、２０６および２２０とコミュニティ・ページング・スペース２３０の間のトランザクションを容易にすることができる。
【０１２１】
データを直列化しさらに暗号化し、さらにマスタが通信チャネルをセットアップし各個々のノードと通信してスレーブから処理済みデータを集めることを必要とする従来のマスタ−スレーブ分散処理技術に比べて、システム２００は、ずっと効率的である。システム２００は、より複雑でなく、より高速な、より効率的な、より安全な直接メモリ・アクセス方法をサポートして計算を分散させ、この方法では、処理ノード間の直接通信のために必要な条件はない。
【０１２２】
動作において、作業負荷スプリッタ２１２は、アプリケーション２１４を、各ノード２０２〜２０８で処理可能なタスクにパーズし、またはスプリットすることができる。ノード２０２〜２０８は、各々、アプリケーション２１４からタスクを取り出し、そのタスクを処理し、タスクの結果をコミュニティ・ページング・スペース２３０に戻し、さらに、ページインおよびページアウト指令を利用して他のタスクを取り出すことができる。ノードによって結果が戻された後で、ノード２０２〜２０８のうちのどれかが、戻された結果を取り出し、そのような結果を他のタスクのために使用し、再び「他の」タスクの結果を戻すことができる。
【０１２３】
したがって、各ノード２０２〜２０８は、作業負荷スプリッタ２１２によって行われた作業負荷スプリットに基づいて、アプリケーションの部分を取り出すことができ、各ノードは、そのノードがあたかもそれ自体の専用メモリを利用しているかのように、そのような動作を行うことができる（すなわち、現在アプリケーション・データを利用する）。共用またはコミュニティ・メモリ（すなわち、仮想メモリ）に対するそのような直接メモリ・アクセスによって、ノードは、従来の分散計算またはグリッド計算よりも多くの時間をアプリケーションの処理に使うことができるようになる。その理由は、ノードはマスタ・ノードとの通信チャネルを設定し、また再設定する必要がないからである。理解できることであるが、コミュニティ・ページング・スペース２３０とノードの間の通信チャネルは、設定し、また再設定する必要のない安全で効率的なチャネルである。
【０１２４】
集中型ストレージ・ノード（ページング・スペース２３０）は、各ノード２０２〜２０８が現在データを格納し、また取り出すためのハブを提供する。理解できることであるが、ノード２０２〜２０８とページング・スペース２３０の間の同じチャネルが、非グリッドまたは非分散計算で利用される。また、理解できることであるが、システム２００は、従来の分散処理システムよりも少ないサブシステムまたは構成要素を有し、また、システム２００は、従来のシステムに比べてより多くのデータを、より高速に、より優れた機密保護特徴で移動させることができる。上で述べられたように、ノード２０２、２０４および２０８は、コミュニティ・ページング・スペース２３０によって提供されるコミュニティ・メモリに「直接メモリ・アクセス」を行うことができるので、これらのノード間の安全でない通信チャネルは、減少し、またはなくなることがある。コミュニティ・ページング・スペース２３０は、ＶＩＯＳ２１０、２０６および２２０を介して、安全な大容量データ・トランザクションおよび仮想メモリ・サービスをノード２０２〜２０８に提供することができる。ページング・スペース中のアプリケーション・データがノード２０２〜２０８の「コミュニティ」に利用可能であることを示すために、この実施形態では、このページング・スペースはコミュニティ・スペースと呼ばれる。
【０１２５】
いくつかの実施形態では、システムはグリッドを形成することができる。グリッド中の各ノード２０２〜２０８は、グリッド、データ・グリッドまたは通信グリッドを形成するＬＰＡＲであることがある。グリッド中の全てのノード２０２〜２０８は、同じページング・デバイス（すなわち、２３０）にアクセスするかもしれないし、または異なるページング・デバイスまたはスタックにアクセスするかもしれず、ここで、各デバイスまたはスタックは少なくとも１つの共通ページング・デバイス２３０によってバックアップされることがある。図１に関連して述べられたように、データまたは計算の結果あるいはその両方は、仮想ページング・デバイス・ドライバ（ＶＰＤＤ）、ページャまたはページ・ドライバ、仮想非同期インタフェースまたはハイパーバイザを含むＶＲＭスタック１１７によって提供されるサービスを使用して、１つのノードから他のノードに渡されることがある。
【０１２６】
開示された構成に関して、各マスタおよびスレーブは、ネイティブ２進形式のアプリケーションおよびアプリケーション・データでトランザクションを行うことができるので、複数のスレーブとインタフェースをとる単一マスタは、パージング、非直線化、および暗号化なしで済ますことができる。また、ネットワークでデータが取り出されず、また結果が送られないので、全プロセスは、高速で、効率的で、かつ安全であることがある。
【０１２７】
図３を参照すると、ページング特徴を有するコミュニティ仮想メモリを利用することができる分散計算システム３００が示されている。システム３００は、ソースＶＩＯＳによって利用されるソース・ページング・デバイスへの直接アクセスを実現することができない宛先ＶＩＯＳを含むことができる。システム３００は、ソースＶＩＯＳ３１０、宛先ＶＩＯＳ３２０、および共通または中間ＶＩＯＳ３１５を含むことができる。さらに、システム３００は、ソースＶＩＯＳ３１０用の局所ページング・スペース３３０および宛先ＶＩＯＳ３２０用の局所ページング・スペース３４０を含むことができる。ソースＶＩＯＳ３１０は、ＶＲＭスタック３０２およびページング・スペース区分モジュール（ＰＳＰＭ）３０４を含むことができる。中間ＶＩＯＳ３１５は、ＶＲＭスタック３１６およびＰＳＰＭ３１８を含むことができ、宛先ＶＩＯＳ３２０は、ＶＲＭスタック３２２およびＰＳＰＭ３１４を含むことができる。
【０１２８】
図示されていないが、システム３００は、図２に関連して述べられたように、ＶＩＯＳ３１０、３１５および３２０によってサービスされるノードで処理するために作業負荷をスプリットする作業負荷スプリッタを持っていることがある。いくつかの実施形態では、システム３００は、中間ＶＩＯＳ３１５がソースＶＩＯＳ３１０と宛先ＶＩＯＳ３２０の間の通信を容易にするように構成されることがある。
【０１２９】
他の実施形態では、宛先ＶＩＯＳ３２０（または、他のエンティティ）は、宛先ＶＩＯＳ３２０が所望のページング・スペース（すなわち、ソースＶＩＯＳページング・スペース３３０）と接続できないと決定することがある。これが起きると、通信は、代替え経路を介して、ソースＶＩＯＳページング・スペース３３０と宛先ＶＩＯＳ３２０の間にセットアップされることがある。代替え経路は、中間ＶＩＯＳ３１５および中間ページング・スペース３４０によって生成されることがある。中間ページング・スペース３４０は、宛先ＶＩＯＳ３２０とソースＶＩＯＳ３１０またはソースＶＩＯＳページング・スペース３３０の間の通信を容易にするコンジットであることがある。したがって、システム３００は、中間ノード３１５がアクセスすることができる２つの局所ページング・スペース３３０および３４０を実現することができ、中間ノード３１５は、宛先ノード３２０とこの／あるソースＶＩＯＳページング・スペース３３０の間の通信を容易にすることができる。そのような通信は、ハイパーバイザ（図示せず）によって制御されることがある。
【０１３０】
いくつかの実施形態では、宛先ＶＩＯＳ３２０がソースＶＩＯＳ３１０に直接アクセスすることができないとき、ソースＶＩＯＳ３１０は、それのＶＲＭスタック３０２の内容を、ＰＳＰＭ３０４を介して「ページアウト」するように制御されることがある。ソースＶＩＯＳ３１０を介して通信する処理ノードが、パーズ済みタスクの結果を生成するいくつかの実施形態では、そのノードは、ソースＶＩＯＳ３１０がその結果だけを処理済みタスクからページング・スペース３３０にページアウトするように、ソースＶＩＯＳ３１０を制御することができる。
【０１３１】
中間ＶＩＯＳ３１５は、ＶＲＭスタック３１６およびＰＳＰＭ３１８を介して、データ・ブロックを移動させるか、または結果を中間ページング・スペース３４０にページアウトすることができ、宛先ＶＩＯＳ３２０は、ＶＲＭスタック３２２およびＰＳＰＭ３１４を介して結果を受け取るか、またはページインすることができる。たった１つの中間ＶＩＯＳ３１５が示されているが、いくつかの実施形態は、各ＶＩＯＳが「隣接する」ＶＩＯＳまたは隣接するＶＲＭスタックにアクセスすることができるような具合に、複数の中間ノード（図示せず）を利用して通信チェーンを形成するかもしれない。
【０１３２】
図４を参照すると、仮想メモリ・システムを用いて分散計算を行う方法を示す流れ図４００が示されている。ブロック４０２によって図示されるように、仮想メモリが本システムをサービスすることができ、かつ本システムがそれに応じて構成されることがあることを、本システムは、検出することができる。ブロック４０４で図示されるように、共通ページング・デバイスが探索されることがある。決定ブロック４０６で図示されるように、ソースＶＩＯＳと宛先ＶＩＯＳの両方がアクセスすることができるページング・デバイスを、それら両方が発見することができるかどうかが決定されることがある。
【０１３３】
ブロック４０８で図示されるように、共通ノードを識別することができる場合、通信は、ノード、ＶＩＯＳおよび仮想メモリの間にセットアップされることがあり、作業負荷またはアプリケーションはタスクにパーズされることがある。ブロック４１０で図示されるように、ノードは、アプリケーションのタスクを処理しながら、ＶＩＯＳおよび仮想メモリ・スタックを利用して仮想メモリに対して読出し書込みを行うことができる。その後で、このプロセスは終わることがある。
【０１３４】
ブロック４０６で、ソース・ノードと宛先ノードの両方が共通ページング・デバイスにアクセスできない場合には、ブロック４１２によって図示されるように、中間ＶＩＯＳノードは、中間ページング・デバイスの手助けをすることができる。ブロック４１３で図示されるように、作業負荷はタスクにパーズされることがあり、ブロック４１４で図示されるように、スタックがソース・ページング・デバイスから中間ページング・デバイスに渡され、中間ページング・デバイスがそのスタックを宛先ページング・デバイスに送ることができるので、ソース・ノードは、結果を宛先ノードに送ることができる。その後で、このプロセスは終わることがある。
【０１３５】
図５を参照すると、仮想ブロック記憶デバイス・インタフェースを利用して仮想メモリを動作させる方法を提供する流れ図５００が示されている。決定ブロック５０２で図示されるように、仮想メモリが検出されたかどうかが決定されることがある。ＶＭが検出されない場合、プロセスは終わることがある。ＶＭが検出された場合、仮想入力／出力サーバ（ＶＩＯＳ）は、仮想ブロック記憶デバイス・インタフェース（ＶＢＳＤＩ）で構成されることがある。一実施形態では、ＶＩＯＳは、ＡＩＸ（Ｒ）オペレーティング・システム（図示せず）を利用してＶＢＳＤＩを実現することができる。
【０１３６】
ブロック５０６で図示されるように、その仮想メモリにアクセスしたいと望むノードのＯＳは、ｉＳＣＳＩプロトコルおよびＶＢＳＤＩ制御論理をＶＩＯＳのＶＢＳＤＩに送ることができる。ブロック５０８で図示されるように、ＶＢＳＤＩはｉＳＣＳＩターゲット・デバイスをエミュレートし、ｉＳＣＳＩプロトコルおよびＶＢＳＤＩ制御論理を利用してＯＳと仮想メモリの間にインタフェースを生成することができる。
【０１３７】
ブロック５１０で図示されるように、プロトコルおよび制御に応答して、ＶＢＳＤＩおよびＶＩＯＳは、仮想メモリの機能をセットアップし制御することができる。ブロック５１２で図示されるように、ＯＳは、ＶＩＯＳのＶＢＳＤＩを介して仮想メモリにアクセスすることができる。ブロック５１４で図示されるように、データは、仮想メモリに格納されるか、仮想メモリから取り出されることがある。その後で、このプロセスは終わることがある。
【０１３８】
説明されたＶＢＳＤインタフェースは、仮想メモリ（ＶＲＭ１２０）のインタフェースをとって示されている。開示された構成は、ＶＢＳＤインタフェースのたった１つの応用にすぎない。理解できることであるが、ＶＢＳＤインタフェースは、どんなブロックＩ／Ｏデバイスでもドライブするように利用されるかもしれない。さらに、ＶＢＳＤインタフェースは、仮想メモリなしに、またはＶＲＭ１２０のサービスなしに利用されるかもしれない。
【０１３９】
いくつかの実施形態では、ＶＢＳＤインタフェースをドライブするカーネル拡張機能は、ＶＲＭ１２０によって実現されるかもしれない。図１のページャなどのページャは、ＶＢＳＤインタフェースと通信することができ、ＶＲＭ１２０とＶＢＳＤインタフェースの間のページング要求およびトランザクションを変え、または修正することができる。
【０１４０】
いくつかの実施形態では、ＬＰＡＲ中のｉＳＣＳＩモジュールはｉＳＣＳＩターゲットとして行動することができ、ｉＳＣＳＩプロトコルはインターネット上で受け取られることがあり、ｉＳＣＳＩプロトコルはｉＳＣＳＩモジュールによって変換され、または処理されるかもしれないし、さらに、変換された信号はＶＢＳＤインタフェースをドライブするかもしれない。ＶＢＳＤインタフェースは、Ｉ／ＯおよびＩ／ＯデバイスへのアクセスおよびＩ／ＯおよびＩ／Ｏデバイスの管理を担っていることがある。いくつかの実施形態では、ＶＢＳＤインタフェースは、ｉＳＣＳＩプロトコルを受け付けるように構成されないことがある。他の実施形態では、ハイパーバイザは、ＶＢＳＤインタフェースを利用して、ハイパーバイザがよく知らないハードウェア（ｅｘｉＳＣＳＩ）にアクセスすることができる。
【０１４１】
ＶＢＳＤインタフェースを動作させるための流れ図は、多くのやり方で単純化されるかもしれない。一実施形態では、ｉＳＣＳＩの仮想メモリのイニシエータは、Ｉ／Ｏ要求をＶＢＳＤインタフェースに送ることができ、ＶＢＳＤインタフェースはネイティブ記憶デバイス・ドライバと通信することができ、このデバイス・ドライバはＩ／Ｏを物理アダプタに伝え、送ることができる。物理アダプタは、Ｉ／Ｏをハード・ディスクのような物理記憶デバイスに送ることができる。Ｉ／Ｏ要求に対する応答は、ディスクから始まり、逆の順序でイニシエータまで戻って行くかもしれない。
【０１４２】
一般に、イニシエータは、イニシエータがサポートまたはエミュレートしようとしている機能に固有なある型の論理またはプロトコルを理解するモジュールであることがある。例えば、ＶＲＭでは、イニシエータＶＲＭは、メモリおよびメモリのページングをエミュレートすることができる。他の例では、ｉＳＣＳＩイニシエータは、ｉＳＣＳＩターゲット・デバイスをエミュレートすることができる。
【０１４３】
図６を参照すると、仮想化システム中で入力−出力（Ｉ／Ｏ）を制御する方法を示す流れ図６００が開示されている。ブロック６０２で図示されるように、ページング・スペース区分マネージャ（ＰＳＰＭ）は、システムに接続されたページング・デバイスを識別することができ、いくつかの実施形態では、識別されたまたは利用可能なページング・デバイスは、ユーザの選択のために表示されることがある。ブロック６０４で図示されるように、１つまたは複数のページング・デバイスがＯＳのために選ばれることがあり、１つまたは複数のバックアップ・ページング・デバイスまたは転送ページング・デバイスがＯＳのために選ばれることがある。故障の場合に第１のバックアップが活動化され、第１のバックアップが利用できないか故障を起こしているときには、システムが第２のバックアップを試みるなどのように、バックアップ・ページング・デバイスに、順序または格付けが与えられることがある。
【０１４４】
ページング・デバイスは、ＰＳＰＭシステム中のスタックであるかもしれないし、またはブロック記憶デバイスとして構成された仮想メモリまたはディスク・ドライブのようなブロックＩ／Ｏデバイスであるかもしれない。したがって、ブロック・インクリメントでトランザクションを行う任意のハードウェアまたはソフトウェアは、識別されたページング・デバイスであるかもしれない。ブロック６０６で図示されるように、デバイス・インタフェース定義は、ＯＳ、主ＶＩＯＳ、バックアップＶＩＯＳ、主ページング・デバイス／エンティティ、バックアップ・ページング・デバイス／エンティティ、ＶＲＭ１２０中の論理メモリ割付けなどのために生成されることがあり、デバイス・インタフェース定義は、輻輳または故障が起きたとき実現されることがある好ましい通信チャネルおよび好ましいバックアップ・チャネルを定義することができる。
【０１４５】
ブロック６０８で図示されるように、ＶＩＯＳは、ＯＳおよび選ばれたページング・デバイスのために識別されることがある。ＶＩＯＳページング・デバイスＯＳ識別は、ユーザ入力を介して、または自動選択プロセスによって行われることがある。自動識別プロセスは、物理接続、近接要素、能力、構成、作業負荷などに基づくことがある。またブロック６０８で図示されるように、識別プロセスの後で、主ＶＩＯＳおよびバックアップＶＩＯＳが選ばれることがあり、デバイス・インタフェース定義がデバイスの各々のために生成されることがある。
【０１４６】
デバイス・インタフェース定義は、論理ユニット番号（ＬＵＮ）、論理アドレス、媒体アクセス制御アドレス、ハンドル、インタフェース定義、共用論理ユニット番号、ラベル、デバイス情報の状態などを含むことがある。この情報は、ＶＩＯＳなどの１つまたは複数の位置に格納されることがある。情報は、通信を経路設定し、また再経路設定するために、１つまたは複数のＯＳ、ファームウェアまたはハイパーバイザ、ＶＩＯＳ、ＰＳＰＭ、仮想メモリ、ページング・デバイス、ブロックＩ／Ｏデバイス、ブロック記憶デバイスなどによって利用されることがある。
【０１４７】
一実施形態では、ブロック６１９で図示されるように、デバイス・インタフェース定義は、ＶＩＯＳに格納されることがあるが、デバイス・インタフェース定義は、そのような定義を利用するかもしれない多くの他の位置に格納されるかもしれない。ブロック６１２で図示されるように、ＯＳは、ユーザまたは上で述べられた自動選択に基づいて仮想メモリと対話することができる。決定ブロック６１２によって図示されるように、転送が使用可能であるかどうかが決定されることがある。転送が使用可能である場合には、ブロック６１４で図示されるように、通信は１つまたは複数のページング・デバイスに転送されることがある。転送が使用可能でない場合には、ブロック６１６で図示されるように、ＯＳは、単一ＶＩＯＳを介してページング・デバイスに通信することができる。
【０１４８】
ブロック６１８で図示されるように、エラーが検出された場合には、ブロック６２０で図示されるように、システムは、１つまたは複数のバックアップＶＩＯＳまたはバックアップ・ページング・デバイスまたは両方を利用するバックアップ構成に切り換わることができる。また、ブロック６２０で図示されるように、いくつかの実施形態では、ＯＳ通信は、通信を他のＶＩＯＳ、他のページング・デバイスまたは両方に転送するように設定されるかもしれない。そのような転送は、冗長性、バックアップまたは保守の目的であるかもしれない。その後で、このプロセスは終わるかもしれない。
【０１４９】
ブロック６０２〜６１４に関連して説明されたプロセスは、ブロック６１８および６２０で説明されたようなエラー検出およびバックアップ切換えなしに動作することができる。したがって、ブロック６０２〜６１４を利用して説明されたプロセスは、ブロック６１８および６２０で説明されたプロセスとは別個のプロセスであるかもしれない。ブロック６１８および６２０で説明されたプロセスは、通信アクティビティを絶え間なく監視し、サービスしている区分がシャットダウンされたとき終了することができる無限ループのように動作することがある。
【０１５０】
図７を参照すると、仮想化システム中で入力出力（Ｉ／Ｏ）を制御する他の方法を示す流れ図７００が開示されている。ブロック７０２で図示されるように、入力−出力（Ｉ／Ｏ）サービスはＶＩＯＳによってオペレーティング・システムのために行われることがある。ブロック７０４で図示されるように、通信エラーが検出されるかどうかが決定されることがある。エラーが検出されない場合、プロセスは通信サービスを提供し続けることができる。通信エラーが検出された場合、ブロック７０６で図示されるように、ＯＳまたはハイパーバイザは、第２またはバックアップＶＩＯＳに接続しようと試みることができる。
【０１５１】
ブロック７０８で図示されるように、そのような試みが成功するかどうかが決定されることがあり、その試みが成功した場合には、第２またはバックアップＶＩＯＳはＩ／ＯをＯＳに提供することができる。ブロック７０８で、その試みが成功しなかった場合、システムは第３のＶＩＯＳに接続しようと試みることができる。ブロック７１２で図示されるように、第３のＶＩＯＳがページング・デバイスとうまく通信することができるかどうかが決定されることがあり、うまく通信できる場合には、第３のＶＩＯＳはＩ／ＯをＯＳに提供することができる。第３のＶＩＯＳがＩ／ＯをＯＳにうまく提供できない場合には、ブロック７１４で図示されるように、エラー・メッセージが送られることがある。その後で、このプロセスは終わることがある。
【０１５２】
図８を参照すると、仮想メモリを利用してデータを共用する方法を示す流れ図８００が開示されている。決定ブロック８０２で図示されるように、システムが仮想メモリ資源を持っているかどうかが決定されることがある。仮想メモリが検出されない場合、プロセスは終わることがあるが、仮想メモリが検出されると、ブロック８０４で図示されるように、アプリケーションは、ブロック記憶デバイス中に格納されることがある。
【０１５３】
ブロック８０６で図示されるように、システムは、論理的に分割されることがあり、複数のオペレーティング・システムがグリッド計算のために構成されることがある。ブロック８１０で図示されるように、アプリケーションの処理作業負荷は、タスクに分けられることがある。決定ブロック８１２で図示されるように、全てのＯＳが仮想メモリにアクセスできるかどうかが決定されることがある。ブロック８１４で図示されるように、いくつかのＯＳが仮想メモリにアクセスできない場合には、インタフェース・ノードが生成されることがある。
【０１５４】
全ての選ばれたＯＳが仮想メモリにアクセスできる場合には、ブロック８１６で図示されるように、ＯＳは、全てのＯＳが仮想メモリ中の同じデータを利用することができるようにページインおよびページアウト（Ｐ／Ｉ−Ｐ／Ｏ）機能を要求することができ、仮想メモリがこの機能を提供することができる。決定ブロック８１８で図示されるように、ノードまたはＶＩＯＳが故障を起こしているかどうかが決定されることがある。ノードまたはＶＩＯＳが故障を起こしている場合には、ブロック８２０で図示されるように、このノードまたはＶＩＯＳは、切り離されることがあり、このプロセスは終わることがある。また、故障がない場合には、プロセスは、アプリケーションが終了するまで続くことがあり、このプロセスは終わることがある。
【０１５５】
図９を参照すると、異なるサイズを持つデータのブロックを格納する方法を示す流れ図９００が開示されている。ブロック９０２で図示されるように、ＶＩＯＳは、仮想メモリのようなページング・デバイス中に格納されるべきデータを受け取ることができる。決定ブロック９０４で図示されるように、データが標準ブロック・サイズであるかどうかが決定されることがある。データが標準ブロック・サイズである場合には、ブロック９１０で図示されるように、そのブロックはブロック記憶デバイスに送られることがあり、それでプロセスは終わることがある。
【０１５６】
決定ブロック９０４で、データが標準サイズでない場合には、ブロック９０６で図示されるように、データは、その宛先に従ってソートされることがある。ブロック９０８で図示されるように、ソート済みデータは、ブロックを所定の容量まで満たそうとしてページまたはブロックで連結され、または配置されることがある。しかし、タイミングの制約があるか、またはページが所定の時間の間部分的に満たされている場合には、ページは、満たされることなしにメモリに送られることがある。ブロック９１０で図示されるように、ブロックは、ブロック記憶デバイスに送られることがあり、その後で、プロセスは終わることがある。
【０１５７】
図１０を参照すると、非標準データ・サイズを持つデータのブロックを取り出す方法を示す流れ図１０００が開示されている。ブロック１００２で図示されるように、データはブロック・ストレージから取り出されることがある。決定ブロック１００４で図示されるように、ブロックが同質であるかどうか、またはブロックが、異なる位置に向けられたデータ・セグメントを持っているかどうかが決定されることがある。
【０１５８】
ブロックが同質である場合には、ブロック１００８で図示されるように、セグメントは宛先ノードに送られることがあり、プロセスは終わることがある。決定ブロック１００４で、ブロックが同質でない場合には、ブロック１００６で図示されるように、データのブロックは宛先標識に従ってパーズされることがあり、ブロック１００８で図示されるようにデータは宛先ノードに送られることがある。その後で、このプロセスは終わることがある。
【０１５９】
実施形態は、完全ハードウェア実施形態、完全ソフトウェア実施形態、またはハードウェア要素とソフトウェア要素の両方を含む実施形態の形をとることがある。ソフトウェアで実現される実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むことがあるが、これらに限定されない。
【０１６０】
さらに、実施形態は、コンピュータまたは任意の命令実行システムで、またはこれらに関連して使用するためのプログラム・コードを与えるコンピュータ使用可能またはコンピュータ読取り可能媒体からアクセスすることができるコンピュータ・プログラム製品の形をとることがある。この説明の目的のために、コンピュータ使用可能またはコンピュータ読取り可能媒体は、命令実行システム、装置またはデバイスで、またはこれらに関連して使用するためのプログラムを含み、格納し、通信し、伝播し、移送することができる任意の装置であることがある。
【０１６１】
媒体は、電子、磁気、光、電磁、赤外、または半導体システム（または装置もしくはデバイス）または伝播媒体であることがある。コンピュータ読取り可能媒体の例には、半導体または固体メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、剛体磁気ディスク、および光ディスクがある。光ディスクの現在の例には、コンパクト・ディスク−読出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−読出し／書込み（ＣＤ−Ｒ／Ｗ）、およびＤＶＤがある。
【０１６２】
プログラム・コードの格納または実行あるいはその両方に適したデータ処理システムには、システム・バスを介してメモリ要素に直接または間接に結合された少なくとも１つのプロセッサがある可能性がある。メモリ要素は、プログラム・コードの実際の実行中に使用される局所メモリ、大容量ストレージ、およびキャッシュ・メモリを含むことがあり、キャッシュ・メモリは、実行中にコードが大容量ストレージから取り出されなければならい回数を減らすために、少なくとも何かのプログラム・コードの一時ストレージを実現する。
【０１６３】
入力／出力またはＩ／Ｏデバイス（キーボード、表示装置、位置決めデバイスなどを含むがこれらに限定されない）は、直接か介在Ｉ／Ｏ制御装置を介してかのどちらかでシステムに結合されることがある。ネットワーク・アダプタは、また、システムに結合されて、データ処理システムが、介在する専用または公衆ネットワークを介して、他のデータ処理システムまたは遠隔プリンタまたは記憶デバイスに結合されるようにすることがある。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、現在利用可能な型のネットワーク・アダプタのほんの少数である。
【０１６４】
この開示は、図示および説明の目的のために示されたが、網羅的であるまたは限定する意図でない。多くの修正物または変形物が当業者には明らかになるであろう。実施形態は、原理および実際的な応用を説明し、さらに、意図された特定の使用に適しているような様々な修正物を含む様々な実施形態の開示を当業者が理解することができるようにするために、選ばれ説明された。
【図１】
2011523135.tif 000003
【図２】
2011523135.tif 000004
【図３】
2011523135.tif 000005
【図４】
2011523135.tif 000006
【図５】
2011523135.tif 000007
【図６】
2011523135.tif 000008
【図７】
2011523135.tif 000009
【図８】
2011523135.tif 000010
【図９】
2011523135.tif 000011
【図１０】
2011523135.tif 000012
【国際調査報告】
2011523135.tif 000013
2011523135.tif 000014