(58)【調査した分野】(Int.Cl.,DB名)
計算装置において作動するコンソールアプリケーションとサーバーのコントローラーが実行する第一サーバアプリケーションの間に、第一リモートKVMセッションを確立するステップと、
前記コンソールアプリケーションと前記第一サーバアプリケーションの間の、前記第一リモートKVMセッション関連のエラーを検出するステップと、
前記エラーに応じて、前記コンソールアプリケーションと前記サーバー上のOSまたはBIOSが実行する第二サーバアプリケーションの間に、第二リモートKVMセッションを確立するステップと、
を含み、
前記第一リモートKVMセッションは、前記計算装置と前記コントローラーの間の第一ネットワーク接続を介して確立され、
前記第二リモートKVMセッションは、前記計算装置と前記第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることを特徴とする、リモートKVMセッションに使用する方法。
前記第一ネットワーク接続は、前記コントローラーに指定される第一ネットワークアドレスに基づいて確立され、且つ前記第二ネットワーク接続は、前記OSまたは前記BIOSに指定される少なくとも1つの第二ネットワークアドレスに基づいて確立されることを特徴とする、請求項1に記載のリモートKVMセッションに使用する方法。
前記第二サーバアプリケーションから、前記コントローラーのネットワークアドレス要求に対し、または前記リモートKVM機能を実行する要求に対する応答の受信失敗に基づき、第二リモートKVMセッション関連の第二エラーを検出するステップと、
前記第二エラーに応じて、前記コンソールアプリケーションと前記第一サーバアプリケーションの間の第一リモートKVMセッションを再確立するステップとをさらに含み、
前記第一リモートKVMセッションは、前記計算装置と前記第一サーバアプリケーションの間の前記第一ネットワーク接続を介して再確立されることを特徴とする、請求項3に記載のリモートKVMセッションに使用する方法。
前記コントローラーは、前記BIOSから前記第二ネットワークアドレスを受信し、且つ前記コントローラーと前記BIOSの間の帯域内接続を介して、前記第二ネットワークアドレスを前記BIOSに送信することを特徴とする、請求項8に記載のリモートKVMセッションに使用するシステム。
前記システムは、前記リモート装置をさらに含み、前記リモート装置はコンピューター可読媒体を有し、前記コンピューター可読媒体は前記コンソールアプリケーションを格納し、前記コンソールアプリケーションは以下の動作を実行させるコンピューター実行可能な命令を格納し、
前記動作は、
前記コンソールアプリケーションと前記コントローラーに実行される第一サーバアプリケーションの間にリモートKVMセッションを確立し、且つリモートKVM機能を実行し、
前記コンソールアプリケーションと前記コントローラーが実行する前記第一サーバアプリケーションの間の、前記リモートKVMセッション関連のエラーを検出し、
前記エラーに応じて、前記コンソールアプリケーションと前記OSもしくは前記BIOSに実行される第二サーバアプリケーションの間に、第二リモートKVMセッションを確立し、
前記第二リモートKVMセッションは前記リモート装置と前記第二サーバアプリケーションの間の第二ネットワーク接続を介して確立されることを特徴とする、請求項8に記載のリモートKVMセッションに使用するシステム。
【発明を実施するための形態】
【0008】
本開示の様々な実施例を以下に詳しく説明する。また、特定の実施形態について説明しているが、これらは説明のためにのみ示されていることを理解されたい。当業者は、本開示の趣旨及び範囲から逸脱することなく他の要素及び構成を使用できることを認識するであろう。
【0009】
以下に開示されたのは、適応性と安定性に優れるリモート管理アプリケーションのためのシステム、方法及び非一時的なコンピューター可読媒体である。まずは、リモートKVMの例示的なシステム及び構成を簡単に紹介する。続いて、リモートKVMの実施例とその変形を詳しく説明する。これらの変形形態を、様々な実施例として説明する。本開示をまず
図1A、1Bを参照しながら説明する。
【0010】
本明細書に使用されるリモートKVM(rKVM)という用語は、遠隔デスクトップソフトウェアのような遠隔管理のための任意のソフトウェア、プロトコル、インターフェース、ファームウェア、及び/またはハードウェアを指し、ネットワーク及び第一の装置、第二の装置のキーボード、ビデオ(即ち、スクリーンまたはビデオコンソールディスプレイ)、マウス、並びに記憶装置またはイメージ、メモリー装置、周辺装置などの任意の他の部品などである。さらに、装置のキーボード、ビデオ、マウスに遠隔的にアクセス、または装置のキーボード、ビデオ、マウスを遠隔的に制御するために、リモートKVMはRDP(remote desktop protocol)、RFB(remote frame buffer)、ICA(independent computing architecture)、SSH(secure shell)、telnet、HTTP(hyper text transfer protocol)などの1つ以上のプロトコル、及び/またはその後継物若しくは同等物、例えば標準プロトコルを使用してリモートKVMを実行できる。
【0011】
本明細書に使用する「BIOS」という用語は、システムのハードウェア部品を初期化し、システムのハードウェア部品をテストし、メモリー装置からブートローダをロードし、若しくはメモリー装置からOSをロードする任意のファームウェアである。例えば、本明細書に使用するBIOSという用語は、当業界にBIOSとして認知されるファームウェアまたはその後継物若しくは同等物、例えばEFI(Extensible Firmware Interface)またはUEFI(Unified Extensible Firmware Interface)である。
【0012】
図1A、1Bは、例示的なシステムの実施例である。本開示を実施する時、より適切な実施例が当業者には明らかである。当業者であれば、システムの他の実施例も可能であることを容易に理解できる。
【0013】
図1Aは、システムバス計算システム100の構成を示し、その中の部品がバス102を介して電気通信している。この例示的なシステム100は、処理装置(CPUまたはプロセッサー)130と、ROM106及びRAM108などのシステムメモリー104のようなシステム部品を含み、プロセッサー
130に連結するシステムバス102を含む。システム100は、プロセッサー130に直接的にまたは近接的に連結され、若しくは一部として統合される高速メモリーのキャッシュを含むことができる。システム100は、メモリー104及び/または記憶装置112からデータをキャッシュ128にコピーすることで、プロセッサー130による迅速なアクセスを可能にすることができる。このようにして、キャッシュは、プロセッサー130がデータを待つことによって発生する遅延を回避し、性能向上を提供することができる。これら及び他のモジュールは、様々な作動を実行するために、プロセッサー130を制御し、若しくは制御するように構成されることができる。他のシステムメモリー104も使用可能である。メモリー104は、様々な特性を有する複数の異なるタイプのメモリーを含むことができる。プロセッサー130は、プロセッサー130を制御するように構成される記憶装置112に格納されたモジュール1(114)、モジュール2(116)、及びモジュール3(118)などの任意の汎用プロセッサーのようなハードウェアモジュールまたはソフトウェアモジュールを含むことができ、若しくはソフトウェア命令が実際のプロセッサー設計に組み込まれている専用のプロセッサーである。プロセッサー130は、本質的に、複数のコアまたはプロセッサー、バス、メモリーコントローラー、キャッシュなどを含む完全に自己完結型の計算システム(completely self−contained computing system)であってもよい。マルチコアのプロセッサーは、対称または非対称であってもよい。
【0014】
使用者と計算装置システム100の対話を可能にするために、入力装置120は、スピーチ用のマイク、ジェスチャーまたはグラフィック入力の接触画面、キーボード、マウス、動作入力、音声などの任意の数の入力機構を表すことができる。出力装置122はまた、当業界に公知のいくつかの出力機構のうちの1つまたは複数であってもよい。場合によっては、マルチモジュールのシステムにより、使用者が複数タイプの入力装置によって、計算装置100と通信できる。通信インターフェース124は、一般的に、使用者入力及びシステム出力を支配(govern)及び管理することができる。また、特定のハードウェア構成での操作に制限されていないので、ここでの基本的な機能は、改良されたハードウェア及びファームウェアの開発により容易に置換されることができる。
【0015】
記憶装置112は、NVMeドライブなどの不揮発性メモリーであり、若しくはコンピューターによってアクセス可能なデータを格納することができるハードディスクまたは他のタイプのコンピューター可読媒体からなるもの、例えば磁気カセット、フラッシュメモリーカード、DVD、カートリッジ、RAM108、ROM106、及びそれらのハイブリッドである。
【0016】
プロセッサー130を制御するために、記憶装置112はソフトウェアモジュール1(114)、モジュール2(116)、モジュール3(118)を含むことができる。他のハードウェアまたはソフトウェアモジュールも考えられる。記憶装置112は、システムバス102に連結されることができる。1つの実施態様では、特定機能を実行するハードウェアモジュールは、プロセッサー130、バス102、表示装置136などの必要なハードウェア部品に連結されるコンピューター可読媒体に格納されたソフトウェア部品を含み、その機能を実行することができる。
【0017】
コントローラー110は、システム100上の專用のマイクロコントローラーまたはプロセッサーであり、例えばBMCである。一部の実施例では、コントローラー110は、IPMI(IntelligentPlatformManagementInterface)の一部である。さらに、一部の実施例では、コントローラー110はシステム100のマザーボードまたはメイン回路基板に埋め込まれることもできる。コントローラー110は、システム管理ソフトウェアとプラットフォームハードウェアの間のインターフェースを管理することができる。コントローラー110は、以下で説明されるように、コントローラーまたは周辺部品などの様々なシステム装置及び部品(内部及び/または外部)と通信することもできる。
【0018】
コントローラー110は、通知、アラート、及び/またはイベントに対する特定の応答を生成し、リモート装置または部品(例えば、E−mailメッセージ、ネットワークメッセージなど)と通信し、自動ハードウェア回復プロセスのための命令またはコマンドを生成するなどのことができる。管理者は、以下で説明されるように、コントローラー110と遠隔通信して、動作または特定のハードウェア回復手順を開始または実行することもできる。
【0019】
システム100上の異なるタイプのセンサー(例えば、センサー126)は、冷却ファンのスピード、電力状態、OS状態、ハードウェア状態などのパラメータについてコントローラー110に報告することができる。コントローラー110はまた、コントローラー110によって受信されたイベント、アラート、及び通知を管理及び維持するためのシステムイベントログコントローラー及び/または記憶装置を含むことができる。例えば、コントローラー110またはシステムイベントログコントローラーは1つまたは複数の装置及び部品からのアラートまたは通知を受信し、且つそのアラートまたはその通知をシステムイベントログ記憶部品に維持することができる。
【0020】
フラッシュメモリー(Flashmemory)132は、記憶及び/またはデータ転送をするためにシステム100に使用された電子不揮発性コンピューター記憶媒体またはチップであっても良い。フラッシュメモリー132は、電気的に消去及び/または再プログラムされることができる。フラッシュメモリー132は、例えば、EPROM(erasable programmable read−only memory)、EEPROM(electrically erasable programmable read−only memory)、ROM、不揮発性ランダムアクセスメモリー(NVRAM)、またはCMOS(complementary metal−oxide semiconductor)を含むことができる。フラッシュメモリー132は、システム100に最初に電源を入れる時に、システム100によって実行されるBIOS134のファームウェアを、BIOS134に対して特定された設定のセットと共に格納することができる。フラッシュメモリー132はまた、BIOS134に使用される設定を格納することができる。
【0021】
BIOS134は、システム100が起動されるたびにシーケンスプログラムとしてロードされることができる。BIOS134は、その設定のセットに基づいてシステム100に存在するハードウェアを識別、初期化、及びテストすることができる。BIOS134は、システム100上でPOST(Power−on−Self−Test)などの自己テストを実行することができる。自己テストは、HDD(hard disk drives)、光学読取装置(optical reading devices)、冷却装置、記憶モジュール、拡張カード(expansion cards)などの様々なハードウェア部品の機能をテストすることができる。BIOS134は、OSを格納するためにメモリー104、ROM106、RAM108及び/または記憶装置112の領域にアドレス指定して割り当てることができる。BIOS134は、ブートローダー及び/またはOSをロードし、システム100の制御をOSに渡すことができる。
【0022】
システム100のBIOS134は、BIOS134がシステム100内の様々なハードウェア部品をどのように制御するかを定義するファームウェアの設定を含むことができる。ファームウェア設定は、システム100内の様々なハードウェア部品の起動の順番を決めることができる。BIOS134は、UEFIなどのインタフェースを提供することができ、ファームウェア初期設定おけるパラメーターとは異なる様々なパラメーターを設定することができる。例えば、使用者(例えば、管理者)は、BIOS134を使用して、クロック及びバススピードを指定し、システム100にどの周辺機器が取り付けられているかを定義し、健康状態(例えば、ファンスピード及びCPU温度限界)の設定を行い、またはシステム100の全体的な性能及び電力使用に影響を及ぼす様々な他のパラメータを提供することができる。
【0023】
BIOS134は、フラッシュメモリー132に格納されているものとして示されているが、当業者であれば、BIOS134は、例えば、メモリー104またはROM106などの他のメモリー部品に格納されることができることを容易に認識するであろう。しかしながら、BIOS134は、説明のための非限定的な例として、フラッシュメモリー132に格納されているものとして示されている。
【0024】
システム100は、1つまたは複数のセンサー126を含むことができる。1つまたは複数のセンサー126は、例えば、1つまたは複数の温度センサー、熱センサー、酸素センサー、化学センサー、ノイズセンサー、熱センサー、電流センサー、電圧検出器、空気流量センサー、流量センサー、赤外線温度計、熱流量センサー、温度計、高温計などを含むことができる。例えば、1つまたは複数のセンサー126は、バス102を介してプロセッサー、キャッシュメモリー128、フラッシュメモリー132、通信インターフェース124、メモリー104、ROM106、RAM108、コントローラー110及び記憶装置112に通信することができる。
【0025】
システム100内の様々な部品(例えばセンサー126、プロセッサー130、コントローラー110、記憶装置112など)は、例えば、I
2Cバス(inter−integratedcircuit bus)、SMBバス(system management bus)、eSPI(enhanced serial peripheral interface)、LPC(lowpincount)、GPIOインターフェース(general purpose input/output interface)、PCIeインターフェース(peripheral component interconnect express interface)などの、1つまたは複数の手段でシステム100内の他の部品に通信することができる。
【0026】
図1Bに示されるのは、チップセット構成を有する例示的なコンピューターシステム150であり、そのコンピューターシステム150は、上記の方法または操作を実行し、且つGUI(graphicaluserinterface)を生成して表示することができる。コンピューターシステム150は、上記方法を実行するためのコンピューターハードウェア、ソフトウェア、及びファームウェアを含むことができる。システム150は、識別された計算を実行するように構成されたソフトウェア、ファームウェア、及びハードウェアを実行することができる任意の数の物理的及び/または論理的に異なるものを表すプロセッサー160を含むことができる。プロセッサー160は、チップセット152と通信することができ、チップセット152は、プロセッサー160の入力と出力を制御することができる。この例では、チップセット152は、ディスプレイなどの情報を出力装置164に出力し、磁気媒体、固体媒体または不揮発性媒体(例えば、NVMe)を含むことができる記憶装置166において情報を読み書きすることができる。チップセット152はまた、RAM168からデータを読み取り、RAM168にデータを書き込むこともできる。様々な使用者インターフェース部品156に連結するブリッジ154は、チップセット152に連結するために提供される。このような使用者インターフェース部品156は、キーボード、マイク、接触タッチ検出及び処理回路、マウスのようなポインティング装置などを含むことができる。一般的に、システム150への入力は、機械及び/または人間など様々なソースからである。
【0027】
チップセット152はまた、異なる物理的なインターフェースを有する1つまたは複数の通信インターフェース158と連結することもできる。そのような通信インターフェースは、有線及び無線のローカルエリアネットワークインターフェース、プロードバンドワイヤレスネットワークインターフェース、及びパーソナルエリアネットワークインターフェースを含むことができる。本明細書で開示されるGUIを生成、表示、及び使用するための方法のいくつかのアプリケーションは、記憶装置166またはRAM168に格納されたデータを解析するプロセッサー160によって、物理的なインターフェースを介して受信し、若しくは機器の自ら生成した順序づけられたデータセットを受信することを含むことができる。さらに、機械は、使用者インターフェース部品156を介して使用者からの入力を受信し、プロセッサー160を使用して、その入力を解明することによって、ブラウジング機能のような適切な機能を実行することができる。
【0028】
さらに、チップセット152は、ファームウェア162と通信し、ファームウェア162は、電源を入れたときにコンピューターシステム150によって実行されることができる。ファームウェア162の設定によって、ファームウェア162はコンピューターシステム150内のハードウェアを識別、初期化またはテストすることができる。ファームウェア162は、システム150上で例えばPOSTなどの自己テストを実行することができる。自己テストは、様々なハードウェア部品(152−168)の機能性をテストすることができる。ファームウェア162は、RAM168内にOSを格納する領域をアドレス指定して割り当てることができる。ファームウェア162は、ブートローダー及び/またはOSをロードし、システムの制御をOSに渡すことができる。場合によって、ファームウェア162は、ハードウェア部品(152−160及び164−168)と通信することができる。ここで、ファームウェア162は、チップセット152及び/または、1つ若しくは複数の他の部品を介して、ハードウェア部品(152−160及び164−168)と通信することができる。場合によっては、ファームウェア162は、ハードウェア部品(152−160及び164−168)と直接に通信することができる。
【0029】
さらに、チップセット152は、BMC170と通信することができる。BMC170は、
図1Aに示された上記のコントローラー110と同様に、管理、監視、及び制御動作を実行することができる特殊なプロセッサーまたはコントローラーであってもよい。例えば、BMC170は、システム150及びその中の部品のいずれかを監視し、ログを生成し、1つまたは複数の特定部品に制御信号を送信し、及び/または独立するネットワーク接続でもあるネットワーク接続を介して他の装置または部品と通信することができる。
【0030】
理解されるべきなのは、例示的なシステム100及びシステム150は、1つ以上のプロセッサー(例えばプロセッサー130及び160)を有することができ、またはより大きな処理能力を提供するためにネットワーク化された計算装置のグループまたはクラスタの一部であっても良い。
【0031】
図2は、リモートKVMシステム200の概略図である。システム204は、ネットワーク202上でシステム150とのリモートKVMセッションを確立することができる。ネットワーク202は、1つまたは複数のネットワークを含むことができる。さらに、ネットワーク202は、インターネットなどの公衆ネットワークを含むことができ、ローカルエリアネットワークなどのプライベートネットワークも含むことができ、及び/または上記両方を組み合わせたVPN(virtual private network)も含むことができる。
【0032】
システム204は、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、スマートフォンなどのようなネットワーク接続を有する任意の計算装置とすることができる。システム204は、システム150上のリモートKVMサーバーアプリケーション222〜226とのリモートKVMセッションを確立するために使用されるリモートKVMコンソールアプリケーションを含むことができる。
【0033】
システム150は、ネットワーク202上に接続を確立して維持するために通信インターフェース158を含むことができる。システム150はまた、様々な命令を実行し、様々な構成要素、動作、及び通信を制御するためのプロセッサー160及びBMC170を含むことができる。システム150はまた、記憶装置166のようなシステム150上の記憶装置に格納されることができるOS208を含むことができる。OS208は、システムのハードウェアとソフトウェアリソースを借りることができ、且つコンピュータープログラムサービスを提供することができる。さらに、OS208は、通信インターフェースを使用して、ネットワーク202を介して他の装置と接続することができる。OS208は、OS208に割り当てられた特定のネットワークアドレス(例えば、インターネットプロトコルアドレス)を使用して、ネットワーク202を介して通信することができる。
【0034】
BIOS162は、ネットワーク202上で通信インターフェース158を介して通信することもできる。BIOS162は、ネットワーク202上で、BIOS162に指定された特定ネットワークアドレスを介して通信することができる。BIOS162に割り当てられたネットワークアドレスは、OS208に割り当てられたネットワークアドレスとは異なる場合がある。しかし、一部の状況では、BIOS202は、OS208がロードされ実行されている間に、ネットワーク通信を送受信しないこともある。したがって、場合によっては、BIOS162は、アドレス衝突を起こすことなくOS208と同じネットワークアドレスを割り当てられることがある。
【0035】
BMC170は、ビデオのためのVGA(video graphic sarray)などのビデオ部品214を含むことができる。ビデオ部品214は、ビデオ用の特定のハードウェア及び/またはソフトウェアを含むことができる。BMC170はまた、ネットワーク202上でネットワーク接続を確立するための通信インターフェース212を含むことができる。BMC170上の通信インターフェース212は、通信インターフェース212に割り当てられたネットワークアドレスを使用して、BMC170がネットワーク202上で通信できるようにする。通信インターフェース212(あるいはBMC170)に割り当てられたネットワークアドレスは、BIOS162及びOS208に割り当てられたネットワークアドレスとは異なることができる。従って、いくつかの例では、システム150は、BIOS162、OS208及びBMC170に対して異なるネットワークアドレスを有することができる。
【0036】
システム150は、ビデオ使用に割り当てられたメモリーを含むことができる表示メモリー210を含むことができる。表示メモリー210は、RAMなどのハードウェアメモリー部品、及び/または論理ファイル若しくはディスクなどの仮想メモリーを含むことができる。システム150はまた、プロセッサー160、記憶装置166、BIOS162、BMC170、表示メモリー210、及び他の任意の部品間のデータフローを管理することができるチップセット152を含むことができる。チップセット152は、様々な部品との帯域内接続(in−band connection)を可能にすることができる。
【0037】
システム150は、OS208によってホストされるリモートKVMサーバアプリケーション224、BIOS162によってホストされるリモートKVMサーバアプリケーション222、及び/またはBMC170によってホストされるリモートKVMサーバアプリケーション226を含むことができる。リモートKVMサーバアプリケーション222−226を使用して、システム204上のリモートKVMコンソールアプリケーション206とのリモートKVMセッションを確立して維持することができる。
【0038】
BMC170上のリモートKVMサーバアプリケーション226は、BMC170上の通信インタフェース212を使用して、システム204上のリモートKVMコンソールアプリケーション206とのBMC接続220をネットワーク202上で確立することができる。さらに、BIOS162上のリモートKVMサーバアプリケーション
222及びOS208上のリモートKVMサーバアプリケーション
224は、システム150上の通信インタフェース158を使用して、システム204上のリモートKVMコンソールアプリケーション206とのホスト接続218をネットワーク202上で確立することができる。ホスト接続218及びBMC接続220は、ネットワーク202上で、システム204上のリモートKVMコンソールアプリケーション206とのリモートKVMセッションに使用されることができる。
【0039】
さらに、ホスト接続218及びBMC接続220は、ネットワーク202上でリモートKVMコンソールアプリケーション206及びシステム204と通信するために、異なるネットワークアドレスを使用することができる。例えば、BMC接続220は、BMC170に割り当てられたネットワークアドレスに基づくことができると共に、ホスト接続218は、OS208及び/またはBIOS162に割り当てられた1つまたは複数の異なるネットワークアドレスに基づくことができる。
【0040】
リモートKVMサーバアプリケーション222−226は、リモートKVMセッションのフェイルオーバーを提供するために使用されることができる。例えば、リモートKVMコンソールアプリケーション206は、BMC接続220を介してリモートKVMサーバアプリケーション226とのリモートKVMセッションを確立することができる。リモートKVMコンソールアプリケーション206は、BIOS162及び/またはOS208のネットワークアドレスを要求するコマンドを周期的にBMC170に送信することができる。リモートKVMコンソール206アプリケーションは、BMC170からBIOS162及び/またはOS208のネットワークアドレスを周期的に受信することができる。次に、リモートKVMコンソールアプリケーション206は、リモートKVMコンソールアプリケーション206とリモートKVMサーバアプリケーション226の間のBMC接続220上のエラーまたは故障を検出した場合に、BIOS162及び/またはOS208のネットワークアドレスを使用して、ホスト接続218上でリモートKVMセッションを続行するか、または新しいリモートKVMセッションを確立することができる。
【0041】
リモートKVMコンソール206アプリケーションは、パケット損失、接続劣化、ユーザ入力、リモートKVMサーバアプリケーション226が応答しないという判断、または他の任意の要因などのイベントに基づいて、エラーまたは故障を検出することができる。例えば、リモートKVMコンソールアプリケーション206は、所定期間内にリモートKVMサーバアプリケーション226からの1つまたは複数の応答を受信していない場合、問題を検出することができる。説明するために、前述のように、リモートKVMコンソールアプリケーション206は、BIOS162及び/またはOS208のネットワークアドレスを要求するコマンドを周期的にリモートKVMサーバアプリケーション226に送ることができる。したがって、リモートKVMコンソールアプリケーション206は、一定期間内にリモートKVMサーバアプリケーション226からの応答を受信できない場合、一定期間内のリモートKVMサーバアプリケーション226からの応答が特定回数未満である場合、及び/または応答の遅延が閾値を超える場合に、エラーを検出することができる。
【0042】
リモートKVMコンソール206が故障を検出すると、リモートKVMコンソールアプリケーション206は、ホスト接続218を介してリモートKVMサーバアプリケーション222または224との接続をトリガーすることができる。したがって、リモートKVMコンソールアプリケーション206は、ホスト接続
218上でリモートKVMサーバアプリケーション222または224と接続して、システム150とのリモートKVMセッションを継続または再確立することができる。このようにして、リモートKVMコンソールアプリケーション206は、BMC170、リモートKVMサーバアプリケーション226、通信インターフェース212、及び/またはBMC接続220に問題または故障が発生したとしても、システム150とのリモートKVMセッションを継続または維持することができる。そうでなければ、リモートKVMコンソールアプリケーション206とリモートKVMサーバアプリケーション226の間のリモートKVMセッションが影響されることがある。
【0043】
ホスト接続218上でリモートKVMサーバアプリケーション222または224とのリモートKVMセッション中、リモートKVMコンソールアプリケーション206は、BMC170及びリモートKVMサーバアプリケーション226のネットワークアドレスを要求するコマンドを周期的にリモートKVMサーバアプリケーション222または224に送ることができる。したがって、リモートKVMコンソールアプリケーション206は、リモートKVMサーバアプリケーション222または224から周期的に応答を受信し、BMC170及びリモートKVMサーバアプリケーション226のネットワークアドレスを識別することができる。リモートKVMコンソールアプリケーション206は、前述したような任意の故障またはエラーを検出するために応答を監視することができる。リモートKVMコンソールアプリケーション206がエラーまたは故障を検出した場合、システム150とのリモートKVMセッションを継続または再確立するために、BMC接続220上でリモートKVMサーバアプリケーション226に再接続することができる。このようにして、リモートKVMコンソールアプリケーション206は、ホスト接続218(例えば、BIOS162、OS208、通信インターフェース158など)に問題が発生しても、システム150とのリモートKVMセッションを維持することができる。
【0044】
BMC170、BIOS162、及びOS208は、それぞれのネットワークアドレスを互いに交換することができるので、リモートKVMコンソールアプリケーション206から受信した要求またはコマンドに応じて、それぞれが他のネットワークアドレスをリモートKVMコンソールアプリケーション206に提供することができる。例えば、BMC170、BIOS162、及びOS208は、それぞれのネットワークアドレスを帯域内接続によって互いに交換することができる。BMC170がリモートKVMコンソールアプリケーション206からBIOS162及び/またはOS208のネットワークアドレスの要求を受信すると、BMC170は、BIOS162及び/またはOS208から受信した1つまたは複数のネットワークアドレスを帯域内接続を介して応答することができる。
【0045】
BMC170、BIOS162、及びOS208は、それぞれのリモートKVMサーバアプリケーション222〜226を使用して、それぞれのネットワークアドレスを互いに交換することができる。例えば、各リモートKVMサーバアプリケーション222〜226は、自身のネットワークアドレスを他のリモートKVMサーバアプリケーション222〜226に報告するように構成されることができる。いくつかの例では、BIOS162及びOS208はそれぞれ、BIOS162及びOS208のネットワークアドレスをBMC170に報告し、BMC170からBMCのネットワークアドレスを取得するように設計されたプログラムを含むことができる。これらのプログラムは、独立なプログラムであっても、リモートKVMサーバアプリケーション222及び224に組み込まれていてもよい。さらに、これらのプログラムは、LPC、SMBus、I
2C、eSPI、PCIeなどの帯域内接続を介して通信することができる。
【0046】
図3Aは、リモートKVMサービスの例示的なサーバー側プロセス300の概略図である。ステップ302において、サーバシステム150は、BMC170及びBIOS162の電源入れてから開始する。ステップ304において、BMC170は、そのリモートKVMサーバアプリケーション226を起動し、ステップ306において、BIOS162は、自身のリモートKVMサーバアプリケーション222を起動する。
【0047】
ステップ308において、BIOS162は、自身のネットワークアドレス(例えば、IPアドレス)をBMC170に送信し、BMC170からBMCのネットワークアドレスを取得する。BIOS162は、帯域内接続及びコマンドを介してBMC170と通信することができる。
【0048】
ステップ310において、BMC170は、BIOS162のネットワークアドレスをリモートシステム204のリモートKVMコンソールアプリケーション206に送信する。BMC170は、リモートKVMコンソールアプリケーション206から受信したコマンドまたは要求に応じて、BIOSのネットワークアドレスを送信することができる。例えば、BMC170は、リモートKVMコンソールアプリケーション206からBIOSのネットワークアドレスを要求するコマンドを受信し、ステップ310で、BIOSのネットワークアドレスを含むメッセージをリモートKVMコンソールアプリケーション206に応答することができる。
【0049】
場合によっては、ステップ310は、複数回実行されることができる。例えば、BMC170は、BIOS162のネットワークアドレスをリモートKVMコンソールアプリケーション206に周期的に送信することができる。BMC170はまた、周期的にBIOS162のネットワークアドレスをリモートKVMコンソールアプリケーション206に送信することができるBMC170をトリガーすることができる、リモートKVMコンソールアプリケーション206からのコマンドまたは要求を周期的に受信することもできる。
【0050】
ステップ312において、サーバシステム150は、OS208をブートしてOS208からリモートKVMサーバアプリケーション224を起動することができる。ステップ314において、BMC170及びOS208は、ネットワークアドレスを交換することができる。例えば、OS208は、BMC170のネットワークアドレスを要求し、OS208のネットワークアドレスをBMC170に報告するプログラムを実行することができる。このプログラムは、独立なプログラムであってもよく、OS208によってホストされるリモートKVMサーバアプリケーション224の一部であってもよい。
【0051】
ステップ316において、BMC170は、OS208のネットワークアドレスをリモートKVMコンソールアプリケーション206に送信することができる。BMC170は、リモートKVMコンソールアプリケーション206からのコマンドまたは要求に応じて、OS208のネットワークアドレスをリモートKVMコンソールアプリケーション206に送信することができる。さらに、BMC170は、異なる時間にOS208のネットワークアドレスを送信することができる。例えば、BMC170は、リモートKVMコンソールアプリケーション206からの要求またはコマンドに応じて、OS208のネットワークアドレスを周期的に送信することができる。
【0052】
図3Bは、リモートKVMサービスの例示的なクライアント側プロセス350の概略図である。ステップ352において、システム204は、リモートKVMコンソールアプリケーション206を起動することができる。ステップ354において、リモートKVMコンソールアプリケーション206は、リモートKVMセッションを確立するために、BMCのリモートKVMサーバアプリケーション226に接続することができる。リモートKVMコンソールアプリケーション206は、BMC170のネットワークアドレスを使用してBMC接続220を介してリモートKVMサーバアプリケーションと接続することができる。
【0053】
ステップ355において、リモートKVMコンソールアプリケーション206は、現在のリモートKVMセッションを介してBMCリモートKVMサーバアプリケーション226とのリモートKVM機能を実行することができる。リモートKVM機能とは、リモートKVMコンソールアプリケーション206がBMCリモートKVMサーバアプリケーション226にクエリする、及び/またはセッションの状態(例えば、活動中及び動作中、非活動中など)或いは表示メモリーのデータを確認するために使用されるコマンドであってもよい。
【0054】
ステップ356において、リモートKVMコンソールアプリケーション206は、BIOS162及び/またはOS208のネットワークアドレスを要求するコマンドをBMC170に送信することができる。リモートKVMコンソールアプリケーション206は、そのコマンドを複数回送信することができる。リモートKVMコンソールアプリケーション206は、例えばそのコマンドを一定の時間間隔またはイベントに基づいて定期的に送信することができる。
【0055】
ステップ358において、リモートKVMコンソールアプリケーション206は、BMC170からのコマンドに対する応答を受信したかどうかを判断することができる。リモートKVMコンソールアプリケーション206が応答を受信した場合、プロセス350はステップ355に戻り、そこでリモートKVMコンソールアプリケーション206は、リモートKVMサーバアプリケーション226とのリモートKVMセッションを継続することができる。ステップ360において、リモートKVMコンソールアプリケーション206が応答を受信しない場合、リモートKVMコンソールアプリケーション206は、リモートKVMサーバアプリケーション222または224に接続する。リモートKVMコンソールアプリケーション206は、ステップ356でBMC170から受信したネットワークアドレス情報を使用してリモートKVMサーバアプリケーション222または224に接続することができる。
【0056】
リモートKVMサーバアプリケーション222または224に接続することによって、リモートKVMコンソールアプリケーション206は、ホスト接続218を介してリモートKVMセッションを継続または再確立することができる。したがって、リモートKVMコンソールアプリケーション206が、BMC接続220を介してリモートKVMサーバアプリケーション226に接続して問題を検出した場合、ホスト接続218を介してサーバシステム150とのリモートKVMセッションを継続し、あらゆる中断を制限することができる。
【0057】
ステップ361において、リモートKVMコンソールアプリケーション206は、現有のリモートKVMセッションを介して、OS/BIOSリモートKVMサーバアプリケーション222または224とのリモートKVM機能を実行することができる。また、リモートKVM機能とは、リモートKVMサーバアプリケーション222及び/または224にクエリする、及び/またはセッションの状態または表示メモリーのデータを確認するためにリモートKVMコンソールアプリケーション206によって使用されるコマンド(例えば、アクティブ及び動作中、非アクティブなど)であっても良い。
【0058】
ステップ362において、リモートKVMコンソールアプリケーション206は、BMC170のネットワークアドレスを要求するコマンドをOS208及び/またはBIOS162に送信することができる。リモートKVMコンソールアプリケーション206は、例えば一定の時間間隔またはイベントに基づいて定期的にこのコマンドを送信することができる。
【0059】
ステップ364で、リモートKVMコンソールアプリケーション206は、ステップ361または362からのコマンドに対する応答を受信したかどうかを判断する。リモートKVMコンソールアプリケーション206は、応答を受信したと判断した場合、ステップ361に戻り、リモートKVMサーバアプリケーション222または224に接続したままにする。一方、リモートKVMコンソールアプリケーション206が閾値時間内に応答を受信しなかったと判断した場合、ステップ354に戻り、そこでリモートKVMサーバアプリケーション226に接続して、BMC接続220上でリモートKVMセッションを継続または再確立することができる。
【0060】
図4は、リモートKVMサービスの例示的な通信フロー400のフェイルオーバーの概略図である。メッセージ402において、BIOS162はまずBIOSネットワークアドレスをBMC170に送信する。メッセージ404において、BMC170はBMCネットワークアドレスをBIOS162に送信する。
【0061】
メッセージ406において、リモートKVMコンソールアプリケーション206は、BMC170(すなわち、リモートKVMサーバアプリケーション226)とリモートKVM接続を確立する。メッセージ408において、リモートKVMコンソールアプリケーション206は、BIOSネットワークアドレスを要求するコマンドをBMC170に送信する。
【0062】
メッセージ410において、BMC170は、BIOSネットワークアドレスをリモートKVMコンソールアプリケーション206に送信する。OS208がブートした後、メッセージ412において、OS208はOSネットワークアドレスをBMC170に送信する。メッセージ414において、BMC170は、BMCネットワークアドレスをOS208に送信する。
【0063】
メッセージ416で、コンソール206は、OSネットワークアドレスを要求するコマンドをBMC170に送信する。メッセージ418において、BMC170は、OSネットワークアドレスをコンソール206に送信する。
【0064】
メッセージ420において、コンソール206は、別のコマンドをBMC170に送信して、OSネットワークアドレス及び/またはBIOSネットワークアドレスを要求するか、またはリモートKVM機能を実行する。メッセージ422において、BMC170は、OSネットワークアドレスまたはBIOSネットワークアドレスを送信することができず、またはコンソール206へのリモートKVMコマンドに応答することができない。コンソール206は、コマンドを含むメッセージ420に対する応答を受信しなかったと判断し、その後、OS208及びリモートKVMサーバアプリケーション224に接続するためにOS208にメッセージ424を送信することができる。
【0065】
メッセージ426において、コンソール206は、BMCネットワークアドレスを要求するコマンドをOS208に送信する。メッセージ428において、OS208はBMCネットワークアドレスをコンソール206に送ることができる。
【0066】
メッセージ430において、コンソール206は、BMCネットワークアドレスを要求する別のコマンドをOS208に送信する。コンソール206がOS208から応答を受信しない場合、コンソール206はBMCネットワークアドレスを使用してBMC170に接続することができる。その後、コンソール206は、定期的にコマンドを送信し続け、応答を待つことができる。コンソール206が1つ以上の応答を受信しない場合、コンソール206は再びOS208またはBIOS162に接続することができる。
【0067】
図5は、リモートKVMサービスのフェイルオーバーの例示的な方法を示す。ステップ500において、コンソールアプリケーション206は、リモートKVMコンソールアプリケーション206とリモートKVMサーバアプリケーション226の間にリモートKVMセッションを確立する。リモートKVMセッションは、BMC170とクライアント204の間にBMC接続220を介して確立することができる。
【0068】
ステップ502において、リモートKVMコンソールアプリケーション206は、リモートKVMコンソールアプリケーション206とリモートKVMサーバアプリケーション226の間のリモートKVMセッションに関するエラーを検出することができる。例えば、リモートKVMコンソールアプリケーション206は、1つまたは複数のコマンドをリモートKVMサーバアプリケーション226に送信し、リモートKVMサーバアプリケーション226からの1つまたは複数の応答を待つことができる。1つまたは複数のコマンドは、リモートKVMサーバアプリケーション226にBIOS及び/またはOSネットワークアドレスをリモートKVMコンソールアプリケーション206に送信するようにトリガーする要求を含むことができる。リモートKVMコンソールアプリケーション206が応答を受信しない場合、リモートKVMコンソールアプリケーション206は、エラーが発生したと判断することができる。エラーの判定は、所定期間内に1つまたは複数の応答を受信しないこと、予想より少ない応答を受信すること、または遅延閾値時間を有する応答を受信することなどによってトリガーされ得る。
【0069】
ステップ504において、エラーに応じて、リモートKVMコンソールアプリケーション206は、リモートKVMコンソールアプリケーション206とリモートKVMサーバアプリケーション222または224の間にリモートKVMセッションを確立することができる。例えば、リモートKVMコンソールアプリケーション206は、リモートKVMサーバアプリケーション226が利用可能でない場合、リモートKVMサーバアプリケーション222または224とリモートKVMセッションを確立することができ、逆も同様である。リモートKVMセッションは、前のリモートKVMセッションの継続または拡張、新しいリモートKVMセッション、またはリモートKVMサーバーアプリケーション226,222または224と再確立された前のリモートKVMセッションとすることができる。
【0070】
リモートKVMコンソールアプリケーション206は、リモートKVMセッション中に現在接続されているリモートKVMサーバアプリケーション222−226の間で、メッセージを送信し続け、応答を待つことができる。リモートKVMコンソールアプリケーション206が閾値数の応答を受信できなかった場合、リモートKVMセッションを維持または再確立するために別のリモートKVMサーバアプリケーションに接続することができる。
【0071】
リモートKVMサーバアプリケーション222または224に接続するとき、リモートKVMコンソールアプリケーション206は、リモートKVMサーバアプリケーション226に接続するときとは異なるネットワークアドレス及び/または通信インタフェースに接続することができる。このようにして、リモートKVMコンソールアプリケーション206は、リモートKVMセッションのフェイルオーバー経路及び接続を維持することができる。
【0072】
サーバ側では、BIOS162、BMC170、及びOS208は、それぞれのネットワークアドレス情報を交換するために帯域内接続を介して通信することができる。例えば、BMC170は、BIOS162及びOS208に接続して、ネットワークアドレス情報を交換することができる。したがって、BMC170は、BIOS162及びOS208のネットワークアドレス情報を維持することができる。BIOS162は、BMC170のネットワークアドレス情報を維持することができる。OS208は、BMC170のネットワークアドレス情報を維持することができる。したがって、BIOS162、BMC170、及びOS208は、お互いのネットワークアドレスをリモートKVMコンソールアプリケーション206に報告することができる。
【0073】
説明を明確にするために、本発明は、周辺機器部品相互接続エクスプレス装置を用いて説明されている。しかしながら、上記の例による方法及び概念は、他のタイプの装置のハードウェア回復のために実施されることができる。実際に、本明細書で説明する概念は、USB(universal serial bus)装置などの活線挿抜または活線着脱をサポートする任意の装置のホットアドやホットリムーブを含むハードウェア回復に実行されることができる。ここでも、周辺機器部品相互接続エクスプレス装置は、明確さ及び説明の目的のための非限定的な例として本明細書で使用される。
【0074】
説明を明確にするために、いくつかの例では、本発明は、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実施される方法において、装置、装置部品、ステップまたはルーチンを含む機能ブロックを含む個々の機能ブロックを含むものとして提示することができる。
【0075】
いくつかの実施例では、コンピューター可読記憶装置、媒体、及びメモリーは、ビットストリームなどを含む有線または無線信号を含むことができる。しかし、明言するとき、非一時的なコンピューター可読記憶媒体は、エネルギー、搬送波信号、電磁波、及び信号そのものなどの媒体を明示的に排除する。
【0076】
上述の実施例による方法は、コンピューター可読媒体に格納されるか、または他の方法で利用可能なコンピューター実行可能命令を使用して実行されることができる。そのような命令は、例えば、汎用コンピューター、専用コンピューター、または特殊用途処理装置に特定の機能または機能のグループを実行させる、または構成するような命令及びデータを含むことができる。使用されるコンピューターリソースの一部は、ネットワークを介してアクセス可能である。コンピューター実行可能命令は、例えば、バイナリ、アセンブリ言語、ファームウェア、またはソースコードのような中間フォーマット命令であってもよい。記述された例による方法の期間に作成された命令、情報、及び/または情報を記憶するために使用されるコンピューター可読媒体は、例えば、磁気または光学ディスク、フラッシュメモリー、不揮発性メモリーを備えたUSB装置、ネットワーク記憶装置等であってもよい。
【0077】
これらの開示による方法を実施する装置は、ハードウェア、ファームウェア及び/またはソフトウェアを含むことができ、様々なフォームファクタのいずれかをとることができる。そのようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、小型フォームファクタのパーソナルコンピューター、パーソナルデジタルアシスタントなどが含まれる。本明細書に記載の機能は、周辺機器またはアドインカードにも実行されることができる。このような機能は、他の例として、異なるチップ間の回路基板上または単一の装置内で実行される異なるプロセス上に実行されることもできる。
【0078】
その命令、当該命令を伝達するための媒体、それらを実行するための計算リソース、及びそのような計算リソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【0079】
添付の特許請求の範囲内の態様を説明するために様々な例及び他の情報が使用されたが、当業者がこれらの実施例を使用して多種多様な実施形態を導き出すことができるように、そのような実施例における特定の特徴または構成に基づいて、請求項を限定するものではない。さらに、いくつかの主題は、構造的特徴及び/または方法のステップの例に特定する用語で記述されているが、理解されるべきなのは、添付の特許請求の範囲に定義された主題は必ずしもこれらに記載された特徴または動作に限定されない。例えば、そのような機能は、異なる方法で配布されてもよく、本明細書で特定されたもの以外の部品で実行されてもよい。むしろ、記載された特徴及びステップは、添付の特許請求の範囲内のシステム及び方法の構成要素の例として開示される。
【0080】
用語「a」または「an」とは、そのものの1つまたは複数を表す。このように、用語「1つの」(または「an」)、「1つ以上の」及び「少なくとも1つの」は、本明細書では交換可能に使用することができる。「少なくとも1つの」、「1つ以上の」、及び「及び/または」という句は、操作において結合的かつ分離的である自由な表現である。例えば、「A、B及びCの少なくとも1つ」、「A、BまたはCの少なくとも1つ」、「A、B、Cのうちの1つ以上」、「A、B、及び/またはC」及び「A、B及び/またはC」は、A単独、B単独、C単独、A及びB一緒、A及びC一緒、B及びC一緒、またはA、B及びCのことである。さらに、セットの「少なくとも1つ」を示す請求項の用語は、セットの1つのメンバーまたはセットの複数のメンバーが請求項を満たすことを示す。例えば、「A、B、及びCの少なくとも1つ」または「A、B、またはCの少なくとも1つ」を意味するクレーム用語は、A単独、B単独、C単独、A及びB、A及びC、B及びC、またはAとBとCということである。
【0081】
本明細書で使用される「通信する」という用語は、任意のシステム、ハードウェア、ソフトウェア、プロトコル、またはフォーマットを使用して情報またはデータを交換するための光及び/または電気信号を使用する任意の結合、接続または相互作用を表す。
【0082】
本明細書で使用される「コンピューター可読記憶媒体」、「コンピューター可読媒体」、「コンピューター可読記憶装置」、または「コンピューター可読メモリー装置」という用語は、任意の有形記憶装置を表し、実行のためのプロセッサーのことである。そのような媒体または装置は、非揮発性媒体、揮発性媒体などを含むが、これに限定されない多くの形態を取ることができる。不揮発性媒体は、例えば、NVRAM、SSD、NVMe、磁気ディスクまたは光ディスクなどを含むことができる。揮発性媒体は、例えば、主メモリーのような動的メモリーを含むことができる。
【0083】
例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、メモリー、磁気テープ、または任意の他の磁気媒体、光磁気媒体、CD−ROM、DVDなどを含むことができる。パンチカード、紙テープ、ホールパターン、RAM、PROM、EPROM、EEPROM、フラッシュEPROM、メモリーカードのような固体媒体、他のメモリーチップまたはカートリッジ、または他の任意の他の物理的媒体コンピューターが読むことができる媒体を含むことができる。コンピューター可読媒体または装置がデータベースとして構成される場合、データベースは、リレーショナル、階層、オブジェクト指向などの任意のタイプのデータベースであってもよいことを理解されたい。したがって、開示された技術は、本発明のソフトウェア実装が格納されている有形の記憶媒体または装置、並びに認識された等価物及び後継の媒体または装置を含むと考えることができる。