多数のコンピューティングプラットフォームにおけるOSにとらわれない資源共有
【課題】複数のコンピューティングプラットフォームで資源を共有するための方法、装置、および、システムを提供する。
【解決手段】各プラットフォームに設けられたファームウェアは、オペレーティングシステムの実行時に利用可能なようにロードされる。共有資源は、プラットフォームで動作するオペレーティングシステムに対しローカル資源として示され、実際には、それらは通常、他のプラットフォームによりホストされる。オペレーティング資源アクセス要求は、要求するプラットフォームにより受信され、資源アクセス要求にサービスを提供するために用いられるターゲット資源を実際にホストする他のプラットフォームにルート変更して送られる。グローバル資源マップは、適切なホストプラットフォームを決定する目的で用いられる。プラットフォーム間の通信は、バンド外(OOB)通信チャネルまたはネットワークを介し可能になる。OOBチャネルを介したデータのルート変更を実現するべく、隠し実行モードが実行される。それによって、本発明の方法は、プラットフォームで動作するオペレーティングシステムに対し、トランスペアレントに実行される。共有資源は、記憶、入力、および、ビデオ装置を含む。本発明の方法は、KVM資源、および、共有ディスク記憶をサポートする目的で使用することができる。
【解決手段】各プラットフォームに設けられたファームウェアは、オペレーティングシステムの実行時に利用可能なようにロードされる。共有資源は、プラットフォームで動作するオペレーティングシステムに対しローカル資源として示され、実際には、それらは通常、他のプラットフォームによりホストされる。オペレーティング資源アクセス要求は、要求するプラットフォームにより受信され、資源アクセス要求にサービスを提供するために用いられるターゲット資源を実際にホストする他のプラットフォームにルート変更して送られる。グローバル資源マップは、適切なホストプラットフォームを決定する目的で用いられる。プラットフォーム間の通信は、バンド外(OOB)通信チャネルまたはネットワークを介し可能になる。OOBチャネルを介したデータのルート変更を実現するべく、隠し実行モードが実行される。それによって、本発明の方法は、プラットフォームで動作するオペレーティングシステムに対し、トランスペアレントに実行される。共有資源は、記憶、入力、および、ビデオ装置を含む。本発明の方法は、KVM資源、および、共有ディスク記憶をサポートする目的で使用することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブレードサーバなどのクラスタ化コンピューティング環境、より詳しくは、これに限定しないが、ノード全体で共有できるグローバル資源を生成すべく、個別のプラットフォーム(ノード)によりホストされる資源を共有する技術に関する。
【背景技術】
【0002】
情報技術(IT)管理者および情報統括責任者は、能力を低下させることなく資本経費および営業費を削減しなければならないという強いプレッシャーにさらされており、IT管理は、より効果的にインフラ資源を利用する計算資源を提供する必要に迫られている。この目的を満たすべく、サーバの利用をいかに効率的に管理するか、いかに少ないスタッフでIT業務をこなすか、床面積をいかに効率的に利用するか、また、電力問題をどう取り扱うかといった課題が日々取り上げられている。
【0003】
一般的に、企業のIT(情報技術)インフラは、コンピュータサーバに集中し、サーバは、さまざまなタイプのネットワーク、例えば、プライベートローカルエリアネットワーク(LAN)、および、公私のワイドエリアネットワーク(WAN)を介し互いに接続されている。サーバは、さまざまなアプリケーションを分散させ、かつ、データ記憶および処理プロセスを管理する目的で使用される。このようなサーバは、通常、スタンドアロンサーバ、および/または、4U、2U、および、1Uなどの高密度ラックマウントサーバを含む。
【0004】
近年、過去にないサーバ密度および経済スケーラビリティを提供する新規のサーバ構成が導入されている。このサーバ構成は、「ブレードサーバ」として知られている。ブレードサーバは、共通のシャーシ内に配置された複数の密接した「サーバブレード」(ブレード)を用いることにより、高密度なコンピュータ機能を供給する。各ブレードは、1つ、または、それ以上のプロセッサ、メモリ、ネットワーク接続、および、ディスク記憶装置を含む完全なコンピューティングプラットフォームを単一のシステムボードに一体化して提供する。一方、電源およびファンなどの他の構成要素は、所定のシャーシおよび/またはラック内のブレード間で共有される。これによって、従来のラックマウントサーバに比べ、資本設備費用の大幅な削減が可能になる。
【0005】
一般的に、ブレードサーバは、2つの市場をターゲットにしている。一方は、個別のブレードが個別のタスクを処理する高密度サーバ環境、他方は、スケーラブルコンピュータクラスタ環境である。スケーラブルコンピュータクラスタ(SCC)は、2つまたはそれ以上のコンピュータシステム群であり、コンピュータインテンシブなタスクを実行するべく協働するよう構成されたコンピューティングノードとしても知られている。コンピュータのタスクを実行するべく協働する多数のノードを構成することにより、単一のシステムで実行した場合よりタスクを素早く計算できる。理論上は、タスクに適用されるノードが多いほど、タスクの計算は速くなる。しかし実際には、タスクを完了するために活用できるノード数は、使用するアプリケーションに依存する。
【0006】
一般的なSCCは、Linuxオペレーティングシステムおよびクラスタインフラソフトウェアを稼動させるインテルのサーバを用いて構築される。前記サーバは、市販(COTS)サーバとも言われ、ネットワークを介し接続されることにより、クラスタを形成する。1つのSCCは、通常、コンピュータインテンシブなタスクの実行時に有効な10から100のサーバがどこかに必要である。ブレードサーバなら、このような多数のサーバを1つの場所に集めてクラスタを形成するという要求に完璧に応えることができる。ブレードサーバのシャーシ設計およびアーキテクチャは、非常に大きなコンピュータの馬力を単一の場所に提供することができる。さらに、ブレードサーバアーキテクチャのビルトインネットワーキングおよびスイッチング能力は、ブレードを個別に追加または除去することができ、所定のタスクの最適なスケーリングを実現する。このような柔軟性をもったサーバベースのSCCを用い、スーパーコンピュータのようなコンピュータタスクを実行する他のインフラの費用効果的な変形例を提供できる。
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述のように、ブレードサーバにおける各サーバは、フルプラットフォーム機能を実現し、その結果、サーバにおいて、ブレードが個別に動作できるようになる。しかしながら、各ブレードにとって利用可能な資源は、そのブレードがもつ資源に限られるため、多くの場合、資源は効率的に利用されない。現状のアーキテクチャでは、サーバと広範囲にわたる資源とを効率的に共有できるスキームは確立されていない。
【課題を解決するための手段】
【0008】
前述した側面および本発明の多くの効果は、添付の図面を参照しながら以下の詳細を読むことにより容易に理解されることであろう。なお、特に明記しない限り、全図面を通じて同様の要素には同様の参照符号を付して示す。
【0009】
以下、ブレードサーバ環境のような、クラスタ化プラットフォーム環境全体で資源を共有化するための方法およびコンピュータ構成要素の実施例を説明する。以下の説明において、本発明の実施例を完全に理解することを目的として数多くの具体的な詳細が記載されている。しかしながら、1つまたはそれ以上の具体的な詳細の説明がなくとも、または、他の方法、構成要素、材料によっても本発明が実行可能であることは、当業者にとって明らかである。また、本発明の態様を不明確にしないよう、公知の構造、材料、または、オペレーションの詳細な説明は省略する。
【0010】
本明細書を通じて使用される「一実施例」という語句は、特定の機能、構造、または、実施例と関連して記述される特徴が、本発明の少なくとも1つの実施例に含まれることを意味する。したがって、本発明を通じて随所に使用される「一実施例」という語句は、必ずしも同じ実施例を指すものではない。さらに、特定の機能、構造、または、特徴は、1つまたはそれ以上の実施例において適切な形で組み合わされてよい。
【発明の効果】
【0011】
本発明の態様によれば、個別のプラットフォームによりホストされる資源が他のプラットフォームからもアクセス可能になる、クラスタ化プラットフォーム環境全体で資源を共有化する技術が開示される。この技術は、OSとの連動を必要とせずに「ビハインドザシーン」アクセスメカニズムを提供するファームウェアベースの機能を用いる。実際には、資源共有およびアクセス操作は、ブレード上で動作するオペレーティングシステムに対し完全にトランスペアレントであり、オペレーティングシステムは、独立している。したがって、本願明細書において開示される新規な技術によってもたらされる機能は、既存および将来の分散型プラットフォーム環境で使用でき、使用に当たり、オペレーティングシステムをその環境向けに変更する必要がない。
【0012】
一態様によれば、資源共有メカニズムは、グローバル資源を形成するよう集結された資源を公開しているいくつかのプラットフォームにより実現できる。各プラットフォームは、オペレーティングシステムのロード(プレブート)前、および、オペレーティングシステムの実行と同時に稼動する一組のファームウェアをそれぞれ用いる。一実施例において、実行時の配備は、システムマネジメントモード(SMM)として知られる非表示実行モードによって容易になる。前記システムマネジメントモード(SMM)は、周期的なシステムマネジメントインターラプト(SMI)を受信しかつそれに応答する能力を有するので、資源共有を実現し、かつ、メカニズムを実行するよう設定されたファームウェアSMMコードにアクセス情報をトラスペアレントに伝えることができるようになる。SMM資源マネジメントコードは、情報およびメッセージを、他のノードに、アウトオブバンドネットワーク(OOB)、または、通信チャネルを介し、オペレーションシステムに対しトランスペアレントに伝える。
【発明を実施するための最良の形態】
【0013】
説明の便宜上、本発明のいくつかの実施例は、ブレードサーバ環境として以下に説明される。概要としては、本発明の実施例に従う資源共有スキームが通常実行できる典型的なブレードサーバ構成要素およびシステムが図1A−Cおよび2に示される。典型的な構成の下では、複数のブレード102に電力および通信機能を提供する目的で、ラックマウントシャーシ100が用いられる。各ブレード102は、それぞれ対応するスロットを占有する(すべてのスロットがシャーシで占有される必要はない点に注意)。または、1つまたはそれ以上のシャーシ100が図1Cに示されるブレードサーバラック103内に設置されてもよい。各ブレードは、1つまたはそれ以上のマッチング・コネクタを介し設置されると同時に、インターフェース平面104(すなわちバックプレーンまたはミッドプレーン)に結合される。一般的に、インターフェース平面は、ブレードそれぞれのための複数のマッチングコネクタを含み、電力および通信信号をブレードに供給することもできる。現実行下では、多数のインターフェース平面が「ホットスワッピング」機能、すなわち、シャーシ全体の電源を入れたままで、データ信号をバッファリングすることもなく、ブレードを即座に追加または除去する(ホットスワッピングする)ことができる機能を提供する。
【0014】
図1Aおよび1Bは、典型的なミッドプレーンインターフェース平面構成を示す。インターフェース平面104の後部は、1つまたはそれ以上の電源106に接続される。多くの場合、電源は冗長化およびホットスワッピングが可能である。適切な電源プレーンおよびコンディショニング回路に結合されることにより、1つの電源が故障しても継続して動作することができる。任意の構成において、電源アレイを用いてブレードラック全体に電力を供給してもよく、この場合、電源とシャーシとが一対一の関係になくてもよい。また、複数の冷却ファン108を用いてシャーシを介し空気を引き込み、サーバブレードを冷却する。
【0015】
ブレードサーバすべてに要求される重要な特徴として、他のITインフラとも外部通信する能力が挙げられる。一般的に、外部通信は、1つまたはそれ以上のネットワーク接続カード110を介して行われ、ネットワーク接続カードは、それぞれインターフェース平面104に接続される。また、1つのネットワーク接続カードは、複数のネットワークポート接続(例えば、RJ−45ポート)を含む1つの物理的インターフェースを有するか、または、ネットワークスイッチ、ハブ、または、ルータなどのネットワーク装置に直接接続されるよう設計された高密度コネクタを備えてもよい。
【0016】
ブレードサーバは、通常、ブレードの動作を個別に管理する何らかの管理インターフェースを提供する。これは、帯域外ネットワークまたは通信チャネルによって実現が容易になる。例えば、「プライベート」または「マネジメント」ネットワーク、および、適切なスイッチングを容易に実現するための1つまたはそれ以上のバスをインターフェース平面に組み込んでもよく、あるいは、プライベートネットワークは、強連結ネットワークケーブル配線、および、ネットワークを介し実行することもできる。前記スイッチングおよび他の、マネジメント機能は、任意でマネジメントカード112によって提供されてもよく、マネジメントカード112は、インターフェース平面の裏側または表側に結合される。さらに、また、マネジメントサーバを用いてブレード動作を管理してもよく、この場合、通信は、イーサネットなどの標準的なコンピュータネットワーク化インフラを介し処理される。
【0017】
図2を参照し、例示的なブレード200をさらに詳しく説明する。上述したように、各ブレードは、サーバタイプの機能を実行するよう構成された独立したコンピューティングプラットフォーム、すなわち、「カードのサーバ」を備える。したがって、各ブレードは、適切な集積回路(IC)を結合するための内部配線(すなわちバス)を提供する主回路基板201を含む従来のサーバに共通する構成要素と、主回路基板に取り付けられた他の構成要素とを含む。これらの構成要素は、システムメモリ204(DDR RAMなど)、キャッシュメモリ206(SDRAMなど)、および、ファームウェア記憶装置208(フラッシュメモリなど)に結合された1つ、または、それ以上のプロセッサ202を含む。従来のネットワーク通信機能、例えば、ブレードと外部ネットワークインフラとの間の通信をサポートするための「公衆」NIC(ネットワークインターフェース)チップ210が設けられる。例示された他の構成要素は、ステータスLED212、RJ−45コンソールポート214、および、インターフェース平面コネクタ216を含む。付加的な構成要素は、さまざまな受動構成要素(抵抗器、コンデンサなど)、電力調整部品、および、周辺装置コネクタを含む。
【0018】
通常、各ブレード200は、オンボード記憶装置を提供することもでき、これは、1つまたはそれ以上のビルトイン・ディスクコントローラ、および、1つまたはそれ以上のディスクドライブ218が結合される対応するコネクタを介し実現が容易になる。例えば、典型的なディスクコントローラは、Ultra ATAコントローラ、および、SCSIコントローラなどを含む。また、大量のデータを格納するためにネットワーク接続ストレージ(NAS)機器が用いられるときは、ディスクドライブは、ブレードとは別に、同じまたは個別のケースのようなラックに収容されてもよい。
【0019】
本発明の態様によれば、ブレードと、任意の専用管理コンポーネントとの間のバンド外通信のための機能が提供される。ここで使用されるように、バンド外通信チャネルは、OSに対しトランスペアレントなデバイス間通信をサポートする通信手段であってオペレーティングシステムと協働せずにブレード間通信を可能にする手段を含む。通常、さまざまなアプローチによりOOBチャネルを提供することができる。これらのアプローチは、SMBUS標準(www.smbus.org)を実行するシステムマネジメントバス、VLAN−802.1Qなどの専用プライベートまたはマネジメントネットワーク、あるいは、例えばRS−485シリアル通信標準を用いるシリアル通信スキームなどの使用を含むが、これに限定されない。また、このような通信機能をサポートする1つまたはそれ以上の適切なICがOOBチャネルチップ220で示されるように、主回路基板201に取り付けられる。同時に、インターフェース平面104は、選択されたOOBスキームを支持するための対応するバスまたはビルトインネットワークトレースを含んでもよい。また、有線ネットワークスキーム(イーサネットなど)の場合、適切なネットワークケーブル配線およびネットワーキングデバイスをシャーシ100の内部または外部に配置させてもよい。
【0020】
前述のように、本発明の実施例では、ブレードサーバノード全体で資源を共有化できるようにする資源共有セットアップおよびアクセス機構を実現するためのファームウェアベースのスキームを用いる。特に、資源管理ファームウェアコードが各ブレードの初期化の間にロードされ、OS実行中のアクセスを可能にする。同様に、初期化の間に資源情報が収集され、グローバル資源情報が確立される。このグローバル資源情報に基づき、各ブレードへの適切なグローバル資源アクセスが提供される。この情報は、グローバル資源が(オペレーションシステムの立場からは)ローカル資源として見えるよう、その初期化と同時にOSに伝えられる。OSの実行中、共有資源へのアクセスは、OSおよび/またはOSドライバと、資源アクセスマネジメントと協働する対応するファームウェアとの間のやりとりを介し処理され、このやりとりは、OOBチャネルを介し実現が容易になる。
【0021】
一実施例において、資源共有は、拡張ファームウェアインターフェース(EFI)(仕様およびその例は、http://developer.intel.com/technology/efiを参照)として知られる拡張ファームウェアフレームワークにより実現が容易になる。EFIは、プラットフォームファームウェアと、シュリンクラップオペレーションシステム、または、他のカスタムアプリケーション環境との間の抽象的なプログラマチックインターフェースを記述する公の産業仕様(現在のバージョン1.10は2003年1月7日リリース)である。EFIフレームワークにより、プラットフォームのBIOSデバイス(フラッシュメモリなど)に格納されたBIOSコードにより提供されるもの以上にBIOS機能を拡張できる。より詳しくは、EFIによって、主および二次フラッシュデバイス、オプションのROM、多種の持続性記憶装置(ハードディスク、CD ROMなど)を含むさまざまな資源から、ファームウェアがファームウェアモジュールおよびドライバ形式で、コンピュータネットワーク上でもロードできるようになる。
【0022】
図3は、コールドブート(パワーオフ/オン、リセット)に応答してフレームワーク下のプラットフォームにより実行されるオペレーションを示すよう用いられるイベントシーケンス/アーキテクチャダイアグラムを示す。プロセスは、プレEFI初期化環境(PEI)位相、ドライバ実行環境(DXE)位相、ブートデバイス選択(BDS)位相、過渡システムロード(TSL)位相、および、オペレーティングシステム実行時(RT)位相を含むいくつかの位相に論理的に分割される。位相は、積層され、OSおよびプラットフォームのための適切な実行時環境を提供する。
【0023】
PEI位相は、プロセッサ(CPU)、チップセット、および、マザーボードの特定の初期設定ルーチンをロードしかつ起動させる標準化された方法を提供する。PEI位相は、位相を連続させるための安定した基盤を提供するのに十分なシステムを初期化する役割を担う。CPU、チップセット、および、メインボード(すなわち、マザーボード)を含むプラットフォームのコア構成要素の初期化は、PEI位相の間に実行される。この位相は、「初期の初期化」とも呼ばれる位相である。この位相の間に実行される典型的なオペレーションは、POST(パワーオンセルフテスト)オペレーションと、プラットフォーム資源の発見を含む。特に、PEI位相では、メモリを見つけ、DXE位相に伝えられる資源マップを準備する。PEI位相の終端におけるシステムの状態は、ハンドオフブロック(HOB)と呼ばれる場所に依存しないデータ構造のリストによりDXE位相に伝えられる。
【0024】
DXE位相は、システムの大半が初期化される位相である。DXE位相は、DXEコア300、DXEディスパッチャ302、および、一組のDEXドライバ304を含むいくつかの構成要素によって実現が容易になる。DXEコア300は、一組のブートサービス306、実行時サービス308、および、DXEサービス310を生成する。DXEディスパッチャ302は、DXEドライバ304を発見し、かつ、正しい順序で実行する役割を担う。DXEドライバ304は、コンソールおよびブートデバイスに対しソフトウェアを抽象化すると共に、プロセッサ、チップセット、および、プラットフォーム構成要素を初期化する役割を担う。これらの構成要素は、プラットフォームを初期化し、かつ、オペレーティングシステムをブートするために必要なサービスを提供するべく協働する。また、DXEと、ブートデバイス選択位相とが協働し、コンソールを確立し、かつ、オペレーティングシステムのブートを試みる。オペレーティングシステムがそのブートプロセスの開始(すなわちBDS位相の開始)に成功すると、DXE位相は終了する。DXEコアによって提供された実行時サービス、および、選択DXEサービス、および、実行時DXEドライバによって提供された選択サービスだけがOS実行時環境に存続することを許容される。DXEの結果は、完全に形成されたEFIインターフェースを表す。
【0025】
DXEコードは、CPU、チップセット、または、プラットフォームに依存しない、完全な携帯型に設計される。これは、いくつかの機能で設計することにより、達成される。第1に、その初期状態では、DXEコアだけがHOBリストに依存する。つまり、DXEコアは、前の位相からのどのサービスにも依存しないので、前の位相すべてをいったんアンロードして、HOBリストをDXEコアに渡すことができる。第2に、DXEコアは、いかなるハードコード化アドレスも含まない。さらに、DXEコアは、物理的メモリ内のどこにでもロードすることができ、物理メモリまたはファームウェアセグメントがプロフェッサの物理アドレス空間内のどこに位置しようと、正しく機能することができる。第3に、DXEコアは、CPU特定、チップセット特定、または、プラットフォーム特定情報のいずれも含まない。その代わりに、DXEコアは、一組のアーキテクチャのプロトコルインターフェースを介し、システムハードウェアから抽出される。これらアーキテクチャのプロトコルインターフェースは、DXEディスパッチャ302により起動されるDXEドライバ304により生成される。
【0026】
DXEコアは、図4に示すような、EFIシステムテーブル400と、それに付随するブートサービス306および実行時サービス308のセットとを生成する。また、DXEコアは、ハンドルデータベース402を維持する。ハンドルデータベースは、1つ、または、それ以上のハンドルのリストを含み、ハンドルは、それぞれのプロトコル404にマップする1つ、または、それ以上の一意的なプロトコルGUID(グローバル一意識別子)
【0027】
のリストである。プロトコルは、一組のサービスのためのソフトウェア抽象化である。いくつかのプロトコルは、入出力デバイスを抽象し、他のプロトコルは、共通の一組のシステムサービスを抽象する。プロトコルは、通常、一組のAPlと、いくつかのデータフィールドを含む。プロトコルごとにGUIDによって名前がつけられ、DXEコアは、プロトコルがハンドルデータベース内に登録されることができるようにするサービスを生成する。DXEディスパッチャがDXEドライバを実行すると、プラットフォームの具体的な詳細からDXEコアを抽出するために使用されるアーキテクチャのプロトコルを含むハンドルデータベースにさらなるプロトコルが追加されてもよい。
【0028】
ブートサービスは、DXEおよびBDS位相の間に使用される一組のサービスを含む。これらのサービスは、特に、メモリサービス、プロトコルハンドラサービス、および、ドライバサポートサービスを含む。メモリサービスは、バイト境界でメモリページおよびメモリプールを割り当て/解除するためのサービスを提供する。また、メモリサービスは、プラットフォームにおける現在の物理メモリの使用すべてのマップを検索するためのサービスを提供する。プロトコルハンドラサービスは、ハンドルデータベースに/からハンドルを追加/除去するためのサービスを提供する。また、プロトコルハンドラサービスは、ハンドルデータベースのハンドルに/からプロトコルを追加/除去するためのサービスを提供する。追加サービスは、あらゆる構成要素がハンドルデータベース内でハンドルを探すことができ、かつ、ハンドルデータベース内でプロトコルの開始および終了ができるようにするサービスである。サポートサービスは、プラットフォーム内でドライバとデバイスとを接続および切断するサービスを提供する。これらのサービスは、BDS位相で用いられることにより、すべてのドライバがすべてのデバイスに接続されるか、または、最小数のドライバだけが、コンソールを確立しかつオペレーティングシステムをブートするため(すなわちすばやいブート機構をサポートするため)に必要とされるデバイスに接続される。
【0029】
ブートサービスとは対照的に、実行時サービスは、プレブートとOS実行時動作の間のどちらでも利用できる。本願明細書において開示される実施例により導入される1つの実行時サービスは、変数サービスである。以下に詳細に説明するように、変数サービスは、揮発性および不揮発性記憶装置から環境変数を探索し、追加し、かつ、除去するためのサービスを提供する。
【0030】
DXEサービステーブルは、プレブートの間だけ利用可能な第1のDXEサービス406Aセットと、プレブート間およびOS実行時間の両方で利用可能な第2のDXEサービスセットとに対応するデータを含む。プレブートだけのサービスは、プラットフォーム内のI/O資源、メモリマップされたI/O資源、および、システムメモリ資源を管理するためのサービスを提供するグローバルコヒーレンスドメインサービスを含む。また、プレブートだけのサービスは、DXEディスパッチャによりディスパッチされるDXEドライバを管理するためのサービスを提供するDXEサービスも含む。
【0031】
ブートサービス306、実行時サービス308、および、DXEサービス310のそれぞれにより提供されるサービスは、API312、314、および、316の各セットを介しアクセスされる。APIは、連続的にロードされる構成要素がDXEコアにより提供される選択されたサービスを導入できるようにする抽象インターフェースを提供する。
【0032】
DXEコア300が初期化された後、制御は、DXEディスパッチャ302へと移る。DXEディスパッチャは、EFIフレームワーク下でファームウェアがそこからロードされる論理記憶装置に対応するファームウェア容量内で見つけられるDXEドライバをロードしかつ起動する役割を担う。DXEディスパッチャは、HOBリストによって記述されたフレームウェア容量におけるドライバを探索する。実行を続けているうちに、他のファームウェア容量も見つかる可能性がある。そのときは、ディスパッチャは、そこで同様にドライバを探す。
【0033】
ここにDXEドライバの2つのサブクラスがある。第1のサブクラスは、DXE位相内でごく初期に実行するDXEドライバを含む。これらDXEドライバの実行順序は、アプリオリファイルの存在および内容と、依存関係の表示の評価とに基づく。これら初期のDXEドライバは、通常、プロセッサ、チップセット、および、プラットフォーム初期化コードを含むこともある。また、これら初期のドライバは、ブートサービスおよび実行時サービス完全なものとするようDXEコアに要求されるアーキテクチャのプロトコルを生成することもある。
【0034】
DXEドライバの第2のクラスは、EFI1.10ドライバモデルに準拠するものである。これらは、DXEディスパッチャにより実行されるときは、ハードウェアの初期化を実行しない。その代わり、ハンドルデータベース内にドライババインディングプロトコルインターフェースを登録する。ドライババインディングプロトコルのセットは、コンソールを確立し、かつ、ブートデバイスへのアクセスを提供するよう要求されるデバイスにドライバを接続すべくBDS位相で使用される。EFI1.10ドライバモデルに準拠するDXEドライバは、コンソールデバイスおよびブートデバイスのソフトウェア抽象化を明確に依頼された場合、最終的にはそれを提供する。
【0035】
DXEドライバのどれでもブートサービスおよび実行時サービスを使ってそれらの機能を実行することができる。しかしながら、初期のDXEドライバは、アーキテクチャのプロトコルすべての登録がすんでいるわけではないので、それらを実行してもすべてのサービスが利用できるわけではないことを知っておく必要がある。DXEドライバは、依存関係の表示を用い、実行前に必要とするサービスおよびプロトコルインターフェースが利用可能であることを保証しなければならない。
【0036】
EFI1.10ドライバモデルに準拠するDXEドライバには前記のような懸念は不要である。これらのドライバは、実行時に、ドライババインディングプロトコルをハンドルデータベースにただ登録すればよい。このオペレーションは、アーキテクチャのプロトコルを使用しなくても実行できる。ドライババインディングプロトコルの登録と関連し、DXEドライバは、インストールコンフィギュレーションテーブル関数を用い、APIを「公開」してもよい。この公開されたドライバは、API318で表される。EFI下では、APIの公開により、他のファームウェア構成要素によりアクセスするためのAPIが公にされる。APIは、DXEドライバがそれぞれの寿命の間に対応するデバイス、バス、または、サービスのためのインターフェースを提供する。
【0037】
BDSアーキテクチャのプロトコルは、BDS位相間で実行する。BDSアーキテクチャのプロトコルは、プレブートサービス環境で実行するさまざまなアプリケーションを見つけ、ロードする。このようなアプリケーションは、従来のOSブートローダ、または、最終的なOSをロードする前にあるいはそれに代わって動作する拡張サービスを表すこともある。このような拡張プレブートサービスは、セットアップ設定、拡張診断、フラッシュアップデートサポート、OEM値追加、または、OSブートコードを含んでもよい。ブートディスパッチャ320は、ブートターゲット、例えば、システムによりブートされるOSの選択を可能にするよう、BDS位相間で用いられる。
【0038】
TSL位相間で、最終OSブートローダ322は、選択されたOSをロードするよう実行される。OSが一旦ロードされてしまえば、ブートサービス306、および、DXEサービス306AのようにAPI318を介しDXEドライバに接続して設けられた多くのサービスは必要なくなる。したがって、OS実行時の間にアクセスできる数の減ったAPIのセットは、図3のAPI316Aおよび318Aとして示される。
【0039】
本発明の原理の下で、OSにトランスペアレントなバンド外通信スキームが用いられることにより、さまざまなタイプの資源をサーバノード全体で共有することが可能になる。同時に、ファームウェアベースの構成要素(ファームウェアドライバおよびAPIなど)が用いられることにより、資源への低レベルのアクセス、および、OOBチャネルにおけるデータのルート変更が容易になる。このスキームは、ブレード群、個別のシャーシ、ラック、または、ラック群を含む多数のコンピューティングプラットフォーム全体で実行されてもよい。システム初期化の間、各プラットフォームに設けられたファームウェアは、OOBチャネル、適切な資源へのアクセス、および、データルート変更機構をセットアップするよう、ロードされかつ実行される。その後、各ブレードは、その共有資源に関する情報を、OOBを介しグローバル資源マネージャに伝送する。グローバル資源マネージャは、データを集め、「仮想」グローバル資源を構成する。グローバル資源記述子形式のグローバル資源構成データがブレードに返送されることにより、ブレードにグローバル資源の構成およびアクセス機構を通知する。その後、ドライバが構成され、グローバル資源へのアクセスをサポート持する。続いて、グローバル資源記述子が、OSロードの間にオペレーティングシステムに渡される。ここでは、仮想グローバル資源は、オペレーティングシステムにはローカルデバイスのように見え、OS実行時のオペレーションの間に、OSコードへの修正を必要とせずにローカルデバイスとして用いられる。プロセスの一実施例に従うフローチャート動作およびロジックが図5および7に示されており、それに対応するさまざまな構成要素間の動作およびやりとりは、図6、8A、および、8Bに示されている。
【0040】
図5によると、プロセスは、資源デバイスドライバおよびOOB通信フレームワークをセットアップするべく、各ブレードでいくつかの初期化オペレーションを実行することにより開始する。開始ブロック500で示すように、パワーオン、または、リセットに応答し、システムは、図3を参照して前述したように、プレブートシステム初期化オペレーションを実行する。まず、各ブレードのブートファームウェアデバイス(BFD)に格納されたファームウェアをロードして実行することにより、ブロック502における初期の初期化オペレーションが実行される。EFI下では、BFDは、システムをブートするためのファームウェアを格納するファームウェアデバイスを含む。例えば、サーバブレード200のBFDは、ファームウェアデバイス208を含む。
【0041】
続いてブロック502では、プロセッサ202がリセットベクトルを介しBFDのブートブロックのベースアドレスに実行をジャンプさせるリセットスタブコードを実行する。ブートブロックは、初期の初期化を実行するためのファームウェア命令を含み、かつ、プロセッサに202よって実行されることにより、CPU、チップセット、および、マザーボードを初期化する。(ウォームブート(リセット)の間は、初期の初期化は実行されないか、または、限られた方式で実行されることに注意。)次に、DXE位相を導く、EFIコアに対応するファームウェア命令が実行される。DXEコア初期化の間に、図3および4を参照して上述したように変数サービスがセットアップされる。DXEコアが初期化されると、DXEディスパッチャ302は、DXEドライバ304をロードし始める。各DXEドライバは、システム構成要素に対応し、その構成要素に直接アクセスするためのインターフェースを提供する。DXEドライバは、OOB通信を容易にするよう続いて用いられるOOBモニタドライバに含まれる。
【0042】
次に、ブロック504で、OOBモニタドライバは、各ブレードの保護された領域にインストールされる。上述したように、オペレーティングシステムにより管理されるネットワーク通信と関わりなく動作するバンド外通信チャネルまたはネットワークが、ブレード間通信を容易にする目的でOSに対しトランスペアレントに用いられる。
【0043】
前述のブロック502におけるシステム初期化オペレーションの間に、システムメモリ204の一部がシステムを管理する目的で用いられるよう、セットアップされる。メモリのこの部分は、SMRAM600と呼ばれ(図6参照)、続いてロードされるオペレーティングシステムからは見えないようになっている。
【0044】
ファームウェアのロードと共に、ファームウェアに格納されたSMM OOB通信コード602がSMRAM600にロードされ、OOB通信を処理するための対応するOOB通信SMMハンドラ604がセットアップされる。SMMハンドラは、一種の割込みハンドラであって、システム管理割込み(SMI)に応答して起動する。次に、システムプロセッサのSMIピンを介し、SMI割込みがアサートされる。SMI割込みに応答し、プロセッサは、その時のコンテキスト(すなわち、その時の実行モード、スタック、および、レジスタ情報などを含む現在のオペレーションに関する情報)を格納し、かつ、その実行モードをそのシステム管理モードに切り替える。その後SMMハンドラは、それらがSMIイベントをサービスするのに適切なハンドラかどうかを決定するべく順次ディスパッチされる。この決定は、どのハンドラが適切であるかを決定するにあたりほとんど待ち時間がないように、SMMハンドラコードにおいて非常に早期になされる。ハンドラが識別されると、SMIイベントのサービスを終了させることができる。SMIイベントのサービスが終了すると、RSM(再開)命令が発せられ、予め保存されたコンテキストデータを用い、プロセッサはそれ以前の実行モードに戻る。最終的な結果としては、SMMオペレーションは、完全にオペレーティングシステムに対し、トランスペアレントになる。
【0045】
図5のフローチャートに戻り、ブレードによってホストされる1つまたはそれ以上の共有可能な資源が見つかるかどうかの決定が決定ブロック506でなされる。一般的に、共有資源は、共有アクセスを可能にするブレード構成要素またはデバイスである。このような構成要素およびデバイスは、固定記憶装置、可換型媒体装置、入力装置(キーボード、マウスなど)、ビデオデバイス、オーディオデバイス、揮発性メモリ(すなわちシステムRAM)、および、不揮発性メモリなどを含むが、これに限定されない。
【0046】
決定ブロック506への返事がYESの場合、ロジックは、発見される共有可能な資源それぞれに対する開始および終了ループブロック508および509それぞれの範囲内で定義されるループ操作の実行に進む。これは、ブロック510における操作を含み、ここで、共有資源を記述するためのデバイス経路が形成され、構成パラメータが収集される。デバイス経路は、外部のユーザに、資源にアクセスするための手段を提供する。構成パラメータは、以下に詳細に説明するグローバル資源を構築するために使用される。
【0047】
ブロック510のオペレーションが実行された後、図示された実施例において、デバイス経路および資源構成情報が、ブロック512におけるOOB通信チャネル610を介し、グローバル資源マネージャ608に伝送されるかまたは同報される。グルーバル資源マネージャは、通常、ブレードの1つ、または、マネジメントカード112などの既存の構成要素によりホストされることもできる。後述するように、一実施例において、複数のローカルグローバル資源マネージャが用いられる。ここでは、グローバル資源マネジメントは、単一のマネージャを用いるよりはむしろ、集合的なプロセスを通じて処理される。グローバル資源マネージャをホストする構成要素のアドレスが公知のアプリオリである場合、その構成要素への選択的な伝送が用いられる。アドレスが知られていない場合、まず、OOBチャネルを介しメッセージが同報され、ホスト構成要素の位置が識別される。
【0048】
前述したようにSMMが隠された実行モード下でのOOB通信は、以下の方法で実行される。まず、ブレード間通信が実行されるブレードにおけるオプロセッサのオペレーティングモードをSMMに切り替える必要がある。したがって、図6のBLADE1のように、プロセッサをSMMに切り替える目的でSMIが生成される。これは、2つの手段のうちの1つにより実行される。1つは、プロセッサSMIピンのアサーション(すなわち、ハードウェアによる生成)、もう1つは、SMI命令を発することによるもの(すなわち、ソフトウェアに基づく生成)である。
【0049】
一実施例では、SMIピンのアサーションは、マネジメントバスなどに適切な信号を配置することにより生成できる。例えば、I2Cを用いてSMBUSが配備されると、バスラインの1つは、各ブレードプロセッサのSMIピンに、そのブレードコネクタを介し直結されてもよい。また、インターフェース平面が同様の結果を生じる個別の手段を提供するようにしてもよい。構成に基づき、すべてのSMIピンが共通に、単一のバスラインに結合されてもよいし、あるいは、バスは、それぞれのブレードに対し個別のSMIピンアサーションを可能にするよう構成されてもよい。さらに、インテル?製などの特定のネットワークインターフェースチップは、従来のネットワーク通信に使用される第1のMACアドレスに加え、「バックチャネル」として使用される第2のMACアドレスを提供する。さらにまた、これらNICは、ビルトインシステム管理機能を提供する。この機能により、第2のMACアドレスを参照する着信がNICによるSMI信号のアサートを可能にする。このスキームは、OOBチャネルが「公衆」ネットワーク(図示せず)として同じ配線上に配備されることを可能にする。
【0050】
一実施例では、OOBチャネルにアクセスするためにファームウェアドライバが用いられる。例えば、OOBチャネルがネットワークまたは直列の手段を介し実行されるとき、ネットワークまたはシリアルポートにアクセスするための適切なファームウェアドライバが提供される。このファームウェアドライバの構成は予め公知であってもよいので(したがってオペレーティングシステムとは独立している)、SMMハンドラは、ファームウェアドライバを介し、OOBチャネルに直接アクセスできる。また、I2Cのような専用マネジメントバスの場合、対応するファームウェアドライバを用いずにSMMハンドラへの直接アクセスが可能になるが、ファームウェアドライバを用いてもかまわない。
【0051】
SMIピンのアサーションに応答し、アサートされたプロセッサは、SMM実行モードに切り替わり、適切なハンドラ(例えば通信ハンドラ604)がディスパッチされるまで、OOB通信を容易にするべくそのSMMハンドラをディスパッチする。そして、OOB通信ネットワーク/チャネルオプションのそれぞれにおいて、ブレードプロセッサがSMMで動作中であるとき、OOB通信が実行され、それによって、通信は、それらのブレードで動作するオペレーティングシステムに対しトランスペアレントになる。
【0052】
ブロック514に従い、グローバル資源マネージャ608により共有デバイス経路および資源構成情報が受信され、同様に、他のブレードの共有デバイス経路および資源構成情報もグローバル資源マネージャにより受信される。
【0053】
本発明の一態様によれば、個々の資源が結合されることにより、グローバル資源を形成してよい。例えば、個別の記憶装置(ハードディスクおよびシステムRAMなど)により提供される記憶領域が集結し、1つまたはそれ以上の「仮想」記憶ボリュームを形成することもできる。これは、ブロック516における資源構成情報を結集させることにより一部実現できる。ハードディスク資源の場合、資源構成情報は、通常、デバイスのアサーションに使用される記憶ブロックの数、分割化情報、および、他の情報などの記憶容量を含んでよい。資源構成情報が収集された後、グローバル資源アクセス機構(例えばAPI)、および、グローバル資源記述子612が構築される。グローバル資源記述子は、資源へのアクセス方法を識別する情報を含み、かつ、資源の構成(グローバルおよび/またはローカルの観点から)を記述する。
【0054】
ブロック516のオペレーション終了後、グローバル資源記述子612は、ブロック518のOOBチャネルを介し、ラック内のアクティブノードに伝送される。この伝送は、ノード対ノードのOOB通信を用い、または、OOB同報通信を介し実行されてよい。グローバル資源記述子の受信に応答し、次の資源処理を導くブロック520におけるノードを受信することによりグローバル資源記述子は格納される。ブロック510、512、514、516、518、および、520のオペレーションは、共有可能なすべての資源が処理されるまで、発見されたそれぞれの資源ごとに同様のやり方で繰り返し実行される。
【0055】
一実施例によれば、共有資源へのアクセスは、ブロック522におけるそれらのグローバル資源APIを介し発見された共有資源にアクセスするよう構成された対応するファームウェアデバイスドライバにより提供される。特定の資源に適用されるときのこのアクセススキームの詳細は、以下に述べる。次のブロック524に示されるように、OSのロードを準備するために前述のように継続してプレブートプラットフォーム初期化オペレーションが行われる。
【0056】
ブロック526におけるOSロードの間に、発見された任意の共有資源に対応するグローバル資源記述子は、オペレーションシステムに渡される。OSに渡されるグローバル資源記述子は、ブロック516で作成されたものと同じであってもなくてもかまわない。本質的に、グローバル資源記述子は、それ自身のデバイスドライバを介しオペレーティングシステムが資源へのアクセスを設定できるようにするための情報を含む。例えば、単一の共有記憶ボリュームの場合、OSは、共有される個別の記憶装置の個別の記憶容量におよぶ記憶容量を有する「ローカル」記憶装置(または任意でネットワーク化された記憶装置)へのアクセスを有することを示す情報を受信する。多数の共有記憶ボリュームの場合は、それぞれの記憶容量情報は、それぞれのボリュームに対するOSに伝えられてよい。OSのロードの完了により、次のブロック528に示されるようなOS実行時オペレーションが導かれる。
【0057】
OSの実行中、グローバル資源は、オペレーティングシステムと、「低レベル」アクセスを共有資源に提供するよう構成されたファームウェア構成要素との組合せによりアクセスされる。最新のOS/ファームウェアアーキテクチャ下では、デバイスアクセススキームは、オペレーティングシステムベンダがそれぞれ個別のデバイスに特有のデバイスドライバの書き込みを必要としないよう、意図的に抽象化され、これらのさらなる明確なアクセスの詳細は、対応するファームウェアドライバにより提供される。このアーキテクチャの成果の1つは、オペレーティングシステムがハードウェアデバイスに直接アクセスしなくてもいいことである。このことは、さまざまな点で有利である。特に、オペレーティングシステムは、デバイスの特別な低レベルアクセス構成を知る必要がない。したがって、個々のデバイスの資源を結集させた「仮想」資源を「構築」でき、適切に構成されたファームウェアドライバを介しこのようなデバイスに対応するアクセスが抽象化されることにより、OSは、仮想資源が実際のローカルデバイスであるとみなすようになる。
【0058】
一実施例において、この抽象化されたアクセススキームは、図8Aおよび8Bに示されるような多層アーキテクチャとして構成される。各ブレードBLADE1およびBLADE2は、OSデバイスドライバ800−1および800−2と、マネジメント/アクセスドライバ802−1および802−2と、資源デバイスドライバ804−1および804−2と、OOB通信ハンドラ604−1および604−2とを含むアーキテクチャ構成要素のそれぞれのコピーを有する。
【0059】
図7は、一実施例に従う共有資源にアクセスするための例示的プロセスを示すフローチャートである。このプロセスは、開始ブロック700で示されるように、リクエスタからのアクセス要求により開始する。典型的なリクエスタは、プラットフォームのオペレーティングシステムで実行するアプリケーションであってもよい。このようなアプリケーションに対応する実行可能なコードは、図8Aおよび8Bにおける実行時(RT)アプリケーション(APP)806および808により示されるようなシステムメモリ204に通常格納される。例えば、実行時アプリケーション806が共有データ記憶資源へのアクセスを望んでいると仮定する。この例では、アクセス要求は、予め格納されたファイルのオープンに対応する。ファイルの場所(ドライブ指定、経路およびファイル名など)が提供されると、実行時アプリケーションは、まず、ファイルにアクセスするようオペレーティングシステム(810)に要求する。ドライブ指定は、ブレード1の資源1と、ブレード2の資源2とを含む複数のディスクドライブ218を備える仮想グローバル記憶資源に対しオペレーティングシステムにより予め割り当てられたドライブレターである。
【0060】
要求に応答し、オペレーティングシステム810は、ブロック702における記憶資源にアクセスするべくそのOSデバイスドライバ800−1を用いる。通常、OSデバイスドライバ800−1が資源ドライバ804−1と直接インターフェースして資源1にアクセスする。しかしながら、マネジメント/アクセスドライバ802−1が代わりにアクセスされる。このような変更を実現するためには、APIのようなインターフェース情報がOSロードの間にOSに伝えられ、それによって、OSは、対応する資源(例えば資源1)にアクセスする要求があるときはいつでも、マネジメント/アクセスドライバ802−1にアクセスするよう命じられる。
【0061】
どの共有資源がその要求にサービスを提供するかを決定するべく、適切な資源がアクセスできる特定のホストを識別するための機構が提供される。一実施例において、この機構は、グローバル資源マップにより実現が容易になる。図8aの実施例において、共通のグローバル資源マップのローカルコピー812−1、および、812−2は、ブレードBLADE1およびBLADE2のそれぞれに格納される。図8Bの実施例では、共有グローバル資源マップ812Aは、グローバル資源マネージャ608によりホストされる。グローバル資源マップは、特定の資源と、それら特定の資源によりホストされるグローバル資源の一部分とを一致させる。
【0062】
続いて図7のフローチャートのブロック704において、マネジメント/アクセスドライバがローカルグローバル資源マップ812を問い合せ、特定のアクセス要求下にある資源のホストを決定する。この資源および/またはこれのホストは、例示された「資源ターゲット」として知られ、BLADE2にホストされる資源2を含む。
【0063】
一旦資源ターゲットが識別されると、OOB通信オペレーションは、資源アクセス要求を資源ターゲットに送る。まず、要求するプラットフォーム(例えば802−1)におけるマネジメント/アクセスドライバは、SMIをアサートし、そのプラットフォームローカルOOB通信ハンドラ604−1を起動する。それに応答し、BLADE1のプロセッサは、ブロック708で、モードをSMMに切り替え、OOB通信ハンドラ604−1が起動するまでにそのSMMハンドラをディスパッチする。すると、OOB通信ハンドラは、資源ターゲットホスト(BLADE2)におけるSMI信号をアサートし、2つのブレード間のOOB通信を開始する。SMIに応答し、BLADE2におけるプロセッサモードは、ブロック710において、そのOOB通信ハンドラを起動するSMMに切り替えられる。この時点で、ブレード1および2は、OOBチャネル610を介し通信できるようにされ、アクセス要求は、OOB通信ハンドラ604−2により受信される。一実施例において、資源アクセス要求が送信された後、「RSM]命令がBLADE1のプロセッサに発せられることにより、プロフェッサのオペレーティングモードは、SMMに切り替わる前のモードへと戻る。
【0064】
次に、ブロック712において、アクセス要求は、マネジメント/アクセスドライバ802−2にそのAPIを介し送られる。任意の実施例において、その後ブロック714においてクエリが実行され、アクセス要求を受信するプラットフォームがターゲット資源の実際のホストであることを確認する。もし正しいホストでない場合、一実施例では、そのことを示すリクエスタメッセージが返送される(図示せず)。他の実施例では、適切なグローバル資源マネージャが状況を把握している。基本的には、ローカルグローバル資源マップが異なる情報を含む場合(すなわちもはや同期しない)にこの状況は起きる。すると、グローバル資源マネージャは、コマンドを発し、ローカルグローバル資源マップを再び同期させる(図示せず)。
【0065】
続いてブロック716では、プラットフォームホストの資源デバイスドライバ(804−2)が用いられ、アクセス要求にサービスを提供するよう、資源(例えば資源2)にアクセスする。本実施例では、アクセスは、要求されたデータファイルを返す。そして、ブロック718において、要求に対応するデータが、OOBチャネル610を介し、リクエスタに戻される。通信終了時において、BLADE2のプロセッサにRSM命令が発せられ、プロセッサのオペレーティングモードは、SMMに切り替わる前のモードに戻る。
【0066】
特定の実施によっては、リクエスタのプロセッサは、この時点でSMMにしてもしなくてもよい。例えば、前述の実施例において、リクエスタ(BLADE1)のプロセッサは、ブロック708において、SMMから切り替わる。この場合、ブロック722において新たなSMIがアサートされ、OOB通信ハンドラを起動させる。(任意のスキームに従い)アクセス要求を送信した後もSMMモードが終了しない場合、OOB通信ハンドラは、返送されるデータを受信するよう、すでに待機中である。いずれにせよ、ブロック724にで、返送されるデータは、OOBチャネル610を介し受信され、リクエスタのマネジメント/アクセスドライバ(802−1)へと渡される。次に、ブロック726でこのファームウェアドライバは、データをOSデバイスドライバ800−1に送り、その後ブロック728で、そのデータは、オペレーティングシステムを介し、リクエスタにより受け取られる。
【0067】
図8Bの実施例において、グローバル資源マップのローカルコピーの代わりに、単一のグローバル資源マップを用い、同様の資源アクセスプロセスが実行される。要するに、ローカルグローバル資源マップを用いるのではなく、グローバル資源マネージャ608が資源にアクセスするためのプロキシとして用いられることを除けば、図8Aを参照して上記に述べたのと同じような数多いオペレーションである。したがって、資源アクセス要求は、識別された資源ターゲットに直接送られるのではなく、OOBチャネル610を介しグローバル資源マネージャ608に送信される。要求の受信と同時に、グローバル資源マップ812Aの探索が実行され、資源ターゲットが決定される。続いて、データ要求は、リクエスタを識別する情報と共に、識別された資源ターゲットへと送られる。要求の受信と同時に、任意のオペレーション714を除くブロック712−728のオペレーションが実行される。
【0068】
前述のスキームは、それぞれが各自の有する効果を発揮する。ローカルグローバル資源マップが用いられた場合、プロキシは必要なく、したがって、ブレードサーバ構成要素で実行するソフトウェアコンポーネントを変える必要もない。しかしながら、グローバル資源マップの同期化を促進する機構は必要なので、各ブレードに対するマネジメントオーバヘッドは増大する。単一のグローバル資源マネージャを用いる主な利点は、グローバル資源マップの同時発生が保証され(コピーが1つだけなので)、マップへの変更が個々のブレードの協力なしで行えることである。ほとんどの実施例において、主な欠点は、グローバル資源マネージャ機能のためのホストがどうしても必要になることである。通常、ホストは、マネジメント構成要素、あるいは、ブレードの1つである(例えば指名選択またはデフォルト選択されたブレード)。
【0069】
一実施例において、グローバル資源マネージャにサービスを提供するブレードは、指名プロセスによって識別され、その場合、各ブレードは、マネジメントタスクを実行するためのファームウェアを含んでよい。一般的に、指名スキームは、シャーシスロットのような物理的割当て、または、ファーストイン順序スキームなどの活性化スキームに基づいてよい。例えば、スロットに基づくスキームでは、最下位のスロット割当てを有するブレードは、電源決定タスクが割り当てられる。このブレードが取り除かれた場合は、残りのブレードの中から、最下位スロット割当てを有するブレードが、グローバル資源マネージャのホストとなるよう指名されることもある。ファーストイン順序スキームでは、各ブレードは、ブレードが挿入されたかまたは起動された順序に基づき、挿入順序識別子(例えばナンバー)に割り当てられる。グローバルマネジメントタスクは、最初にインストールされたブレードである最も小さいナンバーのブレードに割り当てられる。このブレードが取り除かれると同時に、次に小さいインストールナンバーのブレードが新たな電源決定器として指名される。グローバル資源マネージャにおける変更全体の連続オペレーションを確実にする目的で、冗長スキームが実行され、そこで第2のブレードがライブバックアップとして指定される。
【0070】
通常、グローバル資源マッピングデータは、システムメモリ内、または、ファームウェア変数データとして格納されてよい。ファームウェア変数データとして格納された場合、マッピングデータは、プラットフォームのシャットダウンの間持続できる。一実施例において、マッピングデータは、オペレーティングシステムから見えないシステムメモリの一部が格納される。システムメモリの見えない部分は、プレブートオペレーションの間、SMRAMの一部またはファームウェアによりリザーブされるメモリの一部を含んでよい。シャットダウンの間グローバル資源マッピングデータを持続させるやり方として、ディスクドライブのような持続性記憶装置にデータを格納する方法がる。しかしながら、ディスクドライブを用いる場合は、マッピングデータをディスクドライブのホスト保護領域(HPA)など、プラットフォームオペレーティングシステムにアクセスされないように格納することが推奨される。グローバル資源マッピングデータが中央レポジトリに格納される場合(すなわち、図8Bの実施例により示されるように)、上記に提示されたものと同様のさまざまな記憶オプションを用いることもできる。グローバル資源マネージャが複数のサーバブレード以外の構成要素によりホストされる場合(例えば、マネジメントカード112または外部マネジメントサーバによりホストされる場合)、それらのホストには、ブレードで動作するオペレーティングシステムがアクセスできないので、ディスク記憶装置は安全に実行されることができる。
【0071】
資源共有のより特殊な実施例を図9A−Bおよび10A−Bに示す。これらのケースでは、共有される資源は、ディスクドライブ218を含む。図9Aおよび10Aに示された実施例900において、複数のディスクドライブ218により提供される記憶資源は、仮想記憶ボリューム"V:"を形成するよう結集される。説明を明確にするべく、各ディスクドライブの記憶資源は、10ブロックを含むI/O記憶群それぞれとして示される。さらに、各ブレード1−16は、単一のディスクドライブ218のホストであることが示されている。実際の実行において、各ブレードは、0−Nディスクドライブをホストしてもよく(その構成に基づく)、各ディスクドライブのブロック数は、変化してよい。また、実際のブロック数は、ここに示されているものより桁違いに多くすることもできる。
【0072】
オペレーティングシステムの見地からすると、仮想記憶ボリュームV:は、単一の記憶装置である。一般的に、共有記憶資源は、1−N仮想記憶ボリュームとして構成され、各ボリュームは、記憶装置のそれぞれのセットごとに張られた空間である。現実には、仮想記憶ボリュームV:は、16のディスクドライブ218におよぶ。これを実現するため、ルックアップテーブル1000を含むブローバル資源マップが用いられる。ルックアップテーブルは、I/Oブロックのそれぞれの範囲をI/Oブロックをホストするディスクドライブが存在するブレードにマップする。多数のディスクドライブをホストすることが可能な単一のブレードの場合、マップは、各ブレードにおける特定の記憶装置を識別する情報をさらに含むこともある。一般的に、ブレード数を単純に識別するよりはむしろ、アドレッシングスキームが用いられているが、説明を明確かつ単純にするため、ブレード数を割り当てて示している。
【0073】
図9Bおよび10Bは、RAID(個別ディスクの冗長配列)−1標準に従うミラーリングおよびデュプレキシングを用いたRAID実施例902を示す。RAID−1において、記憶装置のそれぞれのセットが対になり、データは、データの同一セットが対になった各記憶装置に書き込まれることにより、反映される。前述と同様の方法において、集結した記憶は、オペレーティングシステムに対し、仮想ボリュームV:として見える。図示された実施例において、記憶装置の数および種類は、実施例900の記憶装置と同一であり、したがって、仮想ボリュームのブロックI/O記憶容量は、80ブロックに半減する。グローバル資源マッピングは、オペレーティングシステムが対応するブロックI/Oアクセス要求を作成するとき、どのディスクドライブがアクセスされるかを決定するためのルックアップテーブル1002に含まれる。ディスクドライブの対は、AからHまでのラベルが付けられた論理記憶装置エンティティに分割される。
【0074】
RAID−1の原理に従い、論理記憶装置エンティティへの書き込みアクセスが実行されたとき、データは、基になる記憶装置それぞれに書き込まれる。一方、読み込みアクセスの間は、データは、(概ね)単一の記憶装から検索される。RAID−1の実施の複雑さによっては、記憶装置の対の1つがデフォルト読み込みデバイスとして割当てられるか、または、記憶装置の両方により、並列読取り(デュプレキシング)を考慮に入れたこの機能を容易にすることができる。
【0075】
図示された構成に加え、1つ、または、それ以上のディスクドライブ218を「ホットスペア」として用いる構成もある。この場合、ホットスペア記憶装置は、通常のアクセス操作の間には用いられず、故障したデバイスまたはブレードと交換するための予備となる。規格では、ホットスペアの交換が発生すると、(対の)故障していないデバイスに格納されたデータが交換デバイスに書き込まれることにより、記憶システムは、完全な冗長状態に戻る。これは、インタラクティブな方法で実行してもよく(例えば、並行して新たなデータ書き込みを許容するなど)、または、新たな書き込みを許容する前に実行してもよい。
【0076】
一般的に,RAID−1スキームは、単一のグローバル資源マネージャを用いるか、または、ローカルマネジメントを介すかのいずれかにより展開されることができる。例えば、(スタティック資源構成に対応して)「スタティック」マップが用いられる場合、適切なマッピング情報は、各ブレードに格納されることができる。一実施例では、この情報は、ファームウェア変数データとして格納されることもでき、それによって、プラットフォームのリセットまたはシャットダウンの間も持続することができる。動的な構成環境では、構成変化に対応するアップデートされた資源マッピングを少なくとも決定するための中央グローバル資源マネージャを用いることが望ましい。
【0077】
RAID−1に加え、RAID−0、RAID−2、RAID−3、RAID−5、および、RAID−10を含む他のRAID標準冗長記憶スキームを用いてもよい。これらのスキームはそれぞれある形式のストライピングを含むので、グローバル資源マップの複雑さが実質的に増す。さまざまな理由から、個別のローカルマネージャよりはむしろ中央グローバル資源マネージャを介した方が、RAID−0、RAID−2、RAID−3、RAID−5、および、RAID−10の実行は、より容易になる。
【0078】
前述の原理は、ブレードサーバ環境を背景に述べられているが、これに限定されない。各ブレードは、ラックマウントサーバ、または、スタンドアロンサーバなどの独立したプラットフォームとみなしてよく、複数のプラットフォームにわたる資源共有は、OOBチャネルを介し、前述と同様のやり方で実現することができる。例えば、ラックマウントサーバ構成における配線および/またはルーティングは、OOBチャネルをサポートする目的で提供されてよい。
【0079】
ラックマウントサーバなどに適切である、本発明の特定の実施例は、通常KVMとして知られる共有キーボード・ビデオ・マウスI/Oに関する。典型的なラックサーバでは、KVMスイッチが用いられることにより、単一のキーボード、ビデオディスプレイ、および、マウスがラック内のすべてのサーバに共有されることができるようになる。KVMスイッチは、別々のサーバから(それぞれのケーブルを介し)単一のキーボード、ビデオ、および、マウスI/OポートにKVM信号を送り、それによって、選択されたサーバのKVM信号は、選択ノブを回すことにより、または、入力信号源を選択することにより、アクセスされることができる。高密度サーバでは、配線および設置にかかるコストに加え、KVMスイッチに1500ドルの費用がかかることもある。また、KVM配線は、ベンチレーションおよびアクセスの可能性を低下させる。
【0080】
前述した問題は、図11-13に示された共有KVM実施例により解決される。図11では、複数のラックマウントサーバ1100のそれぞれは、スイッチ1102、および、対応するイーサネット配線(ネットワーク雲1104として図示)を介し他のサーバに接続される。各サーバ1100は、プロセッサ1108、メモリ1110、ファームウェア記憶装置1112、および、NIC1114を含む複数の構成要素がその上に装着されるかまたはそれに結合されるメインボード1106を含む。複数のI/Oポートも、マウスおよびキーボードポート1116および118と、ビデオポート1120とを含むメインボードに結合される。通常、各サーバは、複数のディスクドライブ1122を含む。
【0081】
上述のNICに基づくバックチャネルOOBスキームによれば、各サーバ1100のNIC1114に割り当てられた第2のMACアドレスが用いられることにより、OOBチャネル1124をサポートする。キーボード1126、ビデオディスプレイ1128、および、マウス1130は、それぞれのケーブルを介し、サーバ1100Aの後部に配置されたI/Oポート1118、1120、および、1116にそれぞれ結合される。各サーバ1110におけるファームウェアは、サーバ1100Aを介し、KVM信号をキーボード1126、ビデオディスプレイ1128、および、マウス1130に送るローカルグローバル資源マップ1132をホストするためのサポートを提供する。
【0082】
サーバ1100Nで動作するオペレーティングシステムは、通常、実行時アプリケーションへのユーザ入力に応答し、ビデオディスプレイをアップデートする要求を受信する。オペレーティングシステムは、そのOSビデオドライバ1200Nを用いて変更を実現する。OSビデオドライバは通常、オペレーティングシステムにより維持される仮想ビデオディスプレイに基づき、ビデオデータを生成し、仮想−物理ディスプレイマッピングが実行される。例えば、異なる解像度を有するモニタに表示される同じテキスト/グラフィックコンテンツには、解像度に特有の異なるビデオデータが必要である。そして、OSビデオドライバがビデオルータドライバ1202Nとインターフェースすることにより、ビデオデータは、宛先デバイスであると思われる、サーバ1100Nのビデオシップ1206Nに送られる。オペレーティングシステムに関する限り、ビデオルータドライバ1202Nは、サーバのファームウェアビデオデバイスドライバ、すなわち、ビデオデバイスドライバ1204Nである。しかしながら、ビデオデータの受信と同時に、ビデオルータドライバ1202Nは、グローバル資源マップ1134Nのルックアップにより、ビデオデータ宛先サーバを探索し、かつ、OOB通信ハンドラ604Nおよび604Aを介し、サーバ1100AとのOOB通信を会しするよう、SMIをアサートする。
【0083】
受信と同時に、ビデオデータは、ビデオデバイスドライバ1204Aを介し、ビデオチップ1206Aに書き込まれる。前述と同じ方法で、ビデオデータは、OOB通信ハンドラ604Aからビデオデバイスドライバ1204Aに直接渡されるか、または、ビデオルータドライバ1202Aを介し送られてもよい。ビデオデータの受信に応答し、ビデオチップ1206Aは、ビデオポート1120を介しビデオモニタ1128により受信されるそのビデオ出力信号をアップデートする。オプションとして、グローバル資源マップ1134Aの検証ルックアップを実行することにより、サーバ1100Aが正しいビデオデータ宛先サーバであることを検証してもよい。
【0084】
キーボードおよびマウス信号は、同様な方法で処理される。ビデオと同様に、オペレーティングシステムは、通常、ポインティングデバイスの仮想位置が仮想ビデオディスプレイと相互参照されることができる仮想ポインタマップを維持し、これによって、ビデオディスプレイに関するカーソルの位置を決定することができる。また、マウス情報は、ビデオ信号の逆ルートを横断する。これは、サーバ1100Aを介し受信されたマウス入力がOOBチャネルを介し、選択されたプラットフォーム(例えばサーバ1100N)に伝えられるということであり、サーバ1100Aのグローバル資源マップ1134Aをアップデートすることにより、正しい宛先プラットフォームを反映することが要求される。同様に、ルーティングキーボード信号も、マップのアップデートを要求する。キーボード信号との違いは、それらが双方向性であることであり、したがって、入出力両方のデータルート変更が要求される。
【0085】
図13に、キーボード入力信号処理プロトコルスタックおよびフローチャートの例を示す。ソフトウェア側のサーバ1100Nのプロトコルスタックは、オペレーティングシステムキーボードドライバ1300Nを含み、一方、ファームウェア構成要素は、キーボードルータドライバ1302N、ビデオデバイスドライバ1304N、および、OOB通信ハンドラ604Nを含む。また、ファームウェア構成要素は、サーバ1100Aのプロトコルスタックも含む。
【0086】
キーボード1126を介したユーザ入力に応答し、キーボード入力信号が生成され、キーボードポート1118Aを介し、キーボードチップ1306Aにより受信される。その後、キーボードチップ1306は、キーボードデバイスドライバ1304Aにより受信される対応するキーボード(KB)データを生成する。この時点で、キーボード入力の処理は、資源共有に携わらない単一のプラットフォーム(例えばディスクトップコンピュータ)で実行されるのと同一である。通常、キーボードデバイスドライバ1304AがOSキーボードドライバ1300Aとインターフェースすることにより、キーボードデータをオペレーティングシステムに伝える。しかしながら、キーボードデータを受信するべく対象とされたOSキーボードドライバは、サーバ1100Nで稼動している。したがって、キーボードデバイスドライバ1304により処理されるビデオデータがキーボードルータドライバ1302Aに伝えられることにより、キーボードデータのルート変更が容易になる。
【0087】
キーボードデータの受信に応答し、キーボードルータドライバは、グローバル資源マップ1134を問合せ、キーボードデータのルート変更先であるターゲットサーバを決定する。(本例ではサーバ1100N)。そして、キーボードルータドライバは、SMIをアサートし、サーバ1100Aで動作するプロセッサをSMMにし、キーボードデータをサーバターゲット識別データと共にOOB通信ハンドラ604Aに伝える。そして、OOB通信ハンドラ604AがOOB通信ハンドラ604Nとやり取りすることにより、OOBチャネル1124を介しての2つのサーバ間のOOB通信が容易になり、次にキーボードデータがOOB通信ハンドラ604Nにより受信されるようになる。キーボードデータの受信に応答し、OOBハンドラ604Nは、受信したキーボードデータをキーボードルータドライバ1302Nに転送する。この時、キーボードルータドライバは、キーボードデータを直接OSキーボードドライバ1300Nに渡してもよいし、あるいは、データをOSキーボードドライバ1300Nに渡す前に、グローバル資源マップ1134Nのルーティング検証ルックアップを実行することにより、サーバ1100Nがキーボードデータを受信するべき正しいサーバであることを保証するようにしてもよい。そして、OSキーボードドライバは、キーボードデータを処理し、処理済のデータを、カレントフォーカスを有する実行時アプリケーションに提供する。
【0088】
以上説明した本発明の実施例は、要約書に記載された事項を含むが、それに限定されない。上述した例示的な実施例は、当業者であれば本発明の範囲および原理を逸脱することなく様々に修正および変更できることが理解できよう。
【0089】
前述の詳細な説明を考慮し、本発明は様々に修正できる。特許請求の範囲に用いられる用語は、本発明を明細書に記載された特定の実施例および特許請求の範囲に限定するものと解釈すべきではない。本発明の範囲は、特許請求の範囲の請求項に記載した全ての範囲内によって決定されるべきである。
【図面の簡単な説明】
【0090】
【図1A】複数のサーバブレードが設置されるブレードサーバシャーシの例を示す正面等角図である。
【図1B】図1Aのブレードサーバシャーシの後部等角図である。
【図1C】図1Aおよび図1Bに対応する複数のラックマウントブレードサーバシャーシが設置されるブレードサーバラックの正面等角図である。
【図2】典型的なサーバブレードの構成要素の詳細を示す図である。
【図3】ACPI標準に従うパワーマネジメントを展開するために用いられるさまざまなファームウェアおよびオペレーティングシステムを示す概略ブロック図である。
【図4】本発明の一実施例に従うパワーマネジメントスキームを実行するためのブレードを設定するブレード初期化の間に用いられるオペレーションおよびロジックを示すフローチャートである。
【図5】本発明の一実施例に従う資源共有をセットアップする初期化プロセスの間に用いられるオペレーションおよびロジックを示すフローチャートである。
【図6】図6の初期化プロセスの間に発生する様々なデータフローを示す概略図である。
【図7】本発明の一実施例に従う要求にサービスを提供するコンピューティングプラットフォームの要求時に受信される資源アクセス要求に応答して用いられるオペレーションおよびロジックを示すフローチャートである(サービスを提供する資源は、他のコンピューティングプラットフォームによりホストされる)。
【図8A】ローカルグローバル資源マップを用いての、共有資源アクセスにおける対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図8B】グローバル資源マネージャによりホストされる単一のグローバル資源マップを用いての、共有資源アクセスにおける対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図9A】複数のディスクドライブの記憶容量となる仮想記憶ボリュームとして構成される共有記憶資源を示す概略図である。
【図9B】図9Aの共有記憶資源スキームとの相違を示す概略図である(RAID−1は資源アクセスの間に実行される)。
【図10A】図9Aの仮想記憶ボリュームスキームの更なる詳細を示す概略図である。
【図10B】図9BのRAID−1実行の更なる詳細を示す概略図である。
【図11】本発明の一実施例に従う共有キーボード、ビデオ、および、マウス(KVM)アクセススキームを示す概略図である。
【図12】ビデオ資源の共有をサポートする対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図13】ユーザ入力資源の共有をサポートする対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【技術分野】
【0001】
本発明は、ブレードサーバなどのクラスタ化コンピューティング環境、より詳しくは、これに限定しないが、ノード全体で共有できるグローバル資源を生成すべく、個別のプラットフォーム(ノード)によりホストされる資源を共有する技術に関する。
【背景技術】
【0002】
情報技術(IT)管理者および情報統括責任者は、能力を低下させることなく資本経費および営業費を削減しなければならないという強いプレッシャーにさらされており、IT管理は、より効果的にインフラ資源を利用する計算資源を提供する必要に迫られている。この目的を満たすべく、サーバの利用をいかに効率的に管理するか、いかに少ないスタッフでIT業務をこなすか、床面積をいかに効率的に利用するか、また、電力問題をどう取り扱うかといった課題が日々取り上げられている。
【0003】
一般的に、企業のIT(情報技術)インフラは、コンピュータサーバに集中し、サーバは、さまざまなタイプのネットワーク、例えば、プライベートローカルエリアネットワーク(LAN)、および、公私のワイドエリアネットワーク(WAN)を介し互いに接続されている。サーバは、さまざまなアプリケーションを分散させ、かつ、データ記憶および処理プロセスを管理する目的で使用される。このようなサーバは、通常、スタンドアロンサーバ、および/または、4U、2U、および、1Uなどの高密度ラックマウントサーバを含む。
【0004】
近年、過去にないサーバ密度および経済スケーラビリティを提供する新規のサーバ構成が導入されている。このサーバ構成は、「ブレードサーバ」として知られている。ブレードサーバは、共通のシャーシ内に配置された複数の密接した「サーバブレード」(ブレード)を用いることにより、高密度なコンピュータ機能を供給する。各ブレードは、1つ、または、それ以上のプロセッサ、メモリ、ネットワーク接続、および、ディスク記憶装置を含む完全なコンピューティングプラットフォームを単一のシステムボードに一体化して提供する。一方、電源およびファンなどの他の構成要素は、所定のシャーシおよび/またはラック内のブレード間で共有される。これによって、従来のラックマウントサーバに比べ、資本設備費用の大幅な削減が可能になる。
【0005】
一般的に、ブレードサーバは、2つの市場をターゲットにしている。一方は、個別のブレードが個別のタスクを処理する高密度サーバ環境、他方は、スケーラブルコンピュータクラスタ環境である。スケーラブルコンピュータクラスタ(SCC)は、2つまたはそれ以上のコンピュータシステム群であり、コンピュータインテンシブなタスクを実行するべく協働するよう構成されたコンピューティングノードとしても知られている。コンピュータのタスクを実行するべく協働する多数のノードを構成することにより、単一のシステムで実行した場合よりタスクを素早く計算できる。理論上は、タスクに適用されるノードが多いほど、タスクの計算は速くなる。しかし実際には、タスクを完了するために活用できるノード数は、使用するアプリケーションに依存する。
【0006】
一般的なSCCは、Linuxオペレーティングシステムおよびクラスタインフラソフトウェアを稼動させるインテルのサーバを用いて構築される。前記サーバは、市販(COTS)サーバとも言われ、ネットワークを介し接続されることにより、クラスタを形成する。1つのSCCは、通常、コンピュータインテンシブなタスクの実行時に有効な10から100のサーバがどこかに必要である。ブレードサーバなら、このような多数のサーバを1つの場所に集めてクラスタを形成するという要求に完璧に応えることができる。ブレードサーバのシャーシ設計およびアーキテクチャは、非常に大きなコンピュータの馬力を単一の場所に提供することができる。さらに、ブレードサーバアーキテクチャのビルトインネットワーキングおよびスイッチング能力は、ブレードを個別に追加または除去することができ、所定のタスクの最適なスケーリングを実現する。このような柔軟性をもったサーバベースのSCCを用い、スーパーコンピュータのようなコンピュータタスクを実行する他のインフラの費用効果的な変形例を提供できる。
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述のように、ブレードサーバにおける各サーバは、フルプラットフォーム機能を実現し、その結果、サーバにおいて、ブレードが個別に動作できるようになる。しかしながら、各ブレードにとって利用可能な資源は、そのブレードがもつ資源に限られるため、多くの場合、資源は効率的に利用されない。現状のアーキテクチャでは、サーバと広範囲にわたる資源とを効率的に共有できるスキームは確立されていない。
【課題を解決するための手段】
【0008】
前述した側面および本発明の多くの効果は、添付の図面を参照しながら以下の詳細を読むことにより容易に理解されることであろう。なお、特に明記しない限り、全図面を通じて同様の要素には同様の参照符号を付して示す。
【0009】
以下、ブレードサーバ環境のような、クラスタ化プラットフォーム環境全体で資源を共有化するための方法およびコンピュータ構成要素の実施例を説明する。以下の説明において、本発明の実施例を完全に理解することを目的として数多くの具体的な詳細が記載されている。しかしながら、1つまたはそれ以上の具体的な詳細の説明がなくとも、または、他の方法、構成要素、材料によっても本発明が実行可能であることは、当業者にとって明らかである。また、本発明の態様を不明確にしないよう、公知の構造、材料、または、オペレーションの詳細な説明は省略する。
【0010】
本明細書を通じて使用される「一実施例」という語句は、特定の機能、構造、または、実施例と関連して記述される特徴が、本発明の少なくとも1つの実施例に含まれることを意味する。したがって、本発明を通じて随所に使用される「一実施例」という語句は、必ずしも同じ実施例を指すものではない。さらに、特定の機能、構造、または、特徴は、1つまたはそれ以上の実施例において適切な形で組み合わされてよい。
【発明の効果】
【0011】
本発明の態様によれば、個別のプラットフォームによりホストされる資源が他のプラットフォームからもアクセス可能になる、クラスタ化プラットフォーム環境全体で資源を共有化する技術が開示される。この技術は、OSとの連動を必要とせずに「ビハインドザシーン」アクセスメカニズムを提供するファームウェアベースの機能を用いる。実際には、資源共有およびアクセス操作は、ブレード上で動作するオペレーティングシステムに対し完全にトランスペアレントであり、オペレーティングシステムは、独立している。したがって、本願明細書において開示される新規な技術によってもたらされる機能は、既存および将来の分散型プラットフォーム環境で使用でき、使用に当たり、オペレーティングシステムをその環境向けに変更する必要がない。
【0012】
一態様によれば、資源共有メカニズムは、グローバル資源を形成するよう集結された資源を公開しているいくつかのプラットフォームにより実現できる。各プラットフォームは、オペレーティングシステムのロード(プレブート)前、および、オペレーティングシステムの実行と同時に稼動する一組のファームウェアをそれぞれ用いる。一実施例において、実行時の配備は、システムマネジメントモード(SMM)として知られる非表示実行モードによって容易になる。前記システムマネジメントモード(SMM)は、周期的なシステムマネジメントインターラプト(SMI)を受信しかつそれに応答する能力を有するので、資源共有を実現し、かつ、メカニズムを実行するよう設定されたファームウェアSMMコードにアクセス情報をトラスペアレントに伝えることができるようになる。SMM資源マネジメントコードは、情報およびメッセージを、他のノードに、アウトオブバンドネットワーク(OOB)、または、通信チャネルを介し、オペレーションシステムに対しトランスペアレントに伝える。
【発明を実施するための最良の形態】
【0013】
説明の便宜上、本発明のいくつかの実施例は、ブレードサーバ環境として以下に説明される。概要としては、本発明の実施例に従う資源共有スキームが通常実行できる典型的なブレードサーバ構成要素およびシステムが図1A−Cおよび2に示される。典型的な構成の下では、複数のブレード102に電力および通信機能を提供する目的で、ラックマウントシャーシ100が用いられる。各ブレード102は、それぞれ対応するスロットを占有する(すべてのスロットがシャーシで占有される必要はない点に注意)。または、1つまたはそれ以上のシャーシ100が図1Cに示されるブレードサーバラック103内に設置されてもよい。各ブレードは、1つまたはそれ以上のマッチング・コネクタを介し設置されると同時に、インターフェース平面104(すなわちバックプレーンまたはミッドプレーン)に結合される。一般的に、インターフェース平面は、ブレードそれぞれのための複数のマッチングコネクタを含み、電力および通信信号をブレードに供給することもできる。現実行下では、多数のインターフェース平面が「ホットスワッピング」機能、すなわち、シャーシ全体の電源を入れたままで、データ信号をバッファリングすることもなく、ブレードを即座に追加または除去する(ホットスワッピングする)ことができる機能を提供する。
【0014】
図1Aおよび1Bは、典型的なミッドプレーンインターフェース平面構成を示す。インターフェース平面104の後部は、1つまたはそれ以上の電源106に接続される。多くの場合、電源は冗長化およびホットスワッピングが可能である。適切な電源プレーンおよびコンディショニング回路に結合されることにより、1つの電源が故障しても継続して動作することができる。任意の構成において、電源アレイを用いてブレードラック全体に電力を供給してもよく、この場合、電源とシャーシとが一対一の関係になくてもよい。また、複数の冷却ファン108を用いてシャーシを介し空気を引き込み、サーバブレードを冷却する。
【0015】
ブレードサーバすべてに要求される重要な特徴として、他のITインフラとも外部通信する能力が挙げられる。一般的に、外部通信は、1つまたはそれ以上のネットワーク接続カード110を介して行われ、ネットワーク接続カードは、それぞれインターフェース平面104に接続される。また、1つのネットワーク接続カードは、複数のネットワークポート接続(例えば、RJ−45ポート)を含む1つの物理的インターフェースを有するか、または、ネットワークスイッチ、ハブ、または、ルータなどのネットワーク装置に直接接続されるよう設計された高密度コネクタを備えてもよい。
【0016】
ブレードサーバは、通常、ブレードの動作を個別に管理する何らかの管理インターフェースを提供する。これは、帯域外ネットワークまたは通信チャネルによって実現が容易になる。例えば、「プライベート」または「マネジメント」ネットワーク、および、適切なスイッチングを容易に実現するための1つまたはそれ以上のバスをインターフェース平面に組み込んでもよく、あるいは、プライベートネットワークは、強連結ネットワークケーブル配線、および、ネットワークを介し実行することもできる。前記スイッチングおよび他の、マネジメント機能は、任意でマネジメントカード112によって提供されてもよく、マネジメントカード112は、インターフェース平面の裏側または表側に結合される。さらに、また、マネジメントサーバを用いてブレード動作を管理してもよく、この場合、通信は、イーサネットなどの標準的なコンピュータネットワーク化インフラを介し処理される。
【0017】
図2を参照し、例示的なブレード200をさらに詳しく説明する。上述したように、各ブレードは、サーバタイプの機能を実行するよう構成された独立したコンピューティングプラットフォーム、すなわち、「カードのサーバ」を備える。したがって、各ブレードは、適切な集積回路(IC)を結合するための内部配線(すなわちバス)を提供する主回路基板201を含む従来のサーバに共通する構成要素と、主回路基板に取り付けられた他の構成要素とを含む。これらの構成要素は、システムメモリ204(DDR RAMなど)、キャッシュメモリ206(SDRAMなど)、および、ファームウェア記憶装置208(フラッシュメモリなど)に結合された1つ、または、それ以上のプロセッサ202を含む。従来のネットワーク通信機能、例えば、ブレードと外部ネットワークインフラとの間の通信をサポートするための「公衆」NIC(ネットワークインターフェース)チップ210が設けられる。例示された他の構成要素は、ステータスLED212、RJ−45コンソールポート214、および、インターフェース平面コネクタ216を含む。付加的な構成要素は、さまざまな受動構成要素(抵抗器、コンデンサなど)、電力調整部品、および、周辺装置コネクタを含む。
【0018】
通常、各ブレード200は、オンボード記憶装置を提供することもでき、これは、1つまたはそれ以上のビルトイン・ディスクコントローラ、および、1つまたはそれ以上のディスクドライブ218が結合される対応するコネクタを介し実現が容易になる。例えば、典型的なディスクコントローラは、Ultra ATAコントローラ、および、SCSIコントローラなどを含む。また、大量のデータを格納するためにネットワーク接続ストレージ(NAS)機器が用いられるときは、ディスクドライブは、ブレードとは別に、同じまたは個別のケースのようなラックに収容されてもよい。
【0019】
本発明の態様によれば、ブレードと、任意の専用管理コンポーネントとの間のバンド外通信のための機能が提供される。ここで使用されるように、バンド外通信チャネルは、OSに対しトランスペアレントなデバイス間通信をサポートする通信手段であってオペレーティングシステムと協働せずにブレード間通信を可能にする手段を含む。通常、さまざまなアプローチによりOOBチャネルを提供することができる。これらのアプローチは、SMBUS標準(www.smbus.org)を実行するシステムマネジメントバス、VLAN−802.1Qなどの専用プライベートまたはマネジメントネットワーク、あるいは、例えばRS−485シリアル通信標準を用いるシリアル通信スキームなどの使用を含むが、これに限定されない。また、このような通信機能をサポートする1つまたはそれ以上の適切なICがOOBチャネルチップ220で示されるように、主回路基板201に取り付けられる。同時に、インターフェース平面104は、選択されたOOBスキームを支持するための対応するバスまたはビルトインネットワークトレースを含んでもよい。また、有線ネットワークスキーム(イーサネットなど)の場合、適切なネットワークケーブル配線およびネットワーキングデバイスをシャーシ100の内部または外部に配置させてもよい。
【0020】
前述のように、本発明の実施例では、ブレードサーバノード全体で資源を共有化できるようにする資源共有セットアップおよびアクセス機構を実現するためのファームウェアベースのスキームを用いる。特に、資源管理ファームウェアコードが各ブレードの初期化の間にロードされ、OS実行中のアクセスを可能にする。同様に、初期化の間に資源情報が収集され、グローバル資源情報が確立される。このグローバル資源情報に基づき、各ブレードへの適切なグローバル資源アクセスが提供される。この情報は、グローバル資源が(オペレーションシステムの立場からは)ローカル資源として見えるよう、その初期化と同時にOSに伝えられる。OSの実行中、共有資源へのアクセスは、OSおよび/またはOSドライバと、資源アクセスマネジメントと協働する対応するファームウェアとの間のやりとりを介し処理され、このやりとりは、OOBチャネルを介し実現が容易になる。
【0021】
一実施例において、資源共有は、拡張ファームウェアインターフェース(EFI)(仕様およびその例は、http://developer.intel.com/technology/efiを参照)として知られる拡張ファームウェアフレームワークにより実現が容易になる。EFIは、プラットフォームファームウェアと、シュリンクラップオペレーションシステム、または、他のカスタムアプリケーション環境との間の抽象的なプログラマチックインターフェースを記述する公の産業仕様(現在のバージョン1.10は2003年1月7日リリース)である。EFIフレームワークにより、プラットフォームのBIOSデバイス(フラッシュメモリなど)に格納されたBIOSコードにより提供されるもの以上にBIOS機能を拡張できる。より詳しくは、EFIによって、主および二次フラッシュデバイス、オプションのROM、多種の持続性記憶装置(ハードディスク、CD ROMなど)を含むさまざまな資源から、ファームウェアがファームウェアモジュールおよびドライバ形式で、コンピュータネットワーク上でもロードできるようになる。
【0022】
図3は、コールドブート(パワーオフ/オン、リセット)に応答してフレームワーク下のプラットフォームにより実行されるオペレーションを示すよう用いられるイベントシーケンス/アーキテクチャダイアグラムを示す。プロセスは、プレEFI初期化環境(PEI)位相、ドライバ実行環境(DXE)位相、ブートデバイス選択(BDS)位相、過渡システムロード(TSL)位相、および、オペレーティングシステム実行時(RT)位相を含むいくつかの位相に論理的に分割される。位相は、積層され、OSおよびプラットフォームのための適切な実行時環境を提供する。
【0023】
PEI位相は、プロセッサ(CPU)、チップセット、および、マザーボードの特定の初期設定ルーチンをロードしかつ起動させる標準化された方法を提供する。PEI位相は、位相を連続させるための安定した基盤を提供するのに十分なシステムを初期化する役割を担う。CPU、チップセット、および、メインボード(すなわち、マザーボード)を含むプラットフォームのコア構成要素の初期化は、PEI位相の間に実行される。この位相は、「初期の初期化」とも呼ばれる位相である。この位相の間に実行される典型的なオペレーションは、POST(パワーオンセルフテスト)オペレーションと、プラットフォーム資源の発見を含む。特に、PEI位相では、メモリを見つけ、DXE位相に伝えられる資源マップを準備する。PEI位相の終端におけるシステムの状態は、ハンドオフブロック(HOB)と呼ばれる場所に依存しないデータ構造のリストによりDXE位相に伝えられる。
【0024】
DXE位相は、システムの大半が初期化される位相である。DXE位相は、DXEコア300、DXEディスパッチャ302、および、一組のDEXドライバ304を含むいくつかの構成要素によって実現が容易になる。DXEコア300は、一組のブートサービス306、実行時サービス308、および、DXEサービス310を生成する。DXEディスパッチャ302は、DXEドライバ304を発見し、かつ、正しい順序で実行する役割を担う。DXEドライバ304は、コンソールおよびブートデバイスに対しソフトウェアを抽象化すると共に、プロセッサ、チップセット、および、プラットフォーム構成要素を初期化する役割を担う。これらの構成要素は、プラットフォームを初期化し、かつ、オペレーティングシステムをブートするために必要なサービスを提供するべく協働する。また、DXEと、ブートデバイス選択位相とが協働し、コンソールを確立し、かつ、オペレーティングシステムのブートを試みる。オペレーティングシステムがそのブートプロセスの開始(すなわちBDS位相の開始)に成功すると、DXE位相は終了する。DXEコアによって提供された実行時サービス、および、選択DXEサービス、および、実行時DXEドライバによって提供された選択サービスだけがOS実行時環境に存続することを許容される。DXEの結果は、完全に形成されたEFIインターフェースを表す。
【0025】
DXEコードは、CPU、チップセット、または、プラットフォームに依存しない、完全な携帯型に設計される。これは、いくつかの機能で設計することにより、達成される。第1に、その初期状態では、DXEコアだけがHOBリストに依存する。つまり、DXEコアは、前の位相からのどのサービスにも依存しないので、前の位相すべてをいったんアンロードして、HOBリストをDXEコアに渡すことができる。第2に、DXEコアは、いかなるハードコード化アドレスも含まない。さらに、DXEコアは、物理的メモリ内のどこにでもロードすることができ、物理メモリまたはファームウェアセグメントがプロフェッサの物理アドレス空間内のどこに位置しようと、正しく機能することができる。第3に、DXEコアは、CPU特定、チップセット特定、または、プラットフォーム特定情報のいずれも含まない。その代わりに、DXEコアは、一組のアーキテクチャのプロトコルインターフェースを介し、システムハードウェアから抽出される。これらアーキテクチャのプロトコルインターフェースは、DXEディスパッチャ302により起動されるDXEドライバ304により生成される。
【0026】
DXEコアは、図4に示すような、EFIシステムテーブル400と、それに付随するブートサービス306および実行時サービス308のセットとを生成する。また、DXEコアは、ハンドルデータベース402を維持する。ハンドルデータベースは、1つ、または、それ以上のハンドルのリストを含み、ハンドルは、それぞれのプロトコル404にマップする1つ、または、それ以上の一意的なプロトコルGUID(グローバル一意識別子)
【0027】
のリストである。プロトコルは、一組のサービスのためのソフトウェア抽象化である。いくつかのプロトコルは、入出力デバイスを抽象し、他のプロトコルは、共通の一組のシステムサービスを抽象する。プロトコルは、通常、一組のAPlと、いくつかのデータフィールドを含む。プロトコルごとにGUIDによって名前がつけられ、DXEコアは、プロトコルがハンドルデータベース内に登録されることができるようにするサービスを生成する。DXEディスパッチャがDXEドライバを実行すると、プラットフォームの具体的な詳細からDXEコアを抽出するために使用されるアーキテクチャのプロトコルを含むハンドルデータベースにさらなるプロトコルが追加されてもよい。
【0028】
ブートサービスは、DXEおよびBDS位相の間に使用される一組のサービスを含む。これらのサービスは、特に、メモリサービス、プロトコルハンドラサービス、および、ドライバサポートサービスを含む。メモリサービスは、バイト境界でメモリページおよびメモリプールを割り当て/解除するためのサービスを提供する。また、メモリサービスは、プラットフォームにおける現在の物理メモリの使用すべてのマップを検索するためのサービスを提供する。プロトコルハンドラサービスは、ハンドルデータベースに/からハンドルを追加/除去するためのサービスを提供する。また、プロトコルハンドラサービスは、ハンドルデータベースのハンドルに/からプロトコルを追加/除去するためのサービスを提供する。追加サービスは、あらゆる構成要素がハンドルデータベース内でハンドルを探すことができ、かつ、ハンドルデータベース内でプロトコルの開始および終了ができるようにするサービスである。サポートサービスは、プラットフォーム内でドライバとデバイスとを接続および切断するサービスを提供する。これらのサービスは、BDS位相で用いられることにより、すべてのドライバがすべてのデバイスに接続されるか、または、最小数のドライバだけが、コンソールを確立しかつオペレーティングシステムをブートするため(すなわちすばやいブート機構をサポートするため)に必要とされるデバイスに接続される。
【0029】
ブートサービスとは対照的に、実行時サービスは、プレブートとOS実行時動作の間のどちらでも利用できる。本願明細書において開示される実施例により導入される1つの実行時サービスは、変数サービスである。以下に詳細に説明するように、変数サービスは、揮発性および不揮発性記憶装置から環境変数を探索し、追加し、かつ、除去するためのサービスを提供する。
【0030】
DXEサービステーブルは、プレブートの間だけ利用可能な第1のDXEサービス406Aセットと、プレブート間およびOS実行時間の両方で利用可能な第2のDXEサービスセットとに対応するデータを含む。プレブートだけのサービスは、プラットフォーム内のI/O資源、メモリマップされたI/O資源、および、システムメモリ資源を管理するためのサービスを提供するグローバルコヒーレンスドメインサービスを含む。また、プレブートだけのサービスは、DXEディスパッチャによりディスパッチされるDXEドライバを管理するためのサービスを提供するDXEサービスも含む。
【0031】
ブートサービス306、実行時サービス308、および、DXEサービス310のそれぞれにより提供されるサービスは、API312、314、および、316の各セットを介しアクセスされる。APIは、連続的にロードされる構成要素がDXEコアにより提供される選択されたサービスを導入できるようにする抽象インターフェースを提供する。
【0032】
DXEコア300が初期化された後、制御は、DXEディスパッチャ302へと移る。DXEディスパッチャは、EFIフレームワーク下でファームウェアがそこからロードされる論理記憶装置に対応するファームウェア容量内で見つけられるDXEドライバをロードしかつ起動する役割を担う。DXEディスパッチャは、HOBリストによって記述されたフレームウェア容量におけるドライバを探索する。実行を続けているうちに、他のファームウェア容量も見つかる可能性がある。そのときは、ディスパッチャは、そこで同様にドライバを探す。
【0033】
ここにDXEドライバの2つのサブクラスがある。第1のサブクラスは、DXE位相内でごく初期に実行するDXEドライバを含む。これらDXEドライバの実行順序は、アプリオリファイルの存在および内容と、依存関係の表示の評価とに基づく。これら初期のDXEドライバは、通常、プロセッサ、チップセット、および、プラットフォーム初期化コードを含むこともある。また、これら初期のドライバは、ブートサービスおよび実行時サービス完全なものとするようDXEコアに要求されるアーキテクチャのプロトコルを生成することもある。
【0034】
DXEドライバの第2のクラスは、EFI1.10ドライバモデルに準拠するものである。これらは、DXEディスパッチャにより実行されるときは、ハードウェアの初期化を実行しない。その代わり、ハンドルデータベース内にドライババインディングプロトコルインターフェースを登録する。ドライババインディングプロトコルのセットは、コンソールを確立し、かつ、ブートデバイスへのアクセスを提供するよう要求されるデバイスにドライバを接続すべくBDS位相で使用される。EFI1.10ドライバモデルに準拠するDXEドライバは、コンソールデバイスおよびブートデバイスのソフトウェア抽象化を明確に依頼された場合、最終的にはそれを提供する。
【0035】
DXEドライバのどれでもブートサービスおよび実行時サービスを使ってそれらの機能を実行することができる。しかしながら、初期のDXEドライバは、アーキテクチャのプロトコルすべての登録がすんでいるわけではないので、それらを実行してもすべてのサービスが利用できるわけではないことを知っておく必要がある。DXEドライバは、依存関係の表示を用い、実行前に必要とするサービスおよびプロトコルインターフェースが利用可能であることを保証しなければならない。
【0036】
EFI1.10ドライバモデルに準拠するDXEドライバには前記のような懸念は不要である。これらのドライバは、実行時に、ドライババインディングプロトコルをハンドルデータベースにただ登録すればよい。このオペレーションは、アーキテクチャのプロトコルを使用しなくても実行できる。ドライババインディングプロトコルの登録と関連し、DXEドライバは、インストールコンフィギュレーションテーブル関数を用い、APIを「公開」してもよい。この公開されたドライバは、API318で表される。EFI下では、APIの公開により、他のファームウェア構成要素によりアクセスするためのAPIが公にされる。APIは、DXEドライバがそれぞれの寿命の間に対応するデバイス、バス、または、サービスのためのインターフェースを提供する。
【0037】
BDSアーキテクチャのプロトコルは、BDS位相間で実行する。BDSアーキテクチャのプロトコルは、プレブートサービス環境で実行するさまざまなアプリケーションを見つけ、ロードする。このようなアプリケーションは、従来のOSブートローダ、または、最終的なOSをロードする前にあるいはそれに代わって動作する拡張サービスを表すこともある。このような拡張プレブートサービスは、セットアップ設定、拡張診断、フラッシュアップデートサポート、OEM値追加、または、OSブートコードを含んでもよい。ブートディスパッチャ320は、ブートターゲット、例えば、システムによりブートされるOSの選択を可能にするよう、BDS位相間で用いられる。
【0038】
TSL位相間で、最終OSブートローダ322は、選択されたOSをロードするよう実行される。OSが一旦ロードされてしまえば、ブートサービス306、および、DXEサービス306AのようにAPI318を介しDXEドライバに接続して設けられた多くのサービスは必要なくなる。したがって、OS実行時の間にアクセスできる数の減ったAPIのセットは、図3のAPI316Aおよび318Aとして示される。
【0039】
本発明の原理の下で、OSにトランスペアレントなバンド外通信スキームが用いられることにより、さまざまなタイプの資源をサーバノード全体で共有することが可能になる。同時に、ファームウェアベースの構成要素(ファームウェアドライバおよびAPIなど)が用いられることにより、資源への低レベルのアクセス、および、OOBチャネルにおけるデータのルート変更が容易になる。このスキームは、ブレード群、個別のシャーシ、ラック、または、ラック群を含む多数のコンピューティングプラットフォーム全体で実行されてもよい。システム初期化の間、各プラットフォームに設けられたファームウェアは、OOBチャネル、適切な資源へのアクセス、および、データルート変更機構をセットアップするよう、ロードされかつ実行される。その後、各ブレードは、その共有資源に関する情報を、OOBを介しグローバル資源マネージャに伝送する。グローバル資源マネージャは、データを集め、「仮想」グローバル資源を構成する。グローバル資源記述子形式のグローバル資源構成データがブレードに返送されることにより、ブレードにグローバル資源の構成およびアクセス機構を通知する。その後、ドライバが構成され、グローバル資源へのアクセスをサポート持する。続いて、グローバル資源記述子が、OSロードの間にオペレーティングシステムに渡される。ここでは、仮想グローバル資源は、オペレーティングシステムにはローカルデバイスのように見え、OS実行時のオペレーションの間に、OSコードへの修正を必要とせずにローカルデバイスとして用いられる。プロセスの一実施例に従うフローチャート動作およびロジックが図5および7に示されており、それに対応するさまざまな構成要素間の動作およびやりとりは、図6、8A、および、8Bに示されている。
【0040】
図5によると、プロセスは、資源デバイスドライバおよびOOB通信フレームワークをセットアップするべく、各ブレードでいくつかの初期化オペレーションを実行することにより開始する。開始ブロック500で示すように、パワーオン、または、リセットに応答し、システムは、図3を参照して前述したように、プレブートシステム初期化オペレーションを実行する。まず、各ブレードのブートファームウェアデバイス(BFD)に格納されたファームウェアをロードして実行することにより、ブロック502における初期の初期化オペレーションが実行される。EFI下では、BFDは、システムをブートするためのファームウェアを格納するファームウェアデバイスを含む。例えば、サーバブレード200のBFDは、ファームウェアデバイス208を含む。
【0041】
続いてブロック502では、プロセッサ202がリセットベクトルを介しBFDのブートブロックのベースアドレスに実行をジャンプさせるリセットスタブコードを実行する。ブートブロックは、初期の初期化を実行するためのファームウェア命令を含み、かつ、プロセッサに202よって実行されることにより、CPU、チップセット、および、マザーボードを初期化する。(ウォームブート(リセット)の間は、初期の初期化は実行されないか、または、限られた方式で実行されることに注意。)次に、DXE位相を導く、EFIコアに対応するファームウェア命令が実行される。DXEコア初期化の間に、図3および4を参照して上述したように変数サービスがセットアップされる。DXEコアが初期化されると、DXEディスパッチャ302は、DXEドライバ304をロードし始める。各DXEドライバは、システム構成要素に対応し、その構成要素に直接アクセスするためのインターフェースを提供する。DXEドライバは、OOB通信を容易にするよう続いて用いられるOOBモニタドライバに含まれる。
【0042】
次に、ブロック504で、OOBモニタドライバは、各ブレードの保護された領域にインストールされる。上述したように、オペレーティングシステムにより管理されるネットワーク通信と関わりなく動作するバンド外通信チャネルまたはネットワークが、ブレード間通信を容易にする目的でOSに対しトランスペアレントに用いられる。
【0043】
前述のブロック502におけるシステム初期化オペレーションの間に、システムメモリ204の一部がシステムを管理する目的で用いられるよう、セットアップされる。メモリのこの部分は、SMRAM600と呼ばれ(図6参照)、続いてロードされるオペレーティングシステムからは見えないようになっている。
【0044】
ファームウェアのロードと共に、ファームウェアに格納されたSMM OOB通信コード602がSMRAM600にロードされ、OOB通信を処理するための対応するOOB通信SMMハンドラ604がセットアップされる。SMMハンドラは、一種の割込みハンドラであって、システム管理割込み(SMI)に応答して起動する。次に、システムプロセッサのSMIピンを介し、SMI割込みがアサートされる。SMI割込みに応答し、プロセッサは、その時のコンテキスト(すなわち、その時の実行モード、スタック、および、レジスタ情報などを含む現在のオペレーションに関する情報)を格納し、かつ、その実行モードをそのシステム管理モードに切り替える。その後SMMハンドラは、それらがSMIイベントをサービスするのに適切なハンドラかどうかを決定するべく順次ディスパッチされる。この決定は、どのハンドラが適切であるかを決定するにあたりほとんど待ち時間がないように、SMMハンドラコードにおいて非常に早期になされる。ハンドラが識別されると、SMIイベントのサービスを終了させることができる。SMIイベントのサービスが終了すると、RSM(再開)命令が発せられ、予め保存されたコンテキストデータを用い、プロセッサはそれ以前の実行モードに戻る。最終的な結果としては、SMMオペレーションは、完全にオペレーティングシステムに対し、トランスペアレントになる。
【0045】
図5のフローチャートに戻り、ブレードによってホストされる1つまたはそれ以上の共有可能な資源が見つかるかどうかの決定が決定ブロック506でなされる。一般的に、共有資源は、共有アクセスを可能にするブレード構成要素またはデバイスである。このような構成要素およびデバイスは、固定記憶装置、可換型媒体装置、入力装置(キーボード、マウスなど)、ビデオデバイス、オーディオデバイス、揮発性メモリ(すなわちシステムRAM)、および、不揮発性メモリなどを含むが、これに限定されない。
【0046】
決定ブロック506への返事がYESの場合、ロジックは、発見される共有可能な資源それぞれに対する開始および終了ループブロック508および509それぞれの範囲内で定義されるループ操作の実行に進む。これは、ブロック510における操作を含み、ここで、共有資源を記述するためのデバイス経路が形成され、構成パラメータが収集される。デバイス経路は、外部のユーザに、資源にアクセスするための手段を提供する。構成パラメータは、以下に詳細に説明するグローバル資源を構築するために使用される。
【0047】
ブロック510のオペレーションが実行された後、図示された実施例において、デバイス経路および資源構成情報が、ブロック512におけるOOB通信チャネル610を介し、グローバル資源マネージャ608に伝送されるかまたは同報される。グルーバル資源マネージャは、通常、ブレードの1つ、または、マネジメントカード112などの既存の構成要素によりホストされることもできる。後述するように、一実施例において、複数のローカルグローバル資源マネージャが用いられる。ここでは、グローバル資源マネジメントは、単一のマネージャを用いるよりはむしろ、集合的なプロセスを通じて処理される。グローバル資源マネージャをホストする構成要素のアドレスが公知のアプリオリである場合、その構成要素への選択的な伝送が用いられる。アドレスが知られていない場合、まず、OOBチャネルを介しメッセージが同報され、ホスト構成要素の位置が識別される。
【0048】
前述したようにSMMが隠された実行モード下でのOOB通信は、以下の方法で実行される。まず、ブレード間通信が実行されるブレードにおけるオプロセッサのオペレーティングモードをSMMに切り替える必要がある。したがって、図6のBLADE1のように、プロセッサをSMMに切り替える目的でSMIが生成される。これは、2つの手段のうちの1つにより実行される。1つは、プロセッサSMIピンのアサーション(すなわち、ハードウェアによる生成)、もう1つは、SMI命令を発することによるもの(すなわち、ソフトウェアに基づく生成)である。
【0049】
一実施例では、SMIピンのアサーションは、マネジメントバスなどに適切な信号を配置することにより生成できる。例えば、I2Cを用いてSMBUSが配備されると、バスラインの1つは、各ブレードプロセッサのSMIピンに、そのブレードコネクタを介し直結されてもよい。また、インターフェース平面が同様の結果を生じる個別の手段を提供するようにしてもよい。構成に基づき、すべてのSMIピンが共通に、単一のバスラインに結合されてもよいし、あるいは、バスは、それぞれのブレードに対し個別のSMIピンアサーションを可能にするよう構成されてもよい。さらに、インテル?製などの特定のネットワークインターフェースチップは、従来のネットワーク通信に使用される第1のMACアドレスに加え、「バックチャネル」として使用される第2のMACアドレスを提供する。さらにまた、これらNICは、ビルトインシステム管理機能を提供する。この機能により、第2のMACアドレスを参照する着信がNICによるSMI信号のアサートを可能にする。このスキームは、OOBチャネルが「公衆」ネットワーク(図示せず)として同じ配線上に配備されることを可能にする。
【0050】
一実施例では、OOBチャネルにアクセスするためにファームウェアドライバが用いられる。例えば、OOBチャネルがネットワークまたは直列の手段を介し実行されるとき、ネットワークまたはシリアルポートにアクセスするための適切なファームウェアドライバが提供される。このファームウェアドライバの構成は予め公知であってもよいので(したがってオペレーティングシステムとは独立している)、SMMハンドラは、ファームウェアドライバを介し、OOBチャネルに直接アクセスできる。また、I2Cのような専用マネジメントバスの場合、対応するファームウェアドライバを用いずにSMMハンドラへの直接アクセスが可能になるが、ファームウェアドライバを用いてもかまわない。
【0051】
SMIピンのアサーションに応答し、アサートされたプロセッサは、SMM実行モードに切り替わり、適切なハンドラ(例えば通信ハンドラ604)がディスパッチされるまで、OOB通信を容易にするべくそのSMMハンドラをディスパッチする。そして、OOB通信ネットワーク/チャネルオプションのそれぞれにおいて、ブレードプロセッサがSMMで動作中であるとき、OOB通信が実行され、それによって、通信は、それらのブレードで動作するオペレーティングシステムに対しトランスペアレントになる。
【0052】
ブロック514に従い、グローバル資源マネージャ608により共有デバイス経路および資源構成情報が受信され、同様に、他のブレードの共有デバイス経路および資源構成情報もグローバル資源マネージャにより受信される。
【0053】
本発明の一態様によれば、個々の資源が結合されることにより、グローバル資源を形成してよい。例えば、個別の記憶装置(ハードディスクおよびシステムRAMなど)により提供される記憶領域が集結し、1つまたはそれ以上の「仮想」記憶ボリュームを形成することもできる。これは、ブロック516における資源構成情報を結集させることにより一部実現できる。ハードディスク資源の場合、資源構成情報は、通常、デバイスのアサーションに使用される記憶ブロックの数、分割化情報、および、他の情報などの記憶容量を含んでよい。資源構成情報が収集された後、グローバル資源アクセス機構(例えばAPI)、および、グローバル資源記述子612が構築される。グローバル資源記述子は、資源へのアクセス方法を識別する情報を含み、かつ、資源の構成(グローバルおよび/またはローカルの観点から)を記述する。
【0054】
ブロック516のオペレーション終了後、グローバル資源記述子612は、ブロック518のOOBチャネルを介し、ラック内のアクティブノードに伝送される。この伝送は、ノード対ノードのOOB通信を用い、または、OOB同報通信を介し実行されてよい。グローバル資源記述子の受信に応答し、次の資源処理を導くブロック520におけるノードを受信することによりグローバル資源記述子は格納される。ブロック510、512、514、516、518、および、520のオペレーションは、共有可能なすべての資源が処理されるまで、発見されたそれぞれの資源ごとに同様のやり方で繰り返し実行される。
【0055】
一実施例によれば、共有資源へのアクセスは、ブロック522におけるそれらのグローバル資源APIを介し発見された共有資源にアクセスするよう構成された対応するファームウェアデバイスドライバにより提供される。特定の資源に適用されるときのこのアクセススキームの詳細は、以下に述べる。次のブロック524に示されるように、OSのロードを準備するために前述のように継続してプレブートプラットフォーム初期化オペレーションが行われる。
【0056】
ブロック526におけるOSロードの間に、発見された任意の共有資源に対応するグローバル資源記述子は、オペレーションシステムに渡される。OSに渡されるグローバル資源記述子は、ブロック516で作成されたものと同じであってもなくてもかまわない。本質的に、グローバル資源記述子は、それ自身のデバイスドライバを介しオペレーティングシステムが資源へのアクセスを設定できるようにするための情報を含む。例えば、単一の共有記憶ボリュームの場合、OSは、共有される個別の記憶装置の個別の記憶容量におよぶ記憶容量を有する「ローカル」記憶装置(または任意でネットワーク化された記憶装置)へのアクセスを有することを示す情報を受信する。多数の共有記憶ボリュームの場合は、それぞれの記憶容量情報は、それぞれのボリュームに対するOSに伝えられてよい。OSのロードの完了により、次のブロック528に示されるようなOS実行時オペレーションが導かれる。
【0057】
OSの実行中、グローバル資源は、オペレーティングシステムと、「低レベル」アクセスを共有資源に提供するよう構成されたファームウェア構成要素との組合せによりアクセスされる。最新のOS/ファームウェアアーキテクチャ下では、デバイスアクセススキームは、オペレーティングシステムベンダがそれぞれ個別のデバイスに特有のデバイスドライバの書き込みを必要としないよう、意図的に抽象化され、これらのさらなる明確なアクセスの詳細は、対応するファームウェアドライバにより提供される。このアーキテクチャの成果の1つは、オペレーティングシステムがハードウェアデバイスに直接アクセスしなくてもいいことである。このことは、さまざまな点で有利である。特に、オペレーティングシステムは、デバイスの特別な低レベルアクセス構成を知る必要がない。したがって、個々のデバイスの資源を結集させた「仮想」資源を「構築」でき、適切に構成されたファームウェアドライバを介しこのようなデバイスに対応するアクセスが抽象化されることにより、OSは、仮想資源が実際のローカルデバイスであるとみなすようになる。
【0058】
一実施例において、この抽象化されたアクセススキームは、図8Aおよび8Bに示されるような多層アーキテクチャとして構成される。各ブレードBLADE1およびBLADE2は、OSデバイスドライバ800−1および800−2と、マネジメント/アクセスドライバ802−1および802−2と、資源デバイスドライバ804−1および804−2と、OOB通信ハンドラ604−1および604−2とを含むアーキテクチャ構成要素のそれぞれのコピーを有する。
【0059】
図7は、一実施例に従う共有資源にアクセスするための例示的プロセスを示すフローチャートである。このプロセスは、開始ブロック700で示されるように、リクエスタからのアクセス要求により開始する。典型的なリクエスタは、プラットフォームのオペレーティングシステムで実行するアプリケーションであってもよい。このようなアプリケーションに対応する実行可能なコードは、図8Aおよび8Bにおける実行時(RT)アプリケーション(APP)806および808により示されるようなシステムメモリ204に通常格納される。例えば、実行時アプリケーション806が共有データ記憶資源へのアクセスを望んでいると仮定する。この例では、アクセス要求は、予め格納されたファイルのオープンに対応する。ファイルの場所(ドライブ指定、経路およびファイル名など)が提供されると、実行時アプリケーションは、まず、ファイルにアクセスするようオペレーティングシステム(810)に要求する。ドライブ指定は、ブレード1の資源1と、ブレード2の資源2とを含む複数のディスクドライブ218を備える仮想グローバル記憶資源に対しオペレーティングシステムにより予め割り当てられたドライブレターである。
【0060】
要求に応答し、オペレーティングシステム810は、ブロック702における記憶資源にアクセスするべくそのOSデバイスドライバ800−1を用いる。通常、OSデバイスドライバ800−1が資源ドライバ804−1と直接インターフェースして資源1にアクセスする。しかしながら、マネジメント/アクセスドライバ802−1が代わりにアクセスされる。このような変更を実現するためには、APIのようなインターフェース情報がOSロードの間にOSに伝えられ、それによって、OSは、対応する資源(例えば資源1)にアクセスする要求があるときはいつでも、マネジメント/アクセスドライバ802−1にアクセスするよう命じられる。
【0061】
どの共有資源がその要求にサービスを提供するかを決定するべく、適切な資源がアクセスできる特定のホストを識別するための機構が提供される。一実施例において、この機構は、グローバル資源マップにより実現が容易になる。図8aの実施例において、共通のグローバル資源マップのローカルコピー812−1、および、812−2は、ブレードBLADE1およびBLADE2のそれぞれに格納される。図8Bの実施例では、共有グローバル資源マップ812Aは、グローバル資源マネージャ608によりホストされる。グローバル資源マップは、特定の資源と、それら特定の資源によりホストされるグローバル資源の一部分とを一致させる。
【0062】
続いて図7のフローチャートのブロック704において、マネジメント/アクセスドライバがローカルグローバル資源マップ812を問い合せ、特定のアクセス要求下にある資源のホストを決定する。この資源および/またはこれのホストは、例示された「資源ターゲット」として知られ、BLADE2にホストされる資源2を含む。
【0063】
一旦資源ターゲットが識別されると、OOB通信オペレーションは、資源アクセス要求を資源ターゲットに送る。まず、要求するプラットフォーム(例えば802−1)におけるマネジメント/アクセスドライバは、SMIをアサートし、そのプラットフォームローカルOOB通信ハンドラ604−1を起動する。それに応答し、BLADE1のプロセッサは、ブロック708で、モードをSMMに切り替え、OOB通信ハンドラ604−1が起動するまでにそのSMMハンドラをディスパッチする。すると、OOB通信ハンドラは、資源ターゲットホスト(BLADE2)におけるSMI信号をアサートし、2つのブレード間のOOB通信を開始する。SMIに応答し、BLADE2におけるプロセッサモードは、ブロック710において、そのOOB通信ハンドラを起動するSMMに切り替えられる。この時点で、ブレード1および2は、OOBチャネル610を介し通信できるようにされ、アクセス要求は、OOB通信ハンドラ604−2により受信される。一実施例において、資源アクセス要求が送信された後、「RSM]命令がBLADE1のプロセッサに発せられることにより、プロフェッサのオペレーティングモードは、SMMに切り替わる前のモードへと戻る。
【0064】
次に、ブロック712において、アクセス要求は、マネジメント/アクセスドライバ802−2にそのAPIを介し送られる。任意の実施例において、その後ブロック714においてクエリが実行され、アクセス要求を受信するプラットフォームがターゲット資源の実際のホストであることを確認する。もし正しいホストでない場合、一実施例では、そのことを示すリクエスタメッセージが返送される(図示せず)。他の実施例では、適切なグローバル資源マネージャが状況を把握している。基本的には、ローカルグローバル資源マップが異なる情報を含む場合(すなわちもはや同期しない)にこの状況は起きる。すると、グローバル資源マネージャは、コマンドを発し、ローカルグローバル資源マップを再び同期させる(図示せず)。
【0065】
続いてブロック716では、プラットフォームホストの資源デバイスドライバ(804−2)が用いられ、アクセス要求にサービスを提供するよう、資源(例えば資源2)にアクセスする。本実施例では、アクセスは、要求されたデータファイルを返す。そして、ブロック718において、要求に対応するデータが、OOBチャネル610を介し、リクエスタに戻される。通信終了時において、BLADE2のプロセッサにRSM命令が発せられ、プロセッサのオペレーティングモードは、SMMに切り替わる前のモードに戻る。
【0066】
特定の実施によっては、リクエスタのプロセッサは、この時点でSMMにしてもしなくてもよい。例えば、前述の実施例において、リクエスタ(BLADE1)のプロセッサは、ブロック708において、SMMから切り替わる。この場合、ブロック722において新たなSMIがアサートされ、OOB通信ハンドラを起動させる。(任意のスキームに従い)アクセス要求を送信した後もSMMモードが終了しない場合、OOB通信ハンドラは、返送されるデータを受信するよう、すでに待機中である。いずれにせよ、ブロック724にで、返送されるデータは、OOBチャネル610を介し受信され、リクエスタのマネジメント/アクセスドライバ(802−1)へと渡される。次に、ブロック726でこのファームウェアドライバは、データをOSデバイスドライバ800−1に送り、その後ブロック728で、そのデータは、オペレーティングシステムを介し、リクエスタにより受け取られる。
【0067】
図8Bの実施例において、グローバル資源マップのローカルコピーの代わりに、単一のグローバル資源マップを用い、同様の資源アクセスプロセスが実行される。要するに、ローカルグローバル資源マップを用いるのではなく、グローバル資源マネージャ608が資源にアクセスするためのプロキシとして用いられることを除けば、図8Aを参照して上記に述べたのと同じような数多いオペレーションである。したがって、資源アクセス要求は、識別された資源ターゲットに直接送られるのではなく、OOBチャネル610を介しグローバル資源マネージャ608に送信される。要求の受信と同時に、グローバル資源マップ812Aの探索が実行され、資源ターゲットが決定される。続いて、データ要求は、リクエスタを識別する情報と共に、識別された資源ターゲットへと送られる。要求の受信と同時に、任意のオペレーション714を除くブロック712−728のオペレーションが実行される。
【0068】
前述のスキームは、それぞれが各自の有する効果を発揮する。ローカルグローバル資源マップが用いられた場合、プロキシは必要なく、したがって、ブレードサーバ構成要素で実行するソフトウェアコンポーネントを変える必要もない。しかしながら、グローバル資源マップの同期化を促進する機構は必要なので、各ブレードに対するマネジメントオーバヘッドは増大する。単一のグローバル資源マネージャを用いる主な利点は、グローバル資源マップの同時発生が保証され(コピーが1つだけなので)、マップへの変更が個々のブレードの協力なしで行えることである。ほとんどの実施例において、主な欠点は、グローバル資源マネージャ機能のためのホストがどうしても必要になることである。通常、ホストは、マネジメント構成要素、あるいは、ブレードの1つである(例えば指名選択またはデフォルト選択されたブレード)。
【0069】
一実施例において、グローバル資源マネージャにサービスを提供するブレードは、指名プロセスによって識別され、その場合、各ブレードは、マネジメントタスクを実行するためのファームウェアを含んでよい。一般的に、指名スキームは、シャーシスロットのような物理的割当て、または、ファーストイン順序スキームなどの活性化スキームに基づいてよい。例えば、スロットに基づくスキームでは、最下位のスロット割当てを有するブレードは、電源決定タスクが割り当てられる。このブレードが取り除かれた場合は、残りのブレードの中から、最下位スロット割当てを有するブレードが、グローバル資源マネージャのホストとなるよう指名されることもある。ファーストイン順序スキームでは、各ブレードは、ブレードが挿入されたかまたは起動された順序に基づき、挿入順序識別子(例えばナンバー)に割り当てられる。グローバルマネジメントタスクは、最初にインストールされたブレードである最も小さいナンバーのブレードに割り当てられる。このブレードが取り除かれると同時に、次に小さいインストールナンバーのブレードが新たな電源決定器として指名される。グローバル資源マネージャにおける変更全体の連続オペレーションを確実にする目的で、冗長スキームが実行され、そこで第2のブレードがライブバックアップとして指定される。
【0070】
通常、グローバル資源マッピングデータは、システムメモリ内、または、ファームウェア変数データとして格納されてよい。ファームウェア変数データとして格納された場合、マッピングデータは、プラットフォームのシャットダウンの間持続できる。一実施例において、マッピングデータは、オペレーティングシステムから見えないシステムメモリの一部が格納される。システムメモリの見えない部分は、プレブートオペレーションの間、SMRAMの一部またはファームウェアによりリザーブされるメモリの一部を含んでよい。シャットダウンの間グローバル資源マッピングデータを持続させるやり方として、ディスクドライブのような持続性記憶装置にデータを格納する方法がる。しかしながら、ディスクドライブを用いる場合は、マッピングデータをディスクドライブのホスト保護領域(HPA)など、プラットフォームオペレーティングシステムにアクセスされないように格納することが推奨される。グローバル資源マッピングデータが中央レポジトリに格納される場合(すなわち、図8Bの実施例により示されるように)、上記に提示されたものと同様のさまざまな記憶オプションを用いることもできる。グローバル資源マネージャが複数のサーバブレード以外の構成要素によりホストされる場合(例えば、マネジメントカード112または外部マネジメントサーバによりホストされる場合)、それらのホストには、ブレードで動作するオペレーティングシステムがアクセスできないので、ディスク記憶装置は安全に実行されることができる。
【0071】
資源共有のより特殊な実施例を図9A−Bおよび10A−Bに示す。これらのケースでは、共有される資源は、ディスクドライブ218を含む。図9Aおよび10Aに示された実施例900において、複数のディスクドライブ218により提供される記憶資源は、仮想記憶ボリューム"V:"を形成するよう結集される。説明を明確にするべく、各ディスクドライブの記憶資源は、10ブロックを含むI/O記憶群それぞれとして示される。さらに、各ブレード1−16は、単一のディスクドライブ218のホストであることが示されている。実際の実行において、各ブレードは、0−Nディスクドライブをホストしてもよく(その構成に基づく)、各ディスクドライブのブロック数は、変化してよい。また、実際のブロック数は、ここに示されているものより桁違いに多くすることもできる。
【0072】
オペレーティングシステムの見地からすると、仮想記憶ボリュームV:は、単一の記憶装置である。一般的に、共有記憶資源は、1−N仮想記憶ボリュームとして構成され、各ボリュームは、記憶装置のそれぞれのセットごとに張られた空間である。現実には、仮想記憶ボリュームV:は、16のディスクドライブ218におよぶ。これを実現するため、ルックアップテーブル1000を含むブローバル資源マップが用いられる。ルックアップテーブルは、I/Oブロックのそれぞれの範囲をI/Oブロックをホストするディスクドライブが存在するブレードにマップする。多数のディスクドライブをホストすることが可能な単一のブレードの場合、マップは、各ブレードにおける特定の記憶装置を識別する情報をさらに含むこともある。一般的に、ブレード数を単純に識別するよりはむしろ、アドレッシングスキームが用いられているが、説明を明確かつ単純にするため、ブレード数を割り当てて示している。
【0073】
図9Bおよび10Bは、RAID(個別ディスクの冗長配列)−1標準に従うミラーリングおよびデュプレキシングを用いたRAID実施例902を示す。RAID−1において、記憶装置のそれぞれのセットが対になり、データは、データの同一セットが対になった各記憶装置に書き込まれることにより、反映される。前述と同様の方法において、集結した記憶は、オペレーティングシステムに対し、仮想ボリュームV:として見える。図示された実施例において、記憶装置の数および種類は、実施例900の記憶装置と同一であり、したがって、仮想ボリュームのブロックI/O記憶容量は、80ブロックに半減する。グローバル資源マッピングは、オペレーティングシステムが対応するブロックI/Oアクセス要求を作成するとき、どのディスクドライブがアクセスされるかを決定するためのルックアップテーブル1002に含まれる。ディスクドライブの対は、AからHまでのラベルが付けられた論理記憶装置エンティティに分割される。
【0074】
RAID−1の原理に従い、論理記憶装置エンティティへの書き込みアクセスが実行されたとき、データは、基になる記憶装置それぞれに書き込まれる。一方、読み込みアクセスの間は、データは、(概ね)単一の記憶装から検索される。RAID−1の実施の複雑さによっては、記憶装置の対の1つがデフォルト読み込みデバイスとして割当てられるか、または、記憶装置の両方により、並列読取り(デュプレキシング)を考慮に入れたこの機能を容易にすることができる。
【0075】
図示された構成に加え、1つ、または、それ以上のディスクドライブ218を「ホットスペア」として用いる構成もある。この場合、ホットスペア記憶装置は、通常のアクセス操作の間には用いられず、故障したデバイスまたはブレードと交換するための予備となる。規格では、ホットスペアの交換が発生すると、(対の)故障していないデバイスに格納されたデータが交換デバイスに書き込まれることにより、記憶システムは、完全な冗長状態に戻る。これは、インタラクティブな方法で実行してもよく(例えば、並行して新たなデータ書き込みを許容するなど)、または、新たな書き込みを許容する前に実行してもよい。
【0076】
一般的に,RAID−1スキームは、単一のグローバル資源マネージャを用いるか、または、ローカルマネジメントを介すかのいずれかにより展開されることができる。例えば、(スタティック資源構成に対応して)「スタティック」マップが用いられる場合、適切なマッピング情報は、各ブレードに格納されることができる。一実施例では、この情報は、ファームウェア変数データとして格納されることもでき、それによって、プラットフォームのリセットまたはシャットダウンの間も持続することができる。動的な構成環境では、構成変化に対応するアップデートされた資源マッピングを少なくとも決定するための中央グローバル資源マネージャを用いることが望ましい。
【0077】
RAID−1に加え、RAID−0、RAID−2、RAID−3、RAID−5、および、RAID−10を含む他のRAID標準冗長記憶スキームを用いてもよい。これらのスキームはそれぞれある形式のストライピングを含むので、グローバル資源マップの複雑さが実質的に増す。さまざまな理由から、個別のローカルマネージャよりはむしろ中央グローバル資源マネージャを介した方が、RAID−0、RAID−2、RAID−3、RAID−5、および、RAID−10の実行は、より容易になる。
【0078】
前述の原理は、ブレードサーバ環境を背景に述べられているが、これに限定されない。各ブレードは、ラックマウントサーバ、または、スタンドアロンサーバなどの独立したプラットフォームとみなしてよく、複数のプラットフォームにわたる資源共有は、OOBチャネルを介し、前述と同様のやり方で実現することができる。例えば、ラックマウントサーバ構成における配線および/またはルーティングは、OOBチャネルをサポートする目的で提供されてよい。
【0079】
ラックマウントサーバなどに適切である、本発明の特定の実施例は、通常KVMとして知られる共有キーボード・ビデオ・マウスI/Oに関する。典型的なラックサーバでは、KVMスイッチが用いられることにより、単一のキーボード、ビデオディスプレイ、および、マウスがラック内のすべてのサーバに共有されることができるようになる。KVMスイッチは、別々のサーバから(それぞれのケーブルを介し)単一のキーボード、ビデオ、および、マウスI/OポートにKVM信号を送り、それによって、選択されたサーバのKVM信号は、選択ノブを回すことにより、または、入力信号源を選択することにより、アクセスされることができる。高密度サーバでは、配線および設置にかかるコストに加え、KVMスイッチに1500ドルの費用がかかることもある。また、KVM配線は、ベンチレーションおよびアクセスの可能性を低下させる。
【0080】
前述した問題は、図11-13に示された共有KVM実施例により解決される。図11では、複数のラックマウントサーバ1100のそれぞれは、スイッチ1102、および、対応するイーサネット配線(ネットワーク雲1104として図示)を介し他のサーバに接続される。各サーバ1100は、プロセッサ1108、メモリ1110、ファームウェア記憶装置1112、および、NIC1114を含む複数の構成要素がその上に装着されるかまたはそれに結合されるメインボード1106を含む。複数のI/Oポートも、マウスおよびキーボードポート1116および118と、ビデオポート1120とを含むメインボードに結合される。通常、各サーバは、複数のディスクドライブ1122を含む。
【0081】
上述のNICに基づくバックチャネルOOBスキームによれば、各サーバ1100のNIC1114に割り当てられた第2のMACアドレスが用いられることにより、OOBチャネル1124をサポートする。キーボード1126、ビデオディスプレイ1128、および、マウス1130は、それぞれのケーブルを介し、サーバ1100Aの後部に配置されたI/Oポート1118、1120、および、1116にそれぞれ結合される。各サーバ1110におけるファームウェアは、サーバ1100Aを介し、KVM信号をキーボード1126、ビデオディスプレイ1128、および、マウス1130に送るローカルグローバル資源マップ1132をホストするためのサポートを提供する。
【0082】
サーバ1100Nで動作するオペレーティングシステムは、通常、実行時アプリケーションへのユーザ入力に応答し、ビデオディスプレイをアップデートする要求を受信する。オペレーティングシステムは、そのOSビデオドライバ1200Nを用いて変更を実現する。OSビデオドライバは通常、オペレーティングシステムにより維持される仮想ビデオディスプレイに基づき、ビデオデータを生成し、仮想−物理ディスプレイマッピングが実行される。例えば、異なる解像度を有するモニタに表示される同じテキスト/グラフィックコンテンツには、解像度に特有の異なるビデオデータが必要である。そして、OSビデオドライバがビデオルータドライバ1202Nとインターフェースすることにより、ビデオデータは、宛先デバイスであると思われる、サーバ1100Nのビデオシップ1206Nに送られる。オペレーティングシステムに関する限り、ビデオルータドライバ1202Nは、サーバのファームウェアビデオデバイスドライバ、すなわち、ビデオデバイスドライバ1204Nである。しかしながら、ビデオデータの受信と同時に、ビデオルータドライバ1202Nは、グローバル資源マップ1134Nのルックアップにより、ビデオデータ宛先サーバを探索し、かつ、OOB通信ハンドラ604Nおよび604Aを介し、サーバ1100AとのOOB通信を会しするよう、SMIをアサートする。
【0083】
受信と同時に、ビデオデータは、ビデオデバイスドライバ1204Aを介し、ビデオチップ1206Aに書き込まれる。前述と同じ方法で、ビデオデータは、OOB通信ハンドラ604Aからビデオデバイスドライバ1204Aに直接渡されるか、または、ビデオルータドライバ1202Aを介し送られてもよい。ビデオデータの受信に応答し、ビデオチップ1206Aは、ビデオポート1120を介しビデオモニタ1128により受信されるそのビデオ出力信号をアップデートする。オプションとして、グローバル資源マップ1134Aの検証ルックアップを実行することにより、サーバ1100Aが正しいビデオデータ宛先サーバであることを検証してもよい。
【0084】
キーボードおよびマウス信号は、同様な方法で処理される。ビデオと同様に、オペレーティングシステムは、通常、ポインティングデバイスの仮想位置が仮想ビデオディスプレイと相互参照されることができる仮想ポインタマップを維持し、これによって、ビデオディスプレイに関するカーソルの位置を決定することができる。また、マウス情報は、ビデオ信号の逆ルートを横断する。これは、サーバ1100Aを介し受信されたマウス入力がOOBチャネルを介し、選択されたプラットフォーム(例えばサーバ1100N)に伝えられるということであり、サーバ1100Aのグローバル資源マップ1134Aをアップデートすることにより、正しい宛先プラットフォームを反映することが要求される。同様に、ルーティングキーボード信号も、マップのアップデートを要求する。キーボード信号との違いは、それらが双方向性であることであり、したがって、入出力両方のデータルート変更が要求される。
【0085】
図13に、キーボード入力信号処理プロトコルスタックおよびフローチャートの例を示す。ソフトウェア側のサーバ1100Nのプロトコルスタックは、オペレーティングシステムキーボードドライバ1300Nを含み、一方、ファームウェア構成要素は、キーボードルータドライバ1302N、ビデオデバイスドライバ1304N、および、OOB通信ハンドラ604Nを含む。また、ファームウェア構成要素は、サーバ1100Aのプロトコルスタックも含む。
【0086】
キーボード1126を介したユーザ入力に応答し、キーボード入力信号が生成され、キーボードポート1118Aを介し、キーボードチップ1306Aにより受信される。その後、キーボードチップ1306は、キーボードデバイスドライバ1304Aにより受信される対応するキーボード(KB)データを生成する。この時点で、キーボード入力の処理は、資源共有に携わらない単一のプラットフォーム(例えばディスクトップコンピュータ)で実行されるのと同一である。通常、キーボードデバイスドライバ1304AがOSキーボードドライバ1300Aとインターフェースすることにより、キーボードデータをオペレーティングシステムに伝える。しかしながら、キーボードデータを受信するべく対象とされたOSキーボードドライバは、サーバ1100Nで稼動している。したがって、キーボードデバイスドライバ1304により処理されるビデオデータがキーボードルータドライバ1302Aに伝えられることにより、キーボードデータのルート変更が容易になる。
【0087】
キーボードデータの受信に応答し、キーボードルータドライバは、グローバル資源マップ1134を問合せ、キーボードデータのルート変更先であるターゲットサーバを決定する。(本例ではサーバ1100N)。そして、キーボードルータドライバは、SMIをアサートし、サーバ1100Aで動作するプロセッサをSMMにし、キーボードデータをサーバターゲット識別データと共にOOB通信ハンドラ604Aに伝える。そして、OOB通信ハンドラ604AがOOB通信ハンドラ604Nとやり取りすることにより、OOBチャネル1124を介しての2つのサーバ間のOOB通信が容易になり、次にキーボードデータがOOB通信ハンドラ604Nにより受信されるようになる。キーボードデータの受信に応答し、OOBハンドラ604Nは、受信したキーボードデータをキーボードルータドライバ1302Nに転送する。この時、キーボードルータドライバは、キーボードデータを直接OSキーボードドライバ1300Nに渡してもよいし、あるいは、データをOSキーボードドライバ1300Nに渡す前に、グローバル資源マップ1134Nのルーティング検証ルックアップを実行することにより、サーバ1100Nがキーボードデータを受信するべき正しいサーバであることを保証するようにしてもよい。そして、OSキーボードドライバは、キーボードデータを処理し、処理済のデータを、カレントフォーカスを有する実行時アプリケーションに提供する。
【0088】
以上説明した本発明の実施例は、要約書に記載された事項を含むが、それに限定されない。上述した例示的な実施例は、当業者であれば本発明の範囲および原理を逸脱することなく様々に修正および変更できることが理解できよう。
【0089】
前述の詳細な説明を考慮し、本発明は様々に修正できる。特許請求の範囲に用いられる用語は、本発明を明細書に記載された特定の実施例および特許請求の範囲に限定するものと解釈すべきではない。本発明の範囲は、特許請求の範囲の請求項に記載した全ての範囲内によって決定されるべきである。
【図面の簡単な説明】
【0090】
【図1A】複数のサーバブレードが設置されるブレードサーバシャーシの例を示す正面等角図である。
【図1B】図1Aのブレードサーバシャーシの後部等角図である。
【図1C】図1Aおよび図1Bに対応する複数のラックマウントブレードサーバシャーシが設置されるブレードサーバラックの正面等角図である。
【図2】典型的なサーバブレードの構成要素の詳細を示す図である。
【図3】ACPI標準に従うパワーマネジメントを展開するために用いられるさまざまなファームウェアおよびオペレーティングシステムを示す概略ブロック図である。
【図4】本発明の一実施例に従うパワーマネジメントスキームを実行するためのブレードを設定するブレード初期化の間に用いられるオペレーションおよびロジックを示すフローチャートである。
【図5】本発明の一実施例に従う資源共有をセットアップする初期化プロセスの間に用いられるオペレーションおよびロジックを示すフローチャートである。
【図6】図6の初期化プロセスの間に発生する様々なデータフローを示す概略図である。
【図7】本発明の一実施例に従う要求にサービスを提供するコンピューティングプラットフォームの要求時に受信される資源アクセス要求に応答して用いられるオペレーションおよびロジックを示すフローチャートである(サービスを提供する資源は、他のコンピューティングプラットフォームによりホストされる)。
【図8A】ローカルグローバル資源マップを用いての、共有資源アクセスにおける対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図8B】グローバル資源マネージャによりホストされる単一のグローバル資源マップを用いての、共有資源アクセスにおける対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図9A】複数のディスクドライブの記憶容量となる仮想記憶ボリュームとして構成される共有記憶資源を示す概略図である。
【図9B】図9Aの共有記憶資源スキームとの相違を示す概略図である(RAID−1は資源アクセスの間に実行される)。
【図10A】図9Aの仮想記憶ボリュームスキームの更なる詳細を示す概略図である。
【図10B】図9BのRAID−1実行の更なる詳細を示す概略図である。
【図11】本発明の一実施例に従う共有キーボード、ビデオ、および、マウス(KVM)アクセススキームを示す概略図である。
【図12】ビデオ資源の共有をサポートする対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【図13】ユーザ入力資源の共有をサポートする対のコンピューティングプラットフォーム間のデータフローを示す概略図である。
【特許請求の範囲】
【請求項1】
複数のコンピューティングプラットフォームで資源を共有する方法であって、
共有資源にアクセスするための資源アクセス要求を第1のコンピューティングプラットフォームで受信するステップと、
共有資源へのアクセスを可能にする第2のコンピューティングプラットフォームを決定するステップと、
前記第2のコンピューティングプラットフォームに前記資源アクセス要求を送信するステップと、
前記第2のコンピューティングプラットフォームを介し、前記共有資源にアクセスするステップと、
を含むことを特徴とする方法。
【請求項2】
前記方法は、
前記複数のコンピューティングプラットフォームが、ブレードサーバ環境で動作する複数のサーバブレードを備えることを特徴とする、請求項1に記載の方法。
【請求項3】
前記方法は、
前記複数のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに実行されることを特徴とする、請求項1に記載の方法。
【請求項4】
前記方法は、
前記複数のコンピューティングプラットフォームのそれぞれで動作するファームウェアにより実現が容易になることを特徴とする、請求項1に記載の方法。
【請求項5】
前記方法は、
前記資源アクセス要求が、バンド外(OOB)の通信チャネルを介し、前記第2のコンピューティングプラットフォームに送信されることを特徴とする、請求項1に記載の方法。
【請求項6】
前記方法は、
前記OOB通信チャネルが、システム管理マネジメントバス、イーサネットネットワーク、または、シリアル通信リンクの1つを備えることを特徴とする、請求項5に記載の方法。
【請求項7】
前記方法は、
目標となる資源が記憶装置を含むことを特徴とする、請求項5に記載の方法。
【請求項8】
前記方法は、
前記資源アクセス要求が、記憶装置書き込み要求を含み、前記方法は、該記憶装置書き込み要求に対応するデータを、前記OOB通信チャネルを介し送信するステップをさらに含むことを特徴とする、請求項7に記載の方法。
【請求項9】
前記方法は、
前記資源アクセス要求が記憶装置読み取り要求を含み、前記方法は、
前記共有資源から前記読み取り要求に対応するデータを検索するステップと、
前記OOB通信チャネルを介し、前記検索したデータを前記第1のコンピューティングプラットフォームに返送するステップと、
をさらに備えることを特徴とする、請求項7に記載の方法。
【請求項10】
前記方法は、
コンピュータプラットフォームを介しアクセス可能なのはどの資源であるかを識別するグローバル資源マッピングデータを維持するステップと、
前記グローバル資源マッピングデータを用い、前記共有資源へのアクセスに用いられるのはどのコンピューティングプラットフォームかを決定するステップと、
をさらに備えることを特徴とする、請求項1に記載の方法。
【請求項11】
前記方法は、
前記複数のコンピューティングプラットフォームのそれぞれにおいて、グローバル資源マッピングデータのローカルコピーが維持されていることを特徴とする、請求項10に記載の方法。
【請求項12】
前記方法は、
前記グローバル資源マッピングデータが、中央グローバル資源マネージャにより維持されることを特徴とする、請求項10に記載の方法。
【請求項13】
複数のコンピューティングプラットフォームで複数の記憶装置を共有する方法であって、
前記複数の記憶装置を仮想記憶ボリュームとして形成するステップと、
前記仮想記憶ボリュームとして定義される入出力(I/O)ブロックを、該I/Oブロックを実際にホストする対応する記憶装置にマップするグローバル資源マップを維持するステップと、
前記仮想記憶ボリュームを介しそこからデータがアクセスされるI/Oブロックを識別するデータアクセス要求を受信するステップと、
前記I/Oブロックを実際にホストするターゲット記憶装置へのアクセスが前記グローバル資源マップの使用を通じて可能になるコンピューティングプラットフォームを識別するステップと、
前記識別されたコンピューティングプラットフォームに前記データアクセス要求を転送するステップと、
前記識別されたコンピューティングプラットフォームを介し、前記ターゲット記憶装置のI/Oブロックにアクセスするステップと、
を含むことを特徴とする方法。
【請求項14】
前記方法は、
前記複数の記憶装置を少なくとも1つのRAID(個別ディスクの冗長配列)記憶ボリュームとして構成するステップと、
前記少なくとも1つのRAID仮想記憶ボリュームとして定義された入出力(I/O)ブロックを、該(I/O)ブロックを実際にホストする対応する記憶装置にマップするRAID構成マッピング情報を維持するステップと、
読み書きアクセス要求に応答し、適切な記憶装置にアクセスするよう、前記RAID構成マッピング情報を用いるステップと、
をさらに含むことを特徴とする、請求項13に記載の方法。
【請求項15】
前記方法は、
前記RAID仮想記憶ボリュームが、前記RAID−1標準に従い構成されることを特徴とする、請求項14に記載の方法。
【請求項16】
複数のコンピューティングプラットフォームで入力装置を共有する方法であって、
第1のコンピュータプラットフォームにおいて、第1のプラットフォームに結合される入力装置により生成される入力信号の受信に応答して生成される入力データを、第2のコンピューティングプラットフォームに転送するステップと、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに前記入力データを提供するステップと、
を含むことを特徴とする方法。
【請求項17】
前記方法は、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに、ファームウェアによって実行されることを特徴とする、請求項16に記載の方法。
【請求項18】
前記方法は、
前記入力装置が、キーボードおよびマウスの1つを含むことを特徴とする、請求項16に記載の方法。
【請求項19】
複数のコンピューティングプラットフォームで、キーボード、ビデオ、および、マウス資源を共有する方法であって、
ユーザ入力に応答し、資源ホストコンピューティングプラットフォームで生成されるユーザ入力データを、該資源ホストコンピューティングプラットフォームに結合されたキーボードおよびマウスを介し、ターゲットコンピューティングプラットフォームに転送するステップと、
前記ユーザ入力データを、前記ターゲットコンピューティングプラットフォームで動作するオペレーティングシステムに提供するステップと、
前記ターゲットコンピューティングプラットフォームで動作するオペレーティングシステムにより生成されるビデオデータを、前記資源ホストコンピューティングプラットフォームに転送するステップと、
前記ビデオデータを前記資源ホストコンピューティングプラットフォームで処理することにより、前記資源ホストコンピューティングプラットフォームに結合されるビデオディスプレイを駆動するビデオディスプレイ信号を生成するステップと、
を含むことを特徴とする方法。
【請求項20】
前記方法は、
前記資源ホストおよびターゲットコンピューティングプラットフォームのそれぞれに格納されたファームウェアにより容易に実現されることを特徴とする、請求項19に記載の方法。
【請求項21】
前記方法は、
前記資源ホスト、および、前記ターゲットコンピューティングプラットフォームを識別するグローバル資源マッピング情報を維持するステップをさらに含むことを特徴とする、請求項19に記載の方法。
【請求項22】
前記方法は、
前記ユーザ入力およびビデオデータが、バンド外通信チャネルを介し転送されることを特徴とする、請求項19に記載の方法。
【請求項23】
命令がその上に格納された機械可読媒体を含む製品であって、第1のコンピューティングプラットフォームに結合されたキーボード、ビデオ、および、マウス資源の共有をサポートする第1および第2のコンピューティングプラットフォームにおいて、前記命令は、
前記キーボードおよびマウスを介し、ユーザ入力に応答して前記第1のコンピューティングプラットフォームで生成される入力データを第2のコンピューティングプラットフォームに転送するステップと、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに前記入力データを提供するステップと、
前記第2のコンピューティングプラットフォームで動作する前記オペレーティングシステムにより生成されたビデオデータを、前記第1のコンピューティングプラットフォームにおけるビデオ信号生成構成要素に転送するステップとを含む動作を実行することを特徴とする製品。
【請求項24】
前記製品は、
前記命令がファームウェア命令を含むことを特徴とする、請求項23に記載の製品。
【請求項25】
前記製品は、フラッシュデバイスを含むことを特徴とする、請求項23に記載の製品。
【請求項26】
前記製品は、前記動作が、前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに実行されることを特徴とする、請求項23に記載の製品。
【請求項27】
ブレードサーバシステムであって、
それぞれのサーバブレードが挿入可能な複数のスロットを含むシャーシと、
挿入されたサーバブレードのそれぞれのコネクタと嵌合する複数のコネクタを有し、かつ、前記複数のコネクタ間に通信経路を提供することにより、バンド外(OOB)通信チャネルにおける実現を容易にするインターフェース平面と、
複数のサーバブレードとを含み、前記複数のサーバブレードのそれぞれは、その上で実効可能なプロセッサおよびファームウェアを含み、該プロセッサおよびファームウェアは、
前記複数のサーバブレードの少なくとも1つによりホストされる共有資源へのアクセスを要求するサーバブレード上で動作するオペレーティングシステムからの資源アクセス要求を受信するステップと、
前記資源アクセス要求にサービスを提供できるターゲット資源をホストする前記複数のサーバブレードの中からターゲット資源ホストを決定するステップと、
前記資源アクセス要求を前記ターゲット資源ホストに送信するステップと、
前記ターゲット資源ホストを介し前記ターゲット資源にアクセスすることにより、前記資源アクセス要求にサービスを提供するステップとを含む動作を実行することを特徴とするブレードサーバシステム。
【請求項28】
前記ブレードサーバシステムは、
前記動作が、前記複数のサーバブレード上で実行されることが可能なオペレーティングシステムに対し、トランスペアレントに実行されることを特徴とする、請求項27に記載のブレードサーバ。
【請求項29】
前記ブレードサーバシステムは、
前記複数のサーバブレード間の通信が、バンド外OOB通信チャネルにより容易に実現されることを特徴とする、請求項27に記載のブレードサーバシステム。
【請求項30】
前記ブレードサーバシステムは、前記各プロセッサが、前記OOBチャネルを介しての通信を容易にするために用いられる隠し実行モードをサポートすることを特徴とする、請求項29に記載のブレードサーバシステム。
【請求項1】
複数のコンピューティングプラットフォームで資源を共有する方法であって、
共有資源にアクセスするための資源アクセス要求を第1のコンピューティングプラットフォームで受信するステップと、
共有資源へのアクセスを可能にする第2のコンピューティングプラットフォームを決定するステップと、
前記第2のコンピューティングプラットフォームに前記資源アクセス要求を送信するステップと、
前記第2のコンピューティングプラットフォームを介し、前記共有資源にアクセスするステップと、
を含むことを特徴とする方法。
【請求項2】
前記方法は、
前記複数のコンピューティングプラットフォームが、ブレードサーバ環境で動作する複数のサーバブレードを備えることを特徴とする、請求項1に記載の方法。
【請求項3】
前記方法は、
前記複数のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに実行されることを特徴とする、請求項1に記載の方法。
【請求項4】
前記方法は、
前記複数のコンピューティングプラットフォームのそれぞれで動作するファームウェアにより実現が容易になることを特徴とする、請求項1に記載の方法。
【請求項5】
前記方法は、
前記資源アクセス要求が、バンド外(OOB)の通信チャネルを介し、前記第2のコンピューティングプラットフォームに送信されることを特徴とする、請求項1に記載の方法。
【請求項6】
前記方法は、
前記OOB通信チャネルが、システム管理マネジメントバス、イーサネットネットワーク、または、シリアル通信リンクの1つを備えることを特徴とする、請求項5に記載の方法。
【請求項7】
前記方法は、
目標となる資源が記憶装置を含むことを特徴とする、請求項5に記載の方法。
【請求項8】
前記方法は、
前記資源アクセス要求が、記憶装置書き込み要求を含み、前記方法は、該記憶装置書き込み要求に対応するデータを、前記OOB通信チャネルを介し送信するステップをさらに含むことを特徴とする、請求項7に記載の方法。
【請求項9】
前記方法は、
前記資源アクセス要求が記憶装置読み取り要求を含み、前記方法は、
前記共有資源から前記読み取り要求に対応するデータを検索するステップと、
前記OOB通信チャネルを介し、前記検索したデータを前記第1のコンピューティングプラットフォームに返送するステップと、
をさらに備えることを特徴とする、請求項7に記載の方法。
【請求項10】
前記方法は、
コンピュータプラットフォームを介しアクセス可能なのはどの資源であるかを識別するグローバル資源マッピングデータを維持するステップと、
前記グローバル資源マッピングデータを用い、前記共有資源へのアクセスに用いられるのはどのコンピューティングプラットフォームかを決定するステップと、
をさらに備えることを特徴とする、請求項1に記載の方法。
【請求項11】
前記方法は、
前記複数のコンピューティングプラットフォームのそれぞれにおいて、グローバル資源マッピングデータのローカルコピーが維持されていることを特徴とする、請求項10に記載の方法。
【請求項12】
前記方法は、
前記グローバル資源マッピングデータが、中央グローバル資源マネージャにより維持されることを特徴とする、請求項10に記載の方法。
【請求項13】
複数のコンピューティングプラットフォームで複数の記憶装置を共有する方法であって、
前記複数の記憶装置を仮想記憶ボリュームとして形成するステップと、
前記仮想記憶ボリュームとして定義される入出力(I/O)ブロックを、該I/Oブロックを実際にホストする対応する記憶装置にマップするグローバル資源マップを維持するステップと、
前記仮想記憶ボリュームを介しそこからデータがアクセスされるI/Oブロックを識別するデータアクセス要求を受信するステップと、
前記I/Oブロックを実際にホストするターゲット記憶装置へのアクセスが前記グローバル資源マップの使用を通じて可能になるコンピューティングプラットフォームを識別するステップと、
前記識別されたコンピューティングプラットフォームに前記データアクセス要求を転送するステップと、
前記識別されたコンピューティングプラットフォームを介し、前記ターゲット記憶装置のI/Oブロックにアクセスするステップと、
を含むことを特徴とする方法。
【請求項14】
前記方法は、
前記複数の記憶装置を少なくとも1つのRAID(個別ディスクの冗長配列)記憶ボリュームとして構成するステップと、
前記少なくとも1つのRAID仮想記憶ボリュームとして定義された入出力(I/O)ブロックを、該(I/O)ブロックを実際にホストする対応する記憶装置にマップするRAID構成マッピング情報を維持するステップと、
読み書きアクセス要求に応答し、適切な記憶装置にアクセスするよう、前記RAID構成マッピング情報を用いるステップと、
をさらに含むことを特徴とする、請求項13に記載の方法。
【請求項15】
前記方法は、
前記RAID仮想記憶ボリュームが、前記RAID−1標準に従い構成されることを特徴とする、請求項14に記載の方法。
【請求項16】
複数のコンピューティングプラットフォームで入力装置を共有する方法であって、
第1のコンピュータプラットフォームにおいて、第1のプラットフォームに結合される入力装置により生成される入力信号の受信に応答して生成される入力データを、第2のコンピューティングプラットフォームに転送するステップと、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに前記入力データを提供するステップと、
を含むことを特徴とする方法。
【請求項17】
前記方法は、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに、ファームウェアによって実行されることを特徴とする、請求項16に記載の方法。
【請求項18】
前記方法は、
前記入力装置が、キーボードおよびマウスの1つを含むことを特徴とする、請求項16に記載の方法。
【請求項19】
複数のコンピューティングプラットフォームで、キーボード、ビデオ、および、マウス資源を共有する方法であって、
ユーザ入力に応答し、資源ホストコンピューティングプラットフォームで生成されるユーザ入力データを、該資源ホストコンピューティングプラットフォームに結合されたキーボードおよびマウスを介し、ターゲットコンピューティングプラットフォームに転送するステップと、
前記ユーザ入力データを、前記ターゲットコンピューティングプラットフォームで動作するオペレーティングシステムに提供するステップと、
前記ターゲットコンピューティングプラットフォームで動作するオペレーティングシステムにより生成されるビデオデータを、前記資源ホストコンピューティングプラットフォームに転送するステップと、
前記ビデオデータを前記資源ホストコンピューティングプラットフォームで処理することにより、前記資源ホストコンピューティングプラットフォームに結合されるビデオディスプレイを駆動するビデオディスプレイ信号を生成するステップと、
を含むことを特徴とする方法。
【請求項20】
前記方法は、
前記資源ホストおよびターゲットコンピューティングプラットフォームのそれぞれに格納されたファームウェアにより容易に実現されることを特徴とする、請求項19に記載の方法。
【請求項21】
前記方法は、
前記資源ホスト、および、前記ターゲットコンピューティングプラットフォームを識別するグローバル資源マッピング情報を維持するステップをさらに含むことを特徴とする、請求項19に記載の方法。
【請求項22】
前記方法は、
前記ユーザ入力およびビデオデータが、バンド外通信チャネルを介し転送されることを特徴とする、請求項19に記載の方法。
【請求項23】
命令がその上に格納された機械可読媒体を含む製品であって、第1のコンピューティングプラットフォームに結合されたキーボード、ビデオ、および、マウス資源の共有をサポートする第1および第2のコンピューティングプラットフォームにおいて、前記命令は、
前記キーボードおよびマウスを介し、ユーザ入力に応答して前記第1のコンピューティングプラットフォームで生成される入力データを第2のコンピューティングプラットフォームに転送するステップと、
前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに前記入力データを提供するステップと、
前記第2のコンピューティングプラットフォームで動作する前記オペレーティングシステムにより生成されたビデオデータを、前記第1のコンピューティングプラットフォームにおけるビデオ信号生成構成要素に転送するステップとを含む動作を実行することを特徴とする製品。
【請求項24】
前記製品は、
前記命令がファームウェア命令を含むことを特徴とする、請求項23に記載の製品。
【請求項25】
前記製品は、フラッシュデバイスを含むことを特徴とする、請求項23に記載の製品。
【請求項26】
前記製品は、前記動作が、前記第2のコンピューティングプラットフォームで動作するオペレーティングシステムに対しトランスペアレントに実行されることを特徴とする、請求項23に記載の製品。
【請求項27】
ブレードサーバシステムであって、
それぞれのサーバブレードが挿入可能な複数のスロットを含むシャーシと、
挿入されたサーバブレードのそれぞれのコネクタと嵌合する複数のコネクタを有し、かつ、前記複数のコネクタ間に通信経路を提供することにより、バンド外(OOB)通信チャネルにおける実現を容易にするインターフェース平面と、
複数のサーバブレードとを含み、前記複数のサーバブレードのそれぞれは、その上で実効可能なプロセッサおよびファームウェアを含み、該プロセッサおよびファームウェアは、
前記複数のサーバブレードの少なくとも1つによりホストされる共有資源へのアクセスを要求するサーバブレード上で動作するオペレーティングシステムからの資源アクセス要求を受信するステップと、
前記資源アクセス要求にサービスを提供できるターゲット資源をホストする前記複数のサーバブレードの中からターゲット資源ホストを決定するステップと、
前記資源アクセス要求を前記ターゲット資源ホストに送信するステップと、
前記ターゲット資源ホストを介し前記ターゲット資源にアクセスすることにより、前記資源アクセス要求にサービスを提供するステップとを含む動作を実行することを特徴とするブレードサーバシステム。
【請求項28】
前記ブレードサーバシステムは、
前記動作が、前記複数のサーバブレード上で実行されることが可能なオペレーティングシステムに対し、トランスペアレントに実行されることを特徴とする、請求項27に記載のブレードサーバ。
【請求項29】
前記ブレードサーバシステムは、
前記複数のサーバブレード間の通信が、バンド外OOB通信チャネルにより容易に実現されることを特徴とする、請求項27に記載のブレードサーバシステム。
【請求項30】
前記ブレードサーバシステムは、前記各プロセッサが、前記OOBチャネルを介しての通信を容易にするために用いられる隠し実行モードをサポートすることを特徴とする、請求項29に記載のブレードサーバシステム。
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図11】
【図12】
【図13】
【図3】
【図4】
【図5】
【図6】
【図7】
【図11】
【図12】
【図13】
【公表番号】特表2007−526527(P2007−526527A)
【公表日】平成19年9月13日(2007.9.13)
【国際特許分類】
【出願番号】特願2006−509095(P2006−509095)
【出願日】平成16年6月9日(2004.6.9)
【国際出願番号】PCT/US2004/018253
【国際公開番号】WO2005/006186
【国際公開日】平成17年1月20日(2005.1.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.Linux
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公表日】平成19年9月13日(2007.9.13)
【国際特許分類】
【出願日】平成16年6月9日(2004.6.9)
【国際出願番号】PCT/US2004/018253
【国際公開番号】WO2005/006186
【国際公開日】平成17年1月20日(2005.1.20)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.Linux
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]