(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6203370
(24)【登録日】2017年9月8日
(45)【発行日】2017年9月27日
(54)【発明の名称】ウェブベースの仮想媒体リダイレクトのシステムおよび方法
(51)【国際特許分類】
G06F 13/00 20060101AFI20170914BHJP
G06F 13/10 20060101ALI20170914BHJP
G06F 3/08 20060101ALI20170914BHJP
G06F 3/06 20060101ALI20170914BHJP
【FI】
G06F13/00 351N
G06F13/00 353C
G06F13/00 540A
G06F13/10 340A
G06F3/08 E
G06F3/06 301F
【請求項の数】20
【全頁数】24
(21)【出願番号】特願2016-500070(P2016-500070)
(86)(22)【出願日】2013年3月15日
(65)【公表番号】特表2016-517070(P2016-517070A)
(43)【公表日】2016年6月9日
(86)【国際出願番号】US2013032521
(87)【国際公開番号】WO2014143040
(87)【国際公開日】20140918
【審査請求日】2016年2月18日
(31)【優先権主張番号】13/841,220
(32)【優先日】2013年3月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】504171961
【氏名又は名称】アメリカン メガトレンズ インコーポレイテッド
(74)【代理人】
【識別番号】100133503
【弁理士】
【氏名又は名称】関口 一哉
(72)【発明者】
【氏名】サンジョイ メイティ
(72)【発明者】
【氏名】バスカー パーシバン
(72)【発明者】
【氏名】サムヴィネシュ クリストファー
(72)【発明者】
【氏名】ヴァラダカリ スダン アヤナム
【審査官】
北川 純次
(56)【参考文献】
【文献】
特開2007−172586(JP,A)
【文献】
特開2013−045163(JP,A)
【文献】
米国特許出願公開第2005/0276092(US,A1)
【文献】
米国特許出願公開第2011/0283006(US,A1)
【文献】
国際公開第2012/045038(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 13/10
G06F 3/06
G06F 3/08
(57)【特許請求の範囲】
【請求項1】
仮想媒体リダイレクトを実施する方法であって、
ベースボード管理コントローラ(BMC)のウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、前記BMCはホストコンピュータの管理機能を実施する、ことと、
前記BMCにおいて、前記ホストコンピュータ向けに仮想媒体をエミュレートすることと、
前記BMCにおいて、前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第1のファイルを指定する、ことと、
前記読み出しコマンドに応答して、前記BMCにおいて、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第1のファイルを求める要求を送信することと、
前記ウェブサーバにおいて、前記ブラウザプログラムから前記ウェブソケット接続を通じて前記第1のファイルを受信することを含む、方法。
【請求項2】
前記BMCのウェブ・ソケット・モジュールにおいて、前記コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、
前記BMCの前記ウェブ・ソケット・モジュールによって、前記ウェブソケット接続を確立するために、前記ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、前記コンピューティングデバイスの前記ウェブ・ソケット・モジュールに送信し返すことを含む、請求項1に記載の方法。
【請求項3】
前記BMCの前記ウェブサーバにおいて、リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ウェブサーバにおいて、前記ブラウザプログラムに前記リダイレクトウェブページを送信することを含む、請求項1に記載の方法。
【請求項4】
前記リダイレクトウェブページは、前記ブラウザプログラムに、
前記要求に従って前記記憶装置から前記第1のファイルを取り出すことと、
前記ウェブソケット接続を通じて前記ウェブサーバに前記第1のファイルを送信することを行うよう命令するようにプログラムされている、請求項3に記載の方法。
【請求項5】
前記方法は、前記ウェブサーバにおいて、ブラウザプログラムにjavaオブジェクトを送信することを含み、前記javaオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記javaオブジェクトは、Java Native Interface関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記javaオブジェクトをダウンロードするよう命令するようにプログラムされている、請求項3に記載の方法。
【請求項6】
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内のISOイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、前記第1のファイルは前記ISOイメージ内に位置する、請求項3に記載の方法。
【請求項7】
前記記憶装置は、前記コンピューティングデバイスの外部の記憶装置である、請求項3に記載の方法。
【請求項8】
前記リダイレクトページは、前記ブラウザプログラムに、前記ウェブソケット接続を通じて前記ウェブサーバに、前記記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている、請求項3に記載の方法。
【請求項9】
前記BMCによってエミュレートされる前記仮想媒体が前記ホストコンピュータに対して、入出力(I/O)ポートを通じてアクセス可能であるように、前記BMCを、前記ホストコンピュータの前記I/Oポートに接続することをさらに含む、請求項1に記載の方法。
【請求項10】
前記I/OポートはUSBポートである、請求項9に記載の方法。
【請求項11】
前記ウェブソケット接続は安全なウェブソケット接続である、請求項1に記載の方法。
【請求項12】
ベースボード管理コントローラ(BMC)であって、
前記BMCと、ネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立し、
前記ブラウザプログラムから前記ウェブソケット接続を通じて第1のファイルを受信するように構成されている、ウェブサーバと、
ホストコンピュータ向けに仮想媒体をエミュレートし、
前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第1のファイルを指定する、ことと、前記読み出しコマンドに応答して、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第1のファイルを求める要求を送信することとを行うように構成されている、リダイレクトモジュールとを備え、
前記BMCは、ホストコンピュータの管理機能を実施する、BMC。
【請求項13】
前記ウェブサーバは、
リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ブラウザプログラムに前記リダイレクトウェブページを送信することを行うように構成されており、
前記ウェブサーバは、前記ブラウザプログラムにjavaオブジェクトを送信するように構成されており、前記javaオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記javaオブジェクトは、Java Native Interface関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記javaオブジェクトをダウンロードするよう命令するようにプログラムされており、
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内の選択される媒体のファイルシステム構造またはファイルを、前記ウェブソケット接続を通じて前記ウェブサーバに送信するよう命令するようにプログラムされている、請求項12に記載のBMC。
【請求項14】
コンピュータ実行可能命令が記憶されている持続性コンピュータ記憶媒体であって、ベースボード管理コントローラ(BMC)のプロセッサによって実行されると、前記コンピュータ実行可能命令は、前記プロセッサに、
前記BMCのウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、前記BMCはホストコンピュータの管理機能を実施する、ことと、
前記ホストコンピュータ向けに仮想媒体をエミュレートすることと、
前記ホストコンピュータからの、前記エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、前記読み出しコマンドは第1のファイルを指定する、ことと、
前記読み出しコマンドに応答して、前記ウェブソケット接続を通じて前記ブラウザプログラムに、前記読み出しコマンドに従って前記第1のファイルを求める要求を送信することと、
前記ウェブサーバにおいて、前記ブラウザプログラムから前記ウェブソケット接続を通じて前記第1のファイルを受信することを実行させる、持続性コンピュータ記憶媒体。
【請求項15】
前記BMCのプロセッサによって実行されると、前記プロセッサに
前記BMCのウェブ・ソケット・モジュールにおいて、前記コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、
前記BMCの前記ウェブ・ソケット・モジュールにおいて、前記ウェブソケット接続を確立するために、前記ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、前記コンピューティングデバイスの前記ウェブ・ソケット・モジュールに送信し返すことを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項14に記載の持続性コンピュータ記憶媒体。
【請求項16】
前記BMCの前記プロセッサによって実行されると、前記プロセッサに、
前記ウェブサーバにおいて、リダイレクトウェブページを生成することであって、前記リダイレクトウェブページは、前記ブラウザプログラムに、前記コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、ことと、
前記ウェブサーバにおいて、前記ブラウザプログラムに前記リダイレクトウェブページを送信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項14に記載の持続性コンピュータ記憶媒体。
【請求項17】
前記リダイレクトウェブページは、前記ブラウザプログラムに、
前記要求に従って前記記憶装置から前記第1のファイルを取り出すことと、
前記ウェブソケット接続を通じて前記ウェブサーバに前記第1のファイルを送信することを行うよう命令するようにプログラムされている、請求項16に記載の持続性コンピュータ記憶媒体。
【請求項18】
前記持続性コンピュータ記憶媒体は、BMCのプロセッサによって実行されると、前記プロセッサに、前記ウェブサーバにおいて、ブラウザプログラムにjavaオブジェクトを送信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含み、前記javaオブジェクトは、前記ブラウザプログラムが、前記記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされ、前記javaオブジェクトは、Java Native Interface関数を呼び出して前記記憶装置内の前記ファイルにアクセスするためにコンパイルされ、前記リダイレクトページは、前記ブラウザプログラムに、前記javaオブジェクトをダウンロードするよう命令するようにプログラムされている、請求項16に記載の持続性コンピュータ記憶媒体。
【請求項19】
前記リダイレクトページは、前記ブラウザプログラムに、前記記憶装置内のISOイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、前記第1のファイルは前記ISOイメージ内に位置し、
前記記憶装置は、前記コンピューティングデバイスの外部の記憶装置であり、前記リダイレクトページは、前記ブラウザプログラムに、前記ウェブソケット接続を通じて前記ウェブサーバに、前記記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている、請求項16に記載の持続性コンピュータ記憶媒体。
【請求項20】
前記BMCの前記プロセッサによって実行されると、前記プロセッサに、前記BMCによってエミュレートされる前記仮想媒体が前記ホストコンピュータに対して、入出力(I/O)ポートを通じてアクセス可能であるように前記ホストコンピュータの前記I/Oポートと通信することを実行させる、前記持続性コンピュータ記憶媒体上に記憶されているコンピュータ実行可能命令をさらに含む、請求項14に記載の持続性コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連特許出願の相互参照)
本PCT出願は、2013年3月15日付けで提出された「SYSTEM AND METHOD OF WEB−BASED VIRTUAL MEDIA REDIRECTION」と題する、Sanjoy Maity、Baskar Parthiban、Samvinesh Christopher、およびVaradachari Sudan Ayanamによる米国特許出願第13/841,220号に対する優先権およびその利益を主張する。当該米国特許出願は、参照によりその全体が本明細書に組み込まれる。
本開示は、コンピュータシステムの分野に関し、より詳細には、ホストコンピュータとコンピューティングデバイスとの間でのウェブベースの仮想媒体リダイレクトのシステムおよび方法に関する。
【背景技術】
【0002】
本明細書において提供される背景技術の説明は、本開示のコンテキストを大まかに提示することを目的とする。この背景技術の節に記載されている範囲における、現在名前を挙げられている発明者らの研究、および、他の様態で出願時点において従来技術とみなされていない場合がある記載の諸態様は、明示的にも黙示的にも、本開示に対する従来技術とは認められない。
【0003】
概して、「コンピュータシステム」という用語は、独立型システム、または、たとえば、クライアント―サーバネットワークのような複数の相互接続されたシステムを指す。
実施態様にかかわらず、コンピュータシステムを構成する様々な構成要素は、一般的には、性能プロトコルまたは規格によって定義されるパラメータの範囲内で動作する。たとえば、システムが特定の所定温度読み値を超えて上昇する可能性がある期間を検出するために、コンピュータシャーシ内の温度がモニタリングされることが多い。コンピュータシステム内でモニタリングされる場合がある他の形態の情報は、限定ではなく、システムのベースボード上に位置する半導体構成要素と関連付けられる電圧、ベースボード上またはシステムシャーシ内に位置する冷却ファンの速度(たとえば、rpm)、および、ハード・ディスク・ドライブまたは光学式ドライブ内のスピンドルモータの速度を含む。
【0004】
コンピュータシステムおよびその構成部品と関連付けられる動作および性能関連パラメータを検出するために、様々なタイプのセンサが使用されている。上記で与えられた例を参照すると、これらのセンサは、サーモスタット、電圧計および回転速度計を含む。コンピュータシステムは一般的に、1つまたは複数の管理モジュールを利用して、システム内の動作および性能関連パラメータを測定する様々なセンサによって検知される情報の収集および分析を補助する。これらの管理モジュールは、ソフトウェア構成要素またはハードウェア構成要素のいずれであってもよいが、一般的にハードウェアとソフトウェアの両方の構成要素を包含する。1つのそのような管理モジュールが、「ベースボード管理コントローラ」(BMC)と称される。BMCは、コンピュータシステムのマイクロコントローラであり、それを通じて、様々なセンサによって検知される情報がBMCによる分析のために受信される指定数のコンタクトピンを有している。この分析を実施するために、BMCは、システムモニタリングおよび復元に関連する手順を実施するためのファームウェアをプログラムされている。このファームウェアによって、BMCは、コンピュータシステム内で検知される様々な動作および性能関連パラメータをモニタリングし、この情報を分析して検知されたパラメータのいずれかが、現在、予測されるまたは推奨される動作範囲外であるか否かを判定するようにプログラムされている。範囲外のパラメータが発生することは、一般的に「イベント」と称される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
BMCは、仮想媒体リダイレクトを実施することができる。しかしながら、仮想媒体リダイレクトの実施には、対処されていない需要が存在する。
【課題を解決するための手段】
【0006】
本開示の特定の態様は、仮想媒体リダイレクトを実施する方法に関する。方法は、(a)ベースボード管理コントローラ(BMC)のウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、BMCはホストコンピュータの管理機能を実施する、(b)BMCにおいて、ホストコンピュータ向けに仮想媒体をエミュレートすることと、(c)BMCにおいて、ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第1のファイルを指定する、(d)読み出しコマンドに応答して、BMCにおいて、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第1のファイルを求める要求を送信することと、(e)ウェブサーバにおいて、ブラウザプログラムからウェブソケット接続を通じて第1のファイルを受信することとを含む。
【0007】
特定の実施形態において、本方法は、(a)BMCのウェブ・ソケット・モジュールにおいて、コンピューティングデバイスのウェブ・ソケット・モジュールからウェブ・ソケット・ハンドシェイク要求を受信することと、(b)BMCのウェブ・ソケット・モジュールによって、ウェブソケット接続を確立するために、ウェブ・ソケット・ハンドシェイク要求に応答したハンドシェイク応答メッセージを、コンピューティングデバイスのウェブ・ソケット・モジュールに送信し返すこととを含む。特定の実施形態において、本方法はまた、(a)BMCのウェブサーバにおいて、リダイレクトウェブページを生成することであって、リダイレクトウェブページは、ブラウザプログラムに、コンピューティングデバイスの記憶装置内のファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされている、(b)ウェブサーバにおいて、ブラウザプログラムにリダイレクトウェブページを送信することも含む。リダイレクトウェブページは、ブラウザプログラムに、(a)要求に従って記憶装置から第1のファイルを取り出すことと、(b)ウェブソケット接続を通じてウェブサーバに第1のファイルを送信することとを行うよう命令するようにプログラムされている。
【0008】
特定の実施形態において、本方法は、ウェブサーバにおいて、ブラウザプログラムにjavaオブジェクトを送信することを含む。javaオブジェクトは、ブラウザプログラムが、記憶装置内のファイルにアクセスすることを可能にする関数を提供するためにコンパイルされる。javaオブジェクトは、Java Native Interface関数を呼び出して記憶装置内のファイルにアクセスするためにコンパイルされる。リダイレクトページは、ブラウザプログラムに、javaオブジェクトをダウンロードするよう命令するようにプログラムされている。リダイレクトページは、ブラウザプログラムに、記憶装置内のISOイメージからファイルまたはファイルシステム構造にアクセスするよう命令するようにプログラムされており、第1のファイルはISOイメージ内に位置する。記憶装置は、コンピューティングデバイスの外部の記憶装置である。リダイレクトページは、ブラウザプログラムに、ウェブソケット接続を通じてウェブサーバに、記憶装置内の選択された媒体のファイルシステム構造またはファイルを送信するよう命令するようにプログラムされている。
【0009】
特定の実施形態において、本方法は、BMCによってエミュレートされる仮想媒体がホストコンピュータに対して、入出力(I/O)ポートを通じてアクセス可能であるように、BMCを、ホストコンピュータのI/Oポートに接続することをさらに含む。特定の実施形態において、I/OポートはUSBポートである。特定の実施形態において、ウェブソケット接続は安全なウェブソケット接続である。
【0010】
本開示の特定の態様は、ベースボード管理コントローラ(BMC)に関する。BMCは、BMCと、ネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立し、ブラウザプログラムからウェブソケット接続を通じて第1のファイルを受信するように構成されているウェブサーバを含む。BMCはまた、ホストコンピュータ向けに仮想媒体をエミュレートすることと、ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第1のファイルを指定する、ことと、読み出しコマンドに応答して、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第1のファイルを求める要求を送信することとを行うように構成されているリダイレクトモジュールをも含む。BMCは、ホストコンピュータの管理機能を実施する。
【0011】
本開示の特定の態様は、持続性コンピュータ記憶媒体に関する。持続性コンピュータ記憶媒体は、コンピュータ実行可能命令を記憶している。コンピュータ実行可能命令がベースボード管理コントローラのプロセッサによって実行されると、コンピュータ実行可能命令は、プロセッサに、(a)BMCのウェブサーバとネットワーク内のコンピューティングデバイスのブラウザプログラムとの間にウェブソケット接続を確立することであって、BMCはホストコンピュータの管理機能を実施する、(b)ホストコンピュータ向けに仮想媒体をエミュレートすることと、(c)ホストコンピュータからの、エミュレートされた仮想媒体を対象とする読み出しコマンドを受信することであって、読み出しコマンドは第1のファイルを指定する、(d)読み出しコマンドに応答して、BMCにおいて、ウェブソケット接続を通じてブラウザプログラムに、読み出しコマンドに従って第1のファイルを求める要求を送信することと、(e)ウェブサーバにおいて、ブラウザプログラムからウェブソケット接続を通じて第1のファイルを受信することとを実行させる。
【0012】
本開示のさらなる適用可能領域が、以降に与えられる詳細な説明から明らかとなる。詳細な説明および特定の例は、例示のみを目的として意図されており、本開示の範囲を限定するようには意図されていないことが理解されるべきである。
【0013】
本開示は、詳細な説明および添付の図面からより十分に理解されることとなる。
【図面の簡単な説明】
【0014】
【
図1】本開示の一実施形態によるウェブベースの仮想媒体リダイレクトシステムを概略的に示す図である。
【
図2】本開示の一実施形態によるウェブソケット接続を概略的に示す図である。
【
図3A】GET命令およびHTTP応答を使用するHTTP要求の一例を示す図である。
【
図3B】本開示の一実施形態によるウェブ・ソケット・ハンドシェイク要求および応答の例を示す図である。
【
図4A】本開示の一実施形態によるウェブベースの仮想媒体リダイレクトを概略的に示す図である。
【
図4B】
図4Aにおけるウェブベースの仮想媒体リダイレクトプロセスを概略的に示す図である。
【
図5A】本開示の別の実施形態によるウェブベースの仮想媒体リダイレクトを概略的に示す図である。
【
図5B】
図5Aにおけるウェブベースの仮想媒体リダイレクトプロセスを概略的に示す図である。
【発明を実施するための形態】
【0015】
本開示は、多数の修正および変形が当業者に明らかになるため例示としてのみ意図されている以下の例により詳細に説明される。ここで、本開示の様々な実施形態を詳細に説明する。図面を参照すると、同様の参照符号がある場合、これらは、図面全体を通じて同様の構成要素を示す。本明細書において、および、添付の特許請求の範囲全体を通じて使用されている場合、「a」、「an」、および「the」の意味するところは、文脈が明確に別途示していない限り、複数への参照を含む。また、本明細書において、および、添付の特許請求の範囲全体を通じて使用されている場合、「中(in)」の意味するところは、文脈が明確に別途示していない限り、「中(in)」および「上(on)」を含む。さらに、本明細書においては読者の便宜のために表題または副題が使用されている場合があるが、これは本開示の範囲には影響を及ぼさないものとする。加えて、本明細書において使用されているいくつかの用語を、下記により詳細に定義する。
【0016】
本明細書において使用される用語は概して、本開示の文脈内、および、各用語が使用される特定の文脈において、当該技術分野におけるそれらの一般的な意味を有する。本開示の説明に関して実践者にさらに助言を与えるために、本開示を説明するために使用される特定の用語を、下記に、または本明細書の他の箇所に説明する。便宜のために、特定の用語を、たとえば、斜字体および/または引用符を使用して強調している場合がある。強調が使用されても用語の範囲および意味に影響はなく、用語の範囲および意味は、強調されていようとされていまいと、同じ文脈の中では同じである。同じ物事が2通り以上に表現されている場合がある。したがって、代替的な文言および同義語が本明細書において説明されている用語いずれか1つまたは複数に使用されている場合があり、用語が本明細書において詳述または説明されているか否かにはいかなる特別な重要性もおかれるべきではない。特定の用語の同義語が与えられている。1つまたは複数の同義語の記載は、他の同義語の使用を除外しない。本明細書において説明されている任意の用語の例を含む、本明細書の任意の箇所における例の使用は例示に過ぎず、本開示または任意の説明されている用語の範囲および意味を決して限定するものではない。同様に、本開示は、本明細書において与えられている様々な実施形態には限定されない。
【0017】
別途定義されていない限り、本明細書において使用されているすべての技術用語および科学用語は、本開示が属する技術分野における当業者によって一般的に理解されているものと同じ意味を有する。不一致がある場合、定義を含め、本明細書が統制する。
【0018】
本明細書において使用される場合、「前後(around)」、「約(about)」または「おおよそ(approximately)」は、概して、与えられている値または範囲の20パーセント以内、好ましくは10パーセント以内、より好ましくは5パーセント以内を意味するものとする。本明細書において与えられている数量は近似であり、つまり、用語「前後(around)」、「約(about)」または「おおよそ(approximately)」は、明示的に述べられていない場合は推測され得る。
【0019】
本明細書において使用される場合、「複数」は2つ以上を意味する。
【0020】
本明細書において使用される場合、「備える(comprising)」、「含む(including)」、「保持する(carring)」、「有する(having)」、「含む(containing)」、「含む(involving)」などの用語は、制約がない、すなわち、含むが限定されないことを意味するものとして理解されるべきである。
【0021】
本明細書において使用される場合、A、B、およびCのうちの少なくとも1つという語句は、非排他的論理ORを使用して論理(AまたはBまたはC)を意味するものとして解釈されるべきである。方法内の1つまたは複数のステップは、本開示の原理を変更することなく異なる順序で(または同時に)実行されてもよいことが理解されるべきである。
【0022】
本明細書において使用される場合、モジュールという用語は、特定用途向け集積回路(ASIC)、電子回路、組み合わせ論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、コードを実行するプロセッサ(共有、専用、グループ)、記載されている機能を提供する他の適切なハードウェア構成要素、または、システムオンチップにあるような、上記のいくつかもしくはすべての組み合わせを指す場合があり、それらの一部である場合があり、またはそれらを含む場合がある。モジュールと言う用語は、プロセッサによって実行されるコードを記憶するメモリ(共有、専用、またはグループ)を含み得る。
【0023】
上記で使用されているものとしてのコードという用語は、ソフトウェア、ファームウェア、および/またはマイクロコードを含む場合があり、プログラム、ルーチン、機能、クラス、および/またはオブジェクトを指す場合がある。上記で使用されているものとしての共有という用語は、複数のモジュールからいくつかのまたはすべてのコードを、単一の(共有)プロセッサを使用して実行することができることを意味する。加えて、複数のモジュールからのいくつかのまたはすべてのコードを、単一の(共有)メモリによって記憶することができる。上記で使用されているものとしてのグループという用語は、単一のモジュールからいくつかのまたはすべてのコードを、プロセッサのグループを使用して実行することができることを意味する。加えて、単一のモジュールからのいくつかのまたはすべてのコードを、メモリのグループを使用することによって記憶することができる。
【0024】
本明細書に記載されている装置および方法は、1つまたは複数のプロセッサによって実行される1つまたは複数のコンピュータプログラムによって実装することができる。コンピュータプログラムは、持続性有形コンピュータ可読媒体上に記憶されるプロセッサ実行可能命令を含む。コンピュータプログラムはまた、記憶されているデータをも含み得る。持続性有形コンピュータ可読媒体の非限定例は、不揮発性メモリ、磁気記憶装置、および光学式記憶装置である。
【0025】
ここで、本開示の実施形態が示されている添付の図面を参照して、本開示を以降より十分に説明する。しかしながら、本開示は、多くの異なる形態で具現化されてもよく、本明細書に記載されている実施形態に限定されるものとして解釈されるべきではなく、むしろ、これらの実施形態は、本開示が完全かつ完璧なものになり、本開示の範囲を当業者に完全に伝達するように提供される。同様の参照符号は、全体を通じて同様の要素を指す。
【0026】
本開示はコンピュータシステムに関する。図面に示されているように、コンピュータ構成要素は、実線のブロックとして図示されている物理ハードウェア構成要素、および、破線のブロックとして図示されている仮想ソフトウェア構成要素を含み得る。別途指示されていない限り、これらのコンピュータ構成要素は、限定ではないが、ソフトウェア、ファームウェアもしくはハードウェア構成要素、またはそれらの組み合わせにおいて実装されてもよいことを、当業者は諒解されよう。
【0027】
図1は、本開示の一実施形態によるウェブベースの仮想媒体リダイレクトシステムを概略的に示す。
図1に示すように、システム100は、ホストコンピュータ110と、ネットワーク130を介してホストコンピュータ110に接続されているコンピューティングデバイス140とを含む。システム100は、クライアント―サーバネットワークのような、2つ以上の相互接続されたシステムを組み込んでいるシステムであってもよい。ネットワーク130は、有線またはワイヤレスネットワークであってもよく、ローカル・エリア・ネットワーク(LAN)、または、インターネットを含む広域ネットワーク(WAN)のような様々な形態のものであってもよい。
【0028】
ホストコンピュータ110は、汎用コンピュータシステムであってもよい。ホストコンピュータ110は、ベースボード111、すなわち「マザーボード」を含む。ベースボード111は、システムバスまたは他の電気通信経路によって複数の構成要素またはデバイスがそれに接続され得るプリント回路基板である。
図1には明示的に示されていないが、ベースボード111上の構成要素は相互接続されており、ベースボード111上の構成要素のレイアウトおよびベースボード111上の構成要素間の相互接続の様態を、本明細書においてはベースボード111の構成と称する。ベースボード111の構成は、必要な設計または製造要件に従って調整または変更することができることが、当業者には諒解されよう。
【0029】
ベースボード111上の構成要素は、限定ではないが、中央処理装置(CPU)112と、メモリ113と、ベースボード管理コントローラ(BMC)120と、他の必要とされるメモリおよび入出力(I/O)モジュール(図示せず)とを含む。CPU112、メモリ113、およびBMC120は、ベースボード111上に組み込まれてもよく、または、インターフェースを通じてベースボード111に接続されてもよい。特定の実施形態において、インターフェースは、電気コネクタ、バス、ポート、ケーブル、端子、または他のI/Oデバイスのような物理ハードウェアインターフェースであってもよい。
【0030】
CPU112は、ホストコンピュータ110の動作を制御するように構成されているホストプロセッサである。ホストプロセッサは、ホストコンピュータ110のオペレーティングシステム(OS)または他のアプリケーションを実行することができる。いくつかの実施形態において、ホストコンピュータ110は、2つのCPU、4つのCPU、8つのCPU、または任意の適切な数のCPUのような、2つ以上のCPUをホストプロセッサとして有してもよい。
【0031】
メモリ113は、ヘッドレスサーバ200の動作中にデータおよび情報を記憶するための、ランダムアクセスメモリ(RAM)のような揮発性メモリとすることができる。
【0032】
BMC120とは、システム管理ソフトウェアとプラットフォームハードウェアとの間のインターフェースを管理する専用マイクロコントローラを指す。種々のタイプのセンサをシステム100に内蔵することができ、BMC120は、これらのセンサを読み取って、温度、冷却ファン速度、電力ステータス、OSステータスのようなパラメータを得る。BMC120は、センサをモニタリングして、いずれかのパラメータがプリセットの制限内に留まっておらず、システム100が故障した可能性を示す場合、ネットワークを介してシステム管理者に警告を送信することができる。管理者もまた、BMC120と遠隔通信して、ハングしたOSを再び作動させるためにシステムをリセットするかまたは電源を入れ直すことのような、何らかの修正措置をとることができる。さらに、BMC120は、ホストコンピュータ110によってアクセス可能な仮想媒体を確立することを可能にする、仮想媒体リダイレクトモジュールを含むことができる。したがって、ユーザは、コンピューティングデバイス140から仮想媒体セッションを開始することができ、BMC120を通じてホストコンピュータ110に、コンピューティングデバイス上のデータを仮想媒体の内容として提供する。
【0033】
特定の実施形態において、BMC120のファームウェアは、システムモニタリングおよびイベント回復のためのインテリジェントプラットフォーム管理インターフェース(IPMI)産業規格に従う。IPMIプロトコルは、コンピュータシステムの帯域外管理、および、セッションベースである動作のモニタリングのための標準コンピュータ・システム・インターフェース・プロトコルであり、アプリケーションモジュールが標的IPMIデバイスと通信することができるようになる前に、アプリケーションモジュールと標的IPMIデバイスとの間のIPMIセッションが確立されることを必要とする。IPMI仕様は、適合するコンピュータ内の管理可能な機構のすべてにアクセスするための共通のメッセージベースのインターフェースをもたらし、温度、電圧、ファン速度、シャーシ侵入、および他のパラメータを読み取るための所定コマンドの豊富なセットを含む。システム・イベント・ログ、ハードウェアウォッチドッグ、および電力制御も、IPMIを通じてアクセスされ得る。このように、IPMIは、オペレーティングシステムを通じて、または、ネットワークもしくは直列接続のような外部接続を通じてBMCによって収集される様々なパラメータにアクセスするためのプロトコルを定義する。BMCは、ローカルに接続されている管理コンピュータからシステムインターフェースを通じて、または、ネットワークインターフェースを通じた外部要求として、IPMI命令または要求を受信することができる。
【0034】
特定の実施形態において、BMC120は、中でも、仮想媒体モジュール122と、ウェブ・ソケット・モジュール124と、ウェブ・サーバ・モジュール126とを含む。仮想媒体モジュール122は、物理記憶媒体を、あたかもホストコンピュータ110に物理的に取り付けられているかのようにエミュレートすることができる。ウェブ・ソケット・モジュール124は、単一の伝送接続プロトコル(TCP)接続を介してウェブ・ソケット・プロトコルの下で全二重通信チャネルを確立することができる。ウェブ・サーバ・モジュール126は、インターネットを通じてアクセス可能なウェブコンテンツを提供することができる。モジュールの詳細は後述する。
【0035】
さらに、ホストコンピュータ110は、ホストコンピュータ110のOS(図示せず)および他のアプリケーションを記憶するためのデータ記憶媒体である記憶装置114と、少なくとも1つのI/Oデバイス116とを含む。記憶装置114の例は、フラッシュメモリ、メモリカード、USBドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他のタイプのデータ記憶デバイスを含んでもよい。I/Oデバイス116の例は、キーボード、タッチパッド、マウス、マイクロフォン、表示スクリーン、タッチスクリーン、またはホストコンピュータ110に適用可能な他のI/Oデバイスを含む。
【0036】
コンピューティングデバイス140は、ネットワーク130を介してホストコンピュータ110に遠隔して接続される。システム100は、ホストコンピュータ110に同時に遠隔して接続される複数のコンピューティングデバイス140を含んでもよいことを、当業者は諒解されよう。コンピューティングデバイス140の例は、たとえば、スマートフォン、タブレットまたは他のモバイル・コンピュータ・デバイスのような携帯デバイスを含んでもよい。
【0037】
コンピューティングデバイス140は、CPU171と、メモリ173と、記憶装置142とを含む。記憶装置142は、コンピューティングデバイス140のOSおよび他のアプリケーションを記憶するためのデータ記憶媒体である。コンピューティングデバイス140の記憶装置142の例は、フラッシュメモリ、メモリカード、USBドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他のタイプのデータ記憶デバイスを含んでもよい。
【0038】
ブラウザプログラム143がメモリ173内にロードされ、コンピューティングデバイス140のCPU171によって実行され得る。ブラウザプログラム143は、ユーザに対する情報資源を取り出し、提示し、トラバースするためのソフトウェアアプリケーションである。さらに、ブラウザプログラム143は、ホストコンピュータ110と通信するための、システム100の仮想媒体リダイレクトクライアントとしての役割を果たすことができる。概して、ブラウザプログラム143は、インターネットのようなオープンネットワーク上で提供される情報資源を取り出すことができる。情報資源は、ウェブページ、画像、ビデオまたは他のタイプのデータコンテンツを含んでもよい。
【0039】
さらに、メモリ173は、OS144およびウェブ・ソケット・モジュール145をロードすることができる。ウェブ・ソケット・モジュール145は、ホストコンピュータ110上のBMC120のウェブ・ソケット・モジュール124に対応するモジュールであり、それによって、ホストコンピュータ110とコンピューティングデバイス140との間にウェブ・ソケット・プロトコルの下での全二重通信チャネルを確立することができる。
【0040】
さらに、コンピューティングデバイス140は、少なくとも1つのI/Oデバイス146を有する。I/Oデバイス146の例は、キーボード、タッチパッド、マウス、マイクロフォン、表示スクリーン、タッチスクリーン、またはコンピューティングデバイス140に適用可能な他のI/Oデバイスを含む。タッチスクリーンのようないくつかのI/Oデバイスは、コンピューティングデバイス140のための二重入出力を目的として提供される。
【0041】
ブラウザプログラム143を使用したウェブページおよび他のデータコンテンツのような情報資源の表示に関して、ハイパーテキストマークアップ言語(HTML)が、ウェブページ、および、ブラウザプログラム143において表示することができる他の情報を表示するためのウェブベース言語フォーマットにおける標準的なマークアップ言語である。HTMLフォーマットにあるデータは、ウェブページコンテンツ内で、山括弧に囲まれているHTML要素または「タグ」の形式(<html>など)で書かれる。現在、HTMLフォーマットは、市場でのブラウザプログラムのほぼすべてによって広く採用されており、したがって、コンピューティングデバイス140側のブラウザプログラム143とホストコンピュータ110側のBMC120のウェブサーバ126との間の通信命令のウェブベース言語フォーマットとして適している。
【0042】
概して、JavaScriptのようなスクリプト言語が、ユーザインターフェースの入力および出力を制御するために、HTMLフォーマット言語に加えて使用される。さらに、HTML言語の現在開発されている改正であるHTML5が、ウェブ・アプリケーション・ソフトウェア・メソッド、および、ウェブブラウザを通じてデータを記憶するために使用されるプロトコルを利用する、ウェブストレージのための幅広い機能を提供する。より古い一般的に使用されているブラウザプログラムはHTML5フォーマットをサポートしていないが、HTML5フォーマットをサポートしているブラウザプログラムは、MOZILLA FIREFOX 1.5、GOOGLE CHROME 4.0、SAFARI 3.1、SAFARI MOBILE 3.2、OPERA 9.0、OPERA MOBILE 10.0、ANDROID BROWSER 2.1、およびINTERNET EXPLORER 9.0または、これらのブラウザプログラムのより新しいバージョンを含む。したがって、ブラウザプログラム143は、HTML5をサポートすることができ、上記に挙げたブラウザプログラムのうちの1つとすることができる。
【0043】
ブラウザプログラム143は、ハイパーテキスト転送プロトコル(HTTP)を使用してBMCにあるウェブサーバ126と通信することができる。具体的には、ブラウザプログラム143は、ウェブサーバ126にHTTP要求を送信することができる。HTTP要求を受信すると、サーバは、ブラウザプログラムに、HTTP要求に応答したHTTP応答を送信する。
【0044】
ウェブサーバ126は一般的に、HTTPの下でのブラウザプログラム143へのデータ送信を開始することができない。ウェブソケットが、単一のTCP接続を介した全二重通信チャネルを提供することができ、それによって、サーバはクライアントに命令または情報をアクティブに送信することができる。ウェブソケットはHTML5に組み込まれており、したがって、HTML5を実装するウェブブラウザおよびサーバによってサポートされる。
【0045】
図2は、本開示の一実施形態による、ホストコンピュータ110とコンピューティングデバイス140との間にウェブソケット接続を確立するプロセスを示す。ウェブソケット接続は、HTTP接続と同様に開始するが、ホストコンピュータ110とブラウザプログラム124との間に連続的な双方向ウェブベース接続を提供する。ブラウザプログラム143がウェブソケット接続を確立しようとするとき、ブラウザプログラム143は、ウェブ・ソケット・モジュール145に、BMC120のウェブ・ソケット・モジュール124のポート80(デフォルトHTTPポート)またはポート443(HTTPSポート)にウェブ・ソケット・ハンドシェイク要求を送信するよう命令する。ウェブ・ソケット・ハンドシェイク要求は、HTTP要求において使用されるGETコマンドに類似しているが、より多くのウェブソケット命令を含み、「アップグレード」された要求と考えることができる。ウェブ・ソケット・ハンドシェイク要求を受信すると、ウェブサーバ126は、ウェブ・ソケット・ハンドシェイク要求内のアップグレードされた情報に従って、この要求がHTTP要求ではなくウェブ・ソケット・ハンドシェイク要求であると識別することができる。ウェブサーバ126は、ブラウザプログラム143にハンドシェイク応答メッセージを送信する。したがって、ブラウザプログラム143とウェブサーバ126との間にウェブソケット接続150を確立することができる。
【0046】
図3Aおよび
図3Bは、ウェブ・ソケット・ハンドシェイク要求とHTTP要求との間の比較を可能にし、
図3AはGETコマンドを使用したHTTP要求の一例を示し、
図3Bは、ウェブ・ソケット・ハンドシェイク要求の一例を示す。
図3Aに示すように、HTTP要求の応答メッセージのヘッダ部分は、応答メッセージ内のコンテンツの情報を示し、text/htmlファイルであるコンテンツのタイプ、コンテンツファイルの長さ、およびコンテンツにおいて使用されている言語を含む。HTTP要求に対する応答メッセージのヘッダ部分の最後の行は、ホストコンピュータ110とブラウザプログラム124との間の接続が応答の終わりに閉じられることを示す。比較すると、
図3Bに示すウェブ・ソケット・ハンドシェイク要求の最初の2行は、HTTP要求と同じGET命令を含む。ウェブ・ソケット・ハンドシェイク要求の以下の行は、ウェブ・ソケット・モジュール124に、通常のHTTP要求からウェブ・ソケット・プロトコルにアップグレードまたは切り替えるように通知するアップグレードされた情報を含む。さらに、HTTP要求に対する応答メッセージとは異なり、ウェブ・ソケット・ハンドシェイク要求に対するハンドシェイク応答メッセージのヘッダ部分は、応答の終わりに接続が閉じられることを示さない。
【0047】
ウェブソケット接続150が設定されると、ウェブ・ソケット・モジュール124およびウェブ・ソケット・モジュール145の両方が、この接続を通じて他端へデータを送信することができる。データフォーマットは、JSONまたはXMLのような、任意の有効なUTF−8ストリングフォーマットであることができるが、所望に応じて他のデータフォーマットが使用されてもよい。
【0048】
ウェブ・ソケット・モジュール124および145は、PHP Web Sockets、Java j Web Socket、Web−Socket−ruby、Socket IO−node、または他のタイプのウェブ・ソケット・アプリケーションのような、様々なタイプおよび設計のものとすることができる。ウェブ・ソケット・モジュール124をホストコンピュータ110側のウェブ・ソケット・サーバとして設定するためには、ホストコンピュータ110および使用されるポート(ポート80およびポート443など)のドメイン名またはIPアドレスが、ホストコンピュータ110の位置を示すために提供されなければならず、ソケットの開放(すなわち、ウェブソケット接続)、ソケットにおけるハンドシェイク要求および他のメッセージの受信、またはソケットの閉鎖のような特定の「イベント」に応答して複数の命令が設定されなければならない。ウェブ・ソケット・サーバが設定されると、ウェブ・ソケット・クライアントは、通常のHTTPスキーム「http」の代わりにスキーム「ws」、または、通常のHTTPSスキーム「https」の代わりにスキーム「wss」で始まる統一資源位置指定子(URL)を使用してウェブ・ソケット・サーバに接続することができる。
【0049】
図4Aおよび
図4Bは、本開示の特定の実施形態によるウェブベースの仮想媒体リダイレクトの特徴を示す。
図4Aに示すように、ホストコンピュータ110は、I/OデバイスとしてUSBポート115を含んでもよい。BMC120は、USBポート115によって確立されるUSB接続121を通じてホストコンピュータ110と通信し、USB接続121を通じてホストコンピュータ110向けに媒体記憶装置をエミュレートする仮想媒体モジュール122を有することができる。USB接続は、BMC120が、ホストコンピュータ110向けに、フロッピー、CD−ROM、またはハード・ディスク・ドライブのようなUSB大容量記憶デバイスをエミュレートすることを可能にする。特定の実施形態において、それらのエミュレートされたデバイスは、ホストコンピュータ110によってブートアップデバイスとして使用することができる。下記に詳細に説明するように、コンピューティングデバイス140は、ブートアップシーケンスを含み得るプログラムまたはデータをBMC120に提供することができる。BMC120は、それらのプログラムまたはデータを、エミュレートされたデバイスのプログラムまたはデータとしてホストコンピュータ110に提供することができる。特定の実施形態において、仮想媒体モジュール122がホストコンピュータ110向けにブートアップデバイスをエミュレートすると、ホストコンピュータ110は、BMC120に送信され、ブートアップデバイスのコンテンツとして使用される、コンピューティングデバイス140のプログラムおよびデータから起動することができる。明示的に示されていないが、ホストコンピュータ110およびコンピューティングデバイス140は、ウェブベースの仮想媒体リダイレクトを実施するための他の要素を含んでもよい。
【0050】
一例として、BMC120は、USB接続上で、エミュレートされたCD−ROMデバイスのような、大容量記憶デバイスをエミュレートすることができる。エミュレートされたCD−ROMデバイスは、コンピューティングデバイス140上のISOイメージ148の内容を、ホストコンピュータ110にリダイレクトするのに利用することができる。エミュレートされたCD−ROMデバイスはまた、ホストコンピュータ110とBMCとの間の帯域外通信を提供するのに利用することもできる。エミュレートされたCD−ROMデバイスは、ホストコンピュータ110には標準的なUSB CD−ROMに見える。したがって、ホストコンピュータ110上で実行しているオペレーティングシステムは、CD−ROMデバイスと通信するために利用される、オペレーティングシステムに提供されている標準的なCD−ROMドライバを利用することができる。カスタム・ハードウェア・ドライバは不要とすることができる。
【0051】
特定の実施形態において、コンピューティングデバイス140は、オペレーティングシステム144と、オペレーティングシステム144上で作動するブラウザプログラム143とを含む。さらに、コンピューティングデバイス140は、ISOイメージ148を記憶する記憶装置142を含む。ISOイメージ148は一般的に、ファイルシステムおよびデータを含む、光ディスクのアーカイブファイルまたはディスクイメージである。特定の実施形態において、ブラウザプログラム143はHTML5規格によってコンパイルし、ネイティブコールを一切使用することなく直にISOイメージ148を読み出すことができる。たとえば、ISOイメージ148の位置が与えられると、ブラウザプログラム143はOS144を直に利用して、ISOイメージ148にアクセスし、ISOイメージ148の内容を読み出すことができる。下記に詳細に説明するように、ブラウザプログラム143は、BMC120のウェブサーバ126において生成されるウェブページによって命令されるように、ファイルシステム構造(たとえば、ISOイメージ148内のファイルシステムのファイル名のリスト)および特定のファイルのデータのような、ISOイメージ148の情報をBMC120に送信することができる。情報は、ウェブソケットを通じてBMC120に通信することができる。情報を受信すると、BMC120は、仮想媒体モジュール122を利用して、その情報をエミュレートされた媒体のデータとして、ホストコンピュータ110に提供することができる。
【0052】
図4Bは、本開示の特定の実施形態による、ホストコンピュータ110、BMC120、およびコンピューティングデバイス140の間の媒体リダイレクトの手順を示す。動作410において、ブラウザプログラム143が、ネットワークを介してBMC120に、仮想媒体リダイレクトウェブページを求める要求を送信する。要求は、HTTPフォーマットにあってもよい。仮想媒体リダイレクトウェブページを求める要求を受信すると、動作412において、BMC120のウェブサーバ126が、ブラウザプログラム143に仮想媒体リダイレクトウェブページを送信する。したがって、ブラウザプログラム143は、仮想媒体リダイレクトウェブページを表示することができ、コンピューティングデバイス140のユーザが、動作414において、BMC120によってエミュレートされることになる仮想媒体の構成情報を入力または選択することを可能にする。仮想媒体の構成情報は、BMC120によってエミュレートされることになる仮想媒体のタイプ、および、エミュレートされる仮想媒体の内容としてエミュレートされることになるコンピューティングデバイス140上のデータを含み得る。特定の実施形態において、仮想媒体ウェブページは、ユーザがそこから選択するための、記憶装置142内のISOイメージファイルのリスト、および、様々なタイプの仮想媒体、たとえば、CD−ROM、SDメモリ、USBドライブなどのリストを提供することができる。たとえば、ブラウザプログラム143によってレンダリングされる仮想媒体リダイレクトウェブページは、JavaScriptを使用して、ブラウザプログラム143に、コンピューティングデバイス140のファイルシステムにアクセスして利用可能なISOイメージのリストを得るよう命令することができる。
【0053】
動作414において、ユーザは、ブラウザプログラム143においてレンダリングされる仮想媒体リダイレクトウェブページを通じて仮想媒体モジュールを構成することができる。たとえば、ユーザは、ホストコンピュータ110向けにCD−ROMをエミュレートして、ISOイメージ148のデータをエミュレートされたCD−ROMのデータとして使用するようにBMC122を構成することができる。ユーザが構成情報を入力した後、動作416において、ブラウザプログラム143は、ユーザ入力に従って、選択されたデータ、たとえば、記憶装置142内に記憶されているISOイメージ148にアクセスすることができる。たとえば、ブラウザプログラム143は、仮想媒体リダイレクトウェブページ内に含まれているJavaScriptを実行し、それに応じて、選択されたISOイメージ148にアクセスするよう命令される。その後、動作418において、ブラウザプログラム143は、仮想媒体モジュール122を設定するためのユーザ命令を、BMC120のウェブサーバ126に送信する。ユーザ命令を受信すると、動作420において、仮想媒体モジュール122は、要求されたタイプの仮想媒体(たとえば、CD−ROM)を、ホストコンピュータ110向けにエミュレートする。
【0054】
ホストコンピュータ110がエミュレートされた仮想媒体を検出し、それを現実の物理媒体と認識すると、動作422において、ホストコンピュータ110は、エミュレートされた仮想媒体のファイル情報を読み出そうとし得る。特定の実施形態において、ファイル情報は、ファイルシステム構造、たとえば、仮想媒体のファイル名のリストを含む。ファイルシステム構造を求める要求を受信すると、動作424において、仮想媒体モジュール122は、ウェブサーバに、HTTP応答メッセージ、たとえば、ISOイメージ148のファイルシステム構造を要求するJavaScriptを有するウェブページを、ブラウザプログラム143に送信するよう命令することができる。ブラウザプログラム143がHTTP応答メッセージを受信すると、動作426において、ブラウザプログラム143は、たとえば、JavaScriptによって命令されるように、記憶装置142内に記憶されているISOイメージ148にアクセスして、ファイルシステム構造を取り出す。
【0055】
その後、動作428において、ブラウザプログラム143が、ウェブサーバ126に、ウェブ・ソケット・プロトコルの下での通信チャネルを確立することを求めるウェブ・ソケット・ハンドシェイク要求を送信する。ウェブ・ソケット・ハンドシェイク要求を受信すると、動作430において、ウェブサーバ126は、BMC120にあるウェブ・ソケット・モジュール124に、ウェブソケットを開放するよう命令する。同様に、動作432において、ブラウザプログラム143は、コンピューティングデバイス140にあるウェブ・ソケット・モジュール145に、ウェブソケットを開放するよう命令する。動作434において、ウェブ・ソケット・モジュール124とウェブ・ソケット・モジュール145との間にウェブソケット接続(または通信チャネル)が確立され得る。
【0056】
ウェブソケット接続が確立されると、動作436において、ブラウザプログラム143が、動作426において取り出されたファイルシステム構造を、ウェブ・ソケット・モジュール145に送信する。動作438において、コンピューティングデバイス140にあるウェブ・ソケット・モジュール145が、ウェブソケット接続を通じてBMC120にあるウェブ・ソケット・モジュール124にファイルシステム構造を送信する。動作440において、ウェブ・ソケット・モジュール124が、BMC120のウェブサーバ126にファイルシステム構造を送信する。その後、ウェブサーバ126が、仮想媒体モジュール122にファイルシステム構造を送信する。仮想媒体モジュール122は、動作422においてホストコンピュータ110によって開始される、仮想媒体モジュールによってエミュレートされた仮想媒体を対象とするファイルシステム構造読み出し動作の結果として、動作442においてホストコンピュータ110にファイルシステム構造を提供する。したがって、ホストコンピュータ110は、仮想媒体のエミュレートされたファイルシステム構造を得、仮想媒体からファイルおよびデータを要求することができる。
【0057】
ホストコンピュータ110がエミュレートされた仮想媒体から特定のファイルを読み出すことを試行すると、動作444において、仮想媒体モジュール122が、ホストコンピュータ110によって開始されるそのような読み出し動作を受信する。仮想媒体モジュール122はその後、ウェブサーバ126に、特定のファイルを求めるホストコンピュータ110の要求を指示する。ウェブサーバ126は、その後、ウェブソケット接続150を通じてブラウザプログラム143に、ファイルを求める要求を送信する。具体的には、動作446において、ウェブサーバ126が、ウェブ・ソケット・モジュール124に要求を送信する。動作448において、ウェブ・ソケット・モジュール124が、ウェブソケット接続を通じてウェブ・ソケット・モジュール145に要求を送信する。その後、動作450において、ウェブ・ソケット・モジュール145が、ブラウザプログラム143に要求を送信する。要求を受信すると、動作452において、ブラウザプログラム143は、ウェブサーバ126によって生成されるような、および、ブラウザプログラム143によって現在レンダリングされているような、ウェブページ内のイベントをハンドリングするように定義されているルーチンを実行する。たとえば、ルーチンは、ブラウザプログラム143に、ウェブソケット接続を通じて受信された要求に従って、記憶装置142内に記憶されているISOイメージ148にアクセスして、要求において指定されているファイルを取り出すよう命令することができる。
【0058】
要求されたファイルが取り出されると、ブラウザプログラム143は、レンダリングされているウェブページによって命令されるように、ウェブソケット接続150を通じてBMC120に取り出されたファイルを送信することができる。たとえば、ウェブページは、ウェブソケット接続150を通じてデータを送信するsocket.send(”data”)のようなJavaScript関数を含み得る。具体的には、動作454において、ブラウザプログラム143が、ウェブ・ソケット・モジュール145にファイルを送信する。動作456において、ウェブ・ソケット・モジュール145が、ウェブソケット接続150を通じてウェブ・ソケット・モジュール124にファイルを送信する。動作458において、ウェブ・ソケット・モジュール124が、BMC120にあるウェブサーバ126にファイルを送信する。その後、ウェブサーバ126が、仮想媒体モジュール122にファイルを送信する。仮想媒体モジュール122は、動作444においてホストコンピュータ110によって開始される、仮想媒体モジュール122によってエミュレートされた仮想媒体を対象とする読み出しコマンドの結果として、動作442においてホストコンピュータ110にファイルを提供する。したがって、ホストコンピュータ110は、エミュレートされた仮想媒体からファイルを読み出すことができる。
【0059】
図5Aおよび
図5Bは本開示の別の実施形態によるウェブベースの仮想媒体リダイレクトの特徴を概略的に示す。この例において、ホストコンピュータ110、BMC120、コンピューティングデバイス140は、下記に説明するいくつかの差はあるが、
図4Aに示すものと同様の構成を有する。コンピューティングデバイス140は、I/Oポート146を通じてコンピューティングデバイス140に接続されている記憶装置147、たとえば、記憶装置142から分離されている個別の大容量記憶デバイスを有することができる。記憶装置147は、ISOイメージフォーマットには記憶されないファイルを有することができる。たとえば、少なくとも1つのファイル149が記憶装置147内に記憶される。記憶装置147の例は、USBドライブ、ハードドライブ、フロッピーディスク、光学式ドライブ、または任意の他の適切なタイプのデータ記憶デバイスを含んでもよい。
【0060】
特定の実施形態において、ブラウザプログラム143は、ネイティブコールを使用して、記憶装置147のファイルシステム構造およびファイルを取り出すことができる。たとえば、ブラウザプログラム143は、ブラウザプログラムを操作しているユーザの許可を得てBMC120からダウンロードされるJavaオブジェクトを実行することができるJavaバーチャルマシン(JVM)を含むことができる。Javaオブジェクトは、Java Native Interface(JNI)関数を呼び出すことができる。JNIは、JVM上で作動しているJavaコードが、ネイティブアプリケーション(ハードウェアおよびオペレーティング・システム・プラットフォームに特有のプログラム)、および、C、C++およびアセンブリのような他の言語で書かれたライブラリを呼び出し、またそれらによって呼び出されることを可能にするプログラミングフレームワークである。JNI関数は、システムコールのようなオペレーティングシステムの機能にアクセスすることを可能にすることができる。BMC120は、Javaオブジェクト164を含むことができ、Javaオブジェクト164は、コンパイル済みであり、ブラウザプログラム143によって、たとえば、JVMによってサポートされるJNI関数を通じてコンピューティングデバイス140のデータにアクセスするために呼び出すことができる関数を定義する。一例において、Javaオブジェクト164は、JNI関数を利用して、指定された媒体ソースのファイルシステム構造およびファイルを取り出すイメージマウント関数を定義する。BMC120のウェブサーバ126によって生成され、ブラウザプログラム143によってレンダリングされるウェブページは、ブラウザプログラムに、JVM上のJavaオブジェクト164を実行し、Javaオブジェクト164のイメージマウント関数を呼び出して記憶装置147のファイルシステムにアクセスするよう命令するJavaScriptルーチンを有することができる。
【0061】
図5Bは、本開示の特定の論旨による、ホストコンピュータ110、BMC120、およびコンピューティングデバイス140の間の媒体リダイレクトの手順を示す。動作510において、ブラウザプログラム143が、ネットワークを介してBMC120に、仮想媒体リダイレクトウェブページを求める要求を送信する。要求は、HTTPフォーマットにあってもよい。要求を受信すると、動作512において、BMC120のウェブサーバ126が、ブラウザプログラム143に仮想媒体リダイレクトウェブページを送信する。したがって、ブラウザプログラム143は、仮想媒体リダイレクトウェブページを表示することができ、コンピューティングデバイス140のユーザが、動作514において、BMC120によってエミュレートされることになる仮想媒体の構成情報を入力または選択することを可能にする。仮想媒体の構成情報は、BMC120によってエミュレートされることになる仮想媒体のタイプ、および、エミュレートされる仮想媒体の内容としてエミュレートされることになるコンピューティングデバイス140上のデータを含み得る。特定の実施形態において、仮想媒体ウェブページは、ユーザがそこから選択するための、利用可能な媒体ソースのリスト、および、様々なタイプの仮想媒体、たとえば、CD−ROM、SDメモリ、USBドライブなどのリストを提供することができる。
【0062】
下記に説明するように、特定の実施形態において、ブラウザプログラム143によってレンダリングされる仮想媒体リダイレクトウェブページは、JavaScriptを使用して、ブラウザプログラム143に、コンピューティングデバイス140の記憶装置147のファイルシステムにアクセスするよう命令することができる。
【0063】
動作514において、ユーザは、ブラウザプログラム143においてレンダリングされる仮想媒体リダイレクトウェブページを通じて仮想媒体モジュール122を構成することができる。たとえば、ユーザは、ホストコンピュータ110向けにCD−ROMをエミュレートして、記憶装置147のデータをエミュレートされたCD−ROMの内容として使用するようにBMC122を構成することができる。
【0064】
ユーザが構成情報を入力し、ネイティブライブラリおよびファイルシステムへのアクセスを承認した後、動作516において、ブラウザプログラム143は、仮想媒体モジュール122を設定するためにユーザ命令を、BMC120のウェブサーバ126に送信する。ウェブサーバ126からユーザ命令を受信すると、仮想媒体モジュール122は、それに応じて、要求されたタイプの仮想媒体(たとえば、CD−ROM)を、ホストコンピュータ110向けにエミュレートする。
【0065】
動作518において、リダイレクトウェブページは、ブラウザプログラム143に、BMC120にあるウェブサーバ126からJavaオブジェクト164をダウンロードするよう命令する。安全上の理由から、一般的に、ブラウザプログラム143は、Javaオブジェクト164をダウンロードおよび実行する前に、ユーザの許可を求める。ユーザの許可によって、ブラウザプログラム143は、ウェブサーバ126からJavaオブジェクト164をダウンロードする。Javaオブジェクト164を受信すると、動作520において、ブラウザプログラム143は、JVMのようなJava実行環境を起動することができる。
【0066】
その間、ユーザ命令を受信すると、動作522において、仮想媒体モジュール122は、要求されたタイプの仮想媒体(たとえば、CD−ROM)を、ホストコンピュータ110向けにエミュレートする。ホストコンピュータ110がエミュレートされた仮想媒体を検出し、それを現実の物理媒体と認識すると、動作524において、ホストコンピュータ110は、エミュレートされた仮想媒体のファイル情報を読み出そうとし得る。特定の実施形態において、ファイル情報は、ファイルシステム構造、たとえば、仮想媒体のファイル名のリストを含む。ファイルシステム構造を求める要求を受信すると、動作526において、仮想媒体モジュール122は、ウェブサーバ126に、HTTP応答メッセージ、たとえば、選択される媒体ソース(たとえば、コンピューティングデバイス140のUSBドライブ)のファイルシステム構造を要求するJavaScriptを有するウェブページを、ブラウザプログラム143に送信するよう命令することができる。ブラウザプログラム143がHTTP応答メッセージを受信すると、動作528において、ブラウザプログラム143は、たとえば、JavaScriptによって命令されるように、選択される媒体ソース147にアクセスして、ファイルシステム構造を取り出すよう試行する。より具体的には、ウェブページ内のJavaScriptが、ブラウザプログラム143に、BMC120にあるウェブサーバ126からダウンロードされるJavaオブジェクト164を使用して、選択される媒体ソース147にアクセスするよう命令することができる。それに応じて、ブラウザプログラムは、ブラウザプログラム143のJVM166上のJavaオブジェクト164を起動または実行する。JavaScriptは、ブラウザプログラム143に、上述したイメージマウント関数を呼び出して、選択される媒体ソース147から情報を取り出すよう命令することができる。動作530において、Javaオブジェクト164は、イメージマウント関数において定義されるルーチンに従って、JNI関数162を呼び出して、システムコールのような、オペレーティングシステムの関数を使用して、選択される媒体ソース147からファイルシステム構造を取り出すことができる。動作534において、JNI関数162は、ブラウザプログラム143のJVM166上で作動しているJavaオブジェクト164に、ファイルシステム構造を返す。
【0067】
その後、動作536において、ブラウザプログラム143が、ウェブサーバ126に、ウェブ・ソケット・プロトコルの下での通信チャネルを確立することを求めるウェブ・ソケット・ハンドシェイク要求を送信する。ウェブ・ソケット・ハンドシェイク要求を受信すると、動作538において、ウェブサーバ126は、BMC120にあるウェブ・ソケット・モジュール124に、ウェブソケットを開放するよう命令する。同様に、動作540において、ブラウザプログラム143は、ウェブ・ソケット・モジュール145に、ウェブソケットを開放するよう命令する。動作542において、ウェブ・ソケット・モジュール124とウェブ・ソケット・モジュール145との間にウェブソケット接続が確立され得る。
【0068】
特定の実施形態において、ウェブソケット接続が確立されると、動作544において、Javaオブジェクト164は、記憶装置147(すなわち、選択される媒体)のファイルシステム構造をブラウザプログラム143に返す。その後、ブラウザプログラム143は、たとえば、リダイレクトウェブページ内のJavaScriptによって命令されるように、ウェブソケット接続150を通じてホストコンピュータ110に、記憶装置147のファイルシステム構造を送信する。JavaScriptルーチンは、socket.send(”data”)のようなコードを含むことができる。具体的には、動作546において、ブラウザプログラム143が、ウェブ・ソケット・モジュール145にファイルシステム構造を送信する。動作548において、ウェブ・ソケット・モジュール145が、ウェブソケット接続150を通じてウェブ・ソケット・モジュール124にファイルシステム構造を送信する。動作550において、ウェブ・ソケット・モジュール124が、BMC120のウェブサーバ126にファイルシステム構造を送信する。その後、ウェブサーバ126が、仮想媒体モジュール122にファイルシステム構造を送信する。仮想媒体モジュールは、動作524においてホストコンピュータ110によって開始される、仮想媒体モジュール122によってエミュレートされた仮想媒体を対象とするファイルシステム構造読み出しコマンドの結果として、動作552においてホストコンピュータ110にファイルシステム構造を提供する。したがって、ホストコンピュータ110は、仮想媒体のエミュレートされたファイルシステム構造を得、仮想媒体からファイルおよびデータを要求することができる。
【0069】
ホストコンピュータ110がエミュレートされた仮想媒体から特定のファイルを読み出すことを試行すると、動作554において、仮想媒体モジュール122が、ホストコンピュータ110によって開始されるそのような読み出しコマンドを受信する。仮想媒体モジュール122はその後、ウェブサーバ126に、要求特定のファイルを指示する。ウェブサーバ126は、その後、ウェブソケット接続150を通じてブラウザプログラム143に、ファイルを求める要求を送信する。具体的には、動作556において、ウェブサーバ126が、ウェブ・ソケット・モジュール124に要求を送信する。動作558において、ウェブ・ソケット・モジュール124が、ウェブソケット接続を通じてウェブ・ソケット・モジュール145に要求を送信する。その後、動作560において、ウェブ・ソケット・モジュール145が、ブラウザプログラム143に要求を送信する。要求を受信すると、動作562において、ブラウザプログラム143は、ウェブサーバ126によって生成されるような、および、ブラウザプログラム143によって現在レンダリングされているような、ウェブページ内のイベントをハンドリングするように定義されているルーチンを実行する。たとえば、ルーチンは、ブラウザプログラム143に、ウェブソケット接続を通じて受信された要求に従って、選択される媒体ソース147にアクセスして、要求において指定されているようにファイルを取り出すよう命令することができる。
【0070】
要求を受信すると、動作562において、ブラウザプログラム143は、たとえば、JavaScriptによって命令されるように、選択される媒体ソース147にアクセスして要求されたファイル149を取り出すよう試行する。より具体的には、リダイレクトウェブページ内のJavaScriptが、ブラウザプログラム143に、BMC120にあるウェブサーバ126からダウンロードされるJavaオブジェクトを使用して、選択される媒体ソース147にアクセスするよう命令することができる。それに応じて、ブラウザプログラムは、ブラウザプログラム143のJVM166上のJavaオブジェクト164を起動または実行する。JavaScriptは、ブラウザプログラム143に、ファイル取り出し関数を呼び出して、選択される媒体ソース147から指定されたファイルを取り出すよう命令することができる。動作564において、Javaオブジェクト164は、ファイル取り出し関数において定義されるルーチンに従って、JNI関数を呼び出して、システムコールのような、オペレーティングシステムの関数を使用して、選択される媒体ソース147から要求されたファイル149を取り出すことができる。動作568において、JNI関数162は、ブラウザプログラム143のJVM166上で作動しているJavaオブジェクト164に、ファイルを返す。動作570において、Javaオブジェクト164は、ブラウザプログラム143にファイル149を送信する。
【0071】
動作572において、ブラウザプログラム143が、ウェブ・ソケット・モジュール145にファイル149を送信する。動作574において、ウェブ・ソケット・モジュール145が、ウェブソケット接続を通じてウェブ・ソケット・モジュール124にファイル149を送信する。動作576において、ウェブ・ソケット・モジュール124が、BMC120のウェブサーバ126にファイル149を送信する。その後、ウェブサーバ126が、仮想媒体モジュール122にファイル149を送信する。仮想媒体モジュール122は、動作554においてホストコンピュータ110によって開始される、仮想媒体モジュールによってエミュレートされた仮想媒体を対象とするファイル読み出しコマンドの結果として、動作578においてホストコンピュータ110にファイル149を提供する。このように、ホストコンピュータ110は、仮想媒体からファイル149を得る。
【0072】
本開示の例示的な実施形態の上記の記載は、例示および説明のみを目的として提示されており、網羅的であること、または、本発明の開示されている厳密な形式に限定するようには意図されていない。上記の教示に照らして多くの修正および変形が可能である。
【0073】
実施形態は、当業者が、本発明および様々な実施形態を、企図されている特定の用途に適するように様々な修正を施して利用するよう活性化するように、本発明の原理およびその実際の適用を説明するために選択および記載されている。代替的な実施形態が、本発明の精神および範囲から逸脱することなく、本発明が属する技術分野における当業者には明らかとなろう。たとえば、複数のプローブを同時に利用して本発明を実施してもよい。したがって、本開示の範囲は、上記の記載および本明細書に記載されている例示的な実施形態ではなく、添付の特許請求の範囲によって画定される。