(57)【要約】【課題】論理パーティション・データ処理システムにおいてトレース・データを管理するための方法、装置、及びコンピュータ・プログラムを提供する。【解決手段】論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データのための呼び出しを受け取る。識別されたトレース・データを形成するために呼び出しパーティションに関連したバッファにおけるトレース・データが識別される。呼び出しパーティションに対する識別されたトレース・データだけが戻される。複数のパーティション内の他のパーティションに対するトレース・データは呼び出しパーティションに戻されない。【選択図】  図６
2005327288.tif 000002
【特許請求の範囲】
【請求項１】
論理パーティション・データ処理システムにおいてトレース・データを管理するための方法であって、
前記論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データに対する呼び出しを受け取るステップと、
識別されたトレース・データを形成するために、前記呼び出しパーティションに関連したバッファにおけるトレース・データを識別するステップと、
前記呼び出しパーティションに対する前記識別されたトレース・データだけを戻すステップと、
を含む、方法。
【請求項２】
前記バッファが循環式バッファである、請求項１に記載の方法。
【請求項３】
前記呼び出しパーティションがサービス・パーティションであることに応答して、前記呼び出しによって要求されたトレース・データをすべてサービス・パーティションに戻すステップを更に含む、請求項１に記載の方法。
【請求項４】
前記戻すステップが、前記識別されたトレース・データを前記呼び出しパーティションにおけるデータ・バッファに戻す、請求項１に記載の方法。
【請求項５】
前記戻すステップが、
データ・バッファにおける前記呼び出しパーティションのためのフリー・スペースの量を識別するステップと、
前記データ・バッファに記憶可能な、前記呼び出しパーティションに対する前記識別されたトレース・データの一部分だけを戻すステップと、
を含む、請求項１に記載の方法。
【請求項６】
前記受け取るステップ、前記識別するステップ、及び前記戻すステップがプラットフォーム・ファームウェアによって遂行される、請求項１に記載の方法。
【請求項７】
前記呼び出しが前記呼び出しパーティションの識別子及び前記呼び出しパーティションに関連したデータ・バッファの識別子を含む、請求項１に記載の方法。
【請求項８】
トレース・データを管理するための論理パーティション・データ処理システムであって、
前記論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データに対する呼び出しを受け取るための受け取り手段と、
識別されたトレース・データを形成するために、前記呼び出しパーティションに関連したバッファにおけるトレース・データを識別するための識別手段と、
前記呼び出しパーティションに対する前記識別されたトレース・データだけを戻すための戻し手段と、
を含む、データ処理システム。
【請求項９】
前記バッファが循環式バッファである、請求項８に記載のデータ処理システム。
【請求項１０】
前記戻し手段が第１戻し手段であり、
前記呼び出しパーティションがサービス・パーティションであることに応答して、前記呼び出しによって要求されたトレース・データをすべてサービス・パーティションに戻すための第２戻し手段を更に含む、請求項８に記載のデータ処理システム。
【請求項１１】
前記戻し手段が、前記識別されたトレース・データを前記呼び出しパーティションにおけるデータ・バッファに戻す、請求項８に記載のデータ処理システム。
【請求項１２】
前記戻し手段が、
データ・バッファに存在する、前記呼び出しパーティションのためのフリー・スペースの量を識別するための手段と、
前記データ・バッファに記憶可能な、前記呼び出しパーティションに対する前記識別されたトレース・データの一部分だけを戻すための手段と、
を含む、請求項８に記載のデータ処理システム。
【請求項１３】
前記受け取り手段、前記識別手段、及び前記戻し手段がプラットフォーム・ファームウェアによって実現される、請求項８に記載のデータ処理システム。
【請求項１４】
前記呼び出しが前記呼び出しパーティションの識別子及び前記呼び出しパーティションに関連したデータ・バッファの識別子を含む、請求項８に記載のデータ処理システム。
【請求項１５】
コンピュータにトレース・データを管理させるためのコンピュータ・プログラムであって、
論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データに対する呼び出しを受け取るステップと、
識別されたトレース・データを形成するために、前記呼び出しパーティションに関連したバッファにおけるトレース・データを識別するステップと、
前記呼び出しパーティションに対する前記識別されたトレース・データだけを戻すステップと、
を前記コンピュータに実行させるためのコンピュータ・プログラム。
【請求項１６】
前記バッファが循環式バッファである、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記呼び出しパーティションがサービス・パーティションであることに応答して、前記呼び出しによって要求されたトレース・データをすべてサービス・パーティションに戻すステップを更に前記コンピュータに実行させる、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
前記戻すステップが前記識別されたトレース・データを前記呼び出しパーティションにおけるデータ・バッファに戻す、請求項１５に記載のコンピュータ・プログラム。
【請求項１９】
前記戻すステップが、
データ・バッファに存在する、前記呼び出しパーティションのためのフリー・スペースの量を識別するステップと、
前記データ・バッファに記憶可能な、前記呼び出しパーティションに対する前記識別されたトレース・データの一部分だけを戻すステップと、
を含む、請求項１５に記載のコンピュータ・プログラム。
【請求項２０】
前記受け取るステップ、前記識別するステップ、及び前記戻すステップがプラットフォーム・ファームウェアによって遂行される、請求項１５に記載のコンピュータ・プログラム。
【請求項２１】
前記呼び出しが前記呼び出しパーティションの識別子及び前記呼び出しパーティションに関連したデータ・バッファの識別子を含む、請求項１５に記載のコンピュータ・プログラム。
【請求項２２】
論理パーティション・データ処理システムであって、
バス・システムと、
前記バス・システムに接続され、一組の命令を含むメモリと、
前記バス・システムに接続された処理ユニットと、
を含み、
前記処理ユニットが、前記論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データに対する呼び出しを受け取り、識別されたトレース・データを形成するために、前記呼び出しパーティションに関連したバッファにおけるトレース・データを識別し、前記呼び出しパーティションに対する前記識別されたトレース・データだけを戻す、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データ処理システムの改良に関し、特に、データを処理するための方法及び装置に関するものである。更に詳しく言えば、本発明は、論理パーティション・データ処理システムにおいてトレース・データを管理するための方法、装置、及びコンピュータ・プログラムに関するものである。
【背景技術】
【０００２】
インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能な IBM eServer P690、ヒューレット・パッカード・カンパニーから入手可能な DHP9000 Superdome EnterpriseServer、及びサン・マイクロシステムズ・インコーポレーテッドから入手可能な Sunfire 15K サーバのような益々大型化した対称マルチプロセッサ・データ処理システムは単一の大型データ処理システムとして使用されてはいない。その代わり、これらのタイプのデータ処理システムはパーティション化され、小型システムとして使用されている。これらのシステムは、論理パーティション（ＬＰＡＲ）・データ処理システムと呼ばれることもある。データ処理システム内の論理的に区分された機能性は、単一のオペレーティング・システムの複数コピー又は複数の異種オペレーティング・システムが単一のデータ処理システム・プラットフォーム上で同時に稼動することを可能にしている。１つのオペレーティング・システムのイメージがその内部で稼動するパーティションは、プラットフォーム・リソースの非重畳のサブセットを割り当てられる。これらのプラットフォーム割り振り可能なリソースは、割り込み管理エリア、システム・メモリの領域、入出力（Ｉ／Ｏ）アダプタ・バス・スロットを有する１つ又は複数の体系的に別個のプロセッサを有する。パーティションのリソースは、オペレーティング・システム・イメージに対するプラットフォームのファームウェアによって表される。
【０００３】
１つのプラットフォーム内で稼動する各個別のオペレーティング・システム又は１つのオペレーティング・システムのイメージは、１つの論理パーティションにおけるソフトウェア・エラーが他のいずれのパーティションにおける正しいオペレーションにも影響しないように、相互に保護されている。この保護は、各オペレーティング・システムのイメージによって直接管理されるべきプラットフォーム・リソースの非結合セットを割り振ることによって、及びそのイメージに割り振られていないいずれのリソースも種々のイメージが制御し得ないことを保証するための機構を設けることによって行われる。更に、オペレーティング・システムの割り振られたリソースの制御におけるソフトウェア・エラーは、他の如何なるイメージのリソースにも影響を与えないようにされる。
【０００４】
従って、オペレーティング・システムの各イメージ又は異なる各オペレーティング・システムは、プラットフォームにおける異なるセットの割り振り可能なリソースを直接に制御する。論理パーティション・データ処理システムにおけるハードウェア・リソースに関して、これらのリソースは種々のパーティション間で個別に共用される。これらのリソースは、例えば、入出力（Ｉ／Ｏ）アダプタ、メモリＤＩＭＭ、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、及びハードディスク・ドライブを含んでもよい。ＬＰＡＲデータ処理システム内の各パーティションは、そのデータ処理システム全体の電源操作を繰り返す必要なしに何度もブート及びシャット・ダウンすることが可能である。
【０００５】
論理パーティション・データ処理システムが障害に遭遇するとき、プロセス及びシステム状態に関連するデータは、その障害の識別及び分析に必要である。現在の論理パーティション・データ処理システムでは、そのシステムの現在の設計を理由に、障害を診断するのに必要なデータのうちのあるものが利用し得ないことがある。例えば、プラットフォーム・ファームウェアは、そのファームウェアにおけるコード・パスのトレースを可能にするためのトレース機構を含む。論理パーティション・データ処理システムにおいて使用されるプラットフォーム・ファームウェアの例は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なハイパーバイザである。
【０００６】
現在使用されているトレース機構の場合、各パーティションがプラットフォーム・ファームウェア呼び出しを行うとき、プラットフォーム・ファームウェアにおいて必要なコード・パスを示すトレース情報及びクリティカル・データ値がトレース・バッファに書き込まれる。このトレース情報は、パーティションがエラーに遭遇し、そのエラー・パスがクリティカル。データ値と共にトレースされるとき、特に重要である。
【０００７】
現在、すべての論理パーティション・モードのデータ処理システム・プラットフォームが、ハイパーバイザ実行時にハイパーバイザ・スペースに設けられたトレース・バッファにハイパーバイザ・コード実行トレース・ポイント・データを書き込むために使用されるハイパーバイザ・トレース機構をサポートする。このハイパーバイザ・トレース・データは、システム障害の場合にフィールドでの効果的な障害分析にとって重要である。
【０００８】
すべてのハイパーバイザ呼び出しトレース・ポイントは同じトレース・バッファを使用し、パーティション０を割り当てられたパーティション・マネージャを含むパーティション番号を呼び出することによって識別される。ハイパーバイザはメモリ割り振りの観点からみると静的であるので、このバッファは固定長のものであり、プラットフォームに対する最大数のパーティションにとって十分に大きくなければならない。トレース・データが必要であるとき、それは、拡張対話式エグゼクティブ（ＡＩＸ）オペレーティング・システムのコマンド「fetchdog」のようなオペレーティング・システム・コマンドを使用していずれのパーティションからも検索可能である。このコマンドは、トレース・データをパーティション・スペースにコピーするためにハイパーバイザ呼び出しを行う特殊ＡＩＸオペレーティング・システム・デバイス・ドライバをロードする。
【０００９】
このコマンドはハイパーバイザ・トレース・バッファ全体の内容を収集するので、それは、単一のパーティションがパーティション・マネージャを含むすべてのパーティションからのデータを検索することを可能にし、そのため論理パーティション・データ処理システムがセキュリティの脆弱性に晒されることになる。これらのセキュリティの脆弱性は、双方向隠れ（covert）ストレージ・チャネル、他のパーティションによるパーティション・オペレーションの分析、及びハイパーバイザ・オペレーションの分析を含む。
【００１０】
双方向隠れストレージ・チャネルはパーティション間に設定することが可能である。トレース・バッファが循環式バッファとして編成されるので、通信に関するすべての痕跡がシステムによって定期的に除去される。更なるデータがそのバッファに書き込まれるとき、最終的には、古いデータが上書きされる。チャネルは、非常に高いデータ・レートでのデータ転送の効果的な手段であるに十分に長い期間の間データを記憶する。
【００１１】
双方向隠れストレージ・チャネルを設定する場合に生じるオペレーションは、符号化された入力パラメータを使用して送信パーティションにハイパーバイザ呼び出しを行わせることを含む。これらのパラメータは、ハイパーバイザ・トレース機構によってハイパーバイザ・トレース・バッファに書き込まれる。受信パーティションは、「fetchdbh」コマンドを使用してトレース・データを検索するために連続的な呼び出しを行うか、又はトレース・データを検索するために呼び出し「h_hypervisor_debug()」を使用してハイパーバイザを直接的に呼び出す。受信パーティションは、パーティション毎に、及び隠れチャネル通信パスを完成するために既知の呼び出しについてキー・パターンが検出されたとき、トレース・データをフィルタすることができる。更に、受信パーティションは、符号化された入力パラメータを使用してハイパーバイザ呼び出しを行うことによって送信側として作用することも可能である。このプロセスは、パーティション間に全双方向隠れ「ソケット」を設定するためにも使用可能である。
【００１２】
更なるセキュリティの脆弱性は、他のパーティションによるパーティションのオペレーションの分析である。このタイプの分析は、分析パーティションが各ハイパーバイザ呼び出し行うことによって実施することが可能であり、各ハイパーバイザ呼び出しの特性を設定するためにトレース・バッファを読み取る。分析パーティションは、トレース・データを検索するために連続的な呼び出しを行う。しかる後、トレース・バッファを読み取ることによって得られたデータを使用した簡単な分析によって、パーティションは、他のすべてのパーティションが何に関連しているかを推測することができ、攻撃方法を開発することができる。
【００１３】
もう１つのセキュリティの脆弱性は、ハイパーバイザによるオペレーションのようなプラットフォーム・ファームウェア・オペレーションの分析である。各トレース・ポイントから戻された値、特に、パーティション・マネージャに対する値を監視することによって、効果的なパーティション間のアタック及びマシン全体をクラッシュすることを意図したアタックを開始できるアタック方法を開発することが可能である。
【００１４】
従って、トレース・データに関するセキュリティの脆弱性を排除するための改良された方法、装置、及びコンピュータ・プログラムを有することは有利なことであろう。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明の目的は、論理パーティション・データ処理システムにおいてトレース・データを管理するための方法、装置、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１６】
論理パーティション・データ処理システムにおける複数のパーティション内の呼び出しパーティションからトレース・データに対する呼び出しを受け取る。識別されたトレース・データを形成するために呼び出しパーティションに関連したバッファにおけるトレース・データが識別される。呼び出しパーティションに対する識別されたトレース・データだけが戻される。複数のパーティション内の他のパーティションに対するトレース・データは呼び出しパーティションに戻されない。
【発明を実施するための最良の形態】
【００１７】
次に、図面、特に、図１を参照すると、本発明を実施し得るデータ処理システム１００のブロック図が示される。データ処理システム１００は、システム・バス１０６に接続された複数のプロセッサ１０１、１０２、１０３、及び１０４を含む対称マルチプロセッサ（ＳＭＰ）システムであってもよい。例えば、データ処理システム１００は、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーションの製品であって、ネットワークにおけるサーバとして実装された IBM eServer であってもよい。あるいは、単一のプロセッサ・システムが使用されてもよい。更に、システム・バス１０６には、メモリ・コントローラ／キャッシュ１０８が接続される。メモリ・コントローラ／キャッシュ１０８は、複数のローカル・メモリ１６０〜１６３に対するインターフェースを提供する。システム・バス１０６には、Ｉ／Ｏバス・ブリッジ１１０が接続され、それはＩ／Ｏバス１１２に対するインターフェースを提供する。メモリ・コントローラ／キャッシュ１０８及びＩ／Ｏバス・ブリッジ１１０は、図示のように、一体化されてもよい。
【００１８】
データ処理システム１００は、論理パーティション（ＬＰＡＲ）データ処理システムである。従って、データ処理システム１００は、同時に実行される複数の異種オペレーティング・システム（または、単一オペレーティング・システムの複数インスタンス）を有してもよい。これらの複数のオペレーティング・システムの各々は、その中で実行される任意の数のソフトウェア・プログラムを有することが可能である。データ処理システム１００は、種々のＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１、１２８〜１２９、１３６、グラフィックス・アダプタ１４８、及びハード・ディスク・アダプタ１４９が種々の論理パーティションに割り当てられるよう、論理的にパーティション化される。この場合、グラフィックス・アダプタ１４８はディスプレイ装置（図示されてない）に対する接続を提供し、一方、ハード・ディスク・アダプタ１４９はハード・ディスク１５０に対する接続を提供する。
【００１９】
従って、例えば、データ処理システム１００が３つの論理パーティションＰ１、Ｐ２、及びＰ３に分割されるものと仮定する。ＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１、１２８〜１２９、１３６の各々、グラフィックス・アダプタ１４８、ハード・ディスク・アダプタ１４９、ホスト・プロセッサ１０１〜１０４の各々、及びローカル・メモリ１６０〜１６３からのメモリはそれら３つの論理パーティションの各々に割り当てられる。これらの例では、ローカル・メモリ１６０〜１６３は、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）の形式を取ってもよい。ＤＩＭＭは、通常は、ＤＩＭＭ毎にパーティションに割り当てられない。その代わり、１つのパーティションには、プラットフォームから見えるメモリ全体のうちの一部が割り当てられる。例えば、プロセッサ１０１、ローカル・メモリ１６０〜１６３からの一部のメモリ、及びＰＣＩ  Ｉ／Ｏアダプタ１２０、１２８、及び１２９が論理パーティションＰ１に割り当てられ、プロセッサ１０２〜１０３、ローカル・メモリ１６０〜１６３からの一部のメモリ、及びＰＣＩ  Ｉ／Ｏアダプタ１２１及び１３６が論理パーティションＰ２に割り当てられ、そしてプロセッサ１０４、ローカル・メモリ１６０〜１６３からの一部のメモリ、グラフィックス・アダプタ１４８、及びハード・ディスク・アダプタ１４９が論理パーティションＰ３に割り当てられてもよい。
【００２０】
データ処理システム１００において実行される各オペレーティング・システムは異なる論理パーティションに割り当てられる。従って、データ処理システム１００において実行される各オペレーティング・システムは、その各論理パーティション内にあるＩ／Ｏ装置だけをアクセスすることが可能である。従って、例えば、拡張対話式エグゼクティブ（ＡＩＸ）オペレーティング・システムの１つのインスタンスが論理パーティションＰ１内で実行中であり、ＡＩＸオペレーティング・システムの第２インスタンス(イメージ)が論理パーティションＰ２内で実行中であり、そして Linux または OS/400 オペレーティング・システムが論理パーティションＰ３内で実行中であってもよい。
【００２１】
Ｉ／Ｏバス１１２に接続されたＰＣＩホスト・ブリッジ１１４がＰＣＩローカル・バス１１５に対するインターフェースを提供する。多数のＰＣＩ入出力アダプタ１２０〜１２１がＰＣＩ-ＴＯ-ＰＣＩブリッジ１１６、ＰＣＩバス１１８、ＰＣＩバス１１９、Ｉ／Ｏスロット１７０、及びＩ／Ｏスロット１７１を介してＰＣＩバス１１５に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１１６は、ＰＣＩバス１１８及びＰＣＩバス１１９に対するインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１２０及び１２１が、それぞれ、Ｉ／Ｏスロット１７０及び１７１に設けられる。一般的なＰＣＩの実装は、４個乃至８個のＩ／Ｏアダプタ（即ち、アド・イン・コネクタのための拡張スロット）をサポートする。各ＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１は、データ処理システム１００と、例えば、データ処理システム１００にとってはクライアントである他のネットワーク・コンピュータのような入出力装置との間インターフェースを提供する。
【００２２】
更なるＰＣＩホスト・ブリッジ１２２が更なるＰＣＩバス１２３に対するインターフェースを提供する。ＰＣＩバス１２３は、複数のＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９に接続される。ＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９は、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１２４、ＰＣＩバス１２６、ＰＣＩバス１２７、Ｉ／Ｏスロット１７２、及びＩ／Ｏスロット１７３を介してＰＣＩバス１２３に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１２４は、ＰＣＩバス１２６及びＰＣＩバス１２７に対するインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１２８及び１２９は、それぞれ、Ｉ／Ｏスロット１７２及び１７３に設けられる。このように、例えば、モデムまたはネットワーク・アダプタのような更なるＩ／Ｏ装置がＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９の各々を介してサポートされてもよい。このように、データ処理システム１００は、複数のネットワーク・コンピュータへの接続を可能にする。
【００２３】
Ｉ／Ｏスロット１７４に挿入されたメモリ・マップ・グラフィックス・アダプタ１４８がＰＣＩバス１４４、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１４２、ＰＣＩバス１４１、及びＰＣＩホスト・ブリッジ１４０を介してＩ／Ｏバス１１２に接続される。ハード・ディスク・アダプタ１４９がＩ／Ｏスロット１７５に挿入され、Ｉ／Ｏスロット１７５はＰＣＩバス１４５に接続される。更に、このバス１４５は、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１４２に接続され、そのブリッジ１４２は、ＰＣＩバス１４１によってＰＣＩホスト・ブリッジ１４０に接続される。
【００２４】
ＰＣＩホスト・ブリッジ１３０が、ＰＣＩバス１３１をＩ／Ｏバス１１２に接続するためのインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１３６がＩ／Ｏスロット１７６に接続される。そのＩ／Ｏスロット１７６はＰＣＩバス１３３によってＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２はＰＣＩバス１３１に接続される。このＰＣＩバス１３１は、ＰＣＩホスト・ブリッジ１３０をサービス・プロセッサ・メールボックス・インターフェース、ＩＳＡバス・アクセス・パススルー・ロジック１９４及びＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２にも接続する。サービス・プロセッサ・メールボックス・インターフェース及びＩＳＡバス・アクセス・パススルー・ロジック１９４は、ＰＣＩ／ＩＳＡブリッジ１９３を宛先とするＰＣＩアクセスを転送する。ＮＶＲＡＭストレージ１９２がＩＳＡバス１９６に接続される。サービス・プロセッサ１３５がＰＣＩバス１９５を介してサービス・プロセッサ・メールボックス・インターフェース及びＩＳＡバス・アクセス・パススルー・ロジック１９４に接続される。サービス・プロセッサ１３５は、複数のＪＴＡＧ／Ｉ２Ｃバス１３４を介してプロセッサ１０１〜１０４にも接続される。ＪＴＡＧ／Ｉ２Ｃバス１３４は、ＪＴＡＧ／スキャン・バス（ＩＥＥＥ  １１４９.１参照）及びＰｈｉｌｌｉｐｓＩ２Ｃバスの結合体である。しかし、ＪＴＡＧ／Ｉ２Ｃバス１３４は、その代替として、Ｐｈｉｌｌｉｐｓ Ｉ２Ｃバスのみ、またはＪＴＡＧ／スキャン・バスのみによる置換も可能である。ホスト・プロセッサ１０１、１０２、１０３、及び１０４のＳＰ−ＡＴＴＮ信号は、すべて、サービス・プロセッサの割込み入力信号に結合される。サービス・プロセッサ１３５は、それ自身のローカル・メモリ１９１を有し、ハードウェアＯＰパネル１９０に対するアクセスも行う。
【００２５】
データ処理システム１００が最初に電源投入されるとき、サービス・プロセッサ１３５は、ＪＴＡＧ／Ｉ２Ｃバス１３４を使用してシステム（ホスト）プロセッサ１０１〜１０４、メモリ・コントローラ／キャッシュ１０８、及びＩ／Ｏブリッジ１１０に問い合わせを行う。このステップの終了時に、サービス・プロセッサ１３５は、データ処理システム１００に関するインベントリ及びトポロジを理解する。サービス・プロセッサ１３５は、更に、ホスト・プロセッサ１０１〜１０４、メモリ・コントローラ／キャッシュ１０８、及びＩ／Ｏブリッジ１１０に問い合わせを行うことによってわかったすべての素子に関して、組込み自己診断テスト（ＢＩＳＴ）、基本保証テスト（ＢＡＴ）、およびメモリ・テストを実行する。ＢＩＳＴ、ＢＡＴ、及びメモリ・テスト中に検出された障害に関するすべてのエラー情報がサービス・プロセッサ１３５によって収集され、報告される。
【００２６】
ＢＩＳＴ、ＢＡＴ、及びメモリ・テスト中に障害があることがわかった素子を取り除いた後でも、依然として、システム・リソースの有意義で有効な構成が可能である場合、データ処理システム１００は、実行可能なコードをローカル（ホスト）メモリ１６０〜１６３にロードするように進行することを可能にされる。そこで、サービス・プロセッサ１３５は、ローカル・メモリ１６０〜１６３にロードされたコードを実行するためにホスト・プロセッサ１０１〜１０４を解放する。ホスト・プロセッサ１０１〜１０４はデータ処理システム１００におけるそれぞれのオペレーティング・システムからのコードを実行するが、サービス・プロセッサ１３５はエラーを監視及び報告するモードに入る。サービス・プロセッサ１３５によって監視される項目のタイプは、例えば、冷却ファンの速度及び操作、温度センサ、電源調整器、並びに、プロセッサ１０１〜１０４、ローカル・メモリ１６０〜１６３、及びＩ／Ｏブリッジ１１０によって報告された回復可能エラー及び回復不能エラーを含む。
【００２７】
サービス・プロセッサ１３５は、データ処理システム１００におけるすべての監視された項目に関するエラー情報を保存及び報告する責任を負っている。更に、サービス・プロセッサ１３５は、エラーのタイプ及び定義された閾値に基づいてアクションを取る。例えば、サービス・プロセッサ１３５は、プロセッサのキャッシュ・メモリに関する過度の回復可能なエラーに抽出し、これが難しい障害を予測するものであることを決定することがある。この決定に基づいて、サービス・プロセッサ１３５は、現在稼動しているセッション時に及び将来の初期プログラム・ロード（ＩＰＬ）時に構成解除するためにそのリソースをマークすることも可能である。なお、ＩＰＬは、時には「ブート」または「ブートストラップ」と呼ばれることもある。
【００２８】
データ処理システム１００は、種々の商業的に入手可能なコンピュータ・システムを使用して実現することが可能である。例えば、データ処理システム１００は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能な IBM eServer iSeries Model 840 システムを使用して実現することができる。そのようなシステムは、OS/400オペレーティング・システムを使用して論理パーティションをサポートすることが可能である。なお、OS/400 オペレーティング・システムも、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。
【００２９】
図１に示されたハードウェアが変更可能なものであることは当業者には明らかであろう。例えば、光ディスク・ドライブ等のような他の周辺装置が、図示のハードウェアに加えて、またはそのハードウェアに代わって、使用されてもよい。図示の例は、本発明に関してアーキテクチャ上の限定を暗に示すことを意図するものではない。
【００３０】
図２を参照すると、本発明を実装することが可能である例示的な論理パーティション・プラットフォームのブロック図が示される。論理パーティション・プラットフォーム２００は、例えば、図１におけるデータ処理システム１００として実装することが可能である。論理パーティション・プラットフォーム２００は、パーティション化されたハードウェア２３０、オペレーティング・システム２０２、２０４、２０６、２０８、及びパーティション管理ファームウェア（プラットフォーム・ファームウェア）２１０を含む。オペレーティング・システム２０２、２０４、２０６、及び２０８は、論理パーティション・プラットフォーム２００において同時に稼動する単一のオペレーティング・システムの複数コピー、または複数の異種のオペレーティング・システムであってもよい。これらのオペレーティング・システムは、ハイパーバイザのようなパーティション管理ファームウェアとインターフェースするように設計された OS/400 を使用して実現することが可能である。OS/400 は、これらの実施例では単に１つの例として使用される。もちろん、特定の実現方法次第で、AIX及び Linux のような他のタイプのオペレーティング・システムを使用することも可能である。オペレーティング・システム２０２、２０４、２０６、及び２０８がパーティション２０３、２０５、２０７、及び２０９に設けられる。ハイパーバイザ・ソフトウェアは、パーティション管理ファームウェア２１０を実現するために使用可能なソフトウェアの一例であり、それは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。ファームウェアは、例えば、リード・オンリ・メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、及び不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）のような、電力がなくても内容を保持するメモリ・チップに記憶された「ソフトウェア」である。
【００３１】
更に、これらのパーティションは、パーティション・ファームウェア２１１、２１３、２１５、及び２１７を含む。パーティション・ファームウェア２１１、２１３、２１５、及び２１７は、初期ブート・ストラップ・コード、ＩＥＥＥ−１２７５スタンダード・オープン・ファームウェア、及びランタイム・アブストラクション・ソフトウェア（ＲＴＡＳ）を使用して実装可能である。なお、ＲＴＡＳは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。パーティション２０３、２０５、２０７、及び２０９がインスタンス化されるとき、ブート・ストラップ・コードのコピーがプラットフォーム・ファームウェア２１０によってパーティション２０３、２０５、２０７、及び２０９にロードされる。しかる後、ブート・ストラップ・コードがその後オープン・ファームウェア及びＲＴＡＳをロードすることによって、そのブート・ストラップ・コードに制御が移される。次に、それらのパーティションに関連した又は割り当てられたプロセッサが、パーティション・ファームウェアを実行するためにそれらのパーティションのメモリにディスパッチされる。
【００３２】
パーティション・ハードウェア２３０は、複数のプロセッサ２３２〜２３８、複数のシステム・メモリ・ユニット２４０〜２４６、複数の入出力（Ｉ／Ｏ）アダプタ２４８〜２６２、及びストレージ・ユニット２７０を含む。プロセッサ２３２〜２３８、メモリ・ユニット２４０〜２４６、ＮＶＲＡＭ２９８、及びＩ／Ｏアダプタ２４８〜２６２の各々が論理パーティション・プラットフォーム２００における複数のパーティションの１つに割り当て可能である。なお、それらのパーティションの各々が、オペレーティング・システム２０２、２０４、２０６、及び２０８の１つに対応する。
【００３３】
パーティション管理ファームウェア２１０は、論理パーティション・プラットフォーム２００のパーティション化をもたらし且つ強化するために、パーティション２０３、２０５、２０７、及び２０９に対して多数の機能及びサービスを遂行する。パーティション管理ファームウェア２１０は、基本的なハードウェアと同様のファームウェア実装の仮想マシンである。従って、パーティション管理ファームウェア２１０は、論理パーティション・プラットフォーム２００のすべてのハードウェア・リソースを仮想化することによって独立したＯＳイメージ２０２、２０４、２０６、及び２０８の同時実行を可能にする。
【００３４】
パーティションにおけるプラットフォーム・エラーの処理のような種々のサービスを提供するためにサービス・プロセッサ２９０を使用することが可能である。これらのサービスは、インターナショナル・ビジネス・マシーンズ・コーポレーションのような製造業者にエラーを報告するようにサービス・エージェントとしても作用してもよい。種々なパーティションの操作がハードウェア管理コンソール２８０を介して制御可能である。ハードウェア管理コンソール２８０は、種々のパーティションに対するリソースの再割り振りを含む種々の機能をシステム管理者が遂行し得る別のデータ処理システムである。
【００３５】
本発明は、セキュリティの脆弱性を減らす態様でトレース・データを管理するための方法、装置、及びコンピュータ・プログラムを提供する。更に詳しく言えば、双方向隠れストレージ・チャネル、他のパーティションによるパーティション・オペレーションの分析、及びプラットフォーム・ファームウェア・オペレーションの分析が防止される。本発明の機構は、トレース・データに対する１つのパーティションからの呼び出しに応答して戻されるデータを選択するためにフィルタを使用する。このフィルタは、呼び出しパーティションに関連したトレース・データだけを戻す。他のパーティションに対する他のデータは戻されない。サービス・パーティションのような選択されたパーティションの場合、セキュリティの脆弱性は大きな懸念事項ではない。
【００３６】
次に、図３及び図４を参照すると、トレース・データを処理するために使用される現在入手可能な論理パーティション・データ処理システムにおけるコンポーネントを表す図が示される。この図示の例では、パーティション３００は図３におけるオペレーティング・システム３０２及びＲＴＡＳ３０４を含む。パーティション３０６は、オペレーティング・システム３０８及びＲＴＡＳ３１０を含む。これらの図示された例では、２５５個までのパーティションが存在可能である。これらのパーティションは、すべて、ハイパーバイザ３１２のようなプラットフォーム・ファームウェアを通して管理される。
【００３７】
パーティション・マネージャ３１４は、ハイパーバイザ・コード・パス３１８としてハイパーバイザ・トレース・バッファ３１６にトレース情報を書き込む。このトレース情報は、このコンポーネントがハイパーバイザ３１２に対して呼び出しを行うときに書き込まれる。パーティション・マネージャ３１４はハイパーバイザ３１２における１つのコンポーネントである。このコンポーネントはパーティションを管理するために使用され、パーティションを開始及び終了させるというような機能を含む。パーティション・マネージャ３１４によって行われた呼び出しは、ハイパーバイザ・トレース・バッファ３１６に記憶される。
【００３８】
同様に、ハイパーバイザ３１２に対する呼び出しがパーティション３０６によって行われるとき、ハイパーバイザ・コード・パス３２０が形成され、これらの呼び出しに対するトレース・データがハイパーバイザ・トレース・バッファ３１６に記憶される。同様に、ハイパーバイザ３１２がパーティション３０６による呼び出しを受け取るとき、ハイパーバイザ・コード・パス３２０が形成される。このパスに対するトレース・データがハイパーバイザ・トレース・バッファ３１６に記憶される。
【００３９】
各パーティションが活性化されるとき、オペレーティング・システムがロードされ、実行を開始する。オペレーティング・システム、例えばオペレーティング・システム３０２がプラットフォーム・リソースを必要とするとき、そのオペレーティング・システムはＲＴＡＳ３０４に対してＲＴＡＳ呼び出しを行う。次に、ＲＴＡＳ３０４は、ハイパーバイザ３１２に対してハイパーバイザ呼び出しを行う。ハイパーバイザ呼び出しが実行されるとき、パーティション・データを分離することなく、トレース・データがハイパーバイザ・トレース・バッファ３１６に書き込まれるという特別の「トレース・ポイント」が実行される。換言すれば、すべてのパーティションによるすべての呼び出しに対するすべてのトレース・データがこのバッファに書き込まれる。
【００４０】
実行中のハイパーバイザ呼び出しがパーティションのためにハイパーバイザ・データを単一のバッファに書き込むだけでなく、ハイパーバイザ機構であるパーティション・マネージャ３１４もそのトレース・データを同じトレース・バッファに書き込む。更に、マシン・チェック割り込みハンドラ３２２が同じトレース機構を使用し、ハイパーバイザ・トレース・バッファ３１６に情報を記憶する。
【００４１】
トレース・データを検索するための図４における通常のデバッグ・オペレーションでは、パーティション３００がデータ・バッファ３２４を設定し、「h_hypervisor_debug()」ルーチンに対して呼び出しを行う。この呼び出しの実行は、分析のために生のハイパーバイザ・トレース・データをパーティション・スペース内にコピーさせる。このパーティションの例では、そのデータがデータ・バッファ３２４にコピーされる。そのような呼び出しが生じるとき、データの転送に関する制限は課されない。このタイプの無制限のデータのコピーは、隠れストレージ・チャネルが２つのパーティションの間に設定されることを可能にする。
【００４２】
その結果、ハイパーバイザ３１２によって提供されるトレース機構では、データ・バッファ３２４におけるデータが、パーティション３０６からの一連のハイパーバイザ呼び出しによって、ハイパーバイザ・トレース・バッファ３１６に送られることが可能である。ハイパーバイザ・トレース・バッファ３１６に置かれたパーティション３０６に対するこのトレース・データは、「h_hypervisor_debug()」ハイパーバイザ呼び出しを使用してパーティション３００によって検索することが可能である。この呼び出し及び本願で開示された他の特定の呼び出しは、ハイパーバイザ製品で現在使用可能な呼び出しである。このように、隠れストレージ・チャネルが設定可能である。更に、パーティション３０６のようなパーティションが、パーティション・マネージャ３１４及びマシン・チェック割り込みハンドラ３２２によって生成されたトレース・データをハイパーバイザ・トレース・バッファ３１６から検索することも可能である。この情報は、パーティションによるオペレーション及びハイパーバイザ・オペレーションの分析を可能にする。
【００４３】
次に、図５を参照すると、セキュリティの脆弱性を排除するようにトレース・データを管理するための構成が本発明の好適な実施例に従って示される。この実施例では、パーティション４００及びパーティション４０２が存在し、ハイパーバイザ４０４を通して管理される。パーティション４００はオペレーティング・システム４０６及びＲＴＡＳ４０８を含み、一方、パーティション４０２はオペレーティング・システム４１０及びＲＴＡＳ４１２を含む。この例では、パーティション４００はデータ・バッファ４１４も含み、パーティション４０２はデータ・バッファ４１６も含む。パーティション４００又はパーティション４０２がハイパーバイザ４０４に対する呼び出しを発生するとき、ハイパーバイザ・コード・パス４１８及びハイパーバイザ・コード・パス４２０が生成され、トレース・データがハイパーバイザ・トレース・バッファ４２２に記憶される。
【００４４】
更に、パーティション・マネージャ４２４は、トレース・データをハイパーバイザ・トレース・バッファ４２２に記憶する呼び出しを生成することが可能である。マシン・チェック割り込みハンドラ４２６もハイパーバイザ・トレース・バッファ４２２にデータを記憶する。この実施例では、フィルタ４２８もハイパーバイザ４０４に存在する。これらの例では、このフィルタは、ハイパーバイザ４０４がトレース・データに対する呼び出しを受け取ったときに戻されるデータを制限するために使用される。
【００４５】
この実施例では、フィルタ４２８において簡単なフィルタ・アルゴリズムを適用することにより、パーティション間の隠れチャネルが排除される。このフィルタは、実施例では「h_hypervisor_debug()」ハイパーバイザ呼び出しにおいて使用される。このルーチンは、トレース・データを実際に転送するために「read_trace()」ルーチン４３０を呼び出す。
【００４６】
本発明の機構は、トレース・データに対する呼び出しに応答して戻されるべきデータを選択するためにフィルタ４２８を加えることによってこのルーチンを修正する。フィルタ４２８は、ハイパーバイザ・トレース・バッファ４２２からパーティション４００のようなパーティションへの無制限なデータ転送を防ぐ。図示の例では、フィルタ４２８は、パーティションによる呼び出しから識別された現パーティション番号及びトレース・バッファ内のデータ・フィールドを使用して、フィルタ・アルゴリズム又はプロセスへの入力としてそのデータがどのパーティションに属するかを識別する。
【００４７】
ハイパーバイザ・トレース・バッファ４２２におけるデータはレコードとして配置される。実施例では、ハイパーバイザ・トレース・バッファ４２２における各レコードは、トレース・データが１つのパーティションからの呼び出しによって生成されるときに作成される。そのレコードにおけるトレース・データを生成した呼び出しを発生したパーティションは、そのレコードにおけるデータ・フィールドにおいて識別される。フィルタ４２８における本発明のフィルタリング機構は、呼び出しパーティションの識別子をハイパーバイザ・トレース・バッファ４２２におけるレコードに関連したパーティションの識別子と比較する。
【００４８】
このフィルタは、呼び出しパーティションが「サービス・パーティション」として識別される場合を除いて、呼び出しパーティションのデータをそのパーティションに送るだけである。実施例では、サービス・パーティションは、コード更新のようなサービス機能を遂行するための特別な許可を与えられるパーティションである。プラットフォーム・アドミニストレータは、ハードウェア管理コンソールを使用してサービス・パーティションを割り当てなければならないので、このパーティションはセキュアであり、かついかなる隠れデータも受け取らないものとする。
【００４９】
このように、パーティション間の隠れチャネルは防止される。フィルタ４２８によるデータ転送の制限によって、他のパーティションによるパーティション・オペレーションの分析及びハイパーバイザ・オペレーションの分析が排除される。
【００５０】
次に、図６を参照すると、パーティションにおけるトレース・データに対する呼び出しに応答してトレース・データを戻すためのプロセスのフローチャートが本発明の好適な実施例に従って示される。図６に示されるプロセスは、図５における「read_trace」ルーチン４３０に設けられたフィルタ４２８のようなフィルタにおいて実装可能である。
【００５１】
プロセスは、パーティションからのトレース・データに対する呼び出し又はリクエストに応答して開始する。このリクエストは、パーティション番号又はアドレスのような呼び出しパーティションの識別子及びデータ・バッファの識別子を含む。呼び出しパーティションがサービス・パーティションであるかどうかに関する決定が行われる（ステップ５００）。この実施例におけるサービス・パーティションは潜在的なセキュリティ・リスクとはみなされない。呼び出しパーティションがサービス・パーティションではない場合、プロセスはトレース・バッファにおける次の未処理のトレース・データ・レコードに進む（ステップ５０２）。この実施例では、データはトレース・バッファにおける複数のレコードとして編成される。
【００５２】
次に、現在のパーティション番号がトレース・データ・レコードのデータ・フィールドと比較される（ステップ５０４）。トレース・データ・レコードにおけるデータ・フィールドは、そのトレース・データ・レコードにおけるデータの生成を結果として生じさせたハイパーバイザ呼び出しを行うパーティションの識別子を含む。しかる後、そのトレース・データ・レコードが現在のパーティションに属するかどうかに関する決定が行われる（ステップ５０６）。トレース・データ・レコードが現在のパーティションに属する場合、そのトレース・データ・レコードがデータ・バッファにコピーされる（ステップ５０８）。そこで、更なる未処理のトレース・データ・レコードがトレース・バッファに存在するかどうかに関する決定が行われる（ステップ５１０）。更なる未処理のトレース・データ・レコードがトレース・バッファに存在しない場合、プロセスは終了する。
【００５３】
ステップ５００に戻って、呼び出しパーティションがサービス・パーティションである場合、データ・バッファ容量までの数のトレース・データ・レコードがトレース・バッファからデータ・バッファに転送され（ステップ５１２）、しかる後、プロセスが終了する。ステップ５０６において、トレース・データ・レコードが現在のパーティションに属さない場合、プロセスは前述のステップ５１０に進む。ステップ５１０において、更なる未処理のトレース・データ・レコードがトレース・バッファに存在する場合、プロセスは前述のステップ５０２に進む。
【００５４】
次に、図７を参照すると、本発明の好適な実施例に従って、トレース・データを転送するためのコードが示される。図７に示されたコードは、図５におけるハイパーバイザ４０４のようなプラットフォーム・ファームウェアにおける呼び出しとして実装可能である。更に詳しく言えば、図示のコードは、図５における「read_trace」ルーチン４３０のようなデータ転送ルーチンにおいて実装可能である。
【００５５】
この実施例では、「h_hypervisor_debug()」ルーチンが初期の処理を遂行し、しかる後、トレース・データを転送するために「read_trace()」ルーチン６００を呼び出す。本発明のフィルタ機構はこのルーチンに設けられる。この例では、「read_trace()」ルーチン６００は、図６に示されたプロセスの実装例である。本発明のフィルタ機構は、「read_trace()」ルーチン６００のセクション６０２において実装される。
【００５６】
従って、本発明は、トレース・データを保護するための改良された方法、装置、及びコンピュータ・プログラムを提供する。本発明の機構は、トレース・データのためのリクエストをパーティションから受け取り、その要求パーティションに対するデータだけをトレース・バッファから戻す。このように、パーティション間の隠れチャネルは本発明のフィルタリング機構を使用することによって排除することが可能である。その結果、プラットフォーム・ファームウェアによるトレース・データの処理におけるセキュリティの脆弱性は減少又は排除される。
【００５７】
十分に機能するデータ処理システムに関連して本発明を説明したが、本発明のプロセスがコンピュータ可読媒体の形式で及び種々の形式でプログラムを配布することが可能であること、及び本発明がこの配布を行うために実際に使用される信号保持媒体の特定のタイプに関係なく等しく適用することが当業者には明らかであることが重要である。コンピュータ可読媒体の例は、フレキシブル・ディスク、ハードディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭのような記録可能タイプの媒体、並びに、ディジタル及びアナログ通信リンク、例えば、無線周波及び光波伝送のような伝送形式を用いた有線又は無線通信リンクのような伝送タイプの媒体を含む。コンピュータ可読媒体は、特定のデータ処理システムにおいて実際に使用するためにデコードされるコード化フォーマットの形式を取ることが可能である。
【００５８】
図解及び説明を目的として本発明を記述した。それは、網羅的であることを意図するものではなく、開示された形式の発明に限定することを意図するものでもない。当業者には、多くの修正及び変更が明らかであろう。これらの実施例は、発明の原理及び実用的な応用を最もよく理解するために、及び、意図する特定の用途に適した種々の修正により、当業者が種々の実施例に対して発明を理解することを可能にするために、選択及び説明したものである。
【図面の簡単な説明】
【００５９】
【図１】本発明を実装し得るデータ処理システムのブロック図である。
【図２】本発明を実装し得る例示的な論理パーティション・プラットフォームのブロック図である。
【図３】トレース・データを処理するために使用される現在利用可能な論理パーティション・データ処理システムにおけるコンポーネントを示す図である。
【図４】トレース・データを処理するために使用される現在利用可能な論理パーティション・データ処理システムにおけるコンポーネントを示す図である。
【図５】本発明の好適な実施例に従ってセキュリティの脆弱性を排除するためにトレース・データを管理する構成を示す図である。
【図６】本発明の好適な実施例に従って、パーティションにおけるトレース・データに対する呼び出しに応答してトレース・データを戻すためのプロセスを表すフローチャートを示す図である。
【図７】本発明の好適な実施例に従ってトレース・データを転送するためのコードを示す図である。
【図１】
2005327288.tif 000003
【図２】
2005327288.tif 000004
【図３】
2005327288.tif 000005
【図４】
2005327288.tif 000006
【図５】
2005327288.tif 000007
【図６】
2005327288.tif 000008
【図７】
2005327288.tif 000009