(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022040028
(43)【公開日】2022-03-10
(54)【発明の名称】リアルタイム耐障害性チェックポインティング
(51)【国際特許分類】
G06F 11/20 20060101AFI20220303BHJP
G06F 9/50 20060101ALI20220303BHJP
G06F 13/36 20060101ALI20220303BHJP
G06F 13/372 20060101ALI20220303BHJP
【FI】
G06F11/20 628
G06F9/50 120A
G06F13/36 310E
G06F13/372 C
【審査請求】未請求
【請求項の数】29
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021134612
(22)【出願日】2021-08-20
(31)【優先権主張番号】17/003,808
(32)【優先日】2020-08-26
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521065528
【氏名又は名称】ストラタス テクノロジーズ アイルランド リミテッド
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】チャールズ ジェイ. ホーバス
(72)【発明者】
【氏名】レイ ツァオ
【テーマコード(参考)】
5B034
5B061
【Fターム(参考)】
5B034BB16
5B034CC01
5B061BA01
5B061BC01
5B061QQ01
(57)【要約】
【課題】リアルタイム耐障害性チェックポイントを提供すること
【解決手段】部分的に、本開示は、リアルタイム耐障害性システムに関する。本システムは、第1のコンピューティングデバイスと、第2のコンピューティングデバイスと、ハードウェア相互接続とを含み得る。第1のコンピューティングデバイスは、1つ以上のメモリデバイスと、1つ以上のプロセッサと、タイムスロットベースのバスを経由してデバイスデータを受信し、出力データを伝送するように動作可能な第1のネットワークインターフェースであって、出力データは、デバイスデータを処理することから発生される、第1のネットワークインターフェースと、第1のリアルタイムチェックポイントエンジンとを含み得る。第2のコンピューティングデバイスは、第1のコンピューティングデバイスと類似するコンポーネントまたは同一のコンポーネントを含み得る。
【選択図】なし
【特許請求の範囲】
【請求項1】
リアルタイム耐障害性コンピューティングシステムであって、
第1のコンピューティングデバイスであって、
1つ以上のメモリデバイスと、
1つ以上のプロセッサと、
タイムスロットベースのバスを経由してデバイスデータを受信し、出力データを伝送するように動作可能な第1のネットワークインターフェースであって、前記出力データは、デバイスデータを処理することから発生される、第1のネットワークインターフェースと、
第1のリアルタイムチェックポイントエンジンと
を備える、第1のコンピューティングデバイスと、
第2のコンピューティングデバイスであって、
1つ以上のメモリデバイスと、
1つ以上のプロセッサと、
前記タイムスロットベースのバスを経由してデバイスデータを受信するように動作可能な第2のネットワークインターフェースと、
第2のリアルタイムチェックポイントエンジンと
を備える、第2のコンピューティングデバイスと、
前記第1のコンピューティングデバイスと前記第2のコンピューティングデバイスとの間のデータ交換を可能にするように動作可能なハードウェア相互接続と
を備え、
チェックポイントは、前記第1および第2のコンピューティングデバイスへの、またはそれからのいずれのリアルタイム通信への干渉も回避するために、前記タイムスロットベースのバス上に配分されたより低い優先度の通信タイムスロットの間に前記第1または前記第2のリアルタイムチェックポイントエンジンによって発生される、リアルタイム耐障害性コンピューティングシステム。
【請求項2】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは、前記第1のコンピューティングデバイスが、故障を被る場合、前記第2のコンピューティングデバイスが、デバイスデータを処理し続け、前記出力データを発生させ、前記タイムスロットベースのバスを使用して前記出力データを伝送するように、受信されたデバイスデータを同時に処理する、請求項1に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項3】
チェックポイント動作は、前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスが、より低い優先度の通信スロットが生じることに先立って、相違する出力データを生成しても、常時、前記より低い優先度の通信スロットの発生まで延期される、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項4】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、故障が生じた場合に相違する出力データのリリースを回避するために、後続チェックポイント後まで、前記タイムスロットベースのバスと通信する1つ以上のデバイスへの出力データのリリースを遅延させる、請求項3に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項5】
前記第1のコンピューティングデバイスは、低優先度のデータを備える出力データが、低優先度のタイムスロットを使用して伝送されるとき、サイクル毎にチェックポイントを発生させる、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項6】
前記デバイスは、センサであり、前記出力データは、センサデータを備え、前記センサデータは、制御システムのための入力として動作可能である、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項7】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、前記第1のコンピューティングデバイスが、1つ以上の故障モードを被る場合、第2の処理デバイスが処理を継続するための時間遅延が、ゼロであるように、アクティブにデバイスデータを処理し、出力データを生成している、請求項1に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項8】
1つ以上のタイムスロットの持続時間は、検出周期だけ増加され、前記検出周期は、約1マイクロ秒~約100マイクロ秒に及ぶ、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項9】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、一貫しない出力データのリリースを回避するために、次のチェックポイント後まで、前記タイムスロットベースのバスと通信するデバイスへの出力データのリリースを遅延させる、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項10】
前記第1のコンピューティングデバイスが、チェックポイント後に正常に動作している場合、前記第1のコンピューティングデバイスは、いずれの遅延された出力データもリリースする、請求項9に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項11】
前記第1のコンピューティングデバイスは、その出力データの全てを前記第2のコンピューティングデバイスに伝送し、そのような出力データが、前記第1のコンピューティングデバイスの故障の発生に応じてドロップされることを回避する、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項12】
前記第1のコンピューティングデバイスが、故障する場合、前記第2のコンピューティングデバイスは、最後のチェックポイントの間に発生された前記第1のコンピューティングデバイスの出力データのリリースを引き継ぐ、請求項11に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項13】
前記第1のコンピューティングデバイスのみが、いかなる故障も生じていないときに出力データのリリースを取り扱い、並行して、そのような出力データを前記第2のコンピューティングデバイスと共有する、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項14】
1つ以上のデバイスからの前記デバイスデータは、前記タイムスロットベースのバスを経由して前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスに伝送される、請求項1に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項15】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは、ブロードキャストまたはマルチキャストを通して直接着信データを受信する、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項16】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスはそれぞれ、前記1つ以上のメモリデバイス内に記憶され、前記1つ以上のプロセッサのそれぞれの上で実行される個別のネットワークドライバと、チェックポイントシムと、記憶装置ドライバとを備える、個別の非仮想オペレーティングシステム(OS)を備える、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項17】
前記ネットワークドライバは、リリースコーディネータおよびリリースノーティファイアと通信するリプリケータを備える、請求項16に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項18】
前記第1および第2のコンピューティングデバイスの1つ以上のメモリデバイス内に記憶される1つ以上のネットワーキングプログラムは、前記ハードウェア相互接続、前記第1のネットワークインターフェース、および前記第2のネットワークインターフェースのうちの1つ以上のものを使用して、出力データの伝送を遅延および協調させる、請求項3に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項19】
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスはそれぞれ、前記1つ以上のメモリデバイス内に記憶され、個別のハイパーバイザを用いて実行される1つ以上の個別のネットワークサポートアプリケーションと、チェックポイントエンジンと、1つ以上の記憶装置サポートアプリケーションとを備える、個別の仮想オペレーティングシステム(OS)を備える、請求項2に記載のリアルタイム耐障害性コンピューティングシステム。
【請求項20】
リアルタイムで動作システムを制御する方法であって、
一次ノードおよび二次ノードにおいて、タイムスロットベースのバスと電気通信する1つ以上のデバイスからデバイスデータを受信することであって、前記バスは、2つ以上の優先度レベルのタイムスロットに従ってデータを受信するように動作可能である、ことと、
第1のタイムスロットの間に、一次ノードにおいてチェックポイントを発生させ、前記チェックポイントデータを二次ノードに伝送することであって、前記第1のタイムスロットは、より低い優先度のタイムスロットである、ことと、
前記受信されたデバイスデータを処理することに応答して、前記一次ノードおよび前記二次ノードにおいて出力データを発生させることと、
前記一次ノードから、第2のタイムスロットを使用して、前記バスを経由して前記出力データを伝送することであって、前記第2のタイムスロットは、より高い優先度のタイムスロットであり、前記第1のノードおよび前記第2のノードは両方とも、アクティブモードにある、ことと
を含む、方法。
【請求項21】
より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送することをさらに含む、請求項20に記載の方法。
【請求項22】
出力データが、その状態が現在のチェックポイントに繰り越された前記ノードからリリースされるように、前記一次および前記二次ノードの両方の上で実行される個別のネットワークソフトウェアモジュールを使用してネットワークデータをゲーティングすることをさらに含む、請求項20に記載の方法。
【請求項23】
出力データの伝送を高優先度のタイムスロットと同期させることをさらに含み、前記出力データは、前記動作システムによって受信される、請求項22に記載の方法。
【請求項24】
より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送することをさらに含む、請求項22に記載の方法。
【請求項25】
前記一次ノードを使用して、その個別の発信データの全てを前記二次ノードに伝送し、そのような発信データが、前記一次ノードの故障の発生に応じてドロップされないように回避することをさらに含む、請求項20に記載の方法。
【請求項26】
チェックポイントは、前記ハードウェア相互接続を使用して伝送される、請求項1に記載のシステム。
【請求項27】
一次ノードまたは二次ノードの故障の検出を考慮するために、1つ以上のタイムスロットの持続時間を増加させることをさらに含む、請求項20に記載の方法。
【請求項28】
1つ以上のタイムスロットの持続時間は、検出周期だけ増加され、前記検出周期は、約1マイクロ秒~約100マイクロ秒に及ぶ、請求項27に記載の方法。
【請求項29】
前記チェックポイントデータは、ハードウェア相互接続を使用して伝送される、請求項20に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
チェックポインティング技術は、コンピュータシステムの耐障害性挙動を達成するための手段である。現在のチェックポインティング技術は、仮想化ベースまたはOSベースのいずれかであっても、チェックポイントが、どの時点でも生じるように要求され、それによって、システム応答時間に影響を及ぼし、期限に遅れ得る点において、ハードリアルタイム動作と互換性がない。
【0002】
リアルタイムサポートおよび耐障害性動作の両方を要求するアプリケーションおよびシステムは、現在、カスタムソフトウェアおよび/またはハードウェアを用いて設計されている。それらは、特注品であり、特定の産業および目的のために調整される。これは、そのようなシステムを開発、展開、および保守するために有意な支出および時間を要求する。
【0003】
本開示は、上記のようなチェックポインティングと関連付けられる課題に対処しながら、種々の産業およびサポートレベルにおける使用のために好適なリアルタイム耐障害性を提供するシステムおよび方法を提供する。
【発明の概要】
【課題を解決するための手段】
【0004】
部分的に、本開示は、リアルタイム耐障害性コンピューティングシステムに関する。本システムは、第1のコンピューティングデバイスと、第2のコンピューティングデバイスと、ハードウェア相互接続とを含んでもよい。第1のコンピューティングデバイスは、1つ以上のメモリデバイスと、1つ以上のプロセッサと、タイムスロットベースのバスを経由してデバイスデータを受信し、出力データを伝送するように動作可能な第1のネットワークインターフェースであって、出力データは、デバイスデータを処理することから発生される、第1のネットワークインターフェースと、第1のリアルタイムチェックポイントエンジンとを含んでもよい。第2のコンピューティングデバイスは、1つ以上のメモリデバイスと、1つ以上のプロセッサと、タイムスロットベースのバスを経由してデバイスデータを受信するように動作可能な第2のネットワークインターフェースと、第2のリアルタイムチェックポイントエンジンとを含んでもよい。一実施形態では、ハードウェア相互接続は、第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間のデータ交換を可能にするように動作可能である。一実施形態では、チェックポイントは、第1および第2のコンピューティングデバイスへの、またはそれからのいずれのリアルタイム通信への干渉も回避するために、タイムスロットベースのバス上に配分されたより低い優先度の通信タイムスロットの間に第1または第2のリアルタイムチェックポイントエンジンによって発生される。
【0005】
一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスは、第1のコンピューティングデバイスが、故障を被る場合、第2のコンピューティングデバイスが、デバイスデータを処理し続け、出力データを発生させ、タイムスロットベースのバスを使用して出力データを伝送するように、受信されたデバイスデータを同時に処理する。一実施形態では、チェックポイント動作は、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスが、より低い優先度の通信スロットが生じることに先立って、相違する出力データを生成しても、常時、より低い優先度の通信スロットの発生まで延期される。一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスは両方とも、故障が生じた場合に相違する出力データのリリースを回避するために、後続チェックポイント後まで、タイムスロットベースのバスと通信する1つ以上のデバイスへの出力データのリリースを遅延させる。
【0006】
一実施形態では、第1のコンピューティングデバイスは、低優先度のデータを含む出力データが、低優先度のタイムスロットを使用して伝送されるとき、サイクル毎にチェックポイントを発生させる。一実施形態では、本デバイスは、センサであり、出力データは、センサデータを含み、センサデータは、制御システムのための入力として動作可能である。一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスは両方とも、第1のコンピューティングデバイスが、1つ以上の故障モードを被る場合、第2の処理デバイスが処理を継続するための時間遅延が、約ゼロまたはゼロであるように、アクティブにデバイスデータを処理し、出力データを生成している。
【0007】
一実施形態では、1つ以上のタイムスロットの持続時間は、検出周期だけ増加され、検出周期は、約1マイクロ秒~約100マイクロ秒に及ぶ。一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスは両方とも、一貫しない出力データのリリースを回避するために、次のチェックポイント後まで、タイムスロットベースのバスと通信するデバイスへの出力データのリリースを遅延させる。一実施形態では、第1のコンピューティングデバイスが、チェックポイント後に正常に動作している場合、第1のコンピューティングデバイスは、いずれの遅延された出力データもリリースする。一実施形態では、第1のコンピューティングデバイスは、その出力データの全てを第2のコンピューティングデバイスに伝送し、そのような出力データが、第1のコンピューティングデバイスの故障の発生に応じてドロップされることを回避する。
【0008】
一実施形態では、第1のコンピューティングデバイスが、故障する場合、第2のコンピューティングデバイスは、最後のチェックポイントの間に発生された第1のコンピューティングデバイスの出力データのリリースを引き継ぐ。一実施形態では、第1のコンピューティングデバイスのみが、いかなる故障も生じていないときに出力データのリリースを取り扱い、並行して、そのような出力データを第2のコンピューティングデバイスと共有する。一実施形態では、1つ以上のデバイスからのデバイスデータは、タイムスロットベースのバスを経由して第1のコンピューティングデバイスおよび第2のコンピューティングデバイスに伝送される。一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスは、ブロードキャストまたはマルチキャストを通して直接着信データを受信する。
【0009】
一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスはそれぞれ、1つ以上のメモリデバイス内に記憶され、1つ以上のプロセッサのそれぞれの上で実行される、個別のネットワークドライバと、チェックポイントシムと、記憶装置ドライバとを含む、個別の非仮想オペレーティングシステム(OS)を含む。一実施形態では、ネットワークドライバは、リリースコーディネータおよびリリースノーティファイアと通信するリプリケータを含む。一実施形態では、第1および第2のコンピューティングデバイスの1つ以上のメモリデバイス内に記憶される1つ以上のネットワーキングプログラムは、ハードウェア相互接続、第1のネットワークインターフェース、および第2のネットワークインターフェースのうちの1つ以上のものを使用して、出力データの伝送を遅延および協調させる。一実施形態では、第1のコンピューティングデバイスおよび第2のコンピューティングデバイスはそれぞれ、1つ以上のメモリデバイス内に記憶され、個別のハイパーバイザを用いて実行される、1つ以上の個別のネットワークサポートアプリケーションと、チェックポイントエンジンと、1つ以上の記憶装置サポートアプリケーションとを含む、個別の仮想オペレーティングシステム(OS)を含む。一実施形態では、チェックポイントは、ハードウェア相互接続を使用して伝送される。
【0010】
部分的に、本開示は、リアルタイムで動作システムを制御する方法に関する。本方法は、一次ノードおよび二次ノードにおいて、タイムスロットベースのバスと電気通信する1つ以上のデバイスからデバイスデータを受信するステップであって、バスは、2つ以上の優先度レベルのタイムスロットに従ってデータを受信するように動作可能である、ステップと、第1のタイムスロットの間に、一次ノードにおいてチェックポイントを発生させ、チェックポイントデータを二次ノードに伝送するステップであって、第1のタイムスロットは、より低い優先度のタイムスロットである、ステップと、受信されたデバイスデータを処理することに応答して、一次ノードおよび二次ノードにおいて出力データを発生させるステップと、一次ノードから、第2のタイムスロットを使用して、バスを経由して出力データを伝送するステップであって、第2のタイムスロットは、より高い優先度のタイムスロットであり、第1のノードおよび第2のノードは両方とも、アクティブモードにある、ステップとを含んでもよい。
【0011】
一実施形態では、本方法はさらに、より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送するステップを含む。一実施形態では、本方法はさらに、出力データが、その状態が現在のチェックポイントに繰り越されたノードからリリースされるように、一次および二次ノードの両方の上で実行される個別のネットワークソフトウェアモジュールを使用してネットワークデータをゲーティングするステップを含む。一実施形態では、本方法はさらに、出力データの伝送を高優先度のタイムスロットと同期させるステップを含み、出力データは、動作システムによって受信される。
【0012】
一実施形態では、本方法はさらに、より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送するステップを含む。一実施形態では、本方法はさらに、一次ノードを使用して、その個別の発信データの全てを二次ノードに伝送し、そのような発信データが、一次ノードの故障の発生に応じてドロップされないように回避するステップを含む。一実施形態では、チェックポイントデータは、ハードウェア相互接続を使用して伝送される。
【0013】
タイムスロットベースのバスを使用して伝送されるべきデータのものと合致する、または別様にそれと互換性のある優先度レベルを有するタイムスロットと同期されるようにデータを選択的にリリースするステップが、本開示の種々の実施形態において実施される。加えて、例えば、チェックポイントの1つ以上の段階等のプロセッサ/コンピューティングデバイス集約的である、ハードウェア相互接続を使用するデータの伝送は、タイムスロットベースのバス上の低優先度のタイムスロットの間に伝送される。種々の実施形態では、ハードウェア相互接続は、タイムスロットベースのバスとは別個の通信チャネルである。
【0014】
本開示は、異なる側面および実施形態に関するが、本明細書に開示される異なる側面および実施形態が、適宜、組み合わせシステムとして、または部分的に、別個のコンポーネント、デバイス、およびシステムとして、ともに統合される、組み合わせられる、または使用され得ることを理解されたい。したがって、本明細書に開示される各実施形態は、所与の実装に関して適宜、様々な程度で側面のそれぞれに組み込まれることができる。
例えば、本発明は、以下の項目を提供する。
(項目1)
リアルタイム耐障害性コンピューティングシステムであって、
第1のコンピューティングデバイスであって、
1つ以上のメモリデバイスと、
1つ以上のプロセッサと、
タイムスロットベースのバスを経由してデバイスデータを受信し、出力データを伝送するように動作可能な第1のネットワークインターフェースであって、前記出力データは、デバイスデータを処理することから発生される、第1のネットワークインターフェースと、
第1のリアルタイムチェックポイントエンジンと
を備える、第1のコンピューティングデバイスと、
第2のコンピューティングデバイスであって、
1つ以上のメモリデバイスと、
1つ以上のプロセッサと、
前記タイムスロットベースのバスを経由してデバイスデータを受信するように動作可能な第2のネットワークインターフェースと、
第2のリアルタイムチェックポイントエンジンと
を備える、第2のコンピューティングデバイスと、
前記第1のコンピューティングデバイスと前記第2のコンピューティングデバイスとの間のデータ交換を可能にするように動作可能なハードウェア相互接続と
を備え、
チェックポイントは、前記第1および第2のコンピューティングデバイスへの、またはそれからのいずれのリアルタイム通信への干渉も回避するために、前記タイムスロットベースのバス上に配分されたより低い優先度の通信タイムスロットの間に前記第1または前記第2のリアルタイムチェックポイントエンジンによって発生される、リアルタイム耐障害性コンピューティングシステム。
(項目2)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは、前記第1のコンピューティングデバイスが、故障を被る場合、前記第2のコンピューティングデバイスが、デバイスデータを処理し続け、前記出力データを発生させ、前記タイムスロットベースのバスを使用して前記出力データを伝送するように、受信されたデバイスデータを同時に処理する、上記項目に記載のリアルタイム耐障害性コンピューティングシステム。
(項目3)
チェックポイント動作は、前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスが、より低い優先度の通信スロットが生じることに先立って、相違する出力データを生成しても、常時、前記より低い優先度の通信スロットの発生まで延期される、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目4)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、故障が生じた場合に相違する出力データのリリースを回避するために、後続チェックポイント後まで、前記タイムスロットベースのバスと通信する1つ以上のデバイスへの出力データのリリースを遅延させる、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目5)
前記第1のコンピューティングデバイスは、低優先度のデータを備える出力データが、低優先度のタイムスロットを使用して伝送されるとき、サイクル毎にチェックポイントを発生させる、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目6)
前記デバイスは、センサであり、前記出力データは、センサデータを備え、前記センサデータは、制御システムのための入力として動作可能である、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目7)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、前記第1のコンピューティングデバイスが、1つ以上の故障モードを被る場合、第2の処理デバイスが処理を継続するための時間遅延が、ゼロであるように、アクティブにデバイスデータを処理し、出力データを生成している、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目8)
1つ以上のタイムスロットの持続時間は、検出周期だけ増加され、前記検出周期は、約1マイクロ秒~約100マイクロ秒に及ぶ、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目9)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは両方とも、一貫しない出力データのリリースを回避するために、次のチェックポイント後まで、前記タイムスロットベースのバスと通信するデバイスへの出力データのリリースを遅延させる、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目10)
前記第1のコンピューティングデバイスが、チェックポイント後に正常に動作している場合、前記第1のコンピューティングデバイスは、いずれの遅延された出力データもリリースする、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目11)
前記第1のコンピューティングデバイスは、その出力データの全てを前記第2のコンピューティングデバイスに伝送し、そのような出力データが、前記第1のコンピューティングデバイスの故障の発生に応じてドロップされることを回避する、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目12)
前記第1のコンピューティングデバイスが、故障する場合、前記第2のコンピューティングデバイスは、最後のチェックポイントの間に発生された前記第1のコンピューティングデバイスの出力データのリリースを引き継ぐ、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目13)
前記第1のコンピューティングデバイスのみが、いかなる故障も生じていないときに出力データのリリースを取り扱い、並行して、そのような出力データを前記第2のコンピューティングデバイスと共有する、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目14)
1つ以上のデバイスからの前記デバイスデータは、前記タイムスロットベースのバスを経由して前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスに伝送される、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目15)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは、ブロードキャストまたはマルチキャストを通して直接着信データを受信する、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目16)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスはそれぞれ、前記1つ以上のメモリデバイス内に記憶され、前記1つ以上のプロセッサのそれぞれの上で実行される個別のネットワークドライバと、チェックポイントシムと、記憶装置ドライバとを備える、個別の非仮想オペレーティングシステム(OS)を備える、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目17)
前記ネットワークドライバは、リリースコーディネータおよびリリースノーティファイアと通信するリプリケータを備える、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目18)
前記第1および第2のコンピューティングデバイスの1つ以上のメモリデバイス内に記憶される1つ以上のネットワーキングプログラムは、前記ハードウェア相互接続、前記第1のネットワークインターフェース、および前記第2のネットワークインターフェースのうちの1つ以上のものを使用して、出力データの伝送を遅延および協調させる、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目19)
前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスはそれぞれ、前記1つ以上のメモリデバイス内に記憶され、個別のハイパーバイザを用いて実行される1つ以上の個別のネットワークサポートアプリケーションと、チェックポイントエンジンと、1つ以上の記憶装置サポートアプリケーションとを備える、個別の仮想オペレーティングシステム(OS)を備える、上記項目のいずれか一項に記載のリアルタイム耐障害性コンピューティングシステム。
(項目20)
リアルタイムで動作システムを制御する方法であって、
一次ノードおよび二次ノードにおいて、タイムスロットベースのバスと電気通信する1つ以上のデバイスからデバイスデータを受信することであって、前記バスは、2つ以上の優先度レベルのタイムスロットに従ってデータを受信するように動作可能である、ことと、
第1のタイムスロットの間に、一次ノードにおいてチェックポイントを発生させ、前記チェックポイントデータを二次ノードに伝送することであって、前記第1のタイムスロットは、より低い優先度のタイムスロットである、ことと、
前記受信されたデバイスデータを処理することに応答して、前記一次ノードおよび前記二次ノードにおいて出力データを発生させることと、
前記一次ノードから、第2のタイムスロットを使用して、前記バスを経由して前記出力データを伝送することであって、前記第2のタイムスロットは、より高い優先度のタイムスロットであり、前記第1のノードおよび前記第2のノードは両方とも、アクティブモードにある、ことと
を含む、方法。
(項目21)
より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送することをさらに含む、上記項目のいずれか一項に記載の方法。
(項目22)
出力データが、その状態が現在のチェックポイントに繰り越された前記ノードからリリースされるように、前記一次および前記二次ノードの両方の上で実行される個別のネットワークソフトウェアモジュールを使用してネットワークデータをゲーティングすることをさらに含む、上記項目のいずれか一項に記載の方法。
(項目23)
出力データの伝送を高優先度のタイムスロットと同期させることをさらに含み、前記出力データは、前記動作システムによって受信される、上記項目のいずれか一項に記載の方法。
(項目24)
より低い優先度のタイムスロットの非チェックポイント部分の間にデータを伝送することをさらに含む、上記項目のいずれか一項に記載の方法。
(項目25)
前記一次ノードを使用して、その個別の発信データの全てを前記二次ノードに伝送し、そのような発信データが、前記一次ノードの故障の発生に応じてドロップされないように回避することをさらに含む、上記項目のいずれか一項に記載の方法。
(項目26)
チェックポイントは、前記ハードウェア相互接続を使用して伝送される、上記項目のいずれか一項に記載のシステム。
(項目27)
一次ノードまたは二次ノードの故障の検出を考慮するために、1つ以上のタイムスロットの持続時間を増加させることをさらに含む、上記項目のいずれか一項に記載の方法。
(項目28)
1つ以上のタイムスロットの持続時間は、検出周期だけ増加され、前記検出周期は、約1マイクロ秒~約100マイクロ秒に及ぶ、上記項目のいずれか一項に記載の方法。
(項目29)
前記チェックポイントデータは、ハードウェア相互接続を使用して伝送される、上記項目のいずれか一項に記載の方法。
(摘要)
部分的に、本開示は、リアルタイム耐障害性システムに関する。本システムは、第1のコンピューティングデバイスと、第2のコンピューティングデバイスと、ハードウェア相互接続とを含み得る。第1のコンピューティングデバイスは、1つ以上のメモリデバイスと、1つ以上のプロセッサと、タイムスロットベースのバスを経由してデバイスデータを受信し、出力データを伝送するように動作可能な第1のネットワークインターフェースであって、出力データは、デバイスデータを処理することから発生される、第1のネットワークインターフェースと、第1のリアルタイムチェックポイントエンジンとを含み得る。第2のコンピューティングデバイスは、第1のコンピューティングデバイスと類似するコンポーネントまたは同一のコンポーネントを含み得る。ハードウェア相互接続は、第1のコンピューティングデバイスと第2のコンピューティングデバイスとの間のデータ交換を可能にするように動作可能である。チェックポイントは、第1および第2のコンピューティングデバイスへの、またはそれからのいずれのリアルタイム通信への干渉も回避するために、タイムスロットベースのバス上に配分されたより低い優先度の通信タイムスロットの間にチェックポイントエンジンによって発生され得る。
【図面の簡単な説明】
【0015】
本開示の構造および機能は、付随の図と併せた本明細書の説明から最も深く理解されることができる。図は、必ずしも縮尺通りではなく、代わりに、概して、例証的原理に重点が置かれている。図は、全ての側面において例証的と見なされるものであり、本発明を限定することを意図しておらず、その範囲は、請求項によってのみ定義される。
【0016】
【
図1A】
図1Aは、本明細書に開示される耐障害性特徴を使用して実装され得る、例示的巡回リアルタイムシステムの概略図である。
【0017】
【
図1B】
図1Bは、本開示のある実施形態による、種々のデバイスとバスを共有するリアルタイム耐障害性システムと通信する、種々のデバイスの概略図である。
【0018】
【
図2】
図2は、本開示のある実施形態による、リアルタイムデバイスデータおよび出力データの経路を示す、リアルタイム耐障害性システムの概略図である。
【0019】
【
図3】
図3は、本開示のある実施形態による、第1のコンピューティングデバイスと、第2のコンピューティングデバイスとを含む、リアルタイム耐障害性システムの概略図である。
【0020】
【
図4】
図4は、本開示のある実施形態による、リアルタイム耐障害性システムにおける使用のための共有バスの種々のタイムスロットに対するチェックポイント協調を示す、概略図である。
【0021】
【
図5】
図5は、出力データに対応するパケットが保持またはゲーティングされる、一次および二次RT/FTリアルタイム耐障害性実装のための動作の3つのサイクルを示す、概略図である。
【0022】
【
図6】
図6は、本開示のある実施形態による、リアルタイムチェックポインティングを示す、一次および二次RT/FTリアルタイム耐障害性実装のための動作の3回のサイクルを示す、概略図である。
【0023】
【
図7】
図7は、一次および二次RT/FTリアルタイム耐障害性実装のための動作の3回のサイクルを示す、概略図である。
【0024】
【
図8】
図8は、本開示のある実施形態による、リアルタイム耐障害性仮想化ベースのチェックポインティングシステムのブロック図である。
【0025】
【
図9】
図9は、本開示のある実施形態による、リアルタイム耐障害性オペレーティングシステムベースのチェックポインティングシステムのブロック図である。
【0026】
【
図10】
図10は、本開示のある実施形態による、仮想化ベースのリアルタイム耐障害性システムにおける使用のために好適な種々のネットワーキングコンポーネントのブロック図である。
【0027】
【
図11】
図11は、本開示のある実施形態による、OSベースのリアルタイム耐障害性システムにおける使用のために好適な種々のネットワーキングコンポーネントのブロック図である。
【0028】
【
図12A】
図12Aおよび12Bは、本開示のある実施形態による、一次および二次RT/FTリアルタイム耐障害性コンピューティングデバイス実装のための動作の4回のサイクルを示す、概略図である。
【
図12B】
図12Aおよび12Bは、本開示のある実施形態による、一次および二次RT/FTリアルタイム耐障害性コンピューティングデバイス実装のための動作の4回のサイクルを示す、概略図である。
【発明を実施するための形態】
【0029】
部分的に、本開示は、リアルタイム耐障害性コンピューティングの種々のシステムおよび方法に関する。リアルタイムコンピュータシステムは、保証された応答時間を提供し、すなわち、入力または複数の入力からコンピュータシステムからの出力または応答までの時間は、所定の量を超えないようにシステム設計によって保証される。本所定の時間の量は、多くの場合、期限と呼ばれる。ハードリアルタイムサポートおよびソフトリアルタイムサポートを含む、複数のレベルのリアルタイムサポートが、存在する。本開示の種々の実施形態は、タイムスロットベースのバスと連携してリアルタイムチェックポインティングを実装し、センサおよびコンピューティングデバイス等の他のデバイスから等のデバイスデータを処理し、アクチュエータを制御するための出力データを発生させる、または別様に、所与のユースケースまたは実装のために適用可能であり得るような制御システムおよび他のシステム、デバイス、およびコンポーネントのための入力を発生させる。
【0030】
ハードリアルタイムサポートの文脈では、期限に遅れることは、全体的システム故障をもたらす。ハードリアルタイムサポートは、規定された期限を満たすことができないことが、壊滅的な結果につながり得るときに使用される。実施例は、限定ではないが、化学プラントプロセス、原子力発電所制御、鉄道信号制御、航空電子工学フライバイワイヤ、および自動車機関制御を含む。逆に、ソフトリアルタイムサポートの文脈では、結果の有用性は、その期限後に低下し、それによって、システムのサービスの品質を低下させる。実施例は、限定ではないが、期限に遅れることがある程度のオーディオ歪みを引き起こし得る、コンピュータ音声システム、期限に遅れることがプレーヤアクションにおいてある程度の遅延を引き起こし得る、コンピュータゲーミングシステム、または期限に遅れることが通話の開始の失敗をもたらし得る、電話交換システムを含む。本明細書に開示される種々のシステムおよび方法は、ハードリアルタイムサポートまたはソフトリアルタイムサポートのいずれかのために使用されてもよい。
【0031】
本開示は、標準的(商用)コンピュータシステム上で起動し得るアプリケーション透過リアルタイム耐障害性動作を達成するためのチェックポインティングベースのソリューションを説明する。本システムの使用は、カスタムソフトウェアおよび/またはハードウェアを用いた目的に合わせて設計されたソリューションと比較して、有意な費用および時間の節約を達成する。部分的に、本開示は、標準的(商用)コンピュータシステム上で起動し得るアプリケーション透過ハードリアルタイム耐障害性動作を提供する、種々のチェックポインティングベースのシステムに関する。これらのシステムは、チェックポインティングに関連する種々の改善をもたらす。
【0032】
従来のチェックポインティングは、仮想化ベースである。具体的には、これは、VMを周期的に停止させ、その状態を捕捉し、第1のVMが故障する場合に第2のVMが動作を継続し得るように、第2のVM上で捕捉された状態を複製することによって、仮想マシン(VM)レベル耐障害性動作を達成するための手段である。VMを停止させ、その状態を捕捉し、状態を別のVMに複製するプロセスは、チェックポイントと呼ばれる。VMのチェックポインティングは、仮想化ベースまたはハイパーバイザベースのチェックポインティングと呼ばれる。
【0033】
また、OSレベルにおいて、すなわち、ハイパーバイザ内ではなく、OSドライバ内でチェックポインティングを実装することも、可能である。本開示に説明される種々のシステム、方法、それらの組み合わせ、および他の実施形態は、仮想化ベースおよびOSベースのチェックポインティングに等しく良好に適用される。
【0034】
概して、デバイスデータに関するタイムスロット優先順位付けを使用し、チェックポインティングのために低優先度のタイムスロットを選択することともに、耐障害性システムにおけるチェックポインティングベースのアプローチを改良することが、リアルタイム耐障害性システムおよび方法を実装するために使用される特徴のうちのいくつかである。高レベルの導入としての前述とともに、チェックポインティングをより詳細に考慮することが、有用である。
【0035】
チェックポインティングは、仮想マシン(VM)またはオペレーティングシステム(OS)の対を、一方のVMまたはOSが、故障する場合、他方のVMまたはOSが、クライアントシステムに本質的に透過的に故障したVMまたはOSの動作を継続し得るように十分に同一の状態に保つための技法である。耐障害性(FT)とも呼ばれる、ノンストップサービスを達成するために、チェックポインティングは、1つの物理サーバが、故障する場合、VMまたはOSおよびアプリケーションが、残りの物理サーバ上で起動し続けるように、別個の物理サーバ上に冗長VMまたはOSの対を展開する。
【0036】
チェックポインティングは、現代のマルチスレッドまたはマルチコアコンピュータシステムが、決定論的に実行されないという事実によって必要とされる。同一の入力データを受信する2つのコンピュータは、同一の命令ストリームを実行せず、したがって、種々の因子に起因して、異なる出力データ(または出力データタイミング)を生成し得る。例えば、両方のコンピュータ上の命令ストリーム内の厳密に同一の時点で受信されないハードウェア割り込みは、最終的に、プロセスが2つのコンピュータの間で異なるようにスケジューリングされることを引き起こし得る。加えて、ディスク応答時間差(回転ドライブに関する回転待ち時間変動およびソリッドステートドライブに関するごみ集め/再マッピングアクティビティ変動)は、最終的に、プロセスが2つのコンピュータ上で異なるようにスケジューリングされることにつながり得る。さらに、サーマルスロットリング、早期の命令/データアクセスに起因する異なるキャッシュヒット/ミス挙動、微細な粒度のクロックおよびカウンタの非精密な整合等の一般的な非決定論的プロセッサ挙動は、最終的に、プロセスが2つのコンピュータ上で異なるようにスケジューリングされることにつながり得る。周期的なチェックポインティングは、(非決定論的)OSまたはVMの対を同一の有効な状態に戻し、したがって、OSまたはVMが、故障する場合、パートナは、外部クライアントシステムに透過的に他方に関する動作を再開することが可能である。
【0037】
高レベルにおいて、周期的なチェックポインティングは、VMまたはOSの起動を停止させ、その状態を捕捉し、状態(または状態変更)をパートナVMまたはOSに送信し、パートナVMまたはOSをほぼ同等の状態に保つ。仮想化ベースのチェックポインティングの場合では、チェックポインティング機能性は、大部分がハイパーバイザ内で実装される。OSベースのチェックポインティングの場合では、チェックポインティング機能性は、大部分がオペレーティングシステムドライバ内で実装される。チェックポインティングされるVMまたはOSが起動している時間は、起動間隔と呼ばれ、チェックポインティングされるVMまたはOSが状態を捕捉するために停止されている時間は、チェックポイントと呼ばれる。これらの2つの間隔の合計は、エポックと呼ばれる。例示的チェックポイントエポックおよび起動間隔が、本明細書により詳細に議論される、
図4、12A、および12BにおいてTSB上でリリースのためにデータをスケジューリングする文脈において示される。
【0038】
OSベースのチェックポインティングの場合では、OSは、大部分がチェックポイントの間に停止されるが、チェックポインティングプロセスと関連付けられるOSの部分は、チェックポイントの間に起動し続ける。本開示の種々の実施形態は、2020年6月13日に出願され、「OPERATING SYSTEM-BASED SYSTEMS AND METHOD OF ACHIEVING FAULT TOLERANCE」と題された、同時係属中の出願第16/900,909号(その全開示は、参照することによって本明細書に組み込まれる)に開示される特徴のうちのいくつかを改良する、および/または活用してもよい。
リアルタイム概観
【0039】
リアルタイムコンピュータシステムは、保証された応答時間を提供し、すなわち、入力または複数の入力からコンピュータシステムからの出力または応答までの時間は、所定の量を超えないようにシステム設計によって保証される。本所定の時間の量は、多くの場合、期限と呼ばれる。
図1Aは、本明細書に開示される耐障害性特徴を使用して実装され得る、例示的巡回リアルタイムシステム5の概略図である。多くのリアルタイムシステムは、巡回方式で動作し、すなわち、繰り返しの固定間隔において、入力が、受信され、出力が、供給される。その固定間隔は、サイクル時間(CT)と呼ばれる。リアルタイム耐障害性システム7aは、センサを含む、種々のデバイスから等のセンサ入力を受信し、制御出力等の出力を発生させる。制御出力は、アクチュエータおよび他のコントローラ等の種々のデバイスを制御するために使用されることができる。リアルタイム耐障害性システム7aは、仮想化アプローチまたはオペレーティングシステム(OS)ベースのアプローチを使用して、リアルタイムチェックポインティングを実装するように動作可能である。
【0040】
産業およびプロセス制御環境では、制御コンピュータシステムおよびセンサ、アクチュエータ、弁、および他の実体を接続する通信媒体は、多くの場合、共有バスである。
図1Bに示されるように、全体的製造システム12は、共有バスと通信する種々のデバイスを有する。示される共有バスは、タイムスロットベースのバス(TSB)を使用して実装される。種々のデバイスD1-D7は、温度センサ(D1)、ゲージ(D2)、弁(D3)、モータ(D4)、ロボットアーム(D5)、コンベヤベルト(D6)、およびアラーム(D7)に対応する。デバイスD1およびD2、すなわち、温度センサおよびゲージは、センサ入力をRT/FTシステム7bに提供するセンサとしての役割を果たしてもよい。示されるように、システム7bは、典型的には、相互に、かつTSBに接続される、第1のコンピューティングデバイス8aと、第2のコンピューティングデバイス8bとを含む。弁D3、モータD4、ロボットアームD5、コンベヤベルトD6、およびアラームD7は、デバイスD1およびD2からのセンサ入力に応答して、システム7bによって発生される制御出力(出力データ)に基づいて制御されてもよい。順に、アラームD7はまた、入力および出力としての役割を果たし、デバイスD7のアラーム状態は、他のデバイスを調整するために、または全てのものが許容可能なレベルに従って稼働していることを連続的に示すために、システム7bにフィードバックされてもよい。
【0041】
多くのリアルタイム制御システムは、
図1Bに示されるTSB実施形態に関してイーサネット(登録商標)等の共有通信媒体を使用する。提示の簡略化のために、
図1BのTSBは、デバイス(D1-D7)に直接接続するように図示されるが、実践では、多くの場合、デバイスとフィールドバスとの間の介在電子コンポーネント、典型的には、PLC(プログラマブル論理コントローラ)が、存在する。種々のエッジコンピューティングデバイスもまた、種々の実施形態では、TSBに接続されてもよい。リアルタイム耐障害性システム7bは、仮想化アプローチまたはオペレーティングシステム(OS)ベースのアプローチを使用して、リアルタイムチェックポインティングを実装するように動作可能である。第1のコンピューティングデバイス8aおよび第2のコンピューティングデバイス8b等のコンピューティングデバイスは、両方のデバイスが、デバイスD1-D7のうちの1つ以上のもの(または全て)からTSBを通してデバイスデータを受信するように、ネットワーク接続を含む。
【0042】
共有バスを用いてリアルタイム挙動を維持するために、プロセスは、バスにアクセスする種々のコンピューティングデバイスが共有バス上で同時に通信することを防止するように実装される。部分的に、本開示は、共有バスへの同時アクセスまたは別様に高優先度のタイムスロットの間のチェックポイントデータ等のデータの送信を防止するためのプロトコルおよび他の保護手段に関する。そのような保護手段を実装しないことは、非決定論的通信遅延をもたらし、ひいては、リアルタイム期限が違反されることを引き起こし得る。
【0043】
種々の実施形態では、共有バス等の共有媒体上での通信競合を回避することは、通信媒体をタイムスライスすることである。種々の実施形態では、本明細書に開示されるリアルタイム耐障害性システムは、共有バス上の通信エンティティ毎に処理ループサイクルまたは他の周期またはサイクル内で事前割り当てされたタイムスロットを配分する。タイムスライスされた通信バスの実施例は、限定ではないが、ProfiNET IRT、CC-Link IEフィールド、ファウンデーションフィールドバス、およびイーサネット(登録商標)POWERLINKを含む。種々のTSBは、高、中、および低優先度等の様々な優先度レベルを有するタイムスロットに従ってデータを送信および受信するように動作可能である。他のより一般的な優先度レベルが、デバイスデータがチェックポイントデータに対してスケジューリングされる方法を管理するために使用されてもよい。第1の優先度レベル、第2の優先度レベル、第3の優先度レベル等が、タイムスロットを区別し、リアルタイムチェックポインティングを促進し、リアルタイム動作を妨害するエラーをもたらし得る競合を回避するために使用されてもよい。
【0044】
種々の実装では、タイムスロットベースのバスが、タイムクリティカル通信のために具体的タイムスロットを配分し、非タイムクリティカルまたはあまりタイムクリティカルではない通信のために他のタイムスロットを配分する能力を有する、センサまたは他のデバイスからデータを収集する、種々のリアルタイム耐障害性システムを実装するために使用される。これは、TSB等の同一の共有バス上のタイムクリティカル通信に干渉することなく、非決定論的通信のための共有通信媒体フィールドバスの使用を可能にする。
【0045】
いくつかのTSBに関して、低優先度のタイムスライスされた通信バススロットが、非巡回として特徴付けられてもよく、それらのスロットの間の通信が、サイクル時間が促す期限によって制約されないことを意味する。本開示の実施形態を実装するために好適な種々の共有バスは、巡回および非巡回特徴および種々のレベルの優先度を有するタイムスロット等のタイムスロットの組み合わせを含んでもよい。
時間依存ネットワーキング(TSN)のスケジューリングされたトラフィック
【0046】
例示として、TSBは、種々のTSB構成を実装するために使用され得るTSN(時間依存ネットワーク)技術を考慮するために有益である。TSNは、制限付き短待ち時間ネットワークデータトランスポートを達成するためのいくつかの方法論をサポートする。これらは、現在、IEEE 802.1Q-2018に組み込まれている。TSN特徴の実施例は、以下のクレジットベースのシェーパ(以前は802.1Qav)、プリエンプション(以前は802.3brおよび802.1Qbu)、スケジューリングされたトラフィック(以前は802.1Qbv)、巡回待ち行列入れおよび転送(以前は802.1Qch)、および非同期シェーピング(以前はP802.1Qcr)のうちの1つ以上のものを含み得る。
【0047】
本開示の種々の実施形態は、リアルタイム挙動を例証するために、TSNのスケジューリングされたトラフィック(IEEE802.1Qbv、TSN時間認識シェーパとしても公知であり、TSN時間認識スケジューラとしても公知である)等の好適なTSBを使用してもよい。TSNは、種々の実施形態における使用のために好適なTSBの実施例である。
【0048】
TSN時間認識スケジューラは、イーサネット(登録商標)機能に基づくタイムスライスされた巡回バスである。TSNは、イーサネット(登録商標)ベースの非独占的規格である。本明細書に開示されるリアルタイムシステムおよび方法のために共有バスに関してTSNを使用することの言及は、例証的実施例として提供される。本開示は、TSNベースのネットワークに特有ではなく、任意のタイムスライスされた巡回バスと、およびチェックポイントがリアルタイムアクティビティに干渉することなく行われ得る周期的タイムスロットが存在する他の非巡回リアルタイムソリューションと協働し得る。一般に、本開示の実施形態は、例えば、TSNベースのバスまたはネットワークおよび本明細書に開示される、または本明細書に開示されるようなリアルタイム機能性を提供するために好適なその他等のタイムスロットベースのバス(TSB)を使用して実装されてもよい。
チェックポインティングおよびリアルタイム動作
【0049】
種々の側面では、本開示は、リアルタイムチェックポインティングおよびリアルタイム耐障害性をサポートする際のその役割に関する。既存の旧来のチェックポインティングソリューションは、2つの分類、すなわち、アクティブ-パッシブチェックポインティングおよびアクティブ-アクティブチェックポインティングにグループ化され得る。これらの既存の旧来のチェックポインティング技術は、下記により詳細に説明される。リアルタイムチェックポインティングは、これらの旧来の技術と異なるタイプのチェックポインティングである。リアルタイムチェックポインティングは、それらをリアルタイム動作のために不適当にするアクティブ-パッシブチェックポインティングまたはアクティブ-アクティブチェックポインティングの欠点に対処する。リアルタイムチェックポインティングは、アクティブ-パッシブチェックポインティングまたはアクティブ-アクティブチェックポインティングと異なるタイプのチェックポインティングである。リアルタイムチェックポインティングは、アクティブ-パッシブチェックポインティングまたはアクティブ-アクティブチェックポインティングの欠点に対処し、したがって、リアルタイム動作のために好適である。
【0050】
リアルタイムシステム7cの高レベルの例証的実施例が、全体的制御システム20の一部としてTSBとともに示される。
図2に示される、その実施例では、センサ1および2、すなわち、S1、S2は、RT/FTと標識化される、リアルタイム耐障害性(RT/FT)チェックポインティングベースのシステムにリアルタイム(RT)データを提供しており、RT/FTシステムは、リアルタイムでアクチュエータAを制御するために、そのデータを処理している。
【0051】
略図のセンサS1、S2は、種々のデバイス(圧力センサ、流量センサ、速度センサ、流体レベルセンサ、近接センサ等)であり、種々の実装を有することができる。例えば、
図1Bのシステム5内の種々のデバイスD1-D6は、種々のセンサおよび他のデバイスを含んでもよい。本明細書に開示されるシステムおよび方法と併用するために好適な種々のセンサおよびデバイスは、限定ではないが、スマートネットワーク化センサ、センサまたは複数のセンサに接続されるネットワーク化PLC(プログラマブル論理コントローラ)、センサに接続される仮想化PLCをホストするコンピュータ、分散制御ノード(DCN、IOおよび算出能力を伴う産業制御デバイス)、それらの組み合わせ、および本明細書に開示される、または別様に所与の企業の製品およびサービスに適用可能であるようなその他を含み得る。同様に、アクチュエータは、種々のデバイスタイプであり、いくつかの可能性として考えられる実装を有することができる。
【0052】
センサが、ロボットアームと関連付けられる位置、近接、および/または圧力デバイスであり、アクチュエータが、その移動を制御するロボットアームのサーボモータを表した場合、センサは、リアルタイムでデータをRT/FTシステムに供給し、これは、アームのサーボモータを介してロボットアームの運動を制御するために、RT/FTによって処理される。
【0053】
依然として
図2を参照すると、2つの例示的デバイスS1、S2は、アクチュエータAとともに示される。種々の実施形態では、デバイスS1およびS2は、制御システム20によって監視または制御されているシステムまたはプロセスに対するデータを収集するセンサである。センサからのリアルタイムデバイスデータは、1回以上の処理サイクルの間にRT/FT 7cによって処理されており、次いで、リアルタイム制御情報としてアクチュエータに中継される。所与のRT/FTは、デバイスデータ(センサデータ等)を受信し、出力データを伝送するためのネットワークインターフェースを含んでもよい。出力データは、受信されたデバイスデータ、および随意に、制御または監視されているプロセスまたはシステムに特有である他の入力およびパラメータを処理することから発生される。デバイスデータおよび出力データは、典型的には、TSBを使用して伝送される。
図2のシステムでは、RT/FTは、S1およびS2からのデータを処理し、アクチュエータAに伝送されるであろうリアルタイム制御情報等の出力データを発生させ、受信された出力データに応答して、これに、特定の様式で応答させる、または所与のタスクを実施させる、または特定のアクションを行わせる。RT/FT 7cは、処理詳細および1つ以上のコンピューティングデバイスが耐障害性およびリアルタイム実装を提供するように構成される方法の観点から簡略化される。
図3は、さらなる詳細を伴う例示的RT/FTを示し、2つのコンピューティングデバイスを含む。
【0054】
図3のRT/FTシステム7dは、一次および二次(または逆もまた同様である)またはRT/FT
1およびRT/FT
2(または逆もまた同様である)として識別され得る、2つのコンピューティングデバイスを含む。RT/FTシステム7dは、TSBと、S1と、S2と、Aとを含む、全体的制御システム30の一部である。デバイス/センサS1およびS2およびアクチュエータAは、
図2のシステムに描写されるものと同一であるが、一次および二次コンピューティングデバイスへのそれらの接続の付加的詳細が、示される。2つのコンピューティングデバイスは、耐障害性リアルタイムチェックポインティングベースのシステム7dを実装するために連携して稼動する。これらのコンピューティングデバイスはまた、第1および第2のコンピューティングデバイス、サーバ、ノード、または本明細書に開示されるような他の用語として識別されてもよい。前述にもかかわらず、所与の第1のコンピューティングデバイスは、最初に、第1の役割を有してもよい一方、第2のコンピューティングデバイスは、第2の役割を有してもよい。第1および第2の役割は、コンピューティングデバイスのうちの1つが、エラーまたは故障モードを被る場合、切り替えられる、または他の役割に変更されてもよい。
【0055】
図3のシステムは、TSB等の共有バスを含み、また、企業の情報技術(IT)ネットワーク、インターネット、または他のネットワーク等のネットワークへのネットワーク接続を含んでもよい。コンピューティングデバイスRT/FT
1およびRT/FT
2はそれぞれ、ハードウェア相互接続HICによって接続される。センサ、アクチュエータ、およびRT/FTシステムは、細い暗線によって表される冗長共有ネットワーク17を使用して接続される。例示的データフローが、太い明線18によって図示される。種々の矢印は、データフローの方向を示す。
【0056】
7dまたは2つのコンピューティングデバイスのうちの1つにおける故障を伴わない正常な動作に対応する非故障ケースに関して、データフローは、以下の通りである。センサ/デバイスデータは、両方のRT/FTノードによって受信および処理される(したがって、1つのノードが、故障する場合、いかなる処理時間または状態も、失われない)。したがって、RT/FT1が、故障することになる場合、RT/FT2は、同一のセンサ/デバイスデータを受信し、制御システム30およびリアルタイム出力を必要とするコンポーネントがアクチュエータA等のリアルタイム動作を維持するために、出力データを発生させることが可能であろう。一実施形態では、一次ノード(上記の略図のRT/FT2)は、制御出力/出力データをアクチュエータAに供給する。これは、例示的要件である。他のインスタンスでは、二次ノード(上記の略図のRT/FT1)が、制御出力/出力データをアクチュエータAに供給する。別の実施形態では、一次コンピューティングデバイスおよび二次コンピューティングデバイスの両方が、出力データを発生させ、出力データを冗長的に伝送し、アクチュエータは、いくつかの実施形態では、重複性信号を処理し、重複性入力を無視することが可能であるように動作可能であり得る。
チェックポインティング
【0057】
種々の実施形態では、チェックポイントは、チェックポイントが、TSBのより低い優先度(非リアルタイム)の通信タイムスロットのみとリリースのために重複する、または同期されるように、TSBと協調される。より低い優先度のタイムスロットを使用してチェックポイントおよびチェックポイントデータを協調およびスケジューリングすることは、チェックポイント動作がリアルタイム通信に干渉することを防止する。例えば、チェックポイントデータが、化学エンジニアリングプラントにおいて流体流動のレートを維持するためにアクチュエータによって必要とされる出力データと競合していた場合、チェックポイントデータが、アクチュエータを制御するために必要とされるタイムスロットを使用して送信された場合、悲惨なことになり得る。
図4は、例示的TSBのタイムスロットおよびチェックポインティング動作に対する種々のスケジューリング相互作用を示す、概略図である。一般に、
図4は、RT/FTシステムのチェックポイントをTSBと協調させることに対する例示的アプローチを示す。
【0058】
具体的には、
図4に示されるように、RT/FTシステムは、サイクル毎にセンサからのデバイスデータを処理し、アクチュエータのための出力データを発生させている。RT/FTの2回の処理サイクルは、TSBサイクル1およびTSBサイクル2として示される。所与のTSBサイクルが、N個のタイムスロットを含む。サイクル毎に示される実施例では、4つのタイムスロットが、示され、したがって、N=4である。タイムスロットの持続時間は、同一であってもよい、またはそれらは、異なってもよい。示されるように、タイムスロット4が、低優先度のトラフィックのために配分され、タイムスロット1-3よりも長い持続時間を有する。個別のサイクルはそれぞれ、2つの並行したデータ発生イベントに及ぶ。これらのイベントは、チェックポイントスケジューリングおよびTSBネットワークスケジューリングを含む。上記のように、チェックポインティングされるVMまたはOSが起動している時間は、起動間隔と呼ばれ、チェックポインティングされるVMまたはOSが状態を捕捉するために停止されている時間は、チェックポイントと呼ばれる。これらの2つの間隔の合計は、エポックと呼ばれる。
【0059】
それらの独自の個別の起動間隔およびVMまたはOSがタイムスロット4の間に停止されるチェックポイントを伴う第1のチェックポイントエポックおよび第2のチェックポイントエポックが、
図4に示される。第1のエポックは、TSBサイクル1に対応し、第2のエポックは、TSBサイクル2に対応する。これらの個別の時間周期は、いくつかの実施形態では、異なってもよい。示されるように、RT/FTの所与のコンピューティングデバイスに関する起動間隔後、チェックポイントが、エポック毎に示される実施例におけるタイムスロット4等のタイムスロットと重複する、またはそれと同期されるようにリリースされる。固定サイクルチェックポイントが、リアルタイムトラフィックへの干渉を回避するために、TSB上の低優先度のタイムスロットの間のTSB(または本実施例に示されるようなTSN)の間に生じるようにスケジューリングされる。リアルタイムトラフィックの種々の実施例が、TSBサイクル毎にタイムスロット1、2、および3に関して示される。
【0060】
本開示の別の要素は、RT/FTのコンピューティングデバイスの両方がアクティブであることである。対照的に、いくつかの耐障害性システムでは、1つのコンピューティングデバイスは、パッシブであり、これが対合されるアクティブなコンピューティングデバイスから効果的に引き継ぐための時間を必要とする。両方のノードをアクティブにさせることによって、いかなる処理時間または状態も、一次が故障するとき/場合に失われず、したがって、リアルタイム期限は、一次ノードが故障するときであっても、維持されることができる。加えて、リアルタイム耐障害性をサポートするために、ネットワークパケットが、次のチェックポイント後までゲーティングされる。
図5は、出力データに対応するパケットが保持またはゲーティングされる、一次および二次RT/FTリアルタイム耐障害性実装のための動作の3回のサイクルを示す、概略図である。
図5は、コンピューティングデバイス(一次RT/FTおよび二次RT/FT)がそれぞれ、複数の処理サイクル(サイクル1、サイクル2、およびサイクル3が、示されるが、任意の数のサイクルが、可能性として考えられる)にわたってタイムスロット管理を要求する、
図4の実施形態に対するさらなる詳細をもたらす。順に、各サイクルの間、起動間隔およびチェックポイントもまた、生じる。したがって、種々の実施形態では、N個のサイクルに関して、故障またはある他のイベントの不在下で、N個のエポックが、存在する。
【0061】
図5に示されるように、ネットワークパケットは、起動間隔の間、2つのノードが、相違し得るため、ゲーティングまたは保持される。起動間隔のそれぞれの間、TSBを経由して送信されるであろう発信ネットワークパケットが、保持される。故障が、RT/FTの一部として生じることになり、パケットが、直ちにリリースされていた場合、現在故障しているノードによって先にリリースされたパケットは、以前に二次であり、故障後の現在一次であるノードによってリリースされたパケットと一貫した状態ではない場合がある。パケットをゲーティングすることによって、RT/FTは、リリースされたパケットが全て、その状態が以前のエポックから繰り越されているノードによって発生されたことを確実にする。種々の実施形態では、パケットのゲーティングはまた、パケットの遅延とも称され得る。ゲーティングされたパケットは、正しいTSNタイムスロットの間にリリースされる。これに従わない場合、所与のリアルタイムシステムは、耐障害性でなくなり、エラーを被り得、これは、ひいては、リアルタイム動作を妨害し得る。以前の起動間隔からの発信パケットは、チェックポイントが低優先度のタイムスロットの間に生じた後にリリースされる。
【0062】
一次RT/FTからのゲーティングされた発信ネットワークパケットは、二次RT/FTに送信される。二次RT/FTは、概して、一次から受信された発信パケットを保持するように動作し、一次が対応するパケットのそのコピーをリリースしているサイクルの間、一次が故障しない場合、それらのパケットを破棄する。非故障サイクルでは、二次RT/FTは、そのサイクルからのその状態を破棄し、最後の一次チェックポイントから継続する。加えて、非故障ケースでは、二次RT/FTのパケットは、チェックポイントの完了に応じて破棄される。
図5に関して議論される上記の点は、故障ケースを検証することによってより明確に例証され得る。
【0063】
図6は、故障の場合における一次および二次RT/FTリアルタイム耐障害性実装のための動作の3回のサイクルを示す、概略図である。
図5の場合のように、TSB上で利用可能なタイムスロットに対してデバイスデータおよび出力データをスケジューリングするためのタイムスロットに分割された3回のサイクルが、存在する。第1のサイクルであるサイクル1では、いかなる故障も、存在せず、一次RT/FTおよび二次RT/FTはそれぞれ、タイムスロット1、2、および3内にデバイスデータおよび出力データ(アクチュエータに関する)をスケジューリングし、チェックポイントに対応する低優先度のトラフィックは、タイムスロット4上で取り扱われる。
【0064】
示されるように、サイクル1に先立って、以前のサイクルからのゲーティングされたネットワークパケットは、一次から二次に送信される。サイクル1の一部と整合される起動間隔の間、二次は、最後のチェックポイントに続いて一次から独立して起動している。サイクル1の間、一次からのゲーティングパケットは、二次に送信される。非故障ケースでは、二次は、その状態を破棄し、最後の一次チェックポイントから継続する。
【0065】
図6に示されるように、サイクル2では、一次RT/FTにおいて故障イベントが、存在し、サイクル3は、故障後の詳細を示す。一次が、サイクル2の間に故障すると、二次は、リリースするために最後のチェックポイントからのゲーティングされたネットワークパケットを有する。加えて、二次は、リリースされたパケットと一貫する状態に基づいて起動している。結果として、二次の実行状態は、有効であり、いかなる実行時間も、失われない。事実上、二次は、処理時間を失うことなく、一次が止まった場所から直ちに続行することができる。いかなるチェックポイントも、故障後に必要とされないが、いくつかの好ましい実施形態では、チェックポインティングが生じたかのようにパケットをゲーティングすることが、望ましい。パケットが、チェックポインティングが依然として生じているかのようにゲーティングされない、いくつかの好ましくない実施形態では、故障後、二次は、最後のチェックポイントからの重要な(高優先度の)タイムスロットおよび現在のチェックポイントからのものの間に2倍も多くのパケットを伝送するように試み得る。パケットが、チェックポインティングが依然として生じているかのようにゲーティングされない、他の好ましくない実施形態では、故障後、二次は、一次が動作に戻るときのサイクルの間にパケットを送信し損ね得、これは、全体的RT/FTのリアルタイム要件を破り得る。サイクル3では、一次の故障後、二次は、その状態から起動し続け、好ましい実施形態では、続くサイクルでその処理状態と一貫するそのネットワークパケットをリリースする。
発信パケットのネットワーキング特徴および管理
【0066】
発信ネットワークパケットをドロップすることは、真のリアルタイム動作のために許容可能ではない。これは、より高いレベルのプロトコル回復のための時間不利益が、リアルタイム期限義務を破るであろうためである。さらに、多くのリアルタイムバスは、重要なパケットに関する信頼性のある伝送を仮定し、より高いレベルの回復プロトコルを有していない。例えば、TSNは、イーサネット(登録商標)レベルにあり、TSNを用いると、信頼性のあるイーサネット(登録商標)伝送が、全ての衝突が回避されることができるため、重要なパケットに関して達成されることができる。
【0067】
図7は、一次および二次RT/FTリアルタイム耐障害性実装のための動作の3回のサイクルを示す、概略図である。下記で
図7に図示されるように、リアルタイムチェックポインティングソリューションは、下記に説明される機構が、本発明に組み込まれない場合、フェイルオーバに応じて発信パケットをドロップし得る。具体的には、以前のサイクル(サイクル1と標識化される)からのパケットは、サイクル2と標識化される続くサイクルにおけるリリースのために、一次RT/RTによって待ち行列に入れられている。一次RT/FTが、サイクル2の間に故障する場合、全てのパケットが、リリースされ得るわけではない。
図7に示されるように、サイクル3における一次の故障の間、パケット40は、アクティブノードが、これが最後のエポックからのパケットの全てをリリースする前に故障するため、伝送されない。
【0068】
部分的に、本開示はまた、フェイルオーバに応じたドロップされる発信パケットの可能性を除去することに関する。これは、一次RT/FTが、起動間隔の間またはチェックポイント時のいずれかで二次にその発信パケットを送信することによって達成されてもよい。次いで、システム制約に応じて、2つのアルゴリズムまたは方法のうちの1つが、故障が生じるとき、いかなる発信パケットもドロップされないことを確実にするために適用されることができる。第1のアルゴリズムは、本システムが、多数の重複パケットを許容し得る場合、一次および二次RT/FTの両方が、それらの割り当てられたタイムスロットの間に発信する待ち行列に入れられたパケットを無条件にリリースし得るように動作する。第2のアルゴリズムは、本システムが、多数の重複パケットを許容することができない場合、一次が、リリースされたパケットの進行中のインジケーションを二次に供給し得ることを提供する。一次が、故障する場合、二次は、故障に先立って一次が止まった場所からパケットのリリースを再開するであろう。概して、パケットは、それらの割り当てられたタイムスロットの間にリリースされる。
【0069】
また、上記の第2のアルゴリズムに関して、パケットがリリースされたというインジケーションを二次に提供することに対して、一次のパケットのリリースにおいて遅延が存在し得るという事実が考慮されることに留意されたい。1つのソリューションは、通知が二次によって受信される時間まで、パケットが実際にリリースされたことを確実にするために十分な量だけ二次へのパケットのリリースのインジケーションを遅延させることである。これは、重複パケットの可能性があるタイミングウィンドウを作成し、具体的には、フェイルオーバにおいて、一次によってリリースされたパケットまたは一部のパケットが、二次によって再リリースされることができる。
着信パケット
【0070】
リアルタイムチェックポインティングに関して、両方のノードは、両方のノードが、OSおよびアプリケーションワークロードをアクティブに起動しているため、着信パケットを受信するように動作可能である。これは、それらが両方のノードによって受信されるように、全ての着信パケットを受信し、それらを二次に転送する一次VMを用いて動作し得るアクティブ-アクティブソリューションと対照的である。そのようなアクティブ-アクティブアプローチは、ドロップされた着信パケットをもたらし得る。例えば、一次が故障する時間と、ネットワークパケットが、これが一次になることに応じて二次に再ルーティングされている時間との間に受信されるように意図されるパケットは、ドロップされるであろう。ドロップされたパケットは、真のリアルタイム動作のために許容可能ではなく、したがって、アクティブ-アクティブ実装は、リアルタイム実装のために可能ではない。さらに、フェイルオーバに応じてドロップされる着信パケットを回避するための種々の実施形態では、リアルタイムネットワークパケットの外部送信機は、パケットが、両方のノードによって直接受信されるように、マルチキャストまたはブロードキャストを使用してもよい。
オーバーヘッド考慮事項-チェックポイント間隔およびネットワークゲーティング
【0071】
チェックポインティングは、OSまたはゲストVMを周期的に停止させることと関連付けられるオーバーヘッドを導入する。これが迅速に行われ得る程度に対する限界が、存在する。さらに、入力から出力までの待ち時間は、チェックポイントを横断して発信パケットをゲーティングする必要性によって影響を受ける。ネットワークタイムスロットがチェックポイントに対して割り当てられる方法に応じて、本追加される待ち時間は、最悪の場合のチェックポイント間隔と同程度に短い、またはチェックポイントサイクル全体と同程度に長くあり得る。
障害検出
【0072】
いくつかの実施形態では、タイムスロット持続時間または周期は、障害検出時間を考慮するために増加されてもよい。例えば、あるタイムスロットの間、約100μ秒相当のデータが、伝送され得る場合、そのタイムスロットに分配される時間は、検出時間DTだけ増加される。検出時間DTは、二次が、一次コンピューティングデバイスが故障したことを検出し、発信データの伝送を再開するまでにかかる時間を可能にする。検出時間DTの包含の不在下では、故障ケースの間、全ての発信データが、タイムスロットの間に伝送されることが可能であるわけではないであろう。種々の実施形態では、検出時間DTは、約0.1マイクロ秒~約100マイクロ秒に及ぶ。種々の実施形態では、検出時間DTは、約1マイクロ秒~約500マイクロ秒に及ぶ。
仮想化ベースのチェックポインティング
【0073】
図8は、本開示のある実施形態による、リアルタイム耐障害性仮想化ベースのチェックポインティングシステムのブロック図である。
図8に示されるように、仮想化ベースのリアルタイムFTチェックポインティングソリューションは、耐障害性システム70において実装される。示されるように、リアルタイムFTチェックポインティングサポートは、ハイパーバイザ内での修正および追加によって実装される。例えば、仮想化ベースのリアルタイムチェックポインティングシステムが、Linux(登録商標)上で実装されていた場合、これは、KVM/QEMU(一般的なLinux(登録商標)ハイパーバイザ)への拡張および/または修正を介して実装され得る。仮想マシン(VM)の種々の構成が、使用されてもよい。リアルタイムチェックポインティングをサポートする種々のコンポーネントは、影付きである。加えて、非アクティブである種々のコンポーネントまたは経路は、点線で示される。
【0074】
システム70は、サーバ1と、サーバ2とを含む。サーバは、任意の好適なコンピューティングデバイスであってもよい。一実施形態では、サーバは、仮想化をサポートするOSを起動する商用またはカスタムサーバである。図示は、各サーバ上に単一のハイパーバイザ/VM(単一のリアルタイムFTハイパーバイザ/VM対)を示すが、種々の他の構成も、可能性として考えられる。例えば、システム70は、各サーバ上に複数のハイパーバイザ/VMを含み、したがって、複数のリアルタイムFTハイパーバイザ/VM対、非リアルタイムハイパーバイザ/VM対、および非対合(保護されていない)ハイパーバイザ/VMを含んでもよい。システム70は、示されるように、それぞれ、サーバ1およびサーバ2と関連付けられる、一次VMと、二次VMとを含む。一次VMは、一次ハイパーバイザと通信する。同様に、二次VMは、二次ハイパーバイザと通信する。一般に、サーバ1のコンポーネントは、示されるハイパーバイザ、チェックポイントエンジン、記憶装置サポート、およびネットワークサポート特徴に対して示される機能ブロックおよびソフトウェアコンポーネントの観点から、サーバ2においてミラーリングされる。種々の実施形態では、前述の全ては、ソフトウェアモジュールおよびソフトウェアプログラムの組み合わせを使用して実装される。
【0075】
サーバ1およびサーバ2は、ハードウェア相互接続によって接続またはリンクされる。一実施形態では、ハードウェア相互接続は、それを通してチェックポインティング状態が2つの物理サーバの間で伝達される、ハードウェアバスまたはブリッジ等の物理媒体である。ハードウェア相互接続は、ネットワーク接続、非透過PCIブリッジ、または任意の他の高性能コンピュータ相互接続であり得る。種々の実施形態では、チェックポイントは、TSB上のアクティブなタイムスロットである低優先度のタイムスロットの発生の間にハードウェア相互接続を使用して伝達される。一実施形態では、チェックポイントデータは、全てのタイムスロットの間にハードウェア相互接続上で伝達されてもよい(但し、ハードウェア相互接続上の最終状態の伝送は、ここでは低優先度のタイムスロットの間に生じる)。チェックポイントの「最終段階」は、最もプロセッサ/システム集約的な動作であり、チェックポイントのその他の段階は、リアルタイム機能性に影響を及ぼさない。種々の実施形態では、最終段階等のチェックポイントの1つ以上の段階は、顧客アプリケーションまたはVMが、その時点で起動していないため、性能に影響を及ぼす。結果として、目標は、可能な限り迅速にチェックポイントデータを伝達することであり、これは、関連付けられる性能費用を有する。
【0076】
本明細書におけるように、そのような性能費用は、リアルタイム性能に悪影響を及ぼし得る。各コンピューティングデバイスの種々のコンポーネントへのハードウェア相互接続の接続は、使用されるハードウェア相互接続のタイプに応じて変動することができる。例えば、相互接続が、非透過PCIブリッジである場合、これは、
図8の下部に示されるようなネットワークを通して進行しない。ハードウェア相互接続が、ネットワーク接続を使用して実装される場合、これは、ここでは
図8の下部に示されるネットワークに接続し、OSネットワーキングサポートと関連付けられるネットワーキングインターフェースから接続し得る。TSB上の低優先度の伝達の間にリアルタイム性能に悪影響を及ぼすチェックポイントデータを選択的に伝達することは、所与のサーバに対する付加的負担を回避し、これは、リアルタイム性能を促進する。
【0077】
サーバ1およびサーバ2はそれぞれ、チェックポイントエンジンを含む。サーバ1およびサーバ2毎のハイパーバイザ内に描写されるチェックポイントエンジンおよびコンポーネントの全ては、各個別のハイパーバイザへの追加またはその修正である。チェックポイントエンジンは、TSBタイミングによって決定されるような周期的チェックポイントを開始する。チェックポイントプロセスの目的は、一次VMを起動するハードウェアが、故障することになる場合、二次ノードが、アプリケーション動作不能状態を伴わずに引き継ぎ得るように、一次VMの状態に合致するように二次VMの状態を更新することである。
【0078】
チェックポイントプロセスのステップは、以下のうちの1つ以上のものを含む。
・一次および二次VMの両方の上でのOS実行を停止させるステップ。
・チェックポイントが開始されることを記憶装置およびネットワークコンポーネントに通知するステップ。
・一次および二次VMの両方によって最後のチェックポイント以降に修正されたVMメモリのリストを取得するステップ。これらの2つのリストの結合を計算する。
・修正されたメモリリストの結合を使用して、ハードウェアインターフェースを介して、修正されたVMメモリを一次ハイパーバイザから二次ハイパーバイザに送信するステップ。
・一次VM上で、VMプロセッサおよびデバイスの状態を捕捉するステップ。ハードウェアインターフェースを介して、プロセッサおよびデバイス状態を一次ハイパーバイザから二次ハイパーバイザに送信する。
・一次および二次ハイパーバイザの両方の上で、チェックポイントプロセスが完了し、VMが再開しようとしていることをネットワークサポートおよび記憶装置サポートコンポーネントに知らせるステップ。
・一次および二次ノードの両方の上でVM実行を再開するステップ。
【0079】
本システムおよびタイムスロットが、リアルタイムチェックポインティングをサポートするために適切にサイズ決めされることが重要である。タイムスロットは、リアルタイム耐障害性システムが使用されている用途およびユーザによって規定されるサイクル時間に従ってサイズ決めされてもよい。チェックポイントプロセスの間、一次または二次チェックポイントエンジンのいずれかが、チェックポイント持続時間が分配された時間を超え、したがって、可能性として、リアルタイム期限義務に干渉するであろうことを検出する場合、チェックポイントは、中止され、本システムは、リアルタイム期限が満たされることを確実にするために、シンプレックス状態に戻されるであろう。シンプレックス状態に戻されることは、二次および一次がチェックポインティングを停止し、一次が単独で(かつこれがもはやチェックポインティングをしていないため、保護されずに)起動するときを指す。これが、生じる場合、一方のサーバは、FT動作を復元するために、他方のサーバと再びパートナになるであろう。同様に、一次または二次チェックポイントエンジンのいずれかが、TSBタイミングによって規定されるタイムスロット以外におけるチェックポイントを実施する必要性を検出する場合、本システムは、リアルタイム期限が満たされることを確実にするために、シンプレックス状態に戻るであろう。これが、生じる場合、本システムは、FT動作を復元するために、それ自体と再びパートナになるであろう。スケジューリングされていないチェックポイントを引き起こし得るアイテムの実施例は、メモリ追跡と関連付けられるバッファが小さすぎ、チェックポイントの間に生じる全てのメモリ変更を記録することができない、または記憶装置キャッシュが小さすぎ、チェックポイントの間の全ての記憶装置変更をキャッシュすることができない、不適切にサイズ決めされたシステムである。
【0080】
チェックポイントエンジン内に、2つのサブコンポーネント、すなわち、メモリトラッカおよび多方面デバイス状態複製コンポーネントがある。メモリトラッカは、VMによって修正されたメモリを追跡するためのプロセッサハードウェア特徴を利用し、したがって、チェックポインティングエンジンは、チェックポイントにおいてコピーされる必要があるメモリを把握する。順に、多方面デバイス状態複製コンポーネントは、一次ハイパーバイザ内のVMデバイス状態を捕捉し、チェックポイントの一部として二次ハイパーバイザ内のVMに適用する。
【0081】
サーバ2の二次ハイパーバイザ内のチェックポイントエンジンは、ダーティページデータおよび多方面デバイス状態データを含む、完全なチェックポイントデータが受信されるまで待機し、次いで、そのデータを適用し、新しいチェックポイントの文脈においてVM動作を再開する。
記憶装置サポートコンポーネント
【0082】
記憶装置サポートコンポーネントは、チェックポインティングをサポートするために、ハイパーバイザ記憶装置機能性とインターフェースをとる。具体的なチェックポインティング関連コンポーネントは、キャッシングコンポーネントおよび複製コンポーネントである。キャッシングコンポーネントは、一次および二次VMの両方からの各チェックポイントの間に生じる記憶装置書込をキャッシュする。一次および二次VMは、起動するときに非決定論的である。結果として、これらのVMは、同一のデータを記憶装置に書き込まない場合がある。例えば、VMが、非決定論のため、異なる順序でトランザクションを処理している場合、一次の上の記憶装置に書き込まれたトランザクションに関するタイムスタンプは、二次の上の記憶装置に書き込まれたタイムスタンプと異なり得る。本記憶装置相互作用は、記憶装置のビューとして参照され得る。ビューは、チェックポイントまでキャッシュ内にあり、その後(非故障ケースでは)、一次のデータ/ビューは、ディスクに書き込まれ、二次のデータ/ビューは、破棄される。起動間隔内で、VMの記憶装置のビューは、各VMが、独立して動作し、潜在的に、異なる書込要求を発行するため、VMの間で相違することを可能にされる。各チェックポイントに続いて、二次VMの記憶装置は、一次VMの記憶装置と同じにされる。媒体に引き渡されるようにOSに書込を提供する代わりにそれらをキャッシュすることは、ある利点を提供する。例えば、1つの利点は、二次キャッシュが、単純に、チェックポイントに続いて破棄され得ることである。また、一次ノードの故障および最終的な二次からの回復の場合では、チェックポイントを行う前に一次書込を媒体に引き渡すことは、問題となり、その場合では、一次キャッシュは、同様に破棄されるであろう。
【0083】
加えて、複製コンポーネントもまた、種々の記憶装置機能性をサポートするために使用される。記憶装置コンポーネントは、一次および二次VMの間で記憶装置を複製することをサポートする。各起動間隔の開始時、VM記憶装置は、同じである。これは、動作が開始される前に初期完全同期動作を要求する。次いで、記憶装置サポートコンポーネントのキャッシングコンポーネントと協働して、記憶装置修正が、各チェックポイントが行われる際に一次ハイパーバイザから二次ハイパーバイザに複製され、OSを介して二次記憶媒体に引き渡される。記憶装置コンポーネントはそれぞれ、1つ以上のソフトウェアプログラム、方法、またはルーチンとして実装されてもよい。
ネットワークサポートコンポーネント
【0084】
ネットワークサポートコンポーネントは、チェックポインティングおよびリアルタイム動作をサポートするために、ハイパーバイザネットワーク機能性とインターフェースをとる。これらのコンポーネントは、リプリケータと、ローカル発信パケット待ち行列と、リリースコーディネータと、パートナ発信パケット待ち行列と、リリースノーティファイアとを含む。これらはそれぞれ、1つ以上のソフトウェアプログラム、方法、またはルーチンとして実装されてもよい。
【0085】
一次ハイパーバイザでは、リプリケータは、一次VMから発信ネットワークパケットをとるように動作可能であり、パケットを一次のローカル発信パケット待ち行列および二次のパートナ発信パケット待ち行列に送信する。二次ハイパーバイザでは、リプリケータは、非アクティブであり、単純に、二次ゲストから二次のローカル発信パケット待ち行列へのパケットのための通路としての役割を果たす。パケットとともに、リプリケータは、それに各パケットが割り当てられるTSBタイムスロットを識別する情報を渡す。ローカル発信パケット待ち行列は、リリースコーディネータによる可能性として考えられる後のリリースのために、ローカルVMインスタンスからのパケットを待ち行列に入れるように動作可能である。パケットとともに、各パケットが割り当てられるTSBタイムスロットを識別する情報が、待ち行列に入れられる。パートナ発信パケット待ち行列コンポーネントは、リリースコーディネータによる可能性として考えられる後のリリースのために、パートナVMインスタンスからのパケットを待ち行列に入れるように動作可能である。これは、二次ハイパーバイザ上でのみアクティブである。
【0086】
発信パケットをリリースするための2つの代替が、上記に議論される。これらは、以下を含む。
a)本システムが、多数の重複パケットを許容することができる場合、一次および二次RT/FTは両方とも、待ち行列に入れられた発信パケットを無条件にリリースすることができる。
b)本システムが、多数の重複パケットを許容することができない場合、一次のみが、非故障ケースにおいて待ち行列に入れられた発信パケットをリリースする。
代替bが、使用される場合、パートナ発信パケット待ち行列(二次の上でのみアクティブ)は、パケットが、一次からリリースされるとき、一次リリースノーティファイアから通知を受信している。対応するパケットは、次いで、パートナ発信パケット待ち行列から除去される。
【0087】
リリースコーディネータは、パケットを適切な待ち行列から適切な時間にOSにリリースし、したがって、外部ネットワークにリリースするように動作可能である。全ての場合では、パケットは、その割り当てられたTSNタイムスロットの間にリリースされる。
【0088】
非故障ケースでは、以前のエポックからのパケットは、以下のいずれかからリリースされる。
a)上記からの代替aが、使用される場合、一次ハイパーバイザのローカル発信パケット待ち行列および二次ハイパーバイザのパートナ発信パケット待ち行列の両方、
または、
b)上記の代替bが、使用される場合、一次ハイパーバイザのローカル発信パケット待ち行列のみ。
上記からの代替bが、使用される場合、一次のリリースコーディネータは、リリースされた各パケットを一次のリリースノーティファイアに通知する。パケットが実際にリリースされたことを確実にするための遅延後、リリースノーティファイアは、通知を二次のパートナ発信パケット待ち行列上に渡す。上記からの代替bが、使用され、一次ハイパーバイザまたはVMが、故障する場合、二次リリースコーディネータは、二次のパートナ発信パケット待ち行列内に残りのパケットをリリースする。
【0089】
リリースノーティファイアは、上記のオプションbのみにおいて使用され、一次によってリリースされたいずれのパケットも二次に通知するように動作可能である。リリースノーティファイアの主要な機能は、パケットが実際に一次によってリリースされたことを確実にするために、二次への通知に十分な遅延を追加することである。これは、パケットが、これがリリースされていないときにリリースされたと以前の二次が見なすことに起因する、フェイルオーバ後のいずれのドロップされるパケットも回避するためである。
OSベースのチェックポインティング
【0090】
図9は、リアルタイム耐障害性を実装するためのOSベースのブロック図である。OSベースのチェックポインティングが、説明され、これは、
図9に関して描写および議論されるような種々のコンポーネントを使用して、リアルタイム動作をサポートする。一次OSを起動する一次ノード/一次サーバが、ハードウェア相互接続によって、二次OSを起動する二次ノード/二次サーバに接続される。示されるように、OSベースのリアルタイムFTチェックポインティングサポートは、オペレーティングシステム内またはその下方での修正および追加によって実装される。例えば、Linux(登録商標) OSベースのチェックポインティングソリューションは、大部分がLinux(登録商標)記憶装置ドライバ、Linux(登録商標)ネットワークドライバ、およびLinux(登録商標)チェックポイントドライバ内で実装されるであろう。
図9のシステム75は、サポートがハイパーバイザ追加または修正を介して実装される、
図8の前述で議論される仮想化ベースのリアルタイムFTチェックポインティングに匹敵する。リアルタイムチェックポインティングをサポートする種々のコンポーネントは、影付きである。加えて、非アクティブである種々のコンポーネントまたは経路は、点線で示される。
【0091】
概念的に、
図9のコンポーネントのうちの多くは、
図8の同様の名称のコンポーネントと同一の機能を実施する。仮想化アプローチ対オペレーティングシステムベースのアプローチから生じる差異が、存在する。OSベースのチェックポインティングは、システムを(VMレベルに対して)マシンレベルにおいて同期させるため、OSベースのRT/FTに関して実際のハードウェアに対するより厳しい制約が、存在する。一次ノード/サーバおよび二次ノード/サーバは、以下の要件のうちの1つ以上のものを満たす商用またはカスタムサーバである。
・サーバは、同じハードウェア構成を用いて構成される。
・サーバは、チェックポインティングネットワークドライバ、チェックポインティング記憶装置ドライバ、および標的OSに関するチェックポイントシムによってサポートされるハードウェアを含有する。
また、複数のVMが、チェックポインティングされ得、両方の物理サーバが、したがって、一次VMおよび二次VMを同時にホストし得る、仮想化ベースのチェックポインティングと異なり、OSベースのチェックポインティングは、一次サーバと、二次サーバとを有する。
【0092】
サーバOSは、チェックポインティング技術によって保護され、それを含有する。本サーバOSは、標準的OS(Windows(登録商標)、Linux(登録商標)、および/またはVMware)であり得るが、種々のOS特有ドライバの追加および修正が、チェックポインティング機能性をサポートするために必要とされる。
【0093】
一実施形態では、ハードウェア相互接続は、それを通してチェックポインティング状態が2つの物理サーバの間で伝達される、ハードウェアバスまたはブリッジ等の物理媒体である。ハードウェア相互接続は、ネットワーク接続、非透過PCIブリッジ、または任意の他の高性能コンピュータ相互接続であり得る。種々の実施形態では、ハードウェア相互接続は、TSBとは別個であり、それに接続しない。ハードウェア相互接続に関するソフトウェアサポートは、チェックポイントエンジンドライバ内にある。ハードウェアインターフェースに関するネイティブOSサポートは、チェックポインティング動作が、チェックポインティングするOSから独立する必要がある(例えば、チェックポイントアクティビティが、ホストOSが、概して、チェックポイントのために一時停止される場合であっても、継続する必要がある)ため、使用されることができない。これは、例えば、TCP/IPが、チェックポイントドライバを伝達するためにNICを経由して使用される場合、ホストOSのTCP/IPスタックとは明確に異なるTCP/IPスタックが、チェックポイントドライバにおいて実装されることを意味する。
【0094】
図9を参照すると、チェックポイントエンジンは、TSBタイミングによって決定されるような周期的チェックポイントを開始する。チェックポイントプロセスの目的は、一次ノードが、故障することになる場合、二次ノードが、アプリケーション動作不能状態を伴わずに引き継ぎ得るように、一次ノードの状態に合致するように二次ノードの状態を更新することである。
【0095】
チェックポイントプロセスのステップは、以下である。
・チェックポイントが差し迫っていることをネットワークおよび記憶装置ドライバに知らせるステップ。チェックポイントは、ここでは、記憶装置ドライバが、未処理の記憶装置アクセスが完了されていることを示すコールバックを実施するまで、一時停止される。
・一次および二次ノードの両方の上でのOS実行を停止させるステップ。
・一次および二次ノードの両方の上での最後のチェックポイント以降に修正されたメモリのリストを取得するステップ。これらの2つのリストの結合を計算する。
・修正されたメモリリストの結合を使用して、ハードウェアインターフェースを介して、修正されたメモリを一次ノードから二次ノードに送信するステップ。
・一次ノード上で、プロセッサおよびデバイスの状態を捕捉するステップ。
・ハードウェアインターフェースを介して、プロセッサおよびデバイス状態を一次ノードから二次ノードに送信するステップ。
・一次および二次ノードの両方の上で、チェックポイントプロセスが完了し、OMが再開しようとしていることをネットワークおよび記憶装置ドライバに知らせるステップ。
・一次および二次ノードの両方の上でOS実行を再開するステップ。
【0096】
OSベースのRT/FTの種々の実装では、本システムおよびタイムスロットは、リアルタイムチェックポインティングをサポートするために適切にサイズ決めされるべきである。チェックポイントプロセスの間、一次または二次チェックポイントドライバのいずれかが、チェックポイント持続時間が低優先度の通信に関してTSB上の分配された時間を超える(したがって、可能性として、リアルタイム期限義務に干渉する)であろうことを検出する場合、チェックポイントは、中止され、本システムは、リアルタイム期限が満たされることを確実にするために、シンプレックス状態に戻されるであろう。これが、生じる場合、本システムは、FT動作を復元するために、それ自体と再びパートナになるであろう。
【0097】
同様に、一次または二次チェックポイントドライバのいずれかが、TSBタイミングによって規定されるタイムスロット以外におけるチェックポイントを実施する必要性を検出する場合、本システムは、リアルタイム期限が満たされることを確実にするために、シンプレックス状態に戻るであろう。これが、生じる場合、本システムは、FT動作を復元するために、それ自体と再びパートナになるであろう。スケジューリングされていないチェックポイントを引き起こし得るアイテムの実施例は、メモリ追跡と関連付けられるバッファが小さすぎ、チェックポイントの間に生じる全てのメモリ変更を記録することができないこと、および記憶装置キャッシュが小さすぎ、チェックポイントの間の全ての記憶装置変更をキャッシュすることができないことである。
【0098】
チェックポイントシムは、OSに透過的であり、メモリトラッカおよび多方面デバイス状態複製のためのコンテナである。本チェックポイントシムコンポーネントは、サーバOSによって修正されたメモリを追跡し、したがって、チェックポインティングエンジンは、チェックポイントにおいてコピーされる必要があるメモリを把握する。一実施形態では、チェックポイントシムは、メモリを追跡するために、IntelのPML(ページ修正ロギング)ハードウェア特徴を利用する。種々の実施形態では、マザーボードまたはプロセッサまたは他のチップセット特有命令および特徴等の他のハードウェア特有特徴が、メモリを追跡するために使用されてもよい。VT-xハードウェア仮想化拡張が、あるシナリオ下でPMLを使用するときに有効化される。VT-xが、有効化される場合、ハードウェアは、仮想マシンモニタ(VMM)コードが動作するための物理メモリの連続した面積を確保する。典型的な仮想マシン環境では、VMMコードは、仮想化ゲストオペレーティングシステムが、割り込み、メモリ障害、IOアクセス、ある特権命令、および修正されたメモリ場所を含むPMLが発生させたリストが点検される必要があるというインジケーション等の特別な取扱を必要とする命令を実行するときに呼び出される。
【0099】
メモリトラッカは、PML FULL vmexitイベントを取り扱い、確保されたメモリ領域内にダーティページバッファを維持する、主要な機能を有するマイクロVMMシム(最小限のハイパーバイザ)をインストールする。VMMはまた、OSからのいくつかの他のvmexitイベント、主に、PMLを使用する間にハードウェアにおいて無効化されることができないそれらのvmexitを処理する。これらのvmexitイベントは、サーバが、VMMが存在する間にその通常の構成において動作し続けるであろうように、マイクロVMM内でエミュレートされる。
【0100】
システムワークロードが、ハードウェアPMLログを埋め尽くすほどのダーティページを発生させると、PML FULL vmexitが、生じ、ページの新しいセットが、追跡され、ワークロード処理が、継続するであろう。これは、メモリトラッカが、以前のチェックポイント以降に各サーバ上で修正された物理メモリページのリストを発生させることを可能にする。メモリ追跡実施形態は、ページレベルにおいてメモリ修正を追跡し、他の実施形態は、異なる粒度においてメモリを追跡してもよい。
【0101】
多方面デバイス状態複製は、チェックポイントシムコンポーネントである。具体的には、本チェックポイントシムコンポーネントは、一方のノード/サーバからのOS常駐コンポーネントによって捕捉されなかったデバイス状態を捕捉し、チェックポイントの一部としてこれを他方のノード/サーバに適用する。
【0102】
一次サーバ上のチェックポイントエンジンは、タイムスタンプカウンタ、プロセッサレジスタ、スタック、および他のデータ等のいくつかのデバイスおよびプロセッサ状態を読み取り、または抽出し、確保されたメモリ領域内にその多方面デバイス状態データを記録する要求をVMMに発行する。本データは、二次サーバに伝達される。
【0103】
二次側上のチェックポイントエンジンは、ダーティページデータおよび多方面デバイス状態データを含む、完全なチェックポイントデータが受信されるまで待機するようにVMMに要求し、次いで、VMMは、そのデータを適用し、新しいチェックポイントの文脈においてOSを再開する。
記憶装置ドライバおよびサブコンポーネント
【0104】
記憶装置ドライバは、チェックポインティングをサポートするように設計される、OS記憶装置ハードウェアドライバである。チェックポインティングのサポートにおける具体的コンポーネントは、直下に説明される、キャッシングコンポーネントおよび複製コンポーネントである。
【0105】
OS記憶装置ドライバのキャッシングコンポーネントは、一次および二次ノードの両方の上で、各チェックポイントの間に生じる記憶装置書込をキャッシュする。チェックポイント起動間隔内で、OSの記憶装置のビューは、各ノードが、独立して動作し、潜在的に、異なる書込要求を発行するため、ノードの間で相違することを可能にされる。各チェックポイントに続いて、二次記憶装置は、一次と同じにされる。媒体に書込を引き渡す代わりにそれらをキャッシュすることは、種々の利点を提供する。例えば、二次キャッシュは、単純に、チェックポイントに続いて破棄されることができる。また、一次ノードの故障および最終的な二次からの回復の場合では、チェックポイントを行う前に一次書込を媒体に引き渡すことは、問題となり、その場合では、一次キャッシュは、同様に破棄されるであろう。
【0106】
OS記憶装置ドライバの複製コンポーネントは、一次および二次ノードの間で記憶装置を複製することをサポートする。各起動間隔の開始時、記憶装置は、同じである。これは、動作が開始される前に初期完全同期動作を要求する。次いで、ドライバのキャッシングコンポーネントと協働して、記憶装置修正が、各チェックポイントが行われる際に一次ノードから二次ノードに複製され、二次記憶媒体に引き渡される。
ネットワークドライバおよびサブコンポーネント
【0107】
ネットワークドライバは、リアルタイムFTチェックポインティングをサポートするように設計される、OSネットワークハードウェアドライバである。ネットワークドライバのコンポーネントは、リプリケータと、ローカル発信パケット待ち行列と、リリースコーディネータと、パートナ発信パケット待ち行列と、リリースノーティファイアとを含む。これらはそれぞれ、1つ以上のソフトウェアプログラム、方法、またはルーチンとして実装されてもよい。
【0108】
一次ノード上で、リプリケータコンポーネントは、OSネットワークスタックから発信ネットワークパケットをとり、パケットを一次のローカル発信パケット待ち行列および二次のパートナ発信パケット待ち行列に送信する。二次ノード上で、リプリケータコンポーネントは、非アクティブであり、単純に、二次OSネットワークスタックから二次のローカル発信パケット待ち行列へのパケットのための通路としての役割を果たす。パケットとともに、リプリケータは、各パケットが割り当てられるTSBタイムスロットを識別する情報を渡す。
【0109】
ローカル発信パケット待ち行列コンポーネントは、リリースコーディネータによる可能性として考えられる後のリリースのために、ローカルOSネットワークスタックからのパケットを待ち行列に入れる。パケットとともに、各パケットが割り当てられるTSBタイムスロットを識別する情報が、待ち行列に入れられる。パートナ発信パケット待ち行列コンポーネントは、リリースコーディネータによる可能性として考えられる後のリリースのために、パートナOSネットワークスタックからのパケットを待ち行列に入れる。これは、二次ノード上でのみアクティブである。
【0110】
発信パケットをリリースするための2つの代替が、上記に議論される。これらはまた、OSベースのRT/FTシステムに適用される。これらは、以下を含む。
a)本システムが、多数の重複パケットを許容することができる場合、一次および二次RT/FTは両方とも、待ち行列に入れられた発信パケットを無条件にリリースすることができる。
b)本システムが、多数の重複パケットを許容することができない場合、一次のみが、非故障ケースにおいて待ち行列に入れられた発信パケットをリリースする。
【0111】
代替bが、使用される場合、パートナ発信パケット待ち行列(二次の上でのみアクティブ)は、パケットが、一次からリリースされるとき、一次リリースノーティファイアから通知を受信している。対応するパケットは、次いで、パートナ発信パケット待ち行列から除去される。
【0112】
リリースコーディネータは、パケットを適切な待ち行列から適切な時間にOSにリリースし、したがって、外部ネットワークにリリースする。全ての場合では、パケットは、その割り当てられたTSBタイムスロットの間でのみリリースされる。
【0113】
非故障ケースでは、以前のエポックからのパケットは、上記からの代替aが、使用される場合、一次ノードのローカル発信パケット待ち行列および二次ノードのパートナ発信パケット待ち行列の両方からリリースされるか、または上記の代替bが、使用される場合、一次ハイパーバイザのローカル発信パケット待ち行列のみからリリースされるかのいずれかである。
【0114】
上記からの代替bが、使用される場合、一次のリリースコーディネータは、リリースされた各パケットを一次のリリースノーティファイアに通知する。パケットが実際にリリースされたことを確実にするための遅延後、リリースノーティファイアは、通知を二次のパートナ発信パケット待ち行列上に渡す。
【0115】
上記からの代替bが、使用され、一次ハイパーバイザまたはVMが、故障する場合、二次リリースコーディネータは、二次のパートナ発信パケット待ち行列内に残りのパケットをリリースする。
【0116】
リリースノーティファイアは、上記のオプションbのみにおいて使用され、一次によってリリースされたいずれのパケットも二次に通知する。リリースノーティファイアの主要な機能は、パケットが実際に一次によってリリースされたことを確実にするために、二次への通知に十分な遅延を追加することである。これは、パケットが、これがリリースされていないときにリリースされたと以前の二次が見なすことに起因する、フェイルオーバ後のいずれのドロップされるパケットも回避するためである。
変形例および代替実施形態
【0117】
標準的アクティブ-アクティブチェックポインティング(例えば、COLO)は、前述の節に説明されるリアルタイムチェックポインティングに対して以下の2つの性能利点を有する。
・ネットワークパケットは、ゲーティングされず、それによって、ネットワーク待ち時間を有意に低減させ、それによって、性能を改良する。
・チェックポイントは、概して、両方のノードによって生成される発信パケットにおける十分な相違が存在する場合のみ呼び出され、殆どのワークロードに関してチェックポイントの数を低減させる。
【0118】
2つのノード(OSベースのチェックポインティング)または2つのVM(仮想化ベースのチェックポインティング)は、どの時点でも十分に相違するパケットを生成し、したがって、どの時点でもチェックポイントを要求し、それによって、リアルタイム期限に遅らせ得るため、アクティブ-アクティブチェックポインティングを使用してリアルタイム耐障害性ソリューションを実装することは、可能ではない。前述にかかわらず、いくつかのトレードオフを犠牲にして上記のような2つの性能利点を緩和し、3つの付加的リアルタイムFTチェックポインティング代替を作成することが、可能である。これらの3つの代替または変形は、以下の実施形態を含む。
1)変形1-チェックポイントを低減させる
・必要とされない場合、チェックポイントを省略する
2)変形2-ネットワークゲーティングを低減させる
・不一致が存在しない限り、パケットをゲーティングしない
3)変形3(変形1および2が組み合わせられる)
・不一致が存在しない限り、パケットをゲーティングしない
・必要とされない場合、チェックポイントを省略する
【0119】
上記に列挙される3つの変形は、一次および二次ノードの間の発信パケットを比較するための論理の追加を要求する。具体的には、
図10に示される仮想化ベースのリアルタイムチェックポインティングに関して、二次ノードからの発信パケットを一次ノードからのものと比較するための論理が、ネットワークサポートコンポーネントに追加される。具体的には、パケット比較論理が、追加される。本パケット比較論理は、一方のノード上でのみアクティブである必要があるが、両方のノードが、比較の結果を把握する必要がある。同様に、
図11は、追加されるパケット比較論理の追加を伴うOSベースのリアルタイムチェックポインティングネットワークドライバの略図を示す。一般に、パートナの言及は、該当する場合、他のコンピューティングデバイスまたは仮想マシン/ハイパーバイザを指す。
変形1-チェックポイントを低減させる
【0120】
一次および二次の両方によって生成される発信パケットが、事実上、あるサイクルの間に同等である場合、チェックポイントを実施するいかなる必要性も、存在しない。これは、そうでなければチェックポイントに対して費やされるであろう算出サイクルおよびランタイムが、アプリケーションのために利用可能である利点を有する。これは、以下のうちの1つ以上のものを含む不利点を確かに有する。
1)論理が、一次および二次からの発信パケットを比較するために設計に追加される。
2)チェックポイントが、必要とされるとき、これは、平均して、チェックポイントがサイクル毎に行われた場合よりも長いであろう。最小の設計される可能性として考えられるサイクル時間は、したがって、これらのより長いチェックポイントを可能にするために増加される。
3)直下に概説される理由に起因して、パケットは、不一致が、サイクルにおいてチェックポイントを呼び出すことができないほど遅くに生じる場合、最大2サイクル強にわたってゲーティングされる。後で説明されるように、これは、基本実装の規則的な巡回挙動を乱し、また、最小サイクル時間をさらに増加させ得る。
【0121】
図12Aは、不一致がサイクルにおいてチェックポイントを呼び出すことができないほど遅くに生じる場合のパケットゲーティングの必要性を図示する。
図12Bのサイクル3に示されるように、一次と二次との間のパケットが、不一致となる場合、チェックポイントを呼び出すには遅すぎるとき、2つのノードは、一貫しない状態において次のサイクルに入る。結果として、二次が、続くサイクルにおいて(一次の故障に起因して)一次を引き継ぐ必要性がある場合、一貫しない状態が、外界にリリースされる。
【0122】
本問題に対する1つのソリューションは、いったん不一致が生じると、パケットのゲーティングを開始し、続くサイクルでチェックポイントを行い、チェックポイント後までパケットをゲーティングし続けることである。これは、いずれの検出可能な一貫しない状態も外界に伝送されることを防止し、それによって、二次が一次を引き継ぐために十分に一貫した状態にあることを確実にする。一次が、故障する場合、リリースされるものは、二次のパケットである。これは、少なくとも2回の待ち時間のサイクルをパケットに追加し、1つのサイクルは、このように言及された遅延のためのものであり、別のサイクルは、本変形が、基本ソリューションのように、常時、遅延のサイクルを追加するためである。これは、いかなるパケットも伝送されないサイクルと、2サイクル分のパケットが伝送される後続サイクルとを引き起こすであろう。これは、巡回挙動を乱し、あるサイクルにおいて2倍の数のパケットを伝送するステップが、重要なタイミングパス上にある場合、最小の可能性として考えられるサイクル時間に影響を及ぼし得る。
【0123】
変形1は、付加的算出サイクルを提供するが、付加的算出サイクルは、自由裁量の算出サイクルである。本システムは、これが、全サイクルにおけるチェックポイントを仮定して、最小の要求される作業を遂行し得るようにサイズ決めされる。但し、実践では、比較的に短いサイクル時間を仮定して、サイクルの大部分は、チェックポイントを要求しないはずである。
変形2-ネットワークゲーティングを低減させる
【0124】
一実施形態では、リアルタイムチェックポインティングソリューションは、起動間隔の度に全ての発信パケットをゲーティングする。これは、いったん不一致が生じるときのみ、パケットのゲーティングを開始するように緩和されることができる。これは、平均ネットワーク待ち時間を低減させる利点を有する。種々の実施形態では、本変形の実装の一部として、ハードウェアまたはソフトウェアモジュール等の論理が、一次および二次からの発信パケットを比較するために、適用可能なシステムおよび方法に追加される。ネットワークトラフィックは、
図12Bに図示されるように、もはや厳密には巡回的ではない。具体的には、
図12Bを参照すると、いかなるパケットも、サイクル2においてタイムスロット3の間に配信されないであろう一方、サイクル3のタイムスロット3では、サイクル2および3の両方からのパケットが、リリースされるであろう。ネットワーク帯域幅が、最小サイクル時間を決定する際のクリティカルパスであった場合、サイクル時間は、2サイクル分のパケットが、単一のタイムスロットにおいてリリースされる必要性があり得るため、増加される。
【0125】
また、低減されるものは、平均ネットワーク待ち時間のみであり、最悪の場合、待ち時間は、同一のままである、または悪化することに留意されたい。これは、一番最初のパケットが、不一致となり得、サイクル時間が、可能性として、ネットワーク帯域幅が最小サイクル時間を決定する際のクリティカルパスであることに起因して、より長くなるため生じる。
変形3-ネットワークゲーティングおよびチェックポイントを低減させる
【0126】
変形1および2は、より短い平均ネットワーク待ち時間およびより自由裁量の算出サイクルを伴うソリューションを生成するために組み合わせられてもよいが、これは、上記に概説される変形1および2の不利点を受ける。
旧来のチェックポインティングに対するリアルタイム耐障害性システムの改良
【0127】
上記に議論されるリアルタイム耐障害性システムおよび方法は、種々の旧来のチェックポインティングアプローチの特徴を改良および回避する。アクティブ-パッシブチェックポインティングソリューションは、標的ワークロードを起動するアクティブVMまたはOSと、事実上アイドル状態であり、先行するアクティブVMまたはOSが、故障する場合、標的ワークロードの起動を続行するために、アクティブVMまたはOSの状態の周期的スナップショットを受信している、パッシブ(スタンバイ)VMまたはOMとを有する。
【0128】
アクティブ-パッシブチェックポインティングソリューションは、高頻度においてVMまたはOS状態を同期させ、チェックポイントが完了する(状態捕捉および伝達)まで、各エポックの間に出力ネットワークパケットをバッファリング(ゲーティング)し、外部クライアントがフェイルオーバを横断して機能的に一貫したネットワークパケットを供給されることを確実にする。さらに、アクティブ-アクティブチェックポインティングは、出力類似性に基づいて、チェックポイントの頻度を緩和し、各エポックの間に出力ネットワークパケットをゲーティングする必要性を除去することによって、殆どのワークロードに関してアクティブ-パッシブチェックポインティングに対して性能を改良する。
【0129】
アクティブ-アクティブチェックポインティングシステムでは、VMおよび/またはOSインスタンスの両方が、起動しており、発信ネットワークパケットが、インスタンスの間で比較され、それらが十分に類似する場合、直ちにリリースされる。冗長VMまたはOSは、それらが、クライアント要求に対して事実上同じ応答を発生させる限り、相違し得る。対応する発信ネットワークパケットが、もはや事実上同じではない場合、チェックポイントが、VMまたはOSを再同期させるために呼び出される。
【0130】
アクティブ-パッシブチェックポインティングは、複数の理由からリアルタイム動作のために好適ではない。同様に、アクティブ-アクティブチェックポインティングは、複数の理由からリアルタイム動作のために好適ではない。これらの理由のうちのいくつかが、下記に議論され、そのようなRT/FT実施形態が、以下の動作モードのうちの1つ以上のものまたは全てを回避するため、旧来のアクティブ-パッシブおよびアクティブ-アクティブチェックポインティングが、本開示の種々のRT/FT実施形態と異なる理由に関する根拠を提供する。
【0131】
アクティブ-パッシブシステムでは、チェックポイントタイミングは、TSBタイミングから独立し、リアルタイム期限に遅らせ得る。故障が、生じる場合、本システムは、最後のチェックポイントまで戻り、すなわち、処理時間のエポックまでが、失われ、可能性として、リアルタイム期限に遅らせる。加えて、アクティブ-パッシブチェックポインティングは、故障に応じて発信パケットをドロップし得る。これは、リアルタイム義務を破り、したがって、殆どのリアルタイム用途に関して許容可能ではない。非リアルタイムソリューションは、ドロップされたパケットを補償するために、より高いレベルのネットワークプロトコル(例えば、TCP)に依拠する。アクティブ-アクティブチェックポインティングに関して、チェックポイントは、TSBタイミングから独立して、パケット不一致が生じるときは常に生じ、したがって、リアルタイム期限に遅らせ得る。所与のRT/FT実施形態は、本明細書に議論されるアクティブ-パッシブおよびアクティブ-アクティブチェックポインティング問題および設計要件を回避する様式で動作する。
【0132】
耐障害性コンピュータシステムは、頻繁に、概して、一次および二次ノードと称される、2つのプロセッササブシステムを含む。これらのノードは、並行して同一のプログラムを実質的に同期的に実行するように動作する(アクティブ-アクティブ)か、1つのシステム、すなわち、一次ノードが有用な算出をアクティブに行い、二次ノードが一次システムの故障を待機してスタンバイ(アクティブスタンバイ)して動作するかのいずれかである。一次システムが、故障する場合、二次は、新しい一次として引き継ぎ、故障している一次の作業を継続し、これが置換されることを可能にする。
一般的および具体的なコンピュータベースの実装および実施形態
【0133】
以下の議論から明白であるように別様に具体的に記載されない限り、説明全体を通して、「~を処理する」または「~を算出する」または「~をチェックポインティングする」または「~を計算する」または「~を遅延させる」または「~を比較する」、「~を発生させる」または「~を決定する」または「~を転送する」または「~を延期する」、「~を引き渡す」または「~を中断する」または「~を取り扱う」または「~を受信する」または「~をバッファリングする」または「~を配分する」または「~を表示する」または「~にフラグを付ける」またはブール論理または他の設定関連動作または同等物等の用語を利用する議論は、コンピュータシステムまたは電子デバイスのレジスタおよびメモリ内の物理(電子)量として表されるデータを操作し、電子メモリまたはレジスタまたは他のそのような情報記憶、伝送、または表示デバイス内の物理量として同様に表される他のデータに変換する、コンピュータシステムまたは電子デバイスのアクションおよびプロセスを指すことを理解されたい。
【0134】
本明細書に提示されるアルゴリズムは、本質的に、任意の特定のコンピュータまたは他の装置に関連しない。種々の汎用システムが、本明細書の教示に従ってプログラムと併用されてもよい、またはこれは、要求される方法ステップを実施するためのより特殊化された装置を構築するために便宜的であることを証明してもよい。種々のこれらのシステムのために要求される構造は、上記の説明から明白である。加えて、本開示は、任意の特定のプログラミング言語を参照して説明されず、種々の実施形態は、したがって、種々のプログラミング言語を使用して実装されてもよい。
【0135】
いくつかの実装が、説明された。それにもかかわらず、種々の修正が、本開示の精神および範囲から逸脱することなく行われ得ることを理解されたい。例えば、上記に示されるフローの種々の形態が、使用され、ステップが、再順序付けられる、追加される、または除去されてもよい。故に、他の実装も、以下の請求項の範囲内である。
【0136】
本明細書に提示される実施例は、本開示の潜在的および具体的実装を例証することを意図している。実施例は、主として、当業者のための本開示の例証の目的のために意図される。実施例の特定の側面または複数の側面は、必ずしも本開示の範囲を限定することを意図しているわけではない。
【0137】
本開示の図および説明は、明確化の目的のために、他の要素を排除しながら、本開示の明確な理解のために関連する要素を例証するために簡略化されている。しかしながら、当業者は、焦点を当てられる議論のこれらの分類が、本開示のより深い理解を促進せず、したがって、そのような要素のより詳細な説明が、本明細書に提供されないことを認識し得る。
【0138】
本実施形態と関連付けられるプロセスは、コンピュータ等のプログラマブル機器によって実行されてもよい。プログラマブル機器にプロセスを実行させるために採用され得るソフトウェアまたは他の命令のセットは、例えば、コンピュータシステム(不揮発性)メモリ、光学ディスク、磁気テープ、または磁気ディスク等の任意の記憶デバイス内に記憶されてもよい。さらに、プロセスのうちのいくつかは、コンピュータシステムが製造されるときに、またはコンピュータ可読メモリ媒体を介してプログラムされてもよい。
【0139】
また、本明細書に説明されるあるプロセス側面が、コンピュータ可読メモリ媒体またはプロセスステップを実施するようにコンピュータまたはコンピュータシステムに指示する媒体上に記憶される命令を使用して実施され得ることを理解されたい。コンピュータ可読媒体は、例えば、ディスケット、読取専用および読取/書込の両方の種類のコンパクトディスク、光学ディスクドライブ、およびハードディスクドライブ等のメモリデバイスを含んでもよい。コンピュータ可読媒体はまた、物理的、仮想的、恒久的、一時的、半恒久的、および/または半一時的であり得るメモリ記憶装置を含んでもよい。
【0140】
本明細書に開示されるコンピュータシステムおよびコンピュータベースのデバイスは、情報を取得、処理、および通信する際に使用される、あるソフトウェアアプリケーションを記憶するためのメモリを含んでもよい。そのようなメモリが、開示される実施形態の動作に関して内部または外部にあり得ることを理解されたい。メモリはまた、ハードディスク、光学ディスク、フロッピー(登録商標)ディスク、ROM(読取専用メモリ)、RAM(ランダムアクセスメモリ)、PROM(プログラマブルROM)、EEPROM(電気的消去可能PROM)、および/または他のコンピュータ可読メモリ媒体を含む、ソフトウェアを記憶するための任意の手段を含んでもよい。種々の実施形態では、「ホスト」、「エンジン」、「ローダ」、「フィルタ」、「プラットフォーム」、または「コンポーネント」は、種々のコンピュータまたはコンピュータシステムを含んでもよい、またはソフトウェア、ファームウェア、および/またはハードウェアの合理的な組み合わせを含んでもよい。
【0141】
本開示の種々の実施形態では、所与の機能または複数の機能を実施するために、単一のコンポーネントが、複数のコンポーネントによって置換されてもよく、複数のコンポーネントが、単一のコンポーネントによって置換されてもよい。そのような代用が、本開示の実施形態を実践するために動作的ではないであろう場合を除いて、そのような代用は、本開示の範囲内である。例えば、サーバのうちのいずれかは、協調的機能のために配置および構成される、「サーバファーム」またはネットワーク化サーバの他のグループ化(例えば、サーバブレードのグループ)によって置換されてもよい。サーバファームが、ファームの個々のコンポーネントの間/中でワークロードを分散させる役割を果たし得、複数のサーバの集合的かつ協調的な能力を利用することによってコンピューティングプロセスを迅速化し得ることを理解されたい。そのようなサーバファームは、例えば、異なる機械からの処理能力に関する要求を追跡するステップ、ネットワーク要求に基づいてタスクに優先順位を付け、それをスケジューリングするステップ、および/またはコンポーネント故障または動作性における低減の場合にバックアップ緊急対応を提供するステップ等のタスクを遂行する、負荷分散ソフトウェアを採用してもよい。
【0142】
一般に、本明細書に説明される種々の実施形態またはそのコンポーネントまたは部分が、ソフトウェア、ファームウェア、および/またはハードウェア、またはそのモジュールの多くの異なる実施形態において実装され得ることが、当業者に明白であり得る。本実施形態のうちのいくつかを実装するために使用されるソフトウェアコードまたは特殊化制御ハードウェアは、本開示を限定するものではない。コンピュータソフトウェアおよび他のコンピュータ実装命令のためのプログラミング言語は、実行前にコンパイラまたはアセンブラによって機械言語に翻訳されてもよい、および/またはインタープリタによってランタイム時に直接翻訳されてもよい。
【0143】
アセンブリ言語の実施例は、ARM、MIPS、およびx86を含み、高レベル言語の実施例は、Ada、BASIC、C、C++、C#、COBOL、Fortran、Java(登録商標)、Lisp、Pascal、Object Pascalを含み、スクリプト言語の実施例は、Bourneスクリプト、JavaScript(登録商標)、Python、Ruby、PHP、およびPerlを含む。種々の実施形態が、例えば、Lotus Notes環境内で採用されてもよい。そのようなソフトウェアは、例えば、磁気または光学記憶媒体等の任意のタイプの好適なコンピュータ可読媒体または複数の媒体上に記憶されてもよい。したがって、実施形態の動作および挙動は、実際のソフトウェアコードまたは特殊化ハードウェアコンポーネントを具体的に参照することなく説明される。そのような具体的参照の不在は、当業者が、合理的な労力のみを用いて、過度の実験を伴わずに、本明細書の説明に基づいて本開示の実施形態を実装するためのソフトウェアおよび制御ハードウェアを設計することが可能であろうことが明確に理解されるため、適している。
【0144】
本明細書に説明されるシステムおよび方法の種々の実施形態は、異なるコンポーネント間の通信を助長する、データを伝達する、またはリソースおよび情報を共有するために、1つ以上の電子コンピュータネットワークを採用してもよい。そのようなコンピュータネットワークは、ネットワーク内のデバイスを相互接続するために使用されるハードウェアおよびソフトウェア技術に従って分類されることができる。
【0145】
コンピュータネットワークは、アクティブネットワーキング、クライアント-サーバ、またはピアツーピア機能アーキテクチャ等のネットワークの要素またはコンポーネント間の機能的関係に基づいて特徴付けられ得る。コンピュータネットワークは、例えば、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、または階層トポロジネットワーク等のネットワークトポロジに従って分類され得る。コンピュータネットワークはまた、デジタルおよびアナログネットワーク等のデータ通信のために採用される方法に基づいて分類され得る。
【0146】
本明細書に説明される方法、システム、およびツールの実施形態は、共通ルーティング技術を通して2つ以上の明確に異なる電子コンピュータネットワークまたはネットワークセグメントを接続するためのインターネットワーキングを採用してもよい。採用されるインターネットワークのタイプは、インターネットワークにおける管理および/または参加に依存し得る。インターネットワークの非限定的実施例は、イントラネット、エクストラネット、およびインターネットを含む。イントラネットおよびエクストラネットは、インターネットへの接続を有する場合とそうではない場合がある。インターネットに接続される場合、イントラネットまたはエクストラネットは、適切な認証技術または他のセキュリティ手段を用いて保護され得る。本明細書に適用されるように、イントラネットは、管理エンティティによる共通制御下で、インターネットプロトコル、ウェブブラウザ、および/またはファイル伝達アプリケーションを採用するネットワークのグループであり得る。そのような管理エンティティは、イントラネットへのアクセスを、例えば、許可されたユーザのみ、または組織または商業団体の別の内部ネットワークに制限し得る。
【0147】
別様に示されない限り、本明細書および請求項に使用される長さ、幅、深さ、または他の寸法等を表す全ての数字は、全てのインスタンスにおいて、示されるような厳密な値および用語「約」によって修飾されるような値の両方を示すものとして理解されるものである。本明細書に使用されるように、用語「約」は、公称値からの±10%の変動を指す。故に、それと反対に示されない限り、本明細書および添付される請求項に記載される数値パラメータは、取得されることが求められる所望の性質に応じて変動し得る近似値である。少なくとも、均等論の適用を請求項の範囲に限定するための試みとしてではなく、各数値パラメータは、少なくとも、報告された有効桁の数に照らして、かつ通常の丸め技法を適用することによって解釈されるべきである。任意の具体的値は、20%変動し得る。
【0148】
種々の実施形態では、前述の1つ以上の技法、方法、システム、サブシステム、および組み合わせは、仮想化オペレーティングシステム、コンテナベースのオペレーティングシステム、仮想化環境、およびVMware、QEMU、KVM、およびその他等の種々のエミュレータを使用して実装されることができる。
【0149】
本開示は、精神またはその不可欠な特性から逸脱することなく、他の具体的形態において具現化されてもよい。前述の実施形態は、したがって、本明細書に説明される開示に対する限定ではなく、あらゆる点で例証的と見なされるものである。本発明の範囲は、したがって、前述の説明によってではなく、添付される請求項によって示され、請求項と同等の意味および範囲内に該当する全ての変更は、その中に包含されることを意図している。
【0150】
種々の修正および変更が、説明される技術の範囲から逸脱することなく行われ得ることが、当業者によって理解されるであろう。そのような修正および変更は、説明される実施形態の範囲内に該当することを意図している。また、一実施形態に含まれる特徴が、他の実施形態と置換可能であり、描写される実施形態からの1つ以上の特徴が、任意の組み合わせにおいて他の描写される実施形態に含まれ得ることが、当業者によって理解されるであろう。例えば、本明細書に説明される、および/または図に描写される種々のコンポーネントのうちのいずれかは、他の実施形態と組み合わせられる、置換される、またはそれから除外されてもよい。
【外国語明細書】