(57)【特許請求の範囲】
【請求項１】
階層構造のハードウェアのデバイスおよび階層構造のソフトウェアのデバイスを含み、これらのデバイスそれぞれが、他の前記デバイスの少なくとも１つに接続さているコンピュータシステムにより実行される方法であって、
前記デバイスと、前記デバイスの間を接続するパスとの関係を、木構造で示すグラフを構築するステップと、
前記構築されたグラフにより示される前記デバイスそれぞれに、このデバイスと、このデバイスの上位の階層のデバイスとを接続するパスの数を示す第１の属性を付すステップと、
前記構築されたグラフを用いて、前記コンピュータシステムの稼働中の変更を行うホットプラグオペレーションが実行される特定の前記デバイスの階層よりも下位の階層にあり、前記特定のデバイスと、前記パスを介して、または、前記デバイスおよび前記パスを介して接続される前記デバイスを求めるステップと、
前記求められたデバイスの内、前記付された第１の属性により示されるパスの数が予め決められた数以下のデバイスを、前記特定のデバイスに対する変更の影響を受けるデバイスと判断するステップと、
前記影響を受けると判断されたデバイスそれぞれと、前記影響を受けると判断されたデバイスそれぞれの深刻さを、所定の基準に基づいて、少なくとも高深刻度レベルまたは中深刻度レベルとするステップと、
前記影響を受けると判断されたデバイスのいずれかに中深刻度レベルが割り当てられ、前記影響を受けると判断されたデバイスのいずれにも高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれにも、前記中深刻度レベルまたは前記高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれかに前記高深刻度レベルが割り当てられたときには、前記ホットプラグオペレーションの実行を阻止するステップと
を含む方法。
【請求項２】
前記グラフは、
前記デバイスとして、前記コンピュータシステム内の論理構成体（logical construct）に関連付けられるノード
を含む
請求項１に記載の方法。
【請求項３】
前記論理構成体は、
論理ボリューム、ボリュームグループ、ファイルシステムおよびプロセスの少なくとも１つ
を含む
請求項２に記載の方法。
【請求項４】
前記構築されるグラフの木構造は、非循環有向（directed acyclic）である
請求項１に記載の方法。
【請求項５】
前記デバイスは、周辺コンポーネントインターフェース仕様及びＰＣＩ−Ｘ仕様のうちの一方と互換性を有する
請求項１に記載の方法。
【請求項６】
前記グラフのノードに、前記ノードに関連するデバイスそれぞれの深刻さを示す第２の属性が関連付けられる
請求項２に記載の方法。
【請求項７】
前記グラフは、前記コンピュータシステムのブート時間に構築される
請求項１に記載の方法。
【請求項８】
前記グラフは、ユーザ空間およびカーネル空間またはこれらのいずれかから取得される
請求項７に記載の方法。
【請求項９】
前記ホットプラグオペレーションの実行を許可または阻止するステップは、前記影響を受けると判断されたデバイスの全てが機能していないときには、前記ホットプラグオペレーションの実行を許可する
請求項１に記載の方法。
【請求項１０】
階層構造のハードウェアのデバイスおよび階層構造のソフトウェアのデバイスであって、それぞれ、他の前記デバイスの少なくとも１つに接続さているデバイスと、
前記デバイスと、前記デバイスの間を接続するパスとの関係を、木構造で示すグラフを構築する手段と、
前記構築されたグラフにより示される前記デバイスそれぞれに、このデバイスと、このデバイスの上位の階層のデバイスとを接続するパスの数を示す第１の属性を付す手段と、
前記構築されたグラフを用いて、前記コンピュータシステムの稼働中の変更を行うホットプラグオペレーションが実行される特定の前記デバイスの階層よりも下位の階層にあり、前記特定のデバイスと、前記パスを介して、または、前記デバイスおよび前記パスを介して接続される前記デバイスを求める手段と、
前記求められたデバイスの内、前記付された第１の属性により示されるパスの数が予め決められた数以下のデバイスを、前記特定のデバイスに対する変更の影響を受けるデバイスと判断する手段と、
前記影響を受けると判断されたデバイスそれぞれと、前記影響を受けると判断されたデバイスそれぞれの深刻さを、所定の基準に基づいて、少なくとも高深刻度レベルまたは中深刻度レベルとする手段と、
前記影響を受けると判断されたデバイスのいずれかに中深刻度レベルが割り当てられ、前記影響を受けると判断されたデバイスのいずれにも高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれにも、前記中深刻度レベルまたは前記高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれかに前記高深刻度レベルが割り当てられたときには、前記ホットプラグオペレーションの実行を阻止する手段と
を有するコンピュータシステム。
【請求項１１】
前記グラフは、
前記デバイスとして、前記コンピュータシステム内の論理構成体（logical construct）に関連付けられるノード
を含む
請求項１０に記載のコンピュータシステム。
【請求項１２】
前記グラフのノードに、前記ノードに関連するデバイスそれぞれの深刻さを示す第２の属性が関連付けられる
請求項１０に記載のコンピュータシステム。
【請求項１３】
階層構造のハードウェアのデバイスおよび階層構造のソフトウェアのデバイスを含み、これらのデバイスそれぞれが、他の前記デバイスの少なくとも１つに接続さているコンピュータシステムに、
前記デバイスと、前記デバイスの間を接続するパスとの関係を、木構造で示すグラフを構築するステップと、
前記構築されたグラフにより示される前記デバイスそれぞれに、このデバイスと、このデバイスの上位の階層のデバイスとを接続するパスの数を示す第１の属性を付すステップと、
前記構築されたグラフを用いて、前記コンピュータシステムの稼働中の変更を行うホットプラグオペレーションが実行される特定の前記デバイスの階層よりも下位の階層にあり、前記特定のデバイスと、前記パスを介して、または、前記デバイスおよび前記パスを介して接続される前記デバイスを求めるステップと、
前記求められたデバイスの内、前記付された第１の属性により示されるパスの数が予め決められた数以下のデバイスを、前記特定のデバイスに対する変更の影響を受けるデバイスと判断するステップと、
前記影響を受けると判断されたデバイスそれぞれと、前記影響を受けると判断されたデバイスそれぞれの深刻さを、所定の基準に基づいて、少なくとも高深刻度レベルまたは中深刻度レベルとするステップと、
前記影響を受けると判断されたデバイスのいずれかに中深刻度レベルが割り当てられ、前記影響を受けると判断されたデバイスのいずれにも高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれにも、前記中深刻度レベルまたは前記高深刻度レベルが割り当てられないときには、前記ホットプラグオペレーションの実行を許可し、前記影響を受けると判断されたデバイスのいずれかに前記高深刻度レベルが割り当てられたときには、前記ホットプラグオペレーションの実行を阻止するステップと
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ構成におけるホットプラグのデバイスのクリティカリティを求める方法及びシステムに関する。
【背景技術】
【０００２】
コンピュータサーバは、様々な用途に利用されている。インターネットを使用した商業者の仕入れ取引を実行するサーバシステム等のシステムは、通例、高可用性設計を有する。このような高可用性システムは、常に動作していると共に利用可能であるように設計される。したがって、たとえばメンテナンス、アップグレード、システムクラッシュ、トラブルシューティング等の何らかの理由でこれらのシステムの電源を切断してリブートする必要性は、可能な限り回避されなければならない。通常、これらのシステムは、複数の拡張スロットを有し、カードがそのスロットに結合される。マスストレージデバイス及びネットワークアダプタは、このようなカードを介して接続できるコンポーネントの例である。一般に、ケーブルを介して１つ又は複数のさらなるデバイスをカードに結合することができる。
【０００３】
高可用性を維持するために、オンラインカードオペレーション機能が、高可用性コンピュータシステム内に統合されている。オンラインホットプラグオペレーション機能は、ユーザ及びシステム管理者又はこれらのいずれか（ユーザ及び／又はシステム管理者）が、これらのシステムの電源を切断してリブートすることなくオンラインホットプラグオペレーションを実行することを可能にする。オンラインカードオペレーションの例には、カードをスロットに結合することによってシステムにカードを追加すること、スロットに結合されている既存のカードを別のカードと交換すること、及びシステムの実行中にスロットからカードを結合解除することによってシステムからカードを取り外すことが含まれる。これらのオンラインホットプラグオペレーションには、一般に、カードの追加、交換、又は取り外しが可能になる前に、カード用の特定のドライバを一時停止すること、及び、対象となるスロット（複数可）への電力を遮断することが必要とされる。一般に、スロット電力制御及びドライバは、これらのオンラインカードオペレーションを容易にすることができる。システムによっては、数個のスロット電源ドメインが構成され、各スロット電源ドメインのスロットは、共通の電源ラインを共有する。オンラインカードオペレーションが、或るスロット電源ドメインのいずれかのスロットで実行される場合、そのスロット電源ドメインのすべてのスロットが、電力を失うおそれがあり、オンラインカードオペレーションを実行する複雑度が増大する。
【０００４】
このようなオンラインホットプラグオペレーションの前に、通常、資源解析がコンピュータシステム上で行われる。この資源解析は、カードの筐体全体がコンピュータシステムの実行中にコンピュータシステムから取り外される場合等、数群のカードが単一のオペレーションでオフラインにされる場合にも有用な場合がある。また、資源解析は、「クリティカル資源解析」（critical resource analysis）（ＣＲＡ）と呼ばれる場合がある。ＣＲＡは、カード（複数可）の追加、交換、又は取り外しのような、試みられる任意のオンラインホットプラグオペレーション例に関与する任意のカードに関連付けられる各スロットの電源を切断することの影響を解析して報告することができる。これは、システムの被影響資源を特定することを必要する場合がある。従来、特定された被影響資源には、低深刻度レベル又は警告レベル、及び、高深刻度レベル又はクリティカルレベルが割り当てられる。特定された被影響資源が、システムオペレーションに必須である場合には、それらの資源にはクリティカルレベルが割り当てられる。これは、スロット（複数可）の電源が切断されて、そのスロットに結合されているカード（複数可）の機能が利用不能になった場合に、システムがクラッシュする可能性があるか、又は危険／故障状態に入る可能性があることを示している。特定された被影響資源にクリティカルレベルが割り当てられている場合には、システムが実行し続けて所望のシステム可用性レベルを維持するように、ユーザは、一般に、オンラインカードオペレーションを実行することを阻止される。特定された被影響資源が「システムオペレーションに必須」であるか否かを判断する方法は、システムが異なると変化する場合がある。特定された被影響資源がシステムオペレーションに必須でない場合には、それらの資源には、警告レベルが割り当てられる。これは、スロット（複数可）の電源が切断されて、そのスロットに結合されているカード（複数可）の機能が利用不能になった場合に、システムがクラッシュする可能性もなければ、危険／故障状態に入る可能性もないことを示している。
【０００５】
一般に、ＣＲＡは、カード及び／又はスロット、並びに、それに関連付けられる資源／デバイスが、システムオペレーションに必須であるか否かを結論付けるために一連のチェックを行う。ＣＲＡ機能は、システムの実行を維持し、不注意なリブートを回避すると共に、システムが危険状態になることを阻止することを目的としている。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明にかかる方法は、コンピュータシステムにおけるデバイスのクリティカリティを求める方法であって、コンピュータ構成情報を使用してコンポーネント階層グラフを構築するステップと、前記コンポーネント階層グラフのノードを冗長性属性でラベリングするステップと、前記コンポーネント階層グラフをトラバースするステップと、前記コンポーネント階層グラフ内の前記冗長性属性を検査することによって、前記デバイスがアクセスパスを喪失するか否かを判断するステップとを含む。
【０００７】
ここで、添付の図面を参照して、本発明の実施の形態を例示としてのみ説明する。
【発明を実施するための最良の形態】
【０００８】
次に、本発明の実施形態を詳細に参照する。これらの実施形態の例は、添付の図面に示されている。本発明をこれらの実施形態との関連で説明するが、実施形態は、本発明をこれらの実施形態に限定することを目的とするものではないことが理解されよう。逆に、本発明は、代替形態、変更形態、及び均等物をカバーすることを目的としている。これらの代替形態、変更形態、及び均等物は、添付の特許請求の範囲によって画定される本発明の精神及び範囲内に含めることができる。さらに、本発明の以下の詳細な説明では、本発明の徹底した理解を提供するために、多数の具体的な詳細が述べられる。
【０００９】
被影響デバイスへの複数存在し得るパスを含めて、コンポーネント階層を非循環有向グラフ（directed acyclic graph: ＤＡＧ）で表すことによって、コンピュータ構成におけるホットプラグオペレーションに関するデバイスのクリティカリティを求める方法、システム、及びコンピュータプログラムが説明される。
本説明の以下の部分において、「資源解析」及び「デバイスのクリティカリティ解析」という用語は、交換可能に使用される。
【００１０】
図１は、簡単な高可用性コンピュータ構成の一例を示している。この高可用性コンピュータ構成は、コンピュータシステム１００から構成することができる。コンピュータシステム１００は、周辺デバイスディスクｄｓｋ１  １０４及びｄｓｋ２  １０５にこのコンピュータシステム１００を接続するための３つのホストバスアダプタＨＢＡ１  １０１、ＨＢＡ２  １０２、及びＨＢＡ３  １０３を備えることができる。周辺デバイスディスクは、ホストバスアダプタによってアクセスされるメモリディスクデバイス又は一群のメモリディスクデバイスとすることができる。上記コンピュータシステムは、ディスクミラーリングを管理するためのソフトウェア、たとえばボリュームマネージャ、及び、ミラードデバイス１０６も備えることができる。このようなコンピュータシステムは、コンピューティング環境の要件に応じて、任意の個数のホストバスアダプタから構成することができる。同様に、周辺デバイスｄｓｋ１  １０４及びｄｓｋ２  １０５は、単一のデバイスディスク及び／又は一群のデバイスディスクを備えることができる。或るコンピュータにおける周辺デバイスｄｓｋ１  １０４及びｄｓｋ２  １０５を、たとえば、周辺コンポーネント相互接続（ＰＣＩ）バスを介してマザーボードに接続することができる。
【００１１】
一例として、図１のホストバスアダプタ（ＨＢＡ１）１０１がホットプラグされる場合（交換オペレーション又は削除オペレーションのいずれか）において、ディスクデバイスが、重要なデータを記憶するためにシステムのプロセスによって使用中であるか、又は、システムのオペレーティングシステム（ＯＳ）によって使用されているときは、従来のＣＲＡ計算は、そのオペレーションにクリティカルのフラグを立てる。しかしながら、ディスクデバイス１０４には、冗長アクセスパスによってＨＢＡ２  １０２を通じてアクセス可能であり続けるため、このオペレーションを許可することができる。さらに、ホットプラグオペレーションが、ホストバスアダプタＨＢＡ１  １０１及びＨＢＡ２  １０２に関して要求された場合には、ＣＲＡ計算は、ディスクデバイス１０４及び１０５が影響を受けることを検出すべきである。しかしながら、ディスクデバイス１０４及び１０５は、ソフトウェア、この場合はボリュームマネージャによってミラーリングされているため、ＣＲＡは、これを検出して、性能劣化及びミラーリングの喪失の可能性があることを「警告」としてユーザに報告し、ディスクデバイスの喪失がコンピュータシステムの故障をもたらす可能性がないため、ホットプラグオペレーションを許可すべきである。
【００１２】
以下では時にＤＡＧと略される非循環有向グラフは、有向閉路を有しない有向グラフである。ＤＡＧでは、任意の所与の頂点ｖに関して、ｖで開始してｖで終了する非空の有向パス（non empty directed path）はない。非循環有向グラフは、頂点がそれ自身へのパスを有することが意味をなさない場合があるモデルにおいて現れる。たとえば、枝（edge）ｕ→ｖが、頂点ｖが頂点ｕの一部であることを示す場合に、このようなパスは、頂点ｕが、それ自身の一部であることを示し、これは、起こり得ない可能性がある。
【００１３】
非循環有向グラフは、その頂点に関する半順序関係に対応しうる。ＤＡＧの所与の２つの頂点ｕ及びｖに関して、頂点ｕから頂点ｖへの有向パスがグラフに存在するときに、ｕ→ｖは、まさに半順序関係にある。一方、多くの異なる非循環有向グラフは、このようにして同じ半順序関係を表すことができる。ＤＡＧでは、ソースは、入力する枝を有しない頂点である。同様に、シンク（sink）は、出力する枝を有しない頂点である。有限ＤＡＧは、少なくとも１つのソース及び少なくとも１つのシンクを有する。ＤＡＧの長さは、最も長い有向パスの長さ（枝の個数）である。非循環有向グラフの一般的な構造を図６に示す。
【００１４】
図１に示すようなコンピュータ構成では、デバイスディスク１０４等のデバイスには、ホストバスアダプタが２つ以上の規定されたパスを通じてアクセスすることができる。たとえば、図１では、デバイスディスク１０４には、２つの異なるホストバスアダプタＨＢＡ１  １０１及びＨＢＡ２  １０２が２つのパスを通じてアクセスすることができる。ここで、本説明では、複数のアクセスパスを有するこのようなデバイスは、冗長の程度としてパスの個数を用いて冗長であるとラベリングされる。これらのデバイスパス、すなわち、デバイスをホストバスアダプタに接続するパスは、コンポーネント階層グラフの枝の形で表すことができる。一例として、コンポーネント階層グラフの形による、より複雑なコンピュータシステムのコンポーネント階層を図２に示す。
【００１５】
コンポーネント階層グラフとして図２に示すコンピュータ構成は、３つのホストバスアダプタ（ｈ１、ｈ２、及びｈ３）並びにこれらのホストバスアダプタに接続される７つのディスクデバイス（ｄ１、ｄ２、ｄ３、ｄ４、ｄ５、ｄ６、及びｄ７）から成る。ディスクデバイスは、１０個のデバイスパスＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８、Ｐ９、及びＰ１０を介してホストバスアダプタに接続されている。たとえば、ディスクデバイスｄ１は、２つのパスＰ１及びＰ２を通じてホストバスアダプタに接続されている。同様に、ディスクデバイスｄ３は、パスＰ４及びＰ５を通じて接続されている、したがって、コンポーネント階層グラフにおけるディスクデバイスｄ１及びｄ３に対応するノードは、冗長ノードである。したがって、コンポーネント階層グラフにおいて、デバイスディスクｄ１及びｄ３に対応するノードは、冗長性の程度として２を有する付属した冗長性属性を保持する。デバイスには、ホストバスアダプタが、それらのデバイスを接続するデバイスパスのうちのいずれかを通じてアクセスすることができる。本説明の以下の部分で、ノードと共に属性をより詳細に説明する。
【００１６】
コンピュータシステムのコンポーネント階層グラフは、コンピュータ構成のハードウェアレイヤを超えて拡張され得、システムのソフトウェアレイヤによって使用される論理構成体も含むことができる。コンピュータ構成のソフトウェアレイヤは、ソフトウェアボリュームマネージャ、論理ディスクデバイス、ボリュームグループ、ファイルシステム、及びプロセス等の論理構成体を使用することができる。これらの論理構成体をコンポーネント階層グラフに含めることによって、資源解析アルゴリズムの効率を増大させることができる。これらの論理構成体に対応するコンポーネント階層グラフのノードを本明細書ではソフトウェアノードと呼ぶ。
【００１７】
コンピュータシステムのコンポーネント階層は、ブート時間において構築され得、オペレーティングシステムによって記憶され得る。コンピュータシステムでは、構成があまり頻繁に変化する可能性はないため、コンポーネント階層グラフも、あまり頻繁に変化しない。コンピュータ構成の構成が変化する場合、これらの変化を反映するようにコンポーネント階層グラフを変更することができる。コンピュータシステムの完全なコンポーネント階層は、ユーザ空間又はカーネル空間のいずれからもアクセス可能とされ得る。コンピュータ構成におけるデバイスの、ボリュームマネージャ及びファイルシステムとの関連付けは、頻繁に変化しないため、コンピュータ階層のノードのバインディングは、新規のボリュームグループ又はファイルシステムマウントポイントが作成又は変更されるたびに生じる。ブートプロセスの期間中、システムファームウェアは、各デバイスのＰＣＩ構成空間を調べて、システム資源を割り当てることができる。
【００１８】
コンポーネント階層グラフは、コンピュータシステムのコンポーネントのそれぞれに関連付けられる一定の属性を各ノードに含むことができる。これら一定の属性は、デバイスへのアクセスパスの個数、デバイスがたとえばブートデバイス又はクォーラムディスクであるか否か、又は後述するようなデバイスのクリティカリティを求める際に有用となり得る他の情報等である。
【００１９】
冗長リンクを有するコンポーネント階層グラフのノードは、現在アクティブな冗長リンクの個数と共に「REDUNDANCY」（冗長性）属性を保持する。初めに、コンポーネント階層のノードのそれぞれは、「NON-REDUNDANT」（非冗長）とマーキングされ、コンポーネント階層グラフを構築する時に非冗長性を示す。図２を参照して、「ｄ５」とラベリングされたノードは、「NON-REDUNDANT」ノードであるのに対して、「ｄ３」は、（論理ユニット番号（ＬＵＮ）パス「ｐ４」及び「ｐ５」による）「２」の冗長性を有する「REDUNDANT」（冗長）ノードである。さらに、（ＶＧ０１の状況における）ノードｌｖｏｌ３は、ディスク「ｄ３」と「ｄ４」との間のデータのミラーリングによって、「REDUNDANT」ノードである。さらに、「REDUNDANCY」属性を有するコンポーネント階層の各ノードは、その下で現在アクティブである、子のカウントを得ることができる。
【００２０】
コンポーネント階層グラフでは、異なるソフトウェアノードは、それらのノードに関連付けられる冗長性属性も有することができる。このような冗長性属性の使用は、「論理ボリューム」に特に有用であると予想される。その理由は、「論理ボリューム」が、現代のサーバシステムでは、ミラーリングによってソフトウェア冗長性を生み出すことができる最も可能性のある論理構成体であることである。しかしながら、他の同様の論理構成体又は他の匹敵する論理構成体への本技法の適用が排除されるものではない。アプリケーションレベルにおける冗長性は、たとえば、「プロセス」がデバイス／ディスクの故障に対処できる場合に存在し得る。このような場合に、デバイスのクリティカリティを求める方法は、そのアプリケーション／プロセスが使用しているデバイスのうちの１つの喪失を許容できるものと結論付けることができる。この場合、２つのデバイスを使用しているプロセスは、コンポーネント階層グラフにおいて「REDUNDANT」ノードによって表される。
【００２１】
冗長性属性と共に、提案された技法は、コンポーネント階層グラフのすべてのソフトウェアノードにクリティカリティ属性を関連付けることもできる。コンポーネント階層グラフのノードのクリティカリティ属性は、アルゴリズムの機能を改善すると共に、アプリケーションレベルのクリティカリティ解析をハンドリングするためのアルゴリズムを拡張可能にすることができる。また、クリティカリティ属性は、たとえば、クラスタ構成におけるコンピュータシステムにわたるクリティカリティを求めるのに役立つことができる。一例として、ブートデバイスがクリティカリティである場合、ブートプロセスソフトウェアノードが、その先行ノードとしてブートデバイスを有するコンポーネント階層グラフに作成される。同様に、ダンプデバイスに直接書き込みを行うように構成されるダンプの場合には、「ダンプ」とラベリングされたソフトウェアノードは、その先行ノードとして当該ソフトウェアノードがダンプするのに使用するデバイス（複数可）と共に作成される。ダンプが論理ボリューム上で構成される場合、コンポーネント階層にすでにある「ｌｖｏｌ」ノードが、ダンプノードの先行ノードになる。この階層におけるブートプロセスノードは、その「クリティカリティ」属性として「システム機能に関してクリティカル」（critical for the system functioning）を保持することができる。同様に、「ダンプ」ソフトウェアノードは、「クリティカリティ」属性の適切な値を保持することができる。
【００２２】
図３は、コンピュータシステムの１つ又は複数のデバイス上でホットプラグオペレーションのデバイスのクリティカリティ解析を行う方法３００を示すフローチャートである。一実施形態では、本技法は、方法３００を実行するためのコンピュータ実行可能命令として実施することができる。このコンピュータ実行可能命令は、任意のタイプのコンピュータ可読媒体に記憶することができる。この任意のタイプのコンピュータ可読媒体は、磁気ディスク、ＣＤ−ＲＯＭ、光媒体、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、又はコンピュータが読み出すことができる他の任意の媒体等である。
【００２３】
図３のステップ３０１において、本技法は、システム構成情報を収集する。一般に、システム構成情報は、様々なタイプの構成情報を含む。一実施形態では、システム構成情報は、論理ボリューム構成、ファイルシステム構成、プロセス構成、スワップデバイス構成、及びダンプデバイス構成を含む。ステップ３０１において収集されたシステム構成は、ステップ３０２において、所与のコンピュータシステムのコンポーネント階層グラフを構築するのに使用され得る。システムがブートされるときに、コンピュータシステムのコンポーネント階層グラフも構築して記憶され得る。
【００２４】
図３のステップ３０３において、ユーザは、たとえば、カード（複数可）の追加、交換、又は取り外しといったオンラインホットプラグオペレーションを行いたい旨を示す。ここで、ユーザは、どのデバイス（複数可）が、試みられるオンラインホットプラグオペレーションに関与するのかを知っているものと仮定する。オンラインホットプラグオペレーションには、対象となるデバイス（複数可）に関連付けられるハードウェアデバイスに対するドライバを一時停止すること、及びデバイスが結合されている対応するスロットの電源を切断することが必要とされる。一方、たとえば、対応するスロットがスロット電源ドメインにある場合には、そのスロット電源ドメイン内の他のスロットである電源ラインを共有するいくつかのスロットも電源が切断される。したがって、これらのスロットの電源も切断されることから、これらのスロットに結合されているデバイスも、試みられるオンラインホットプラグオペレーションに関与する。
【００２５】
ユーザは、コンピュータシステム１００の適切なユーザインターフェースを使用して、オンラインホットプラグオペレーションを行いたい旨を示すことができる。代替的には、ユーザは、スロットのアテンションボタンを押下して、ホットプラグイベントをトリガすることもできる。これによって、オンラインホットプラグオペレーションユニットがアクティブ化されて、オンラインホットプラグオペレーションを行うためにシステム１００が準備される。オンラインホットプラグオペレーションを行うためにシステム１００を準備する際に、資源解析アルゴリズムが起動され、デバイスのクリティカリティ機能へのアクセス性を提供する。
【００２６】
説明の目的で、システム１００のいくつかのデバイスは、試みられるオンラインホットプラグオペレーションに関与するか、又は、そのオペレーションによる影響を受けるものと仮定する。
【００２７】
ステップ３０５において、コンポーネント階層グラフは、各被影響ハードウェアデバイス３０４から開始してトラバースされる。ここで、各被影響ハードウェアデバイスは、試みられるオンラインホットプラグオペレーションに関与するか、又はそのオペレーションによる影響を受けるデバイスのいずれかに対応する。複数の被影響ハードウェアデバイスが同じカードに対応する場合があることが理解されよう。コンポーネント階層グラフのトラバースは、コンポーネント階層グラフの被影響ノードに基づいて、いずれかの構成されている資源（システム構成情報から特定可能）が影響を受けるか否かを判断する手法を使用する。コンポーネント階層グラフのトラバースのアルゴリズム４００を図４に詳細に示す。
【００２８】
ステップ３０６において、このアルゴリズムは、ステップ３０５からの情報に基づいて、デバイスのクリティカリティ報告を生成することができる。図５は、ステップ３０６をより詳細に説明している。デバイスのクリティカリティ情報は、ステップ３０５において特定された被影響資源のうちの１つ又は複数のリストを含む。一般に、資源を被影響資源として特定する理由は、解析情報に含まれる。被影響資源には、所定の基準に基づいて深刻度レベルを割り当てることができる。この深刻度レベルには、上述したように、低深刻度レベル、中深刻度レベル、及び高深刻度レベルが含まれる。ユーザからの許可が必要な場合に、デバイスのクリティカリティ報告は、解析結果を任意の適した方法で提示して、オンラインカードオペレーションの遂行を許可するか否かを決定することをユーザに可能にするための十分な情報をユーザに提供することができる。
【００２９】
ステップ３０７に続いて、このアルゴリズムは、特定された被影響ハードウェアデバイスが機能していないかを判断することができる。被影響ハードウェアデバイスが機能していない場合には、ホットプラグのためのユーザ許可を得る必要はない。その理由は、これらの被影響ハードウェアデバイスが、それらの機能をシステム１００に提供しておらず、しかも、システム１００は正常に動作し続けるために、これらの被影響ハードウェアデバイスがシステムオペレーションに必須ではあり得ないためである。したがって、方法３００は、ステップ３１０に進み、ステップ３１０において、ユーザは、オンラインホットプラグオペレーションを進めることを可能にされる。被影響ハードウェアデバイスのいずれかが機能している場合には、このアルゴリズムはステップ３０８に進む。
【００３０】
図４は、本技法の一実施形態による図２のコンポーネント階層グラフのトラバースを示すフローチャート３０４を示している。詳細には、図４は、図３のステップ３０４をより詳細に説明している。
【００３１】
ステップ４０１において、コンポーネント階層グラフのＰＣＩデバイスノードは、「初期影響あり」（initially impacted）としてマーキングされる。コンポーネント階層グラフのＰＣＩデバイスノードに「初期影響あり」としてマーキングした後、このアルゴリズムは、初期影響を受けるレベルから開始してグラフをトラバースする（４０２）。
【００３２】
ステップ４０３に続いて、このアルゴリズムは、考慮対象ノードが、そのノードに関連付けられる「冗長性」（redundancy）属性を有するか否かを判断する。考慮対象ノードが「非冗長」（non-redundant）とマーキングされている場合には、このアルゴリズムは、ステップ４０４に進み、考慮対象ノードの先行ノードのいずれかが、「影響あり」（impacted）とマーキングされているか否かを判断する。考慮対象ノードの先行ノードのいずれも、「影響あり」とマーキングされていない場合には、考慮対象ノードは、「影響なし」（not impacted）としてマーキングされる。考慮対象ノードの先行ノードのいずれかが「影響あり」とマーキングされている場合には、検討対象ノードは、「影響あり」としてマーキングされる（４０６）。
【００３３】
さらにステップ４０５に続いて、検討対象ノードが「冗長」としてマーキングされており、且つ、検討対象ノードの先行ノードのそれぞれが「影響あり」としてマーキングされている場合には、検討対象ノードも、「影響あり」としてマーキングされる（４０６）。
【００３４】
図４のステップ４０７において、検討対象ノードの先行ノードのうちの少なくとも１つが「影響あり」としてマーキングされているかどうか。先行ノードのいずれも「影響あり」としてマーキングされていない場合には、検討対象ノードは、ステップ４０８において「影響なし」としてマーキングされ、そうでない場合には、アルゴリズムは、図４のステップ４０９に進む。
【００３５】
ステップ４０９に続いて、検討対象ノードの先行ノードのうちの少なくとも１つが、「影響あり」としてマーキングされている場合には、このアルゴリズムは、検討対象ノードに関して冗長性の喪失の警告を生成する。このアルゴリズムは、図４のステップ４０９において、性能の損失（loss of performance）の警告も生成することができる。
【００３６】
図４のステップ４１０にさらに続いて、このアルゴリズムは、検討対象ノードが、コンポーネント階層グラフのプロセスレベルノードに対応するノードを表すか否かをチェックする。ノードがプロセスレベルノードでない場合には、このアルゴリズムは、ステップ４０３に進み、コンポーネント階層グラフの次のレベルを解析する。このサイクルは、このアルゴリズムが、コンポーネント階層グラフの最下位レベルの、プロセスレベルノードに対応するノードに達するまで繰り返され、コンポーネント階層グラフの完全なトラバースが保証される。
【００３７】
コンピュータシステムのホットプラグオペレーションの影響を計算するための図４のコンポーネント階層グラフをトラバースするためのアルゴリズムの擬似コードを以下に与える。
ホットプラグオペレーションの一部であるプラットフォーム階層のすべてのＰＣＩデバイスノードを「初期影響あり」としてマーキングする；
for each「初期影響あり」レベルからプロセスレベルへのツリーのレベル do
if ノードのタイプが「NON-REDUNDANT」である then
if 自身の先行ノード（すなわち、自身の先行レベルから自身に接続されているノード）のいずれか（ANY of）が「影響あり」である then
自身を「影響あり」とマーキングする；
else /* ノードは「REDUNDANCY」ノードである */
if すべての自身の先行ノードが「影響有り」とマーキングされている then
自身を「影響有り」とマーキングする；
endif
if 自身の先行ノードのうちの少なくとも１つが「影響有り」とマーキングされている then
冗長性／動作の喪失の警告を生成する
（ただし、このノードは「影響有り」としてマーキングされない）；
endif
endif
endfor
【００３８】
加えて、クリティカリティ報告は、解析の全結果も提供することができる。一実施形態では、全体の結果は、成功、警告、データクリティカル、システムクリティカル、又はエラーとすることができる。
【００３９】
全体の結果が成功である場合、これは、この技法が、被影響資源を発見しなかったことを示し、ユーザには、成功メッセージが提供され、オンラインホットプラグオペレーションを進めることが可能にされる。
【００４０】
さらに、全体の結果が警告である場合、これは、この技法が、１つ又は複数の被影響資源を発見したことを示している。一方、これらの被影響資源には、低深刻度レベル（又は警告レベル）が割り当てられており、いずれにも、中深刻度レベル（又はデータクリティカルレベル）も高深刻度レベル（又はシステムクリティカルレベル）も割り当てられていない。ユーザには、被影響資源がシステムオペレーションにとってクリティカルと考えられないことを明示する警告メッセージが提供され、オンラインカードオペレーションを進めることが可能にされる。
【００４１】
続いて、全体の結果がデータクリティカルである場合、これは、この技法が、１つ又は複数の被影響資源を発見したことを示している。一方、これらの被影響資源のうちの少なくとも１つには、中深刻度レベル（又はデータクリティカルレベル）が割り当てられているが、いずれにも、高深刻度レベル及び／又はシステムクリティカルレベルは割り当てられていない。システム１００に記憶されているデータがおそらく又は場合によっては喪失されるが、システム１００はおそらくクラッシュもしないし危険／故障状態にも入らないということを明示するデータクリティカルメッセージが、ユーザに提供される。一方、オンラインホットプラグオペレーションに進む前に、ユーザからの許可を取得することができる。
【００４２】
全体の結果がシステムクリティカルである場合、これは、この技法が、１つ又は複数の被影響資源を発見したことを示している。一方、これらの被影響資源のうちの少なくとも１つには、高深刻度レベル及び／又はシステムクリティカルレベルが割り当てられている。ユーザには、システム１００がダウンに至る可能性があることを明示するシステムクリティカルメッセージが提供される。したがって、ユーザは、システム１００が危険／故障状態に確実に入らないようにするためにシステム１００をシャットダウンしてリブートした方がよい。この場合、ユーザがオンラインカードオペレーションを進めることを阻止することができる。
【００４３】
図３のステップ３０７から続けて、オンラインホットプラグオペレーションユニットは、コンポーネント階層グラフのトラバースからの結果に基づいて進む。
【００４４】
さらに、ステップ３０８において、全体の結果がデータクリティカルである場合には、オンラインホットプラグオペレーションユニットは、オンラインカードオペレーションを進めるユーザからの許可を取得する。
【００４５】
続いて、ステップ３０９において、オンラインカードオペレーションユニットは、デバイスのクリティカリティ報告からの解析及びユーザ入力に基づいて、オンラインカードオペレーション（たとえば、カード（複数可）の追加、交換、又は取り外し）を行うか否かを判断する。さらに、デバイスのクリティカリティ報告の全体の結果がデータクリティカルである場合には、オンラインホットプラグオペレーションユニットは、ユーザがオンラインカードオペレーションを進める許可を提供したか否かを判断する。
【００４６】
全体の結果が、成功又は冗長性の喪失である場合には、オンラインホットプラグオペレーションユニットは、オンラインホットプラグオペレーションの遂行を促進する。加えて、全体の結果がデバイスの喪失であり、ユーザがオンラインカードオペレーションを進める許可を提供していた場合には、オンラインカードオペレーションユニットは、オンラインカードオペレーションの遂行を促進する。さらに、すべての被影響ハードウェアデバイスが（ステップ３０７で判断されるように）機能していない場合には、オンラインカードオペレーションユニットは、ステップ３１０において、オンラインカードオペレーションの遂行を促進する。
【００４７】
一方、全体の結果が、システムクリティカル又はエラーである場合には、オンラインカードオペレーションユニットは、ステップ３１１において、オンラインカードオペレーションの遂行を進めない。さらに、（ステップ３０８において）全体の結果がデータクリティカルであり、且つ、ユーザが、オンラインカードオペレーションを進める許可を提供していなかった場合には、オンラインカードオペレーションユニットは、ステップ３１１において、オンラインカードオペレーションの実行を進めない。
【００４８】
図５は、本発明の一実施形態による図３の高度化されたデバイスのクリティカリティ報告の生成を示すフローチャートを示している。詳細には、図５は、図３のステップ３０６をより詳細に説明している。
【００４９】
ステップ５１０において、被影響資源の作成されたリストが受け取られる。これらのリストは、（図３の、および図４でより詳細に説明された）ステップ３０６においてコンポーネント階層グラフをトラバースすることによって作成されたリストを含む。
【００５０】
続いて、ステップ５２０において、深刻度レベルが、所定の基準に基づいて、特定された各被影響資源に割り当てられる。深刻度レベルは、特定された被影響資源の機能が利用不能になった場合のシステム１００への影響の程度を表す。一実施形態では、深刻度レベルは、警告レベル、データクリティカルレベル、又はシステムクリティカルレベルである。所定の基準の選択は、解析結果の精度に影響を与える可能性がある。
【００５１】
次に、本発明の一実施形態において深刻度レベルを割り当てるための一組の基準を説明する。システムのタイプが異なれば、深刻度レベルの割り当ては異なる場合があることが理解されよう。
【００５２】
一実施形態によれば、使用されていない被影響論理ボリューム、被影響ディスクを有するが被影響論理ボリュームを有しない被影響ボリュームグループ、及び、少なくとも１つの代替的な影響を受けないハードウェアの識別子を有する被影響論理ボリュームには、警告レベルが割り当てられる。この少なくとも１つの代替的な影響を受けないハードウェアは、動作しており且つ利用可能なものである。
【００５３】
一般に、ローカルに設置された被影響ファイルシステム（たとえば、動作しており且つ利用可能な少なくとも１つの代替的な影響を受けないハードウェアデバイスを有しない被影響論理ボリュームに設置された被影響ファイルシステム、又は、被影響ディスクに設置された被影響ファイルシステム）には、データクリティカルレベルが割り当てられる。一方、少なくとも１つの代替的な影響を受けないハードウェアデバイスを有する被影響論理ボリューム上で見つけられる被影響ファイルシステムには、警告レベルが割り当てられる。この影響を受けないハードウェアデバイスは、動作していると共に利用可能なものである。加えて、システムクリティカルレベルは、次の被影響ファイルシステム、すなわち、/、/stand、/usr、/etc、及びＦＳスワップに割り当てられる。/が喪失された場合には、/usr/sbinに入って、カードの電源を再び投入することができなくなる。/standが喪失された場合には、カーネルレジストリサービスを続けることができなくなる。/usrが喪失された場合には、カードの電源を再び投入することができなくなる。/etcが喪失された場合には、オンラインカードオペレーションユニットは、syslogに書き込むことができないため、故障する。ＦＳスワップが喪失された場合には、カーネルをスワップアウトすることができ、カーネルがそれ自身をスワップインして戻ることができない場合には、カーネルは混乱する。
【００５４】
被影響プロセスには、データクリティカルレベルを割り当てることができる。さらに、被影響スワップデバイスには、システムクリティカルレベルを割り当てることもできる。スワップデバイスの喪失は、オペレーティングシステムが、もはや利用可能でない定義されたロケーション上の情報をスワップしようとする場合に壊滅的になる可能性がある。
【００５５】
被影響ダンプデバイスには、警告レベルを割り当てることができる。ダンプデバイスは、システムオペレーションにはクリティカルではないが、トラブルシューティングする場合のユーザには重要となる場合がある。
【００５６】
開示される技法は、その機能がシステムにクリティカルであるプロセス名のリストを作成することによって、「クリティカリティ」の概念をアプリケーションレベルにまで拡張するのに使用することができる。これらのプロセスのすべてのプロセスインスタンスは、コンポーネント階層において「クリティカル」としてタグ付けすることができる。
【００５７】
図５を再び参照して、ステップ５３０において、デバイスのクリティカリティ報告が生成される。このデバイスのクリティカリティ報告は、特定された各資源及び対応する各深刻度レベルを含むことができる。さらに、このデバイスのクリティカリティ報告は、正確さと、可読性と、ユーザからの許可が必要な場合にオンラインカードオペレーションの遂行を許可するか否かを決定することをユーザに可能にするための十分な情報をユーザに提供することとを強調することができるため、ユーザフレンドリーである。
【００５８】
本技法の上記変形形態のいずれも、適した汎用コンピュータをプログラミングすることによって実施することができる。プログラミングは、コンピュータによって読み出し可能なプログラムストレージデバイスの使用、及び、上述したオペレーションを行うためのコンピュータによって実行可能な命令から成るプログラムをコーディングすることを通じて行うことができる。
【００５９】
本明細書に含まれるフローチャートは、必ずしも、単一のホットプラグイベントにおける実行を表すものではなく、むしろ、いくつかの例では、複数のホットプラグオペレーションで行われる一連の協調されたステップ、イベント、又はプロセスを表すことができる。加えて、本明細書のフローチャートは、図面に明示的に表されるイベント、ステップ、又はプロセスの間で、他のイベント、ステップ、又はプロセスを行うことができないことを暗に意味するものとして解釈されるべきではない。
【００６０】
本発明の特定の実施形態の上記説明は、例示及び説明の目的で提示されたものである。それらの説明は、網羅的であることを目的とするものでもなければ、開示される正確な形に本発明を限定することを目的とするものでもなく、また上記教示に鑑み、多くの変更形態及び変形形態が可能である。実施形態は、本発明の原理及びその実用的な応用を最も良く説明し、それによって、他の当業者が、本発明及びさまざまな変更形態を有するさまざまな実施形態を、検討される特定の使用に適するように最も良く利用することを可能にするために、選ばれて説明されたものである。本発明の範囲は、本明細書に添付した特許請求の範囲及びその均等物によって画定されることが意図されている。
【図面の簡単な説明】
【００６１】
【図１】高可用性コンピュータシステム構成のハードウェアコンポーネント及びソフトウェアコンポーネントを示す図である。
【図２】ハードウェアコンポーネント及びソフトウェアコンポーネントを含むことができるコンポーネント階層グラフの一例を示す図である。
【図３】システムのうちの１つ又は複数のデバイス上でデバイスのクリティカリティ解析を行う方法を示すフローチャートである。
【図４】コンポーネント階層グラフのトラバースのアルゴリズムを示すフローチャートである。
【図５】図３のデバイスのクリティカリティ報告の生成を示すフローチャートである。
【図６】非循環有向グラフの一例を示す図である。
【符号の説明】
【００６２】
１００・・・コンピュータシステム
１０１，１０２，１０３・・・ホストバスアダプタ
１０４，１０５・・・周辺デバイスディスク
１０６・・・ミラードデバイス
【図１】
0004848392.tif 000002
【図２】
0004848392.tif 000003
【図３】
0004848392.tif 000004
【図４】
0004848392.tif 000005
【図５】
0004848392.tif 000006
【図６】
0004848392.tif 000007