(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-12
(45)【発行日】2024-12-20
(54)【発明の名称】ネットワーク・ファブリックにおける非応答ポートの隔離
(51)【国際特許分類】
H04L 43/10 20220101AFI20241213BHJP
G06F 11/07 20060101ALI20241213BHJP
G06F 11/30 20060101ALI20241213BHJP
【FI】
H04L43/10
G06F11/07 157
G06F11/07 140A
G06F11/30 140A
(21)【出願番号】P 2022562732
(86)(22)【出願日】2021-04-27
(86)【国際出願番号】 IB2021053435
(87)【国際公開番号】W WO2021224717
(87)【国際公開日】2021-11-11
【審査請求日】2023-09-25
(32)【優先日】2020-05-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ガブリロフ、コンスタンチン
(72)【発明者】
【氏名】コレン、エリ
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2012-038257(JP,A)
【文献】特開2006-178851(JP,A)
【文献】特開2007-122330(JP,A)
【文献】特開2017-027121(JP,A)
【文献】特開2019-176284(JP,A)
【文献】米国特許出願公開第2005/0021751(US,A1)
【文献】米国特許出願公開第2014/0258790(US,A1)
【文献】国際公開第2016/121830(WO,A1)
【文献】米国特許出願公開第2013/0262937(US,A1)
【文献】特開2014-175685(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/10
G06F 11/07
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
第1のノードから第2のノードに第1の管理クエリを送信することによって、分散コンピューティング環境の前記
第2のノードのオペレーティング・システムが正しく機能しているかどうかを判定することと、
前記
第2のノードの前記オペレーティング・システムが正しく機能していないとの判定に応答して、
前記第1のノードから前記第2のノードに関連付けられたポートに第2の管理クエリを送信することによって、前記
第2のノードがアクティブな通信リンクを有するかどうかを判定することと、
前記
第2のノードがアクティブな通信リンクを有するとの判定に応答して、
前記第1のノードから前記第2のノードに関連付けられた前記ポートにリセット要求を送信することによって、前記
第2のノードの前記アクティブな通信リンクをリセットすることと
を含
み、さらに、
前記分散コンピューティング環境内に、前記第1のノードおよび前記第2のノードとともに複数の追加ノードが含まれ、前記分散コンピューティング環境内の前記複数の追加ノードのそれぞれが、前記第1の管理クエリおよび前記第2の管理クエリを利用して隣接ノードを監視する、コンピュータ実施方法。
【請求項2】
前記第1の管理クエリが、前記分散コンピューティング環境の
前記第1のノードから
前記第2のノードに、前記第1のノードと前記第2のノードとの間のポイント・ツー・ポイント接続を介して直接送信される、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記第1の管理クエリが、前記分散コンピューティング環境の
前記第1のノードから
前記第2のノードに、前記第1のノードと前記第2のノードとの間に配置されたスイッチを介して間接的に送信される、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記第2のノードが
前記第1のノードの隣接ノードであるとの判定に応答して、前記第1の管理クエリが前記第1のノードによって前記第2のノードに送信される、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記第1の管理クエリが、前記
第2のノードの前記オペレーティング・システム内で終了するファブリック管理クエリを含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記第1の管理クエリへの応答が前記
第2のノードから所定の期間内に受信されなかったとの判定に応答して、前記
第2のノードの前記オペレーティング・システムが正しく機能していないと判定される、請求項1に記載のコンピュータ実施方法。
【請求項7】
前記第2の管理クエリが、前記
第2のノードがアクティブな通信リンクを有するかどうかを前記
第2のノードに関連付けられた前記ポートに問い合わせる、請求項1に記載のコンピュータ実施方法。
【請求項8】
前記第2の管理クエリに応答して前記
第2のノード内のアクティブなポートを識別したことに応答して、前記
第2のノードがアクティブな通信リンクを有すると判定される、請求項1に記載のコンピュータ実施方法。
【請求項9】
前記
第2のノードの前記オペレーティング・システムが正しく機能しておらず、かつ前記
第2のノードがアクティブな通信リンクを有するとの判定に応答して、所定のカウントが増分され、前記
第2のノードの監視がより高い頻度で実行される、請求項1に記載のコンピュータ実施方法。
【請求項10】
前記リセット要求が、前記
第2のノードに関連付けられた前記ポートに、前記
第2のノード内のすべてのアクティブなリンクをリセットさせる、請求項1に記載のコンピュータ実施方法。
【請求項11】
前記分散コンピューティング環境内の各ノードが監視ノードとして指定される、請求項1に記載のコンピュータ実施方法。
【請求項12】
前記分散コンピューティング環境内の監視ノードが、所定の期間内に所定の数のリセット要求を別のノードに送信することのみを許可される、請求項1に記載のコンピュータ実施方法。
【請求項13】
前記第1の管理クエリと前記第2の管理クエリがどちらも、優先度の高いクエリである、請求項1に記載のコンピュータ実施方法。
【請求項14】
前記第1の管理クエリが、前記
第2のノードのネットワーク・アダプタが動作可能であるかどうかも判定する、請求項1に記載のコンピュータ実施方法。
【請求項15】
ネットワーク・ファブリック内の非応答ポートを隔離するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが
前記第1のノードのプロセッサに、請求項1ないし14記載のコンピュータ実施方法を実行させる、コンピュータ・プログラム。
【請求項16】
コンピュータ実施方法であって、
分散コンピューティング環境の第1のノードから前記分散コンピューティング環境の第2のノードに第1の管理クエリを送信することであって、前記第1の管理クエリが、前記第2のノードのオペレーティング・システムに関連付けられる、前記第1の管理クエリを送信することと、
前記第1のノードにおいて前記第2のノードから前記第1の管理クエリへの応答を受信できなかったことに応答して、前記第1のノードから前記第2のノードに関連付けられた1つまたは複数の通信ポートに第2の管理クエリを送信することと、
前記第1のノードにおいて、前記第2のノードに関連付けられた前記1つまたは複数の通信ポートから、前記第2のノードがアクティブな通信リンクを有することを示す前記第2の管理クエリへの応答を受信したことに応答して、前記第1のノードによって、前記アクティブな通信リンクを有する前記第2のノードの前記1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、前記第2のノードに関連付けられた前記1つまたは複数の通信ポートに送信することと
を含
み、さらに、
前記分散コンピューティング環境内に、前記第1のノードおよび前記第2のノードとともに複数の追加ノードが含まれ、前記分散コンピューティング環境内の前記複数の追加ノードのそれぞれが、前記第1の管理クエリおよび前記第2の管理クエリを利用して隣接ノードを監視する、コンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は分散コンピューティング・システムに関し、より詳細には、本発明は分散コンピューティング・システム内のノードの非応答ポートを識別および対処することに関する。
【背景技術】
【0002】
最新の分散コンピューティング環境は、コンピューティング・リソースおよびストレージ・リソースの効率的な共有を利用してコンピューティング・タスクを実行する。これらの環境は、高速で低レイテンシの通信媒体を利用して、相互接続された複数のノードにデータを分散させて処理する。しかしながら、1つまたは複数のノードが誤動作しているにもかかわらず、処理のために着信するデータを受信すると、問題が発生する。この結果として、最適化された様式で処理を続行するために、分散コンピューティング環境全体の電源を入れ直す必要がある状況が生じ得る。故障したノードを識別して除去するための従来の手段では、アクティブな通信ポートを有する誤動作しているノードを正確に識別して対応することはできない。
【0003】
より具体的には、最新の高速相互接続ソリューションは、高速データ通信をサポートする。このような速度では、物理リンクの問題が生じておらず、エラーが発生することなく正しい速度をネゴシエートすることが可能なポートは、同じ速度でデータを消費することが不可能な場合に、ネットワーク・ファブリックおよびアプリケーション・フローにおいてすぐに輻輳を引き起こすことになる。例えば、ホスト・チャネル・アダプタ(HCA)は、ペリフェラル・コンポーネント・インターコネクト(PCI)転送にハードウェアの問題があるため、またはそのダイレクト・メモリ・アクセス(DMA)・ハードウェアに誤動作があるため、ホスト・メモリへのデータ転送に問題がある可能性がある。
【0004】
ノード全体が誤動作し、システム・ファームウェアがハードウェア障害の処理中にオペレーティング・システムの実行をプリエンプトした場合にも、同様の問題が発生する可能性がある。障害ハンドラの実行にかなりの時間がかかる場合、ネットワーク・アダプタのキューは急速に満杯になり、新しいパケットを受信することが不可能になる。一方、ローカルまたはリモートのHCAの誤動作により、アプリケーションが必要とされる整合性および速度でデータを送受信できない場合、アプリケーションはトランザクションを完了できない可能性がある。
【0005】
アクティブ状態のリンクを有するクラッシュしたノードが存在するためにファブリック全体が誤動作すると、状況は極めて重大になる。多くの実際の故障シナリオでは、オペレーティング・システムを実行できない場合、相互接続リンクがすぐにダウンする可能性がある。さらに、多くの相互接続ファブリックは、ハードウェア・クレジット・フロー制御メカニズムを使用し、キューの先頭のパケットおよび送信キュー内のすべてのパケットについてタイムアウトを有する、信頼性の高いネットワークである。転送規格は、ネットワークに存在するがパケットを送受信することができない構成要素に対処する。
【0006】
規格は、誤動作している構成要素(例えば、データを受信できないためにクレジットを解放していない構成要素)の存在がファブリック全体を長期間ブロックして崩壊に至らないように定義されている。しかしながら、ソフトウェアのある部分がクリティカル・セクション内にあり、クリティカル・セクションを離れるために、エラーが発生するか成功するまで故障した接続先と何度も通信する必要がある場合、故障した構成要素によってすべての送信ポート・クレジットが繰り返し消費されるので、(クラスタ・グリッド論理のような)ソフトウェアの他の部分が通信できなくなる可能性がある。したがって、クリティカル・セクションに関連付けられた通信は、故障を検出してその故障をグリッド全体に通信し得る他のトラフィックをブロックするので、ソフトウェアは、(クリティカル・セクションにあるため)I/Oサービスを提供することも、クリティカル・セクションを中止することもできない。
【0007】
さらに、実際のテスト・シナリオは、ネットワーク機器がしばしば、相互接続ファブリック内の非応答ノードによって消費された送信クレジットを解放する転送規格を適切に実装できないことを示している。正常なネットワーク・アダプタおよびスイッチは、ファブリック内に異常なノードが存在する場合、不安定な挙動を示し、異常な構成要素がファブリックから物理的に除去されるまでファブリック全体がフリーズするという状況にさえ至る可能性がある。場合によっては、異常な構成要素を除去した後も故障が続く可能性があり、ファブリック内の構成要素(スイッチおよびノード)の再起動またはリセットが必要になり、ダウン・タイムが増加する可能性がある。
【0008】
したがって、非応答ノードを適時に検出することは、動作の中断による壊滅的な影響を防ぐことができる重要なタスクとなる。
【発明の概要】
【0009】
一態様によるコンピュータ実施方法は、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定することと、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定することと、ノードがアクティブな通信リンクを有するとの判定に応答して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットすることとを含む。
【0010】
このようにして、上記の分散監視の結果として、障害のあるオペレーティング・システム機能または障害のあるネットワーク・アダプタおよびアクティブなリンクを有する問題のあるノードは、隔離され(fence)得る(例えば、識別され、分散コンピューティング環境から除去され得る)。これにより、分散コンピューティング環境内のこれらの問題のあるノードによって引き起こされる通信バックログが解消される可能性があり、したがって、分散コンピューティング環境内のすべてのノードの機能が向上する可能性がある。
【0011】
一態様では、第1の管理クエリと第2の管理クエリはどちらも、優先度の高いクエリである。このようにして、環境内のノードの分散監視を優先することによって、分散コンピューティング環境内のデータ通信の問題を最小限に抑えることができる。
【0012】
別の態様によれば、ネットワーク・ファブリック内の非応答ポートを隔離するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサに、プロセッサを利用して、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定することと、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、プロセッサを利用して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定することと、ノードがアクティブな通信リンクを有するとの判定に応答して、プロセッサを利用して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットすることとを含む方法を実行させるように、プロセッサによって実行可能である。
【0013】
一態様では、分散コンピューティング環境内の監視ノードは、所定の期間内に所定の数のリセット要求を別のノードに送信することのみを許可される。
【0014】
このようにして、障害のある監視ノードが、機能している別のノードを不当なリセット要求によって中断するのを防止することができる。
【0015】
別の態様によれば、システムは、プロセッサと、プロセッサと統合されるか、プロセッサによって実行可能であるか、またはプロセッサと統合され、かつプロセッサによって実行可能である論理とを含み、論理は、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定し、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定し、ノードがアクティブな通信リンクを有するとの判定に応答して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットするように構成される。
【0016】
別の態様によれば、コンピュータ実施方法は、分散コンピューティング環境の第1のノードから分散コンピューティング環境の第2のノードに第1の管理クエリを送信することであって、第1の管理クエリが、第2のノードのオペレーティング・システムに関連付けられる、第1の管理クエリを送信することと、第1のノードにおいて第2のノードから第1の管理クエリへの応答を受信できなかったことに応答して、第1のノードから第2のノードに関連付けられた1つまたは複数の通信ポートに第2の管理クエリを送信することと、第1のノードにおいて、第2のノードに関連付けられた1つまたは複数の通信ポートから、第2のノードがアクティブな通信リンクを有することを示す第2の管理クエリへの応答を受信したことに応答して、第1のノードによって、アクティブな通信リンクを有する第2のノードの1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられた1つまたは複数の通信ポートに送信することとを含む。
【0017】
このようにして、第1のノードは、管理ノードとして機能することができ、第2のノードがオペレーティング・システムの問題またはネットワーク・アダプタの問題を有すると同時にアクティブな通信リンクも有するという特定のシナリオを判定したことに応答して、分散コンピューティング環境からの第2のノードの除去をトリガし得る。これにより、第2ノードによって引き起こされる分散コンピューティング環境内のネットワーク輻輳が解消される可能性があり、それによって、分散コンピューティング環境内の第1ノードおよび他のすべてのコンピューティング・ノードの性能が向上する可能性がある。
【0018】
別の態様によれば、分散コンピューティング環境内に管理ノードを実装するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサに、プロセッサを利用して、分散コンピューティング環境の第1のノードから分散コンピューティング環境の第2のノードに第1の管理クエリを送信することであって、第1の管理クエリが、第2のノードのオペレーティング・システムに関連付けられる、第1の管理クエリを送信することと、第1のノードにおいて第2のノードから第1の管理クエリへの応答を受信できなかったことに応答して、プロセッサを利用して、第1のノードから第2のノードに関連付けられた1つまたは複数の通信ポートに第2の管理クエリを送信することと、第1のノードにおいて、第2のノードに関連付けられた1つまたは複数の通信ポートから、第2のノードがアクティブな通信リンクを有することを示す第2の管理クエリへの応答を受信したことに応答して、プロセッサを利用して、第1のノードによって、アクティブな通信リンクを有する第2のノードの1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられた1つまたは複数の通信ポートに送信することとを含む方法を実行させるように、プロセッサによって実行可能である。
【0019】
本発明の他の態様および実施形態は、図面とともに読めば、本発明の原理を例示する以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0020】
【
図1】本発明の一態様による、クラウド・コンピューティング環境を示す図である。
【
図2】本発明の一態様による、抽象化モデル層を示す図である。
【
図3】本発明の一態様による、クラウド・コンピューティング・ノードを示す図である。
【
図4】本発明の一態様による、階層型データ・ストレージ・システムを示す図である。
【
図5】本発明の一態様による、ネットワーク・ファブリック内の非応答ポートを隔離するための方法のフローチャートである。
【
図6】本発明の一態様による、分散コンピューティング環境内に管理ノードを実装するための方法のフローチャートである。
【
図7】本発明の一態様による、例示的な分散コンピューティング・ネットワークを示す図である。
【
図8】本発明の一態様による、分散コンピューティング環境内でノード監視を実行するための方法のフローチャートである。
【発明を実施するための形態】
【0021】
以下の説明は、本発明の一般的な原理を説明することを目的としてなされており、本明細書において特許請求される本発明の概念を限定することを意味するものではない。さらに、本明細書に記載の特定の特徴は、様々な可能な組合せおよび置換えのそれぞれにおいて、他の記載されている特徴と組み合わせて使用することができる。
【0022】
本明細書において別途明確な定義がない限り、すべての用語は、本明細書から暗示される意味、ならびに当業者によって理解される意味または辞書、論文などで定義される意味あるいはその両方を含む、可能な限り広い解釈を与えられるべきである。
【0023】
本明細書および添付の特許請求の範囲で使用される単数形「a」、「an」、および「the」は、別途指示がない限り複数の指示対象を含むことにも留意されたい。「備える(comprises)」または「備える(comprising)」という用語あるいはその両方は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはこれらのグループ、あるいはその組合せの存在または追加を排除するものではないことがさらに理解されよう。
【0024】
以下の説明は、ネットワーク・ファブリック内の非応答ポートを隔離するいくつかの態様を開示している。
【0025】
一般的な一態様では、コンピュータ実施方法は、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定することと、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定することと、ノードがアクティブな通信リンクを有するとの判定に応答して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットすることとを含む。
【0026】
このようにして、上記の分散監視の結果として、障害のあるオペレーティング・システム機能または障害のあるネットワーク・アダプタおよびアクティブなリンクを有する問題のあるノードは、隔離され得る(例えば、識別され、分散コンピューティング環境から除去され得る)。これにより、分散コンピューティング環境内のこれらの問題のあるノードによって引き起こされる通信バックログが解消される可能性があり、したがって、分散コンピューティング環境内のすべてのノードの機能が向上する可能性がある。
【0027】
一態様では、第1の管理クエリと第2の管理クエリはどちらも、優先度の高いクエリである。このようにして、環境内のノードの分散監視を優先することによって、分散コンピューティング環境内のデータ通信の問題を最小限に抑えることができる。
【0028】
別の一般的な態様では、ネットワーク・ファブリック内の非応答ポートを隔離するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサに、プロセッサを利用して、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定することと、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、プロセッサを利用して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定することと、ノードがアクティブな通信リンクを有するとの判定に応答して、プロセッサを利用して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットすることとを含む方法を実行させるように、プロセッサによって実行可能である。
【0029】
一態様では、分散コンピューティング環境内の監視ノードは、所定の期間内に所定の数のリセット要求を別のノードに送信することのみを許可される。
【0030】
このようにして、障害のある監視ノードが、機能している別のノードを不当なリセット要求によって中断するのを防止することができる。
【0031】
別の一般的な態様では、システムは、プロセッサと、プロセッサと統合されるか、プロセッサによって実行可能であるか、またはプロセッサと統合され、かつプロセッサによって実行可能である論理とを含み、論理は、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境のノードのオペレーティング・システムが正しく機能しているかどうかを判定し、ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、ノードに関連付けられたポートに第2の管理クエリを送信することによって、ノードがアクティブな通信リンクを有するかどうかを判定し、ノードがアクティブな通信リンクを有するとの判定に応答して、ノードに関連付けられたポートにリセット要求を送信することによって、ノードのアクティブな通信リンクをリセットするように構成される。
【0032】
別の一般的な態様では、コンピュータ実施方法は、分散コンピューティング環境の第1のノードから分散コンピューティング環境の第2のノードに第1の管理クエリを送信することであって、第1の管理クエリが、第2のノードのオペレーティング・システムに関連付けられる、第1の管理クエリを送信することと、第1のノードにおいて第2のノードから第1の管理クエリへの応答を受信できなかったことに応答して、第1のノードから第2のノードに関連付けられた1つまたは複数の通信ポートに第2の管理クエリを送信することと、第1のノードにおいて、第2のノードに関連付けられた1つまたは複数の通信ポートから、第2のノードがアクティブな通信リンクを有することを示す第2の管理クエリへの応答を受信したことに応答して、第1のノードによって、アクティブな通信リンクを有する第2のノードの1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられた1つまたは複数の通信ポートに送信することとを含む。
【0033】
このようにして、第1のノードは、管理ノードとして機能することができ、第2のノードがオペレーティング・システムの問題またはネットワーク・アダプタの問題を有すると同時にアクティブな通信リンクも有するという特定のシナリオを判定したことに応答して、分散コンピューティング環境からの第2のノードの除去をトリガし得る。これにより、第2ノードによって引き起こされる分散コンピューティング環境内のネットワーク輻輳が解消される可能性があり、それによって、分散コンピューティング環境内の第1ノードおよび他のすべてのコンピューティング・ノードの性能が向上する可能性がある。
【0034】
別の一般的な態様では、分散コンピューティング環境内に管理ノードを実装するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサに、プロセッサを利用して、分散コンピューティング環境の第1のノードから分散コンピューティング環境の第2のノードに第1の管理クエリを送信することであって、第1の管理クエリが、第2のノードのオペレーティング・システムに関連付けられる、第1の管理クエリを送信することと、第1のノードにおいて第2のノードから第1の管理クエリへの応答を受信できなかったことに応答して、プロセッサを利用して、第1のノードから第2のノードに関連付けられた1つまたは複数の通信ポートに第2の管理クエリを送信することと、第1のノードにおいて、第2のノードに関連付けられた1つまたは複数の通信ポートから、第2のノードがアクティブな通信リンクを有することを示す第2の管理クエリへの応答を受信したことに応答して、プロセッサを利用して、第1のノードによって、アクティブな通信リンクを有する第2のノードの1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられた1つまたは複数の通信ポートに送信することとを含む方法を実行させるように、プロセッサによって実行可能である。
【0035】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の態様は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
【0036】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限の対話で迅速にプロビジョニングおよび公開され得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便かつオンデマンドのネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0037】
特徴は次の通りである。
【0038】
オンデマンド・セルフサービス:クラウド・コンシューマは、サービス・プロバイダとの間で人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【0039】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0040】
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマにサービス提供するようにプール化され、要求に応じて、異なる物理リソースおよび仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置について制御も知識も有していないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を特定することが可能であり得るという点で、位置の独立性があるといえる。
【0041】
迅速な柔軟性:機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングして、急速にスケール・アウトし、迅速に解放して急速にスケール・インすることができる。コンシューマにとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
【0042】
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダとコンシューマとの両方に透明性を提供する。
【0043】
サービス・モデルは次の通りである。
【0044】
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定の想定される例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
【0045】
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によってはアプリケーションをホストする環境構成を制御する。
【0046】
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマがオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および動作させることができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、コンシューマに提供される機能である。コンシューマは、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーキング構成要素(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0047】
展開モデルは次の通りである。
【0048】
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0049】
コミュニティ・クラウド:クラウド・インフラストラクチャは複数の組織で共有され、関心事項(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0050】
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
【0051】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
【0052】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に焦点を置くことを重視したサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0053】
次に
図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示のように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信し得る。これらは、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。
図1に示すコンピューティング・デバイス54A~54Nのタイプは、例示のみを意図しており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0054】
次に
図2を参照すると、クラウド・コンピューティング環境50(
図1)によって提供される1組の機能抽象化層が示されている。
図2に示す構成要素、層、および機能が例示のみを意図しており、本発明の態様がそれらに限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
【0055】
ハードウェアおよびソフトウェア層60は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング構成要素66が含まれる。いくつかの態様では、ソフトウェア構成要素には、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が含まれる。
【0056】
仮想化層70は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る。
【0057】
一例では、管理層80は、以下に記載の機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド・コンシューマおよびタスクのための本人確認、ならびにデータおよび他のリソースのための保護を提供する。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるようなクラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行85は、SLAに従って将来要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0058】
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびに分散コンピューティング96が含まれる。
【0059】
次に
図3を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード10は、好適なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載の本発明の態様の使用範囲または機能に関する制限を示唆することを意図するものではない。それでもなお、クラウド・コンピューティング・ノード10は、本明細書で上述した機能のいずれかを実装されること、または実行すること、あるいはその両方が可能である。
【0060】
クラウド・コンピューティング・ノード10には、他の多くの汎用もしくは専用のコンピューティング・システム環境またはコンピューティング・システム構成で動作可能なコンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12での使用に好適であり得るよく知られているコンピューティング・システム、コンピューティング環境、またはコンピューティング構成、あるいはその組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルド・デバイスまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【0061】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで説明され得る。一般に、プログラム・モジュールには、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、論理、データ構造などが含まれ得る。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境において実施され得る。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモートとの両方のコンピュータ・システム記憶媒体内に配置され得る。
【0062】
図3に示すように、クラウド・コンピューティング・ノード10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形式で示されている。コンピュータ・システム/サーバ12の構成要素には、1つもしくは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム構成要素をプロセッサ16に結合するバス18が含まれ得るが、これらに限定されない。
【0063】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれか1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、および周辺機器相互接続(PCI)バスが含まれる。
【0064】
コンピュータ・システム/サーバ12は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体との両方、取り外し可能な媒体と取り外し不可能な媒体との両方を含む。
【0065】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形式のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。ほんの一例として、取り外し不可能な不揮発性磁気媒体(図示せず、通常は「ハード・ドライブ」と呼ばれる)に対する読み書き用のストレージ・システム34を設けることができる。図示していないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み書き用の磁気ディスク・ドライブ、およびCD-ROM、DVD-ROMまたは他の光媒体などの取り外し可能な不揮発性光学式ディスクに対する読み書き用の光学式ディスク・ドライブを設けることができる。そのような場合、それぞれは、1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。以下でさらに描写および説明するように、メモリ28は、本発明の態様の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0066】
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ28内に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組合せはそれぞれ、ネットワーキング環境の実装を含み得る。プログラム・モジュール42は、一般に、本明細書に記載されるように、本発明の態様の機能または方法論あるいはその両方を実行する。
【0067】
コンピュータ・システム/サーバ12はまた、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)あるいはその組合せと通信し得る。そのような通信は、入力/出力(I/O)インターフェース22を介して行われ得る。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、一般ワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)あるいはその組合せなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示のように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信する。図示されていないが、コンピュータ・システム/サーバ12と併せて他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方を使用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【0068】
次に
図4を参照すると、一態様によるストレージ・システム400が示されている。
図4に示す要素のいくつかは、様々な態様によりハードウェアまたはソフトウェアあるいはその両方として実装され得ることに留意されたい。ストレージ・システム400は、少なくとも1つの上位ストレージ階層402および少なくとも1つの下位ストレージ階層406上の複数の媒体と通信するためのストレージ・システム・マネージャ412を含み得る。上位ストレージ階層402は、好ましくは、ハード・ディスク・ドライブ(HDD)内のハード・ディスク、不揮発性メモリ(NVM)、ソリッド・ステート・ドライブ(SSD)内のソリッド・ステート・メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイなど、または本明細書に記載されているか当技術分野で知られている他のもの、あるいはその組合せなど、1つまたは複数のランダム・アクセス媒体またはダイレクト・アクセス媒体あるいはその両方404を含み得る。下位ストレージ階層406は、好ましくは、テープ・ドライブ内の磁気テープまたは光媒体あるいはその両方などのシーケンシャル・アクセス媒体、低速アクセスHDD、低速アクセスSSDなど、または本明細書に記載されているか当技術分野で知られている他のもの、あるいはその組合せを含む、1つまたは複数の低性能のストレージ媒体408を含み得る。1つまたは複数の追加のストレージ階層416は、システム400の設計者によって所望されるようにストレージ・メモリ媒体の任意の組合せを含み得る。また、上位ストレージ階層402または下位ストレージ階層406あるいはその両方のいずれかは、ストレージ・デバイスまたはストレージ媒体あるいはその両方の何らかの組合せを含み得る。
【0069】
ストレージ・システム・マネージャ412は、
図4に示すように、ストレージ・エリア・ネットワーク(SAN)、または何らかの他の好適なネットワーク・タイプなどのネットワーク410を介して、上位ストレージ階層402および下位ストレージ階層406上のストレージ媒体404、408と通信し得る。ストレージ・システム・マネージャ412はまた、ホスト・インターフェース414を介して1つまたは複数のホスト・システム(図示せず)と通信し得、ホスト・インターフェース414は、ストレージ・システム・マネージャ412の一部である場合もあれば、一部でない場合もある。ストレージ・システム・マネージャ412またはストレージ・システム400の任意の他の構成要素あるいはその両方は、ハードウェアまたはソフトウェアあるいはその両方において実装され得、中央処理ユニット(CPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)などの当技術分野で知られているタイプのコマンドを実行するためのプロセッサ(図示せず)を利用し得る。当然ながら、本説明を読めば当業者には明らかであるように、ストレージ・システムの任意の構成が使用され得る。
【0070】
より多くの態様では、ストレージ・システム400は、任意の数のデータ・ストレージ階層を含み得、各ストレージ階層内に同じまたは異なるストレージ・メモリ媒体を含み得る。例えば、各データ・ストレージ階層は、HDD、SSD、シーケンシャル・アクセス媒体(テープ・ドライブ内のテープ、光ディスク・ドライブ内の光ディスクなど)、ダイレクト・アクセス媒体(CD-ROM、DVD-ROMなど)などの同じタイプのストレージ・メモリ媒体、または媒体ストレージ・タイプの任意の組合せを含み得る。そのような構成の1つでは、上位ストレージ階層402は、より高性能のストレージ環境にデータを記憶するためのSSDストレージ媒体の大部分を含み得、下位ストレージ階層406および追加のストレージ階層416を含む残りのストレージ階層は、より低性能のストレージ環境にデータを記憶するためのSSD、HDD、テープ・ドライブなどの任意の組合せを含み得る。このようにして、より頻繁にアクセスされるデータ、より高い優先度を有するデータ、より迅速にアクセスされる必要があるデータなどは、上位ストレージ階層402に記憶され得、一方、これらの属性の1つも有していないデータは、下位ストレージ階層406を含む追加のストレージ階層416に記憶され得る。当然ながら、当業者は本説明を読めば、本明細書に提示された態様に従って、異なるストレージ方式に実装するためのストレージ媒体タイプの他の多くの組合せを考案することができる。
【0071】
いくつかの態様によれば、ストレージ・システム(400など)は、データ・セットを開くよう求める要求を受信するように構成された論理、要求されたデータ・セットが複数の関連部分において階層型データ・ストレージ・システム400の下位ストレージ階層406に記憶されているかどうかを判定するように構成された論理、要求されたデータ・セットの各関連部分を階層型データ・ストレージ・システム400の上位ストレージ階層402に移動するように構成された論理、および関連部分から、階層型データ・ストレージ・システム400の上位ストレージ階層402上で要求されたデータ・セットをアセンブルするように構成された論理を含み得る。
【0072】
当然ながら、この論理は、様々な態様により、任意のデバイス上またはシステム上あるいはその両方での方法として、またはコンピュータ・プログラム製品として実装され得る。
【0073】
次に
図5を参照すると、一態様による、方法500のフローチャートが示されている。方法500は、様々な態様において、とりわけ
図1~
図4および
図7に示された環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本明細書を読めば当業者には理解されるように、方法500には、
図5に具体的に記載された動作よりも多い動作または少ない動作が含まれ得る。
【0074】
方法500の各ステップは、動作環境の任意の好適な構成要素によって実行され得る。例えば、様々な態様において、方法500は、1つもしくは複数のサーバ、コンピュータ、または中に1つもしくは複数のプロセッサを有する何らかの他のデバイスによって、部分的または全体的に実行され得る。方法500の1つまたは複数のステップを実行するために、ハードウェアまたはソフトウェアあるいはその両方に実装される、好ましくは少なくとも1つのハードウェア構成要素を有する、プロセッサ、例えば、処理回路、チップ、またはモジュール、あるいはその組合せが任意のデバイスにおいて利用され得る。例示的なプロセッサには、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、それらの組合せ、または当技術分野で知られている任意の他の好適なコンピューティング・デバイスが含まれるが、これらに限定されない。
【0075】
図5に示すように、方法500は、動作502で開始することができ、ノードに第1の管理クエリを送信することによって、分散コンピューティング環境の上記ノードのオペレーティング・システムが正しく機能しているかどうかが判定される。一態様では、分散コンピューティング環境は、1つまたは複数の計算アクション(例えば、アプリケーションの実行、データの処理など)を実行するために共に機能する複数のノード(例えば、計算ノードなど)を含み得る。例えば、ノードは、物理的な有形のハードウェア・ストレージおよびコンピューティング・リソースを有するコンピューティング・デバイス(例えば、コンピュータ、サーバなど)を含み得る。
【0076】
一態様では、上記ノードのネットワーク・アダプタが正しく機能しているかどうかが判定され得る。例えば、第1の管理クエリは、上記ノードのネットワーク・アダプタが到達可能であるかどうか、利用可能であるかどうか、動作可能であるかなども判定し得る。別の態様では、第1の管理クエリは、上記ノードのオペレーティング・システムが到達可能であるかどうか(例えば、OSがそのポートを使用して機能できるかどうか)を確認し得る。
【0077】
さらに、一態様では、分散コンピューティング環境は、様々なアプリケーション(例えば、株式市場アプリケーション、ストレージ・サービス、データベース・サービスなど)を実装し得る。別の態様では、分散コンピューティング環境内のノードは、すべて同じ物理的な位置内に配置され得、ポイント・ツー・ポイント接続を利用して接続され得る。
【0078】
さらに、一態様では、分散コンピューティング環境内のノードは、異なる物理的な位置内に配置され得、高速接続(例えば、ファイバ・チャネル接続など)を利用して接続され得る。別の態様では、分散コンピューティング環境内のすべてのノードは、1つまたは複数の高データ・レート接続(例えば、ファスト・イーサネット(R)接続、インフィニバンド(IB)接続、ハードウェア・レベル接続など)を介して低レイテンシで互いに通信し得る。さらに別の態様では、分散コンピューティング環境内のノードは、分散コンピューティング環境内で互いにリソース(例えば、処理能力、メモリなど)を共有し得る。
【0079】
さらに、一態様では、分散コンピューティング環境は、グリッド・アーキテクチャ、ネットワーク・ファブリックなどを含み得る。別の態様では、分散コンピューティング環境の第1のノードは、第1の管理クエリを第2のノードに(例えば、2つのノード間のポイント・ツー・ポイント接続を介して)直接送信し得る。さらに別の態様では、分散コンピューティング環境の第1のノードは、第1の管理クエリを第2のノードに(例えば、2つのノード間に配置されたスイッチなどを介して)間接的に送信し得る。
【0080】
また、一態様では、第1のノードおよび第2のノードは、分散コンピューティング環境内の隣接ノードであり得る。別の態様では、第1のノードは、第2のノードが第1のノードの隣接ノードであるとの判定に応答して、第1の管理クエリを第2のノードに送信し得る。さらに別の態様では、第1のノードで実行されているデーモン(例えば、監視エージェントなどのアプリケーションまたはコード)は、第1の管理クエリを第1のノードから第2のノードに送信し得る。
【0081】
さらに、一態様では、第1の管理クエリは、受信側ノードのオペレーティング・システム内で終了するファブリック管理クエリを含み得る。例えば、インフィニバンド・ファブリックでは、第1の管理クエリには、オペレーティング・システムによって終了される属性タイプSMINFO(サブネット・マネージャ情報)のSMP(サブネット管理プロトコル)MAD(管理データグラム)クエリが含まれ得る。別の態様では、受信側ノードのオペレーティング・システムは、第1の管理クエリを受信したことに応答して、第1の管理クエリへの応答を送信し得る。例えば、受信側ノードのオペレーティング・システムが正しく動作している場合にのみ、応答が送信され得る。別の例では、受信側ノードのオペレーティング・システムが正しく動作していない、機能していないなどの場合、応答が送信されない場合がある。
【0082】
さらに、方法500は動作504に進むことができ、上記ノードのオペレーティング・システムが正しく機能していないとの判定に応答して、上記ノードに関連付けられたポートに第2の管理クエリを送信することによって、上記ノードがアクティブな通信リンクを有するかどうかを判定する。一態様では、第1の管理クエリへの応答が上記ノードから所定の期間内に受信されなかったとの判定に応答して、上記ノードのオペレーティング・システムが正しく機能していないと判定され得る。
【0083】
例えば、第1の管理クエリへの応答が上記ノードから所定の期間内に受信されなかったとの判定に応答して、第1の管理クエリが上記ノードに1回または複数回再送信され得る。別の例では、上記ノードに第1の管理クエリを所定の回数再送信した後に、上記ノードから応答が受信されなかったとの判定に応答して、上記ノードが正しく機能していないと判定され得る。
【0084】
さらに、一態様では、第1の管理クエリへの応答が上記ノードから所定の期間内に受信されたとの判定に応答して、第2のノードのオペレーティング・システムが正しく機能していると判定され得る。例えば、ノードのオペレーティング・システムが正しく機能しているとの判定に応答して、第1の管理クエリは、所定の監視スケジュールに従って後で上記ノードに再び送信され得る。
【0085】
また、一態様では、応答は、第1の管理クエリを送信したノードで受信され得る。例えば、分散コンピューティング環境の第1のノードが第1の管理クエリを第2のノードに送信した場合、第2のノードからの応答は、第1のノードで受信され得る。別の態様では、第1の管理クエリへの応答が上記ノードから所定の期間内に受信されなかったとの判定に応答して、第2の管理クエリが、上記ノードに関連付けられたポートに送信され得る。
さらに、第2の管理クエリは、関連するネットワーク・ポートにそのリンクがアクティブであるかどうかを問い合わせることによって、上記ノードがアクティブな通信リンクを有するかどうかを確認し得る。一態様では、アクティブな通信リンクは、上記ノード上のポートと別のノード上の別のポートとの間のアクティブな接続を含み得る。この場合、分散コンピューティング環境の第1のノードは、第2の管理クエリを、第2のノードに接続されたそのローカル・ポートに直接送信し得る。別の態様では、アクティブな通信リンクは、上記ノード上のポートとスイッチ上の別のポートとの間のアクティブな接続を含み得る。この場合、分散コンピューティング環境の第1のノードは、第2の管理クエリをスイッチに送信して、第2のノードのポートの状態を照会し得る。さらに別の態様では、分散コンピューティング環境の第1のノードは、第2の管理クエリを第2のノード内のポートに、(例えば、2つのノード間に配置されたスイッチを介して、または直接リンクを使用して)間接的にまたは直接送信し得る。例えば、第2のノードのオペレーティング・システム(OS)が正しく機能していないとの判定に応答して、第1のノードは、第2のノードに関連付けられたすべてのポートを調査して、第2のノードのいずれかのポートが存在し、アクティブであるかどうかを判定し得る。
【0086】
さらに、一態様では、第2のノードに関連付けられたポートが存在し、アクティブである場合、第2のノードは、アクティブな通信リンクを有すると判定され得る。別の態様では、照会されたネットワーク・ポートは、上記ノードによって保持されている任意のアクティブなリンクを(例えば、ノードの1つまたは複数のポートなどを介して)指示することによって、第2の管理クエリに応答し得る。さらに別の態様では、応答は、第2の管理クエリを送信したノードで受信され得る。例えば、分散コンピューティング環境の第1のノードが第2の管理クエリを第2のノードに関連付けられたポートに送信した場合、照会されたネットワーク・ポートからの応答は第1のノードで受信され得る。
【0087】
さらに、方法500は、動作506に進むことができ、上記ノードがアクティブな通信リンクを有するとの判定に応答して、上記ノードに関連付けられた1つまたは複数のネットワーク・ポートにリセット要求を送信することによって、上記ノードのアクティブな通信リンクがリセットされる。一態様では、上記ノードに関連付けられたポートは、該ノードに接続された1つまたは複数のポートを含み得る。例えば、第2の管理クエリに応答して上記ノード内のアクティブなポートを識別したことに応答して、上記ノードがアクティブな通信リンクを有すると判定され得る。別の態様では、第2の管理クエリに応答して上記ノード内のアクティブなポートを識別できなかったことに応答して、上記ノードにアクティブな通信リンクを有していないと判定され得る。例えば、上記ノードがアクティブな通信リンクを有していないとの判定に応答して、第1の管理クエリは、所定の監視スケジュールに従って後で上記ノードに再び送信され得る。
【0088】
また、一態様では、上記ノードのオペレーティング・システムが正しく機能しておらず、同時に上記ノードがアクティブな通信リンクを有するとの判定に応答して、上記ノードは、問題があるとして直ちにフラグ付けされ得る。例えば、監視を実行している別のノード内のノードを識別するメタデータを変更することによって(例えば、管理クエリなどを送信することによって)、上記ノードは、問題があるとしてフラグ付けされ得る。
【0089】
さらに、一態様では、上記ノードのオペレーティング・システムが正しく機能しておらず、同時に上記ノードがアクティブな通信リンクを有するとの判定に応答して、所定のカウントが増分され得、上記ノードに問題があるとしてフラグ付けする前に上記ノードの監視が強化され得る。例えば、第1の管理クエリは、第1の所定の頻度でのスケジュールされた定期的な監視活動の一部として、上記ノードに繰り返し送信され得る。
【0090】
さらに、一例では、所定のカウントが増分されたとの判定に応答して、スケジュールされた定期的な監視活動の第1の所定の頻度は、第1の所定の頻度よりも大きい第2の所定の頻度に変更され得る。別の例では、第1の管理クエリは、次いで、第2の所定の頻度に従って上記ノードに再送信され得る。このようにして、所定のカウントが最初に増分されると(上記ノードのオペレーティング・システムが正しく機能しておらず、同時に上記ノードがアクティブな通信リンクを有することを示す)、上記ノードに問題があることを迅速に確認するために、フォローアップ管理クエリが、高い頻度で上記ノードに送信され得る。
【0091】
さらに、一例では、上記ノードのオペレーティング・システムが正しく機能しておらず、同時に上記ノードがアクティブな通信リンクを有すると判定されるたびに、所定のカウントが増分され得る。別の例では、所定のカウントが閾値を超えたとき、次いで上記ノードは、問題があるとしてフラグ付けされ得る。さらに別の例では、上記ノードに問題がないと判定すると(例えば、上記ノードのオペレーティング・システムが正しく機能している、または上記ノードがアクティブな通信リンクを有していないと判定すると)、所定のカウントがリセットされ得る。このようにして、問題のあるノードの偽陽性識別を最小限に抑えることができる。
【0092】
さらに、一態様では、上記ノードに問題があるとしてフラグ付けしたことに応答して、上記ノードのアクティブな通信リンクをリセットするよう求めるリセット要求が、上記ノードに関連付けられた1つまたは複数のネットワーク・ポートに送信され得る。別の態様では、上記ノード内のすべてのアクティブなリンクをリセットするよう求めるリセット要求が、上記ノード・ポートに送信され得る。いずれの場合も、稼働中のオペレーティング・システムおよび応答するネットワーク・ポートがファブリックに再参加する必要があり、一方または他方のいずれかが機能していないので、上記ノードはアクティブなリンクを有していない結果となり得る。
【0093】
別の例では、偽陽性の場合、上記ノードのオペレーティング・システムおよびネットワーク・ポートが機能しているため、リンク・リセット・アクションが完了した後に上記ノードがネットワークに再参加することになるので、リセット要求は、分散コンピューティング環境から上記ノードをかなりの時間除去しない場合がある(例えば、リンクのリセットにより、アクティブなノードが生じることになる)。
【0094】
また、一態様では、リセット要求を送信するエンティティは、リセット要求の日時を(例えば、タイムスタンプなどを使用して)ログに記録し得る。
【0095】
さらに、一態様では、分散コンピューティング環境内の1つまたは複数のマネージャは、次いで、上記ノード内のアクティブなリンクの欠如を識別し得、分散コンピューティング環境から上記ノードを除去し得る。例えば、1つまたは複数のマネージャは、グリッド・マネージャ、ファブリック・マネージャなどを含み得る。別の例では、上記ノードは、次いで、(例えば、1つまたは複数のマネージャによって)リセットされ得、その後、そのネットワーク・ポートおよびオペレーティング・システムが機能しているときに分散コンピューティング環境に再参加し得る。(上記ノードに関連付けられたネットワーク・ポートからノードを完全に物理的に分離することになるリンク・シャットダウンとは対照的に)リンク・リセット・アクションを使用すると、機能的ノードがファブリックに自動的に再参加できるようになり得るので、偽陽性検出の影響とI/O動作を再開するための手動介入の必要性との両方を最小限に抑えることが可能になる。
【0096】
さらに、一態様では、分散コンピューティング環境内の各ノードは、監視ノードとして指定され得る。例えば、各監視ノードは、本明細書に記載の方法を使用して、第1の管理クエリおよび第2の管理クエリ(必要な場合)をすべての隣接ノードに送信し得る。別の例では、隣接ノードのいずれかが問題があると識別された場合、監視ノードは、問題のあるノード内のすべてのアクティブなリンクをリセットし得る。さらに別の例では、問題のあるノードは、次いで、1つまたは複数のマネージャによって分散コンピューティング環境から除去され得、リセットされ得る。
【0097】
このようにして、分散コンピューティング環境内の監視は、環境内のすべてのノードに分散され得る。これにより、環境内の1つまたは複数のノード故障の影響を軽減することができる。
【0098】
さらに、一態様では、分散コンピューティング環境内の監視ノードは、所定の期間内に所定の数のリセット要求を別のノードに送信することのみを許可され得る。別の態様では、監視ノードによって送信されたリセット要求の数が所定の閾値に達すると、監視ノードは、引き続き監視アクションを実行し得るが、(例えば、所定の時間が経過するまでなど)追加のリセット要求を送信することができない場合がある。このようにして、障害のある監視ノードが、機能している別のノードを不当なリセット要求によって中断するのを防止することができる。
【0099】
また、一態様では、第1の管理クエリと第2の管理クエリはどちらも、優先度の高い帯域内管理クエリであり得るか、または高いSL(サービス・レベル)もしくは高いVL(仮想レーン)レベルを使用し得る。このようにして、環境内のノードの分散監視を優先することによって、分散コンピューティング環境内のデータ通信の問題を最小限に抑えることができる。
【0100】
さらに別の態様では、第1の管理クエリおよび第2の管理クエリは、(送信側ポートと受信側ポートとの間のルーティング・ホップがパケットに記録される)直接ルーティングされたパケット・フォーマットを使用し得る。このようにして、トラフィックをルーティングする能力に影響を与える分散コンピューティング環境内のデータ通信の問題を最小限に抑えることができる。
【0101】
上記の分散監視の結果として、障害のあるオペレーティング・システム機能または障害のあるネットワーク・アダプタおよびアクティブなリンクを有する問題のあるノードは、隔離され得る(例えば、識別され、分散コンピューティング環境から除去され得る)。これにより、分散コンピューティング環境内のこれらの問題のあるノードによって引き起こされる通信バックログが解消される可能性があり、したがって、分散コンピューティング環境内のすべてのノードの機能が向上する可能性がある。
【0102】
次に
図6を参照すると、一態様による、分散コンピューティング環境内に管理ノードを実装するための方法600のフローチャートが示されている。方法600は、様々な態様において、とりわけ
図1~
図4および
図7に示された環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本明細書を読めば当業者には理解されるように、方法600には、
図6に具体的に記載された動作よりも多い動作または少ない動作が含まれ得る。
【0103】
方法600の各ステップは、動作環境の任意の好適な構成要素によって実行され得る。例えば、様々な態様において、方法600は、1つもしくは複数のサーバ、コンピュータ、または中に1つもしくは複数のプロセッサを有する何らかの他のデバイスによって、部分的または全体的に実行され得る。方法600の1つまたは複数のステップを実行するために、ハードウェアまたはソフトウェアあるいはその両方に実装される、好ましくは少なくとも1つのハードウェア構成要素を有する、プロセッサ、例えば、処理回路、チップ、またはモジュール、あるいはその組合せが任意のデバイスにおいて利用され得る。例示的なプロセッサには、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、それらの組合せ、または当技術分野で知られている任意の他の好適なコンピューティング・デバイスが含まれるが、これらに限定されない。
【0104】
図6に示すように、方法600は、動作602で開始することができ、第1の管理クエリは、分散コンピューティング環境の第1のノードから分散コンピューティング環境の第2のノードに送信され、第1の管理クエリは、第2のノードのオペレーティング・システムに関連付けられる。さらに、方法600は、動作604に進むことができ、第1のノードにおいて第2のノードから第1の管理クエリへの応答を受信できなかったことに応答して、第2の管理クエリが、第1のノードから、第2のノードに関連付けられた1つまたは複数の通信ポートに送信される。
【0105】
さらに、方法600は、動作606に進むことができ、第1のノードにおいて、第2のノードに関連付けられた1つまたは複数の通信ポートから、第2のノードがアクティブな通信リンクを有することを示す第2の管理クエリへの応答を受信したことに応答して、第1のノードは、アクティブな通信リンクを有する第2のノードの1つまたは複数の通信ポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられた1つまたは複数の通信ポートに送信する。
【0106】
このようにして、第1のノードは、管理ノードとして機能することができ、第2のノードがオペレーティング・システムの問題またはネットワーク・アダプタの問題を有すると同時にアクティブな通信リンクも有するという特定のシナリオを判定したことに応答して、分散コンピューティング環境からの第2のノードの除去をトリガし得る。これにより、第2ノードによって引き起こされる分散コンピューティング環境内のネットワーク輻輳が解消される可能性があり、それによって、分散コンピューティング環境内の第1ノードおよび他のすべてのコンピューティング・ノードの性能が向上する可能性がある。
【0107】
一態様では、分散コンピューティング環境内の第1のノードおよび第2のノードとともに複数の追加のノードが含まれ得る。別の態様では、分散コンピューティング環境内の各ノードは、第1の管理クエリおよび第2の管理クエリを利用して隣接ノードを監視し得る。
【0108】
図7は、例示的な一態様に示されるような、例示的な分散コンピューティング・ネットワーク700を示す。図示のように、分散コンピューティング・ネットワーク700は、複数のノード702A~Eを含む。一態様では、ネットワーク700内に、複数のノード702A~Eよりも多いまたは少ない数のノードが含まれ得る。
【0109】
さらに、一態様では、複数のノード702A~Eは、ネットワーク接続704A~G、708A~Bを介して相互接続されている。一態様では、ネットワーク接続704A~G、708A~Bは、高速で低レイテンシのデータ接続(例えば、ファスト・イーサネット(R)接続、インフィニバンド接続、ハードウェア・レベル接続など)を含み得る。
【0110】
さらに、複数の通信スイッチ706A~Bは、ノード702Aおよび702Bの第1の部分と第2のノード702Cとの間の通信を可能にする。例えば、通信スイッチ706A~Bは、ノード702Aおよび702Bの第1の部分と第2のノード702Cとの間でデータを中継し得る。また、通信スイッチ706A~Bは、クロス・スイッチ・ネットワーク接続708A~Bを介して通信して、ノード702Aおよび702Bの第1の部分と第2のノード702Cとの間の通信/監視を容易にする。
【0111】
さらに、一態様では、複数のノード702A~Eのそれぞれは、分散コンピューティング・ネットワーク700内の監視ノードとして機能し得、その隣接ノードと通信して、そのようなノードのステータスを決定し得る。例えば、監視ノード702Cは、その第1の隣接ノード702Dと直接通信して、その隣接ノード702Dのステータスを決定し得る。さらに、監視ノード702Cは、通信スイッチ706A~Bを介して追加の隣接ノード702Aおよび702Bと通信して、それらのステータスを決定し得る。
【0112】
例えば、監視ノード702Cは、第1の管理クエリをその隣接ノード702Dに直接送信し得、第1の管理クエリは、受信側ノードのオペレーティング・システムに関連付けられる。隣接ノード702Dからの第1の管理クエリへの応答の受信に失敗した後、監視ノード702Cは、隣接ノード702Dに関連付けられたポートに第2の管理クエリを送信し得る。
【0113】
また、監視ノード702Cにおいて、隣接ノード702Dがアクティブな通信リンクを有することを示す応答を、隣接ノード702Dに関連付けられたポートから受信したことに応答して、監視ノード702Cは、アクティブな通信リンクを有する隣接ノード702Dのポートをリセットするよう求めるリンク・リセット要求を、第2のノードに関連付けられたポートに送信し得る。監視ノード702Cからリンク・リセット要求を受信したことに応答して、隣接ノード702Dに関連付けられたポートは、隣接ノード702D内のすべてのアクティブなリンクをリセットし得る。次いで、分散コンピューティング・ネットワーク700のグリッド・マネージャまたはファブリック・マネージャは、分散コンピューティング・ネットワーク700から隣接ノード702Dを除去し得る。
【0114】
監視ノード702Aはまた、通信スイッチ706A~Bを介して、第1の管理クエリをその追加の隣接ノード702Bおよび702Cに間接的に送信し得る。通信スイッチ706A~Bのいずれかを介してその追加の隣接ノード702Bおよび702Cによって第1の管理クエリへの応答を受信したことに応答して、監視ノード702Aは、その監視スケジュールが別の第1の管理クエリがその追加の隣接ノード702Bおよび702Cに再び送信される予定であることを示すまで、さらなるアクションをとらない場合がある。例えば、監視ノード702Aは、ネットワーク接続704A~Bを介した第1の管理クエリを使用して、隣接ノード702Bに照会し得る。第1の管理クエリへの応答を受信すると、監視スケジュールが監視ノード702Aの監視を再開するまで、監視ノード702Aによってさらなるアクションをとらない場合がある。
【0115】
第1の管理クエリへの応答を受信できなかったことを識別すると、ネットワークリンク704Bがアクティブであるかどうかを判定するために、ネットワーク接続704Aを使用して第2の管理クエリが送信され得る。さらに、監視ノード702Aによって、ネットワーク接続704F~Gを使用して第1の管理クエリが繰り返され、応答が受信されない場合、リンク704Gがアクティブであるかどうかを判定するために、ネットワーク接続704Fを介して第2の管理クエリが繰り返される。(ネットワーク接続704A~Bおよび704F~Gを介した)第1の管理クエリを使用した両方の調査が失敗し、第2の管理クエリを使用して、ネットワーク接続(704Bまたは704G)のうちの少なくとも1つがアクティブであることが判明した場合、ノード702Bは問題があるとしてフラグ付けされることになる。ノード702Bが、問題があるとして検出されると、ネットワーク接続704Aおよび704Fを使用して、ネットワーク接続704Bおよび704Gをリセットするよう求めるリセット追求を送信することができる。
【0116】
このようにして、複数のノード702A~Eのそれぞれは、分散コンピューティング・ネットワーク700内の監視ノードとして機能し得、分散コンピューティング・ネットワーク700内の任意の問題のあるノードの除去をトリガし得、それによって、分散コンピューティング・ネットワーク700内の残りのノードの性能を向上させる。
【0117】
次に
図8を参照すると、一態様による、分散コンピューティング環境内でノード監視を実行するための方法800のフローチャートが示されている。方法800は、様々な態様において、とりわけ
図1~
図4および
図7に示された環境のいずれかにおいて本発明に従って実行され得る。当然ながら、本明細書を読めば当業者には理解されるように、方法800には、
図8に具体的に記載された動作よりも多い動作または少ない動作が含まれ得る。
【0118】
方法800の各ステップは、動作環境の任意の好適な構成要素によって実行され得る。例えば、様々な態様において、方法800は、1つもしくは複数のサーバ、コンピュータ、または中に1つもしくは複数のプロセッサを有する何らかの他のデバイスによって、部分的または全体的に実行され得る。方法800の1つまたは複数のステップを実行するために、ハードウェアまたはソフトウェアあるいはその両方に実装される、好ましくは少なくとも1つのハードウェア構成要素を有する、プロセッサ、例えば、処理回路、チップ、またはモジュール、あるいはその組合せが任意のデバイスにおいて利用され得る。例示的なプロセッサには、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、それらの組合せ、または当技術分野で知られている任意の他の好適なコンピューティング・デバイスが含まれるが、これらに限定されない。
【0119】
図8に示すように、方法800は、動作802で開始することができ、次のパスを介してリモート・ノードが調査される。一態様では、リモート・ノードは、監視ノードの隣接ノードを含み得る。さらに、方法800は、決定804に進むことができ、調査ステータスが確認される。決定804において、調査への応答が監視モジュールによって受信されたと判定された場合、方法800は動作806に進むことができ、次のサイクルが準備される。例えば、調査すべき次のパスが更新され得、失敗カウントがゼロに設定され得、現在の隣接ノードについてオペレーティング・システム(OS)調査ステータスが保存され得、次の調査サイクルに通常の遅延が使用され得る。
【0120】
さらに、決定804において、調査への応答が監視モジュールによって所定の期間内に受信されなかったと判定された場合、方法800は決定808に進むことができ、隣接ノードについてリンク・ステータスが確認される。決定808において、調査エラーが存在すると判定された場合、方法800は動作806に進むことができ、次のサイクルが準備される。関連付けられたリモート・ポート(例えば、スイッチのポート)のステータスの調査に失敗することは、この方法(この方法はエンドポイント・ノードの故障を処理する)では処理されない別の一過性の(または非一過性の)問題がネットワーク・ファブリック内に存在することを示し得る。したがって、通常のタイムアウト後に監視が再開されることになる。
【0121】
さらに、決定808において、リンク・ステータスがアップまたはダウンであると判定された場合、方法800は決定810に進むことができ、追加のパス(例えば、監視ノードの隣接ノードへのパスなど)が存在するかどうかが判定される。決定810において、追加のパスが存在すると判定された場合、方法800は動作812に進むことができ、次のパスが更新され、次いで、方法800は動作802に進むことができ、次のパスを介してリモート・ノードが調査される。
【0122】
さらに、決定810において、追加のパスが存在しないと判定された場合、方法800は決定814に進むことができ、アクティブなリンクがリモート・ノード内に見られるかどうかが判定される。決定814において、アクティブなリンクが見られないと判定された場合、方法800は動作806に進むことができ、次のサイクルが準備される。決定814において、アクティブなリンクが見られると判定された場合、方法800は、動作816に進むことができ、リモート・ノードの失敗カウントが増分される。
【0123】
また、方法800は、決定818に進むことができ、リモート・ノードの失敗カウントが所定の閾値に達したかどうかが判定される。決定818において、失敗カウントが閾値に達したと判定された場合、方法800は動作820に進むことができ、リモート・ノード内のリンクがリセットされ、次いで、方法800は動作806に進むことができ、次のサイクルが準備される。一態様では、リンク・リセットを実行する監視ノードは、リンク・リセットを実行する能力が監視ノードに対して無効になる前に、限られた数のリンク・リセットを実行し得る。
【0124】
さらに、決定818において、失敗カウントが閾値に達していないと判定された場合、方法800は動作822に進むことができ、次のサイクルについての準備が行われ、次いで、方法800は動作802に進むことができ、次のパスを介してリモート・ノードが調査される。例えば、次のサイクルを準備することは、次のパスを更新すること、OS調査ステータスを保存すること、および次のサイクルに対してより小さい遅延を使用することを含み得る。
【0125】
このようにして、ファブリック内のノードは、ファブリック内の隣接ノードを監視し得、ファブリック内の問題のあるノードの除去をトリガし得、それによって、ファブリック内の残りのノードの性能を向上させる。
【0126】
相互接続ファブリック内の非応答ポートを隔離する
【0127】
一態様では、ネットワーク上に存在すると見られる誤動作しているノードを検出するためのメカニズムが提供される。最新のエンタープライズ・アプリケーションはしばしば、高速相互接続ファブリックで相互接続された複数のグリッド・ノードがアプリケーション・サービスを提供するグリッド・アーキテクチャを展開する。ファスト・イーサネット(R)、インフィニバンド、またはファイバ・チャネルは、例示的な相互接続ソリューションである。エンタープライズ・アプリケーションの複雑な要件により、様々なプロトコルが相互接続ファブリック上に展開される。
【0128】
イーサネット(R)またはTCP/IPのような従来のプロトコルは、性能、負荷分散、およびデータ配信の保証に関するアプリケーション要件を満たすのに十分でない場合がある。アプリケーションは、ハードウェア・レベル接続およびRDMA(リモート・ダイレクト・メモリ・アクセス)転送を可能にする相互接続プロトコルに切り替える。インフィニバンドおよびDCBイーサネット(R)(データ・センタ・ブリッジング)・ファブリックにおいては、HCA(ホスト・チャネル・アダプタ)レベルで実装され、RDMAプロトコルを使用する、信頼性の高いピア・ツー・ピア接続が可能である。
【0129】
様々なDCB技術は、CEE(コンバージド・エンハンスド・イーサネット(R))またはロスレス・イーサネット(R)という用語でも知られている。グリッド・アーキテクチャ・ソリューションは、拡張性と高可用性との両方をサポートする。ファブリックにノードを追加することによってグリッドを拡大することができ、ノードが故障した場合、グリッド・クラスタ全体が、グリッド内の残りのノードへの負荷を入れ替えることができる。故障したノードの問題が解決されると、以前に故障したノードを含めるように、グリッドを再び拡大することができる。
【0130】
作業分散を管理し、グリッドのヘルス・ステータスを監視するために、管理ソリューションが展開される。管理ソリューションは、典型的には、データ・ファブリックまたは低速の専用サイド・ネットワーク・チャネルのいずれかにわたる通信用にTCPプロトコルを展開する。典型的には、すべてのノードが、グリッドのマネージャと通信し、キープ・アライブ・メッセージまたはヘルス・メッセージを交換する。ノードが故障を報告した場合、または定義された期間中に管理ネットワーク上にノードが表示されなかった場合、グリッドのマネージャは、ノードを故障したノードとして宣言することができる。グリッド内のすべてのノードが互いに通信する場合、多数決を使用するTCPプロトコルを用いてマネージャを選出することもできる。
【0131】
ファブリック内の新しいノードを発見および構成し、ネットワークからのそれらの消失を適時に処理するために、ファブリック管理ソリューション(例えば、サブネット・マネージャ)をグリッド・クラスタ上に展開することができる。ファブリック・マネージャは、ファブリック、ノード、およびポートの定期的な発見を実行することができ、新しいポートの追加および既存のポートの消失を処理することができる。
【0132】
最新の高速相互接続ソリューションは、1ポートあたり100~200ギガビットの速度をサポートする。このような速度では、物理リンクの問題が発生せず、エラーに遭遇することなく正しい速度をネゴシエートすることが可能なポートは、同じ速度でデータを消費できない場合、ネットワーク・ファブリックおよびアプリケーション・フローにおいて急速に輻輳を引き起こすことになる。例えば、HCAは、PCI転送に関するハードウェアの問題を有するため、またはそのDMAハードウェアが誤動作しているため、ホスト・メモリへのデータの転送に関する問題を有する可能性がある。
【0133】
ノード全体が誤動作し、システム・ファームウェアがハードウェア障害の処理中にオペレーティング・システムの実行をプリエンプトした場合にも、同様の問題が発生する可能性がある。障害ハンドラの実行にかなりの時間がかかる場合、ネットワーク・アダプタのキューは急速に満杯になり、新しいパケットを受信することが不可能になる。一方、ローカルまたはリモートのHCAの誤動作により、アプリケーションが必要とされる整合性および速度でデータを送受信できない場合、アプリケーションは、トランザクションを完了できない可能性がある。
【0134】
具体的には、ストレージ・グリッド・ソリューションでは、(例えば、新しいノードの追加、既存のノードの削除、ボリュームの作成または削除、スナップショットの取得などにより、ストレージの分散が変化した場合)グリッド・クラスタ全体で特定のトランザクションを同期する必要がある。これが発生すると、グリッド内のすべてのノード間で分散が同期されるまで、クライアントからの新しいストレージ・トランザクションを続行することができる。このようなトランザクション中にノードが滞留した場合、マネージャは、クライアントIOを続行できるようにするために、滞留したノードを迅速に識別して故障と判定する必要があり得る。
【0135】
アクティブ状態のリンクを有するクラッシュしたノードが存在するためにファブリック全体が誤動作すると、状況は極めて重大になる。相互接続ファブリック内に、アクティブなリンクを有するクラッシュしたノードが存在することは、十分にテストされた状況ではない。多くの実際の故障シナリオでは、オペレーティング・システムを実行できない場合、相互接続リンクがすぐにダウンする可能性がある。多くの相互接続ファブリックは、ハードウェア・クレジット・フロー制御メカニズムを使用し、キューの先頭のパケットおよび送信キュー内のすべてのパケットについてタイムアウトを有する、信頼性の高いネットワークである。転送規格は、ネットワークに存在するがパケットを送受信することができない構成要素に対処する。
【0136】
規格は、誤動作している構成要素(例えば、データを受信できないためにクレジットを解放していない構成要素)の存在がファブリック全体を長期間ブロックして崩壊に至らないように定義されている。例えば、インフィニバンド・ネットワークでは、パケットは、スイッチ・ポートの送信キューに2~2.5秒よりも長く滞留することはない。したがって、クラッシュしたエンドポイントによってすべてのスイッチ・ポート・クレジットが消費された場合、スイッチ・ポートはその期間内に送信クレジットを再び提供することが可能になる。
【0137】
しかしながら、ソフトウェアのある部分がクリティカル・セクション内にあり、クリティカル・セクションを離れるために、エラーが発生するか成功するまで故障した接続先と何度も通信する必要がある場合、故障した構成要素によってすべての送信ポート・クレジットが繰り返し消費されるので、(クラスタ・グリッド論理のような)ソフトウェアの他の部分が通信できなくなる可能性がある。したがって、クリティカル・セクションに関連付けられた通信は、故障を検出してその故障をグリッド全体に通信し得る他のトラフィックをブロックするので、ソフトウェアは、(クリティカル・セクションにあるため)I/Oサービスを提供することも、クリティカル・セクションを中止することもできない。
【0138】
さらに、実際のテストは、信頼できるネットワーク保証および転送規格で言及されていることがあるにもかかわらず、既存のスイッチおよびノードでは、リンクは存在するがパケットを受信できないファブリック内の誤動作しているポートにうまく対処できないことを示している。したがって、ファブリック内の不正な動作をしている1つのポートが、グリッド・クラスタ全体を停止させる可能性がある。したがって、アプリケーションが続行できるようにするには、ファブリック内の非応答ポートを故障と判定する(検出して隔離する)ための方法が必要である。
【0139】
一態様では、相互接続ファブリック内の非応答ポートを隔離できる分散ファブリック管理ソリューションを実装するための方法が提供される。ファブリック内の各ノードは、冗長性の監視が実現されるように、1つまたは複数の隣接ポートを監視する役割を果たす。監視は、配信優先度が高くオペレーティング・システム内で終了するファブリック管理クエリを使用して行われる。
【0140】
リンクの存在の監視もまた、スイッチまたはアダプタ・ファームウェアで終了し得る、スイッチ(またはスイッチがない場合は接続されたエンドポイント)への優先度の高いクエリ・ファブリック管理クエリを使用して行われる。ノード・ポートがアクティブなリンクを有するが、アクティブなリンクがいずれも、オペレーティング・システムで終了した管理クエリに応答しない場合、ノード内の問題が検出される。
【0141】
問題が確実に検出されると、監視エージェントは、リンクをリセットするようスイッチに要求する(または、ポイント・ツー・ポイント・スイッチレス・ファブリック内のローカル・リンクのリセットを求める)。ファブリック管理ソリューションは、発見されたリンクを有するノードがOSレベルで応答した場合にのみ、データモードでのリンクのアクティブ化が可能であるようなものである。したがって、問題のあるリンクは、オペレーティング・システムが回復するまで、データ転送に対して非アクティブのままとなる。
【0142】
分散監視ソリューションが提供される。各ノードは2つ以上の隣接ノードを監視し、冗長性の監視が実現される。このソリューションは、オペレーティング・システムによって終了されるSMINFO管理発見属性を実装する。管理クエリの優先度の高い送信は、相互接続ファブリックによって保証される。各監視パーティは、次のように、その隣接の定期的な発見を行う。
【0143】
1.OSで終了する管理属性を用いて、隣接ポートが照会される。少なくとも1つの隣接ポートが返答するとすぐに、調査は成功し、完了する。
【0144】
2.いずれのポートも返答しない場合、監視ノードは、物理リンクの存在について隣接のすべてのポートを調査する。スイッチド・ネットワークに対するクエリの場合はスイッチが使用され、ポイント・ツー・ポイント・リンクの場合はローカル・ポート・クエリが使用される。リンクを有するポートが少なくとも1つ見つかると、クエリは中止される。
【0145】
3.a)どのポートもSMINFOクエリに返答せず、ノードの少なくとも1つのポートが物理リンクを有する場合、ノードは問題のあるノードとしてフラグ付けされる。
【0146】
通常の動作条件下では、より長い監視間隔が使用される。問題が検出されると、監視間隔は短くなる。問題検出のタイムスタンプが記録され、イベントとともに報告される。問題の繰り返しの検出(構成可能な所定の数が使用される)が行われた後、回復アクションが実行される。
【0147】
回復アクションは、スイッチド・ファブリック上のスイッチに対するコマンド、およびポイント・ツー・ポイント・スイッチレス・ファブリック内のローカル・ポートに対するコマンドを使用して、ノード・リンクをリセットすることになる。回復アクションのタイムスタンプが記録され、イベントを介して報告される。任意の監視ステップの成功が、繰り返される故障検出カウンタをゼロにリセットすることになる。ゼロ以外の値からゼロ値への切り替えのタイム・スタンプも記録され、イベントを介して報告される。
【0148】
監視は、ノード単位で有効または無効にされることが可能であり、ビュレット(bullet)・メカニズムを有効にすることもできる。有効にすると、限られた数の回復アクションのビュレットが各モニタに与えられる。アクションのビュレットが消費されると、これらのビュレットは、定義された期間が経過した後にのみ補充される。これにより、モニタは、定義されたタイム・スライス中に定義された回数以内だけ監視対象ノードのリンクをリセットすることが可能になる。ビュレットが消費されると、監視は一時停止されず、リンク・リセット・アクションをとることなくすべての遷移イベントの時間が記録および報告される。
【0149】
このソリューションは、(分散されているため)ノード故障に耐性があり、(優先度の高いファブリック管理トラフィックを使用しているため)データ通信の崩壊にも耐性がある。このソリューションはまた、(複数の調査を使用しているため)通信損失の偽陽性検出を回避し、(リンク調査とオペレーティング・システム調査との両方を使用しているため)通信の存在の偽陰性検出を回避する。
【0150】
同時に、このソリューションは、非応答ポートを検出し、アプリケーション故障とファブリック崩壊との両方を回避するのに十分な短時間で回復アクションを実行することが可能である。偽陽性検出が発生した場合でも、重大な影響はないと予想される。すなわち、リンクが再ネゴシエートされると、リセットされたリンクを有するノードは、(ファブリック管理コマンドに応答するか、またはファブリックへの参加を開始することができるため)ファブリックに参加し、I/O動作を再開することになる。
【0151】
クラッシュしたモジュールに対するインフィニバンド・ポートの隔離
【0152】
一態様では、A9000グリッド・ストレージ・アーキテクチャにおいて、モジュールはストレージ・グリッドのビルティング・ブロックである。モジュールは、CPU、メモリ、周辺デバイスを有し、XIV(XIVはIBM Corporationの商標です。)ストレージ・ソフトウェアを実行するサーバである。XIVストレージ・ソフトウェアは、Linux(LinuxはLinus Torvaldsの商標です。)オペレーティング・システムおよびXIVストレージ・サービスに基づいており、ユーザ空間およびカーネル空間において実行される。
【0153】
別の態様では、クラッシュしたノードは、ハードウェアまたはソフトウェアの誤動作に起因してXIV OSおよびストレージ・サービスを実行することが不可能なモジュールを含む。別の態様では、A9000グリッド・ストレージは、インフィニバンド相互接続を使用して、スイッチド・トポロジまたはスイッチレス(ポイント・ツー・ポイント)・トポロジ内のモジュール間で通信する。
【0154】
さらに別の態様では、ポート隔離は、ストレージ・グリッドの残りの部分とのデータ通信が不可能である方法で、(例えば、クラッシュしたモジュール上の)IBポートをシャット・ダウンすることを含み得る。
【0155】
さらに別の態様では、IBファブリックは、エンドポイント(モジュール上のIBポート)がデータを交換することを可能にする、スイッチ、エンドポイント、およびリンクの高速インフィニバンド・ネットワークを含み得る。例えば、A9000システムは、モジュール間で56ギガビットのIBリンクを使用し、ラック構成ではモジュールごとに2つのIBポートを有し、POD構成ではモジュールごとに4つのIBポートを有する。別の例では、ラックA9000システムは、モジュールとバックエンド・ストレージを接続する2つのインフィニバンド・スイッチを有し、POD A9000システムは、モジュールとバックエンド・ストレージとの間のポイント・ツー・ポイント接続を使用する。
【0156】
さらに、一態様では、統合管理コントローラ(IMM)は、待機電力でも動作し続けるA9000モジュール内の専用ボード(CPU+メモリ+IOデバイス)を含み得る。IMMは、独自のオペレーティング・システム、ならびにリモート管理およびハードウェア診断を可能にする一連のソフトウェア・サービスを実行し得る。
【0157】
さらに、一態様では、IMMと通信しているUFI BIOSを想定すると、サーバCPU上で実行されているUFIシステム・ファームウェアが、サーバの起動を担当する。ファームウェアは、ハードウェア・イベントが発生したとき、またはタイマがトリガされたときにUFIコードの実行をトリガする、一連の例外ハンドラおよびタイマをインストールする。UFIファームウェアは、そのハンドラが実行されているとき、オペレーティング・システムの実行をプリエンプトする。次いで、UFIファームウェアは、IMMと通信し、エラー収集タスク、およびサーバをリセットするためのタスク、サーバをシャット・ダウンするためのタスク、またはサーバの電源を再投入するためのタスクを実行するようIMMに要求することができる。(メモリ・エラーまたはPCIEエラーのような)ハードウェア・エラーが発生すると、UFIは、データを収集し、サーバの電源を切るか再投入するかの決定を試みる場合がある。故障シナリオによっては、これらのタスクはかなりの時間を要する場合があり、その結果、アクティブ状態のIBリンクを有するモジュールが動作しなくなる。
【0158】
さらに、インフィニバンド環境では、管理データグラム(MAD)を使用して、ファブリックを発見および構成し、リモートのハードウェア・コマンドまたはソフトウェア・コマンドを実行する。各MADは、クラス、メソッド、属性、および属性修飾子によって定義されたフレーミングを有する。クラスは、特定のアプリケーションで使用するためのコマンドの範囲を定義する。サブネット・マネージャ用のSM(サブネット・マネージャ)クラスおよびSA(サブネット管理)クラス、監視用の性能クラス、接続管理用のCMクラスなどである。メソッドはアクセスのタイプ(例えば、GetまたはSet)を定義する。属性はクラス内のコマンドを定義し、修飾子はコマンド・パラメータを定義する。
【0159】
また、一態様では、サブネット・マネージャは、インフィニバンド・ファブリック内のエンドポイントのうちの1つで実行されているソフトウェア・エンティティを含む。サブネット・マネージャは、(例えば、リンクの管理および構成、ユニキャストおよびマルチキャストのルーティング・テーブルの切り替えなどを実行することによる)インフィニバンド・ファブリックの発見および構成、ならびにサブネット管理サービス(例えば、マルチキャスト・グループ管理およびファブリック・クエリ)の提供を担当する。サブネット・マネージャは、SM MADデータグラムを使用して発見および構成を実装し、SA MADデータグラムを使用してSAサービスを実装する。
【0160】
別の態様では、アクティブなIBポートは、現在のIBリンクを有し、高速で信頼できるプロトコルを使用するデータ転送用に構成された、インフィニバンド・ポートを含む。これらは、アクティブなIBリンクを有するポートとも呼ばれる。
【0161】
表1は、例示的な一態様による、例示的なクラッシュ検出APIを含む。
【0162】
【0163】
【0164】
end_point_crash_detect_loop()APIの呼び出しは、単一のモジュール(サーバ)を監視し、コンテキスト引数は、監視パラメータおよびアドレス指定情報を定義する。
【0165】
コンテキスト・フィールドの意味は次の通りである。
・params - 監視パラメータ。構造および監視APIは、監視パラメータを、監視コンテキストとは異なるスレッド・コンテキストから変更できるように定義されている。フィールドの意味は次の通りである。
・probe_interval_ms - 最初の、または良好なping後の最初の(ミリ秒単位での)監視間隔
・failed_probe_interval_ms - pingの失敗が検出された後のミリ秒単位の監視間隔
・link_probe_to_ms - リンク調査コマンドのMADタイムアウト
・os_probe_to_ms - OSpingコマンドのMADタイムアウト
・link_reset_to_ms - リンク・リセット・コマンドのMADタイムアウト
・allowed_fail_cnt - モジュール・リンクがリセットされる前にOS pingコマンドが連続して失敗した回数(pingが失敗したが、リンクのうちの少なくとも1つがACTIVEとして検出された場合にのみ、ヒットとしてカウントされる)
・allowed_bullets - bullet_lease_sec期間ごとに許可されるリセットの回数
・bullet_lease_sec - この時間中に許可されるリセットの回数(allowed_bullets)を定義する時間スパン。
・port_path - 監視対象モジュールへのパス・パラメータ。ラック・システムは2つのパスを有し(接続先の両方のポートを調査することができる)、PODシステムは単一のパスを有する(接続先の単一のポートを監視することができる)。各パス定義におけるフィールドの意味は次の通りである。
・dr_path_port - 接続先ポートへのダイレクト・パス。ネイティブのアラインされた型(1、2、4、8バイト)を使用してパスを設定し読み取る場合、このパスは、監視コンテキストとは異なるスレッド・コンテキストから安全に修正され得る。この理由は、監視コードが、各監視サイクルの開始時にパスをプライベート・データ構造にコピーし、変更前のパス定義でも変更後のパス定義でも、一貫したパス定義を使用することになるからである。
・dr_hop_cnt - ダイレクト・パスのホップ数を定義する。
・rem_port - リンクに照会するために使用されるポートを指定する。このポートは、監視対象モジュールの1ホップ前の接続先に属する。RACKシステムでは、これはアドレス(スイッチ・ポート)における最後のホップと同じである。PODシステムでは、これは不明であり、定義されなければならない。
・mad_handle - 指定されたリモート・ポートに到達するために使用する必要があるローカルMADデバイスを指定する。
・actual_fail_cnt - 連続してOS pingに失敗した調査の数 - 0からallowed_fail_cntまで変化する。このフィールドの値は、最初に成功したOS pingの後に0にリセットされ、最初に失敗したOS pingの後に増分し始める(OS pingが失敗し、リンクのうちの少なくとも1つがアクティブである場合にのみ、値が増加する)。
・used_bullets - 最初に許可されたリセットが行われた時点からの(bullet_fire_stamp以降の)リンク・リセットの回数(最初のリセットを含む)。bullet_lease_sec後に0にリセットされる。
・bullet_fire_stamp - 許可された時間枠内に最初のリンク・リセットが発行された時刻、またはゼロ。
・os_probe_state_change_cb - 最初のpingが成功または失敗したときに呼び出されるコールバック。パラメータprobe_okは、OS調査ステータスが失敗へ遷移するかOKへ遷移するかを指定する。NULL値は、コールバックが呼び出されないことを意味する。
・link_reset_cb - リンクをリセットするとの決定がなされたときに呼び出されるコールバック。パラメータreset_calledは、リセットが行われたか、(ビュレットがなくなったために)行われなかったかを指定する。NULL値は、コールバックが呼び出されないことを意味する。
・os_probe_ok - 最後の反復中のOS調査の状態。
・single_port - 監視対象モジュールが1つのパス(PODの場合のように、ポイント・ツー・ポイント接続)を有するか、(RACKの場合のように)2つのパスを有するかを定義する。監視コードはこの値を考慮に入れる。
・next_first_path - 次の反復中に最初にどのパス・インデックス(0または1)を調査するかを定義する。このフィールドは、監視コードによって更新される。
【0166】
コンテキスト構造は、異なるコンテキストから容易にアクセス可能であるように定義され、これにより、監視コンテキストへの「トレース」ウィンドウが可能になる。end_point_crash_detect_loop()APIの呼び出しは、単一の接続先モジュールを継続的に監視する。監視フローは以下の通りである。監視が開始される前に、監視パラメータおよびアドレス指定情報が監視コンテキストで設定される。使用されたビュレットの値および最初のビュレット・スタンプはゼロに設定され、調査する次のパス・インデックスの値も同様にゼロに設定される。os_probe_okの値は、真に設定される。
【0167】
1.監視ループが開始されると、監視ループは、最初にアドレス情報をプライベート・データ構造にコピーする。
【0168】
2.次いで、監視ループは、リモート・モジュールのOSステータス、およびステータスまたはリモート・モジュールのIBリンクのテストに進む。調査は、次のパス・インデックス(next_first_path)によって識別されるダイレクト・パスおよびMADハンドルを使用して実行される。OS調査は、os_probe_to_msに等しいタイムアウトの値を使用して、sm_info_ping()APIを使用して実行される。OS pingが成功した場合、リモート・ポートがリンクを有し、リモートOSが活動していると結論付けられる。OS pingがタイムアウトした場合、コードはリンクの状態の判定に進む。リンクは、以前に使用されたパスの1ホップ前である接続先のポートrem_portに対するquery_port_info()APIを使用して確認される。リンク確認は、同じMADハンドルを使用し、タイムアウトの値はlink_probe_to_msに等しい。
【0169】
3.監視コードは、リモート・モジュールの調査ステータスを検査する。OS調査が成功した場合、コードはステップ4に進む。OS pingが失敗し、リンクの調査が失敗を返した場合、コードはステップ5に進む。最後の判定は、偽陽性検出を最小限に抑えることを目指し、リンクの最も近い側(RACKシステムの場合はスイッチ、またはPODシステムの場合はモジュール)がMADエラーの原因にならないようにする設計点である。OS pingが失敗し、リンクの調査が成功を返した場合、コードはステップ6に進む。
【0170】
4.OS pingステータスが成功した場合、コードは、os_probe_state_change_cbコールバックを呼び出すかどうかを確認する。コールバックは、その値がNULLではなく、os_probe_okの値が偽である場合に呼び出される。その後、コードは次のステップ5に進む。
【0171】
5.このステップにおいて、コードは新しい監視サイクルを開始する準備をする。single_portが指定されていない限り、コードはnext_first_pathの値を反転させる(0→1および1→0)。その後、コードは、os_probe_okを真値に設定し、actual_fail_cntフィールドをゼロに設定し、probe_interval_msミリ秒後に監視ループを再開し、ステップ1に戻る。
【0172】
6.リンク調査が成功した場合、コードはリンクの状態を検査する。リンクがアクティブである場合、コードはステップ7に進む。リンクがアクティブでない場合、コードはステップ8に進む。
【0173】
7.このステップにおいて、コードはリンク状態がアクティブであると判定しており、アクティブ状態のリンクを有するクラッシュしたOSが存在する可能性がある。次いで、コードは、確認すべき監視対象モジュールへの追加のパスがあるかどうかを確認する。single_portパラメータが設定されている場合、または他のパスがすでに確認されている場合、追加のパスは利用できない。確認すべき追加のパスがない場合、コードはステップ9に進む。追加のパスが利用可能である場合、コードはステップ8に進む。
【0174】
8.このステップは、2つのパスを使用してモジュールを監視するRACKシステムでのみ実行される。このステップにおいて、コードは、OS調査が最初のパスを介して失敗し、最初のパス上のリンクがダウンしているかまたはアクティブ状態であると判定している。監視論理は監視対象モジュールの両方のポートを介して問題を確実に検出することを必要とするので、これは回復アクションを決定するのに十分ではない。したがって、コードはnext_first_pathの値をリセットし、ステップ2に進む。
【0175】
9.このステップにおいて、コードは、os_probe_okの値を偽に設定し、os_probe_state_change_cbコールバックを呼び出すべきかどうかを確認する。コールバックは、その値がNULLではなく、os_probe_okの値が真である場合に呼び出される。その後、コードは次のステップ10に進む。
【0176】
10.このステップにおいて、コードは、監視対象モジュールがアクティブ状態のIBリンクを有するクラッシュしたモジュールであるかどうかの判定を行う。監視対象モジュールに接続するリンクのうちの少なくとも1つがアクティブ状態にある場合、モジュールは、アクティブ状態のIBリンクを有するクラッシュしたモジュールである。モジュールが、アクティブ状態のIBリンクを有するクラッシュしたモジュールではない場合、コードはactual_fail_cntフィールドをゼロにリセットし、ステップ16に進む。それ以外の場合、コードはステップ11に進む。
【0177】
11.このステップにおいて、コードは、アクティブなIBリンクを有するクラッシュしたモジュールが検出されたと判定している。コードは、actual_fail_cntのカウントを増分する。増分された値がallowed_fail_cntの値を下回る場合、コードはステップ16に進む。それ以外の場合、コードはステップ12に進む。
【0178】
12.この時点で、コードは、回復アクション(リンクのリセットが必要である)を決定している。コードは、actual_fail_cntフィールドをゼロにリセットし、used_bullets値がallowed_bullets値を下回るかどうかを確認する。used_bullets値がallowed_bullets値を下回る場合、コードはステップ15に進む。それ以外の場合、コードはステップ13に進む。
【0179】
13.このステップにおいて、コードは現在のタイム・スタンプがbullet_fire_stamp+bullet_lease_secを上回るかどうかを確認する。現在のタイム・スタンプの値がより大きい場合、コードは、used_bullets値をゼロにリセットし、ステップ15に進む。それ以外の場合、コードはステップ14に進む。
【0180】
14.このステップにおいて、コールバックの値がNULLでない場合、コードはreset_calledパラメータの値を偽に設定してlink_reset_cbコールバックを実行し、ステップ16に進む。
【0181】
15.このステップにおいて、コードは回復アクションを実行し、クラッシュしたモジュール上のIBリンクをリセットする。提供されたパス情報を使用して、監視対象モジュールのすべてのIBリンクがリセットされる。リンク状態のクエリと同じパスおよびMADハンドルが使用される。コードは、タイムアウト値link_reset_to_msとともにreset_port()APIを使用する。APIは、SM PortInfo MADのSetメソッドを使用して、リンクの物理プロパティを無効にし、次いで有効にして、リンク・リセットを引き起こす。物理リンクのリセットは、論理(ソフトウェア)層全体に迅速に伝播し、アプリケーションは、接続をリセットして、保留中のIOトランザクションをフラッシュすることが可能になる。さらに、A9000のSM構成要素は、非応答モジュール上のリンクの論理プロパティを有効にしないため、クラッシュしたモジュールの論理リンクはダウンしたままになる。リンクの無効化とは対照的に、回復のリセット方法は、偽陽性検出の影響を最小限に抑えるための設計点である。コードが、ビジー状態だが活動しているモジュールのリンクをリセットする場合、物理リンクがネゴシエートされ、監視対象モジュール上のソフトウェアが応答を開始すると、SM構成要素はIBリンクの論理プロパティを再アクティブ化する。このステップに続いて、コードはステップ16に進む。
【0182】
16.このステップにおいて、コードは、監視タイムアウトを短縮した状態で監視を再開する。single_portが指定されていない限り、コードはnext_first_pathの値を反転させる(0→1および1→0)。その後、コードはfailed_probe_interval_msミリ秒後に監視ループを再開し、ステップ1に戻る。
【0183】
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含み得る。
【0184】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0185】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【0186】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続され得る。いくつかの態様では、本発明の態様を実行するために、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行し得る。
【0187】
本発明の態様は、本発明の態様による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0188】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作り出すように、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置に提供されて、マシンを作り出すものであり得る。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであり得る。
【0189】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであり得る。
【0190】
図中のフローチャートおよびブロック図は、本発明の様々な態様によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われ得る。例えば、連続して示された2つのブロックは、実際には、関与する機能に応じて、1つのステップとして達成されるか、同時に、実質的に同時に、部分的もしくは全体的に時間的に重複する方式で実行されるか、または場合によってはブロックが逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0191】
さらに、様々な態様によるシステムは、プロセッサ、およびプロセッサと統合された論理またはプロセッサによって実行可能な論理あるいはその両方を含み得、論理は、本明細書に記載のプロセス・ステップのうちの1つまたは複数を実行するように構成される。統合されたとは、プロセッサに、論理が特定用途向け集積回路(ASIC)、FPGAなどのハードウェア論理として組み込まれていることを意味する。プロセッサによって実行可能とは、論理が、ハードウェア論理、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのソフトウェア論理、またはプロセッサによってアクセス可能であり、プロセッサによる実行時にプロセッサにいくつかの機能を実行させるように構成された、ハードウェア論理とソフトウェア論理との組合せであることを意味する。ソフトウェア論理は、当技術分野で知られているように、任意のメモリ・タイプのローカル・メモリまたはリモート・メモリあるいはその両方に記憶され得る。ソフトウェア・プロセッサ・モジュールまたはASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィックス処理装置(GPU)などのハードウェア・プロセッサあるいはその両方などの当技術分野で知られている任意のプロセッサが使用され得る。
【0192】
前述のシステムまたは方法論あるいはその両方の様々な特徴を任意の方法で組み合わせて、上記で提示された説明から複数の組合せを作成できることは明らかであろう。
【0193】
本発明の実施形態は、サービスをオン・デマンドで提供するために顧客に代わって展開されるサービスの形式で提供され得ることがさらに理解されよう。
【0194】
本発明の様々な態様の説明は、例示を目的として提示されたものであり、網羅的であること、または開示された態様に限定されることを意図したものではない。記載された態様の範囲および思想から逸脱することなく、当業者には多くの変更形態および変形形態が明らかであろう。本明細書で使用される用語は、態様の原理、実際の適用例、もしくは市場で見られる技術を超える技術的改良を最もよく説明するために、または本明細書に開示された態様を当業者が理解できるようにするために選択されたものである。