説明

コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法、コンピュータ・システム及びコンピュータ・プログラム

【課題】コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム(OS)サービスを提供すること。
【解決手段】コンピュータ・システムは、少なくとも1つの計算ノードを含む。計算ノードは、一のOS及び一のハイパーバイザを含む。OSは、一のカーネルを含む。ハイパーバイザは、一のカーネル・プロキシ及び一のサービス・タイプの複数のOSサービスを含む。コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのOSサービスを提供するため、計算ノード上で、カーネル・プロキシが使用すべきサービス・タイプのOSサービスのうち1つを指定するカーネル・ポリシを設定し、カーネル・プロキシによって、指定されたOSサービスにアクセスする。コンピュータ・システムは、1つ以上のOSサービス・ノードを含む分散コンピュータ・システムとしても実装することができる。1つ以上のOSサービスは、OSサービス・ノード間に分散することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ処理に係り、さらに詳細に説明すれば、コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法、装置及びプログラムに係る。
【背景技術】
【0002】
1948年のEDVACコンピュータ・システムの開発は、コンピュータ時代の始めとしてしばしば引用される。その時以来、コンピュータ・システムは、非常に複雑な装置へ発展した。今日のコンピュータは、EDVACのような初期のシステムよりはるかに複雑となっている。コンピュータ・システムは、一般に、ハードウェア及びソフトウェア・コンポーネントの組み合わせ、アプリケーション・プログラム、オペレーティング・システム(以下「OS」と略記)、プロセッサ、バス、メモリ、入出力装置などを含む。半導体処理及びコンピュータ・アーキテクチャの進歩が高いコンピュータの性能をもたらし、精巧なソフトウェアがハードウェアの高い性能を活用するように発展した結果、今日のコンピュータ・システムは、わずか数年前よりはるかに強力になっている。
【0003】
高性能ハードウェアを利用するためにソフトウェアが発展した1つの領域は、OSである。初期のコンピュータは、どんな形式のOSも持っていなかった。システム管理者によってロードされるアプリケーションが、マシンを単独で使用していたからである。コンピュータを動作させるために、アプリケーションは、ハードウェアに直接にアクセスし、これを制御しなければならなかった。その後、サポート・コードのライブラリを備えたコンピュータが出現し、かかるライブラリが入出力のような動作を支援するためにアプリケーションへリンクされた。かかるライブラリは、最近のOSの起源であった。しかし、コンピュータは、依然として一度に単一のアプリケーションだけを稼働させるに過ぎなかった。最近のOSは、多数のアプリケーションを同時に稼働させることができる。さらに、最近のOSは、アプリケーションの開発を簡易化し、かつ1つのハードウェア・プラットフォームから他のハードウェア・プラットフォームへアプリケーションを移植する能力を援助するために、ハードウェアの抽象化層をアプリケーションに提供する。
【0004】
カーネルは、殆どのOSの主要部であって、システムの資源を管理したり、ハードウェア及びソフトウェア・コンポーネント間の通信を管理する。カーネルは、OSの主要部として、ハードウェア(特に、メモリ、プロセッサ、及びI/O)のための抽象化層を提供することにより、ハードウェアとソフトウェアが通信することを可能にする。さらに、カーネルは、プロセス間通信機構及びシステム・コールを通して、これらの機能をアプリケーション及び他のOSサービスに利用可能にする。
【0005】
かかるカーネル・タスクは、カーネルが異なれば、それぞれの設計及び実装に依存して、異なった態様で遂行される。モノリシック・カーネルの場合、全てのOSサービスは、同じメモリ領域内に存在し、当該メモリ領域を使用して実行される。このように、モノリシック・カーネルが同じアドレス空間内の全てのコードを実行することを試みるという理由で、モノリシックカーネル・アーキテクチャは、他の解決手段よりも設計及び実装が簡単であり、よく書けている場合は、非常に効率的である。モノリシック・カーネルの主要な欠点は、システム・コンポーネント間の依存関係である。大きなカーネルは、これを維持するのが非常に難しくなり、また、カーネルの1つの部分にバグが存在すると、システム全体をクラッシュさせることがある。
【0006】
マイクロカーネル・アーキテクチャの場合、カーネルは、最小のOSサービス(例えば、メモリ管理、マルチタスキング及びプロセス間通信)を実装するために、1セットのプリミティブ又はシステム・コールによって、ハードウェアに関する単純な抽象化層を提供する。ネットワーキングのようなカーネルによって通常提供されるものを含む他のサービスは、一般に、それ自体のアドレス空間を有するユーザ空間プログラム内で実装される。マイクロ・カーネルは、モノリシック・カーネルよりも維持するのがより簡単であるが、多くのシステム・コール及びコンテキスト・スイッチはシステムの性能を低下させることがある。
【0007】
OSを実装するために使用されるカーネル・アーキテクチャに拘わらず、最近のOS内に提供される1セットのOSサービスは、当該OSがインストールされるとき、固定されることが一般的である。すなわち、かかるOSは、当該OSによって管理されるハードウェア上で稼働するアプリケーションを考慮せずに、同じメモリ管理アルゴリズム、同じI/Oスケジューリング・アルゴリズム、同じネットワーキング・アルゴリズムなどを利用する。しかし、同じ1つのOSサービスを利用する場合、1つのアプリケーションが資源を効率的に利用できるのに対し、他のアプリケーションは資源を効率的に利用できない、という事態がしばしば生ずる。例えば、OS内にI/Oスケジューリングを提供する一のOSサービスは、入出力集中的なアプリケーションが資源を効率的に使用することを可能にするのに対し、入出力集中的でないアプリケーションが資源を効率的に使用することを困難にすることがある。このように、最近のOSは、アプリケーションを考慮せずに同じOSサービスを提供するという理由で、アプリケーションとハードウェアとの間の相互作用を効率的に管理しないことが多い。従って、当分野では、OS内にOSサービスを提供する態様を改良することが要請されている。
【0008】
高性能ハードウェアを利用するためにソフトウェアが発展した他の領域は、「ハイパーバイザ」と呼ばれるソフトウェア・ツールのセットである。ハイパーバイザは、ハードウェア上でOS層の下で稼働するシステム・ソフトウェアの層であって、ホスト・コンピュータ上で多数のOSが未変更のまま同時に稼働することを可能にする。ハイパーバイザが最初に開発された1970年代の初めには、企業の経費を削減することを目標として、それまで多数の部門に散在していた多数のコンピュータを単一の大型コンピュータ(メインフレーム)に統合して、多数の部門にサービスを提供することが一般に行われていた。ハイパーバイザは、多数のOSを同時に稼働させることによって、システムに対し頑強性と安定度をもたらした。1つのOSがクラッシュしても、他のOSは中断なしに作業を継続することができたからである。確かに、ハイパーバイザを利用することにより、安定した主実働システムを危険にさらすことなく、しかも開発者が作業すべき高価な第2及び第3のシステムを必要とすることなく、OSのベータ・バージョン又は実験的なバージョンを配備しデバッグすることが可能になった。
【0009】
ハイパーバイザは、各OSに1セットの仮想資源を提供することにより、ホスト・コンピュータ上で多数のOSが同時に稼働することを可能にする。これらの仮想資源は、各OSにコンピュータの実際の資源の一部を提供する。一般に、かかる資源の部分は、当該資源が使用可能な合計時間のタイム・スライスとして実装される。ハイパーバイザを使用すると、単一コンピュータ内の資源が分配され、その結果、当該コンピュータは、あたかも2つ以上の独立したコンピュータであるかのように見える。しかし、ホスト・コンピュータ上で多数のOSが同時に稼働することを可能にするためにハイパーバイザを利用することには、欠点がある。すなわち、ハイパーバイザを動作させるのに必要な管理オーバーヘッドは、OS及びアプリケーションを稼働させるのに利用可能な総合的な資源を減少させてしまう。かかる管理オーバーヘッドは、ハイパーバイザと各OSの間のプロセッサ・コンテキスト・スイッチの形で生じる。従って、当分野では、OSの或る機能をハイパーバイザ内で実装することにより、ハイパーバイザの管理オーバーヘッドを減少させることが要請されている。
【発明の開示】
【発明が解決しようとする課題】
【0010】
従って、本発明の目的は、コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのOSサービスを提供するための方法、装置及びプログラムを提供することである。
【課題を解決するための手段】
【0011】
前記コンピュータ・システムは、少なくとも1つの計算ノードを含む。前記計算ノードは、一のOS及び一のハイパーバイザを含む。前記OSは、一のカーネルを含む。前記ハイパーバイザは、一のカーネル・プロキシ及び一のサービス・タイプの複数のOSサービスを含む。コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのOSサービスを提供することは、前記計算ノード上で、前記カーネル・プロキシによって使用すべき前記複数のOSサービスのうち1つを指定するカーネル・ポリシを設定することと、前記カーネル・プロキシによって、前記指定されたOSサービスにアクセスすることを含む。
【0012】
また、前記コンピュータ・システムは、1つ以上のOSサービス・ノードを含む分散コンピュータ・システムとして実装することができる。1つ以上のOSサービスは、これらのOSサービス・ノードの間に分散することができる。また、前記カーネル・ポリシは、前記指定されたOSサービスを提供すべき1つのOSサービス・ノードを指定することができ、その場合、前記カーネル・プロキシによって、前記指定されたOSサービスにアクセスすることは、前記計算ノード上の前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスすることを含むことができる。
【0013】
本発明の前記及び他の目的、特徴及び利点は、添付の図面に示されている本発明の実施形態に関する以下の説明から明らかとなるであろう。なお、図面中の同じ参照番号は、本発明の実施形態の同じ部分を指すものとする。
【発明を実施するための最良の形態】
【0014】
以下、添付の図面を参照して、コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのOSサービスを提供するための、本発明の実施形態に従った方法、装置及びプログラムを説明する。図1は、ハイパーバイザ内にポリシ・ベースのOSサービスを提供するための、本発明の実施形態に従ったコンピュータ・システム100を示すネットワーク図である。コンピュータ・システム100は、計算ノード110を含む。計算ノード110は、OS108及びハイパーバイザ111を含む。OS108は、カーネル109を含む。ハイパーバイザ111は、カーネル・プロキシ120及び一のサービス・タイプの複数のOSサービス124を含む。一般に、コンピュータ・システム100は、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供するために、計算ノード110上で、ハイパーバイザ111内のカーネル・プロキシ120が使用すべき前記サービス・タイプの前記複数のOSサービス124のうち1つを指定するカーネル・ポリシ122を設定し、カーネル・プロキシ120によって、前記指定されたOSサービスにアクセスするように動作する。
【0015】
コンピュータ・システム100は、分散コンピュータ・システムとして実装される。分散コンピュータ・システムは、共通のタスクを遂行するために、ネットワークに接続された2つ以上の計算装置を使用するコンピュータ・システムである。分散コンピュータ・システム100は、ネットワーク101を通して互いにデータ通信を行うように接続された、計算ノード110と、OSサービス・ノード112、114、116と、管理ノード118とを含む。計算ノード110は、接続線140を通して、ネットワーク101に接続する。OSサービス・ノード112、114、116は、接続線142、144、146を通して、ネットワーク101にそれぞれ接続する。管理ノード118は、接続線148を通して、ネットワーク101に接続する。分散コンピュータ・システム100内の共通のタスクは、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供することを含む。
【0016】
計算ノード110は、ラック104内に取り付けられたノード102のうち1つを使用して実装される。各ノード102は、プログラム命令を実行する処理装置である。各ノード102は、1つ以上のプロセッサ及び当該プロセッサに結合されたメモリを含む。ノード102は、サーバ・シャシに取り付けられたブレード・サーバとして実装され、これらのサーバ・シャシは、ラック104に取り付けられる。しかし、ノード102をブレード・サーバとして実装するのは、説明上のものであって、本発明を限定するものではない。実際、ノード102は、ネットワークに接続されたワークステーションとして、またコンピュータ・クラスタを形成するように互いに接続されたコンピュータなどとして、実装することができる。
【0017】
計算ノード110は、カーネル・プロキシ120及びカーネル・ポリシ122を含む、ハイパーバイザ111を有するように構成されたノードである。ハイパーバイザ111は、ハードウェア上でOS層の下で稼働するシステム・ソフトウェアの層であって、ホスト・コンピュータ上で多数のOSが未変更のまま同時に稼働することを可能にする。ハイパーバイザ111は、各OSに1セットの仮想資源を提供するために、論理区画(以下「LPAR」と略記)を使用して各OSにかかる資源を割り振る。LPARは、1セットのデータ構造及びサービスであって、単一コンピュータ内の資源の分配を可能にすることにより、あたかも当該コンピュータが2つ以上の独立したコンピュータであるかのように機能させる。
【0018】
多数のOSが同時に稼働することを可能にするために、ハイパーバイザ111は、仮想プロセッサ115をOS108、ゲストOS117に割り当てるとともに、計算ノード110の物理プロセッサ上で仮想プロセッサ115をスケジュールする。仮想プロセッサは、LPARに対するプロセッサ時間の割り当てを実装するためのサブシステムである。物理プロセッサの共有プールは、LPARに対する部分的な物理プロセッサの(タイム・スライスによる)割り当てをサポートする。このようにタイム・スライスで共有される部分的な物理プロセッサは、「仮想プロセッサ」と呼ばれる。スレッドが仮想プロセッサのタイム・スライス上で稼働している場合、スレッドは仮想プロセッサ上で稼働中であると称する。サブプロセッサの複数の区画は、LPAR内で稼働中のOSには見えない態様で、1セットの仮想プロセッサ間で物理プロセッサをタイム・シェアする。OS内のマルチプログラミングでは、スレッドは、割り込み禁止のモードで稼働することにより、物理プロセッサの制御を維持することができる。これに対し、サブプロセッサ区画では、スレッドは、その仮想プロセッサのタイム・スライスの終わりにハイパーバイザによって依然として優先使用され、その結果、物理プロセッサを異なる仮想プロセッサに利用可能にすることができる。
【0019】
ハイパーバイザ111は、アプリケーション106及びOS108の実行環境を提供する、LPAR103に仮想資源を割り振る。さらに、ハイパーバイザ111は、アプリケーション107及びゲストOS117の実行環境を提供する、LPAR105に仮想資源を割り振る。各アプリケーション106、107は、ユーザ・レベルのデータ処理を実装する1セットのプログラム命令である。各アプリケーション106、107は、それぞれのプログラム命令が単一の計算ノード上で実行されるような独立型のアプリケーションでもよいし、あるいはそれぞれのプログラム命令の各部分が他の計算ノード上で実行中の他の部分と直列又は並列に実行されるような分散型のアプリケーションでもよい。
【0020】
ゲストOS117は、計算ノード110上のアプリケーション107の実行を制御する。ゲストOS117は、ハイパーバイザ111によってLPAR105に割り振られた仮想資源を管理するシステム・ソフトウェアである。ゲストOS117が遂行する基本的作業は、仮想メモリの制御及び割り振り、命令の処理の優先順位付け、仮想化入出力装置の制御、ネットワーキングの支援、仮想化ファイル・システムの管理などを含む。
【0021】
同様に、OS108は、計算ノード110の上のアプリケーション106の実行を制御する。アプリケーション106は、カーネル109を通して、OS108によって提供される資源にアクセスする。カーネル109は、OS108のコア・コンポーネントであって、システムの資源を管理するとともに、ハイパーバイザ111によって提供される仮想資源とアプリケーションとの間の通信を管理する。カーネル109は、アプリケーションに仮想ハードウェア資源の抽象化層を提供することにより、当該アプリケーションがかかる仮想ハードウェア資源を利用することを可能にする。カーネル109は、プロセス間通信機構及びカーネルのアプリケーション・プログラム・インタフェース(以下「API」と略記)119を通して、これらの抽象化層をユーザ・レベルのアプリケーションに利用可能にする。
【0022】
ハイパーバイザ111は、カーネル・プロキシ120及びOSサービス124を使用して、OS108の実装の多くを行うように構成される。カーネル・プロキシ120は、一般に、OSのカーネル内に実装されるOSサービスを提供するシステム・ソフトウェアである。OS108がハイパーバイザ111内に構成されるサービスを必要とする場合、カーネル109は、カーネル・プロキシ120が当該サービスを遂行することを要求する。カーネル109は、プロセス間通信を使用するか、又はカーネル・プロキシAPI121を通して、カーネル・プロキシ120にアクセスする。OS108の実装をできるだけ多く行うようにハイパーバイザ111を構成すると、非常に軽量のOSを有利に提供することができる。
【0023】
カーネル・プロキシ120とOSサービス124との間の関係は、マイクロカーネル・アーキテクチャに基づいて作られる。すなわち、カーネル・プロキシ120は、メモリ管理、プロセス管理及びプロセス間通信のようなOSサービスの基本タイプの実装を含む。しかし、他のOSサービス124(例えば、ネットワーキング、割り込み処理、I/Oスケジューリング、デバイス・ドライバ、ファイルシステム・サービスなど)は、別個のOSコンポーネントを使用して実装され、当該各コンポーネントは、カーネル・プロキシ120とは異なるスレッドを有する。カーネル・プロキシ120は、プロセス間通信又はサービスAPI125へのシステム・コールを使用して、これらのOSサービス124にアクセスする。
【0024】
各OSサービス124は、カーネル・プロキシ120それ自体の内部で実装されないサービス・タイプを実装するか、又はカーネル・プロキシ120によって既に提供されているサービス・タイプの特殊バージョンを実装するシステム・ソフトウェアである。この点を説明するため、カーネル・プロキシ120がファイルシステム・サービス・タイプのいかなるサービスをも実装していない、という第1の例を考察する。この第1の例では、OSサービス124のうち1つは、UNIX(登録商標)ファイル・システム用のファイルシステム・サービスを実装し、第2のOSサービス124は、Reiserファイル・システム用のファイルシステム・サービスを実装することができる。カーネル・プロキシ120は、ハイパーバイザ111内に構成されるカーネル・ポリシ122に依存して、UNIX(登録商標)ファイル・システム又はReiserファイル・システムを使用して、ファイルシステム・サービスを提供するであろう。さらに、カーネル・プロキシ120が一般的なメモリ管理サービスを実装している、という第2の例を考察する。この第2の例では、OSサービス124のうち1つは、集中的な入出力動作に適合したメモリ管理サービスを実装することができ、その結果、カーネル・プロキシ120は、カーネル・ポリシ122の構成に依存して、カーネル・プロキシ120内に実装された一般的なメモリ管理アルゴリズムを使用する代わりに、集中的な入出力動作に適合したメモリ管理サービスを使用することができる。
【0025】
各OSサービス124は、特定サービス・タイプのOSサービスを提供する。OSサービス124によって提供されるサービス・タイプは、例えば、タスク・スケジューラ、ファイル・システム、メモリ管理、デバイス・ドライバ、I/Oスケジューラ、割り込み/信号処理、セキュリティ、ジョブ・サブミッション、tty(teletypewriter)処理などを含む。同じサービス・タイプのOSサービス124は、同じAPIを有する。すなわち、特定のサービス・タイプを有する各OSサービス124用のサービスAPI125は、同じ1セットのメンバ・メソッド及びパラメータを有しており、カーネル・プロキシ120はこれを使用してOSサービス124にアクセスすることができる。各サービス・タイプのサービスが同じサービスAPIを有しているという理由で、カーネル・プロキシ120は、特定のサービス・タイプについてカーネル・ポリシ122内でどのOSサービスが指定されるかに拘わらず、同じAPIを使用して、カーネル・ポリシ122内で指定されたOSサービスにアクセスすることができる。
【0026】
図1のコンピュータ・システム100では、1つ以上のOSサービス124は、OSサービス・ノード112、114、116の間に分散される。すなわち、2つ以上のOSサービス124を実装するプログラム命令は、OSサービス・ノード112、114、116上に存在する。OSサービス132、134、136用の対応するOSサービス124は、各OSサービス132、134、136を実装するプログラム命令のコピーとして実装することができる。また、OSサービス132、134、136用の対応するOSサービス124は、OSサービス・ノード112、114、116上のOSサービス132、134、136にアクセスするデータ通信サブシステムを使用して実装することができる。かかるデータ通信サブシステムは、例えば、ウェブ・サービス・エンジンとして実装することができるし、リモート・プロシージャ・コールを使用してOSサービス・ノード112、114、116上のOSサービス132、134、136にアクセスする、計算ノード110の上のCORBAオブジェクトとして、あるいはMPIライブラリなどを使用して実装することができる。
【0027】
「CORBA」は、「Common ObjectRequest Broker Architecture」の略称であり、ObjectManagement Group(OMG)によって策定された相互運用可能な企業アプリケーション用の仕様を指す。CORBAは、1991年にOMGによって最初に公表されたリモート・プロシージャ・コールのための仕様である。CORBAは、通常のリモート・プロシージャ・コールには存在しない機能をサポートするが、リモート・プロシージャ・コールを行うための一種のオブジェクト指向の方法と考えることができる。CORBAは、オブジェクトのインタフェースを記述するために、宣言型言語であるインタフェース定義言語(IDL)を使用する。IDLで書かれたインタフェース記述は、クライアント側の「スタブ」及びサーバ側の「スケルトン」を生成するようにコンパイルされる。この生成コードを使用すると、C++又はJava(登録商標)のようなオブジェクト指向プログラミング言語によって行われる遠隔メソッドの呼び出しは、ローカル・オブジェクト内のローカル・メンバメソッドの呼び出しのように見える。
【0028】
「MPI」は、「Message PassingInterface」の略称であり、既存の並列通信ライブラリ、すなわち並列コンピュータ上のデータ通信用のプログラム命令のモジュールを指す。本発明の実施形態に有用な既存の並列通信ライブラリの例には、MPI及び「Parallel Virtual Machine」(PVM)ライブラリがある。PVMは、テネシー大学、オークリッジ国立研究所及びエモリー大学によって開発された。MPIは、MPIフォーラム(MPI仕様を定義及び維持する多くの組織からの代表者で構成されたオープン・グループ)によって公表される。MPIは、分散メモリ型の並列コンピュータ上で並列プログラムを稼働させているノード間の通信を行うための業界標準である。説明の便宜上、本明細書では、MPIの用語を使用することもあるが、このことは、本発明を限定するものではない。
【0029】
各OSサービス・ノード112、114、116は、ラック104に取り付けられたノード102を使用して実装される。各OSサービス・ノード112、114、116は、計算ノード110上にインストールされたハイパーバイザ111に対し、OSサービスを提供するノードである。各OSサービス・ノード112、114、116は、1つ以上の計算ノード上で稼働中の1つ以上のハイパーバイザに対し、1つ以上のOSサービスを提供することができる。しかし、多くのノードを備えた分散コンピュータ・システムでは、各OSサービス・ノード112、114、116は、当該システム内の豊富なノードに起因して、1つだけのOSサービスを提供するのが普通である。図1の例では、OSサービス・ノード112はカーネル・プロキシ120にOSサービス132を提供し、OSサービス・ノード114はカーネル・プロキシ120にOSサービス134を提供し、OSサービス・ノード116はカーネル・プロキシ120にOSサービス136を提供する。
【0030】
カーネル・プロキシ120にOSサービスを提供するために、各OSサービス・ノード112、114、116は、それぞれの上にOSサービス・サーバをインストールしている。すなわち、OSサービス・ノード112はOSサービス・サーバ133を含み、OSサービス・ノード114はOSサービス・サーバ135を含み、OSサービス・ノード116はOSサービス・サーバ137を含む。各OSサービス・サーバ133、135、137は、ハイパーバイザ111によって送信された要求に応答して、又はシステム管理者からの命令を受け取ることに応答して、ハイパーバイザ111にOSサービスを提供するソフトウェア・コンポーネントである。各OSサービス・サーバ133、135、137は、要求されたOSサービスを実装するプログラム命令をハイパーバイザ111に送信するとともに、ハイパーバイザ111をインストールした計算ノード110がこれらのプログラム命令を実行するのを許可することにより、ハイパーバイザ111に当該OSサービスを提供することができる。また、各OSサービス・サーバ133、135、137は、要求されたOSサービスを実装するプログラム命令を実行するように、OSサービス・サーバをインストールしたOSサービス・ノードに命令することにより、当該OSサービスを提供することができる。ハイパーバイザ111のカーネル・プロキシ120は、各OSサービス・サーバ133、135、137と通信するために、CORBAオブジェクトの呼び出し用メンバ・メソッドを使用するか、MPIライブラリなどを使用することができる。
【0031】
前述のように、ハイパーバイザ111は、特定のサービス・タイプ用の2つ以上のOSサービス124を含む。例えば、ハイパーバイザ111は、コンピュータ・システム100の構成に依存して、カーネル・プロキシ120が使用すべきファイルシステム・サービスの2つの異なる実装を含むことができる。他の例では、ハイパーバイザ111は、アプリケーション106の必要性に依存して、メモリ管理サービスの2つの異なる実装を含むことができる。特定のサービス・タイプについて複数のOSサービスを有すると、計算ノード110のハードウェア及びソフトウェア環境に従って、OSのサービス・アルゴリズムを柔軟に最適化することができる。
【0032】
カーネル・ポリシ122は、OSサービス124のうち1つをカーネル・プロキシ120によって使用されるOSサービスのタイプにマップするテーブルである。一般に、カーネル・ポリシ122は、計算ノード110上の実行のために構成されたアプリケーション106によるノード資源の利用を最適化するように、計算ノード110上で設定される。カーネル・プロキシ120は、カーネル・ポリシ122を使用することにより、特定のサービス・タイプについてハイパーバイザ111内で使用すべきOSサービスを識別する。OSサービス124が計算ノード110上にローカルに存在するか、又はOSサービス・ノード112、114、116のような他のノード上に分散されるかどうかに拘わらず、カーネル・ポリシ122は、ハイパーバイザ111内で使用すべき特定のサービス・タイプの1つのOSサービスを指定する。さらに、カーネル・ポリシ122内で指定されたOSサービスがOSサービス・ノード112、114、116のうち1つに分散される場合、カーネル・ポリシ122は、当該指定されたOSサービスを提供すべきOSサービス・ノードを指定する。カーネル・ポリシ122を使用すると、カーネル・プロキシ120は、カーネル・ポリシ122内で指定されたOSサービスにアクセスすることにより、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供することができる。
【0033】
しばしば、カーネル・ポリシ122は、ハイパーバイザ111内で使用される1つのサービス・タイプ用のOSサービスを指定しないか、又はカーネル・ポリシ122内で指定されたOSサービスにアクセスできないこともある。従って、ハイパーバイザ111は、デフォルトOSサービス126を含む。このデフォルトOSサービス126は、カーネル・ポリシ122が特定のサービス・タイプ用のOSサービスを指定しないか、又はカーネル・ポリシ122内で指定されたOSサービスにアクセスすることができないようなときに、カーネル・プロキシ120が使用することができる特定のサービス・タイプのOSサービスである。この点を説明するため、カーネル・ポリシ122がハイパーバイザ111によって使用すべきファイルシステム・サービスを指定せず、カーネル・プロキシ120がファイルシステム・サービスそれ自体を実装せず、そしてデフォルトOSサービス126がUNIX(登録商標)ファイル・システムを実装している、という例を考察する。この例では、カーネル・プロキシ120がファイルシステム・サービスを実装せず、ファイルシステム・サービスがカーネル・ポリシ122内で指定されないという理由で、カーネル・プロキシ120は、UNIX(登録商標)ファイル・システムを実装するデフォルトOSサービス126を使用するであろう。カーネル・プロキシ120は、プロセス間通信又はデフォルトOSサービスAPI127を使用して、デフォルトOSサービス126にアクセスすることができる。
【0034】
分散コンピュータ・システム100は、管理ノード118を通して、システム管理者130によって構成される。管理ノード118は、コンピュータ・システム100の構成を処理する計算装置である。管理ノード118は、ラック104に取り付けられたノード102のうち1つとして、ノード102に接続されたワークステーション・ネットワークとして、又は当業者には周知の他のコンピュータとして実装することができる。
【0035】
図1のコンピュータ・システム100では、管理ノード118は、その上に管理モジュール128をインストールしている。管理モジュール128は、システム管理者130がそれを通してコンピュータ・システム100を構成するソフトウェア・コンポーネントである。管理モジュール128は、システム管理者130がコンピュータ・システム100を構成できるようにするため、システム管理者130が管理モジュール128と対話するためのユーザ・インタフェースを提供するとともに、システム管理者130によって1つ以上の計算ノード(例えば、計算ノード110)上に提供されたハイパーバイザ111、OS108、ゲストOS117、アプリケーション106、107を構成する。管理モジュール128は、カーネル・プロキシ120が使用すべきサービス・タイプのOSサービス124のうち1つを指定するカーネル・ポリシ122を計算ノード110上に設定することにより、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供するための1セットのプログラム命令を含む。
【0036】
コンピュータ・システム100を構成するサーバ及び他の装置の配置は、説明上のものであって、本発明を限定するものではない。当業者には明らかなように、本発明の種々の実施形態に従ったデータ処理システムは、図1には示されていない追加のサーバ、ルータ、他の装置及びピア・ツー・ピア・アーキテクチャを含むことができる。当業者には明らかなように、かかるデータ処理システム内のネットワークは、伝送制御プロトコル(TCP)、インターネット・プロトコル(IP)、ハイパーテキスト転送プロトコル(HTTP)、無線アクセス・プロトコル(WAP)、ハンドヘルド・デバイス伝送プロトコル(HDTP)、MPIプロトコルなどを含む、多くのデータ通信プロトコルをサポートすることができる。本発明の種々の実施形態は、図1に示されたものに加えて、種々のハードウェア・プラットフォーム上で実装することができる。例えば、コンピュータ・システム100は、IBM社の BlueGene/L のような並列コンピュータとしても実装することができる。
【0037】
本発明に従ってコンピュータ・システム上のハイパーバイザ内にポリシ・ベースのOSサービスを提供することは、一般に、コンピュータを用いて、すなわち自動化計算機械を用いて実装される。例えば、図1のコンピュータ・システム100では、全てのノードは、少なくともコンピュータとしてある程度まで実装される。従って、さらなる説明のために、図2に示されている計算ノード110から成る自動化計算機械は、本発明の実施形態に従って、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供するのに有用である。図2の計算ノード110は、少なくとも1つのプロセッサ(CPU)156及びランダム・アクセス・メモリ(RAM)168を含み、このRAM168は、高速メモリ・バス166及びバス・アダプタ158を通して、プロセッサ156及び計算ノード110の他のコンポーネントに接続される。
【0038】
RAM168内には、ハイパーバイザ111、アプリケーション106、107、OS108、ゲストOS117が格納される。ハイパーバイザ111は、アプリケーション106及びOS108用の実行環境を提供する、LPAR103に仮想資源を割り振る。OS108はカーネル109を含む。さらに、ハイパーバイザ111は、アプリケーション107及びゲストOS117用の実行環境を提供する、LPAR105に仮想資源を割り振る。各LPAR103、105は、1セットのデータ構造及びサービスであって、単一コンピュータ内の資源の分配を可能にすることにより、あたかも当該コンピュータが2つ以上の独立したコンピュータであるかのように機能させる。
【0039】
図2のハイパーバイザ111は、仮想プロセッサ115、カーネル・プロキシ120、カーネル・ポリシ122、OSサービス124及びデフォルトOSサービス126を含む。カーネル・ポリシ122は、OSサービス124のうち1つをカーネル・プロキシ120によって使用されるOSサービスのタイプにマップするテーブルである。仮想プロセッサ115は、LPARへのプロセッサ時間の割り当てを実装するサブシステムである。アプリケーション106、107、OS108、ゲストOS117、カーネル109、ハイパーバイザ111、カーネル・プロキシ120、OSサービス124及びデフォルトOSサービス126は、ソフトウェア・コンポーネントである。すなわち、かかるソフトウェア・コンポーネントの各々は、図1を参照して既に説明したように、計算ノード110に関して動作するプログラム命令である。本発明に従って改良することができるOSには、UNIX(登録商標)、Linux(商標)、MicrosoftNT(商標)、IBM社のAIX(商標)、IBM社のi5/OS(商標)などがある。図2では、OS108、ゲストOS117、アプリケーション106、107、LPAR103、105、及びハイパーバイザ111が、それぞれRAM168内に格納されるように示されているが、かかるソフトウェア・コンポーネントの多くは、不揮発性メモリ(例えば、ディスク・ドライブ170)にも格納される。
【0040】
バス・アダプタ158は、高速バスであるフロントサイド・バス162及びメモリ・バス166用のドライブ・エレクトロニクスに加えて、比較的低速の拡張バス160用のドライブ・エレクトロニクスを含む、ハードウェア・コンポーネントである。計算ノード110に有用なバス・アダプタ158の例には、インテル社のノース・ブリッジ、メモリ・コントローラ・ハブ、サウス・ブリッジ及びI/Oコントローラ・ハブがある。計算ノード110に有用な拡張バス160の例には、PCIバス及びPCIExpresバスがある。
【0041】
図2には示されていないが、バス・アダプタ158は、ビデオ・アダプタと計算ノード110の他のコンポーネントの間のデータ通信をサポートするビデオ・バス用のドライブ・エレクトロニクスを含んでいてもよい。かかるビデオ・コンポーネントが図2に示されていない理由は、一般に、計算ノード110がブレード・サーバとして実装されていて、専用のビデオ・サポートを持たない並列コンピュータ内のサーバ・シャシ又はノードに取り付けられることにある。しかし、計算ノード110が、かかるビデオ・コンポーネントを含んでもよいことは明らかであろう。
【0042】
ディスクドライブ・アダプタ172は、拡張バス160及びバス・アダプタ158を通して、プロセッサ156及び計算ノード110の他のコンポーネントに結合される。ディスクドライブ・アダプタ172は、ディスク・ドライブ170の形態を有する不揮発性のデータ記憶装置を計算ノード110に接続する。計算ノード110に有用なディスクドライブ・アダプタ172の例には、統合ドライブ・エレクトロニクス(IDE)アダプタ、小型コンピュータ・システムインタフェース(SCSI)アダプタなどがある。さらに、計算ノード110用の不揮発性メモリとして、光ディスク・ドライブ、電気的消去再書き込みROM(いわゆる「EEPROM」あるいは「フラッシュ」メモリ)などを実装することができる。
【0043】
1つ以上の入出力(I/O)アダプタ178は、ディスプレイ装置への出力を制御したり、キーボードやマウスのようなユーザ入力装置181からのユーザ入力を制御するために、例えばソフトウェア・ドライバ及びハードウェアを通して、ユーザ向きの入出力を実装する。図2には示されていないが、他の実施形態に従った計算ノードは、I/Oアダプタ178の1例として、ディスプレイ装置へグラフィック出力を供給するように特別に設計されたビデオ・アダプタを含むことができる。一般に、かかるビデオ・アダプタは、高速のビデオ・バス、バス・アダプタ158及びフロントサイド・バス162を通して、プロセッサ156に接続される。
【0044】
通信アダプタ167は、他のコンピュータ182及びデータ通信ネットワーク101とのデータ通信を行うためのものである。かかるデータ通信は、RS−232接続を通して、ユニバーサル・シリアル・バス(USB)のような外部バスを通して、IPデータ通信ネットワークのようなデータ通信ネットワークなどを通して、行うことができる。通信アダプタは、データ通信のハードウェア・レベルを実装し、これを通して、1つのコンピュータは、直接に又はデータ通信ネットワークを通して、データを他のコンピュータに送信する。計算ノード110に有用な通信アダプタ167の例には、有線式ダイアルアップ通信用のモデム、有線式データ通信ネットワーク通信用のIEEE 802.3イーサネット(登録商標)・アダプタ及び無線式データ通信ネットワーク通信用のIEEE 802.11bアダプタがある。
【0045】
以上、図2を参照して計算ノード110を説明したが、これと同様な自動化計算機械が、ハイパーバイザ111内にポリシ・ベースのOSサービスを提供するのに有用なOSサービス・ノード及び管理ノードから構成されることに留意すべきである。かかるOSサービス・ノード及び管理ノードは、図2の計算ノード110と同様に、1つ以上のプロセッサ、バス・アダプタ、バス、RAM、通信アダプタ、I/Oアダプタ、ディスクドライブ・アダプタなどを含む。
【0046】
次に、図3を参照して、ハイパーバイザ111によるLPARへの仮想プロセッサの割り振りをさらに詳細に説明する。図3は、ハイパーバイザ111で構成された、本発明の実施形態に従った計算ノード300を示す機能ブロック図である。
【0047】
計算ノード300は、LPAR302及びLPAR304を含む。計算ノード300内に含まれる2つのOS30及びOS308は、LPAR302及びLPAR304内にそれぞれ常駐する。計算ノード300は、6つの論理プロセッサ(LP)320〜325を含み、そのうちの2つはLPAR302内のOS308用のものであり、他の4つはLPAR304内のOS308用のものである。論理プロセッサは、実行すべきスレッドをスケジュールするためのOSの構造である。論理プロセッサは、スレッドの実行を行うことができるプロセッサの資源の一部を表す。6つのスレッド(T)310〜315が、論理プロセッサ当たり1つのスレッドずつ、6つの論理プロセッサ320〜325上でそれぞれ稼働する。計算ノード300は、ハイパーバイザ111及び4つの仮想プロセッサ(VP)330〜333を含み、そのうちの2つの仮想プロセッサ330及び331はLPAR302に割り当てられ、他の2つの仮想プロセッサ332及び333はLPAR304に割り当てられる。
【0048】
さらに、計算ノード300は、3つの物理プロセッサ340、342、344を含む。この例では、物理プロセッサ340、342、344は、処理単位に応じて共有される(但し、1.0の処理単位は、1つの物理プロセッサの処理能力を表す)。この例では、3つの物理プロセッサ340、342、344の処理能力は、以下のようにLPARに配分される。
【0049】
1.物理プロセッサ340の全ての処理能力が、仮想プロセッサ330に割り当てられる。その結果、論理プロセッサ320は、物理プロセッサ340の全ての処理能力を利用することができる。
【0050】
2.物理プロセッサ342の処理能力の半分が、仮想プロセッサ331に割り当てられる。その結果、論理プロセッサ321は、(タイム・スライスにより)物理プロセッサ342の処理能力の半分を利用することができる。
【0051】
3.物理プロセッサ342の処理能力の他の半分が、仮想プロセッサ332に割り当てられる。仮想プロセッサ332が割り当てられるLPAR304では、仮想プロセッサ332に対応する2つの論理プロセッサ322及び323が、同時的なマルチスレッディング・モードで稼働中である。その結果、論理プロセッサ322及び323の各々は、(タイム・スライスにより)物理プロセッサ342の処理能力の4分の1をそれぞれ利用することができる。
【0052】
4.物理プロセッサ344の全ての処理能力が、仮想プロセッサ333に割り当てられる。仮想プロセッサ333が割り当てられるLPAR304では、仮想プロセッサ333に対応する2つの論理プロセッサ324及び325が、同時的なマルチスレッディング・モードで稼働中である。その結果、論理プロセッサ324及び325の各々は、(タイム・スライスにより)物理プロセッサ344の処理能力の半分をそれぞれ利用することができる。
【0053】
計算ノード300内の物理プロセッサ、仮想プロセッサ及び論理プロセッサの数、配置及び割り当ては、説明上のものであって、本発明を限定するものではない。本発明の実施形態に従った計算ノードは、多数のLPARをサポートすることができ、物理プロセッサ、仮想プロセッサ及び論理プロセッサの任意の数、配置又は割り当てを含むことができる。
【0054】
図4は、本発明の実施形態に従った方法のフローチャートを示す。図4の例では、コンピュータ・システムは、少なくとも1つの計算ノードを含む。計算ノードは、OS及びハイパーバイザを含む。OSは、カーネルを含む。ハイパーバイザは、カーネル・プロキシ120及び一のサービス・タイプの複数のOSサービスを含む。
【0055】
図4の方法は、計算ノード上で、カーネル・プロキシ120が使用すべきサービス・タイプのOSサービスのうち1つを指定するカーネル・ポリシ122を設定するステップ400を含む。カーネル・ポリシ122は、OSサービスのうち1つをカーネル・プロキシ120によって使用されるOSサービスのタイプにマップするテーブルである。図4の例では、カーネル・ポリシ122の各レコードは、特定のサービス・タイプについてカーネル・プロキシ120がどのOSサービスを使用すべきかを識別する。かかる識別を行うため、カーネル・ポリシ122の各レコードは、OSサービス識別子402及びサービス・タイプ404を含む。カーネル・ポリシ122内で指定されるOSサービス・タイプ404の例には、タスク・スケジューラ、ファイル・システム、メモリ管理、デバイス・ドライバ、I/Oスケジューラ、割り込み/信号処理、セキュリティ、ジョブ・サブミッション、tty(teletypewriter)処理などがある。本発明の実施形態に従ったカーネル・ポリシ122の例については、以下の表を参照されたい。
【0056】
【表1】

【0057】
表1のカーネル・ポリシ122では、OSサービス識別子402の値「UFS_Service」をサービス・タイプ404の値「File_System」に関連づけることは、カーネル・プロキシ120がファイルシステム・サービス・タイプにアクセスする必要があるとき、カーネル・プロキシ120がUNIX(登録商標)ファイル・システムを実装するOSサービスを使用することを指定する。OSサービス識別子402の値「Round_Robin_MM_Algorithm」をサービス・タイプ404の値「Memory_Management」に関連づけることは、カーネル・プロキシ120がメモリ管理サービス・タイプにアクセスする必要があるとき、カーネル・プロキシ120がラウンドロビン・アルゴリズムを実装するOSサービスを使用することを指定する。OSサービス識別子402の値「Limited_I/O_Access」をサービス・タイプ404の値「I/O_Scheduler」に関連づけることは、カーネル・プロキシ120がI/Oスケジューラ・サービス・タイプを使用するとき、カーネル・プロキシ120が制限されたI/Oアクセスを実装するOSサービスを使用することを指定する。表1のカーネル・ポリシ122は、説明用のものであって、本発明を限定するものではない。本発明の実施形態では、当業者には周知の他のカーネル・プロキシも使用することができる。
【0058】
図4の設定ステップ400は、管理モジュール128において、システム管理者130からOSサービスとサービス・タイプとの間のマッピングを受け取り、管理モジュール128によって、当該マッピングに従ったカーネル・ポリシ122を計算ノード上で作成することにより、実施することができる。管理モジュール128は、計算ノードを含むコンピュータ・システムを構成するためにシステム管理者130が使用することができる、ソフトウェア・コンポーネントである。カーネル・ポリシ122を作成するための管理モジュール128をインストールしている特定の計算ノードは、一般に、当該管理モジュール128によって提供されるユーザ・インタフェースを通して、システム管理者130によって指定される。管理モジュール128は、この計算ノード上に直接インストールするか、又はこの計算ノードに接続された他のコンピュータ・ネットワークにインストールすることができる。管理モジュール128は、共有メモリ空間、CORBAフレームワーク、JTAGネットワーク、ウェブ・サービス、MPIライブラリなどを使用して実装されたデータ通信接続を通して、計算ノード上にカーネル・ポリシ122を作成することができる。
【0059】
「JTAG」は、バウンダリ・スキャンを使用してプリント配線回路ボードをテストするために使用される、「Standard Test Access Port and Boundary-Scan Architecture 」と題する、IEEE 1149.1標準の俗称である。JTAGは、非常に広汎に使用されているので、バウンダリ・スキャンと殆ど同義である。JTAGは、プリント配線回路ボードだけでなく、集積回路のバウンダリ・スキャンを行うためにも使用され、さらに、組み込みシステムをデバッグするための機構として、当該システムへの便利な「バック・ドア」を提供するのに有用である。JTAGネットワークを使用すると、管理モジュール128は、本発明の実施形態に従った、計算ノード内のプロセッサ・レジスタ及びメモリを効率的に構成することができる。
【0060】
図4の指定ステップ401は、カーネル・プロキシ120によって、カーネル・プロキシ120が使用すべきサービス・タイプ405を指定する。カーネル・プロキシ120は、実行フローに沿った特定の点でカーネル・プロキシ120を実装するプログラム命令内にサービス・タイプ405を保持する命令を含めることにより、ハイパーバイザ内の使用すべきサービス・タイプ405を指定することができる。例えば、カーネル・プロキシ120用の実行フローに沿った特定の点で、カーネル・プロキシ120を実装するプログラム命令は、次の命令を表す機械コードを含むことができる。
【0061】
Execute_Service(File_System);
【0062】
この命令内の機能「Execute_Service」は、カーネル・プロキシ120に対し、「File_System」の値を有するサービス・タイプ405についてカーネル・ポリシ122内で指定されたOSサービスを実行するように命令する機能である。この命令をカーネル・プロキシ120を実装するプログラム命令内に含めると、ハイパーバイザ111がファイルシステム・サービス・タイプのサービスを使用することを指定する。この命令は、説明用のものであって、本発明を限定するものではない。本発明の実施形態では、当業者には周知の他の命令も使用することができる。
【0063】
図4の検索ステップ403は、カーネル・プロキシ120によって、指定されたサービス・タイプ405に依存して、カーネル・ポリシ122から指定されたOSサービス407を検索することを含む。検索ステップ403は、カーネル・ポリシ122内で、指定されたサービス・タイプ405と同じ値を有するサービス・タイプ404に関連するOSサービス識別子402を検索することにより、実施することができる。
【0064】
図4の判定ステップ406は、カーネル・プロキシ120によって、カーネル・プロキシ120が指定されたOSサービス407にアクセスすることができるか否かを判定する。判定ステップ406は、指定されたOSサービス407用のAPIの関数を呼び出すことにより、実施することができる。もし、この関数呼び出しがカーネル・プロキシ120に対しエラーを返すのであれば、カーネル・プロキシ120は、指定されたOSサービスにアクセスすることができない。一方、この関数呼び出しがカーネル・プロキシ120に対しエラーを返さなければ、カーネル・プロキシ120は、指定されたOSサービスにアクセスすることができる。前述のように、同じサービス・タイプ用のOSサービスは、同じAPIを有することができる。各サービス・タイプ用のAPIは、カーネル・プロキシ120を実装するプログラム命令内にコード化することができる。
【0065】
図4の実行ステップ408は、カーネル・プロキシ120が指定されたOSサービス407にアクセスすることができない場合、計算ノードによって、サービス・タイプ404のデフォルトOSサービスを実装するプログラム命令を実行することを含む。実行ステップ408は、デフォルト・サービス・テーブル412内で、サービス・タイプ404に関連するデフォルトOSサービス識別子414を検索するとともに、このデフォルトOSサービス識別子414によって表わされるデフォルトOSサービス用のAPIの関数を呼び出すことにより、実施することができる。デフォルト・サービス・テーブル412は、カーネル・ポリシ122に類似している。デフォルト・サービス・テーブル412の各レコードは、特定のサービス・タイプについてハイパーバイザ内のどのデフォルトOSサービスを使用すべきかを識別する。デフォルト・サービス・テーブル412の各レコードは、デフォルトOSサービス識別子414及びサービス・タイプ404を含む。デフォルトOSサービスは、図4のデフォルト・サービス・テーブル412内で指定されるが、かかる実施形態は、説明用のものであって、本発明を限定するものではない。他の実施形態では、カーネル・ポリシ122内のフィールドを使用して、特定のサービス・タイプについてOS内の使用すべきデフォルトOSサービスを指定することができるし、あるいは、各サービス・タイプ用のデフォルト・サービスをカーネル・プロキシ120それ自体にコード化することができる。
【0066】
図4のアクセス・ステップ410は、カーネル・プロキシ120によって、指定されたOSサービス407にアクセスすることを含む。アクセス・ステップ410は、指定されたOSサービス407用のAPIの関数を呼び出すことにより、実施することができる。しかし、かかる実施形態は、説明用のものであって、本発明を限定するものではない。他の実施形態では、管理モジュール128は、カーネル・ポリシ122に従って、カーネル・プロキシ120のコード内にある入口及び出口フックを修正することにより、実行フロー中のカーネル・プロキシ120のコード内の適切な点で、プロセッサの制御がカーネル・プロキシ120からOSサービスまで移動されるようにすることができる。そのような例では、アクセス・ステップ410は、単にカーネル・プロキシ120を実装するプログラム命令を実行することにより、実施することができる。
【0067】
前述のように、OSサービスは、分散コンピュータ・システム内の1つ以上のOSサービス・ノード間に分散することができる。このような場合、アクセス・ステップ410は、OSサービス・ノードから指定されたOSサービスを実装するプログラム命令を検索するとともに、計算ノードによって、指定されたOSサービスを実装するプログラム命令を実行することにより、実施することができる(図6の説明を参照)。また、アクセス・ステップ410は、カーネル・プロキシ120によって、OSサービス・ノードが指定されたOSサービスを実行するように要求するとともに、当該OSサービス・ノードによって、指定されたOSサービスを実装するプログラム命令を実行することにより、実施することができる(図7の説明を参照)。
【0068】
前述のように、カーネル・ポリシ122は、特定のOSサービスをカーネル・プロキシ120によって使用されるOSサービスのタイプにマップするテーブルである。しかし、カーネル・ポリシ122は、OSサービスをカーネル・プロキシ120によって使用されるサービスの各タイプにマップできないことがある。そのため、カーネル・プロキシ120は、しばしばカーネル・ポリシ122が特定のサービス・タイプ用のOSサービスを指定するか否かを識別し、カーネル・ポリシ122が指定されたサービス・タイプのOSサービスを指定しないときには、指定されたサービス・タイプのデフォルトOSサービスを実装するプログラム命令を実行する。従って、さらなる説明のために、図5は、本発明の実施形態に従った他の方法のフローチャートを示す。図5の方法は、カーネル・プロキシ120によって、カーネル・ポリシ122が指定されたサービス・タイプ405のOSサービスを指定するか否かを識別するステップ500を含む。図5の例では、コンピュータ・システムは、少なくとも1つの計算ノードを含む。この計算ノードは、OS及びハイパーバイザを含む。OSは、カーネルを含む。ハイパーバイザは、カーネル・プロキシ120及び1つのサービス・タイプの複数のOSサービスを含む。
【0069】
図5の方法は、図4の方法における設定ステップ400、指定ステップ401、検索ステップ403及びアクセス・ステップ410を含むという点で、図4の方法に類似している。さらに、図5の例は、図4の例におけるデフォルト・サービス・テーブル412を含み、当該テーブル412の各レコードがデフォルトOSサービス識別子414及びサービス・タイプ404を含むという点で、図4の例に類似している。
【0070】
図5の識別ステップ500は、指定されたサービス・タイプ405の値に一致するサービス・タイプ404の値を有するレコードを求めて、カーネル・ポリシ122を探索することにより、実施することができる。もし、かかるレコードが見つからなければ、カーネル・ポリシ122は、指定されたサービス・タイプ405のOSサービスを指定しない。一方、かかるレコードが見つかれば、カーネル・ポリシ122は、指定されたサービス・タイプ405のOSサービスを指定する。しかし、かかる実施の形態は、説明上のものであって、本発明を限定するものではない。他の実施形態では、カーネル・ポリシ122は、OS内で使用すべき各サービス・タイプのレコードを保持することができる。かかる実施形態では、識別ステップ500は、カーネル・ポリシ122内の特定のレコード用のOSサービス識別子402が、NULL値を保持しているか否かを識別することにより、実施することができる。
【0071】
さらに、図5の実行ステップ502は、カーネル・ポリシ122が指定されたサービス・タイプ405のOSサービスを指定しないときに、計算ノードによって、指定されたサービス・タイプ405のデフォルトOSサービスを実装するプログラム命令を実行することを含む。この実行ステップ502は、デフォルト・サービス・テーブル412において、サービス・タイプ404に関連するデフォルトOSサービス識別子414を検索するとともに、このデフォルトOSサービス識別子414によって表わされるデフォルトOSサービス用のAPIの関数を呼び出すことにより、実施することができる。デフォルトOSサービスは、図5のデフォルト・サービス・テーブル412内で指定されるが、かかる実施形態は、説明上のものであって、本発明を限定するものではない。他の実施形態では、カーネル・ポリシ122内のフィールドを使用して、特定のサービス・タイプについてOS内の使用すべきデフォルトOSサービスを指定することができるし、あるいは、各サービス・タイプ用のデフォルト・サービスをカーネル・プロキシ120それ自体にコード化することができる。
【0072】
前述のように、OSサービスは、分散コンピュータ・システム内の1つ以上のOSサービス・ノード間に分散することができる。このような場合、アクセス・ステップ410は、OSサービス・ノードの指定されたOSサービスにアクセスすることにより、実施することができる。従って、さらなる説明のために、図6は、本発明の実施形態に従ったさらに他の方法のフローチャートを示す。図6の方法は、OSサービス・ノードの指定されたOSサービス407にアクセスするステップ602を含む。図6の例では、コンピュータ・システムは、少なくとも1つの計算ノード及び1つ以上のOSサービス・ノードを含む、計算ノードは、OS及びハイパーバイザを含む。OSは、カーネルを含む。ハイパーバイザは、カーネル・プロキシ120及び1つのサービス・タイプの複数のOSサービスを含む。図6の例では、OSサービスの1つ以上がOSサービス・ノード間に分散される。
【0073】
図6の方法は、図4の方法における設定ステップ400、指定ステップ401、検索ステップ403及びアクセス・ステップ410を含むという点で、図4の方法に類似している。さらに、図6の例は、カーネル・ポリシ122の各レコードがOSサービス識別子402及びサービス・タイプ404を含むという点で、図4の例に類似している。しかし、図6の例では、カーネル・ポリシ122は、各レコード内にOSサービス・ノード識別子600を含めることによって、指定されたOSサービス407を提供すべきOSサービス・ノードを指定する。図6の例では、指定されたOSサービス407は、OSサービス・ノードのうち1つに分散される。
【0074】
図6のアクセス・ステップ410は、OSサービス・ノードの指定されたOSサービス407にアクセスするステップ602を含む。このアクセス・ステップ602は、カーネル・プロキシ120によって、指定されたOSサービス407を実装するプログラム命令606をOSサービス・ノードから検索するステップ604により、実施することができる。かかるプログラム命令606は、指定されたOSサービス407を実装する機械コードを表す。かかる表現は、説明上のものであって、本発明を限定するものではない。事実、図6のプログラム命令606は、アセンブリ言語又はJava(登録商標)のような高水準言語で実装されたプログラム命令を表すことができる。
【0075】
図6の検索ステップ604は、指定されたOSサービス407が分散されているOSサービス・サーバ上のOSサービス・サーバに対しOSサービス要求を送信し、このOSサービス・サーバから、指定されたOSサービスを実装するプログラム命令606を受信することにより、実施することができる。このOSサービス要求は、OSサービス・ノードに対し、OSサービスをハイパーバイザ内のカーネル・プロキシ120に提供するように要求するものである。このOSサービス要求は、指定されたOSサービス407用のOSサービス識別子402を含むことができる。カーネル・プロキシ120は、このOSサービス要求をOSサービス・ノード上のOSサービス・サーバに送信した後、ウェブ・サービスを使用するか、CORBAオブジェクトのメンバ・メソッドを呼び出すか、MPIライブラリなどを使用して、プログラム命令606を検索することができる。
【0076】
また、図6のアクセス・ステップ602は、計算ノードによって、指定されたOSサービス607を実装するプログラム命令606を実行するステップ608により、実施することができる。この実行ステップ608は、指定されたOSサービス607を実装するプログラム命令606を計算ノード上で実行するようにスケジュールすることにより、実施することができる。前述のように、図6のプログラム命令606は、アセンブリ言語又はJava(登録商標)のような高水準言語で実装されたプログラム命令を表すことができる。かかる実施形態では、この実行ステップ608は、プログラム命令606を機械コードへ解釈し、かかる機械コードを計算ノード上で実行するようにスケジュールすることにより、実施することができる。
【0077】
図6のアクセス・ステップ602は、指定されたOSサービスを実装するプログラム命令を計算ノード上で実行することにより実施される。しかし、かかるアクセス・ステップ602は、指定されたOSサービスを実装するプログラム命令をOSサービス・ノード上で実行することによっても、実施することができる。従って、さらなる説明のために、図7は、本発明の実施形態に従ったさらに他の方法のフローチャートを示す。図7の方法は、OSサービス・ノードによって、指定されたOSサービス407を実装するプログラム命令706を実行するステップ708を含む。図7の例では、コンピュータ・システムは、少なくとも1つの計算ノード及び1つ以上のOSサービス・ノードを含む。計算ノードは、OS及びハイパーバイザを含む。OSは、カーネルを含む。ハイパーバイザは、カーネル・プロキシ120及び1つのサービス・タイプの複数のOSサービスを含む。図7の例では、OSサービスの1つ以上は、OSサービス・ノード間に分散される。
【0078】
図7の方法は、図4の方法における設定ステップ400、指定ステップ401、検索ステップ403及びアクセス・ステップ410を含むという点で、図4の方法に類似している。さらに、図7の例は、カーネル・ポリシ122の各レコードがOSサービス識別子402及びサービス・タイプ404を含むという点で、図4の例に類似している。しかし、図7の例では、カーネル・ポリシ122は、各レコード内にOSサービス・ノード識別子600を含めることにより、指定されたOSサービス407を提供すべきOSサービス・ノードを指定する。図7の例では、指定されたOSサービス407は、OSサービス・ノードのうち1つの上に分散される。
【0079】
図7のアクセス・ステップ410は、OSサービス・ノードの指定されたOSサービス407にアクセスするステップ602を含む。このアクセス・ステップ602は、カーネル・プロキシ120によって、OSサービス・ノードが指定されたOSサービスを遂行すべきことを要求するステップ700を行うとともに、このOSサービス・ノードによって、サービス遂行要求702を受信するステップ704を行うことにより、実施される。要求ステップ700は、指定されたOSサービス407が分散されたOSサービス・ノード上のOSサービス・サーバにサービス遂行要求702を送信することにより、実施することができる。サービス遂行要求702は、OSサービス・ノードに対し、カーネル・プロキシ120用のOSサービスを遂行するように要求する。サービス遂行要求702は、指定されたOSサービス407用のOSサービス識別子402を含むことができる。カーネル・プロキシ120は、ウェブ・サービスを使用するか、CORBAオブジェクトのメンバ・メソッドを呼び出すか、MPIライブラリなどを使用して、OSサービス・ノード上のOSサービス・サーバにサービス遂行要求702を送信することができる。
【0080】
図7のアクセス・ステップ602は、OSサービス・ノードによって、指定されたOSサービス407を実装するプログラム命令706を実行するステップ708により、実施される。プログラム命令706は、指定されたOSサービス407を実装する機械コードを表す。実行ステップ708は、指定されたOSサービス407を実装するプログラム命令706をOSサービス・ノード上で実行するようにスケジュールすることにより、実施することができる。プログラム命令706を実行した後、OSサービス・ノード上のOSサービス・サーバは、実行が成功したか否かを示すメッセージをカーネル・プロキシ120へ送信することができる。
【0081】
本明細書の前述の説明に照らして、本発明の実施形態によれば、次の利点が得られることは明らかであろう。
【0082】
1.ノードのハードウェア及びソフトウェア環境に基づいたOSサービスを提供することにより、軽量のOSを含む多数のOSをサポートするハイパーバイザで当該ノードを構成する能力。
【0083】
2.軽量のOSをサポートする種々のOSサービスを提供することにより、ハイパーバイザによって、当該軽量のOSを新しい環境に適応させるか、又は新しい要件を満足させる能力。
【0084】
3.OSの機能のうち或るものをハイパーバイザ内で実装することにより、当該ハイパーバイザの管理オーバーヘッドを減少させる能力。
【0085】
本発明の代表的な実施形態は、主として、ハイパーバイザ内にポリシ・ベースのOSサービスを提供するための完全に機能的なコンピュータ・システムの環境で説明された。しかし、任意の適当なデータ処理システムとともに使用するための信号担持媒体に配置されたコンピュータ・プログラムにおいても、本発明を具体化することができることは明らかであろう。かかる信号担持媒体は、伝送媒体とすることができるし、あるいは磁気媒体、光学媒体、他の適切な媒体などを含む機械可読情報用の記録可能媒体とすることができる。記録可能媒体の例には、ハード・ドライブ又はディスケット内の磁気ディスク、光ドライブ用のコンパクト・ディスク、磁気テープなどがある。伝送媒体の例には、音声通信用の電話網、イーサネット(登録商標)のようなディジタル・データ通信ネットワーク、インターネット・プロトコルを用いたネットワーク、ワールド・ワイド・ウェブ、IEEE 802.11ファミリの規格に従って実装されたネットワークのような無線送信媒体などがある。また、本明細書で説明した代表的な実施形態のうち或るものは、ハードウェア上にインストールされ、そこで実行されるソフトウェアに基づいているが、ファームウェア又はハードウェアとして実装された他の実施形態も本発明の範囲内にあることはもちろんである。
【0086】
前述の説明から明らかなように、本発明の要旨を逸脱することなく、本発明の種々の実施形態に対し修正及び変更を施すことができる。本明細書中の記述は、説明上のものであって、本発明を限定するものと解釈してはならない。本発明の範囲は、請求項の記載によってのみ定義される。
【図面の簡単な説明】
【0087】
【図1】本発明の実施形態に従ったコンピュータ・システムを示すネットワーク図である。
【図2】本発明の実施形態に従った計算ノードから成る自動化計算機械を示すブロック図である。
【図3】ハイパーバイザで構成された、本発明の実施形態に従った計算ノードを示す機能ブロック図である。
【図4】本発明の実施形態に従った方法を示すフローチャートである。
【図5】本発明の実施形態に従った他の方法を示すフローチャートである。
【図6】本発明の実施形態に従ったさらに他の方法を示すフローチャートである。
【図7】本発明の実施形態に従ったさらに他の方法を示すフローチャートである。
【符号の説明】
【0088】
100 分散コンピュータ・システム
103、105 LPAR
106、107 アプリケーション
108 OS
109 カーネル
110 計算ノード
111 ハイパーバイザ
112、114、116 OSサービス・ノード
117 ゲストOS
118 管理ノード
115 仮想プロセッサ
122 カーネル・ポリシ
124 OSサービス
126 デフォルトOSサービス
128 管理モジュール
130 システム管理者
132、134、136 OSサービス
133、135、137 OSサービス・サーバ

【特許請求の範囲】
【請求項1】
コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法であって、
前記コンピュータ・システムは、少なくとも1つの計算ノードを含み、前記計算ノードは、一のオペレーティング・システム(以下「OS」と略記)及び一のハイパーバイザを含み、前記OSは、一のカーネルを含み、前記ハイパーバイザは、一のカーネル・プロキシ及び一のサービス・タイプの複数のOSサービスを含み、
前記方法は、
前記計算ノード上で、前記カーネル・プロキシが使用すべき前記複数のOSサービスのうち1つを指定する一のカーネル・ポリシを設定するステップと、
前記カーネル・プロキシによって、前記指定されたOSサービスにアクセスするステップとを含む、方法。
【請求項2】
前記コンピュータ・システムは、1つ以上のOSサービス・ノードを含む分散コンピュータ・システムであり、
前記複数のOSサービスのうち1つ以上は、前記OSサービス・ノード間に分散され、
さらに、前記カーネル・ポリシは、前記指定されたOSサービスを提供すべき1つのOSサービス・ノードを指定し、
前記アクセスするステップは、前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスするステップを含む、請求項1に記載の方法。
【請求項3】
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスする前記ステップは、
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードから、前記指定されたOSサービスを実装するコンピュータ・プログラム命令を検索するステップと、
前記計算ノードによって、前記指定されたOSサービスを実装する前記コンピュータ・プログラム命令を実行するステップとを含む、請求項2に記載の方法。
【請求項4】
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスする前記ステップは、
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードが前記指定されたOSサービスを遂行することを要求するステップと、
前記指定されたOSサービス・ノードによって、前記指定されたOSサービスを実装するコンピュータ・プログラム命令を実行するステップとを含む、請求項2に記載の方法。
【請求項5】
前記カーネル・プロキシによって、前記カーネル・プロキシが前記指定されたOSサービスにアクセスすることができるか否かを判定するステップと、
前記カーネル・プロキシが前記指定されたOSサービスにアクセスすることができないときは、前記計算ノードによって、一のデフォルトOSサービスを実装するコンピュータ・プログラム命令を実行するステップとをさらに含む、請求項1に記載の方法。
【請求項6】
前記ハイパーバイザが、他のサービス・タイプの一のOSサービスを含み、
前記カーネル・プロキシによって、前記カーネル・ポリシが前記他のサービス・タイプの前記一のOSサービスを指定するか否かを識別するステップと、
前記カーネル・ポリシが前記他のサービス・タイプの前記一のOSサービスを指定しないときは、前記計算ノードによって、前記他のサービス・タイプの一のデフォルトOSサービスを実装するコンピュータ・プログラム命令を実行するステップとをさらに含む、請求項1に記載の方法。
【請求項7】
前記サービス・タイプの前記複数のOSサービスは、同一のアプリケーション・プログラム・インタフェース(以下「API」と略記)を有し、
前記アクセスするステップは、前記カーネル・プロキシによって、前記同一のAPIを使用して前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスするステップを含む、請求項1に記載の方法。
【請求項8】
前記コンピュータ・システムが並列コンピュータである、請求項1に記載の方法。
【請求項9】
ハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供するためのコンピュータ・システムであって、前記コンピュータ・システムは、少なくとも1つの計算ノードを含み、前記計算ノードは、一のオペレーティング・システム(以下「OS」と略記)及び一のハイパーバイザを含み、前記OSは、一のカーネルを含み、前記ハイパーバイザは、一のカーネル・プロキシ及び一のサービス・タイプの複数のOSサービスを含み、さらに前記コンピュータ・システムは、複数のプロセッサ及び当該プロセッサに結合されたメモリを含み、前記メモリ内に配置したコンピュータ・プログラム命令が、
前記計算ノード上で、前記カーネル・プロキシが使用すべき前記複数のOSサービスのうち1つを指定する一のカーネル・ポリシを設定する機能と、
前記カーネル・プロキシによって、前記指定されたOSサービスにアクセスする機能とを実現する、コンピュータ・システム。
【請求項10】
前記コンピュータ・システムは、1つ以上のOSサービス・ノードを含む分散コンピュータ・システムであり、
前記複数のOSサービスのうち1つ以上は、前記OSサービス・ノード間に分散され、
さらに、前記カーネル・ポリシは、前記指定されたOSサービスを提供すべき1つのOSサービス・ノードを指定し、
前記アクセスする機能は、前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスする機能を含む、請求項9に記載のコンピュータ・システム。
【請求項11】
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスする前記機能は、
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードから、前記指定されたOSサービスを実装するコンピュータ・プログラム命令を検索する機能と、
前記計算ノードによって、前記指定されたOSサービスを実装する前記コンピュータ・プログラム命令を実行する機能とを含む、請求項10に記載のコンピュータ・システム。
【請求項12】
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードの前記指定されたOSサービスにアクセスする前記機能は、
前記カーネル・プロキシによって、前記指定されたOSサービス・ノードが前記指定されたOSサービスを遂行することを要求する機能と、
前記指定されたOSサービス・ノードによって、前記指定されたOSサービスを実装するコンピュータ・プログラム命令を実行する機能とを含む、請求項10に記載のコンピュータ・システム。
【請求項13】
請求項1ないし請求項8の何れか1項に記載の方法における各ステップの処理をコンピュータに実行させるコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−108260(P2008−108260A)
【公開日】平成20年5月8日(2008.5.8)
【国際特許分類】
【出願番号】特願2007−275113(P2007−275113)
【出願日】平成19年10月23日(2007.10.23)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】