(57)【要約】【課題】コンピュータ構成においてデバイスのクリティカル性を判断する方法及びシステムを提供する。【解決手段】マルチパスコンピュータ構成でデバイスのクリティカル性を判断する方法であって、プラットフォーム階層を表す有向非巡回グラフをトラバースするステップと、デバイスの取り外しにより影響を受ける有向非巡回グラフ内のパスを判断するステップとを含む、マルチパスコンピュータ構成でデバイスのクリティカル性を判断する方法。プラットフォーム階層を表す有向非巡回グラフデータ構造と、有向非巡回グラフをトラバースして、デバイスの取り外しにより影響を受ける有向非巡回グラフ内のパスを判断する制御装置とを備える、コンピュータシステム。【選択図】  図４
2008269570.tif 000002
【特許請求の範囲】
【請求項１】
マルチパスコンピュータ構成でデバイスのクリティカル性を判断する方法であって、
プラットフォーム階層を表す有向非巡回グラフをトラバースするステップと、
前記デバイスの取り外しにより影響を受ける前記有向非巡回グラフ内のパスを判断するステップと
を含む方法。
【請求項２】
影響を受ける各アクセスパスに対応するデバイスを判断することと、
すべてのアクセスパスを失うデバイスを判断することと
を含む、請求項１に記載の方法。
【請求項３】
少なくとも前記すべてのアクセスパスを失う前記デバイスのシステム内での使用のされ方を判断すること
を含む、請求項２に記載の方法。
【請求項４】
前記システムでの前記デバイスの前記使用のされ方は、
前記有向非巡回グラフのノードに記憶される属性から判断される、
請求項３に記載の方法。
【請求項５】
前記属性は、
前記デバイスがブートデバイスであるか否か、
又は前記デバイスがクォーラムディスクであるか否か
のうちの少なくとも一方を含む、
請求項４に記載の方法。
【請求項６】
デバイスクリティカル性メッセージを生成することを含む、
請求項１に記載の方法。
【請求項７】
前記すべてのアクセスパスを失う前記デバイスの前記使われ方がユーザレベルプロセスに影響する場合、
アプリケーションレベルクリティカル性及び／又はユーザアプリケーションのデータへのアクセスが失われることを報告することを含む、
請求項６に記載の方法。
【請求項８】
前記有向非巡回グラフはオペレーティングシステムにより保持される、
請求項１に記載の方法。
【請求項９】
マルチパスコンピュータ構成でホットプラグ取り外し操作を実行する方法であって、
請求項１に記載の方法を用いて、取り外されるデバイスのクリティカル性を判断すること
を含む方法。
【請求項１０】
前記デバイスが前記アクセスパスを失わないかを判断することと、
性能の低下があり得ることをユーザに警告して前記ホットプラグ操作を許可することと
を含む、請求項９に記載の方法。
【請求項１１】
プラットフォーム階層を表す有向非巡回グラフデータ構造と、
前記有向非巡回グラフをトラバースして、デバイスの取り外しにより影響を受ける前記有向非巡回グラフ内のパスを判断する制御装置（arrangement）と
を備える、コンピュータシステム。
【請求項１２】
前記制御装置は、
影響を受ける各アクセスパスに対応するデバイスを判断し、
すべてのアクセスパスを失うデバイスを判断する、
請求項１１に記載のコンピュータシステム。
【請求項１３】
前記制御装置は、
少なくとも前記すべてのアクセスパスを失う前記デバイスの前記システム内での使用のされ方を判断する、
請求項１２に記載のコンピュータシステム。
【請求項１４】
前記システムでの前記デバイスの前記使用のされ方は、
前記有向非巡回グラフのノードに記憶される属性から判断される、
請求項１３に記載のコンピュータシステム。
【請求項１５】
前記属性は、
前記デバイスがブートデバイスであるか否か、
又は前記デバイスがクォーラムディスクであるか否か
のうちの少なくとも一方を含む、
請求項１４に記載のコンピュータシステム。
【請求項１６】
前記制御装置は、
デバイスクリティカル性メッセージを生成するように構成される、
請求項１１に記載のコンピュータシステム。
【請求項１７】
前記すべてのアクセスパスを失う前記デバイスの前記使われ方がユーザレベルプロセスに影響する場合、
前記制御装置は、
アプリケーションレベルクリティカル性及び／又はユーザアプリケーションのデータへのアクセスが失われることを報告する、
請求項１６に記載のコンピュータシステム。
【請求項１８】
前記有向非巡回グラフを保持するオペレーティングシステムを備える、
請求項１１に記載のコンピュータシステム。
【請求項１９】
前記制御装置が、取り外される前記デバイスのクリティカル性を判断するように動作可能である、ホットプラグ取り外し機能を有する拡張バスを備える、
請求項１１に記載のコンピュータシステム。
【請求項２０】
前記コンピュータシステムはクラスタである、
請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、コンピュータ構成においてデバイスのクリティカル性を判断する方法及びシステムに関する。
【背景技術】
【０００２】
近年のコンピューティングシステムは、例えば、メインフレーム、ミニコンピュータ、ワークステーション、サーバ、パーソナルコンピュータ、インターネット端末、ノートブック、及び組み込み(embedded)システムを含む多くの形態で見られる。典型的なコンピュータシステムは、プロセッサ、関連(associated)メモリ、（通常、システム基盤上に）制御ロジック、並びに入力及び／又は出力（Ｉ／Ｏ）をシステムに提供するいくつかの周辺デバイスを備える。多くの場合、コンピュータシステム基板は拡張プリント回路基板を受けて、コンピュータシステムの能力を増大させ、拡張バスを通して周辺デバイスに接続する。
【０００３】
一般に、コンピュータシステムは、通信バス上に複数の拡張スロットを備えて、アドインカードを使用して外部周辺デバイスへのアクセスを提供する。アドインカードは、コンピュータシステムの機能を拡張し、例えば、ネットワークインタフェースカード、グラフィックスカード、ストレージコントローラ等とすることができる。多くの場合、通信バス及びインタフェースのアーキテクチャ(architecture)及び機能は、コンピュータ業界全体を通して規格化されて、複数の装置ベンダーがコンピュータシステムに外部周辺デバイスを提供できるようにしている。このような１つの標準は、PCI Special Interest Groupにより策定されたＰＣＩホットプラグ仕様改訂版１．０及び１．１であり、参照によりその全体を本明細書に援用する。ＰＣＩホットプラグ仕様は、コンピュータシステムの稼働中に、アドインカードをコンピュータシステムのＰＣＩバスの拡張スロットに着脱するプロセスの主要な側面(aspect)のいくつかを規定する。
【０００４】
ＰＣＩホットプラグ仕様は、コンピュータシステムを再起動することなくアドインカードの挿抜等のホットプラグイベントを受け入れるコンピュータシステム等のハードウェアプラットフォームを記述する。通常、ホットプラグイベントは、コンピュータシステムのホットプラグコントローラにより制御される。コンピュータシステム内のホットプラグイベントドライバが、ホットプラグコントローラに対するホットプラグイベントを処理する。PCI Special Interest Groupは、ＰＣＩ標準ホットプラグコントローラ及びサブシステム仕様改訂版１．０（以下、「コントローラ仕様」と呼ぶ）においてホットプラグコントローラの規格も規定しており、これも参照によりその全体を本明細書に援用する。コントローラ仕様は、ハードウェアプラットフォームとのホットプラグイベントの汎用インタフェースを規定する。
【０００５】
デバイスをコンピュータシステムにオンラインでホットプラグする(hot-plugging)ことの主な側面の１つは、システム上のこのような動作の影響を解析することである。このような解析は、ホットプラグにより、デバイスが取り外されるか、又はコンピュータシステムがデバイス群を利用できなくなる場合に特に重要である。この動作をクリティカルリソース解析（ＣＲＡ）と呼ぶ。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、コンピュータ構成においてデバイスのクリティカル性を判断するための方法及びシステムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一形態は、マルチパスコンピュータ構成でデバイスのクリティカル性を判断する方法であって、プラットフォーム階層を表す有向非巡回グラフをトラバースするステップと、前記デバイスの取り外しにより影響を受ける前記有向非巡回グラフ内のパスを判断するステップとを含む方法である。
【０００８】
これより、本発明の実施形態を単に例として、添付図面を参照して説明する。図面において、同じ参照符号の呼称が全体を通して同様の要素を表す。
【発明を実施するための最良の形態】
【０００９】
好ましい実施形態（複数可）の以下の説明は、単に例示的な性質のものであり、本発明、応用例、又は用途を制限する意図は決してない。さらに、コンピューティング装置の「メモリ」は、メモリの種類がさらに指定されない場合、任意の適当な種類の一次記憶装置又は二次記憶装置を含み得る。一次記憶装置の例として、キャッシュメモリ、ランダムアクセスメモリ、及び読み取り専用メモリが挙げられる。二次記憶装置の例として、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、及びＤＣ−ＲＷが挙げられる。当業者は、所与の用途に特定の種類の一次記憶装置又は二次記憶装置が適当であるか否かを判断するために、メモリが書き込み可能でなければならないか、それとも読み取り可能である必要があるだけであるかを考慮する。
【００１０】
有向非巡回グラフ（ＤＡＧ）を使用して、影響を受けるデバイスへの潜在的なマルチパスを含むプラットフォーム階層を表すことにより、マルチパスコンピュータ構成でのホットプラグ操作に関するデバイスのクリティカル性を判断する方法、システム、及びコンピュータプログラムを記載する。
【００１１】
以下にＤＡＧと略すこともある有向非巡回グラフは、有向巡回のない有向グラフである。ＤＡＧでは、任意の所与の頂点ｖについて、ｖから出てｖで終わる空ではない有向パス(non empty directed path)は存在しない。有向非巡回グラフは、以下のようなモデルに現れる。そのモデルでは、頂点がその頂点自体へのパスを有することに意味がなく、例えば、エッジｕ−−＞ｖは、頂点ｖが頂点ｕの部分であることを示す場合、このようなパスは、頂点ｕがその頂点自体の一部であることを示し、これは起こりそうもない。
【００１２】
有向非巡回グラフは、その頂点の半順序に対応することができる。ＤＡＧの２つの所与の頂点ｕ及びｖについて、ｕ＝ｖ又はｕ＜ｖは、グラフ内に頂点ｕから頂点ｖへの有向パスがある場合、まさに半順序にある。しかし、多くの異なる有向非巡回グラフが同じ半順序をこのようにして表すことができる。これらのグラフの中で、エッジの数が最小のものは推移簡約にあり、エッジの数が最大のものは推移閉包にある。ＤＡＧでは、始点(source)は入ってくるエッジのない頂点である。同様に、終点(sink)は出て行くエッジのない頂点である。有限ＤＡＧは、少なくとも１つの始点及び少なくとも１つの終点を有する。ＤＡＧの長さは、最長有向パスの長さ（エッジ数）である。有向非巡回グラフの典型的な構造を図５に示す。
【００１３】
図１は、高可用性コンピュータ構成を示す。高可用性構成は、周辺デバイス１０２に接続するための２つのホストバスアダプタＨＢＡ１  １０４及びＨＢＡ２  １０３を備えることができるコンピュータシステム１０１から成ることができ、周辺デバイス１０２は、ホストバスアダプタにアクセスされるメモリデバイス又はメモリデバイス群であることができる。このようなコンピュータシステムは、コンピューティング環境の要件に応じて任意の数のホストバスアダプタから成り得る。同様に、周辺デバイス１０２は、単一のデバイス及び／又はデバイス群を含んでもよい。コンピュータにおける周辺デバイス１０２は、例えば、ＰＣＩ(Peripheral Component Interconnect)バスを介してマザーボードに接続することができる。
【００１４】
図１に示すようなマルチパスコンピュータ構成では、デバイス１０２等のデバイスに、ＨＢＡ１  １０４又はＨＢＡ２  １０３等のホストバスアダプタを介して１つより多い規定のパスでアクセスすることができる。これらのデバイスパス、すなわちこれらを介してデバイスがホストバスアダプタに接続されるパスは、有向非巡回グラフの形態で表すことができる。より複雑なこのようなコンピュータシステムの構成要素階層を、図２に一例として有向非巡回グラフの形態で示す。
【００１５】
図２を参照すると、ＰＣＩバスを介してコンピュータシステムに接続される３つのデバイスがある。これらのデバイスはＰＣＩデバイス及び／又は周辺デバイスと呼ぶこともできる。
【００１６】
起動プロセス中、システムファームウェアは、各デバイスのＰＣＩ構成空間を調べて、システムリソースを割り当てることができる。ＰＣＩ仕様によれば、各デバイスは、機能するために、最高で６つのメモリ空間領域又はＩ／Ｏポート空間を要求することができる。典型的なシステムでは、オペレーティングシステムは、スタートアップ時に１１本のＰＣＩバスに問い合わせて、存在するデバイス及びこのような各デバイスが要求するシステムリソース（メモリ、割り込み線等）をリストする。次に、オペレーティングシステムは、リソースを割り当て、特定のデバイスに割り当てられたリソースについてデバイスに通知することができる。
【００１７】
図２に示すコンピュータ構成は、例として、３つのホストバスアダプタ（ｈ１、ｈ２、及びｈ３）及びホストバスアダプタに接続された５つのデバイス（ｄ１、ｄ２、ｄ３、ｄ４、及びｄ５）を含む。デバイスは、８つのデバイスパスＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、及びＰ８を介してホストバスアダプタに接続される。例えば、デバイスｄ１は、２つのパスＰ１及びＰ２を通してホストバスアダプタに接続される。同様に、デバイスｄ２は、パスＰ４及びＰ５を通して接続される。デバイスには、接続された任意のデバイスパスを通してホストバスアダプタによりアクセスすることができる。
【００１８】
ＤＡＧデータ構造の形態のシステム階層は、オペレーティングシステムにより保持され、開始時に作成される。この構造は、例えば、デバイスへのパス数、デバイスがブートデバイスであるか、それともクォーラムディスクであるか、又は後述するようにデバイスのクリティカル性を判断する際に有用であり得る他の情報等のコンピュータシステムの各構成要素に関連する特定の属性を各ノードに含むことができる。コンピュータシステムの完全な構成要素階層には、ユーザ空間又はカーネル空間からアクセス可能であり得る。
【００１９】
ホットプラグ操作により、ホットプラグデバイスをコンピュータシステムに着脱することができる。通常、このようなシステムでは、ホットプラグデバイスをコンピュータシステムから取り外すために、ユーザはホットプラグデバイスに配置された注意ボタンを押し、これによりホットプラグデバイスを取り外すホットプラグ操作が開始される。ホットプラグ操作が完了すると、指示がユーザに対して表示されて（例えば、光又は音により）、ホットプラグ操作が完了したことを示すことができる。次に、ユーザは、ホットプラグデバイスをコンピュータシステムの特定のスロットから取り外すことができる。ホットプラグ操作は、デバイスのクリティカル性を判断することを含み得る。
【００２０】
ホットプラグデバイスをコンピュータシステムに追加するには、通常、ユーザはホットプラグデバイスをシステムのオープンスロットに挿入し、ホットプラグデバイスの注意ボタンを押し、これにより、ホットプラグデバイスを追加するホットプラグ操作が開始される。ホットプラグ操作が完了すると、指示がユーザに対して表示されて（例えば、光又は音により）、ホットプラグ操作が完了し、ホットプラグデバイスのコンピュータシステムへの追加が成功したことを示すことができる。
【００２１】
デバイスのクリティカル性を判断するために実行される全体的なステップを図３に示す。ここに示すシステムでは、ホットプラグ操作のデバイスクリティカル性は、プラットフォーム階層を表す有向非巡回グラフに対してサブツリートラバースを実行して、ホストバスアダプタ群の潜在的に影響を受けるデバイスパスを判断することにより判断される（ステップ３０１）。次に、影響を受けるデバイスパスから、影響を受けるデバイスが判断され（ステップ３０２）、次に、すべてのアクセスパスを失う、影響を受けるすべてのデバイスについて、影響を受けるデバイスのシステム内での使われ方が判断される（ステップ３０３）。次に、デバイスクリティカル性メッセージを生成することができる（ステップ３０４）。
【００２２】
これより、図４を参照してこれらのステップをより詳細に説明する。
【００２３】
図４に示すように、方法は、コンピュータシステム内のホストバスアダプタの数を求めることから開始する。すべての周辺デバイスの階層が、コンピュータ構成内で求められる（４０１）。上述したように、ホットプラグ操作イベントでは、デバイスがコンピュータシステムに追加されるか、又はコンピュータシステムから取り外される。ホットプラグ操作がシステムで発生した場合、操作のクリティカル性を解析する要求が受け取られる。ホットプラグ要求を受け取った後、ホットプラグ操作により影響を受けるデバイスパスが見つけ出される（４０２）。上記４０２で見つけ出された影響を受けるデバイスパスに対して、影響を受けるすべてのデバイスがリストされる（４０３）。ステップ４０３においてリストされたデバイスは、ホストバスアダプタの取り外しによりアクセスパスを失うことになるデバイスである。ホットプラグ操作後、デバイスは構成に応じていくつか又はすべてのアクセスパスを失うことになる可能性がある。影響を受ける各デバイス（４０３）について、方法は、ホットプラグ操作後にデバイスが利用できる残りのパス数（パスカウント）をチェックする（４０６）。ホットプラグ操作を実行した後のデバイスのパスカウント（４０６）がゼロではない場合、すなわち、ホットプラグ操作後でも、デバイスがすべてのアクセスパスを失うわけではない場合、方法は、起こり得る性能損失及び／又は性能低下をシステム管理者に報告する（４０８）。この場合、ホットプラグを許可することができる。ホットプラグ操作後のデバイスのパスカウントがゼロの場合、方法は、影響を受けるデバイスとしてリストされたデバイスがシステム機能（４０７）及び／又はユーザレベルプロセス（４０９）にとってクリティカルであるか否かをチェックする。デバイスが構成要素階層内に使用属性を有する場合、ホットプラグ操作がシステムの完全性を損なうことになり得ることを報告する（４０８）。システムでのデバイスの使われ方がユーザレベルプロセス及びユーザアプリケーションのデータへのアクセスの損失に影響し得る場合、アプリケーションレベルクリティカル性が報告される（４１０）。
【００２４】
上記方法は、密に結合されたクラスタに対してクラスタワイドデバイスの可用性解析を実行するように拡張することができる。クラスタウェアオペレーティングシステムは、クラスタの他のメンバを通してのアクセス可能性を反映するように、構成要素階層内のデバイスのパス及びパスカウントを更新する。コンピューティングデバイスのうちの１つでのホットプラグ操作が、そのコンピューティングシステムからデバイスへのアクセスが失われることに繋がる場合でも、デバイスへのトラフィックを、システムにまだ接続されている別のコンピューティングシステムにルーティングすることができるため、やはり操作を許可することができ、本明細書において説明したデバイスのクリティカル性を判断する方法がこれを判断することができるようにする。
【００２５】
さらに、オペレーティングシステムが構成要素階層のノードに記憶されている特定の属性を調べることにより、システムの機能に関するデバイスのクリティカル性を直接的で単純な方法により判断することができる。デバイスがブートデバイスである場合、構成要素階層内のノードはこれを示す属性を有し得る。クリティカルリソース解析方法は、既知の属性をチェックして、システムが適宜機能することに対して、デバイスがクリティカルであるか否かをチェックすることができ、それにより、デバイスのクリティカル性を判断するプロセスが加速化される。クォーラムディスクを使用するクラスタの場合、クォーラムディスクデバイスは、クラスタが適宜機能するためのクリティカル性を示す属性を有し得る。クリティカルリソース解析方法が、このチェックを最後のステップとして実行する。したがって、クリティカルリソース解析を実行するために本明細書において説明した方法をさらに高速且つより効率的にすることができる。
【００２６】
コンピュータシステムの構成要素の使用属性を設定するメカニズムを拡張して、ユーザレベルプロセスに使用可能にすることができる。各プロセスがデバイスを使用する場合、プロセス識別子（ＩＤ）をそのデバイスを使用するプロセスのリストに追加する使用属性になる。許可されると、単に構成要素の使用属性を調べることで、プロセスレベルの影響を判断することができる。
【００２７】
マルチコンピュータシステムでのホットプラグ操作に対するデバイスクリティカル性を判断するために提案されている方法は、構成要素階層を使用してデバイスへのマルチパスの可用性を判断することもできる。デバイスが少なくとも１つのパスを通してコンピュータシステムにアクセス可能な状態である限り、デバイスへの他のパスに影響する構成要素に対するホットプラグ操作を許可することができる。この解析は、構成要素階層、及びオペレーティングシステムにより保持されるデバイスに関連する属性をトラバースすることにより実行することができる。
【００２８】
一例として、マルチパスコンピュータ構成でのホットプラグ操作でのデバイスクリティカル性を判断する上述した方法を、図２に示す構成に関連して説明する。図２の構成は、３つのＨＢＡ（ｈ１、ｈ２、及びｈ３）及び５つのデバイス（ｄ１、ｄ２、ｄ３、ｄ４、及びｄ５）で構成される。デバイスは、８つのデバイスパスＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、及びＰ８を介してＨＢＡに接続される。図２では、仮にホットバスアダプタｈ２がホットプラグ操作を通して取り外される場合、本明細書において提案される技法は、
１．ｐ２、ｐ５、及びｐ６がｈ２の取り外しにより影響を受けるパスであると判断する。
２．上記パスにより、デバイスｄ１、ｄ３、及びｄ４がアクセスパスのうちの１つを失うことになる。このため、
ａ．ｄ１は、代替パスｐ１を通してシステムにアクセス可能な状態を保ち、且つ
ｂ．ｄ３は、代替パスｐ４を通してシステムにアクセス可能な状態を保ち、且つ
ｃ．ｄ４は、代替パスｐ７を通してシステムにアクセス可能な状態を保つ。
【００２９】
したがって、この場合、デバイスへのパスのうちの１つが失われることにより性能が低下する可能性があることをユーザに警告して、ホットプラグ操作を許可することができる。
【００３０】
ＤＡＧをトラバースすることによりマルチパスコンピュータ構成でのホットプラグ操作のデバイスクリティカル性を判断するために提案される方法は、デバイスのクリティカル性を判断する効率的な方法を提供する。
【００３１】
本技法の上記変形はいずれも適した汎用コンピュータをプログラムすることにより実施することができる。プログラミングは、コンピュータ可読であり、コンピュータにより実行可能であり上述した動作を実行させる命令プログラムを符号化したプログラム記憶デバイスの使用を通して実現することができる。プログラム記憶デバイスは、例えば、１つ又は複数のフロッピー（登録商標）ディスク、ＣＤ  ＲＯＭ若しくは他の光ディスク、磁気テープ、読み取り専用チップ（ＲＯＭ）の形態、及び当該技術分野において既知の他の形態、又は後に開発される他の形態をとることができる。命令プログラムは、「オブジェクトコード」、すなわちコンピュータが多少なりとも直接実行可能なバイナリ形態であってもよく、実行前にコンパイル又は解釈が必要な「ソースコード」であってもよく、又は部分的にコンパイルされたコード等の或る中間形態であってもよい。プログラム記憶デバイス及び命令の符号化の厳密な形態は、ここでは重要ではない。
【００３２】
上記説明では、本発明の実施形態の完全な理解を提供するために様々な特定の詳細を提供した。しかし、本発明の図示の実施形態の上記説明は、網羅的であろうとする意図、すなわち本発明を開示された厳密な形態に限定する意図はない。１つ又は複数の特定の詳細な記述なしに、又は他の方法、構成要素等を使用して本発明を実施できることを当業者は認識しよう。また場合によっては、既知の構造又は動作については、本発明の態様を曖昧にしないように詳細に図示又は説明していない。本発明の特定の実施形態又は本発明の例を、例示を目的として本明細書において説明しているが、当業者が認識するように、各種の均等な変更が本発明の範囲内で可能である。
【００３３】
こういった変更は、上記詳細な説明に鑑みて本発明に行うことができる。添付の特許請求の範囲で使用される用語は、本発明を本明細書及び特許請求の範囲に開示された特定の実施形態に限定するものとして解釈されるべきではない。むしろ、本発明の範囲は、特許請求の範囲の解釈の確立された原則に従って解釈されるべきである添付の特許請求の範囲により決定されるべきである。
【００３４】
本明細書に含まれるフローチャートは、必ずしも単一のホットプラグイベントでの実行を表しているわけではなく、むしろ、いくつかの場合では、複数のホットプラグ操作で行われている調整された一連のステップ、イベント、又はプロセスを表すことができる。さらに、本明細書において、フローチャートは、図面に明示的に表されるステップの間に他のイベント、ステップ、又はプロセスが発生し得ないことを暗に示すものとして解釈されるべきではない。
【図面の簡単な説明】
【００３５】
【図１】高可用性コンピュータ構成を示す概略図である。
【図２】有向非巡回グラフの形態の構成要素階層を示す概略図である。
【図３】本技法のステップを示す流れ図である。
【図４】有向非巡回グラフを用いた高可用性クラスタのクリティカルリソース解析に関わるステップを示す流れ図である。
【図５】有向非巡回グラフの一般的な形態を示す図である。
【符号の説明】
【００３６】
１０１・・・コンピュータシステム
１０２・・・デバイス（ディスク）
１０３・・・ＨＢＡ２
１０４・・・ＨＢＡ１
【図１】
2008269570.tif 000003
【図２】
2008269570.tif 000004
【図３】
2008269570.tif 000005
【図４】
2008269570.tif 000006
【図５】
2008269570.tif 000007
【外国語明細書】
Method and System for Determining Device Criticality in a Computer Configuration
Background of the Invention
Modern computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems.  A typical computer system includes a processor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system.  Computer system boards often receive expansion printed circuit boards to increase the capabilities of the computer system and to connect to peripheral devices through an expansion bus.
In general, computer systems include multiple extension slots on a communication bus to provide access to external peripheral devices using add-in cards.  The add-in cards expand the functionality of the computer system and can be, for example, a network interface card, a graphics card, storage controllers or the like.  The architecture and functioning of the communication bus and interfaces are often standardized throughout the computer industry to allow multiple equipment vendors to provide external peripheral devices for the computer systems.  One such standard is the PCI Hot- Plug Specification, Rev. 1.0 and 1.1 defined by PCI Special Interest Group and incorporated herein by reference in its entirety.  The PCI Hot-Plug specification defines some of the key aspects of a process of inserting and removing add-in cards in the extension slots of a PCI bus in a computer system while the computer system is running.  
The PCI Hot-Plug specification describes a hardware platform such as a computer system that may accept a hot-plug event such as an insertion or removal of an add-in card without rebooting the computer system.  Typically, the hot-plug events are controlled by a hot-plug controller in the computer system.  A hot-plug event driver in the computer system processes the hot-plug events for the hot-plug controller.  The PCI Special Interest Group has also defined a standard for the hot-plug controllers in the PCI Standard Hot-Plug Controller and Subsystem Specification Rev. 1.0 (hereinafter referred to as the "controller specification") which is also incorporated herein by reference in its entirety.  The controller specification defines the general interface of hot-plug events with the hardware platform.  
One of the key aspects of on-line hot-plugging of devices into a computer system is to analyze the impact of such an operation on the system. Such an analysis is especially important if hot plugging removes a device or makes a group of devices unavailable to the computer system.  This operation is referred to as Critical Resource Analysis (CRA).
Brief Description of the Drawings
Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings in which elements having the same reference numeral designations represent like elements throughout and in which:
Figure 1 is a schematic diagram illustrating a high availability computer configuration;
Figure 2 is a schematic diagram illustrating a component hierarchy in the form of a directed acyclic graph;
Figure 3 is a flow diagram illustrating the steps of the present technique;
Figure 4 is a flow diagram illustrating the steps involved in critical resource analysis of a high availability cluster using directed acyclic graph;
Figure 5 illustrates the general form of a directed acyclic graph.
Detailed Description of Embodiments of the Invention
The following description of the preferred embodiment(s) is merely exemplary in nature and is in no way intended to limit the invention, its application, or uses.  In addition, a "memory" of a computing apparatus may comprise of any appropriate types of primary or secondary storage, unless the type of memory is further specified.  Examples of primary storage include cache memory, random access memory and read only memory.  Examples of secondary storage include hard disks, floppy diskettes, CD-ROMs and CD-RW.  One skilled in the art would take into account whether a memory must be writable or need only be readable to determine whether a particular type of primary or second storage would be appropriate for a given use.
There will be described a method, a system and a computer program for determining device criticality with respect to a hot-plugging operation in a multi-path computer configuration by representing a platform hierarchy, including potentially multiple paths to affected devices, with a directed acyclic graph (DAG).  
A directed acyclic graph, which will in the following sometimes be abbreviated to DAG, is a directed graph with no directed cycles.  In a DAG, for any given vertex v, there is no non empty directed path starting and ending on v.  Directed acyclic graphs appear in models where it may not make sense for a vertex to have a path to itself; for example if an edge u -->v indicates that vertex v is a part of vertex u, such path would indicate that vertex u is a part of itself, which may be improbable.
The directed acyclic graph may correspond to a partial order on its vertices.  For two given vertices u and v of a DAG; u = v or u < v is in the partial order exactly when there is a directed path from vertex u to vertex v in the graph.  However many different directed acyclic graphs may represent the same partial order in this way.  Among these graphs, the one with fewest edges is in the transitive reduction and the one with the most edges is in transitive closure.  In a DAG a source is a vertex with no incoming edges.  Similarly a sink is a vertex with no outgoing edges.  A finite DAG has at least one source and at least one sink.  The length of a DAG is the length (number of edges) of a longest directed path.  A typical structure of a directed acyclic graph is illustrated in Figure 5.
Figure 1 illustrates a high availability computer configuration.  The highly available configuration may consist of a computer system 101 that may comprise two host bus adapters HBA1 103 and HBA2 104 to connect it to a peripheral device 102, which may be a memory device or a group of memory devices being accessed by the host bus adapters.  Such a computer system may consist of any number of host bus adapters depending on the requirements of the computing environment.  Similarly, the peripheral device 102 may comprise a single device and/or a group of devices.  The peripheral device 102 in a computer may be connected to a motherboard via a Peripheral Component Interconnect (PCI) bus, for instance.  
In a multi-path computer configuration such as that illustrated in Figure 1, a device such as device 102 may be accessed by more than one defined path via host bus adapters, such as HBA1 104 or HBA2 103.   These device paths i.e. the paths through which devices are connected to the host bus adapters, may be represented in the form of a directed acyclic graph.  A component hierarchy of a more complex such computer system, in form of directed acyclic graph is illustrated in Figure 2 as an example.  
Referring to Figure 2, there are three devices connected to computer system via a PCI bus.  They may also be referred as PCI devices and/or peripheral devices.  
During the boot process, the system firmware may examine the PCI configuration space of each device and allocate the system resources.  According to the PCI specifications, each device may request up to six areas of memory space or I/O port space for its functioning.  In a typical system, the operating system queries all PCI buses at startup time to list the devices that are present and system resources (memory, interrupt lines, etc.) required by each such device.  The operating system then may allocate the resources and inform the device about the resources allocated to the particular device.   
The computer configuration illustrated in Figure 2 by way of example comprises three host bus adapters (h1, h2 and h3) and five devices (d1, d2, d3, d4 and d5) connected to the host bus adapters.  The devices are connected to the host bus adapters via 8 device paths P1, P2, P3, P4, P5, P6, P7 and P8.  For example the device d1 is connected to host bus adapters through two paths P1 and P2.  Similarly device d2 is connected through paths P4 and P5.  The devices may be accessed by the host bus adapters through any of the device paths through which they are connected.
The system hierarchy in the form of a DAG data structure is maintained by the operating system and created at start-up time.  The structure may include at each node certain attributes associated with each of the components of the computer system, such as the number of paths to a device, whether or not the device is a boot device or quorum disk, for instance, or other information that may be useful in determining device criticality as described below.  The complete component hierarchy of the computer system may be accessible either from user space or kernel space.  
The hot plug operation allows a hot plug device to be added to or removed from the computer system.  Typically in such systems, to remove a hot plug device from computer system, the user presses an attention button located on the hot plug device, which initiates a hot plug operation to remove the hot plug device.  Once the hot plug operation has completed, an indication may be displayed (such as by a light or sound, for example) to the user indicating that the hot plug operation has completed.  The user may then remove the hot plug device from the particular slot on the computer system.  The hot plug operation may include a determination of device criticality.
To add a hot plug device to a computer system, the user normally inserts the hot plug device into an open slot on the system and presses the attention button on the hot plug device, which initiates a hot plug operation to add the hot plug device.  Once the hot plug operation has completed, an indication may be displayed (such as by a light or sound, for example) to the user indicating that the hot plug operation has completed and the hot plug device has been successfully added to computer system.  
The general steps carried out to determine device criticality are set out in Fig 3.  In the system described here device criticality for the hot-plugging operation is determined by performing a sub-tree traversal on the directed acyclic graph representing the platform hierarchy to determine the potentially affected device paths for a group of Host Bus Adapters - step 301.  The impacted devices are then determined from the impacted device paths - step 302; and for all impacted devices which are losing all their access paths, the impacted device's usage in the system is then determined - step 303.  A device criticality message can then be generated - step 304.
These steps will now be described in more detail with reference to Fig 4.
As illustrated in Figure 4, the method starts with determining the number of host bus adapters in the computer system.  The hierarchy of the all the peripheral devices is determined 401 in the computer configuration.  As stated above, in the event of a hot plugging operation either a device is added in the computer system or is removed from the computer system.  If a hot plug operation is triggered on the system, a request is received to analyze the criticality of the operation.  After receiving the request for hot plugging the device paths affected by the hot plugging operations are determined 402.  For the affected device paths 402 found above, all the affected devices 403 are listed.  The devices listed in step 403 are the devices which are losing an access path due to removal of the host bus adapter.  After hot plugging operation the devices may lose some or all of their access paths depending on the configuration.  For each affected device 403 the method checks for the remaining number of paths available (path count) 406 for the device after the hot plugging operation.  If the path count 406 for a device after performing a hot plugging operation is non-zero i.e. after the hot plugging operation a device is not losing all its access paths, then the method reports  possible performance loss and/or performance degradation 408 to the system administrator.  Hot plugging may be allowed in this case.  If the path count of a device is zero after the hot plugging operation then the method checks if the devices listed as affected devices are critical for system functioning 407 and/or user level processes 409.  If the device has usage attributes in the component hierarchy then it is reported that the hot plugging operation may result in compromising system integrity 408.  If the devices usage in the system impacts user level processes and loss of access to data for user applications, an application level criticality is reported 410.
The above-described method may be scaled to perform a cluster-wide device availability analysis for tightly-coupled clusters.  A clusterware operating system may update the device's paths and path counts in the component hierarchy to reflect accessibility through other members of the cluster.  If the hot-plug operation on one of the computing systems results in loss of access to the device from that computing system, the operation may still be permitted as the traffic to the device can be routed to another computing system that is still connected to the system and the method for determining device criticality described here would enable this to be determined.
Further, by checking for certain attributes stored on the nodes of the component hierarchy by the operating system, criticality of the device for the system's functioning may be determined in a straight forward and simple manner.  If a device is a boot device, its node in the component hierarchy could carry an attribute indicating this.  The critical resource analysis method may check for well known attributes to check if the device is critical for the system's proper functioning, thus speeding-up the process of determining the criticality of the device.  In the case of clusters which use a quorum disk, the quorum disk device may carry an attribute indicating its criticality for the cluster to function properly.  The critical resource analysis method performs this check as its last step. Thus the method described here to perform critical resource analysis may be made faster and more efficient.
The mechanism of setting usage attributes for a component in the computer system may be extended and made available to user level processes.  Each process's usage of a device will result in the usage attribute adding the process identity (ID) to the list of processes that use that device.  Once permitted, the process level impact may be determined by simply checking the usage attribute for a component.
The proposed method for determining device criticality for hot plugging operation in a multi computer system may also determine availability of multiple paths to a device using the component hierarchy.  As long as the device remains accessible to the computer system through at least one path, hot-plug operations on components that affect other paths to the device may be permitted.  This analysis may be performed by traversing the component hierarchy and attributes associated with the device which is maintained by the operating system. 
As an example, the above mentioned method for determining device criticality in hot plugging operations in multi path computer configurations will be described in relation to the configuration illustrated in Figure 2.  The configuration of Figure 2 comprises of three HBAs (h1, h2 and h3) and five devices (d1, d2, d3, d4 and d5).  The devices are connected to the HBAs via device paths P1, P2, P3, P4, P5, P6, P7 and P8.  In Figure 2, if hot bus adapter h2 were to be removed through a hot-plug operation, the technique proposed here will:
1.    Determine that p2, p5 and p6 are the paths affected by removing h2.
2.    The above paths result in the devices d1, d3 and d4 losing one of their access paths. 
Since,
a.    d1 remains accessible to the system through alternate path  p1 and
b.    d3 remains accessible to the system through alternate path p4 and
c.    d4 remains accessible to the system through alternate path p7.
So in this case, the hot-plug operation may be permitted with a warning to the user that there could be a performance degradation due to the loss of one of the paths to the devices.
The proposed method for determining device criticality hot plugging operations in multi path computer configurations by traversing the DAG provides an efficient way of determining the criticality of a device.  
Any of the foregoing variations of the present technique may be implemented by programming a suitable general-purpose computer.  The programming may be accomplished through the use of a program storage device readable by the computer and encoding a program of instructions executable by the computer for performing the operations described above.  The program storage device may take the form of, e.g., one or more floppy disks; a CD ROM or other optical disk; a magnetic tape; a read-only memory chip (ROM); and other forms of the kind well-known in the art or subsequently developed.  The program of instructions may be "object code," i.e., in binary form that is executable more-or-less directly by the computer; in "source code" that requires compilation or interpretation before execution; or in some intermediate form such as partially compiled code.  The precise form of the program storage device and of the encoding of instructions is immaterial here.
In the above description, various specific details are given to provide a thorough understanding of embodiments of the invention.  However, the above description of illustrated embodiments of the invention is not intended to be exhaustive or to limit the invention to the precise forms disclosed.  One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific details, or with other methods, components, etc.  In other instances, well-known structures or operations are not shown or described in detail to avoid obscuring aspects of the invention.  While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize.
These modifications can be made to the invention in light of the above detailed description.  The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims. Rather, the scope of the invention is to be determined by the following claims, which are to be construed in accordance with established doctrines of claim interpretation. 
The flow charts included herein do not necessarily represent an execution in a single hot plugging event, but rather, in some instances, may represent a sequence of coordinated steps, events, or processes occurring in plurality of hot plugging operations.  In addition, the flow charts herein should not be interpreted as implying that no other events, steps, or processes can occur between those explicitly represented in the drawings.
Claims
1.    A method for determining the criticality of a device in a multi-path computer configuration comprising the steps of: 
traversing a directed acyclic graph representing a platform hierarchy; and 
determining paths within the directed acyclic graph affected by the removal of the device.
2.    A method as claimed in claim 1 comprising:
determining devices corresponding to each affected access path; and
determining devices that lose all their access paths.
3.    A method as claimed in claim 2 comprising determining the usage in the system of at least the devices that lose all their access paths.
4.    A method as claimed in claim 3 wherein the usage of devices in the system is determined from attributes stored at the nodes of the directed acyclic graph. 
5.    A method as claimed in claim 4 wherein the attributes comprise at least one of: whether the device is a boot device; or whether the device is a quorum disk.
6.    A method as claimed in claim 1 comprising generating a device criticality message.
7.    A method as claimed in claim 6 wherein, if the usage of the devices that lose all their access paths impacts user level processes, reporting an application level criticality and/or loss of access to data for user applications.
8.    A method as claimed in claim 1, wherein the directed acyclic graph is maintained by the operating system.
9.    A method for carrying out a hot plug removal operation in a multi-path computer configuration comprising determining the criticality of the device to be removed using a method as claimed in claim 1.
10.    A method as claimed in claim 9 comprising determining that no devices lose all their access paths and permitting the hot-plug operation with a warning to the user that there could be performance degradation.  
11.    A computer system comprising a directed acyclic graph data structure representing a platform hierarchy; and a control arrangement for traversing the directed acyclic graph to determining paths therein affected by removal of a device.
12.    A computer system as claimed in claim 11 wherein the control arrangement:
determines devices corresponding to each affected access path; and determines devices that lose all their access paths.
13.    A computer system as claimed in claim 12 wherein the control arrangement determines the usage in the system of at least the devices that lose all their access paths.
14.    A computer system as claimed in claim 13 wherein the usage of devices in the system is determined from attributes stored at the nodes of the directed acyclic graph. 
15.    A computer system as claimed in claim 14 wherein the attributes comprise at least one of: whether the device is a boot device; or whether the device is a quorum disk.
16.    A computer system as claimed in claim 11 wherein the control arrangement is arranged to generate a device criticality message.
17.    A computer system as claimed in claim 16 wherein, if the usage of the devices that lose all their access paths impacts user level processes, the control arrangement reports an application level criticality and/or loss of access to data for user applications.
18.    A computer system as claimed in claim 11 comprising an operating system for maintaining the directed acyclic graph.
19.    A computer system as claimed in claim 11 comprising an expansion bus having hot plug removal capability in which the control arrangement is operable to determine the criticality of a device to be removed.
20.    A computer system as claimed in claim 11 wherein the computer system is a cluster. 
Abstract of the Disclosure
A method for determining the criticality of a device in a multi-path computer configuration comprising the steps of: traversing a directed acyclic graph representing a platform hierarchy; and determining paths within the directed acyclic graph affected by the removal of the device.  A computer system comprising a directed acyclic graph data structure representing a platform hierarchy; and a control arrangement for traversing the directed acyclic graph to determining paths therein affected by removal of a device.
(Figure 4)
2008269570.tif 000008
2008269570.tif 000009
2008269570.tif 000010
2008269570.tif 000011
2008269570.tif 000012