(57)【要約】【課題】コンピュートデバイスを含むハードウェアリソースをサービス実行中に増減可能なリソース分離型のコンピュータシステムを提供する。【解決手段】コンピュータシステムに、Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、共通メモリデバイスは、Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールを構成する個々のデバイスとバスを介して接続され、Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールに含まれる個々のデバイスの管理ステータスを共通メモリデバイス上で管理すると共に、個々のデバイスを使用するアプリケーションの配置を共通メモリデバイス上で管理する、システムマネージャを設ける。【選択図】図１
2017102552.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、
前記共通メモリデバイスは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスとバスを介して接続され、
前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを前記共通メモリデバイス上で管理すると共に、前記個々のデバイスを使用するアプリケーションの配置を前記共通メモリデバイス上で管理する、システムマネージャを具備する
コンピュータシステム。
【請求項２】
前記システムマネージャは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の接続を、切り替えられた際に、
切り替えられた後の接続関係の状態に前記管理ステータスを変更して、前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、該コンピュータシステムに反映する
請求項１記載のコンピュータシステム。
【請求項３】
前記システムマネージャは、前記共通メモリデバイスに配置するアプリケーションを、コンピュートリソースを用いるＯＳから切り離して、スライス毎、グループ毎若しくはパーテション毎に前記共通メモリデバイス上で管理する
請求項１又は２に記載のコンピュータシステム。
【請求項４】
前記Ｉ／Ｏデバイスリソースプールに含める個々のデバイスは、プロセッサと、該プロセッサによって動作する、ＯＳ 及び／又は 前記システムマネージャに配置されたアプリケーション とのバスを介した通信用ドライバプログラムを具備し、
該コンピュータシステムは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続を、活線状態で切り替えられた際に、
変更された前記管理ステータスに基づいて、前記共通メモリデバイスに配置された各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、前記ドライバプログラムを読み出し可能に関連付けることで該コンピュータシステムに反映する
請求項１ないし３の何れか一項に記載のコンピュータシステム。
【請求項５】
前記Ｉ／Ｏデバイスリソースプールに含める個々のデバイスは、プロセッサと、該プロセッサによって動作する、ＯＳ及び／又は前記システムマネージャに配置されたアプリケーションとのバスを介した通信用の第１のドライバプログラムを具備し、
該コンピュータシステムは、
前記コンピュートリソースプールに含まれるプロセッサを動作主体として、前記ＯＳ及び／又は前記システムマネージャに配置されたアプリケーションが使用して、前記第１のドライバプログラムと通信することで前記Ｉ／Ｏデバイスリソースプールに含まれた前記個々のデバイスとの間でコミュニケートする第２のドライバプログラムを具備し、
該コンピュータシステムは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続を、活線状態で切り替えられた際に、
変更された前記管理ステータスに基づいて、前記共通メモリデバイスに配置された各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、前記第１及び第２のドライバプログラムを読み出し可能に関連付けることで該コンピュータシステムに反映する
請求項１ないし３の何れか一項に記載のコンピュータシステム。
【請求項６】
該コンピュータシステムは、
前記共通メモリデバイスと、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスと、の間の接続を、活線状態で挿抜可能に構成されている
請求項１ないし５の何れか一項に記載のコンピュータシステム。
【請求項７】
該コンピュータシステムは、複数の共通メモリデバイスを挿抜可能に具備し、
前記システムマネージャは、
個々のアプリケーションおよび管理ステータスについて、複数の共通メモリデバイスに冗長化して配置すると共に、
任意の共通メモリデバイスが活線状態で抜かれた際に、新たに冗長化する別の共通メモリデバイスを探索して、個々のアプリケーションおよび管理ステータスの冗長構成を維持する
請求項１ないし６の何れか一項に記載のコンピュータシステム。
【請求項８】
前記バスはファブリックスイッチで構成され、
前記システムマネージャは、構築するコンピュータ構成に合わせて、前記共通メモリデバイス上で前記管理ステータスと前記アプリケーションの配置を管理すると共に、前記ファブリックスイッチの管理を実施する
請求項１ないし７の何れか一項に記載のコンピュータシステム。
【請求項９】
プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムの前記プロセッサで実行され、
前記プロセッサを、
前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理する第１の管理手段と、
個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理する第２の管理手段、
として動作させる
プログラム。
【請求項１０】
プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムで実行され、
前記プロセッサは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理し、
また、前記プロセッサは、該個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理する
システム制御管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、特に、ハードウェアリソースを複数のユーザに共有させつつ、所望にコンピュータシステムの内部デバイス構成を変更可能なコンピュータシステム（リソース分離型アーキテクチャシステム）に関する。
【背景技術】
【０００２】
昨今、従前のコンピュータシステムと異なる幾つかの新たなアーキテクチャモデルを採用するコンピュータシステムの開発されている。
【０００３】
リソース分離型アーキテクチャシステムは、その一つである。リソース分離型アーキテクチャシステムは、物理的に準備されたデバイス群をリソースプール化することで、必要に応じた構成のコンピュータマシンをデバイスの有効利用を図りつつ自在に構築し、多くのユーザに所望のコンピュータ環境を提供できる。
【０００４】
リソース分離型アーキテクチャシステムは、Ｉ／Ｏ分離型、モジュール型（モジュラー）コンピュータ、ディスアグリゲート（Disaggregated）コンピュータなどとも呼ばれることもある。
【０００５】
リソース分離型アーキテクチャシステムは、ハードウェアブロックをモジュール化して、それらのモジュール間を所望に接続する。この接続は、インターコネクションと呼ばれる。また、特にスイッチを用いたインターコネクション構造はファブリック(スイッチ)型と呼ばれる場合が多い。また、サーバラックに搭載されるタイプのブレードサーバなどの機器を用いたインターコネクションをバックプレーン接続とも呼ぶ。
【０００６】
一般的なコンピュータ（パーソナルコンピュータやサーバ等）は、システムバス（メモリバス、Ｉ／Ｏバスなど。以下、単にバスとも書く）を介して接続されたＣＰＵ（Central Processing Unit）／メモリ（メインメモリ）と様々なデバイスを備えている。この構成で一般的なコンピュータは、ＣＰＵ上で実行されるプログラムの指示によって各デバイスへのアクセスを行っている。
【０００７】
デバイスへのアクセスは、「入出力処理」または「Ｉ／Ｏ（Input/Output）処理」と呼ばれる。コンピュータの制御やアプリケーションソフトウェアの実行管理などの基本的なシステム動作を行うソフトウェアは、「ＯＳ（Operating System）」と呼ばれる。ＯＳのうちの特にデバイスを制御するためのソフトウェアは「デバイスドライバ」と呼ばれる。
【０００８】
ＯＳの例として、Linux（登録商標）やMicrosoft社のWindows（登録商標）などがある。また、システムバスの例として、ＰＣＩ（Peripheral Component Interconnect）やPCI-Express、ＦＳＢ（Front Side Bus）、ＵＳＢ（Universal Serial Bus）などがある。さらに、デバイスの例として、ストレージドライブ（ＳＳＤ：Solid State DriveやＨＤＤ：Hard Disk Driveなど）やネットワークインタフェイスカード（ＮＩＣ：Network Interface Card）、アクセラレータなどがある。
【０００９】
デバイスは、コンピュータの起動時にＢＩＯＳ（Basic Input/Output System）によってスキャンされて、デバイスのＩＤ（識別子、Identifier）やメモリ領域などが割り当てられる。
【００１０】
デバイスのＩＤやメモリ領域などが割り当てられた時点では、一般的なコンピュータではまだデバイスは利用可能な状態ではない。一般的なコンピュータは、ＯＳの起動後、スキャンなどで識別されたデバイス群各々をそれぞれのデバイスドライバを用いて初期化している。これにより、コンピュータ（ＯＳ）が各デバイスを利用可能になる。なお、このデバイスドライバはＯＳ種別ごとに専用のデバイスドライバが必要である。
【００１１】
一般的なコンピュータは、ひとつの筐体の中にＣＰＵ、メモリ、各種デバイスが設けられ、ＦＳＢやＵＳＢ、PCI-Expressバスで接続され、その連携で種々のデータ処理を実行する。 
一方で、リソース分離型コンピュータシステムは、リソースプールにあるＣＰＵ群、デバイス群の中から適当な要素を選定し、それらの間に物理的な接続（データや制御信号のパスの確立）と論理的な接続（BIOSやOSレベルでのデバイスツリー構造の認識）を確立する。このコンピュータ要素の選定及び接続をおこなうことで、リソース分離型コンピュータシステムは、既存のコンピュータと同等のシステムをいくつも構築できる。
【００１２】
このように、リソース分離型コンピュータシステムは、多数のハードウェアリソースの集合体の上に、いくつもの区切り（パーティション、グループ、スライス）を作り、それぞれに個別のコンピュータを構築できる。このような共通のハードウェア上に、区切り毎に複数のコンピュータを構築するシステムは一般的なコンピュータシステムでは仮想化システム或いはマルチテナントシステムと呼ばれている。
【００１３】
本発明に関連する先行技術としては、特許文献１が挙げられる。特許文献１では、ファブリックスイッチを有するリソース分離型コンピュータシステムを開示している。特許文献１の図１に記載したファブリックスイッチは、内部構造にイーサネット（登録商標）スイッチを取り込み、その入出力系統をシステムマネージャが操作可能に構成している。
【００１４】
また、非特許文献１は、リソース分離型アーキテクチャを有するコンピュータシステムの概要と、発明者らが実装したコンピュータシステムを開示している。
【００１５】
また、本発明に関連する要素技術として、特許文献２には、デバイスを駆動するデバイスドライバプログラムをデバイスに設けた記憶部からＯＳが取得するデバイス取得方法が記載されている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特許第４６７０６７６号公報
【特許文献２】特開２０００−３３９２６３号公報
【非特許文献】
【００１７】
【非特許文献１】“スケールアップにより多種多様なコンピューティングを実現するResource Disaggregated Platform”，吉川 隆士，菅 真樹，高橋 雅彦，宮川 伸也，飛鷹 洋一，阿部 晋樹  著， NEC 技報Vol.67 No.2, 2015年3月
【発明の概要】
【発明が解決しようとする課題】
【００１８】
リソース分離型コンピュータシステムでは、デバイスの設定や、状態モニター、デバイス間の接続や区切りなどの諸設定、すなわち どのデバイス群が利用可能でそれらをどのように接続してコンピュータを構築するか、を管理・制御するマネージメントソフトウェアが必要である。
【００１９】
このマネージメントソフトウェアは、全デバイスの情報、並びに、それらの接続情報を管理する。また、このマネージメントソフトウェアは、全デバイスの接続を変更する機能を司る。本明細書では、このマネージメントソフトウェアを、システムマネージャと呼ぶ。
【００２０】
リソース分離型コンピュータシステム内で構築するコンピュータの構成変更を行う場合、構築するコンピュータに対してシステムバスを介したリソースの接続／分離／付け替えが発生する。
【００２１】
このリソースの接続／分離／付け替えは、システムの電源を切らずに活線状態で行う（ホットプラグ，ホットアド，ホットリムーブ，ホットスワップ）ことが望まれる。 
一般的なコンピュータで用いられているＩＯデバイスの多くは、ホットプラグに対応している。ホットプラグに対応したデバイスを接続した場合、接続されたイベント通知をシステムが検出し、ＯＳ・ドライバがデバイスツリーの再構成（システム内のバス番号を着け直しなど）を行う。加えて、ＯＳは、そのデバイスが利用できるように、初期設定やコンフィギュレーションを行う。さらに必要に応じて、ＯＳ種別に合致したデバイスドライバをインストールする。こうして、ホットプラグに関するデバイスの識別及び設定が完了して、ＯＳやアプリケーションからデバイスを利用できるようになる。
【００２２】
一方、ホットリムーブで、ＯＳやドライバに対して予め取り外し処理を依頼せずに、物理的にデバイスが取り外されてしまう、サドンリムーブについては、対応しているデバイスが少ない。これは、サドンリムーブの場合、コンピュータシステムは、取り外したリソース（デバイス）へのアクセスに対する応答が突然になくなるためである。サドンリムーブへの対策は、アクセスのタイムアウト処理や、リソースの生死の確認処理などをコンピュータシステムが実施して、障害を除去する必要が生じる。具体例ではこれらの処理をデバイスドライバに作り込んで、サドンリムーブ耐性を強化すればよい。
【００２３】
本発明者らは、リソース分離型アーキテクチャシステムで管理するリソースプール（デバイス群）について、活線状態での接続／分離／付け替え自由度の改善を検討した。この際に、多くの種別のＩＯデバイスは、インサービス中に交換可換であるが、コンピュートデバイス（ＣＰＵとメインメモリからなるコンピュータの中核をなるモジュール）を交換できない点について課題を設定した。
【００２４】
コンピュータで通常想定されているホットプラグ対応デバイスは、ＩＯデバイスである。一方、コンピュートデバイスについては、ホットプラグが考慮されていない。すなわち、稼働中のコンピュータのコンピュートを増設や除去する場合、一般に、コンピュータはシャットダウンしてから構成を変更して、再起動を行う必要がある。
【００２５】
特許文献１や非特許文献１に記載したリソース分離型コンピュータシステムも、インサービス中にコンピュートデバイスの交換ができない。特にサドンリムーブが発生した際に、リソース分離型コンピュータシステムでも、そのコンピュートデバイスを使用していたコンピュータのアプリケーションが継続的に動作し続けることは困難である。
【００２６】
本発明は、上記課題に鑑みて成されたものであり、コンピュートデバイスを含むハードウェアリソースをサービス実行中に活線状態で増減可能なコンピュータシステムの提供を目的とする。
【課題を解決するための手段】
【００２７】
本発明の一実施形態に係るコンピュータシステムは、Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、前記共通メモリデバイスは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスとバスを介して接続され、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを前記共通メモリデバイス上で管理すると共に、前記個々のデバイスを使用するアプリケーションの配置を前記共通メモリデバイス上で管理する、システムマネージャを具備する。
【００２８】
本発明の一実施形態に係るプログラムは、プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムの前記プロセッサで実行され、前記プロセッサを、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理する第１の管理手段と、個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理する第２の管理手段、として動作させる。
【００２９】
本発明の一実施形態に係るシステム制御管理方法は、プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムで実行され、前記プロセッサは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理し、また、前記プロセッサは、該個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理するシステムマネージャとして動作させる。
【発明の効果】
【００３０】
本発明によれば、コンピュートデバイスを含むハードウェアリソースをサービス実行中に活線状態で増減可能なコンピュータシステムを提供できる。
【図面の簡単な説明】
【００３１】
【図１】本発明に係る第１の実施形態に係るコンピュータシステム１の構成を示すブロック図である。
【図２】（ａ）は第１の実施形態に係るシステムマネージャに関するソフトウェア構成例であり、（ｂ）はそのフローチャートの一例である。
【図３】コンピュータ構築フェーズのフローチャート例である。
【図４】構築されたコンピュータアーキテクチャモデルを例示した説明図である。
【図５】構築されたコンピュータがＩ／Ｏデバイスを駆動する処理ルーチン例を示しているフローチャートである。
【図６】構築されたコンピュータに新たにアプリケーションを割り当てる処理ルーチン例を示しているフローチャートである。
【図７】構築された所要コンピュータにデバイス単位のリソース増減を実施する処理ルーチン例を示しているフローチャートである。
【図８】コンピュータシステム１に、デバイス単位でデバイスのホットスワップを実施するフロー例を示しているフローチャートである。
【図９】本発明に係る第２の実施形態に係るコンピュータシステム２の構成を示すブロック図である。
【図１０】第２の実施形態に係るシステムマネージャに関するソフトウェア構成を例示した説明図である。
【図１１】第３の実施形態に係るコンピュータシステム３の構成を示すブロック図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態を図面を参照して説明する。
【００３３】
［第１の実施形態］ 
図１は、本発明の第１の実施形態に係るコンピュータシステム１の構成を示すブロック図である。
【００３４】
図示されたコンピュータシステム１は、コンピュータリソースとして、コンピュートリソースプール１０とＩ／Ｏデバイスリソースプール２０とを具備する。
【００３５】
コンピュートリソースプール１０とＩ／Ｏデバイスリソースプール２０に含まれている個々のデバイス（コンピュートデバイス１００，Ｉ／Ｏデバイス２００）は、システムバスを介して個々のデバイス間及び共通メモリデバイス３０にアクセス可能に接続されている。この個々のデバイスは、必要に応じて、論理的／物理的に脱着可能に相互接続される。
【００３６】
システムバスは、低遅延、且つ、メモリレベルのデータ転送が行えるバスラインを構築する。例えばＰＣＩ Ｅｘｐｒｅｓｓなどの高速インタフェイスがコンピュータシステムのパフォーマンスの点で望ましい。システムバスは、必要に応じて多段構成を採用してもよい。
【００３７】
さらに、コンピュータシステム１は、各デバイス（コンピュートデバイス１００，Ｉ／Ｏデバイス２００，共通メモリデバイス３０）の論理的接続を適宜組替えて、構築するコンピュータ構成を変更・管理するためのシステムマネージャを具備する。このシステムマネージャは、本実施形態ではプロセッサ４０で動作する。なお、このシステムマネージャの動作主体は、冗長化することが望ましい。また、システムマネージャの動作主体は、システムバスに直接的に接続せずとも、通信ネットワークを介してシステム管理するように構成してもよい。
【００３８】
コンピュートリソースプール１０には、所望数のコンピュートデバイス１００が準備されている。コンピュートデバイス１００は、ＣＰＵなどのプロセッサとメモリー（ワークメモリ）とＯＳを保持するメモリ（ストレージ）等と共に、バスインタフェイスを具備する。最もシンプルな構成は、ＣＰＵとＤＲＡＭ（Dynamic Random Access Memory）とバスインタフェイスから構成されたモジュールとなる。また、グラフィックプロセッサやＩＯインタフェイスなど様々な機能を有しているSystem-on-a-chip（ＳｏＣ）を搭載したモジュールを含んでいてもよい。
【００３９】
個々のコンピュートデバイス１００の細部は、相互に異なっていてもよく、コンピュートリソースとして動作するデバイスであれば種別は問わない。また、コンピュートデバイス１００が保持するＯＳの個数及び種類も複数あってもよい。
【００４０】
コンピュートデバイス１００（プロセッサ及びＯＳ）は、共通メモリデバイス３０に配置される１ないし複数のアプリケーションの動作主体となる。ここでの、「配置」は、アプリケーションをインストールした状態や、アプリケーションプログラムデータとその利用データの双方を関連付けて保持した状態を意味する。配置方式は、それぞれのアプリケーションの動作形式に合わせて適宜実施すればよい。また、コンピュートデバイス１００は、動作中のＯＳ若しくはアプリケーション（共通メモリデバイス３０に配置のアプリ）の要求に応じて所望のＩ／Ｏデバイス２００（デバイス部）にアクセスする。
【００４１】
Ｉ／Ｏデバイスリソースプール２０には、所望数のＩ／Ｏデバイス２００が準備されている。各Ｉ／Ｏデバイス２００は、バスインタフェイスと共に、用途にあったデバイス部（従前のデバイス部分）をそれぞれ含む。このデバイス部は、一般にＩ／Ｏデバイスと呼ばれるストレージ、ネットワーク、ＵＳＢ（Universal Serial Bus）、アクセラレータ、特殊用途のＩＯインタフェイスなど、その用途に応じた機能を提供する。このように、Ｉ／Ｏデバイスリソースプール２０に含まれる所望数／所望種別のＩ／Ｏデバイス２００は、コンピュータシステム１として確保する機能を具現化する。
【００４２】
各Ｉ／Ｏデバイス２００は、マイコンやＣＰＵなどのプロセッサを搭載している。また、このＩ／Ｏデバイス２００のプロセッサを動作主体としてドライバプログラムが動作するように構成してもよい。このドライバプログラムは、コンピュートデバイス１００内のＯＳに依存のない言語レベルで記述されることが望ましい。若しくは、このドライバプログラムは、対応するＯＳ種別が広く記述されることが望ましい。
【００４３】
ＩＯデバイス２００をホットプラグでコンピュータシステムに接続する場合、ＯＳによるデバイスの認識工程、ドライバのＯＳへのロード工程にはＯＳ依存性がある。このため、構成変更に対する柔軟性を欠いてしまう問題が生じる。加えて、対応ＯＳであった場合でも、その工程に要する時間は、数十秒オーダで時間が必要である。インサービスで構成変更を行う場合に 数十秒に渡ってコンピュータが利用停止することは、ユーザエクスペリエンスを損なってしまう可能性がある。
【００４４】
一方で、上記のように、Ｉ／Ｏデバイス２００に、ドライバプログラムをＩ／Ｏデバイス２００のプロセッサで動作させる構成を持たせることで、デバイス機能のＯＳ依存性を無くす／弱めることができる。Ｉ／Ｏデバイス２００は、コンピュートデバイス１００に接続された時点でＯＳによるデバイスの認識工程が行われることと並列的に、Ｉ／Ｏデバイス２００のプロセッサにドライバプログラムをロードする。
【００４５】
なお、このドライバプログラムは、個々のＩ／Ｏデバイス２００がコンピュータシステム１に接続された際に、コンピュータシステム１側から提供されてもよいし、予めＩ／Ｏデバイス２００内に保持するように構成してもよい。
【００４６】
また、Ｉ／Ｏデバイス２００の種別によっては、コンピュートデバイス１００にＩ／Ｏデバイス２００の用いるドライバに対応する上位ドライバプログラムを設けて、ＯＳ依存性を低減するようにしてもよい。この場合、コンピュートデバイス１００内のＯＳの管理下に、ＯＳと システムマネージャに配置するアプリケーションとが使用する上位ドライバプログラムを設けて、Ｉ／Ｏデバイス２００のドライバやカーネル等とのコミュニケートを実現すればよい。各ドライバやＯＳ、アプリケーションの関係は、適宜、共通メモリデバイス３０上の管理ステータスで論理的接続関係を関連付けて管理すればよい。
【００４７】
共通メモリデバイス３０は、コンピュートリソースプール１０とＩ／Ｏデバイスリソースプール２０に含まれている個々のデバイスとシステムバスを介して接続する。例えば、共通メモリデバイス３０は、高速アクセス可能なＳＳＤで構成すればよい。また、ＲＡＭやハードディスク等のメモリデバイスを用いるシステム構成としても構わない。可能であれば、共通メモリデバイス３０は、高速で且つ不揮発性であることが望ましい。
【００４８】
この共通メモリデバイス３０は、システムマネージャによって管理される、複数のアプリケーションソフトウェア（図中のＡｐｐ）、並びに関連するＩＯデバイスの管理ステータス（図中のステータス）等が配置及び管理される。例えば、共通メモリデバイス３０は、システムマネージャによって管理されるアプリケーションソフトウェアメモリ部及び関連するＩＯデバイスの実行ステータス等を保持するステータスメモリ部を論理的に設けて、それぞれ管理すればよい。
【００４９】
また、このコンピュータシステム１は、システムマネージャの動作主体となるプロセッサ４０を具備する。なお、システムマネージャが用いるワークメモリやストレージは記載を省略する。図示されたシステムマネージャは、サーバラックに搭載された例を示すが、リソースプールのサーバラックとは別のサーバで提供するようにシステムを構成してもよい。また、後述するシステムマネージャの機能を、複数に異なる動作主体（プロセッサ群）に行わせるようにシステムを構成してもよい。また、システムマネージャの動作主体及びそのプログラムも冗長化されていることが望ましい。
【００５０】
プロセッサ４０で動作するシステムマネージャは、ここでは、システム内の物理的／論理的接続関係が反映された管理ステータスを管理すると共に、個々のデバイス（コンピュートデバイス１００，Ｉ／Ｏデバイス２００）を使用するアプリケーションの配置を管理する。
【００５１】
図２は、システムマネージャに関するソフトウェア構成（ａ）とフローチャート（ｂ）を例示している。
【００５２】
システムマネージャ４００は、図２（ａ）に記載したように、リソースマネージャ４１０とアプリケーションマネージャ４２０に分けて構成することができる。また、図２（ｂ）に記載したフローチャートのように、システムマネージャ４００は、相互に関連しながら並列的に、共通メモリデバイス３０上で 管理ステータスと ユーザ等から要求された個々のアプリケーションの配置とを管理する。
【００５３】
管理ステータスは後に述べる通り、Ｉ／Ｏデバイス２００、コンピュート１００ごとに異なると同時に、管理運用方法によっても異なる。例えばストレージの場合、ファイルシステムレベルでの接続・切り離しを行うか、デバイスレベルでの接続・切り離しを行うかに合わせて、その管理運用方法に合わせて適宜管理ステータスの内容を定めればよい。例えばデバイスレベルでの接続・切り離しを行う場合、管理ステータスは、デバイスのコンフィグレーションに関わるステータスである、メモリ空間のベースアドレス、デバイス状態などとなる。
【００５４】
リソースマネージャ４１０は、区切り（パーティション、グループ、スライス）毎に所要コンピュータの必要な構成をコンピュートリソースプール１０及びＩ／Ｏデバイスリソースプール２０から選んで、各コンピュータを構築する。また、リソースマネージャ４１０は、構築したコンピュータのスケールアップ／スケールダウン／機能の追加削除等を実施する際に、デバイス単位でコンピュータ構成を自動的に変更する。また、リソースマネージャ４１０は、各デバイスの故障等も監視して、故障時にはプールされている同等デバイスに自動的に交換する機能を有することが望ましい。
【００５５】
アプリケーションマネージャ４２０は、個々のアプリケーションの配置を、コンピュートリソースを用いるＯＳ（コンピュートデバイス１００内のＯＳ）から切り離して、区切り（パーティション、グループ、スライス）毎に、共通メモリデバイス３０上に、実行する。
【００５６】
アプリケーションマネージャ４２０は、共通メモリデバイス３０上に配置したアプリケーションと、そのアプリケーションを使用するＯＳ（コンピュートデバイス１００内のＯＳ）を関連付けて管理する。
【００５７】
このシステムマネージャ４００による２つの管理を実現することで、コンピュータシステム１は、配置した各々のアプリケーションと 個々のコンピュートデバイス１００及び個々のＩ／Ｏデバイス２００と の接続関係を、該コンピュータシステム１に反映できる。
【００５８】
なお、配置したアプリケーションのプロセスのステータスとＩ／Ｏのステータスは、ここでは管理ステータスに含めて共通メモリデバイス３０上で管理する。システムマネージャ４００は、この管理ステータスを、コンピュートデバイス１００内で動作するＯＳが用いるステータス毎に分けて管理してもよいし、一括して管理してもよい。一括して管理する場合、システムマネージャ４００は、どのＯＳ（どのコンピュートデバイス１００）がどのアプリケーションのステータスを必要としているかを紐付けて管理すればよい。
【００５９】
次に、コンピュータシステム１の全体動作について説明する。
【００６０】
図３は、コンピュータ構築フェーズのフローチャート例を示している。
【００６１】
図１に示されたプロセッサ４０（システムマネージャ４００）は、コンピュータを構築する際（例えばユーザからの使用要求を受けた場合）、所望の能力・機能を満たすコンピュータ要素（コンピュータ構成）を識別する（Ｓ１０１）。
【００６２】
次に、プロセッサ４０（システムマネージャ４００）は、識別したコンピュータ構成に基づいて、コンピュートリソースプール１０及びＩ／Ｏデバイスリソースプール２０内から所要のコンピュートデバイス１００及びＩ／Ｏデバイス２００を選択する（Ｓ１０２）。なお、選択されるコンピュートデバイス１００及びＩ／Ｏデバイス２００の台数は、構築するコンピュータ構成に合わせて適宜調整される。
【００６３】
次に、プロセッサ４０（システムマネージャ４００）は、選択したコンピュートデバイス１００（群）及びＩ／Ｏデバイス２００（群）と共通メモリデバイス３０とを物理的／論理的に結合する（Ｓ１０３）。
【００６４】
次に、コンピュータシステム１は、アプリ配置を実施する（Ｓ１０４以降）。また、必要に応じて、コンピュータシステム１は、ユーザディスクトップ環境の復元などもこのタイミングで実施すればよい。
【００６５】
システムマネージャ４００は、識別したコンピュータ構成に基づいて、複数のＩ／Ｏデバイス２００を、例えば、ストレージデバイスであるハードディスクドライブ（ＨＤＤ）と通信ネットワーク用のネットワーク・インタフェイス・カード（ＮＩＣ）を選択する。この段階で、構築するコンピュータの一般的なコンピュータ要素（プロセッサ，主メモリ，ストレージ，Ｉ／Ｏ，ネットワーク等）が揃う。この処理過程で、システムマネージャ４００は、変更されたコンピュータシステム１の内部構成を示す管理ステータスを共通メモリデバイス３０内で管理する。 
図３で説明したコンピュータ構築フェーズを終えると、図４に示したようなコンピュータの構成ができあがる。
【００６６】
図４は、構築されたコンピュータアーキテクチャモデルの例を示し、物理層（ハードウェア（Ｈ）レイヤ）からアプリケーションレイヤとの間におけるソフトウェア（Ｓ）構造を示している。
【００６７】
このコンピュータは、物理的／論理的に接続された、ＣＰＵ Ｈ１、メモリＨ２（ＯＳ用ワークメモリ）、ＨＤＤ Ｈ３（ＯＳ用ストレージ）、ネットワークインタフェイスカードＨ４（ＮＩＣ，外部ネットワークインターフィス）を有している。
【００６８】
このＨＤＤ Ｈ３には、ＯＳ（カーネルＳ１等）が保持される。このＯＳ（カーネルＳ１等）は、ＣＰＵ Ｈ１を動作主体として、メモリ管理Ｓ２を通して適宜メモリＨ２を用いて動作する。この際、ソフトウェアとＣＰＵ Ｈ１とのインタフェイスはプロセス管理Ｓ３が管理する。
【００６９】
ＩＯデバイス２００であるＨＤＤ Ｈ３は、この例ではＳＡＴＡ（Serial-ATA）インタフェイスでシステムバスに接続する。このため、ＨＤＤ Ｈ３内の記録媒体とカーネルＳ１などとの情報伝達は、ＳＡＴＡドライバＳ４を介して行われる。
【００７０】
同様にカーネルＳ１等が外部ネットワークを通して通信を行う場合、カーネルＳ１等は、ＮＩＣドライバＳ５を介してネットワークインタフェイスカードＨ４との間でデータの受け渡しを行う。
【００７１】
ＳＡＴＡドライバＳ４の上位レイヤとしてはファイルシステムＳ６がある。このファイルシステムＳ６は、アプリケーションＳ７が使いやすいデータ形式でのデータの交換や機能の提供を行って、データをカーネルＳ１に引き渡す。
【００７２】
またＮＩＣドライバＳ５の上位レイヤには、ネットワークスタックＳ８がある。このネットワークスタックＳ８は、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）、ＵＤＰ（User Datagram Protocol）などのネットワークプロトコルを介してデータをカーネルＳ１に引き渡す。
【００７３】
本発明に係るアーキテクチャでは、これらのコンピュータ構成を、図４中に点線で示した境界で切り分けて管理する。
【００７４】
すなわち、１ないし複数のアプリケーションＳ７と、そのアプリケーションＳ７に関するメモリ管理Ｓ２、プロセス管理の管理情報Ｓ３が、共通メモリデバイス３０上で管理ステータスとして管理される（領域Ａ）。
【００７５】
また、ＩＯデバイスのインタフェイス内のデバイス固有の管理・制御機能までを受け持つ、ＳＡＴＡドライバＳ４及びＮＩＣドライバＳ５は、Ｉ／Ｏデバイス２００（プロセッサ）で管理される（領域Ｂ）。
【００７６】
他のカーネルＳ１におけるシステムコールＳ９、仮想メモリ管理、スケジューリングなどのＯＳの各機能がコンピュートデバイス１００（プロセッサ）で管理される（領域Ｃ）。
【００７７】
なお、システム管理Ｓ１０は、システムマネージャ（プロセッサ４０）で管理される（領域Ｄ）。
【００７８】
このように、コンピュートデバイス１００、Ｉ／Ｏデバイス２００、共通メモリデバイス３０がコンピュータ構築フェーズで適宜接続されると、通常のコンピュータシステムと同等のコンピュータアーキテクチャ構造有するコンピュータを構築できる。
【００７９】
図５から図８は、コンピュータシステム１の稼働時に適宜実行される処理フロー例を示したフローチャートである。
【００８０】
図５は、構築されたコンピュータがＩ／Ｏデバイスを駆動する処理ルーチン例を示している。
【００８１】
コンピュートデバイス１００（プロセッサ，ＯＳ）は、システムバスを介して所要のＩ／Ｏデバイス２００にアクセスし、Ｉ／Ｏデバイス２００（プロセッサ）に所要要求を伝達する（Ｓ２０１）。
【００８２】
Ｉ／Ｏデバイス２００（プロセッサ）は、コンピュートデバイス１００（プロセッサ，ＯＳ）からの所要要求を受け取って、ドライバプログラムを用いてデバイス部を要求通りに駆動する（Ｓ２０２）。
【００８３】
Ｉ／Ｏデバイス２００（プロセッサ，ドライバ）は、必要に応じてデバイス部の駆動結果等をコンピュートデバイス１００に応答する（Ｓ２０３以降）。
【００８４】
Ｉ／Ｏデバイス２００（プロセッサ，ドライバ）は、適宜バスを介してコンピュートデバイス１００（プロセッサ，ＯＳ）と通信しながら、既存のドライバ部の動作と同一の動作結果を提供する。
【００８５】
このような動作を、Ｉ／Ｏデバイス２００毎にＯＳに対して並列的に動作することで、既存のコンピュータと同一の処理動作を実現できる。
【００８６】
図６は、構築されたコンピュータに、新たにアプリケーションを割り当てる処理ルーチン例を示している。この新たに割り当てるアプリケーションは、共通メモリデバイス３０上に配置される。
【００８７】
この例では、システムマネージャ４００（プロセッサ４０）は、管理下のコンピュートデバイス１００から新規アプリケーションの起動通知を受け付ける（Ｓ３０１）。
【００８８】
システムマネージャ４００は、共通メモリデバイス３０に、起動通知を受けた新規アプリケーションを配置する（Ｓ３０２）。
【００８９】
システムマネージャ４００は、共通メモリデバイス３０に配置した新規アプリケーションを起動したコンピュートデバイス１００と関連付けてメモリ空間の割当てを行いアプリケーションが実行可能な様態にする。さらにシステムマネージャ４００は、管理ステータスの更新と共に、結果等をコンピュートデバイス１００に応答する（Ｓ３０３）。
【００９０】
アプリケーションの終了は、同様の手順で、共通メモリデバイス３０に配置したアプリケーションを削除（待避）すればよい。
【００９１】
このように、起動したコンピュータに新規アプリケーションを割り当てることで、このコンピュータは、既存のアプリケーションの起動／終了と同様なアプリケーションの稼働環境を得られる。
【００９２】
図７は、構築された所要コンピュータに、デバイス単位のリソース増減を実施する処理ルーチン例を示している（スケーラビリティ対応）。
【００９３】
システムマネージャ４００（プロセッサ４０）は、所望機能、プロセッサ能力、ストレージ量などの増減のために、所要コンピュータに、コンピュートデバイス１００及び／又はＩ／Ｏデバイス２００の物理的／論理的脱着をデバイス単位で実行する（Ｓ４０１）。
【００９４】
次に、システムマネージャ４００は、管理ステータスを再構築して共通メモリデバイス３０の管理ステータスを更新する（Ｓ４０２）。
【００９５】
上記処理フローが実施されることで、システム構成を変更されたコンピュータは、既存のコンピュータがホットスワップされた時の動作と同様に、自律的に変更されたデバイスを識別して、自動的にその構成で動作可能になる（Ｓ４０３以降）。
【００９６】
このように、稼働中のコンピュータにデバイスを論理的に接続することで、このコンピュータは、インサービス環境下でＩ／Ｏデバイス２００が利用可能になり、またアプリケーションのデータを失うことなくコンピュートデバイス１００の交換が可能になる。
【００９７】
図８は、コンピュータシステム１に、デバイス単位でデバイスのホットスワップを実施するフローを示している。ホットプラグ／ホットアド／ホットリムーブも同様に動作する。
【００９８】
管理者は、所望機能、プロセッサ能力、ストレージ量などの増減のために、コンピュータシステム１に、コンピュートデバイス１００及び／又はＩ／Ｏデバイス２００の物理的／論理的脱着を実行する。また、コンピュートデバイス１００及び／又はＩ／Ｏデバイス２００の故障でも、同様な状態になる。
【００９９】
システムマネージャ４００（プロセッサ４０）は、コンピュートデバイス１００及び／又はＩ／Ｏデバイス２００の物理的／論理的脱着を識別し、稼働中のコンピュータ（群）のデバイス構成を維持できているか確認する（Ｓ５０１）。
【０１００】
システムマネージャ４００は、ホットスワップによってデバイス構成を維持できていない稼働中のコンピュータについて、プール中のデバイスを新たに割り当てて、デバイス構成を補完する（Ｓ５０２）。
【０１０１】
システムマネージャ４００は、管理ステータスを再構築して、共通メモリデバイス３０内の管理ステータスを更新する（Ｓ５０３）。
【０１０２】
システムマネージャ４００は、必要に応じて、稼働中のコンピュータ（利用者）に、ホットスワップした新旧デバイスを通知したりログを残す（Ｓ５０４以降）。
【０１０３】
このように、稼働中のコンピュータシステム（リソースプール）にデバイス単位の変化が生じても、インサービス中のコンピュータ（群）にサービスの停止を求めることなく、サービスを継続できる。この際、あるコンピュータの動作主体となっているコンピュートデバイスが例えサドンリムーブされたとしても、システムマネージャ４００は、同等のコンピュートデバイスを即座にそのコンピュータに組み入れて、サービスの維持を図る。この結果、インサービス中にコンピュートデバイスの入れ替えが生じても、個々のデバイスやソフトウェアの自律的動作によって、アプリケーションのデータ損失等を生じずにサービスが維持される。
【０１０４】
ここで、既存のコンピュータシステムにおいて、コンピュートデバイスの活線挿抜を困難にしている原因を簡単に説明する。
【０１０５】
本発明者らの考察によれば、コンピュートデバイスの活線挿抜が行われていない要因は以下の理由によるものと考える。 
（１）ユーザが使用するＯＳ及びアプリケーションが主にコンピュート内のストレージに収容されている。 
（２）ＩＯデバイスのステータスがコンピュート内のメモリに収容されている。
【０１０６】
また、同様に、Ｉ／ＯデバイスのＯＳ非依存な活線挿抜が行われていない要因は以下の理由によるものと考える。 
（１）ＩＯデバイスのドライバがＯＳに依存して作られている。 
（２）ドライバ及びＯＳがコンピュート内にキャッシュされている。
【０１０７】
上記説明したコンピュータシステム１は、共通メモリデバイス３０を設けることによって これら課題を克服している。すなわち、上記コンピュータシステム１は、システムマネージャにおいて、リソース分離型コンピュータシステムの基本的ハードウェア構成を変えることなく、コンピュートデバイスを含むハードウェアリソースをサービス実行中に活線状態で増減できる。
【０１０８】
具体的には、システムマネージャ４００がプロセスのステータスやＩＯステータスなどを管理ステータスに含めて共通メモリデバイス３０上に管理する。このため、コンピュートの追加や、入れ替え、削除後の追加を、活線状態で実行したとしても、所要なデータを引き継ぐ事が可能になっている。
【０１０９】
また、既存のリソース分離型コンピュータシステムでは、コンピュートを入れ替えると、ＯＳも同時に入れ替わってしまう可能性がある。これに対して、この実施形態は、デバイスドライバプログラムをＩ／Ｏデバイス２００内に搭載することで対処している。これによって、コンピュータシステム１は、コンピュートリソースに対して、ＯＳ非依存のインタフェイスを提供できる。すなわち、コンピュートに入れ替えに伴い例えＯＳが入れ替わった場合でも、他の構成（ＩＯデバイス）はそのまま変更せずに使用することが可能になる。
【０１１０】
ユーザサイドの観点では、例えばコンピュートの故障や、スケールアップ／ダウン時に、コンピュートデバイスをシステム側が切り替えたとしても共通メモリデバイス３０内のアプリケーションをそのまま使用することが可能になる。
【０１１１】
また、ユーザが使用中のコンピュートデバイスが故障しても、インサービス中に自律的／自動的にコンピュートデバイスが交換されて、データ損失をユーザが負うことなく作業を継続できる。これは、前述したように、共通メモリデバイス３０（ステータスメモリ部）が必要な各ステータスを管理しているためである。
【０１１２】
なお、既存のリソース分離型コンピュータシステムでは、先に述べた通り、コンピュートの交換はできない。これは主に、プロセスのステータス、ＩＯのステータスがコンピュート側に残っているためで、コンピュートを入れ替えるとこれらの情報が無くなってしまい、動作を引継ぐ事ができないからである。多くの場合、アプリケーションを含むソフトウェアの再構築が既存のリソース分離型コンピュータシステムにおいては必要になる。
【０１１３】
換言すれば、上記第１の実施形態によれば、コンピュートデバイスを含むハードウェアリソースをサービス実行中に活線状態で増減可能なコンピュータシステムを提供できる。
【０１１４】
次に、第２の実施形態を説明する。なお、第１の実施形態で説明した内容は、説明を省略する。
【０１１５】
［第２の実施形態］ 
図９は、第２の実施形態に係るコンピュータシステム２の構成を示すブロック図である。
【０１１６】
図示するように、コンピュータシステム２は、コンピュータシステム１のシステムバス（インターコネクション）の代わりにファブリックスイッチ５０を採用している。
【０１１７】
コンピュートリソースプール１０とＩ／Ｏデバイスリソースプール２０に含まれている個々のデバイス（コンピュートデバイス１００，Ｉ／Ｏデバイス２００）は、ファブリックスイッチ５０を介して個々のデバイス間及び共通メモリデバイス３０にアクセス可能に接続されている。この個々のデバイスは、所望に応じて、論理的／物理的に脱着可能に接続される。
【０１１８】
図１０は、システムマネージャ４００に関するソフトウェア構成を例示した説明図である。
【０１１９】
図示されたシステムマネージャ４００は、リソースマネージャ４１０及びアプリケーションマネージャ４２０の他に、ファブリックマネージャ４３０を備えている点で図２（ａ）に示されたシステムマネージャ４００と異なっている。
【０１２０】
ファブリックマネージャ４３０は、構築するコンピュータのデバイス構成に応じて、ファブリックスイッチ５０内の接続ラインを設定する。
【０１２１】
この場合、ファブリックマネージャ４３０は、リソースマネージャ４１０にファブリックスイッチ５０内の接続ラインの状態を通知する機能を有していることが望ましい。
【０１２２】
ファブリックスイッチ５０は、例えば、引用文献１に記載したスイッチ構造を採用すればよい。ファブリックマネージャ４３０は、引用文献１に記載されているシステムマネージャの処理動作をプロセッサに行わせる。
【０１２３】
この構成によれば、コンピュータシステム２に接続するコンピュートリソースプール１０とＩ／Ｏデバイスリソースプール２０の物理的配置に関する自由度が飛躍的に向上する。例えば、複数のサーバラック間で１つのコンピュータシステム２を構築することも可能になる。また、光ファイバ回線を用いて複数の拠点間で１つのコンピュータシステム２を構築することも可能になる。
【０１２４】
次に、第３の実施形態を説明する。なお、第１及び第２の実施形態で説明した内容は、説明を省略する。本実施形態は、第２の実施形態（ファブリック構成）をベースに記載するが第１の実施形態（インターコネクト構成）をベースにすることも可能である。
【０１２５】
［第３の実施形態］ 
図１１は、第３の実施形態に係るコンピュータシステム３の構成を示すブロック図である。
【０１２６】
図示するように、コンピュータシステム３は、挿抜可能な共通メモリデバイス３０を複数具備している。
【０１２７】
個々のデバイス（コンピュートデバイス１００，Ｉ／Ｏデバイス２００）は、この実施形態ではファブリックスイッチ５０を介して個々のデバイス間及び何れの共通メモリデバイス３０にもアクセス可能に接続されている。
【０１２８】
システムマネージャ４００は、共通メモリデバイス３０に配置する個々のアプリケーションについて、複数の共通メモリデバイス３０に冗長化して配置する。
【０１２９】
このように、共通メモリデバイス３０の冗長構成を有することで、共通メモリデバイス３０の一つが例え故障やサドンリムーブされた場合であっても、サービスが継続できる。
【０１３０】
また、システムマネージャ４００（リソースマネージャ）は、共通メモリデバイス３０の冗長構成が崩れた際に、新たに冗長化する別の共通メモリデバイスを自動的に探索して定め、共通メモリデバイス３０の冗長構成を維持する機能を設けることが望ましい。また、共通メモリデバイス３０は、必ずしも共通メモリデバイス３０単位で冗長構成とせずとも、個々のアプリケーション毎に冗長構成を維持可能なように、ステータス毎及びアプリケーション毎に少なくとも２台ずつの共通メモリデバイス３０に配置することを実施してもよい。また、スレーブ側とする共通メモリデバイス３０は、Ｉ／Ｏデバイス２００に含まれているストレージ装置を用いて実現するように、システムを構成してもよい。
【０１３１】
このように、共通メモリデバイス３０の冗長構成を具備することで、共通メモリデバイス３０のホットプラグが可能になり、システムの安定運用を容易にする。
【０１３２】
以上説明したように、本発明を適用したコンピュータシステムは、コンピュートデバイスを含むハードウェアリソースをサービス実行中に活線状態で増減可能となる。
【０１３３】
この結果、デバイス分離型コンピュータの構成変更の自由度が更に向上する。効果の一例では、本発明によれば、リソース管理ツリー上で、コンピュートデバイスもＩＯデバイスも等価となる。これによりサービスに必要なプロセッシング、ストレージ、ネットワークなどのあらゆる種類の性能を、インサービスでダイナミックにスケールアップ・ダウンする事が可能になる。
【０１３４】
更に、別の観点の効果は、冗長構成の自由度が更に向上し、より少ないリソース（物理デバイス）で高可用性を実現できる点が挙げられる。これは、障害時の構成変更についても人為的な挿抜と同様に、柔軟かつダイナミックに、コンピュートデバイスとＩＯデバイスの区別なく、デバイス単位でインサービス中に交換可能になるためである。
【０１３５】
上記システムマネージャは、必要に応じた実行命令群やコード群で構成すればよい。また、このコンピュータシステムは、必ずしも一つの装置として構築される必要はなく、複数のサーバ／コンピュータなどが組み合わさって構築されてもよい。また、システムマネージャの一部／全ての各部をハードウェアやファームウェア（例えば、一ないし複数のLSI：Large-Scale Integration，FPGA：Field Programmable Gate Array，電子素子の組み合わせ）で置換することとしてもよい。同様に、各部の一部のみをハードウェアやファームウェアで置換することとしてもよい。
【０１３６】
また、このシステムマネージャなどに関するプログラムは、記録媒体に非一時的に記録されて頒布されても良い。当該記録媒体に記録されたプログラムは、有線、無線、又は記録媒体そのものを介してメモリに読込まれ、プロセッサ等を動作させる。
【０１３７】
尚、本明細書では、記録媒体には、類似するタームの記憶媒体やメモリ装置、ストレージ装置なども含むこととする。この記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスク装置、テープメディアなどが挙げられる。また、記録媒体は、不揮発性であることが望ましい。また、記録媒体は、揮発性モジュール（例えばRAM：Random Access Memory）と不揮発性モジュール（例えばROM：Read Only Memory）の組み合わせを用いることとしてもよい。
【０１３８】
なお、実施形態を例示して本発明を説明した。しかし、本発明の具体的な構成は前述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。例えば、上述した実施形態のブロック構成の分離併合、手順の入れ替えなどの変更は本発明の趣旨および説明される機能を満たせば自由であり、上記説明が本発明を限定するものではない。
【０１３９】
また、上記の実施形態の一部又は全部は、以下のようにも記載されうる。尚、以下の付記は本発明をなんら限定するものではない。  
［付記１］
Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、
前記共通メモリデバイスは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスとバスを介して接続され、
前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを前記共通メモリデバイス上で管理すると共に、前記個々のデバイスを使用するアプリケーションの配置を前記共通メモリデバイス上で管理する、システムマネージャを具備する
コンピュータシステム。
【０１４０】
［付記２］
前記システムマネージャは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の接続を、切り替えられた際に、
切り替えられた後の接続関係の状態に前記管理ステータスを変更して、前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、該コンピュータシステムに反映する
上記付記記載のコンピュータシステム。
【０１４１】
［付記３］
前記システムマネージャは、前記共通メモリデバイスに配置するアプリケーションを、コンピュートリソースを用いるＯＳから切り離して、スライス毎、グループ毎若しくはパーテション毎に前記共通メモリデバイス上で管理する
上記付記記載のコンピュータシステム。
【０１４２】
［付記４］
前記Ｉ／Ｏデバイスリソースプールに含める個々のデバイスは、プロセッサと、該プロセッサによって動作する、ＯＳ 及び／又は 前記システムマネージャに配置されたアプリケーション とのバスを介した通信用ドライバプログラムを具備し、
該コンピュータシステムは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続を、活線状態で切り替えられた際に、
変更された前記管理ステータスに基づいて、前記共通メモリデバイスに配置された各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、前記ドライバプログラムを読み出し可能に関連付けることで該コンピュータシステムに反映する
上記付記記載のコンピュータシステム。
【０１４３】
［付記５］
前記Ｉ／Ｏデバイスリソースプールに含める個々のデバイスは、プロセッサと、該プロセッサによって動作する、ＯＳ及び／又は前記システムマネージャに配置されたアプリケーションとのバスを介した通信用の第１のドライバプログラムを具備し、
該コンピュータシステムは、
前記コンピュートリソースプールに含まれるプロセッサを動作主体として、前記ＯＳ及び／又は前記システムマネージャに配置されたアプリケーションが使用して、前記第１のドライバプログラムと通信することで前記Ｉ／Ｏデバイスリソースプールに含まれた前記個々のデバイスとの間でコミュニケートする第２のドライバプログラムを具備し、
該コンピュータシステムは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続を、活線状態で切り替えられた際に、
変更された前記管理ステータスに基づいて、前記共通メモリデバイスに配置された各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、前記第１及び第２のドライバプログラムを読み出し可能に関連付けることで該コンピュータシステムに反映する
上記付記記載のコンピュータシステム。
【０１４４】
［付記６］
該コンピュータシステムは、
前記共通メモリデバイスと、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスと、の間の接続を、活線状態で挿抜可能に構成されている
上記付記記載のコンピュータシステム。
【０１４５】
［付記７］
該コンピュータシステムは、複数の共通メモリデバイスを挿抜可能に具備し、
前記システムマネージャは、
個々のアプリケーションおよび管理ステータスについて、複数の共通メモリデバイスに冗長化して配置すると共に、
任意の共通メモリデバイスが活線状態で抜かれた際に、新たに冗長化する別の共通メモリデバイスを探索して、個々のアプリケーションおよび管理ステータスの冗長構成を維持する
上記付記記載のコンピュータシステム。
【０１４６】
［付記８］
前記バスはファブリックスイッチで構成され、
前記システムマネージャは、構築するコンピュータ構成に合わせて、前記共通メモリデバイス上で前記管理ステータスと前記アプリケーションの配置を管理すると共に、前記ファブリックスイッチの管理を実施する
上記付記記載のコンピュータシステム。
【０１４７】
［付記９］
システムマネージャを動作させるプロセッサ及びメモリ、Ｉ／Ｏデバイスリソースプールとコンピュートリソースプールを接続するバスとを含むコンピュータシステムであって、
前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスと前記バスを介して接続される前記共通メモリデバイスを更に含み、
更に前記システムマネージャは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを前記共通メモリデバイス上で管理すると共に、前記個々のデバイスを使用するアプリケーションの配置を前記共通メモリデバイス上で管理する
コンピュータシステム。
【０１４８】
［付記１０］
付記９記載のコンピュータシステムであって、
前記バスはファブリックスイッチで構成され、
更に前記システムマネージャは、構築するコンピュータ構成に合わせて、前記共通メモリデバイス上で前記管理ステータスと前記アプリケーションの配置を管理すると共に、前記ファブリックスイッチの管理を実施する
コンピュータシステム。
【０１４９】
［付記１１］
付記９又は１０に記載のコンピュータシステムであって、
前記共通メモリデバイスは、挿抜可能な複数の共通メモリデバイスで構成され、
更に前記システムマネージャは、
前記管理ステータス及び前記アプリケーションについて、複数の共通メモリデバイス上に冗長化して管理し、
更に、前記複数の共通メモリデバイスの冗長化が崩れた際に、新たに冗長化する別の共通メモリデバイスを探索し、前記管理ステータス及び前記アプリケーションを前記別の共通メモリデバイスで管理して、共通メモリデバイスの冗長構成を維持する
コンピュータシステム。
【０１５０】
［付記１２］
プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムの前記プロセッサで実行され、
前記プロセッサを、
前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理する第１の管理手段と、
個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理する第２の管理手段、
として動作させる
プログラム。
【０１５１】
［付記１３］
前記プロセッサを、前記システムマネージャとして、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の接続を、切り替えられた際に、
切り替えられた後の接続関係の状態に前記管理ステータスを変更して、前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、該コンピュータシステムに反映する
ように構築された上記付記記載のプログラム。
【０１５２】
［付記１４］
前記プロセッサを、前記システムマネージャとして、
前記共通メモリデバイスに配置するアプリケーションを、コンピュートリソースを用いるＯＳから切り離して、スライス毎、グループ毎若しくはパーテション毎に前記共通メモリデバイス上で管理する
ように構築された上記付記記載のプログラム。
【０１５３】
［付記１５］
前記プロセッサを、前記システムマネージャとして、
個々のアプリケーションおよび管理ステータスについて、複数の共通メモリデバイスに冗長化して配置すると共に、
任意の共通メモリデバイスが活線状態で抜かれた際に、新たに冗長化する別の共通メモリデバイスを探索して、個々のアプリケーションおよび管理ステータスの冗長構成を維持する
ように構築された上記付記記載のプログラム。
【０１５４】
［付記１６］
前記プロセッサを、前記システムマネージャとして、
構築するコンピュータ構成に合わせて、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスと前記共通メモリデバイスとの接続を受け持つファブリックスイッチを操作する第３の管理手段
として動作する
上記付記記載の上記付記記載のプログラム。
【０１５５】
［付記１７］
上記付記記載の前記プロセッサを前記システムマネージャとして動作させるプログラムをコンピュータ読み取り可能に非一時的に記録した記録媒体。
【０１５６】
［付記１８］
プロセッサとＩ／Ｏデバイスリソースプールとコンピュートリソースプールと共通メモリデバイスとを具備し、バスを介して前記共通メモリデバイスと前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールを構成する個々のデバイスがアクセス可能に接続されたコンピュータシステムで実行され、
前記プロセッサは、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスの管理ステータスを適時前記共通メモリデバイス上で管理し、
また、前記プロセッサは、該個々のデバイスを使用するアプリケーションの配置を、前記共通メモリデバイス上で管理する
システム制御管理方法。
【０１５７】
［付記１９］
前記プロセッサは、
前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の接続を、切り替えられた際に、
切り替えられた後の接続関係の状態に前記管理ステータスを変更して、前記共通メモリデバイスに配置した各々のアプリケーションと、前記Ｉ／Ｏデバイスリソースプールに含まれる個々のデバイス及び／又は前記コンピュートリソースプールに含まれる個々のデバイスと、の論理的接続関係を、該コンピュータシステムに反映する
上記付記記載のシステム制御管理方法。
【０１５８】
［付記２０］
前記プロセッサは、
前記共通メモリデバイスに配置するアプリケーションを、コンピュートリソースを用いるＯＳから切り離して、スライス毎、グループ毎若しくはパーテション毎に前記共通メモリデバイス上で管理する
上記付記記載のシステム制御管理方法。
【０１５９】
［付記２１］
前記プロセッサは、
個々のアプリケーションおよび管理ステータスについて、複数の共通メモリデバイスに冗長化して配置すると共に、
任意の共通メモリデバイスが活線状態で抜かれた際に、新たに冗長化する別の共通メモリデバイスを探索して、個々のアプリケーションおよび管理ステータスの冗長構成を維持する
上記付記記載のシステム制御管理方法。
【０１６０】
［付記２２］
前記プロセッサは、
構築するコンピュータ構成に合わせて、前記Ｉ／Ｏデバイスリソースプールと前記コンピュートリソースプールに含まれる前記個々のデバイスと前記共通メモリデバイスとの接続を受け持つファブリックスイッチを操作する
上記付記記載のシステム制御管理方法。
【産業上の利用可能性】
【０１６１】
本発明によれば、ＩＯデバイスの構成変更のみならず、コンピュートの構成もインサービスで自由に入れ替える事ができ、ダイナミックなスケールアップや、迅速な障害対応が可能なコンピュータシステムが構成できる。
【符号の説明】
【０１６２】
１，２，３  コンピュータシステム（リソース分離型システム）
１０    コンピュートリソースプール
２０    Ｉ／Ｏデバイスリソースプール
３０    共通メモリデバイス
４０    プロセッサ（システムマネージャの動作主体）
５０    ファブリックスイッチ
１００  コンピュートデバイス
２００  Ｉ／Ｏデバイス
Ｈ１    ＣＰＵ
Ｈ２    メモリ
Ｈ３    ＨＤＤ（ハードディスクドライブ）
Ｈ４    ＮＷ（ネットワーク）カード
Ｓ１    カーネル
Ｓ２    メモリ管理
Ｓ３    プロセス管理
Ｓ４    ＳＡＴＡドライバ
Ｓ５    ＮＩＣドライバ
Ｓ６    ファイルシステム
Ｓ７    アプリケーション
Ｓ８    ＮＷ（ネットワーク）スタック
Ｓ９    システムコール
Ｓ１０  システム管理
【図１】
2017102552.tif 000003
【図２】
2017102552.tif 000004
【図３】
2017102552.tif 000005
【図４】
2017102552.tif 000006
【図５】
2017102552.tif 000007
【図６】
2017102552.tif 000008
【図７】
2017102552.tif 000009
【図８】
2017102552.tif 000010
【図９】
2017102552.tif 000011
【図１０】
2017102552.tif 000012
【図１１】
2017102552.tif 000013