(57)【要約】  パーティショニング可能なコンピューティングデバイスのスペアパーティションユニットを管理するための方法及び装置が開示される。この方法は、スペアパーティションユニットが、ローカルオペレーティングシステムで追加又は交換に必要とされるか否かを検出するステップ、及び、スペアパーティションユニットが追加に必要とされる場合に、スペアパーティションユニットの追加をイニシエートするステップを含む。スペアパーティションが交換に必要とされる場合、故障したパーティションユニットの、スペアパーティションユニットとの交換がイニシエートされ、故障したパーティションユニットのメモリの一部が、スペアパーティションユニットのパーティションのメモリに受動的にマイグレーションされ、故障したパーティションユニットのメモリの一部が、スペアパーティションユニットのパーティションのメモリに能動的にマイグレーションされ、パーティション可能コンピューティングデバイスがクリーンアップされる。パーティションユニットは、コンピュータ実行可能命令を再コンパイルすることを必要とすることなく交換される。【選択図】図５
2010510607.tif 000002
【特許請求の範囲】
【請求項１】
グローバル管理エンティティによってパーティショニング可能なコンピューティングデバイスのスペアパーティションユニットを管理する方法であって、
スペアパーティションユニットが、ローカルオペレーティングシステムにおいて追加又は交換に必要とされるか否かを判断するステップ、並びに
スペアパーティションが追加に必要とされる場合に、スペアパーティションユニットの追加をイニシエートするステップ、そうでない場合に、
（ａ）故障したパーティションユニットの、スペアパーティションユニットとの交換をイニシエートするステップ、
（ｂ）前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに受動的にマイグレーションするステップ、
（ｃ）前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに能動的にマイグレーションするステップ、及び
（ｄ）前記パーティショニング可能なコンピューティングデバイスをクリーンアップするステップ、
を含む、方法。
【請求項２】
請求項１に記載の方法において、前記スペアパーティションユニットの追加をイニシエートするステップは、
（ａ）前記グローバル管理エンティティが、追加される前記スペアパーティションユニットをグローバルプールから選択するステップ、
（ｂ）前記グローバル管理エンティティが、前記選択されたスペアパーティションユニットを該グローバル管理エンティティ内へイニシエートするステップ、
（ｃ）前記ローカルオペレーティングシステムが、前記選択されたスペアパーティションユニットを、該ローカルオペレーティングシステムのパーティション（「ローカルオペレーティングシステムパーティション」）内へイニシエートするステップ、
（ｄ）前記グローバル管理エンティティが、前記選択されたスペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに移行させるステップ、及び
（ｅ）前記ローカルオペレーティングシステムが、前記選択されたスペアパーティションユニットを前記ローカルオペレーティングシステムパーティションにおいて発見すると、前記ローカルオペレーティングシステムが、前記選択されたスペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに追加するステップ、
を含む、方法。
【請求項３】
請求項１に記載の方法において、前記故障したパーティションユニットの、スペアパーティションユニットとの交換をイニシエートするステップは、
（ａ）故障したパーティションユニットが検出されると、前記グローバル管理エンティティが、該故障したパーティションユニットを物理ハードウェアデバイスにマッピングするステップ、
（ｂ）前記グローバル管理エンティティが、グローバルプールからスペア交換パーティションユニットを選択するステップ、
（ｃ）前記グローバル管理エンティティが、前記スペアパーティションユニットを該グローバル管理エンティティへイニシエートするステップ、
（ｄ）前記ローカルオペレーティングシステムが、前記スペアパーティションユニットを該ローカルオペレーティングシステム内へイニシエートするステップ、
（ｅ）前記グローバル管理エンティティが、前記スペアパーティションユニットを前記ローカルオペレーティングシステムのパーティション（「前記ローカルオペレーティングシステムパーティション」）内へ移動させるステップ、及び
（ｆ）前記ローカルオペレーティングシステムが、前記ローカルオペレーティングシステムパーティションにおいて前記スペアパーティションを発見すると、前記ローカルオペレーティングシステムが、前記スペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに追加する準備をするステップ、
を含む、方法。
【請求項４】
請求項３に記載の方法において、パーティションユニットが故障していることの前記検出は、該パーティションユニットのハードウェアＩＤに基づく予測解析によって判断される、方法。
【請求項５】
請求項１に記載の方法において、前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに受動的にマイグレーションするステップは、
（ａ）前記ローカルオペレーティングシステムが、変更フラグを使用して、前記故障したパーティションのメモリを転送して、該故障したパーティションのメモリの変更部分を追跡する、ステップ、及び
（ｂ）前記グローバル管理エンティティが、メモリ制御ルーティングテーブルの極小的更新を行うステップ、
を含む、方法。
【請求項６】
請求項１に記載の方法において、前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに能動的にマイグレーションするステップは、
（ａ）前記グローバル管理エンティティが、前記パーティショニング可能なコンピューティングデバイスをクワイエスするステップ、
（ｂ）前記ローカルオペレーティングシステムが、前記故障したパーティションのメモリの変更部分を転送するステップ、
（ｃ）前記グローバル管理エンティティが、メモリコントローラルーティングテーブルの極小的更新を行うステップ、
（ｄ）前記ローカルオペレーティングシステムが、前記故障したパーティションユニットのプロセッサの状態を前記スペアパーティションユニットのプロセッサへ転送するステップ、
（ｅ）前記ローカルオペレーティングシステムが、該ローカルオペレーティングシステムのシステム割り込み状態を変更するステップ、及び
（ｆ）前記ローカルオペレーティングシステムが、前記故障したパーティションユニットのプロセッサを停止するステップ、
を含む、方法。
【請求項７】
請求項６に記載の方法において、前記パーティショニング可能なサーバをクリーンアップするステップは、
（ａ）前記グローバル管理エンティティが、前記パーティショニング可能なサーバをクワイエス解除するステップ、
（ｂ）前記ローカルオペレーティングシステムが、前記グローバル管理エンティティに前記交換を通知するステップ、及び
（ｃ）前記故障したパーティショニングユニットのプロセッサを論理的に除去するステップ、
を含む、方法。
【請求項８】
請求項７に記載の方法であって、前記故障したパーティションユニットのプロセッサを物理的に除去するステップをさらに含む、方法。
【請求項９】
請求項８に記載の方法において、前記故障したパーティションユニットのプロセッサを物理的に除去するステップは、前記ローカルオペレーティングシステムが、前記故障したパーティションユニットのプロセッサを電気的に絶縁することによって行われる、方法。
【請求項１０】
請求項１に記載の方法において、前記故障したパーティションユニットは、コンピュータ実行可能命令を再コンパイルすることなく交換される、方法。
【請求項１１】
グローバル管理エンティティ及び複数のローカルオペレーティングシステムを備えるパーティショニング可能なコンピューティングデバイスのスペアパーティションユニットを管理するためのコンピュータ実行可能命令を含むコンピュータ可読媒体であって、該コンピュータ実行可能命令は、実行されると、前記グローバル管理エンティティ及び前記複数のローカルオペレーティングシステムのうちの一定のローカルオペレーティングシステムに、
（ａ）スペアパーティションユニットが、ローカルオペレーティングシステムにおいて追加又は交換に必要とされるか否かを判断させ、
（ｂ）スペアパーティションユニットが追加に必要とされる場合に、スペアパーティションユニットの追加をイニシエートさせ、そうでない場合に、
（ｉ）故障したパーティションユニットの、スペアパーティションユニットとの交換をイニシエートさせ、
（ｉｉ）前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに受動的にマイグレーションさせ、
（ｉｉｉ）前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに能動的にマイグレーションさせ、且つ
（ｉｖ）前記パーティショニング可能なコンピューティングデバイスをクリーンアップさせる、コンピュータ可読媒体。
【請求項１２】
請求項１１に記載のコンピュータ実行可能命令において、スペアパーティションユニットの追加をイニシエートさせるステップは、
（ａ）追加される前記スペアパーティションユニットをプールから選択するステップ、
（ｂ）前記選択されたスペアパーティションユニットを前記グローバル管理エンティティ内へイニシエートするステップ、
（ｃ）前記選択されたスペアパーティションユニットの、ローカルオペレーティングシステムのパーティション（「前記ローカルオペレーティングシステムパーティション」）内への追加をイニシエートするステップ、
（ｄ）前記選択されたスペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに移行させるステップ、及び
（ｅ）前記選択されたスペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに追加するステップ、
を含む、コンピュータ実行可能命令。
【請求項１３】
請求項１１に記載のコンピュータ可読媒体において、故障したパーティションユニットの、スペアパーティションユニットとの交換をイニシエートさせるステップは、
（ａ）故障したパーティションユニットを検出するステップ、
（ｂ）プールから交換パーティションユニットを選択するステップ、
（ｃ）前記グローバル管理エンティティにおいて、前記故障したデバイスの交換をイニシエートするステップ、
（ｄ）前記故障したデバイスの前記ローカルオペレーティングシステム内への交換をイニシエートするステップ、
（ｅ）前記スペアパーティションユニットを前記ローカルオペレーティングシステムのパーティション（「前記ローカルオペレーティングシステムパーティション」）に移行させるステップ、及び
（ｆ）前記スペアパーティションユニットを前記ローカルオペレーティングシステムパーティションに追加する準備をするステップ、
を含む、コンピュータ可読媒体。
【請求項１４】
請求項１３に記載のコンピュータ可読媒体において、前記故障したパーティションユニットを検出するステップは、予測解析を使用して判断される、コンピュータ可読媒体。
【請求項１５】
請求項１１に記載のコンピュータ可読媒体において、前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに受動的にマイグレーションさせるステップは、
（ａ）変更フラグを使用して、前記故障したパーティションのメモリを転送し、該故障したパーティションのメモリの変更部分を追跡する、ステップ、及び
（ｂ）メモリコントローラルーティングテーブルの極小的更新を行うステップ、
を含む、コンピュータ可読媒体。
【請求項１６】
請求項１１に記載のコンピュータ可読媒体において、前記スペアパーティションユニットを前記故障したパーティションユニットのパーティションに能動的にマイグレーションさせるステップは、
（ａ）前記パーティショニング可能なサーバをクワイエスするステップ、
（ｂ）前記故障した部分のメモリの変更部分を転送するステップ、
（ｃ）メモリコントローラルーティングテーブルの極小的更新を行うステップ、
（ｄ）前記故障したパーティションユニットのプロセッサの状態を前記スペアパーティションユニットのプロセッサへ転送するステップ、
（ｅ）前記ローカルオペレーティングシステムのシステム割り込み状態を変更するステップ、及び
（ｆ）前記故障したパーティションユニットのプロセッサを停止するステップ、
を含む、コンピュータ可読媒体。
【請求項１７】
請求項１６に記載のコンピュータ可読媒体において、前記パーティショニング可能なサーバをクリーンアップさせるステップは、
（ａ）前記パーティショニング可能なサーバをクワイエス解除するステップ、
（ｂ）前記グローバル管理エンティティに前記交換を通知するステップ、
（ｃ）前記故障したパーティションユニットのプロセッサを論理的に除去するステップ、及び
（ｄ）前記故障したパーティションユニットのプロセッサを物理的に除去するステップ、
を含む、コンピュータ可読媒体。
【請求項１８】
請求項１７に記載のコンピュータ可読媒体において、前記故障したパーティションユニットのプロセッサを物理的に除去するステップは、該故障したパーティションユニットのプロセッサを電気的に絶縁することによって行われる、コンピュータ可読媒体。
【請求項１９】
請求項１７に記載のコンピュータ可読媒体において、前記故障したパーティションユニットのプロセッサを物理的に除去するステップは、該故障したパーティションユニットのプロセッサを該故障したパーティションユニットのプロセッサのソケットから除去することによって行われる、コンピュータ可読媒体。
【請求項２０】
請求項１１に記載のコンピュータ可読媒体において、前記故障したパーティションユニットは、コンピュータ実行可能命令の再コンパイルなしで交換される、コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
マイクロプロセッサは、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、携帯電話、レーザプリンタ等のコンピューティングデバイスの処理機能及び制御機能を実行することができる電子デバイスである。通常、マイクロプロセッサは、複雑な集積回路を含む小さな半導体材料を収容して保護する小さなプラスチックパッケージ又はセラミックパッケージを備える。集積回路に接続されたリード線は、集積回路を他の電子デバイス及び電子回路に接続することを可能にする、パッケージから突き出たピンに取り付けられる。マイクロプロセッサは、通例、他の電子デバイスを収容する回路基板内にプラグ接続されるか又は回路基板に別の方法で取り付けられる。
【０００２】
１つのマイクロプロセッサ集積回路は、通常、１つのコンピューティングユニット、すなわち１つのプロセッサのみを含むが、１つのマイクロプロセッサ集積回路に複数のプロセッサを含めることが可能である。複数のプロセッサは、「コア」と称されることが多いが、同じ半導体材料に含まれ、マイクロプロセッサパッケージのピンに接続される。複数のコアを有することによって、マイクロプロセッサの計算能力は増加する。たとえば、４つのコアを有するマイクロプロセッサは、４つの単一コアマイクロプロセッサとほとんど同じ量の計算能力を提供することができる。
【０００３】
従来のコンピューティングデバイス内で複数のマイクロプロセッサ及びマルチコアマイクロプロセッサを使用することが増加してきた。従来のコンピューティングデバイスは、オペレーティングシステムの１つのインスタンスしか実行することができない。従来のコンピューティングデバイスは、マルチコアマイクロプロセッサ、複数のマイクロプロセッサ、又は複数のマルチコアマイクロプロセッサを含んでいても、オペレーティングシステムの１つのインスタンスしか実行することができない。それでも、マルチコアマイクロプロセッサが提供する増加した計算能力を利用することによって、これまで複数のコンピューティングデバイスによって実行されていた計算機能を、より少ないコンピューティングデバイスで実行することが可能になる。
【０００４】
たとえば、サーバは、ネットワークに接続された他のエンティティにサービス又はサービスのセットを提供するネットワークに接続されたコンピューティングデバイスである。３２個の従来のコンピューティングデバイスを備えるサーバ、すなわち３２ウェイサーバは、それぞれが４つのコアを有する８つのマイクロプロセッサで構成することができる。この概念をさらに一歩進めて、個々の各コアが、３２個のコンピューティングデバイスのうちの１つの８倍の能力を有する場合、３２ウェイサーバの能力は、４コアマイクロプロセッサによって提供することができる。このような４コアサーバの明らかな利点は、コンピューティング資源の冗長性が、従来のサーバによって提供されるものよりも手ごろであるということである。加えて、マイクロプロセッサの個数が削減されることによって、サーバのコスト、サーバに電力を供給するのに必要なエネルギー量、及びサーバが必要とするメンテナンスの量も削減される。
【０００５】
マルチコアマイクロプロセッサの計算能力をより多く活用するには、「パーティション」を使用することが可能である。パーティションは、オペレーティングシステムの独立したインスタンス、すなわちローカルオペレーティングシステムを実行することができる、コンピューティングデバイス内のたとえば、プロセッサ、メモリ等の電子デバイスの電気的に絶縁可能なセットである。パーティショニング可能なコンピューティングデバイスは、パーティションに分割することができるコンピューティングデバイスであり、したがって、複数のローカルオペレーティングシステムを実行することができるコンピューティングデバイスである。パーティショニング可能なサーバは、パーティショニング可能なコンピューティングデバイスであるサーバであり、したがって、複数のローカルオペレーティングシステムを実行することができるサーバである。パーティショニング可能なサーバのパーティションは、「論理サーバ」と称される場合もある。すなわち、論理サーバは、たとえスタンドアロンサーバでなくても、ネットワーク上の他のエンティティにはそのように見える。また、複数のサーバは、論理サーバであろうとそれ以外のサーバであろうと、「サーバクラスタ」に組み立てることも可能である。サーバクラスタは、ユニットとして動作して、サービス又はサービスのセットを提供する複数のサーバである。
【０００６】
マルチコアマイクロプロセッサを使用することの利点によって、「サーバコンソリデーション」への傾向が推進されている。サーバコンソリデーションは、たとえばサーバクラスタにおいて、複数のサーバを、たとえば１つのサーバといったより少ないサーバと交換するプロセスである。複数のサーバに取って代わる１つのサーバは、通常、それらの複数のサーバの能力と等しいか又はそれらの複数のサーバの能力を超える計算能力を含む。サーバコンソリデーションは、コスト、エネルギー、及びメンテナンスを削減するが、全部の卵を１つの籠に入れるということにもなる。サーバコンソリデーションは、たとえば、サーバの故障の影響を増加させるおそれがある。たとえば、以前は複数のサーバ上で実行されていた複数のアプリケーションがすべて同じサーバ上で実行され、且つ、そのサーバが故障した場合、その影響は、アプリケーションのすべてに及ぶ可能性がある。最悪の場合、これは、アプリケーションのダウンタイムを意味する。このような影響を防ぐために、多くのハイエンドサーバ、すなわち大きな計算能力を有するサーバが、それらの能力の一部を信頼性機能に当てている。
【０００７】
このような１つの信頼性機能は、「フェイルオーバ」能力である。フェイルオーバは、第１のエンティティが、好ましくは完全に故障する前に、第１のエンティティが含む情報を第２の同様のエンティティに渡すことができることである。従来のサーバ、すなわち従来のコンピューティングデバイスに基づくサーバが、制御され且つ順序だった方法でフェイルオーバを行って、故障サーバから交換サーバへの移行中に、データが喪失されず且つ進行中のプロセスが中断されないことを確実にするための技法が開発されてきた。
【０００８】
従来のサーバと同程度のロバストで且つ信頼することができるマルチコアマイクロプロセッササーバを作り出すためには、プロセッサレベルで動作する同様の技法が役立つ。
【発明の概要】
【０００９】
この概要は、以下の詳細な説明でさらに説明される概念のうちの選択したものを簡略化した形で紹介するために設けられている。この概要は、請求項に記載の主題の主要な特徴を特定することを意図するものではなく、また、請求項に記載の主題の範囲を決定することを助けるものとして使用されることを意図するものでもない。
【００１０】
グローバル管理エンティティ及び複数のローカルオペレーティングシステムを含む、サーバのようなパーティショニング可能なコンピューティングデバイスにおけるスペアパーティションユニットを管理するための方法及び装置が開示される。この方法は、スペアパーティションユニットが、ローカルオペレーティングシステムで追加又は交換に必要とされるか否かを判断するステップを含む。追加のスペアパーティションユニットが必要とされる場合、スペアパーティションユニット追加プロセスがイニシエートされる。たとえばパーティションユニットの故障のために、交換スペアパーティションユニットが必要とされる場合、交換スペアパーティションユニットプロセスがイニシエートされる。この交換スペアパーティションユニットプロセスによって、スペアパーティションユニットは、故障したパーティションユニットのパーティション内に受動的（passively）及び能動的（actively）にマイグレーションされ、マイグレーション動作はクリーンアップされる。
【００１１】
一例示の実施態様では、スペアパーティションユニット追加プロセス中、グローバル管理エンティティが、追加されるスペアパーティションユニットをグローバルデバイスプールから選択し、グローバル管理エンティティは、選択されたスペアパーティションユニットの追加をイニシエートし、ローカルオペレーティングシステムが、選択されたスペアパーティションユニットの、ローカルオペレーティングシステムのパーティション、すなわちローカルオペレーティングシステムパーティション内への追加をイニシエートし、グローバル管理エンティティは、選択されたスペアパーティションユニットをローカルオペレーティングシステムパーティションに移行させ、ローカルオペレーティングシステムが、選択されたスペアパーティションユニットをローカルオペレーティングシステムパーティションにおいて発見すると、ローカルオペレーティングシステムは、選択されたスペアパーティションユニットをローカルオペレーティングシステムパーティションに追加する。
【００１２】
一例示の実施態様では、スペアパーティションユニット交換プロセス中、ローカルオペレーティングシステムが故障したデバイスを検出すると、グローバル管理エディティングが、故障したデバイスを物理ハードウェアデバイスにマッピングし、グローバル管理エンティティが、グローバルデバイスプールから交換デバイスを選択し、グローバル管理エンティティが、故障したデバイスの交換をイニシエートし、ローカルオペレーティングシステムが、故障したデバイスのローカルオペレーティングシステム内への交換をイニシエートし、グローバル管理エンティティが、スペアパーティションユニットをローカルオペレーティングシステムのパーティション、すなわちローカルオペレーティングシステムパーティション内へ移行させ、ローカルオペレーティングシステムが、ローカルオペレーティングシステムパーティションにおいてスペアパーティションを発見すると、ローカルオペレーティングシステムは、スペアパーティションユニットをローカルオペレーティングシステムパーティションに追加する準備をする。
【００１３】
一例示の実施態様では、スペアパーティションユニットの故障したパーティションユニットのパーティション内への受動的なマイグレーション中、ローカルオペレーティングシステムが、変更フラグを使用して、故障したパーティションのメモリを転送し、故障したパーティションのメモリの変更部分を追跡し、グローバル管理エンティティが、メモリコントローラルーティングテーブルの極小的（atomic）更新を行う。
【００１４】
一例示の実施態様では、スペアパーティションユニットの故障したパーティションユニットのパーティション内への能動的なマイグレーション中、グローバル管理エンティティが、パーティショニング可能なサーバをクワイエスし（quiesc）、ローカルオペレーティングシステムが、故障したパーティションのメモリの変更部分を転送し、グローバル管理エンティティが、メモリコントローラルーティングテーブルの極小的更新を行い、ローカルオペレーティングシステムが、故障したパーティションユニットのプロセッサの状態をスペアパーティションユニットのプロセッサへ転送し、ローカルオペレーティングシステムが、ローカルオペレーティングシステムのシステム割り込み状態を変更し、ローカルオペレーティングシステムが、故障したパーティションユニットのプロセッサを停止する。
【００１５】
一例示の実施態様では、パーティショニング可能なサーバのクリーンアップ中、ローカルオペレーティングシステムがパーティショニング可能なサーバをクワイエス解除し（unquiesc）、ローカルオペレーティングシステムが、グローバル管理エンティティに交換を通知し、グローバル管理エンティティが故障したパーティショニングユニットのプロセッサを論理的及び物理的の双方で除去する。
【００１６】
グローバル管理エンティティ及びローカルオペレーティングシステムによって、コンピュータ実行可能命令を特定のプラットフォーム用に再コンパイルすることを必要とすることなく、スペアパーティションユニットを追加又は交換することが可能になる。すなわち、この方法及び装置の実施態様は、その実施態様のコードもオペレーティングシステムのコードも変更及び再コンパイルすることなく、複数のハードウェアプラットフォーム上でオペレーティングシステムの実行可能コードと共に動作する。
【００１７】
本発明の上記態様及び付随する利点の多くは、それらが以下の詳細な説明を添付図面と併用して参照することによってより良く理解されるにつれて、より容易に認識されることになろう。
【図面の簡単な説明】
【００１８】
【図１】パーティションユニット交換をサポートすることができる一例示のコンピューティングデバイスのブロック図である。
【図２】複数のパーティションユニットを含み、それらのうちの１つが関連付けられていない、一例示のパーティションのブロック図である。
【図３】これまで関連付けられていなかったパーティションユニットを含むように再構成された、図２に示す例示のパーティションのブロック図である。
【図４】一例示のパーティションユニットのブロック図である。
【図５】一例示の故障したメモリブロック及び一例示の交換メモリブロックのブロック図である。
【図６】故障したパーティションユニットを動的に交換するための一例示の方法の機能フロー図である。
【図７】パーティションユニットの追加をイニシエートするための一例示の方法の機能フロー図である。
【図８】交換パーティションユニットを受動的にマイグレーションするための一例示の方法の機能フロー図である。
【図９】交換パーティションユニットを能動的にマイグレーションするための一例示の方法の機能フロー図である。
【図１０】故障したパーティションユニットを交換した後にクリーンアップするための一例示の方法の機能フロー図である。
【図１１】システムをクワイエスするための一例示の方法の機能フロー図である。
【図１２】システムをクワイエス解除するための一例示の方法の機能フロー図である。
【発明を実施するための形態】
【００１９】
サーバは、ネットワークに接続された、たとえばコンピューティングデバイスといった他のエンティティにサービス又はサービスのセットを提供するネットワークに接続されたコンピューティングデバイスである。たとえば、ウェブページサーバは、ウェブページ要求に応答してウェブページを返すサービスを提供する。他の例示のサーバは、特定のユーザへの電子メールメッセージを返す電子メールサーバ、ビデオアーカイブからビデオクリップを返すビデオサーバ等である。一例示のサーバは、マイクロプロセッサ、メモリコントローラ、及びメモリコントローラによって制御されるメモリブロックを含む。メモリコントローラ及びメモリコントローラによって制御されるメモリブロックは、ユニット、すなわちメモリユニットと称されることが多い。サーバは、追加のマイクロプロセッサ、メモリコントローラ、メモリブロック、及び割り込みプロセッサ等の他の電子デバイスも含むことができる。したがって、１つのマイクロプロセッサ及びメモリユニットしか含まないサーバは、限定ではなく例示として解釈されるべきである。
【００２０】
多くのタイプのコンピューティングデバイスと同様に、サーバのオペレーションは、オペレーティングシステムと呼ばれるソフトウェアプログラムによって制御される。従来のコンピューティングデバイスは、オペレーティングシステムの１つのインスタンスしか実行することができない。したがって、従来のサーバ、すなわち従来の１つのコンピューティングデバイス又は従来の複数のコンピューティングデバイスに基づくサーバは、オペレーティングシステムの１つのコピー、すなわちオペレーティングシステムの１つのインスタンスに含まれる命令を実行する。たとえば、３２個の従来のコンピューティングデバイスを備えるサーバ、すなわち３２ウェイサーバは、それぞれが４つのコアを有する８つのマイクロプロセッサから構成することができるが、依然として１つのオペレーティングシステムを実行する。マイクロプロセッサの個数を削減することによって、サーバのコスト、サーバに電力を供給するのに必要なエネルギーの量、及びサーバが必要とするメンテナンスの量も削減される。
【００２１】
パーティションは、マルチコアマイクロプロセッサの計算能力をさらに多く活用することを可能にする。パーティションは、オペレーティングシステムの独立したインスタンス、すなわちローカルオペレーティングシステムを実行することができる、コンピューティングデバイス内のたとえば、プロセッサ、メモリ等の電子デバイスの電気的に絶縁可能なセットである。パーティショニング可能なコンピューティングデバイスは、パーティションに分割することができるコンピューティングデバイスであり、したがって、複数のローカルオペレーティングシステムを実行することができるコンピューティングデバイスである。パーティショニング可能なサーバは、パーティショニング可能なコンピューティングデバイスであるサーバであり、したがって、複数のローカルオペレーティングシステムを実行することができるサーバである。パーティショニング可能なサーバのパーティションは、「論理サーバ」と称される場合もある。したがって、１つのパーティショニング可能なサーバは、複数の論理サーバを含むことができる。複数のサーバは、論理サーバであろうとそれ以外のサーバであろうと、「サーバクラスタ」に組み立てることが可能である。サーバクラスタは、ユニットとして振舞って、サービス又はサービスのセットを提供する。
【００２２】
好ましくは、パーティショニングは動的である。すなわち、パーティションユニットは、サーバが提供するサービスにほとんど又は全く影響を与えることなく、パーティションに割り当てられるか又はパーティションから除去される。パーティショニングすることができるサーバは、パーティショニング可能なサーバである。パーティショニング可能なサーバを備えるサーバシステム、すなわちシステムは、パーティショニング可能なシステムである。パーティショニング可能なシステムは、パーティションに割り当てられるパーティションユニット及び電子デバイスの個数及び構成において柔軟性を提供し、「サーバコンソリデーション」をサポートすることをより簡単にし且つよりコスト効率的にする。
【００２３】
サーバコンソリデーションは、複数のサーバをより少ないサーバと、又は、場合によってはたった１つだけのサーバと交換するプロセスである。サーバコンソリデーションの結果である一例示のサーバは、通常、当該サーバが取って代わる複数のサーバの能力と等しい計算能力又はそれらの複数のサーバの能力を超える計算能力を含む。サーバコンソリデーションは、サーバの故障の影響を増加させるおそれがある。たとえば、以前は複数のサーバ上で実行されていた複数のアプリケーションが、すべて１つのサーバ上で実行されることを想像されたい。そのサーバが故障した場合、その影響は、アプリケーションのすべてに及ぶ可能性があり、アプリケーションのダウンタイムさえも引き起こす可能性がある。
【００２４】
従来のサーバは、サーバの計算能力の一部を、「フェイルオーバ」能力等の信頼性機能に当てることによって、このような影響を防いでいる。従来のサーバが、制御され且つ順序だった方法でフェイルオーバを行って、故障サーバから交換サーバへの移行中に、データが喪失されず且つ進行中のプロセスが中断されないことを確実にするための技法が開発されてきた。従来のサーバは、ネットワークを通じて互いに接続し、したがって、互いに密結合されていないので、作業は、小さな部分に分割され、サーバ間で共有される。すなわち、作業はパケット化される。これによって、故障サーバの作業パケットをフェイルオーバ中に再ルーティングすることができるので、故障サーバを交換することが容易になる。フェイルオーバを実施するには、２つ以上の従来のサーバが利用可能でなければならないことに留意されたい。すなわち、故障した従来のサーバは、その故障した従来のサーバからのデータを受け取ることができる別の同様の従来のサーバを必要とする。
【００２５】
パーティショニング可能なサーバは、複数の論理サーバを含むことができ、これらの論理サーバは、ネットワークによって互いに結合された従来のサーバよりも容易に通信することができるので、パーティショニング可能なサーバは、一群の従来のサーバよりも容易に且つコスト効率良く信頼性を提供する可能性を有する。パーティショニング可能なサーバでパーティションを使用して動作する制御され且つ順序だったフェイルオーバのプロセスは、パーティショニング可能なサーバが提供することができる信頼性を実現するのに役立つ。
【００２６】
フェイルオーバがいつ必要とされるのかを高レベルのソフトウェアアプリケーションのそれぞれに通知することによってパーティショニング可能なサーバをより信頼することができるものとすることは実用的ではない。高レベルのソフトウェアアプリケーションがこのような通知に応答することを可能にするには、各アプリケーションのコンピュータコードを、フェイルオーバに適合するように変更することが必要となる。アプリケーションに通知することさえも、場合によっては、実行中のサーバの一部に取って代わるメカニズムなしに、フェイルオーバを提供するのに十分でないこともある。その代わり、最低レベルのソフトウェアのみをフェイルオーバに関与させ、たとえばアプリケーションといったそれよりも上位レベルのソフトウェアが、ハードウェアの変更が行われなくても動作することを可能にすることは、より実用的であり且つ好都合である。
【００２７】
順序だった低レベルのパーティショニング可能なサーバフェイルオーバの一実施態様は、グローバル管理エンティティ及び１つ又は２つ以上のローカルオペレーティングシステムを伴う。グローバル管理エンティティの例は、サービスプロセッサ（ＳＰ）及びベースボード管理コントローラ（ＢＭＣ）である。ＳＰは、メモリコントローラ及びマイクロプロセッサ等、回路基板又はマザーボードに取り付けられた電子デバイスを管理する専用マイクロプロセッサ又は専用マイクロコントローラである。ＢＭＣも、マザーボード上に内蔵された専用マイクロコントローラである。ＢＭＣは、電子デバイスを管理することに加えて、コンピューティングシステムに組み込まれたセンサからの入力を監視して、温度、冷却ファンの速さ、電力モード、オペレーティングシステムステータス等のパラメータについて報告し且つ／又はそれらのパラメータに応答する。他の電子デバイスも、グローバル管理エンティティの役割を果たすことができる。したがって、ＳＰ又はＢＭＣをグローバル管理エンティティとして使用することは、限定ではなく例示とした解釈されるべきである。
【００２８】
ローカルオペレーティングシステムは、１つのパーティション上で実行されるオペレーティングシステムのインスタンスである。パーティションユニットは、特定のパーティションに割り当てられて、そのパーティションユニットのデバイスを他のパーティションのデバイスと共有することができないことを確実にし、故障を単一のパーティションに隔離することを確実にする。このようなパーティションユニットは、どの物理アドレスが所与のメモリコントローラによってサービスを受けているのかを示すことができ、それによって、物理メモリアドレスをメモリコントローラ及びそのメモリコントローラを含む物理パーティションユニットにマッピングすることができる。パーティションをブートして動作させるのに、２つ以上のパーティションユニットが必要とされる場合がある。未使用のパーティションユニット又は故障したパーティションユニットは、電気的に絶縁することができる。パーティションユニットを電気的に絶縁することは、一群の従来のサーバから１つのサーバを除去することと同様であり、パーティションユニットを異なるパーティションに動的に再割り当てすることができるという利点を有する。
【００２９】
上記論述において、別段の言及がない限り、パーティションユニットは、単一のコア及び単一のメモリユニットを備える。しかしながら、パーティションユニットは、２つ以上のコア、メモリユニット、割り込みプロセッサ、並びに／又はコンピューティングサービス及び／若しくはサポートを提供する他のデバイスを備えることができる。したがって、１つのコア及び１つのメモリコントローラを備えるパーティションユニットの使用は、限定ではなく例示として解釈されるべきである。パーティショニング可能なサーバのパーティションユニットのたとえば追加又は交換といった管理によって、制御され且つ順序だった方法でフェイルオーバを行って、パーティショニング可能なサーバが従来のサーバと同程度にロバストで且つ信頼することができることを確実にすることが可能になる。
【００３０】
パーティション並びにパーティションユニットの追加及び／又は交換をサポートすることができるパーティショニング可能なサーバを実施するための一例示のコンピューティングデバイス１００を、図１にブロック図の形で示す。図１に示す例示のコンピューティングデバイス１００は、サービスプロセッサ（ＳＰ）１０２を備える。このＳＰ１０２は、ＳＰファームウェア１０４及びルーティングテーブル１０６を記憶するメモリに接続されている。また、コンピューティングデバイス１００は、メモリブロックＡ  １１０に接続されたプロセッサＡ  １０８、メモリブロックＢ  １１４に接続されたプロセッサＢ  １１２、メモリブロックＣ  １１８に接続されたプロセッサＣ  １１６、及びメモリブロックＤ  １１２に接続されたプロセッサＤ  １２０も備える。プロセッサ１０８、１１２、１１６、及び１２０のそれぞれは、０、１、２、及び３で指定された４つのコアを含む。ＳＰ１０２は、ＳＰファームウェア１０４によって制御され、ルーティングテーブル１０６を使用して、プロセッサ１０８、１１２、１２６、１２０及びメモリブロック１１０、１１４、１１８、及び１２２の間の絶縁境界を管理する。コンピューティングデバイス１００は、Ｉ／Ｏ（入出力）回路部１２４、マスストレージ回路部１２６、通信回路部１２８、環境回路部１３０、及び電源装置１３２も備える。コンピューティングデバイス１００は、Ｉ／Ｏ回路部１２４を使用して、Ｉ／Ｏデバイスと通信する。コンピューティングデバイス１００は、マスストレージ回路部１２６を使用して、内部又は外部に接続されたマスストレージデバイスと相互作用する。コンピューティングデバイス１００は、通信回路部１２８を使用して、通例はネットワークを介して外部デバイスと通信する。コンピューティングデバイス１００は、環境回路部１３０を使用して、冷却ファン、熱センサ、湿度センサ等の環境デバイスを制御する。電源装置１３２は、コンピューティングデバイス１００に電力を供給する。たとえば、ＳＰ１０２がＢＭＣと交換された場合、このＢＭＣはより正確に、環境回路部１３０及び電源装置１３２と通信することができ、環境回路部１３０及び電源装置１３２を制御することができる。
【００３１】
図１に示し上述した例示のコンピューティングデバイス１００等のコンピューティングデバイスは、パーティションユニットの交換をサポートする。一例示のパーティションユニットは、図１に示すプロセッサＡ  １０８及びメモリブロックＡ  １１０から形成することができる。このような例示のパーティションユニットは、図２及び図３に示すプロセッサＡ  ２０２及びプロセッサＡ  ２０２に接続されたメモリブロックを備えるパーティションユニットと同様である。図２及び図３に示すブロック図の双方は、同じ４つのパーティションユニットを含む。これらのパーティションユニットのそれぞれは、プロセッサ及びメモリブロック、すなわち、メモリブロック２０４に接続されたプロセッサＡ  ２０２、メモリブロック２０８に接続されたプロセッサＢ  ２０６、メモリブロック２１２に接続されたプロセッサＣ  ２１０，及びメモリブロック２１６に接続されたプロセッサＤ  ２１４を備える。
【００３２】
パーティションユニットの交換は、図２に示すブロック図を図３に示すブロック図と比較することによって理解することができる。図２及び図３の双方のブロック図は、同じ４つのパーティションユニットを示しているが、図２に示すパーティション２００ａは、図３に示すパーティション２００ｂと比較すると、パーティションユニットの異なるセットを備えている。図２に示すパーティション２００ａは、プロセッサＡ  ２０２及びメモリブロック２０４、プロセッサＢ  ２０６及びメモリブロック２０８、並びにプロセッサＣ  ２１０及びメモリブロック２１２を備える。図２では、プロセッサＤ  ２１４及びメモリブロック２１６を備えるパーティションユニットは、パーティション２００ａに含まれていない。図２に示すパーティション２００ａとは異なり、図３に示すパーティション２００ｂは、パーティションユニットの異なるセット、すなわちプロセッサ及びメモリブロックの異なるセットを備えるように変更されている。図３に示すパーティション２００ｂは、プロセッサＢ  ２０６及びメモリブロック２０８、プロセッサＣ  ２１０及びメモリブロック２１２、並びにプロセッサＤ  ２１４及びメモリブロック２１６を備える。図３では、プロセッサＡ  ２０２及びメモリブロック２０４を備えるパーティションユニットが、パーティション２００ｂに含まれていないのに対して、プロセッサＤ  ２１４及びメモリブロック２１６を備えるパーティションユニットが、図２に示すパーティション２００ａに含まれている。事実上、プロセッサＤ  ２１４及びメモリブロック２１６を備えるパーティションユニットは、プロセッサＡ  ２０２及びメモリブロック２０４を備えるパーティションユニットに取って代わっている。ＳＰ１０２は、ルーティングテーブル１０６を変更して、この交換を行う。このような交換は、たとえば、プロセッサＡ  ２０２及び／又はメモリブロック２０４が故障している場合、又は、より大きなメモリを有するプロセッサが必要とされる場合に望ましい。
【００３３】
プロセッサＡ  ２０２及びメモリブロック２０４等の単一のプロセッサ及び単一のメモリブロックが、パーティションユニットを構成することができるが、パーティションユニットは、他の形態を有することもできる。異なる形態を有する一例示のパーティションユニット４００の詳細な図を図４に示す。図４では、図１と同様に、例示のパーティションユニット４００が、メモリコントローラ４０４に接続された、４つのコア０、１、２、及び３を含むプロセッサ４０２を備える。メモリコントローラ４０４は、メモリブロックＡ  ４０６及びメモリブロックＢ  ４１０の２つのメモリブロックに接続されている。プロセッサ４０２は、メモリコントローラ４０４と通信する。メモリコントローラ４０４は、メモリブロックＡ  ４０６及びメモリブロックＢ  ４１０を制御する。他のパーティションユニットは、プロセッサ、メモリコントローラ、及びメモリブロックに加えて他のデバイスを含むこともできるし、単一のプロセッサ又は単一のメモリコントローラのみを含むこともできる。したがって、パーティションユニット４００は、限定でなく例示として解釈されるべきである。
【００３４】
通常のパーティションユニットにおける、たとえばプロセッサといったデバイスは、そのデバイスのステータスをローカルオペレーティングシステムに通知することができる場合がある。代替的に又は付加的に、パーティションユニットを制御するローカルオペレーティングシステムは、予測解析を使用して、デバイスのステータスを評価し、デバイスが故障しているかもしれないか否かを判断することができ、したがって、交換の候補であり得るか否かを判断することができる。システムアドミニストレータ等の人物は、定期的なメンテナンスの一部としてデバイスステータスをチェックすることができるが、切迫した故障をローカルオペレーティングシステムに通知することをハードウェア自体に行わせることが好ましい。いくつかの状況では、プロセッサを或るモデルから別のモデルにアップグレードすること、又は、プロセッサ及び／若しくはメモリをシステムに追加することが望ましい場合がある。システムアドミニストレータは、このような機能を実行することができるが、明示的にプログラミングされた命令を使用することによって、又は、パーティション、パーティションユニット、及びステータスを報告するハードウェアの能力を利用する定期的に指定時刻で作動する命令によって、このような交換及び追加を自動化することが好ましい。
【００３５】
図４に示すパーティションユニット４００等のパーティションユニットにおけるたとえばメモリブロックといったデバイスのいずれもが、故障するおそれがある。メモリブロックが故障した場合、そのメモリブロックを同等のメモリブロックと交換することが好ましい。一例示の故障したメモリブロック及び同等の例示の交換メモリブロックを図５に示す。図５では、故障したメモリブロック５００は、たとえば番号１、２、３、及び４のデータを含むメモリセルのセット５０４を備える。メモリセルのセット５０４のメモリセルを、ローカル物理アドレス５０２を使用して参照することができ、また、グローバル物理アドレス５０６を使用して参照することもできる。ローカル物理アドレス５０２は、アドレス１０００及び１００１を使用するのに対して、グローバル物理アドレス５０６は、アドレス５及び６を使用する。故障したメモリブロック５００は、交換メモリブロック５１０と交換することができる。交換メモリブロック５１０は、故障したメモリブロック５００からのデータ、すなわち番号１、２、３、及び４のデータを含むことができるメモリセルのセット５１４を備える。故障したメモリブロックと同様に、交換メモリブロック５１０のメモリセルのセット５１４のメモリセルを、ローカル物理アドレス５１２を使用して参照することができ、また、グローバル物理アドレス５１６を使用して参照することもできる。ローカル物理アドレス５１２は、アドレス２０００及び２００１を使用するのに対して、グローバル物理アドレス５１６は、アドレス７及び８を使用する。通常の交換シーケンスでは、故障したメモリブロック５００のメモリセルのセット５０４のデータは、交換メモリブロック５１０のメモリセルのセット５１４内にコピーされる。故障したメモリブロック５００のローカル物理アドレス５０２、すなわち１０００及び１００１は、交換メモリブロック５１０のローカル物理アドレス５１２、すなわち１０００及び１００１に再マッピングされる。この再マッピングによって、システムの残りの部分は、交換オペレーション中、不変のままとすることが可能になる。パーティションユニットを交換するとき、「極小的」更新、すなわちメモリブロックの交換を行うことが好ましい。メモリブロックの極小的更新中、更新中のメモリブロックがアクセスされた場合、故障したメモリブロックのアドレスが排他的に使用されるか、又は、交換メモリブロックのアドレスが排他的に使用される。すなわち、メモリセル５０４のデータアクセスは、ローカル物理アドレス５０２から排他的に行われるか、又は、ローカル物理アドレス５１２から排他的に行われる。
【００３６】
図５に示す故障したメモリブロック５００の交換メモリブロック５１０との交換は、或るパーティションユニットが別のパーティションユニットと交換されるときに行うことができる一タイプの交換である。パーティションユニットのこの交換又は追加は、或るプロセッサ、或るコアのセット、又は或るコアと、別のプロセッサ、別のコアのセット、又は別のコアとの交換又は追加も伴うことができる。パーティショニング可能なサーバ上においてたとえば制御され且つ順序だった方法でフェイルオーバを行うプロセスでパーティションユニットの交換又は追加を行うための一方法は、グローバル管理エンティティによるローカルオペレーティングシステムのパーティション内のスペアパーティションユニットの管理を伴う。このような方法の一例を図６〜図１２に機能フロー図の形で示す。図６〜図１２に示す機能フロー図では、「（Ｇ）」でマーキングされたブロックを除いて、動作は、ローカルオペレーティングシステム、すなわちパーティションを制御するオペレーティングシステムのインスタンスによって行われる。「（Ｇ）」でマーキングされたブロックは、ＳＰ又はＢＭＣ等のグローバル管理エンティティによって行われる動作を含む。
【００３７】
パーティションユニットの交換又は追加を行うための一例示のプロセスの機能フロー図を図６に示す。
図６に示すパーティションユニットの交換又は追加を行うための方法は、ブロック６００で開始する。ブロック６００において、ローカルオペレーティングシステムは、ハードウェアＩＤに基づく予測解析を使用して、故障したパーティションユニットを検出する。ハードウェアＩＤは、たとえば、プロセッサのアドバンストプログラマブル割り込みコントローラＩＤ（ＡＰＩＣ  ＩＤ）とすることができる。判定ブロック６０２において、新しいパーティションユニットが交換用のものであるか否かを判断するテストが行われる。新しいパーティションユニットが交換用のものである場合、制御は、ブロック６０４にフローする。新しいパーティションユニットが交換用のものでない場合、すなわち、追加用のものである場合には、制御は、サブルーチン６０６にフローする。ブロック６０４において、グローバル管理エンティティは、故障したパーティションユニットを物理ハードウェアにマッピングする。制御は、サブルーチン６０６にフローする。サブルーチン６０６は、パーティションユニットの交換をイニシエートするのに使用される。パーティションユニットの追加又は交換をイニシエートするステップの詳細を、図７に示し、以下で説明する。判定ブロック６０８において、再度、新しいパーティションユニットが交換用のものであるか否かが判断される。新しいパーティションユニットが交換用のものでない場合、すなわち追加用のものである場合には、制御は、ブロック６１２にフローする。ブロック６１２において、ローカルオペレーティングシステムは、パーティションユニットをローカルオペレーティングシステムに追加し、その後、この方法は終了する。判定ブロック６０８において、新しいパーティションが交換用のものであると判断された場合には、制御は、ブロック６１０にフローする。ブロック６１０において、ローカルオペレーティングシステムは、新しいパーティションユニットをローカルオペレーティングシステムに追加する準備を行う。たとえば、データ構造体をメモリにセットアップして、故障したプロセッサのＡＰＩＣ  ＩＤの記録、故障したメモリブロックのサイズ及び開始ロケーションの記録、又は故障したメモリブロックの別のメモリブロック内への再マッピングを行うことができる。ブロック６１４において、ローカルオペレーティングシステムは、交換パーティションユニットのインストールを示す信号をグローバル管理エンティティへ送信することによって、ローカルオペレーティングシステムにおいて交換をイニシエートする。ブロック６１４の後、制御は、サブルーチン６１６にフローする。サブルーチン６１６は、交換パーティションユニットを受動的にマイグレーションするのに使用される。交換パーティションユニットを受動的にマイグレーションするステップの詳細を、図８に示し、以下で説明する。サブルーチン６１６が実行された後、制御は、サブルーチン６１８にフローする。サブルーチン６１８は、交換パーティションユニットを能動的にマイグレーションするのに使用される。交換パーティションユニットを能動的にマイグレーションするステップの詳細を、図９に示し、以下で説明する。サブルーチン６１８が実行された後、制御は、サブル��チン６２０にフローする。サブルーチン６２０は、故障したパーティションユニットの交換後のクリーンアップを行うのに使用される。クリーンアップがどのように行われるのかの詳細を、図１０に示し、以下で説明する。サブルーチン６２０が実行された後、この方法は終了する。
【００３８】
サブルーチン６０６、すなわちパーティションユニットの追加／交換のイニシエートの詳細を図７に示す。このサブルーチンは、ブロック７４０で開始する。ブロック７４０において、グローバル管理エンティティは、追加されるパーティションユニットをグローバルパーティションユニットプールから選択する。グローバルパーティションユニットプールは、グローバル管理エンティティが交換パーティションユニットを選択するパーティションユニットのセットである。グローバル管理エンティティは、ハードウェアパーティショニングを使用して、どのパーティションユニットが各ローカルオペレーティングシステムに利用可能であるのかを選択する。交換の場合、グローバル管理エンティティは、少なくとも、故障したパーティションユニットの能力を有する交換パーティションユニットを選択する。メモリを含むパーティションユニットの一例示の能力は、メモリのサイズである。プロセッサを含むパーティションユニットの一例示の能力は、そのプロセッサにおけるコアの個数である。交換パーティションユニットは、アイドルなスペアとすることもできるし、異なる、おそらくより重要でないローカルオペレーティングシステムによって使用されているパーティションユニットとすることもできる。重要度のより低いローカルオペレーティングシステムはシャットダウンすることができ、そのローカルオペレーティングシステムの資源、すなわちパーティションユニットは、その後、スペアとして使用することができる。ブロック７４４において、ローカルオペレーティングシステムは、パーティションユニットをローカルオペレーティングシステム内へイニシエートする。ブロック７４６において、グローバル管理エンティティは、その新しいパーティションユニットをローカルオペレーティングシステムパーティション内に移行させる。詳細には、ＳＰ１０２は、新しいパーティションユニットをルーティングテーブル１０６において再マッピングする。ブロック７４８において、ローカルオペレーティングシステムは、ローカルオペレーティングシステムパーティションにおいて新しいパーティションユニットを発見する。ブロック７４８の後、このサブルーチンは終了する。
【００３９】
サブルーチン６１６、すなわち交換パーティションユニットの受動的なマイグレーションの詳細を、図８に示すフロー図に例示の形で示す。受動的なマイグレーション及び能動的なマイグレーションの双方の目的は、進行中の高レベルのアプリケーションのシャットダウンも妨害もすることなく、できるだけ多くの情報を、故障したパーティションユニットから交換パーティションユニットへ転送することである。たとえば、アプリケーションは、複数のメモリブロックをマッピングしている、すなわち要求して受け取っている場合がある。このアプリケーションは、これらの複数のメモリブロックの一定のメモリブロックを使用していない、すなわち変更していない可能性がある。メモリブロックが変更されていない限り、アプリケーションを妨害することなく、そのメモリブロックの内容を交換メモリブロックへ転送することができる。別のメモリ転送ストラテジーは、できるだけ多くの状態を転送し、メモリブロックのほとんどが変更されないと仮定することである。メモリブロックが変更されていないかを判断する１つの方法は、メモリブロックの物理メモリのページのそれぞれについて仮想メモリページテーブルエントリーの変更フラグをチェックすることである。変更フラグがセットされていない場合、メモリブロックは変更されておらず、したがって、転送可能な状態にある。メモリの内容を転送する一定の方法は、他の方法よりも効率的である。たとえば、プロセッサは、メモリセルの内容をプロセッサのレジスタ又はセル内に転送し、次いで、新しいメモリセルへ転送しなければならない。通常、プロセッサは、たとえば６４ビットといった、レジスタの最大データ転送幅に制限される。ダイレクトメモリアクセス（ＤＭＡ）プロセッサ等の専用メモリ転送デバイスは、より大きな「チャンク」で、且つ通例、より高速に、メモリのブロックを転送することができる。ＤＭＡプロセッサ等の「バックグラウンドエンジン」は、メモリブロックの内容を転送するのに、プロセッサの介入をほとんど又はまったく必要としない。好ましくは、ドライバモデルが、変更フラグのチェック及び内容の転送を最適な方法で行うことを可能にする。
【００４０】
交換パーティションユニットを受動的にマイグレーションするためのサブルーチンの例示のフロー図を図８に示す。このサブルーチンは、ブロック８００で開始する。ブロック８００において、メモリが、変更フラグを使用して転送され、変更されたメモリが追跡される。ブロック８０２において、ローカルオペレーティングシステムは、ブロックの変更フラグをチェックすることによって、変更されているメモリページ、すなわちブロック、の追跡を開始する。ブロック８０４において、ターゲットのパーティションユニットメモリ、すなわち故障したパーティションユニットメモリの内容は、交換パーティションユニットメモリへ転送される。
【００４１】
図６から図８に示すブロックの動作が行われている間、ローカルオペレーティングシステムが、故障したパーティションユニットを交換する準備をしているときであっても、ローカルオペレーティングシステムで動作している高レベルのアプリケーションは、まだ有用な作業を行うことができることに留意されたい。これは、サブルーチン６１８、すなわち、交換パーティションユニットの能動的なマイグレーションで行われる動作には当てはまらない。その代わり、このプロセスは、交換を完了するのに必要な動作を除いて、アクティビティが許可されない「クリティカルセクション」に入っていると言うことができる。交換パーティションユニットの能動的なマイグレーションである、プロセスのこのクリティカルセクションを、図９の例示の機能フロー図に示す。好ましくは、クリティカルセクションで費やされる時間は、ローカルオペレーティングシステム上で実行されているアプリケーションへのリモート接続が能動的なマイグレーションに気付くのを回避するために最小にされる。このサブルーチンは、サブルーチン９００で開始する。サブルーチン９００において、ローカルオペレーティングシステムは、システムを「クワイエス」する。システムをクワイエスするステップの詳細を、図１１に示し、以下で説明する。手短に言えば、システムがクワイエスされるとき、割り込みが停止されて、Ｉ／Ｏデバイス及び他のプロセッサが、交換中のプロセッサに割り込みを行うことが妨げられ、メモリ変更は停止される。図９のブロック９０２に続いて、ローカルオペレーティングシステムは、変更されたメモリを転送する。すなわち、変更フラグがセットされたメモリブロックの内容を転送する。ブロック９０４において、グローバル管理エンティティは、メモリコントローラルーティングの極小的更新を行う。ブロック９０６において、ローカルオペレーティングシステムは、故障したプロセッサの状態を保存する。ブロック９０８において、ローカルオペレーティングシステムは、故障したプロセッサを停止する。故障したプロセッサは、まだパーティションに存在し、故障したプロセッサが、まだパーティションに存在する間、害を及ぼすことができないことを確実にするためにオフにされる。ブロック９１０において、ローカルオペレーティングシステムは、故障したプロセッサの状態を交換プロセッサに適用する。故障したプロセッサの状態を交換プロセッサに適用するステップは、故障したプロセッサの内部及び外部でアクセス可能なレジスタを交換プロセッサに転送するステップ、交換プロセッサのＡＰＩＣ  ＩＤを故障したプロセッサのＡＰＩＣ  ＩＤに極小的に変更するステップ、及び故障したプロセッサ上でトリガされる割り込みが交換プロセッサ上でトリガされるように割り込み記述子テーブルを変更するステップを含むことができる。ブロック９１２において、ローカルオペレーティングシステムは、新しいプロセッサ、すなわち交換プロセッサを反映するようにシステム割り込み状態を更新する。すなわち、グローバル割り込み状態は、外部デバイスに、故障したプロセッサの代わりに交換プロセッサにアクセスさせるように変更される。ブロック９１２の後、このプロセスの交換パーティシ��ンユニットのサブルーチンの能動的なマイグレーションは終了する。
【００４２】
図６に示すサブルーチン６２０、すなわちクリーンアップの詳細を、図１０に示す例示のフロー図に示す。クリーンアップサブルーチンは、サブルーチン１００２で開始する。サブルーチン１００２において、システムは、クワイエス解除される。システムをクワイエス解除する詳細を、図１２に示し、以下で説明する。図１０のブロック１００４において、たとえば図１に示すＳＰ１０２といったグローバル管理エンティティは、クワイエスが終了したことの通知を受ける。ブロック１００８において、故障したパーティションユニットは、物理的に除去される。故障したパーティションユニットの除去は、さまざまな物理デバイスを機械的に除去することを伴う場合もあるし、さまざまな物理デバイスを電気的に絶縁することを伴う場合もある。たとえば、プロセッサが、電気的に接続されたソケットにプラグ接続されている場合、そのプロセッサがプラグ接続されているソケットへの電力をシャットダウンすることによるか、又は、そのプロセッサをソケットから除去することによるかのいずれかによって、そのプロセッサを「物理的に除去」することができる。ブロック１００８の後、このサブルーチンは終了する。
【００４３】
故障したパーティションユニットの物理デバイスを除去するブロック１００８のアクティビティは、オプションと見なすことができるが、好ましいものである。故障した物理デバイスは、パーティションユニットのルーティングテーブルにまだ入力されている。したがって、一定の状況のもとで、故障した物理デバイスは、システムの他のコンポーネントを混乱させる場合がある。
【００４４】
図９に示すサブルーチン９００、すなわちシステムのクワイエスの詳細を、図１１に示す例示のフロー図に示す。「クワイエス」という用語は、システムを非アクティブな状態にすることを意味する。システムをクワイエスすることによって、極小的交換の安全な環境が提供される。図１１に示すブロック１１０２において、ローカルオペレーティングシステムは、制御プロセッサ、すなわちクワイエスアクティビティを制御するプロセッサを選択する。この制御プロセッサは、システムのクワイエス及び能動的なマイグレーションを達成する命令のセットを実行する。制御プロセッサを選ぶためのアルゴリズムにはさまざまなものがある。たとえば、交換されていない最も小さな番号を有する最もビジーでないプロセッサを制御プロセッサとするように選択することができる。別の制御プロセッサ候補は、交換プロセスを開始したプロセッサとすることができる。また、複数の制御プロセッサを有することも、通例は最適ではないが、可能である。したがって、単一の制御プロセッサは、限定ではなく例示として解釈されるべきである。
【００４５】
制御プロセッサは、クワイエスサブルーチンの残りの動作を実行する。ブロック１１０４において、制御プロセッサは、すべての割り込みを停止する。すなわち、物理デバイスが、交換する必要があるプロセッサに割り込むことを停止させる。好ましくは、物理デバイスはクワイエスされる。制御プロセッサは、それらの物理デバイスを制御するデバイスドライバと通信する。物理デバイスが割り込みをトリガすることを防止するために、制御プロセッサは、停止信号、スリープ信号、又はサスペンド信号をデバイスドライバへ送信することができる。同じ信号を使用してメモリアクセスを防止することができる。好ましくは、デバイスドライバを変更する必要なく且つ／又は再コンパイルする必要なく、システムをクワイエスすることができる。ブロック１１０６において、制御プロセッサは、すべてのダイレクトメモリアクセスを停止する。デバイスドライバがファイルへの書き込み及びＤＭＡの実行を行うことが防止される。デバイスドライバは、割り込み及びＤＭＡの要求をキューに入れることができる。割り込みには、エッジトリガ方式の割り込み及びレベルトリガ方式の割り込みがある。レベルトリガ方式の割り込みは、キューに入れることができる。エッジトリガ方式の割り込みは、直ちにサービスを受けられない場合に喪失される。
【００４６】
図１１を続けて、ブロック１１０８において、制御プロセッサは、すべてのデバイスにおけるアクティビティを停止する。好ましくは、デバイスは、交換中のプロセッサによって使用されているメモリの変更を回避し、交換中のプロセッサの状態の変更を回避する。プロセッサ状態は、そのプロセッサ自体のレジスタ及びメモリ、並びに、プロセッサ状態を記憶するために排他的に割り当てられたプロセッサの外部のメモリを含む。大まかに言えば、交換される予定のパーティションユニットとの通信は停止される。ブロック１１１０において、制御プロセッサは、動作の一時停止が行われていることを示す信号をアプリケーションへ送信することによって、すべてのアプリケーションをホールトする。ブロック１１１２において、制御プロセッサは、システムの他のすべてのプロセッサを「ランデブー」させるのに使用される。ランデブーにおいて、制御プロセッサは、それらの他のプロセッサに、交換中のパーティションユニット、すなわち故障したパーティションユニットへのアクセスを停止させる。ブロック１１１２の後、このサブルーチンは終了する。追加する必要があるパーティションユニットが存在する場合、他のパーティションユニットの交換とは対照的に、クワイエスサブルーチンの後に、追加のパーティションユニットを追加することができる。
【００４７】
コラリング（corralling）としても知られているランデブーでは、制御プロセッサは、プロセッサ間割り込み（ＩＰＩ）コマンドを他のプロセッサへ送信することによって、他のプロセッサに、交換中のパーティションユニットへのアクセスを停止させる。ＩＰＩは、他のプロセッサが共通のバリア上で空転し続けるべきであることを他のプロセッサに示す。すなわち、アプリケーション作業を行うことを停止し、バリアが変化して、アプリケーション作業が再開すべきであることを示すまで、バリア上で空転する。アプリケーションを実行しているプロセッサをバリア上で空転させることによって、アプリケーションが明示的にホールトする必要なく、アプリケーションが交換と干渉することが防止される。好ましくは、アプリケーションには、アプリケーションの目的と一致した方法で一時停止の存在に応答する機会が与えられる。たとえ、アプリケーションが一時停止の存在に応答しない場合であっても、アプリケーションを実行しているプロセッサがランデブーされるとき、アプリケーションが交換と干渉することは自動的に防止される。
【００４８】
バリア上で空転する一例示の場合に、プロセッサが他の命令を実行していないことを確実にするために、各プロセッサは、同じ命令のセットを実行する。これらの命令は、アドレスを読み出すようにそれらのプロセッサに命令し、そのアドレスの内容が０でない場合には、そのアドレスを再び読み出すようにそれらのプロセッサに命令する。制御プロセッサが、アドレスの内容を０に設定するとき、それらのプロセッサは、命令のセットを通り越してステップし、それらのプロセッサがバリア上で空転する前に行っていたものに戻る。プロセッサがバリア上で空転している間、コントローラプロセッサは、受動的なマイグレーション状態で転送することができなかった状態を転送することができると共に、変更されたメモリを転送することができる。
【００４９】
通常のランデブーでは、それぞれがバリアを必要とする複数のステージが存在し得る。たとえば、第１のステージでは、制御プロセッサは、他のプロセッサ用、すなわち非制御プロセッサ用の第１のバリアを設定する。他のプロセッサがバリア上で空転している間、制御プロセッサは、状態を保存するためのデータ構造体をセットアップするコードを実行する。次に、制御プロセッサは、第１のバリアを解放し、状態を保存するように他のプロセッサに命令する。制御プロセッサは、第２のステージ用の第２のバリアを設定する。他のプロセッサが、状態を保存する命令に従ったとき、他のプロセッサは、第２のバリア上で空転する。適切な時、たとえば、他のすべてのプロセッサが状態を保存したとき、制御プロセッサは、第２のバリアを解放し、オフラインになるように他のプロセッサに命令する。
【００５０】
図１０に示すサブルーチン１００２、すなわちシステムのクワイエス解除の詳細を、図１２に示す例示のフロー図に示す。システムのクワイエス解除は、基本的に、システムをクワイエスすることの逆である。クワイエス解除は、ブロック１２０２で開始する。ブロック１２０２において、制御プロセッサは、システムの他のすべてのプロセッサをランデブー解除する、すなわち解放するのに使用される。ブロック１２０４において、すべてのアプリケーションは再開される。より具体的には、プロセスは、アプリケーション自体にトランスペアレントであるので、プロセッサは、アプリケーションからのアクティビティをスケジューリングするのに利用可能である。ブロック１２０６において、アクティビティが、すべてのデバイスで再開される。ブロック１２０８において、すべてのダイレクトメモリアクセスが再開される。ブロック１２１０において、すべての割り込みが再開される。ブロック１２１０の後、このサブルーチンは終了する。
【００５１】
図６〜図１２に示して上述したプロセスは、ローカルオペレーティングシステムが、特定のデバイス用に再コンパイルされる必要なく、パーティションユニットを交換することができることを可能にする。プロセスは、ほとんどのコンピュータ製造業者の機器が、パーティション及びパーティションユニットをサポートする場合に、それらの機器上で動作するように実施することができる。ファームウェアは、特定のハードウェアの詳細を抽象化することを可能にするのに十分なソフトウェア「フック」で記述することができ、したがって、各特定の機器用のファームウェアを記述する労力及び費用を回避することができる。ファームウェアが必要とされる場合があるが、ローカルオペレーティングシステムのプロセスの実施態様は、再コンパイルも再パッケージも再配布も必要とされない。
【００５２】
例示の実施形態を図示して説明してきたが、本発明の趣旨及び範囲から逸脱することなく、それらの実施形態においてさまざまな変更を行えることが理解されよう。
【図１】
2010510607.tif 000003
【図２】
2010510607.tif 000004
【図３】
2010510607.tif 000005
【図４】
2010510607.tif 000006
【図５】
2010510607.tif 000007
【図６】
2010510607.tif 000008
【図７】
2010510607.tif 000009
【図８】
2010510607.tif 000010
【図９】
2010510607.tif 000011
【図１０】
2010510607.tif 000012
【図１１】
2010510607.tif 000013
【図１２】
2010510607.tif 000014
【国際調査報告】
2010510607.tif 000015
2010510607.tif 000016