(57)【要約】      （修正有）【課題】高可用性ネットワーク・ブート・サービスを自律的に保つ装置、システム、および方法を提供する。【解決手段】モニタ・モジュール５０２、検出モジュール５０４、および置換モジュール５０６から構成され、モニタ・モジュール５０２は、分散論理リンク・リストをアクティブに監視する。検出モジュール５０４は、分散論理リンク・リスト構成の変動を検出する。置換モジュール５０６は、分散論理リンク・リストの故障した要素のネットワーク・ブート・サービスを置換する。本装置、システム、および方法は、オンデマンド・ネットワーク・サービスの保存を自律的に提供し、ネットワーク・ブート・サービスの高可用性を維持する。【選択図】図５
2007183918.tif 000002
【特許請求の範囲】
【請求項１】
分散論理リンク・リストをアクティブに監視するように構成されたモニタ・モジュールと、
前記モニタ・モジュールに結合され、分散論理リンク・リスト構成の変動を検出するように構成された検出モジュールと、
前記検出モジュールと通信する、前記分散論理リンク・リストの故障した要素のネットワーク・ブート・サービスを置換するように構成された置換モジュールと
を含む、高可用性ネットワーク・ブート・サービスを自律的に保つ装置。
【請求項２】
前記モニタ・モジュールに結合された構成モジュールをさらに含み、前記構成モジュールが、前記分散論理リンク・リストを構成し、前記検出モジュールからの信号の受取に応答して前記分散論理リンク・リストを再構成するように構成される、請求項１に記載の装置。
【請求項３】
前記構成モジュールに結合された検証モジュールをさらに含み、前記検証モジュールが、前記分散論理リンク・リストに関連するサーバ連絡リストまたはマスタ・テーブルの一方あるいはその両方を検証するように構成される、請求項２に記載の装置。
【請求項４】
前記構成モジュールに結合された削除モジュールをさらに含み、前記削除モジュールが、前記分散論理リンク・リストに関連するサーバ連絡リストまたはマスタ・テーブルの一方あるいはその両方を削除するように構成される、請求項２に記載の装置。
【請求項５】
前記構成モジュールに結合された更新モジュールをさらに含み、前記更新モジュールが、前記分散論理リンク・リストに関連するサーバ連絡リストまたはマスタ・テーブルの一方あるいはその両方を更新するように構成される、請求項２に記載の装置。
【請求項６】
前記構成モジュールに結合された確認モジュールをさらに含み、前記確認モジュールが、前記分散論理リンク・リストに関連するサーバ連絡リストまたはマスタ・テーブルの一方あるいはその両方の変更を確認するように構成される、請求項２に記載の装置。
【請求項７】
前記モニタ・モジュールに結合された複製モジュールをさらに含み、前記複製モジュールが、マスタ・デプロイメント・サーバに関連するアクティブ管理リソースを複製するように構成される、請求項１に記載の装置。
【請求項８】
アクティブ監視が、前記分散論理リンク・リストに関連するサーバ連絡リストまたはマスタ・テーブルの一方あるいはその両方を事前定義のハートビート間隔内に周期的に検証することを含む、請求項１に記載の装置。
【請求項９】
マスタ・デプロイメント・サーバに関連する管理機能をアクティブ化するか、デプロイメント・サーバに関連するネットワーク・ブート・サービスをアクティブ化するか、その両方を行うように構成されたアクティブ化モジュールをさらに含む、請求項１に記載の装置。
【請求項１０】
副デプロイメント・サーバを主バックアップ・デプロイメント・サーバに昇格させるか、主バックアップ・デプロイメント・サーバをマスタ・デプロイメント・サーバに昇格させるか、その両方を行うように構成された昇格モジュールをさらに含む、請求項１に記載の装置。
【請求項１１】
ネットワーク・ブート・サーバのサービスを保つプロセスを管理するように構成されたマスタ・デプロイメント・サーバと、
前記マスタ・デプロイメント・サーバに結合された、前記マスタ・デプロイメント・サーバの管理機能を複製するように構成された主バックアップ・デプロイメント・サーバと、
前記主バックアップ・デプロイメント・サーバに結合され、複数の接続されたコンピュータ・クライアントにネットワーク・ブート・サービスを供給するように構成された副デプロイメント・サーバと、
前記マスタ・デプロイメント・サーバと通信する、前記ネットワーク・ブート・サービスを保ち、分散論理リンク・リストを維持するために動作を自律的に処理するように構成されたサービス保存ユーティリティと
を含む、高可用性ネットワーク・ブート・サービスを自律的に保つシステム。
【請求項１２】
前記サービス保存ユーティリティが、
分散論理リンク・リストをアクティブに監視するように構成されたモニタ・モジュールと、
前記モニタ・モジュールに結合され、分散論理リンク・リスト構成の変動を検出するように構成された検出モジュールと、
前記検出モジュールと通信する、前記分散論理リンク・リストの故障した要素のネットワーク・ブート・サービスを置換するように構成された置換モジュールと
を含む、請求項１１に記載のシステム。
【請求項１３】
前記マスタ・デプロイメント・サーバ、前記主バックアップ・デプロイメント・サーバ、または前記副デプロイメント・サーバあるいはこれらの組合せが、
マスタ・デプロイメント・サーバとしてのデプロイメント・サーバの昇格の除外を示すように構成された除外インジケータと、
デプロイメント・サーバを分散論理リンク・リスト内でより上位またはより下位に置くための優先順位を示すように構成された優先順位インジケータと
を含む、請求項１１に記載のシステム。
【請求項１４】
前記マスタ・デプロイメント・サーバが、前記分散論理リンク・リストの現在の要素である全メンバを記録するように構成されたアクティブ・マスタ・テーブルを含む、請求項１１に記載のシステム。
【請求項１５】
前記主バックアップ・デプロイメント・サーバが、前記アクティブ・マスタ・テーブルのすべての現在の要素を複製するように構成されたインアクティブ・マスタ・テーブルを含む、請求項１４に記載のシステム。
【請求項１６】
デプロイメント・サーバが、前記分散論理リンク・リスト上で前記デプロイメント・サーバのすぐ上流の要素およびすぐ下流の要素を記録するように構成されたサーバ連絡リストを含む、請求項１１に記載のシステム。
【請求項１７】
高可用性ネットワーク・ブート・サービスを自律的に保つ動作を実行するためにディジタル処理装置によって実行可能な機械可読命令のプログラムであって、前記プログラムがコンピュータに、
分散論理リンク・リストを自律的に監視することと、
前記分散論理リンク・リストの変動を検出することと、
前記分散論理リンク・リストの故障した要素を置換することと
を機能させるプログラム。
【請求項１８】
前記プログラムが、さらに、コンピュータに前記分散論理リンク・リストを構成することと、検出モジュールからの信号の受取に応答して前記分散論理リンク・リストを再構成することとを機能させる、請求項１７に記載のプログラム。
【請求項１９】
前記プログラムが、さらに、コンピュータにマスタ・デプロイメント・サーバに関連するアクティブ管理リソースを複製することを機能させる、請求項１７に記載のプログラム。
【請求項２０】
コンピューティング・インフラストラクチャを展開する方法であって、
クライアント・ハードウェア構成が、
複数のネットワーク・ブート・サーバの分散論理リンク・リストと、
前記複数のネットワーク・ブート・サーバのサービスを保ち、前記分散論理リンク・リストに関連するマスタ・テーブルを維持するプロセスを管理するように構成されたマスタ・デプロイメント・サーバと、
前記マスタ・デプロイメント・サーバのすべての管理機能を複製するように構成された主バックアップ・デプロイメント・サーバと、
ネットワーク・ブート・サービスを複数の接続されたコンピュータ・クライアントに供給し、前記分散論理リンク・リストに関連するサーバ連絡リストを維持するように構成された副デプロイメント・サーバと
を含むことを判定することと、
分散論理リンク・リストを監視し、
前記分散論理リンク・リストの変動を検出し、
前記分散論理リンク・リストの故障した要素を置換する
ように構成された、前記ハードウェア構成用のサービス保存プロセスを実行することと、
無法者（rogue）サーバが前記分散論理リンク・リストにリンクし、接続するのを防ぎ、
無法者サーバがシステム・ネットワークに接続されたクライアントにネットワーク・ブート・サービスを提供するのを防ぎ、
無法者オペレーティング・システムまたは無法者イメージの前記システム・ネットワークへのブートを防ぐ
ように構成されたセキュア高可用性デプロイメント管理ネットワークを提供するために前記システム・ネットワークをアップグレードすることと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・ブート・サービスに関し、具体的には、ネットワーク・ブート可能システム応用例に高可用性を提供すると同時にオンデマンド・ネットワーク・サービスを保ち、維持する方法の自律的提供に関する。
【背景技術】
【０００２】
ブートストラップまたは単にブートとは、コンピュータを始動するプロセスである。ブートストラップは、最も一般的には、ＧＲＵＢまたはＬＩＬＯなどのコンピュータのオペレーティング・システムの初期化を実際に開始する命令のシーケンスと、ＮＴＬＤＲなどのカーネルのロードを開始する命令のシーケンスとを指す。さらに、一部のコンピュータは、ネットワークを介してブートする能力を有する。
【０００３】
ネットワーク・ブートは、リモート・ブートとも称するが、コンピュータまたはクライアント・デバイスが、ローカル・エリア・ネットワーク（ＬＡＮ）などのネットワークを介して、ネットワーク・サーバに置かれたファイルを使用してブートできることを意味する。ネットワーク・ブートを実行するために、クライアント・コンピュータは、ブート・サーバが当業者に周知のネットワーク・ブート・サービス（ＮＢＳ）を実行している間に、ブートＲＯＭなどのファームウェアを実行する。クライアント・コンピュータの電源が投入された時に、ブート・イメージ・ファイルが、ブート・サーバからクライアント・コンピュータのメモリにダウンロードされ、その後、実行される。このブート・イメージ・ファイルに、クライアント・コンピュータ用のオペレーティング・システムまたはオペレーティング・システムをブートする前にクライアント管理タスクを実行するプレオペレーティング・システム（プレＯＳ）アプリケーションを含めることができる。
【０００４】
ネットワーク・ブートは、クライアント・コンピュータの管理に関連する総所有コストを減らすのを助ける。ブート障害は、全体的なコンピューティング障害の大きい部分を含み、リモートから解決するのがむずかしく、時間がかかる可能性がある。さらに、ブート障害は、障害が解決されるまでコンピュータをネットワークに接続できなくする場合があり、ビジネスクリティカル・アプリケーションの高可用性に依存するすべての仕事にとってコストが高い。
【０００５】
ネットワーク・ブートは、コンピュータがそれに対応するならば、ネットワーク上のすべてのコンピュータが、オペレーティング・システムを有するか、損傷を受けたオペレーティング・システムを有するか、未フォーマットのハード・ドライブを有するか、ハード・ドライブを有しないかにかかわりなく、ネットワークに接続できることを保証する。ネットワーク・ブートは、システム管理者が、新しいコンピュータへのアプリケーションおよびＯＳのデプロイメント、ウィルス・スキャン、ならびにクリティカル・ファイルのバックアップおよび復元などのクライアント・デバイス保守タスクを自動化できるようにする。ネットワーク・ブートは、システム管理者が、シン・クライアントおよび組み込みシステムなどのディスクレス・システムをブートできるようにもする。
【０００６】
さまざまなネットワーク・ブート・プロトコルがあるが、現在の産業標準である仕様は、ＰＸＥ（preboot execution environment）仕様であり、これは、ＷｆＭ（wired for management）仕様の一部であり、ＷｆＭは、ビルトイン管理特徴およびネットワークを介する保守機能の一貫したレベルを保証するのを助けるオープン産業仕様である。
【０００７】
ＰＸＥ（preboot execution environment）は、ネットワーク・インターフェースを介してクライアント・コンピュータをブートストラップするプロトコルであり、ハード・ディスク・ドライブなどの使用可能なデータ・ストレージ・デバイスおよびクライアント・コンピュータにインストールされたオペレーティング・システムと独立である。クライアント・コンピュータは、ネットワーク・ブート・ファームウェアをインストールされ、このネットワーク・ブート・ファームウェアが、ネットワーク・ブート・サーバと通信して、ブート・イメージ・ファイルをクライアント・コンピュータ・メモリにダウンロードし、その後、そのブート・イメージを実行する。
【０００８】
ＰＸＥ環境に、一般に、複数のクライアント・コンピュータと同一のブロードキャスト・ドメイン上のネットワーク・ブート・サーバが含まれ、ここで、ネットワーク・ブート・サーバは、ブート・イメージを要求元クライアント・コンピュータにダウンロードするように構成される。クライアント・コンピュータにブート・イメージをダウンロードするこのプロセスは、一般に、動的ホスト構成プロトコル（ＤＨＣＰ）サーバ、トリビアル・ファイル転送プロトコル（ＴＦＴＰ）、およびＰＸＥサービスを利用する。
【０００９】
ＤＨＣＰは、クライアント−サーバ・ネットワーキング・プロトコルである。ＤＨＣＰサーバは、一般に、インターネット・プロトコル（ＩＰ）を使用するネットワークに参加するためにクライアント・コンピュータが必要とする情報を要求するＤＨＣＰクライアント・コンピュータに固有の構成パラメータを供給する。ＰＸＥ環境では、ＤＨＣＰサーバが、クライアント・コンピュータにＩＰアドレスを与える。
【００１０】
ＴＦＴＰは、ＦＴＰの非常に基本的な形の機能性を有する非常に単純なファイル転送プロトコルである。ＴＦＴＰサービスは、ネットワーク・ブート・サーバからクライアント・コンピュータにブート・イメージ・ファイルを転送する。ＰＸＥサービスは、クライアント・コンピュータに、ダウンロードすべきブート・イメージ・ファイルのファイル名を供給する。ＰＸＥサービスは、事前定義のアプリケーション・プログラミング・インターフェース（ＡＰＩ）のセット（コンピュータ・ソフトウェアが互いに通信する形の定義のセット）を用いてクライアント・コンピュータのファームウェアを拡張することができる。
【００１１】
ブート・イメージ・ダウンロード・プロセスは、パケット交換インターネットワークにまたがってデータを通信するソース・ホストおよび宛先ホストによって使用されるデータ指向プロトコルであるインターネット・プロトコル（ＩＰ）、インターネット・プロトコル・スイートのコア・プロトコルであり、最小限のメッセージ指向トランスポート層プロトコルであるユーザ・データグラム・プロトコル（ＵＤＰ）、およびネットワーク・インターフェース・カード（ＮＩＣ）などのすべての互換ネットワーク・インターフェースを操作できるハードウェア独立ドライバであるＵＮＤＩ（universal network device interface）も利用することができる。
【００１２】
ＤＨＣＰ、ＰＸＥ、およびＴＦＴＰなどのプロトコルおよびサービスを使用して実装されるネットワーク・ブート・サービスは、ますます使用可能になりつつある。ＮＢＳ依存性、統合、およびオンデマンド・サービスを増やすという顧客の望みが、劇的な速度で高まっている。ＮＢＳの応答時間およびサービス信頼性を改善する必要が、高まるＮＢＳ統合および使用と共に高まる。ＮＢＳを使用するネットワークは、通常、複数のクライアントと、ＩＢＭ社のＰＸＥベースのＲＤＭ（remote deployment manager）などの管理サーバからなる。ＲＤＭを用いると、管理サーバの制御の下で以前のように機能する複数のデプロイメント・サーバを使用することが可能になる。これらのリモート・デプロイメント・サーバは、主ネットワーク・ブート管理機能を有しておらず、本質的にＲＤＭサーバに対するスレーブとして機能する。
【００１３】
管理されたＰＸＥ環境で、新しいクライアント・ハードウェアがネットワークにブートする時に、そのクライアント・コンピュータは、通常、オペレーティング・イメージを入手するためにそれを行い、その結果、そのクライアント・コンピュータをエンド・ユーザが使用できるようになる。このプロセスは、原理的に、クライアント・コンピュータがネットワークにブートし、ＤＨＣＰサーバからＩＰアドレスを入手し、その結果、クライアント・コンピュータがネットワーク層または７層オープン・システム間相互接続（ＯＳＩ）参照モデルのレベル３でネットワーク上で通信できるようになった時に開始される。このプロセスは、クライアント・コンピュータに、使用可能なブート・サーバのアイデンティティも与える。
【００１４】
次に、クライアント・コンピュータは、クライアント・コンピュータが接続されているのと同一のサブネットワークまたはサブネットすなわちクラスフル・ネットワークの一部分に接続され、これにサービスするブート・サーバを突き止める。したがって、クライアント・コンピュータは、次に、ブート・サーバにさらなる命令を要求することができる。この命令は、通常、クライアント・コンピュータに、要求されたブート・イメージまたはネットワーク・ブートストラップ・プログラム（ＮＢＰ）のファイル・パスを知らせる。最後に、クライアント・コンピュータは、発見されたリソースに連絡し、多分ＴＦＴＰを介して、ＮＢＰをクライアント・コンピュータのランダム・アクセス・メモリ（ＲＡＭ）にダウンロードする。次に、クライアント・コンピュータは、ＮＢＰを検証することができ、その後、ＮＢＰの実行に進むことができる。
【００１５】
イベントのこのシーケンスは、単純である。しかし、これは、ネットワーク機能停止、ハードウェア障害、またはソフトウェア誤動作を考慮に入れていない。まず、サブネットのＰＸＥサーバが使用不能である場合に、そのサブネット上のクライアント・コンピュータを処理することができない。管理サーバが使用不能である場合に、ネットワーク全体のクライアント・コンピュータを処理することができない。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
本発明は、単一障害点がないことを保証することによってＮＢＳ環境を堅くすることのできる方法を説明する。本発明は、ＮＢＳ環境を冗長可能にし、その結果、多数のネットワーク障害、ハードウェア障害、またはソフトウェア障害あるいはこれらの組合せがある場合であっても、ＮＢＳ環境のサービスが使用可能のままになるようにする。オンデマンド環境では、これがクリティカルである。
【００１７】
現在のテクノロジは、冗長複製マスタ・サーバを使用することによって、類似するフォールトトレランスを提供することができる。しかし、どの所与の時にも、少なくとも１つのサーバ、通常は冗長複製マスタ・サーバが、未使用のままになる。その一方で、本明細書で説明するシステムおよび方法は、すべてのネットワーク・リソースの完全な利用を組み込み、システム効率を高めると同時に、ネットワーク・システムの保全性を維持するためにネットワーク・リソースに高い負荷をかけない、高可用性解決策である。
【００１８】
前述の議論から、通常のネットワーク・ブート・サービスの制限を克服する装置、システム、および方法の必要が存在することは明白である。具体的に言うと、そのような装置、システム、および方法は、システム・ネットワーク・ブート・サービスのすべての態様へのアクセス可能性を有益に保ち、維持する。
【課題を解決するための手段】
【００１９】
本発明の複数の実施形態は、技術の現在の状態に応じて、具体的には、現在使用可能なネットワーク・ブート・サービスによってまだ完全には解決されていない当技術分野の問題および必要に応じて開発された。したがって、本発明は、当技術分野における上述の短所の多数またはすべてを克服する、高可用性ネットワーク・ブート・サービスを自律的に保つ装置、システム、および方法を提供するために開発された。
【００２０】
ネットワーク・サービスを保つユーティリティは、ネットワーク・サービスを維持するのに必要な動作を機能的に実行するように構成された複数のモジュールを含む論理ユニットと共に提供される。説明される実施形態のこれらのモジュールに、モニタ・モジュール、検出モジュール、および置換モジュールが含まれる。さらなる実施形態に、構成モジュール、複製モジュール、アクティブ化モジュール、および昇格モジュールが含まれる。
【００２１】
モニタ・モジュールは、分散論理リンク・リストを監視して、分散論理リンク・リストのメンバである複数のデプロイメント・サーバの間の現在の論理関係の正確な表現を保証する。一実施形態で、マスタ・デプロイメント・サーバ、主バックアップ・デプロイメント・サーバ、および１つまたは複数の副デプロイメント・サーバが、分散論理リンク・リストのメンバである。
【００２２】
アクティブ監視に、所定のハートビート間隔内に分散論理リンク・リストの正確さを周期的に検証することが含まれる。さらに、アクティブ監視に、事前定義のハートビート期間内にデプロイメント・サーバのネットワーク・ブート・サービスの保全性を周期的に監視することを含めることができる。ハートビート間隔は、デプロイメント・サーバがそれ自体の代わりのネットワーク・ブート・サービスならびに分散論理リンク・リストですぐ下流のデプロイメント・サーバのネットワーク・ブート・サービスのアクティブなフル機能性をアサートすると期待される時間期間である。
【００２３】
検出モジュールは、分散論理リンク・リストの論理的関連付けの不一致を検出する。一実施形態で、検出モジュールは、マスタ・デプロイメント・サーバが故障し、除去され、または他の形でオフラインになることに応答して、論理チェーン内の不一致を検出することができる。検出モジュールは、主バックアップ・デプロイメント・サーバまたは副デプロイメント・サーバあるいはその両方が故障し、除去され、または他の形でオフラインになることに応答して、論理チェーン内の不一致を検出することもできる。さらに、検出モジュールは、デプロイメント・サーバがシステムに追加されることに応答して、論理チェーンの保全性の不一致を検出することができる。
【００２４】
置換モジュールは、一実施形態で、分散論理リンク・リスト内の故障したデプロイメント・サーバのネットワーク・ブート・サービスを置換する。もう１つの実施形態では、検出モジュールが、故障したデプロイメント・サーバまたはデプロイメント・サーバの故障したコンポーネントの検出に応答して、置換モジュールに信号を送ることができる。次に、置換モジュールが、故障したデプロイメント・サーバのネットワーク・ブート・サービスを肩代わりするようにマスタ・デプロイメント・サーバに通知し、故障したデプロイメント・サーバのサブネットへのネットワーク・サービスを維持することができる。もう１つの実施形態では、マスタ・デプロイメント・サーバが、故障したデプロイメント・サーバのネットワーク・ブート・サービスを、別のアクティブに機能するデプロイメント・サーバに割り当てることができる。したがって、このシステムに接続されたすべてのサブネットへのネットワーク・ブート・サービスの保全性が、ほとんどまたは全くシステム管理者の介入なしで、自律的に保たれる。
【００２５】
構成モジュールは、デプロイメント・サーバの分散論理リンク・リストの論理関連付けを構成する。上で説明したように、構成モジュールに、検証モジュール、更新モジュール、削除モジュール、および確認モジュールが含まれる。構成モジュールは、サービス・プロトコルの保存で示したプロセスに従って動作する。
【００２６】
検証モジュールは、一実施形態で、分散論理リンク・リストの論理関連付けを検証する。マスタ・デプロイメント・サーバが、サーバ連絡リストの内容を検証するように副デプロイメント・サーバに要求することができる。次に、確認モジュールが、検証要求に応答してサーバ連絡リストの正確さを確認することができる。各サーバ連絡リストが論理チェーンの論理関連付けを正確に表すことの確認を論理チェーン内の各デプロイメント・サーバから受信することに応答して、検証モジュールは、アクティブ・マスタ・テーブルの内容を検証することができる。
【００２７】
もう１つの実施形態で、検証モジュールは、分散論理リンク・リストでリンクされたデプロイメント・サーバの可用性を検証する。マスタ・デプロイメント・サーバは、検証モジュールを介して、システムのサブネットにネットワーク・ブート・サービスを供給するために副デプロイメント・サーバの可用性を検証することができる。検証モジュールは、ＰＸＥサーバなどの副デプロイメント・サーバの個々のコンポーネントのアクティブ機能性を検証することもできる。
【００２８】
更新モジュールは、一実施形態で、分散論理リンク・リストの論理関連付けを更新する。マスタ・デプロイメント・サーバは、更新モジュールを介して、論理チェーンでリンクされたすべてのデプロイメント・サーバにマスタ同期パルスを送信することができる。マスタ同期パルスは、このメッセージの発信元をマスタ・デプロイメント・サーバとして示すためにサーバ連絡リストを更新するように副デプロイメント・サーバに要求する。したがって、マスタ・デプロイメント・サーバは、管理リソースおよび分散論理リンク・リストの管理に対するアクティブ制御を日常的にアサートする。デプロイメント・サーバの故障または挿入に起因して、検出モジュールが分散論理リンク・リストの矛盾を検出することに応答して、更新モジュールが、１つまたは複数のサーバ連絡リストを更新する要求を送信することができる。
【００２９】
主バックアップ・デプロイメント・サーバも、故障したマスタ・デプロイメント・サーバの交換に応答して、更新モジュールを介してマスタ同期パルスを送信することができる。もう１つの実施形態で、更新モジュールは、ターゲットを新しい主バックアップ・デプロイメント・サーバとして示すようにターゲット副デプロイメント・サーバのサーバ連絡リストを更新することを要求する。
【００３０】
削除モジュールは、一実施形態で、分散論理リンク・リストの論理関連付けを削除する。マスタ・デプロイメント・サーバは、削除モジュールを介して、論理チェーンでリンクされた副デプロイメント・サーバに要求を送信して、サーバ連絡リストの内容を削除することができる。たとえば、ネットワーク・ブート・サービス・システムへの副デプロイメント・サーバの追加に応答して、削除モジュールが、以前のチェーンの終りの副デプロイメント・サーバのサーバ連絡リストの内容を削除することを要求することができる。次に、更新モジュールが、以前のチェーンの終りの副デプロイメント・サーバと挿入された副デプロイメント・サーバの両方のサーバ連絡リストを更新する。
【００３１】
確認モジュールは、一実施形態で、分散論理リンク・リストの論理関連付けを確認する。確認モジュールは、論理チェーンに関連するマスタ・デプロイメント・サーバまたは他のデプロイメント・サーバからの要求を確認することもできる。副デプロイメント・サーバは、確認モジュールを介して、サーバ連絡リストが更新されたかどうかを確認するためにメッセージを送信することができる。もう１つの実施形態で、副デプロイメント・サーバは、サーバ連絡リストが更新されていないことを確認することができる。更新モジュールがサーバ連絡リストの更新を要求することに応答して、確認モジュールは、更新されたサーバ連絡リストを確認する。
【００３２】
複製モジュールは、アクティブ管理リソースおよびアクティブ・マスタ・テーブルをマスタ・デプロイメント・サーバから主バックアップ・デプロイメント・サーバに複製する。インアクティブ管理リソースおよびインアクティブ・マスタ・テーブルは、それぞれ、アクティブ管理リソースおよびアクティブ・マスタ・テーブルの完全なコピーである。アクティブ管理リソースに、ネットワーク・ブートストラップ・プログラムおよび他のネットワーク展開可能アプリケーションを含むデプロイメント・イメージが含まれる。
【００３３】
一実施形態で、アクティブ管理リソースでのデプロイメント・イメージの追加、除去、または交換に応答して、置換モジュールが、同一のデプロイメント・イメージの複製をインアクティブ管理リソースに追加し、除去し、または交換する。同一の形で、置換モジュールは、アクティブ・マスタ・テーブルの内容をリアルタイムでインアクティブ・マスタ・テーブルの内容に複製する。したがって、いつでも、主バックアップ・デプロイメント・サーバは、すべての管理リソースの複製を備え、現在のマスタ・デプロイメント・サーバの管理機能のすべてを実行することができる。
【００３４】
アクティブ化モジュールは、一実施形態で、主バックアップ・デプロイメント・サーバのインアクティブ管理リソースおよびインアクティブ・マスタ・テーブルをアクティブ化し、イネーブルする。上で説明したように、インアクティブ管理リソースおよびインアクティブ・マスタ・テーブルは、それぞれアクティブ管理リソースおよびアクティブ・マスタ・テーブルの複製である。したがって、主バックアップ・デプロイメント・サーバは、マスタ・デプロイメント・サーバとして昇格された瞬間に、単に、すべての管理機能をアクティブ化し、新しいマスタ・デプロイメント・サーバとして動作する準備ができている。
【００３５】
昇格モジュールは、一実施形態で、主バックアップ・デプロイメント・サーバをマスタ・デプロイメント・サーバに昇格させる。もう１つの実施形態では、昇格モジュールが、副デプロイメント・サーバを主バックアップ・デプロイメント・サーバに昇格させる。もう１つの実施形態では、システム管理者が、自動昇格プロセスをディスエーブルすることができる。したがって、マスタ・デプロイメント・サーバの除去に応答して、主バックアップ・デプロイメント・サーバが昇格されなくなる。その後、除去されたマスタ・デプロイメント・サーバを、このシステムにもう一度マスタ・デプロイメント・サーバとして挿入することができる。マスタ・デプロイメント・サーバが除去され、自動昇格サービスがディスエーブルされている時間中には、システム全体のネットワーク・ブート・サービスがオフラインになる。
【００３６】
本発明のシステムは、高可用性ネットワーク・ブート・システムを自律的に保つためにも提示される。このシステムは、デプロイメント・サーバで実施することができ、このデプロイメント・サーバは、ネットワーク・サービス・プロセスの保存を実行するように構成される。
【００３７】
具体的に言うと、このシステムに、一実施形態で、ネットワーク・サービス・プロセスの保存を管理するように構成されたマスタ・デプロイメント・サーバと、マスタ・デプロイメント・サーバに結合され、マスタ・デプロイメント・サーバの管理機能を複製するように構成された主バックアップ・デプロイメント・サーバと、主バックアップ・デプロイメント・サーバに結合され、複数の接続されたコンピュータ・クライアントにネットワーク・ブート・サービスを供給するように構成された副デプロイメント・サーバとを含めることができる。
【００３８】
このシステムには、マスタ・デプロイメント・サーバと通信するサービス保存ユーティリティも含まれ、サービス保存ユーティリティは、ネットワーク・ブート・サービスを保ち、デプロイメント・サーバの分散論理リンク・リストを維持するための動作を自律的に処理するように構成される。保存ユーティリティに、分散論理リンク・リストをアクティブに監視するように構成されたモニタ・モジュールと、モニタ・モジュールに結合され、分散論理リンク・リスト構成の変動を検出するように構成された検出モジュールと、検出モジュールと通信し、分散論理リンク・リストの故障した要素のネットワーク・ブート・サービスを置換する置換モジュールを含めることができる。
【００３９】
一実施形態で、このシステムに、あるデプロイメント・サーバのマスタ・デプロイメント・サーバとしての昇格の除外を示すように構成された除外インジケータと、あるデプロイメント・サーバを分散論理リンク・リストでより上位または下位に置くための優先順位を示すように構成された優先順位インジケータを含めることができる。もう１つの実施形態で、マスタ・デプロイメント・サーバに、分散論理リンク・リストの現在の要素の全メンバを記録するように構成されたアクティブ・マスタ・テーブルを含めることができる。さらに、主バックアップ・デプロイメント・サーバに、アクティブ・マスタ・テーブルのすべての現在の要素を複製するように構成されたインアクティブ・マスタ・テーブルを含めることができる。
【００４０】
一実施形態で、デプロイメント・サーバに、分散論理リンク・リストでデプロイメント・サーバのすぐ上流の要素およびすぐ下流の要素を記録するように構成されたサーバ連絡リストを含めることができる。
【００４１】
信号担持媒体も、実行された時に高可用性ネットワーク・ブート・サービスを自律的に保つ動作を実行するプログラムを保管するために提示される。一実施形態で、動作に、分散論理リンク・リストを自律的に監視することと、分散論理リンク・リストの変動を検出することと、分散論理リンク・リストの故障した要素を置換することが含まれる。
【００４２】
もう１つの実施形態で、動作に、分散論理リンク・リストを構成することと検出モジュールからの信号の受取に応答して分散論理リンク・リストを再構成すること、ならびにマスタ・デプロイメント・サーバに関連するアクティブ管理リソースを複製することを含めることができる。
【００４３】
本明細書全体を通じて、特徴、利益、または類似する言葉への言及は、本発明を用いて実現できる特徴および利益のすべてが本発明の単一の実施形態に含まれるか含まれなければならないことを暗示するものではない。そうではなく、特徴および利益に言及する言葉は、ある実施形態に関して説明される特定の特徴、利益、または特性が、本発明の少なくとも１つの実施形態に含まれることを意味すると理解される。したがって、特徴および利益ならびに類似する言葉の議論は、本明細書全体を通じて、同一の実施形態に言及する場合があるが、必ずしもそうとは限らない。
【００４４】
さらに、本発明の説明される特徴、利益、および特性は、１つまたは複数の実施形態で、任意の適当な形で組み合わせることができる。当業者は、本発明を、特定の実施形態の特定の特徴または利益のうちの１つまたは複数なしで実践できることを認めるであろう。他の場合に、追加の特徴および利益を、本発明のすべての実施形態には存在しない可能性があるある実施形態で認めることができる。
【００４５】
本発明のこれらの特徴および利益は、次の説明および添付請求項からより十分に明白になり、あるいは、下で示す本発明の実践によって習得することができる。
【００４６】
本発明の利益がたやすく理解されるようにするために、上で短く説明した本発明のより特定の説明を、添付図面に示された特定の実施形態を参照して行う。これらの図面が、本発明の通常の実施形態のみを示し、したがって本発明の範囲の制限と考えてはならないことを理解して、本発明を、添付図面の使用を介してさらに具体的に詳細に説明する。
【発明を実施するための最良の形態】
【００４７】
本明細書で説明する機能ユニットの多くが、その実装独立性を特に強調するために、モジュールとして名称を付けられている。たとえば、モジュールは、カスタムＶＬＳＩ回路またはゲート・アレイを含むハードウェア回路、論理チップなどの在庫半導体、トランジスタ、または他のディスクリート・コンポーネントとして実装することができる。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル論理デバイス、または類似物などのプログラマブル・ハードウェア・デバイスで実装することもできる。
【００４８】
モジュールは、さまざまなタイプのプロセッサによって実行されるソフトウェアで実装することもできる。実行可能コードの識別されたモジュールに、たとえば、たとえばオブジェクト、プロシージャ、または関数として編成することのできる、コンピュータ命令の１つまたは複数の物理的ブロックまたは論理的ブロックを含めることができる。それでも、識別されたモジュールの実行可能ファイルを、物理的に一緒に置く必要はなく、異なる位置に保管される異なる命令を含めることができ、これらの命令は、一緒に結びつけられた時に、モジュールを含み、そのモジュールの定まった目的を達成する。
【００４９】
実際に、実行可能コードのモジュールは、単一の命令または多数の命令とすることができ、複数のコード・セグメントにまたがって、異なるプログラムにまたがって、および複数のメモリ・デバイスにまたがって分散させることさえできる。同様に、動作データを、本明細書ではモジュール内で識別し、図示することができ、適当な形で実施し、適当なタイプのデータ構造内で任意の適当な形で編成することができる。動作データは、単一のデータ・セットとして収集することができ、あるいは、異なるストレージ・デバイスを含む異なる位置にまたがって分散させることができ、少なくとも部分的に、単に、システムまたはネットワーク上の電子信号として存在することができる。
【００５０】
図１に、ネットワーク・ブート・サービス・システムであるシステム１００の一実施形態を示す。システム１００は、複数のネットワーク・クライアントにネットワーク・ブート・サービスを提供する。システム１００は、デプロイメント・サーバおよびクライアントの物理レイアウトと、それらの物理的接続を示す。デプロイメント・サーバおよびクライアントの論理レイアウトおよび論理関連付けは、物理レイアウトおよび物理関連付けから変更することができる。
【００５１】
システム１００に、複数のデプロイメント・サーバが含まれる。複数のデプロイメント・サーバの中に、マスタ・デプロイメント・サーバ１０２、主バックアップ・デプロイメント・サーバ１０４、および副デプロイメント・サーバ１０６を設けることができる。システム１００に、１つまたは複数のサブネット１０８、クライアント・ネットワーク１１０、およびサーバ・ネットワーク１１２も含まれる。サブネット１０８に、１つまたは複数のコンピュータ・クライアント１１４が含まれる。マスタ・デプロイメント・サーバ１０２、主バックアップ・デプロイメント・サーバ１０４、および副デプロイメント・サーバ１０６は、クライアント・ネットワーク１１０を介してサブネット１０８に接続された複数のコンピュータ・クライアント１１４に接続される。デプロイメント・サーバは、サーバ・ネットワーク１１２上でサーバ間通信を渡すことができる。
【００５２】
システム１００が、１つのマスタ・デプロイメント・サーバ１０２、１つの主バックアップ・デプロイメント・サーバ１０４、１つの副デプロイメント・サーバ１０６、３つのサブネット１０８、１つのクライアント・ネットワーク１１０、１つのサーバ・ネットワーク１１２、および１サブネット１０８あたり３つのコンピュータ・クライアント１１４と共に図示されているが、任意の個数のマスタ・デプロイメント・サーバ１０２、主バックアップ・デプロイメント・サーバ１０４、副デプロイメント・サーバ１０６、サブネット１０８、クライアント・ネットワーク１１０、サーバ・ネットワーク１１２、およびコンピュータ・クライアント１１４を使用することができる。１つのデプロイメント・サーバが、複数のサブネットに供給することができるが、単一のサブネットに複数のデプロイメント・サーバがあってはならない。
【００５３】
マスタ・デプロイメント・サーバ１０２、主バックアップ・デプロイメント・サーバ１０４、および副デプロイメント・サーバ１０６のそれぞれは、各デプロイメント・サーバが供給するサブネット１０８に接続された複数のコンピュータ・クライアント１１４にネットワーク・ブートストラップ・プログラム（ＮＢＰ）を供給する。各デプロイメント・サーバが、１つまたは複数のサブネット１０８に供給することができるが、各サブネット１０８が、複数のデプロイメント・サーバによって供給されてはならない。現在、デプロイメント・サーバが故障し、オフラインになった時に、それが供給するサブネット１０８全体もオフラインになる。
【００５４】
さらに、ダウンしたサブネット１０８に含まれる複数のコンピュータ・クライアント１１４は、アクティブ・ネットワーク接続がなければすべてのネットワーク・ブート・サービスが使用不能なので、サービスを失う。サブネット全体のネットワーク・ブート・サービス機能停止を防ぐために、マスタ・デプロイメント・サーバ１０２、主バックアップ・デプロイメント・サーバ１０４、および副デプロイメント・サーバ１０６は、分散論理リンク・リストでリンクされる。一実施形態で、マスタ・デプロイメント・サーバ１０２は、分散論理リンク・リストの一番上または最上位である。主バックアップ・デプロイメント・サーバ１０４は、分散論理リンク・リストでマスタ・デプロイメント・サーバ１０２の真下の第２要素である。他のすべてのデプロイメント・サーバは、論理的に主バックアップ・デプロイメント・サーバ１０４の下に関連する。
【００５５】
分散論理リンク・リストは、マスタ・デプロイメント・サーバ１０２によって管理され、デプロイメント・サーバが故障した時をマスタ・デプロイメント・サーバ１０２が認識できるようにする。デプロイメント・サーバの故障に応答して、マスタ・デプロイメント・サーバ１０２は、故障したデプロイメント・サーバの機能およびネットワーク・ブート・サービスを肩代わりする。マスタ・デプロイメント・サーバ１０２は、マスタ・デプロイメント・サーバ１０２が既に供給しているコンピュータ・クライアント１１４がある場合に、それに加えて、故障したデプロイメント・サーバに接続されているコンピュータ・クライアント１１４に供給する。
【００５６】
一実施形態で、マスタ・デプロイメント・サーバ１０２は、マスタ・デプロイメント・サーバ１０２によって供給される１つまたは複数のサブネット１０８に接続された複数のコンピュータ・クライアント１１４にネットワーク・ブートストラップ・プログラムを供給するほかに、管理機能およびリソースを監督し、分散論理リンク・リストのすべてのメンバのマスタ・リストを維持する。もう１つの実施形態では、主バックアップ・デプロイメント・サーバ１０４が、管理機能をイネーブルせずにマスタ・デプロイメント・サーバ１０２の管理リソースを複製し、マスタ・デプロイメント・サーバ１０２のマスタ・リストの複製を維持する。
【００５７】
一実施形態で、副デプロイメント・サーバ１０６が、分散論理リンク・リスト内ですぐ上流の次のデプロイメント・サーバおよびすぐ下流の次のデプロイメント・サーバの、ＩＰアドレスなどの識別を含むリストを維持する。副デプロイメント・サーバ１０６が、分散論理リンク・リストの終りに置かれている場合に、すぐ下流の次のデプロイメント・サーバの識別は、このリストで空白のままにされる。マスタ・デプロイメント・サーバ１０２と同様に、主バックアップ・デプロイメント・サーバ１０４および副デプロイメント・サーバ１０６は、それらの各めいめいが供給する１つまたは複数のサブネット１０８に接続された複数のコンピュータ・クライアント１１４にネットワーク・ブートストラップ・プログラムを供給する。
【００５８】
クライアント・ネットワーク１１０またはサーバ・ネットワーク１１２あるいはその両方は、ストレージ・エリア・ネットワーク（ＳＡＮ）に似て、従来のブロックＩ／Ｏを通信することができる。クライアント・ネットワーク１１０またはサーバ・ネットワーク１１２あるいはその両方は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）ネットワークまたは類似する通信プロトコルを介するなど、ファイルＩ／Ｏを通信することもできる。その代わりに、デプロイメント・サーバを、バックプレーンまたはシステム・バスを介して直接に接続することができる。一実施形態で、システム１００に、複数のクライアント・ネットワーク１１０、または複数のサーバ・ネットワーク１１２、あるいはその両方が含まれる。
【００５９】
クライアント・ネットワーク１１０またはサーバ・ネットワーク１１２あるいはその両方は、いくつかの実施形態で、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ＣＩＦＳ（common internet file system）、ＮＦＳ／ＮｅｔＷＦＳ（network file system）、ＳＣＳＩ（smallcomputer system interface）、ｉＳＣＳＩ（internet small computer system interface）、ＳＡＴＡ（serialadvanced technology attachment）、ＩＤＥ／ＡＴＡ（integrated drive electronics/advancedtechnology attachment）、ＩＥＥＥ  １３９４（institute of electrical and electronicengineers standard 1394）、ＵＳＢ（universal serial bus）、ＦＩＣＯＮ（fiber connection）、エンタープライズ・システム接続（ＥＳＣＯＮ）、ソリッドステート・メモリ・バス、または類似するインターフェースを使用して実装することができる。
【００６０】
図２に、マスタ・デプロイメント・サーバ２００の一実施形態を示す。マスタ・デプロイメント・サーバ２００は、実質的に図１のマスタ・デプロイメント・サーバ１０２に類似するものとすることができる。マスタ・デプロイメント・サーバ２００に、通信モジュール２０２、アクティブ管理リソース２０４、複数のデプロイメント・イメージ２０５、メモリ・デバイス２０６、ＰＸＥサーバ２０８、除外インジケータ２１０、優先順位インジケータ２１２、およびサービス保存ユーティリティ２１４が含まれる。メモリ・デバイス２０６に、アクティブ・マスタ・テーブル２１６が含まれる。一実施形態で、アクティブ管理リソース２０４に、複数のデプロイメント・イメージ２０５を含めることができる。マスタ・デプロイメント・サーバ２００は、デプロイメント・サーバの分散リンク・リストを管理する。一実施形態で、マスタ・デプロイメント・サーバ２００は、論理チェーンの一番上にある。用語「分散論理リンク・リスト」は、「論理チェーン」、「論理リスト」、または「論理リンク・リスト」と交換可能に使用することができる。
【００６１】
通信モジュール２０２は、マスタ・デプロイメント・サーバ２００と他のデプロイメント・サーバの間のクライアント・ネットワーク１１０またはサーバ・ネットワーク１１２あるいはその両方を介するサーバ間通信を管理することができる。通信モジュール２０２は、マスタ・デプロイメント・サーバ２００と複数のコンピュータ・クライアント１１４の間のクライアント・ネットワーク１１０を介するネットワーク通信を管理することもできる。一実施形態で、通信モジュール２０２は、分散論理リンク・リストを照会し、その正確さを維持するために、サーバ間メッセージ・パケットを送信する。もう１つの実施形態で、通信モジュール２０２を、新しいデプロイメント・サーバからの、分散論理リンク・リストのデプロイメント・サーバのチェーンへの追加の要求を確認するように構成することができる。
【００６２】
アクティブ管理リソース２０４に、コンピュータ・クライアント１１４が要求し、ダウンロードするのに使用可能なプログラムおよびアプリケーションが含まれる。ある種の実施形態で、アクティブ管理リソース２０４に、システム１００用のサービスを管理し、保つ複数のアプリケーションと、複数のデプロイメント・イメージ２０５とを含めることもできる。デプロイメント・イメージ２０５に、ネットワーク・ブートストラップ・プログラムおよび他のネットワーク展開されるプログラムを含めることができる。一実施形態で、アクティブ管理リソース２０４は、マスタ・デプロイメント・サーバ２００でのみアクティブであり、イネーブルされる。
【００６３】
図示のメモリ・デバイス２０６に、アクティブ・マスタ・テーブル２１６が含まれる。メモリ・デバイス２０６は、システム１００のＩ／Ｏ性能を高めるためのバッファ（図示せず）として働き、マスタ・デプロイメント・サーバ２００の動作のために設計されたマイクロコードを保管することができる。バッファまたはキャッシュは、コンピュータ・クライアント１１４からの最近の要求の結果を保持し、近い将来に要求される可能性が高いデータをプリフェッチするのに使用される。メモリ・デバイス２０６は、フラッシュ・メモリ、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ）、ＮＡＮＤ／ＡＮＤ、ＮＯＲ、ＤＩＮＯＲ（divided bit-line NOR）、または任意の他の類似するメモリ・デバイスなど、１つまたは複数の不揮発性半導体デバイスからなるものとすることができる。
【００６４】
マスタ・デプロイメント・サーバ２００は、アクティブ・マスタ・テーブル２１６を維持する。アクティブ・マスタ・テーブル２１６は、マスタ連絡リストである。アクティブ・マスタ・テーブル２１６は、現在分散論理リンク・リストのメンバであるすべてのデプロイメント・サーバをインデクシングする。マスタ・デプロイメント・サーバ２００は、それ自体と分散論理リンク・リスト・メンバの間でメッセージを通信することによって、アクティブ・マスタ・テーブル２１６を維持する。分散論理リンク・リストのメンバに、どのデプロイメント・サーバでも含めることができる。アクティブ・マスタ・テーブル２１６は、マスタ・デプロイメント・サーバ２００がデプロイメント・サーバの論理チェーンのアクティブ・マスタであることを示す。
【００６５】
一実施形態で、マスタ・デプロイメント・サーバ２００は、メンバが現在アクティブであり、オンラインであることを確認するために、論理チェーンのメンバの現在の状況を照会し、照会されたメンバから確認を受信する。マスタ・デプロイメント・サーバ２００は、照会に対する確認または応答を受信しないことに応答して、論理チェーンのメンバがインアクティブであり、オフラインであると判定することができる。一実施形態で、論理チェーンのメンバがインアクティブであり、オフラインであるとマスタ・デプロイメント・サーバ２００が判定することに応答して、マスタ・デプロイメント・サーバ２００は、そのメンバを論理チェーンから除去し、動作していないメンバを反映するようにアクティブ・マスタ・テーブル２１６を更新することができる。
【００６６】
ＰＸＥサーバ２０８は、マスタ・デプロイメント・サーバ２００からＰＸＥ機能を提供する。したがって、管理リソースを監督し、分散論理リンク・リストを維持するほかに、マスタ・デプロイメント・サーバ２００は、マスタ・デプロイメント・サーバ２００が供給するサブネット１０８に接続されたコンピュータ・クライアント１１４からのＰＸＥ要求に応答する。さらに、マスタ・デプロイメント・サーバ２００は、現在ネットワーク・ブートストラップ・プログラムをダウンロードしているコンピュータ・クライアント１１４にフォールトトレランスを提供する。たとえば、あるコンピュータ・クライアント１１４がネットワーク・ブートストラップ・プログラムのダウンロード中である間に特定のサブネット１０８のＰＸＥサーバ２０８が故障した場合に、マスタ・デプロイメント・サーバ２００は、故障したＰＸＥサーバ２０８のＰＸＥ機能を置換し、その特定のサブネット１０８へのネットワーク・ブート・サービスを肩代わりすることができる。
【００６７】
除外インジケータ２１０は、あるデプロイメント・サーバがマスタ・デプロイメント・サーバ２００になることから除外されるかどうかを示す。一実施形態で、除外インジケータ２１０を、２進値とすることができる。もう１つの実施形態で、この２進値を、システム管理者が決定することができ、ここで、２進数１は、あるデプロイメント・サーバがマスタ・デプロイメント・サーバ２００になることからの除外を示し、２進数０は、あるデプロイメント・サーバがマスタ・デプロイメント・サーバ２００になることの許可を示す。もう１つの実施形態で、除外インジケータ２１０を、デプロイメント・サーバのハードウェア特徴、ソフトウェア・バージョン、および他の類似する属性によって決定することができる。一実施形態で、アクティブなマスタ・デプロイメント・サーバ２００の除外インジケータ２１０は、そのマスタ・デプロイメント・サーバ２００がアクティブであり、オンラインであり続ける間、ロックされ、変更することができない。
【００６８】
優先順位インジケータ２１２は、あるデプロイメント・サーバが、同一の論理チェーンの別のデプロイメント・サーバと比較して、マスタ・デプロイメント・サーバ２００になる資格がより高いかどうかを示す。たとえば、マスタ・デプロイメント・サーバ２００は、あるデプロイメント・サーバが、論理チェーン内の別のデプロイメント・サーバより短いランタイムを有し、したがって故障の可能性がより低いと判定することができる。マスタ・デプロイメント・サーバ２００は、あるデプロイメント・サーバが、論理チェーン内の別のデプロイメント・サーバと比較して、改善されたハードウェア特徴またはより新しいソフトウェア／ファームウェア・バージョンをインストールされていると判定することもできる。したがって、マスタ・デプロイメント・サーバ２００は、あるデプロイメント・サーバが論理チェーン内でより上位に置かれることを保証するために、そのデプロイメント・サーバに優先順位を与えることができる。一実施形態で、マスタ・デプロイメント・サーバ２００が故障した場合に、論理チェーン内でより上位のデプロイメント・サーバが、論理チェーン内で下位のデプロイメント・サーバの前にマスタ・デプロイメント・サーバ２００に昇格される。
【００６９】
優先順位インジケータ２１２は、挿入されたデプロイメント・サーバが新しいマスタ・デプロイメント・サーバ２００であることを示すように構成することができる。たとえば、システム管理者が、論理チェーンからマスタ・デプロイメント・サーバ２００を除去するが、除去されたマスタ・デプロイメント・サーバ２００をもう一度マスタ・デプロイメント・サーバ２００として論理チェーンに戻すことを望む場合がある。マスタ・デプロイメント・サーバ２００の除去に応答して、マスタ・デプロイメント・サーバ２００のすぐ下流のデプロイメント・サーバが、新しいマスタ・デプロイメント・サーバ２００として昇格される。一実施形態で、除去されたマスタ・デプロイメント・サーバ２００が論理チェーンに再挿入された時に、再挿入されたマスタ・デプロイメント・サーバ２００が、チェーンの終りに付加され、論理チェーンの最後のデプロイメント・サーバになる。もう１つの実施形態では、再挿入されたマスタ・デプロイメント・サーバ２００が、現在のマスタ・デプロイメント・サーバ２００をオーバーライドし、論理チェーンにもう一度マスタ・デプロイメント・サーバ２００として追加される。再挿入されたマスタ・デプロイメント・サーバ２００は、優先順位インジケータ２１２の値に従って、現在のマスタ・デプロイメント・サーバ２００をオーバーライドする。優先順位インジケータ２１２は、２進値としてまたは任意の他の類似するエンコーディング方式でエンコードすることができる。
【００７０】
一般に、サービス保存ユーティリティ２１４は、ネットワーク・サービス・プロセスの保存を実装する。サービス保存ユーティリティ２１４の１つの実施例を、図５に図示し、図５に関して詳細に説明する。
【００７１】
サーバ連絡リスト２１８は、すぐ上流の次のデプロイメント・サーバおよびすぐ下流の次のデプロイメント・サーバの、ＩＰアドレスなどの識別を保管する分散論理リンク・リストである。サーバ連絡リスト２１８は、自己修復式であり、自己維持式である。あるデプロイメント・サーバがオフラインになるなど、リストの無効化に応答して、破壊された論理チェーンが、修復され、オフラインのデプロイメント・サーバを避けて再ルーティングされる。したがって、サーバ連絡リスト２１８は、必要に応じて新しい論理関連付けを用いて更新されつつあり、アクティブ・マスタ・テーブル２１６は、分散論理リンク・リストの現在の状態を反映するように更新される。
【００７２】
デプロイメント・サーバがシステム１００に挿入されることに応答して、論理チェーンが、維持され、挿入されたデプロイメント・サーバが、論理チェーンの終りに付加される。したがって、アクティブ・マスタ・テーブル２１６に加えて、以前のチェーンの終りのデプロイメント・サーバおよび新しいチェーンの終りのデプロイメント・サーバのサーバ連絡リスト２１８だけが、更新を必要とする。もちろん、インアクティブ・マスタ・テーブル３０４は、アクティブ・マスタ・テーブル２１６に保管された全データのリアルタイム複製を継続的に維持する。
【００７３】
図３に、主バックアップ・デプロイメント・サーバ３００の一実施形態を示す。主バックアップ・デプロイメント・サーバ３００は、実質的に図１の主バックアップ・デプロイメント・サーバ１０４に類似するものとすることができる。主バックアップ・デプロイメント・サーバ３００に、図２のマスタ・デプロイメント・サーバ２００に似て、通信モジュール２０２、複数のデプロイメント・イメージ２０５、メモリ・デバイス２０６、ＰＸＥサーバ２０８、除外インジケータ２１０、優先順位インジケータ２１２、およびサービス保存ユーティリティ２１４が含まれる。一実施形態で、主バックアップ・デプロイメント・サーバ３００の除外インジケータ２１０は、主バックアップ・デプロイメント・サーバ３００がアクティブであり、オンラインであり続ける間、ロックされ、変更することができない。
【００７４】
主バックアップ・デプロイメント・サーバ３００に、インアクティブ管理リソース３０２すなわち、アクティブ管理リソース２０４のインアクティブ化された複製も含めることができる。マスタ・デプロイメント・サーバ２００に似て、主バックアップ・デプロイメント・サーバ３００に、サブネットへのデプロイメント・イメージ２０５の供給に応答して複数のデプロイメント・イメージ２０５を含めることができる。対照的に、主バックアップ・デプロイメント・サーバ３００のメモリ・デバイス２０６に、インアクティブ・マスタ・テーブル３０４が含まれる。主バックアップ・デプロイメント・サーバ３００は、マスタ・デプロイメント・サーバ２００のバックアップ複製である。一実施形態で、主バックアップ・デプロイメント・サーバ３００は、論理チェーン内で２番目のデプロイメント・サーバでリ、したがってマスタ・デプロイメント・サーバ２００に直接に続く。
【００７５】
一実施形態で、インアクティブ管理リソース３０２およびインアクティブ・マスタ・テーブル３０４は、主バックアップ・デプロイメント・サーバ３００でインアクティブであり、ディスエーブルされる。主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２およびインアクティブ・マスタ・テーブル３０４は、ディスエーブルされているが、マスタ・デプロイメント・サーバ２００のアクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６のリアルタイム複製である。マスタ・デプロイメント・サーバ２００が故障した場合に、主バックアップ・デプロイメント・サーバ３００は、インアクティブ管理リソース３０２、インアクティブ・マスタ・テーブル３０４、およびマスタ・デプロイメント・サーバ２００のすべての必要な管理機能をアクティブ化し、イネーブルする。
【００７６】
一実施形態で、インアクティブ・マスタ・テーブル３０４は、主バックアップ・デプロイメント・サーバ３００がデプロイメント・サーバの論理チェーンのインアクティブ・マスタであることを示す。したがって、主バックアップ・デプロイメント・サーバ３００がアクティブなマスタ・デプロイメント・サーバ２００として昇格される時に、インアクティブ・マスタ・テーブル３０４は、更新を必要とするのではなく、アクティブ・マスタ・テーブル２１６としてアクティブ化された時に論理チェーンの全メンバの最新のリストを既に含んでいる。
【００７７】
図４に、副デプロイメント・サーバ４００の一実施形態を示す。副デプロイメント・サーバ４００は、図１の副デプロイメント・サーバ１０６に実質的に類似するものとすることができる。副デプロイメント・サーバ４００に、図２のマスタ・デプロイメント・サーバ２００および図３の主バックアップ・デプロイメント・サーバ３００に似て、通信モジュール２０２、メモリ・デバイス２０６、ＰＸＥサーバ２０８、除外インジケータ２１０、優先順位インジケータ２１２、サービス保存ユーティリティ２１４、およびサーバ連絡リスト２１８が含まれる。
【００７８】
マスタ・デプロイメント・サーバ２００および主バックアップ・デプロイメント・サーバ３００と異なって、副デプロイメント・サーバ４００に接続されたメモリ・デバイス２０６には、アクティブ・マスタ・テーブル２１６およびインアクティブ・マスタ・テーブル３０４が含まれない。その代わりに、副デプロイメント・サーバ４００のメモリ・デバイス２０６には、サーバ連絡リスト２１８だけが含まれる。副デプロイメント・サーバ４００には、管理リソースも含まれない。
【００７９】
図５に、図２のサービス保存ユーティリティ２１４に実質的に類似するものとすることができるサービス保存ユーティリティ５００の一実施形態を示す。サービス保存ユーティリティ５００は、分散論理リンク・リストに関連するネットワーク・サービスを保つ。サービス保存ユーティリティ５００に、分散論理リンク・リストを監視するモニタ・モジュール５０２、分散論理リンク・リストの論理セットアップの変動を検出する検出モジュール５０４、および分散論理リンク・リストの故障したメンバのネットワーク・ブート・サービスを置換する置換モジュール５０６が含まれる。マスタ・デプロイメント・サーバ２００、主バックアップ・デプロイメント・サーバ３００、および１つまたは複数の副デプロイメント・サーバ４００が、分散論理リンク・リストのメンバである。
【００８０】
サービス保存ユーティリティ５００に、分散論理リンク・リストを構成する構成モジュール５０８、マスタ・デプロイメント・サーバ２００の管理リソースを複製する複製モジュール５１０、主バックアップ・デプロイメント・サーバ３００の管理リソースをアクティブ化するアクティブ化モジュール５１２、および、主バックアップ・デプロイメント・サーバ３００をマスタ・デプロイメント・サーバ２００に昇格させるか副デプロイメント・サーバ４００を主バックアップ・デプロイメント・サーバ３００に昇格させるかその両方を行う昇格モジュール５１４も含まれる。モニタ・モジュール５０２に、モニタ・モジュール５０２が分散論理リンク・リストを監視する頻度を決定するハートビート間隔５１６が含まれる。
【００８１】
構成モジュール５０８に、分散論理リンク・リストの現在の論理セットアップを検証する検証モジュール５１８、分散論理リンク・リストの論理セットアップを更新する更新モジュール５２０、分散論理リンク・リストの保管された内容を削除する削除モジュール５２２、および分散論理リンク・リストの現在の内容を確認する確認モジュール５２４が含まれる。サービス保存ユーティリティ５００を、サービス・プロトコルの保存に従ってアクティブ化することができる。サービス・プロトコルの保存は、マスタ・デプロイメント・サーバ２００が分散論理リンク・リストを監視できる形およびネットワーク・ブート・サービスの消失が検出され、その後置換され、維持される形を確立することができる。
【００８２】
図２で説明したように、サービス保存ユーティリティ５００は、ネットワーク・ブート・サービスの事前に構成されたレベルを保ち、ネットワーク・ブートストラップ・プログラムおよび他のネットワーク展開されるプログラムへの高可用性を維持する。計画的であれ予期せぬものであれ、デプロイメント・サーバがオフラインになることに応答して、サービス保存ユーティリティ５００は、デプロイメント・サーバがオフラインになる前と同一のレベルのネットワーク・ブート・サービスを保つ。サービス保存ユーティリティ５００は、システム１００にサービス保存の複数のステップを提供し、ネットワーク・インフラストラクチャ内の単一障害点を除去する。
【００８３】
モニタ・モジュール５０２は、分散論理リンク・リストを監視して、分散論理リンク・リストのメンバである複数のデプロイメント・サーバの間の現在の論理関係の正確な表現を保証する。一実施形態で、マスタ・デプロイメント・サーバ２００、主バックアップ・デプロイメント・サーバ３００、および１つまたは複数の副デプロイメント・サーバ４００が、分散論理リンク・リストのメンバである。
【００８４】
一実施形態で、マスタ・デプロイメント・サーバ２００は、分散論理リンク・リストの全メンバがアクティブであり、デプロイメント・サーバの間にアクティブな論理リンクが存在することを確認するために、通信ハートビートによく似た形で、主バックアップ・デプロイメント・サーバ３００および１つまたは複数の副デプロイメント・サーバ４００との間で継続的にメッセージを送っている。論理チェーンは、デプロイメント・サーバが、事前定義の通信タイムアウト間隔のうちに別のデプロイメント・サーバから期待されるアクティブ通信ハートビートを検出できない時に無効である。一実施形態で、デプロイメント・サーバは、論理チェーン内のすぐに下流のデプロイメント・サーバに応答を要求する。応答の受信に応答して、デプロイメント・サーバは、マスタ・デプロイメント・サーバ２００に通知し、したがって、マスタ・デプロイメント・サーバ２００は、アクティブ・マスタ・テーブル２１６の内容を検証する。
【００８５】
上で述べたように、アクティブ監視に、事前定義のハートビート間隔５１６内に分散論理リンク・リストの正確さを周期的に検証することが含まれる。さらに、アクティブ監視に、事前定義のハートビート間隔５１６内にデプロイメント・サーバのネットワーク・ブート・サービスの保全性を周期的に監視することを含めることができる。ハートビート間隔５１６は、デプロイメント・サーバがそれ自体ならびに分散論理リンク・リストですぐ下流のデプロイメント・サーバの代わりにネットワーク・ブート・サービスのアクティブなフル機能性をアサートすると期待される時間の期間である。
【００８６】
デプロイメント・サーバが、論理チェーンの最後の副デプロイメント・サーバ４００である場合に、チェーンの終りのデプロイメント・サーバは、それ自体のみの代わりにネットワーク・ブート・サービスのアクティブなフル機能性をアサートする。したがって、すべてのデプロイメント・サーバが、それ自体によって依存的にならびにすぐに上流の別のデプロイメント・サーバによって独立に検証される。論理チェーン内ですぐ上流のデプロイメント・サーバを有しないマスタ・デプロイメント・サーバ２００の場合に、主バックアップ・デプロイメント・サーバ３００またはいずれかの副デプロイメント・サーバ４００あるいはその両方が、マスタ・デプロイメント・サーバ２００がオンラインであることを検証し、ネットワーク・ブート・サービスのアクティブ機能性を維持することができる。
【００８７】
検出モジュール５０４は、分散論理リンク・リストの論理関連付けの不一致を検出する。一実施形態で、検出モジュール５０４は、マスタ・デプロイメント・サーバ２００が故障するか、除去されるか、他の形でオフラインになることに応答して、論理チェーンの不一致を検出することができる。検出モジュール５０４は、主バックアップ・デプロイメント・サーバ３００または副デプロイメント・サーバ４００あるいはその両方が故障するか、除去されるか、他の形でオフラインになることに応答して、論理チェーンの保全性の不一致を検出することもできる。さらに、検出モジュール５０４は、デプロイメント・サーバがシステム１００に追加されることに応答して、論理チェーンの保全性の不一致を検出することができる。最後に、包含的にではないが、検出モジュール５０４は、デプロイメント・サーバの単一のまたは個々のコンポーネントまたはサービスの障害を検出することができる。
【００８８】
一実施形態で、モニタ・モジュール５０２および検出モジュール５０４を、ネットワーク・ブート・サービスを保つ、あるプロトコルに関連付けることができる。検出モジュール５０４が、分散論理リンク・リストの保全性の不一致を検出できないことに応答して、保守プロトコルを実行して、論理チェーンの保全性を維持することができる。検出モジュール５０４が、デプロイメント・サーバがオフラインになるのを検出することに応答して、回復プロトコルを実行して、論理チェーンの保全性を回復し、修復することができる。検出モジュール５０４が、デプロイメント・サーバがシステム１００に挿入されるのを検出することに応答して、ディスカバリおよび挿入プロトコルを実行して、新しいデプロイメント・サーバを発見し、論理チェーンに挿入し、分散論理リンク・リストの新しい要素を反映するためにそれ相応に論理チェーンを変更することができる。
【００８９】
置換モジュール５０６は、一実施形態で、分散論理リンク・リスト内の故障したデプロイメント・サーバのネットワーク・ブート・サービスを置換する。もう１つの実施形態では、検出モジュール５０４が、故障したデプロイメント・サーバまたはデプロイメント・サーバの故障したコンポーネントの検出に応答して、置換モジュール５０６に信号を送ることができる。次に、置換モジュール５０６が、故障したデプロイメント・サーバのネットワーク・ブート・サービスを肩代わりするようにマスタ・デプロイメント・サーバ２００に通知し、故障したデプロイメント・サーバのサブネット１０８へのネットワーク・サービスを維持することができる。もう１つの実施形態では、マスタ・デプロイメント・サーバ２００が、故障したデプロイメント・サーバのネットワーク・ブート・サービスを、別のアクティブに機能しているデプロイメント・サーバに割り当てることができる。したがって、システム１００に接続されたすべてのサブネット１０８へのネットワーク・ブート・サービスの保全性が、ほとんどまたは全くシステム管理者の介入なしで、自律的に保たれる。
【００９０】
構成モジュール５０８は、デプロイメント・サーバの分散論理リンク・リストの論理関連付けを構成する。上で説明したように、構成モジュール５０８に、検証モジュール５１８、更新モジュール５２０、削除モジュール５２２、および確認モジュール５２４が含まれる。構成モジュール５０８は、サービス・プロトコルの保存で示されるプロセスに従って動作する。
【００９１】
一実施形態で、システム１００に接続されたデプロイメント・サーバは、能力および機能において同等であり、それぞれが同一レベルのネットワーク・ブート・サービスを提供する。システム１００に接続されたデプロイメント・サーバは、マスタ・デプロイメント・サーバ２００になるために競争する。構成モジュール５０８は、オンラインの最初のアクティブ・デプロイメント・サーバをマスタ・デプロイメント・サーバ２００として構成する。次に、マスタ・デプロイメント・サーバ２００によって検出された最初のアクティブ・デプロイメント・サーバが、主バックアップ・デプロイメント・サーバ３００として構成される。他のすべてのデプロイメント・サーバが、副デプロイメント・サーバ４００として構成される。
【００９２】
一実施形態で、システム管理者が、デプロイメント・サーバに優先順位を割り当てることができる。事前に構成された優先順位インジケータ２１２が、どのデプロイメント・サーバがマスタ・デプロイメント・サーバ２００として構成されるかを決定することができ、次に、構成モジュール５０８が、残りのデプロイメント・サーバをその個々の優先順位のランクに従って順序付けることができる。もう１つの実施形態では、構成モジュール５０８が、除外インジケータ２１０の値に従ってデプロイメント・サーバを順序付けることができる。あるデプロイメント・サーバがマスタ・デプロイメント・サーバ２００としての昇格から除外されることを除外インジケータ２１０が示すことに応答して、構成モジュール５０８は、そのデプロイメント・サーバを論理チェーンの終りに置くことができる。
【００９３】
検証モジュール５１８は、一実施形態で、分散論理リンク・リストの論理関連付けを検証する。マスタ・デプロイメント・サーバ２００は、サーバ連絡リスト２１８の内容を検証するように副デプロイメント・サーバ４００に要求することができる。次に、確認モジュール５２４が、検証要求に応答してサーバ連絡リスト２１８の正確さを確認することができる。各サーバ連絡リスト２１８が論理チェーンの論理関連付けを正確に表すことの確認を論理チェーンの各デプロイメント・サーバから受信することに応答して、検証モジュール５１８は、アクティブ・マスタ・テーブル２１６の内容を検証することができる。
【００９４】
もう１つの実施形態で、検証モジュール５１８は、分散論理リンク・リストでリンクされたデプロイメント・サーバの可用性を検証する。マスタ・デプロイメント・サーバ２００は、検証モジュール５１８を介して、システム１００のサブネット１０８にネットワーク・ブート・サービスを供給するための副デプロイメント・サーバ４００の可用性を検証することができる。検証モジュール５１８は、ＰＸＥサーバ２０８など、副デプロイメント・サーバ４００の個々のコンポーネントのアクティブ機能性を検証することもできる。
【００９５】
更新モジュール５２０は、一実施形態で、分散論理リンク・リストの論理関連付けを更新する。マスタ・デプロイメント・サーバ２００は、更新モジュール５２０を介して、論理チェーンでリンクされたすべてのデプロイメント・サーバにマスタ同期パルスを送信することができる。マスタ同期パルスは、そのメッセージの発信元をマスタ・デプロイメント・サーバ２００として示すようにサーバ連絡リスト２１８を更新するように副デプロイメント・サーバ４００に要求する。したがって、マスタ・デプロイメント・サーバ２００は、管理リソースおよび分散論理リンク・リストの管理に対するアクティブ制御を日常的にアサートする。デプロイメント・サーバの故障または挿入に起因して、検出モジュールが分散論理リンク・リストの矛盾を検出することに応答して、更新モジュール５２０が、１つまたは複数のサーバ連絡リスト２１８を更新する要求を送信することができる。
【００９６】
主バックアップ・デプロイメント・サーバ３００も、故障したマスタ・デプロイメント・サーバ２００の交換に応答して、更新モジュール５２０を介してマスタ同期パルスを送信することができる。もう１つの実施形態では、更新モジュール５２０が、新しい主バックアップ・デプロイメント・サーバ３００としてターゲットの副デプロイメント・サーバ４００を示すために、そのターゲットのサーバ連絡リスト２１８を更新することを要求する。
【００９７】
削除モジュール５２２は、一実施形態で、分散論理リンク・リストの論理関連付けを削除する。マスタ・デプロイメント・サーバ２００が、削除モジュール５２２を介して、サーバ連絡リスト２１８の内容を削除する要求を、論理チェーンでリンクされた副デプロイメント・サーバ４００に送信することができる。たとえば、システム１００への副デプロイメント・サーバ４００の追加に応答して、削除モジュール５２２が、以前のチェーンの終りの副デプロイメント・サーバ４００のサーバ連絡リスト２１８の内容を削除することを要求することができる。次に、更新モジュール５２０が、以前のチェーンの終りの副デプロイメント・サーバ４００と挿入された副デプロイメント・サーバ４００の両方のサーバ連絡リスト２１８を更新する。
【００９８】
確認モジュール５２４は、一実施形態で、分散論理リンク・リストの論理関連付けを確認する。確認モジュール５２４は、論理チェーンに関連する、マスタ・デプロイメント・サーバ２００または他のデプロイメント・サーバからの要求を確認することもできる。副デプロイメント・サーバ４００が、確認モジュール５２４を介してメッセージを送信して、サーバ連絡リスト２１８が更新されたかどうかを確認することができる。もう１つの実施形態で、副デプロイメント・サーバ４００が、サーバ連絡リスト２１８が更新されていないことを確認することができる。更新モジュール５２０がサーバ連絡リスト２１８の更新を要求することに応答して、更新モジュール５２０が、更新されたサーバ連絡リスト２１８を確認することができる。
【００９９】
複製モジュール５１０は、マスタ・デプロイメント・サーバ２００から主バックアップ・デプロイメント・サーバ３００に、アクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６を複製する。インアクティブ管理リソース３０２およびインアクティブ・マスタ・テーブル３０４は、それぞれアクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６の完全なコピーである。アクティブ管理リソース２０４に、ネットワーク・ブートストラップ・プログラムおよび他のネットワーク展開可能プログラムを含むデプロイメント・イメージ２０５を含めることができる。
【０１００】
一実施形態で、アクティブ管理リソース２０４でのデプロイメント・イメージ２０５の追加、除去、または交換に応答して、複製モジュール５１０が、インアクティブ管理リソース３０２に同一のデプロイメント・イメージ２０５の複製を追加し、除去し、または交換する。複製モジュール５１０は、副デプロイメント・サーバ４００で同一のデプロイメント・イメージ２０５の複製を追加し、除去し、または交換することもできる。同一の形で、複製モジュール５１０は、アクティブ・マスタ・テーブル２１６の内容をリアルタイムでインアクティブ・マスタ・テーブル３０４の内容に複製する。したがって、いつでも、主バックアップ・デプロイメント・サーバ３００は、すべての管理リソースの複製を備え、現在のマスタ・デプロイメント・サーバ２００の管理機能のすべてを実行することができる。
【０１０１】
もう１つの実施形態で、主バックアップ・デプロイメント・サーバ３００が、新しいマスタ・デプロイメント・サーバ２００として、故障したマスタ・デプロイメント・サーバ２００と交換されることに応答して、複製モジュール５１０を、アクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６の内容を複製するように構成することができる。複製モジュール５１０は、新しい主バックアップ・デプロイメント・サーバ３００として促された主バックアップ・デプロイメント・サーバ３００と交換する副デプロイメント・サーバ４００のアクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６を複製する。
【０１０２】
アクティブ化モジュール５１２は、一実施形態で、主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２およびインアクティブ・マスタ・テーブル３０４をアクティブ化し、イネーブルする。上で説明したように、インアクティブ管理リソース３０２およびインアクティブ・マスタ・テーブル３０４は、それぞれアクティブ管理リソース２０４およびアクティブ・マスタ・テーブル２１６の完全なコピーである。したがって、主バックアップ・デプロイメント・サーバ３００は、マスタ・デプロイメント・サーバ２００として昇格された瞬間に、単にすべての管理機能をアクティブ化し、新しいマスタ・デプロイメント・サーバ２００として動作する準備ができている。
【０１０３】
もう１つの実施形態で、アクティブ化モジュール５１２は、デプロイメント・サーバの分散論理リンク・リストに追加された副デプロイメント・サーバ４００のＰＸＥサーバ２０８をアクティブ化する。マスタ・デプロイメント・サーバ２００は、新たに追加された副デプロイメント・サーバ４００にサブネット１０８を割り当て、その後、アクティブ化モジュール５１２を介してネットワーク・ブート・サービスをアクティブ化することができる。
【０１０４】
昇格モジュール５１４は、一実施形態で、主バックアップ・デプロイメント・サーバ３００をマスタ・デプロイメント・サーバ２００に昇格させる。もう１つの実施形態では、昇格モジュール５１４が、副デプロイメント・サーバ４００を主バックアップ・デプロイメント・サーバ３００に昇格させる。もう１つの実施形態では、システム管理者が、自動昇格プロセスをディスエーブルすることができる。したがって、マスタ・デプロイメント・サーバ２００の除去に応答して、主バックアップ・デプロイメント・サーバ３００が昇格されなくなる。除去されたマスタ・デプロイメント・サーバ２００を、その後、マスタ・デプロイメント・サーバ２００としてシステム１００にもう一度挿入することができる。マスタ・デプロイメント・サーバ２００が除去され、自動昇格サービスがディスエーブルされている時間中には、システム１００全体のネットワーク・ブート・サービスがオフラインになる。
【０１０５】
図６および７は、図２のマスタ・デプロイメント・サーバ２００または図３の主バックアップ・デプロイメント・サーバ３００あるいはその両方によって実装できる、マスタ・テーブル・データ構造６００の一実施形態を示す概略ブロック図である。便宜上、マスタ・テーブル・データ構造６００が、第１部分６００ａおよび第２部分６００ｂに図示されているが、集合的にマスタ・テーブル・データ構造６００と呼称する。マスタ・テーブル・データ構造６００を、本明細書では図１のシステム１００を参照して説明する。
【０１０６】
マスタ・テーブル・データ構造６００に、複数のフィールドを含めることができ、各フィールドは、１ビットまたは一連のビットからなる。一実施形態で、マスタ・デプロイメント・サーバ２００は、デプロイメント・サーバの分散論理リンク・リストに関連してマスタ・テーブル・データ構造６００を使用する。マスタ・テーブル・データ構造６００に、長さが異なるものとすることのできる複数のフィールドが含まれる。図示のマスタ・テーブル・データ構造６００は、マスタ・テーブル・データ構造６００のすべてを含む図示ではなく、一部の主要な要素を示すものである。
【０１０７】
マスタ・テーブル・データ構造の第１部分６００ａに、マスタ・サーバＩＤ  ６０２、主バックアップ・サーバＩＤ  ６０４、および１つまたは複数の次下流サーバＩＤ  ６０６を含めることができる。マスタ・テーブル・データ構造の第２部分６００ｂに、総論理要素数６０８、主バックアップ・サーバ状態６１０、および１つまたは複数の次下流サーバ状態６１２を含めることができる。
【０１０８】
マスタ・サーバＩＤ  ６０２は、現在のマスタ・デプロイメント・サーバ２００の識別を示す。一実施形態で、デプロイメント・サーバの識別に、その特定のデプロイメント・サーバに割り当てられたインターネット・プロトコル（ＩＰ）アドレスが含まれる。主バックアップ・サーバＩＤ  ６０４は、現在の主バックアップ・デプロイメント・サーバ３００の識別を示す。次下流サーバＩＤ  ６０６は、論理チェーンで主バックアップ・デプロイメント・サーバ３００のすぐ下流に論理的に関連する副デプロイメント・サーバ４００の識別を示す。次下流サーバＩＤ  ６０６の別々のフィールドが、マスタ・テーブル・データ構造６００内に、主バックアップ・デプロイメント・サーバ３００の下で論理的に関連する最初の副デプロイメント・サーバ４００から論理チェーンの最下部のチェーンの終りの副デプロイメント・サーバ４００まで含まれる。
【０１０９】
前に説明したように、主バックアップ・デプロイメント・サーバ３００は、１つの例外を有するアクティブ・マスタ・テーブル２１６のコピーを維持する。マスタ・サーバＩＤ  ６０２が、主バックアップ・デプロイメント・サーバ３００の識別を示すように変更される。言い換えると、マスタ・サーバＩＤ  ６０２が、マスタ・テーブル・データ構造６００から除去され、したがって、主バックアップ・サーバＩＤ  ６０４が、マスタ・サーバＩＤ  ６０２の位置にあり、マスタ・デプロイメント・サーバ２００として主バックアップ・デプロイメント・サーバ３００を示す。したがって、主バックアップ・デプロイメント・サーバ３００がマスタ・デプロイメント・サーバ２００に昇格された後に、インアクティブ・マスタ・テーブル３０４が、即座に有効になり、昇格時にアクティブ・マスタ・テーブル２１６になる。昇格されたマスタ・デプロイメント・サーバ２００（以前の主バックアップ・デプロイメント・サーバ３００）は、次に使用可能な下流の副デプロイメント・サーバ４００を新しい主バックアップ・デプロイメント・サーバ３００として昇格させ、複製モジュール５１０が、アクティブ管理リソース２０４の複製を開始する。
【０１１０】
総論理要素数６０８フィールドは、分散論理リンク・リストに論理的に関連するデプロイメント・サーバの総数を示す。一実施形態で、総論理要素数６０８の保管された値は、マスタ・デプロイメント・サーバ２００を除外したものであり、したがって、０からｎまで変化する可能性がある。マスタ・デプロイメント・サーバ２００が唯一のデプロイメント・サーバであることに応答して、総論理要素数６０８フィールドに、値「０」が保管される。したがって、「０」の保管された値は、主バックアップ・デプロイメント・サーバ３００がないことを示す。「１」の保管された値は、主バックアップ・デプロイメント・サーバ３００があるが、副デプロイメント・サーバ４００がないことを示す。「２」の保管された値は、主バックアップ・デプロイメント・サーバ３００および１つの副デプロイメント・サーバ４００があることを示す。「３」以上ｎまでの保管された値は、２からｎ−１台までの副デプロイメント・サーバ４００が論理的にリンクされていることを示す。
【０１１１】
主バックアップ・サーバ状態６１０フィールドは、主バックアップ・デプロイメント・サーバ３００の現在の動作状態を示す。一実施形態で、主バックアップ・サーバ状態６１０フィールドに、ブール論理１バイト累積ビット単位値を含めることができ、ここで、ビット０は、マスタ・デプロイメント・サーバ２００からのハートビート信号に対する主バックアップ・デプロイメント・サーバ３００の応答を示す。さらに、主バックアップ・デプロイメント・サーバ３００に関して、ビット１およびビット２は、それぞれ次の上流および下流のデプロイメント・サーバの応答を示すことができる。
【０１１２】
一実施形態で、「０」をセットされたビット０は、主バックアップ・デプロイメント・サーバ３００がフル機能性を備えてオンラインであることを示し、「１」をセットされたビット０は、主バックアップ・デプロイメント・サーバ３００がマスタ・デプロイメント・サーバ２００からのハートビート信号に応答できないことを示すことができる。もう１つの実施形態で、「１」をセットされたビット１またはビット２あるいはその両方は、上流デプロイメント・サーバまたは下流デプロイメント・サーバあるいはその両方が、主バックアップ・デプロイメント・サーバ３００にオフラインを報告することを示すことができる。「０」をセットされたビット１またはビット２あるいはその両方は、上流デプロイメント・サーバまたは下流デプロイメント・サーバあるいはその両方が、主バックアップ・デプロイメント・サーバ３００にオンラインを報告することを示すことができる。
【０１１３】
次下流サーバ状態６１２フィールドは、１つまたは複数の副デプロイメント・サーバ４００がシステム１００に追加されている時に、主バックアップ・デプロイメント・サーバ３００のすぐ下流の副デプロイメント・サーバ４００などの現在の動作状態を示す。主バックアップ・サーバ状態６１０に似て、次下流サーバ状態６１２フィールドに、ブール論理１バイト累積ビット単位値を含めることができ、ここで、ビット０は、マスタ・デプロイメント・サーバ２００からのハートビート信号に対する副デプロイメント・サーバ４００の応答を示す。さらに、副デプロイメント・サーバ４００に関して、ビット１およびビット２は、それぞれ次の上流および下流のデプロイメント・サーバの応答を示すことができる。
【０１１４】
一実施形態で、「０」をセットされたビット０は、副デプロイメント・サーバ４００がフル機能性を備えてオンラインであることを示し、「１」をセットされたビット０は、副デプロイメント・サーバ４００がマスタ・デプロイメント・サーバ２００からのハートビート信号に応答できないことを示すことができる。もう１つの実施形態で、「１」をセットされたビット１またはビット２あるいはその両方は、上流デプロイメント・サーバまたは下流デプロイメント・サーバあるいはその両方が、副デプロイメント・サーバ４００にオフラインを報告することを示すことができる。「０」をセットされたビット１またはビット２あるいはその両方は、上流デプロイメント・サーバまたは下流デプロイメント・サーバあるいはその両方が、副デプロイメント・サーバ４００にオンラインを報告することを示すことができる。
【０１１５】
図８に、副デプロイメント・サーバ４００に関連するサーバ連絡リスト・データ構造７００の一実施形態を示す。サーバ連絡リスト・データ構造７００に、複数のフィールドを含めることができ、各フィールドは、１ビットまたは一連のビットからなる。一実施形態で、副デプロイメント・サーバ４００は、デプロイメント・サーバの分散論理リンク・リストに関連してサーバ連絡リスト・データ構造７００を使用する。サーバ連絡リスト・データ構造７００に、長さが異なるものとすることのできる複数のフィールドが含まれる。図示のサーバ連絡リスト・データ構造７００は、サーバ連絡リスト・データ構造７００のすべてを含む図示ではなく、一部の主要な要素を示すものである。図示のサーバ連絡リスト・データ構造７００に、サーバ役割７０２、マスタ・サーバＩＤ  ７０４、上流サーバＩＤ  ７０６、および下流サーバＩＤ  ７０８が含まれる。
【０１１６】
サーバ役割７０２は、サーバ連絡リスト・データ構造７００の所有者または保有者の役割を示す。一実施形態で、サーバ役割７０２は、ｘ００からｘ０Ｆの範囲の、１６進数値または類似するエンコーディングとすることができる。たとえば、０（ｘ００）が、サーバ連絡リスト・データ構造７００の所有者がマスタ・デプロイメント・サーバ２００であることを示すことができ、１（ｘ０１）が、サーバ連絡リスト・データ構造７００の所有者が主バックアップ・デプロイメント・サーバ３００であることを示すことができる。２（ｘ０２）の値が、有効な副デプロイメント・サーバ４００を示すことができる。サーバ役割７０２は、図２の除外インジケータ２１０とあいまって働くこともでき、ここで、１５（ｘ０Ｆ）は、関連するデプロイメント・サーバがマスタ・デプロイメント・サーバ２００への昇格から除外されることを示すことができる。
【０１１７】
マスタ・サーバＩＤ  ７０４は、現在のマスタ・デプロイメント・サーバ２００の識別を示す。マスタ・テーブル・データ構造６００に似て、デプロイメント・サーバの識別に、その特定のデプロイメント・サーバに割り当てられたインターネット・プロトコル（ＩＰ）アドレスを含めることができる。上流サーバＩＤ  ７０６は、分散論理リンク・リストですぐ上流に論理的に関連するデプロイメント・サーバの識別を示す。下流サーバＩＤ  ７０８は、分散論理リンク・リストですぐ下流に論理的に関連するデプロイメント・サーバの識別を示す。
【０１１８】
図９に、マスタ・デプロイメント・サーバ２００、主バックアップ・デプロイメント・サーバ３００、または副デプロイメント・サーバ４００、あるいはこれらの組合せに関連するメッセージ・パケット・データ構造８００の一実施形態を示す。メッセージ・パケット・データ構造８００に、複数のフィールドを含めることができ、各フィールドは、１ビットまたは一連のビットからなる。一実施形態で、マスタ・デプロイメント・サーバ２００は、メッセージ・パケット・データ構造８００を使用して、メッセージを別のデプロイメント・サーバに送信する。メッセージ・パケット・データ構造８００に、長さが異なるものとすることのできる複数のフィールドが含まれる。図示のメッセージ・パケット・データ構造８００は、メッセージ・パケット・データ構造８００のすべてを含む図示ではなく、一部の主要な要素を示すものである。メッセージ・パケット・データ構造８００に、ソースＩＤ  ８０２、宛先ＩＤ  ８０４、およびベンダ・オプション８０６が含まれる。
【０１１９】
ソースＩＤ  ８０２は、そのメッセージ・パケットの発信元の識別を示す。マスタ・テーブル・データ構造６００に似て、デプロイメント・サーバの識別に、その特定のデプロイメント・サーバに割り当てられたインターネット・プロトコル（ＩＰ）アドレスを含めることができる。宛先ＩＤ  ８０４は、そのメッセージ・パケットのターゲットの識別を示す。ベンダ・オプション８０６は、そのメッセージ・パケットの定義を示す。言い換えると、ベンダ・オプション８０６は、メッセージ・パケット記述子である。ＰＸＥプロトコルは、ベンダ・オプション・タグ「オプション６０」を使用して、ＰＸＥ応答を標準ＤＨＣＰ応答と区別する。ベンダ・オプション８０６は、ＰＸＥメッセージ・パケットのさらなる定義を与え、既存の「オプション６０」ベンダ・オプション・タグとあいまって使用される。
【０１２０】
一実施形態で、ベンダ・オプション８０６を検証モジュール５１８と共に使用して、サーバ連絡リスト２１８を検証する要求としてメッセージ・パケットを示すことができる。もう１つの実施形態で、ベンダ・オプション８０６を更新モジュール５２０と共に使用して、サーバ連絡リスト２１８を更新する要求としてメッセージ・パケットを示すことができる。もう１つの実施形態で、ベンダ・オプション８０６を確認モジュール５２４と共に使用して、サーバ連絡リスト２１８が更新されたことの確認としてメッセージ・パケットを示すことができる。したがって、ベンダ・オプション８０６は、ディスカバリおよび挿入プロトコル、保守プロトコル、回復プロトコル、およびシステム１００のネットワーク・ブート・サービスの保存に関連するすべての他のプロトコルを含む、これまでに説明したすべての通信およびメッセージと共に使用することができる。
【０１２１】
図１０、１１、および１２に、図５のサービス保存ユーティリティ５００によって実装できるサービス保存方法９００の一実施形態を示す概略流れ図を示す。便宜上、サービス保存方法９００を第１部分９００ａ、第２部分９００ｂ、および第３部分９００ｃで図示するが、集合的にサービス保存方法９００と呼称する。サービス保存方法９００を、本明細書では図１のシステム１００を参照して説明する。
【０１２２】
サービス保存方法９００ａに、マスタ・デプロイメント・サーバ２００を指定する動作９０２と、主バックアップ・デプロイメント・サーバ３００を指定する動作９０４と、１つまたは複数の副デプロイメント・サーバ４００を指定する動作９０６と、アクティブ・マスタ・テーブル２１６、インアクティブ・マスタ・テーブル３０４、およびサーバ連絡リスト２１８を構成する動作９０８と、アクティブ・マスタ・テーブル２１６およびサーバ連絡リスト２１８を検証する動作９１０と、デプロイメント・サーバの論理分布を監視する動作９１２と、イベントが検出されたかどうかを判定する動作９１４が含まれる。
【０１２３】
サービス保存方法９００ｂに、検出されたイベントがマスタ・デプロイメント・サーバ２００の故障であるかどうかを判定する動作９１６と、検出されたイベントが主バックアップ・デプロイメント・サーバ３００の故障であるかどうかを判定する動作９１８と、主バックアップ・デプロイメント・サーバ３００をマスタ・デプロイメント・サーバ２００に昇格させる動作９２０と、マスタ・デプロイメント・サーバ２００に昇格された主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２をアクティブ化する動作９２２と、新しいマスタ・デプロイメント・サーバ２００の下流の次の使用可能な副デプロイメント・サーバ４００を新しい主バックアップ・デプロイメント・サーバ３００にするために昇格させる動作９２４と、新しいマスタ・デプロイメント・サーバ２００の管理リソースを新しい主バックアップ・デプロイメント・サーバ３００に複製する動作９２６が含まれる。
【０１２４】
サービス保存方法９００ｃに、検出されたイベントが副デプロイメント・サーバ４００の故障であるかどうかを判定する動作９３８と、検出されたイベントが副デプロイメント・サーバ４００の挿入であるかどうかを判定する動作９４０と、必要に応じて挿入された副デプロイメント・サーバ４００を昇格させる動作９４２が含まれる。サービス保存方法９００ｃに、故障したデプロイメント・サーバのネットワーク・ブート・サービスを置換する動作９２８と、連絡リストの現在の内容を削除する動作９３０と、サーバ連絡リスト２１８の内容を更新する動作９３２と、サーバ連絡リスト２１８の内容を検証する動作９３４と、サーバ連絡リスト２１８の内容が正確であることを確認する動作９３６も含まれる。
【０１２５】
サービス保存方法９００は、マスタ・デプロイメント・サーバ２００、主バックアップ・デプロイメント・サーバ３００、または副デプロイメント・サーバ４００あるいはこれらの組合せに関連するサービス保存ユーティリティ５００のサービス保存能力を開始する。サービス保存方法９００は、図を明瞭にするためにある順次順序で図示されているが、システム１００は、これらの動作を並列に実行することができ、必ずしも図示の順序でなく実行することができ、あるいはその両方を行うことができる。
【０１２６】
サービス保存方法９００が開始され、構成モジュール５０８が、マスタ・デプロイメント・サーバ２００を指定し９０２、したがって、デプロイメント・サーバの分散論理リンク・リストの作成を開始する。マスタ・デプロイメント・サーバ２００は、分散論理リンク・リストの一番上のノードである。一実施形態で、構成モジュール５０８は、オンラインの最初の使用可能なデプロイメント・サーバをマスタ・デプロイメント・サーバ２００として指定する９０２。もう１つの実施形態では、システム管理者がマスタ・デプロイメント・サーバ２００を指定する９０２ことができる。
【０１２７】
次に、構成モジュール５０８が、主バックアップ・デプロイメント・サーバ３００を指定する９０４。一実施形態で、構成モジュール５０８は、オンラインの２番目に使用可能なデプロイメント・サーバを主バックアップ・デプロイメント・サーバ３００として指定する９０４。主バックアップ・デプロイメント・サーバ３００は、分散論理リンク・リストの２番目のノードである。構成モジュール５０８は、マスタ・デプロイメント・サーバ２００に最初に連絡したデプロイメント・サーバを主バックアップ・デプロイメント・サーバ３００として指定することができる。もう１つの実施形態では、システム管理者が主バックアップ・デプロイメント・サーバ３００を指定する９０４ことができる。
【０１２８】
次に、構成モジュール５０８は、必要に応じて１つまたは複数の副デプロイメント・サーバ４００を指定する９０６。一実施形態で、構成モジュール５０８は、マスタ・デプロイメント・サーバ２００および主バックアップ・デプロイメント・サーバ３００の後のすべての他のデプロイメント・サーバを副デプロイメント・サーバ４００として指定する９０６。すべての副デプロイメント・サーバ４００が、分散論理リンク・リストでマスタ・デプロイメント・サーバ２００および主バックアップ・デプロイメント・サーバ３００の下に論理的に関連するノードである。もう１つの実施形態では、システム管理者が副デプロイメント・サーバ４００を指定する９０６ことができる。もう１つの実施形態では、システム管理者が、関連するデプロイメント・サーバをマスタ・デプロイメント・サーバ２００として指定することから構成モジュール５０８を除外する除外インジケータ２１０など、個々のデバイス属性に基づいて、特定の順序で副デプロイメント・サーバ４００を置くことができる。
【０１２９】
デプロイメント・サーバの指定の後に、構成モジュール５０８は、マスタ・デプロイメント・サーバ２００のアクティブ・マスタ・テーブル２１６を構成する９０８。構成モジュール５０８は、アクティブ・マスタ・テーブル２１６をインアクティブ・マスタ・テーブル３０４にコピーするために複製モジュール５１０に信号を送ることができる。さらに、構成モジュール５０８は、めいめいのデプロイメント・サーバのサーバ連絡リスト２１８を確認する９０８ことができる。次に、検証モジュール５１８が、アクティブ・マスタ・テーブル２１６およびサーバ連絡リスト２１８を検証する９１０ことができる。
【０１３０】
検証の後に、モニタ・モジュール５０２が、初期化され、分散論理リンク・リストのデプロイメント・サーバの論理分布を監視し９１２始める。次に、検出モジュール５０４が、イベントが発生したかどうかを判定する９１４。イベントに、分散論理リンク・リストでの矛盾に関連する他の潜在的イベントの中でも故障するデプロイメント・サーバ、システム１００からのデプロイメント・サーバの除去、またはシステム１００へのデプロイメント・サーバの追加、あるいは他のシステム・イベントを含めることができる。検出モジュール５０４が、ハートビート間隔５１６などの事前に構成された間隔のうちにイベントを検出しない場合には、サービス保存方法９００は、モニタ・モジュール５０２を介する分散論理リンク・リストの保全性の監視９１２を継続する。
【０１３１】
その結果、検出モジュール５０４がイベントを検出した場合に、検出モジュール５０４は、検出されたイベントがマスタ・デプロイメント・サーバ２００の故障に起因するかどうかを判定する９１６ことができる。一実施形態で、検出モジュール５０４は、検証モジュール５１８とあいまって、何がイベントを引き起こしたかを確立することができる。検出モジュール５０４が、故障したマスタ・デプロイメント・サーバ２００がイベントをトリガしたと判定９１６しない場合には、検出モジュール５０４は、検出されたイベントが主バックアップ・デプロイメント・サーバ３００の故障に起因するかどうかを判定する９１８ことができる。
【０１３２】
検出モジュール５０４が、故障したマスタ・デプロイメント・サーバ２００がイベントをトリガしたと判定する９１６場合には、昇格モジュール５１４が、主バックアップ・デプロイメント・サーバ３００を新しいマスタ・デプロイメント・サーバ２００に昇格させる９２０。次に、アクティブ化モジュール５１２が、昇格された主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２をアクティブ化し９２２、イネーブルする。アクティブ化モジュール５１２は、アクティブ・マスタ・テーブル２１６になるようにインアクティブ・マスタ・テーブル３０４をアクティブ化する９２２こともできる。
【０１３３】
次に、昇格モジュール５１４が、次の使用可能な副デプロイメント・サーバ４００を新しい主バックアップ・デプロイメント・サーバ３００として昇格させる９２４。昇格モジュール５１４は、新しいマスタ・デプロイメント・サーバ２００からすぐ下流に論理的に関連する次の有資格の副デプロイメント・サーバ４００を昇格させる９２４。副デプロイメント・サーバ４００は、除外インジケータ２１０がその副デプロイメント・サーバ４００を昇格から除外しない限り、昇格に関して有資格である。
【０１３４】
昇格に続いて、複製モジュール５１０が、マスタ・デプロイメント・サーバ２００のアクティブ管理リソース２０４を新しい主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２に複製する９２６。複製モジュール５１０は、マスタ・デプロイメント・サーバ２００のアクティブ・マスタ・テーブル２１６を新しい主バックアップ・デプロイメント・サーバ３００のインアクティブ・マスタ・テーブル３０４に複製することもできる。
【０１３５】
次に、置換モジュール５０６が、故障したデプロイメント・サーバ、この場合にはマスタ・デプロイメント・サーバ２００のネットワーク・ブート・サービスを置換する９２８。新しいマスタ・デプロイメント・サーバ２００は、故障したデプロイメント・サーバのネットワーク・ブート・サービスを肩代わりすることができ、あるいは、ネットワーク・ブート・サービスを論理チェーン内の別のデプロイメント・サーバに割り当てることができる。次に、削除モジュール５２２が、影響を受けるサーバ連絡リスト２１８の現在の内容を削除する９３０か、サーバ連絡リスト２１８を削除する９３０ように、故障したデプロイメント・サーバによって影響を受けるすべてのデプロイメント・サーバに要求する。一般に、故障したデプロイメント・サーバは、故障したデプロイメント・サーバのすぐ上流またはすぐ下流あるいはその両方に論理的に位置するデプロイメント・サーバのサーバ連絡リスト２１８に影響する。
【０１３６】
次に、更新モジュール５２０が、影響を受けたサーバ連絡リスト２１８の内容を更新する９３２。次に、検証モジュール５１８が、影響を受けたサーバ連絡リスト２１８の更新された内容を検証する９３４。検証に続いて、確認モジュール５２４が、サーバ連絡リスト２１８が更新され、検証されたことを確認する９３６。次に、サービス保存方法９００は、分散論理リンク・リストの保全性および関連するデプロイメント・サーバの状態の監視９１２に戻る。
【０１３７】
検出モジュール５０４が、検出されたイベントが主バックアップ・デプロイメント・サーバ３００の故障に起因すると判定する９１８場合に、昇格モジュール５１４が、論理チェーンの下流の次の有資格の副デプロイメント・サーバ４００を新しい主バックアップ・デプロイメント・サーバ３００として昇格させる９２４。次に、複製モジュール５１０が、マスタ・デプロイメント・サーバ２００のアクティブ管理リソース２０４を新しい主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２に複製する９２６。
【０１３８】
次に、置換モジュール５０６が、故障したデプロイメント・サーバ、この場合には主バックアップ・デプロイメント・サーバ３００のネットワーク・ブート・サービスを置換する９２８。次に、削除モジュール５２２が、影響を受けるサーバ連絡リスト２１８の現在の内容を削除する９３０か、サーバ連絡リスト２１８を削除する９３０ように、故障したデプロイメント・サーバによって影響を受けるすべてのデプロイメント・サーバに要求する。
【０１３９】
次に、更新モジュール５２０が、影響を受けたサーバ連絡リスト２１８の内容を更新する９３２。次に、検証モジュール５１８が、影響を受けたサーバ連絡リスト２１８の更新された内容を検証する９３４。検証に続いて、確認モジュール５２４が、サーバ連絡リスト２１８が更新され、検証されたことを確認する９３６。次に、サービス保存方法９００は、分散論理リンク・リストの保全性および関連するデプロイメント・サーバの状態の監視９１２に戻る。
【０１４０】
検出モジュール５０４が、検出されたイベントが主バックアップ・デプロイメント・サーバ３００の故障に起因しないと判定する９１８場合に、検出モジュール５０４は、検出されたイベントが副デプロイメント・サーバ４００の故障に起因するかどうかを判定する９３８。検出モジュール５０４が、検出されたイベントが副デプロイメント・サーバ４００の故障に起因しないと判定する９３８場合に、検出モジュール５０４は、検出されたイベントが副デプロイメント・サーバ４００の挿入に起因するかどうかを判定する９４０。
【０１４１】
検出モジュール５０４が、検出されたイベントが副デプロイメント・サーバ４００の故障に起因すると判定する９３８場合に、置換モジュール５０６が、故障したデプロイメント・サーバ、この場合には副デプロイメント・サーバ４００のネットワーク・ブート・サービスを置換する９２８。次に、削除モジュール５２２が、影響を受けるサーバ連絡リスト２１８の現在の内容を削除する９３０か、サーバ連絡リスト２１８を削除する９３０ように、故障したデプロイメント・サーバによって影響を受けるすべてのデプロイメント・サーバに要求する。
【０１４２】
次に、更新モジュール５２０が、影響を受けたサーバ連絡リスト２１８の内容を更新する９３２。次に、検証モジュール５１８が、影響を受けたサーバ連絡リスト２１８の更新された内容を検証する９３４。検証に続いて、確認モジュール５２４が、サーバ連絡リスト２１８が更新され、検証されたことを確認する９３６。次に、サービス保存方法９００は、分散論理リンク・リストの保全性および関連するデプロイメント・サーバの状態の監視９１２に戻る。
【０１４３】
検出モジュール５０４が、検出されたイベントが副デプロイメント・サーバ４００の挿入に起因しないと判定する９４０場合に、サービス保存方法９００は終了する。一実施形態で、サービス保存方法９００は、検出モジュール５０４が未知のイベントを検出したことをシステム管理者に通知する。もう１つの実施形態では、サービス保存方法９００が、分散論理リンク・リストの保全性の監視９１２に戻ることができる。その代わりに、サービス保存方法９００が、追加の定義されたイベントを含み、トリガされたイベントの原因の推論を継続することができる。
【０１４４】
検出モジュール５０４が、検出されたイベントが副デプロイメント・サーバ４００の挿入に起因すると判定する９４０場合に、昇格モジュール５１４が、必要に応じて、挿入された副デプロイメント・サーバ４００を昇格させる９４２ことができる。たとえば、システム管理者が、論理チェーンで既に論理的にリンクされている他の副デプロイメント・サーバ４００より高い、優先順位インジケータ２１２によって示される優先順位を、挿入された副デプロイメント・サーバ４００に与えることができる。
【０１４５】
次に、削除モジュール５２２が、影響を受けるサーバ連絡リスト２１８の現在の内容を削除する９３０か、サーバ連絡リスト２１８を削除する９３０ように、故障したデプロイメント・サーバによって影響を受けるすべてのデプロイメント・サーバに要求する。次に、更新モジュール５２０が、影響を受けたサーバ連絡リスト２１８の内容を更新する９３２。
【０１４６】
更新に続いて、検証モジュール５１８が、影響を受けたサーバ連絡リスト２１８の更新された内容を検証する９３４。検証に続いて、確認モジュール５２４が、サーバ連絡リスト２１８が更新され、検証されたことを確認する９３６。次に、サービス保存方法９００は、分散論理リンク・リストの保全性および関連するデプロイメント・サーバの状態の監視９１２に戻る。
【０１４７】
本発明によって与えられるネットワーク・ブート・サービスの保存は、全体的なシステムの依存性および可用性に実際の前向きの影響を有することができる。ある種の実施形態で、本発明は、アップタイム、アプリケーション可用性、およびリアル・タイム・ビジネス・パフォーマンスを改善し、これらのすべてが、総所有コストの引き下げをもたらす。システム・リソースの利用度を改善するほかに、本発明の実施形態は、単一故障点の危険性を除去し、システムに、ネットワーク・ブート・サーバならびにすべての他のタイプのサーバのリストの保全性を維持する方法を与える。
【０１４８】
本明細書に含まれる概略流れ図は、一般に、論理流れ図として示される。したがって、図示の順序および示された動作は、本発明の一実施形態を示す。機能、論理、または効果において図示された方法の１つまたは複数の動作あるいはその一部と同等である他の動作および方法を考えることができる。さらに、使用されたフォーマットおよび記号は、その方法の論理動作を説明するために提供され、その方法の範囲を制限しないものと理解される。さまざまな種類の矢印および線が流れ図で使用されている場合があるが、これらは、対応する方法の範囲を制限しないものと理解される。実際に、一部の矢印または他の連結記号は、方法の論理的流れだけを示すのに使用される場合がある。たとえば、矢印が、図示された方法の列挙された動作の間の指定されない持続時間の待ち期間または監視期間を示す場合がある。さらに、特定の方法が行われる順序は、図示の対応する動作の順序に厳密に従う場合とそうでない場合がある。
【０１４９】
本明細書全体を通じて、「一実施形態」、「実施形態」、または類似する言葉への言及は、その実施形態に関して説明される特定の特徴、構造、または特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、句「一実施形態で」、「実施形態で」、または類似する言葉の出現は、本明細書全体を通じて、すべてが同一の実施形態を指す場合があるが、必ずしもそうとは限らない。
【０１５０】
信号担持媒体への言及は、信号を生成するか、信号を生成させるか、ディジタル処理装置で機械可読命令を実行させることのできるすべての形をとることができる。信号担持媒体は、伝送線、コンパクト・ディスク、ディジタルビデオ・ディスク、磁気テープ、ベルヌーイ・ドライブ、磁気ディスク、パンチ・カード、フラッシュ・メモリ、集積回路、または他のディジタル処理装置メモリ・デバイスによって実施することができる。
【０１５１】
さらに、本発明の説明された特徴、構造、または特性を、１つまたは複数の実施形態で任意の適当な形で組み合わせることができる。上の説明では、本発明の実施形態の完全な理解を提供するために、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップの例など、多数の具体的な詳細を提供する。しかし、当業者は、その特定の詳細のうちの１つまたは複数なしで、あるは他の方法、コンポーネント、材料などを用いて本発明を実践できることを認めるであろう。他の場合に、本発明の諸態様を不明瞭にしないように、周知の構造、材料、または動作は、詳細には図示せず、説明しない。
【０１５２】
本発明を、その趣旨または本質的特性から逸脱せずに他の特定の形で実施することができる。説明された実施形態は、すべての点で、例示的であって制限的でないものとしてのみ考えられなければならない。したがって、本発明の範囲は、前述の説明ではなく添付請求項によって示される。請求項の同等性の意味および範囲に含まれるすべての変更が、その範囲に含まれなければならない。
【図面の簡単な説明】
【０１５３】
【図１】ネットワーク・ブート・サービス・システムの一実施形態を示す概略ブロック図である。
【図２】マスタ・デプロイメント・サーバの一実施形態を示す概略ブロック図である。
【図３】主バックアップ・デプロイメント・サーバの一実施形態を示す概略ブロック図である。
【図４】副デプロイメント・サーバの一実施形態を示す概略ブロック図である。
【図５】サービス保存ユーティリティの一実施形態を示す概略ブロック図である。
【図６】マスタ・テーブル・データ構造の一実施形態を示す概略ブロック図である。
【図７】マスタ・テーブル・データ構造の一実施形態を示す概略ブロック図である。
【図８】サーバ連絡リスト・データ構造の一実施形態を示す概略ブロック図である。
【図９】パケット・データ構造の一実施形態を示す概略ブロック図である。
【図１０】サービス保存方法の一実施形態を示す概略流れ図である。
【図１１】サービス保存方法の一実施形態を示す概略流れ図である。
【図１２】サービス保存方法の一実施形態を示す概略流れ図である。
【符号の説明】
【０１５４】
１００  システム
１０２  マスタ・デプロイメント・サーバ
１０４  主バックアップ・デプロイメント・サーバ
１０６  副デプロイメント・サーバ
１０８  サブネット
１１０  クライアント・ネットワーク
１１２  サーバ・ネットワーク
１１４  コンピュータ・クライアント
２００  マスタ・デプロイメント・サーバ
２０２  通信モジュール
２０４  アクティブ管理リソース
２０５  デプロイメント・イメージ
２０６  メモリ・デバイス
２０８  ＰＸＥサーバ
２１０  除外インジケータ
２１２  優先順位インジケータ
２１４  サービス保存ユーティリティ
２１６  アクティブ・マスタ・テーブル
２１８  サーバ連絡リスト
３００  主バックアップ・デプロイメント・サーバ
３０２  インアクティブ管理リソース
３０４  インアクティブ・マスタ・テーブル
４００  副デプロイメント・サーバ
５００  サービス保存ユーティリティ
５０２  モニタ・モジュール
５０４  検出モジュール
５０６  置換モジュール
５０８  構成モジュール
５１０  複製モジュール
５１２  アクティブ化モジュール
５１４  昇格モジュール
５１６  ハートビート間隔
５１８  検証モジュール
５２０  更新モジュール
５２２  削除モジュール
５２４  確認モジュール
６００  マスタ・テーブル・データ構造
６０２  マスタ・サーバＩＤ
６０４  主バックアップ・サーバＩＤ
６０６  次下流サーバＩＤ
６０８  総論理要素数
６１０  主バックアップ・サーバ状態
６１２  次下流サーバ状態
７００  サーバ連絡リスト・データ構造
７０２  サーバ役割
７０４  マスタ・サーバＩＤ
７０６  上流サーバＩＤ
７０８  下流サーバＩＤ
８００  メッセージ・パケット・データ構造
８０２  ソースＩＤ
８０４  宛先ＩＤ
８０６  ベンダ・オプション
９００  サービス保存方法
９０２  マスタ・デプロイメント・サーバ２００を指定する動作
９０４  主バックアップ・デプロイメント・サーバ３００を指定する動作
９０６  副デプロイメント・サーバ４００を指定する動作
９０８  アクティブ・マスタ・テーブル２１６、インアクティブ・マスタ・テーブル３０４、およびサーバ連絡リスト２１８を構成する動作
９１０  アクティブ・マスタ・テーブル２１６およびサーバ連絡リスト２１８を検証する動作
９１２  デプロイメント・サーバの論理分布を監視する動作
９１４  イベントが検出されたかどうかを判定する動作
９１６  検出されたイベントがマスタ・デプロイメント・サーバ２００の故障であるかどうかを判定する動作
９１８  検出されたイベントが主バックアップ・デプロイメント・サーバ３００の故障であるかどうかを判定する動作
９２０  主バックアップ・デプロイメント・サーバ３００をマスタ・デプロイメント・サーバ２００に昇格させる動作
９２２  マスタ・デプロイメント・サーバ２００に昇格された主バックアップ・デプロイメント・サーバ３００のインアクティブ管理リソース３０２をアクティブ化する動作
９２４  新しいマスタ・デプロイメント・サーバ２００の下流の次の使用可能な副デプロイメント・サーバ４００を新しい主バックアップ・デプロイメント・サーバ３００にするために昇格させる動作
９２６  新しいマスタ・デプロイメント・サーバ２００の管理リソースを新しい主バックアップ・デプロイメント・サーバ３００に複製する動作
９２８  故障したデプロイメント・サーバのネットワーク・ブート・サービスを置換する動作
９３０  連絡リストの現在の内容を削除する動作
９３２  サーバ連絡リスト２１８の内容を更新する動作
９３４  サーバ連絡リスト２１８の内容を検証する動作
９３６  サーバ連絡リスト２１８の内容が正確であることを確認する動作
９３８  検出されたイベントが副デプロイメント・サーバ４００の故障であるかどうかを判定する動作
９４０  検出されたイベントが副デプロイメント・サーバ４００の挿入であるかどうかを判定する動作
９４２  必要に応じて挿入された副デプロイメント・サーバ４００を昇格させる動作
【図１】
2007183918.tif 000003
【図２】
2007183918.tif 000004
【図３】
2007183918.tif 000005
【図４】
2007183918.tif 000006
【図５】
2007183918.tif 000007
【図６】
2007183918.tif 000008
【図７】
2007183918.tif 000009
【図８】
2007183918.tif 000010
【図９】
2007183918.tif 000011
【図１０】
2007183918.tif 000012
【図１１】
2007183918.tif 000013
【図１２】
2007183918.tif 000014