以下の説明では、情報について、テーブルが採用されるが、情報のデータ構造は限定されず、他のデータ構造であってもよい。情報はデータ構造に依存しないため、例えば「kkkテーブル」を「kkk情報」と呼ぶことができる。テーブルのような情報は、2以上の情報要素に分割されてもよいし、2種以上の情報の全部又は一部が同一情報に集約されてもよい。
また、以下の説明において、「インタフェース部」は、1以上のインタフェースを含む。1以上のインタフェースは、1以上の同種のインタフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、1以上のメモリに加えて、1以上のPDEVを含んでもよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
また、以下の説明において、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明において、「管理システム」は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システムでよい。また、例えば、管理計算機(例えばサーバ)が表示用情報を遠隔の表示用計算機(例えばクライアント)に送信し表示用計算機がその情報を表示する場合(管理計算機が表示用計算機に情報を表示する場合)、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システムでよい。管理システムは、インタフェース部、記憶部及びそれらに接続されたプロセッサ部を有してよい。インタフェース部は、ユーザインタフェース部と、通信インタフェース部とのうちの少なくとも1つを含んでよい。ユーザインタフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インタフェース部は、1以上の通信インタフェースデバイスを含んでよい。管理システムにおける計算機が「表示用情報を表示する」ことは、計算機が有する表示デバイスに表示用情報を表示することであってもよいし、計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
また、以下の説明において、プロセッサ部は、プログラムを実行し、記憶部(例えば、メモリ)及びインタフェース部(例えば、通信ポート)等のうちの少なくとも1つを用いながら処理を行う。処理の主体について、以下の説明ではプログラムを主体とする場合があるが、プログラムを実行するプロセッサ部を主体としてもよい。また、プロセッサ部が主体となっている処理は、1以上のプログラムを実行することにより行われると解釈することができる。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号又は参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、その要素に割り振られた識別子(例えば番号及び符号のうちの少なくとも1つ)又は参照符号全体を使用することがある。
また、以下の説明において、「計算機システム」は、サーバシステムとストレージシステムのうちの少なくとも1つを含んでよい。「サーバシステム」は、1以上の物理的なサーバであってもよいし、少なくとも1つの仮想的なサーバ(例えばVM(Virtual Machine))を含んでもよい。「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばSDS(Software Defined Storage))を含んでもよい。
また、以下の説明において、「リソース」とは、計算機システムリソース(計算機リソース)の略であり、単独で又は1以上の他のリソースとの組み合せにより機能性を実現するエレメント、典型的には、サーバ、ストレージ装置(ストレージ)、スイッチ及びネットワークのような装置に該当するものとする。別の言い方をすれば、「リソース」は、CPU及びメモリのようなコンポーネント(装置のコンポーネント)に該当しないでよいものとする。
また、以下の説明において、「機能性」とは、1又は複数のリソースによって実現される機能、サービス又はシステムである。
また、以下の説明において、「管理者」とは、サーバ、ストレージ及びネットワークといったリソースの管理を行う者である。管理者は、リソースの追加、削除及び交換等の保守作業と後述の管理サーバ3上のテーブル群30の管理とのうちの少なくとも1つを行うことができる。
また、以下の説明において、「ユーザ」とは、基盤システムの配備を求める者である。
以下、図面を参照して、本発明の一実施の形態を詳述する。
図1は、本実施形態に係る情報システムの構成を示す。
図1において、情報システムは、リソースプール4と、リソースプール4を管理する管理システム1とを含む。管理システム1は、1又は複数の管理クライアント2、及び、1又は複数の管理サーバ3を含む。そして、これら管理クライアント2及び管理サーバ3が管理ネットワーク5を介して互いに接続されている。また、リソースプール4も、管理ネットワーク5に接続されている。リソースプール4には、1又は複数の電源盤6より電力が供給される。
管理クライアント2は、ユーザが使用するコンピュータ装置であり、例えばパーソナルコンピュータや、ワークステーション又はメインフレームなどから構成される。管理クライアント2は、管理ネットワーク5を介して管理サーバ3にアクセスし、管理サーバ3が提供する各種の処理を実行する。管理クライアント2は、基盤システム配備要求を管理サーバ3に送信する。管理者が操作する管理クライアント2によって、ユーザ毎に、1又は複数の基盤システム配備要求が送信される。「基盤システム配備要求」は、基盤システムを配備する要求である。基盤システム配備要求には、例えば、基盤システムソフトウェアIDと配備条件とのうちの少なくとも配備条件が指定される。「基盤システム」とは、リソースプール4から抽出された複数のリソースで構成されたシステムであり、「基盤システムソフトウェア」とは、基盤システムにインストールされるソフトウェア(例えば、仮想サーバソフトウェア(例えばハイパバイザ)、高信頼データベース管理システム、又は、クラスタ型分析ソフトウェア)である。基盤システムと基盤システムソフトウェアとの組合せが、ユーザ所望のサービスを提供する計算機システムのようなシステム(例えば仮想的なアプライアンス)でよい。「配備条件」は、基盤システムとして配備される(割り当てられる)リソースに関する条件であり、例えば、サーバ台数、機能性、及び、リソース共有条件のうちの少なくとも1つを含んでよい。配備条件の少なくとも一部の指定は、後述するテンプレートID及びバージョンの指定でよい。指定されたテンプレートID及びバージョンと、それらに関連付いている後述の情報(例えば情報306C〜306E)が、配備条件の少なくとも一部でよい。
管理サーバ3は、リソースプール4を構成する各リソースを検知及び管理する。管理サーバ3は、管理クライアント2からの基盤システム配備要求に応じ、当該配備要求に合致したリソースを抽出し、当該配備要求に従う基盤システムを、抽出したリソースに配備する(割り当てる)。管理サーバ3は、例えば、パーソナルコンピュータ、ワークステーション又はメインフレームなどから構成される。管理サーバ3は、メモリ11、NIC(Network Interface Card)12、I/Oインタフェース13、入力デバイス14、出力デバイス15、及びそれらに接続されたCPU10を備える。
CPU10は、プロセッサ部の一例である。CPU10は、管理サーバ3全体の動作制御を司るデバイスである。このCPU10がメモリ11に格納された各種プログラムを実行することにより、管理サーバ3全体として各種の制御処理を実行する。
メモリ11は、記憶部の一例である。メモリ11は、各種のプログラム及び制御情報を保持するために用いられるほか、CPU10のワークメモリとしても用いられる。
NIC12及びI/Oインタフェース13のうちの少なくとも1つは、インタフェース部の一例である。NIC12は、管理サーバ3を管理ネットワーク5に接続するためのネットワークインタフェースである。I/Oインタフェース13は、管理サーバ3に入力デバイス14及び出力デバイス15を接続するためのインタフェースであり、USB(Universal Serial Bus)インタフェースなどから構成される。
入力デバイス14は、キーボード、マウス及びマイクロフォンなどから構成され、管理者が管理サーバ3に対して各種の操作入力を行うときに使用される。出力デバイス15は、モニタディスプレイ及びスピーカなどから構成され、画像及び音声などの情報を管理者3に提示する。
リソースプール4は、複数のラック40を有する。複数のラック40に、複数種類のリソースを含んだ複数のリソースの搭載が可能である。結果として、リソースプール4は、複数種類のリソースを含んだ複数のリソースを含む。ラック40毎に、1以上の電源盤6が設けられている。なお、図1の例によれば、ラック3は未だ搭載されておらず、ラック3を搭載可能な物理的なスペースがある。ラック3が当該スペースに追加された場合、ラック3に搭載のリソースには、電源盤3及び4から電力が供給されることになる。
複数のリソースは、例えば、標準イーサネットスイッチ41、高性能イーサネットスイッチ42、FC(Fibre Channel)スイッチ43、標準サーバ44、高性能サーバ45、FCストレージ46、PDU(Power Distribution Unit)47、及び高性能コアイーサネットスイッチ48を含む(イーサネットは登録商標)。リソースプール4が含む複数のリソースの各々は、そのリソースが持つI/Oインタフェース(不図示)を介して管理ネットワーク5に接続され、管理サーバ3と通信を行う。各ラック40を、そのラック40に搭載されたリソースの物理位置として扱うことが可能である。例えば、FCストレージ1の物理位置は“ラック1”とすることができる。また、高性能コアイーサネットスイッチ1のように全てのラック40に接続されているリソースについては、そのリソースの物理位置は“共通”とすることができる。標準イーサネットスイッチ41、高性能イーサネットスイッチ42、FCスイッチ43及び高性能コアイーサネットスイッチ48の各々は、ネットワーク又はスイッチ(例えばネットワークスイッチ)の一例である。標準サーバ44及び高性能サーバ45の各々は、サーバの一例である。FCストレージ46は、ストレージ(ストレージ装置)の一例である。
標準サーバ44及び高性能サーバ45の各々は、図2に示すように、メモリ61、補助記憶装置62(例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive))、1以上のI/Oインタフェース63、拡張カード64(例えば、GPGPU(General-purpose computing on graphics processing units))、及び、それらに接続されたCPU60を備える。なお、例えば、補助記憶装置62及び拡張カード64のうちの少なくとも1つはなくてもよい。また、I/Oインタフェース63は、NICやHBA(Host Bus Adaptor)などから構成されてよい。CPU60は、メモリ61に格納されたプログラム65に従って必要な制御処理を実行する。
図1に示すように、管理サーバ3のメモリ11には、リソース管理プログラム20及びテーブル群30が格納されている。
リソース管理プログラム20は、リソース管理部21、トポロジ管理部22及び基盤システム管理部23といった複数のプログラムモジュールを含む。これらのプログラムモジュールの各々が独立したプログラムでもよいし、これらのプログラムモジュールのうちの2以上が1つのプログラムでもよい。
テーブル群30は、1以上のテーブルである。テーブル群30は、リソーステーブル31、リソースグループテーブル32、リソースグループ定義テーブル33、トポロジテーブル34、トポロジ関連テーブル33、基盤システムテンプレートテーブル36及び基盤システム配備テーブル37を含む。
リソース管理部21は、リソースプール4に存在するリソースに関する情報を管理するためのプログラムである。より具体的には、例えば、リソース管理部21は、リソースプール4に存在するリソースに関する情報を、リソーステーブル31を用いて管理する。さらに、リソース管理部21は、リソースグループ定義テーブル33にて定義された条件に合致した特定の機能性を持つ1又は複数のリソースを、リソースグループとして検出し、検出したリソースグループに関する情報をリソースグループテーブル42にて管理する。また、リソース管理部21は、リソースの追加、更新又は削除行われた際、当該リソースの変更を検知し、リソーステーブル31を更新する。
トポロジ管理部22は、リソース間の物理接続関係又は論理接続関係を、既に知られているトポロジ検知手法により検知し、検知した関係をトポロジテーブル34にて管理する。ここで、当該既知のトポロジ検知手法としては、例えばイーサネットにおいては、IEEEの標準規格であるLLDP(Link Layer Discovery Protocol)と呼ばれる隣接関係情報の交換プロトコルが挙がられる。本LLDPをサポートするイーサネットスイッチや、サーバ、またはサーバ上のOS(Operating System)より当該LLDPにより検出された隣接リソースの情報を用いることで、後述するトポロジテーブル34に示す隣接関係情報を作成することが可能である。また、SAN(Storage Area Network)においても、Fabric Loginや、Port Loginと呼ばれる認証処理の結果を例えばFCスイッチから収集することで、容易にFCスイッチ間、FCスイッチとサーバ間、さらにFCスイッチとストレージ間の接続関係を把握することができ、後述するトポロジテーブル34に示す隣接関係情報を作成することが可能である。
基盤システム管理部23は、基盤システム配備要求を管理クライアント2から受付けた際に、基盤システムテンプレートテーブル36にて管理される基盤システムテンプレートを用い、リソース管理部21が管理するリソースの中から、配備要求に従う配備条件に合致したリソースを選択して、当該配備要求に従う基盤システムを、当該選択されたリソースに対して配備する。また、基盤システム管理部23は、配備された基盤システムと、当該基盤システムにて使用されているリソースに関する情報を基盤システム配備テーブル37にて管理する。
以下、テーブル群30に含まれる各テーブルを説明する。
図3は、リソーステーブル31の構成を示す。
リソーステーブル31は、リソースプール4を構成するリソース毎に当該リソースが持つ機能性を管理するためのテーブルである。リソーステーブル31は、リソース毎に、リソースID301A、リソース種別301B、リソース構成301C、機能性301D及び物理位置301Eといった情報を保持する。図3の説明において、1つのリソースを例に取り、そのリソースを「対象リソース」と呼ぶ。
リソースID301Aは、対象リソースを一意に識別するための識別子である。図3に示す一例では、便宜上、リソースIDとして、対象リソースの種別が容易に分かる識別子が付与されている。
リソース種別301Bは、対象リソースの種別を表す情報である。リソース構成301Cは、対象リソースのコンポーネントに関する情報である。例えば、対象リソースが標準サーバ又は高性能サーバの場合、リソース構成301Cは、対象リソースのCPU60の種別や性能を表す情報、対象リソースのメモリ61の性能を表す情報、及び、対象リソースのI/Oインタフェースの詳細を表す情報を含んでよい。
機能性301Dは、対象リソースが備える1以上の機能性を表す情報である。物理位置31Eは、対象リソースの物理位置を表す情報(例えば当該リソースが搭載れたラック40のID)である。なお、物理位置301Eは、ラック40のIDに代えて又は加えて他種の情報を含んでもよい。
図4は、リソースグループテーブル32の構成を示す。
リソースグループテーブル32は、複数のリソースにより構成される機能性に関する情報を管理するためのテーブルである。リソースグループテーブル32は、リソースグループ毎に、リソースグループID302A、メンバリソース302B及び機能性302Cといった情報を保持する。本実施形態において、「リソースグループ」とは、複数のリソースの単なる集合ではなく、1以上の機能性を実現する複数のリソースの集合である。図4の説明において、1つのリソースグループを例に取り、そのリソースグループを「対象リソースグループ」と呼ぶ。
リソースグループID302Aは、対象リソースグループを一意に識別するための識別子である。メンバリソース302Bは、対象リソースグループに所属すると判定されたリソースのIDの一覧である。機能性302Cは、対象リソースグループが実現する1以上の機能性(典型的には、対象リソースグループのメンバリソース302Bが表す複数のメンバリソースが共通的に持つ機能性)を表す。
図5は、リソースグループ定義テーブル33の構成を示す。
リソースグループ定義テーブル33は、リソースグループをリソースプール4から検出するための方法を表す情報が格納されたテーブルである。リソースグループ定義テーブル33は、リソースグループ種別毎に、リソースグループ303A、対象機能性303B及びメンバリソース発見方法303Cといった情報を保持する。図5の説明において、1つのリソースグループ種別を例に取り、そのリソースグループ種別を「対象リソースグループ種別」と呼ぶ。
リソースグループ種別303Aは、対象リソースグループ種別を一意に識別するための識別子(例えば名称)である。
対象機能性303Bは、対象リソースグループ種別に属するリソースグループが実現する1以上の機能性を表す。
メンバリソース発見方法303Cは、対象リソースグループ種別に属するリソースグループのメンバリソースを発見する手順及び条件のうちの少なくとも1つを含んだ発見方法を表す。例えば、少なくとも1つのリソースグループ種別について、メンバリソース発見方法303Cが表す発見方法は、メンバリソースとなるリソースが持つ(実現する)機能性と、リソース間の接続構成とを含んだメンバリソース条件を含む。
図6は、トポロジテーブル34の構成を示す。
トポロジテーブル34は、リソースの間の接続関係を表す情報を格納するテーブルである。トポロジテーブル34は、リンク毎に、リンクID304A、第1リンク端ID304B、第2リンク端ID304C及びネットワーク種別304Dといった情報を保持する。図6の説明において、1つのリンクを例に取り、そのリンクを「対象リンク」と呼ぶ。
リンクID304Aは、対象リンクを一意に識別する識別子である。なお、「リンク」とは、リソース間の接続であって他のリソースが介在しない接続を意味する。
第1リンク端ID304Bは、対象リンクの一端である第1リンク端の識別子である。第1リンク端ID304Bは、第1リンク端に属するリソースの識別子と、その第1リンク端に属するリソースコンポーネント(例えばポート)の識別子とのうちの少なくともリソース識別子を含む。
第2リンク端ID304Cは、対象リンクの他端である第2リンク端の識別子である。第2リンク端ID304Cは、第2リンク端に属するリソースの識別子と、その第2リンク端に属するリソースコンポーネント(例えばポート)の識別子とのうちの少なくともリソース識別子を含む。
ネットワーク種別304Dには、対象リンクを含んだネットワークの種別(例えば“IPネットワーク”や“FCネットワーク”)を表す。
図7は、トポロジ関連テーブル35の構成を示す。
トポロジ関連テーブル35は、物理位置と機能性との関係を表す情報を格納するテーブルである。トポロジ関連テーブル35は、トポロジ関連毎に、トポロジ関連ID305A、トポロジ位置305B、隣接詳細305C、物理位置305D及び機能性305Eといった情報を保持する。図7の説明において、1つのトポロジ関連を例に取り、そのトポロジ関連を「対象トポロジ関連」と呼ぶ。
トポロジ関連ID305Aは、対象トポロジ関連を一意に識別するための識別子である。トポロジ位置305Bは、対象トポロジ関連に対応した隣接詳細305Cから推定される位置であって、ネットワークトポロジ上の位置を表す。隣接詳細305Cは、ネットワークトポロジ上の位置を推定するために使用される情報であって、当該位置に隣接する1以上のリソース(又はリソースコンポーネント)の識別子を含んだ情報である。物理位置305Dは、対象トポロジ関連に対応した隣接詳細305Cから推定された位置(ネットワークトポロジ上の位置)と関連付けられた物理位置、つまり、推定物理位置(例えばラック40のID)を表す。機能性305Eは、対象トポロジ関連に対応した推定物理位置に関連付けられている機能性(例えば、物理位置305Dが表すラックに割り当てられている電源系統)を表す。
トポロジ関連テーブル35の意義は、例えば次の通りである。すなわち、リソースプール4(例えばデータセンタ)に関し、物理位置毎に、その物理位置に対応した電源盤6及びスイッチポート等が事前に設計されている。このため、物理位置にリソース(例えば、リソースが搭載されたラック40)が追加された場合、リソース管理プログラム20は、そのリソースが接続されたポートのIDから、そのリソースが接続されたネットワーク(トポロジ位置305B)を特定でき、そのネットワークに対応した物理位置(物理位置305D)をテーブル34から推定し、推定された物理位置に関連付けられた機能性(機能性305E)をテーブル34から特定する。機能性305Eが表す機能性は、リソース(物理的なハードウェア)から取得可能な情報が表す機能性(つまりリソースが持つ機能性)とは異なり、リソースが配置され得る物理位置(典型的にはラック40)という場所に関連付けられた機能性である。つまり、本実施形態では、リソースが配置される物理位置によって、実現可能な機能性が異なり得る。そこで、上述したトポロジ関連テーブル35を参照することで、リソースが配置される物理位置も考慮して機能性の実現の可否を判断することができる。言い換えれば、物理位置もリソースの一種として扱うことができ、以って物理位置もリソースグループのメンバリソースとして扱うこともできる。
図8は、基盤システムテンプレートテーブル36の構成を示す。
基盤システムテンプレートテーブル36は、基盤システムのテンプレートに関する情報が格納されたテーブルである。基盤システムテンプレートテーブル36は、基盤システムテンプレート(以下、基盤テンプレート)毎に、テンプレートID306A、バージョン306B、メインリソース306C、関連リソース306D、リソース制約306E、非承認環境検証306F、検証実績306G及び自動配備プログラム306Hといった情報を保持する。図8の説明において、1つの基盤テンプレートを例に取り、その基盤テンプレートを「対象基盤テンプレート」と呼ぶ。
テンプレートID306Aは、対象基盤テンプレートを一意に識別するための識別子(例えば名称)である。バージョン306Bは、対象基盤テンプレートのバージョンを表す。
メインリソース306Cは、対象基盤テンプレートに属するメインリソースとしてのリソース毎に、そのリソースの種別(例えば標準サーバ又は高性能サーバ)を表す情報と、そのリソースに適用すべきファームウェアのバージョンを表す情報とを含む。ここで、「メインリソース」とは、典型的には、基盤システムソフトウェアがインストールされるサーバであるが、これに限定するものではない。
関連リソース306Dは、対象基盤テンプレートに属する関連リソースとしてのリソース毎に、そのリソースの種別(例えばFCスイッチ)を表す情報と、そのリソースに適用すべきファームウェアのバージョンを表す情報と、そのファームウェアバージョンが適用必須か否かのフラグである適用フラグとを含む。ここで、「関連リソース」とは、メインリソースの場所及び接続関係により必然的に使用されるリソース、例えば、メインリソースにネットワークケーブルを介して接続されているイーサネットスイッチやFCスイッチであるが、これに限定するものではない。また、適用フラグとしては、適用必須を示す値“strict”と、適用不要を示す値“non−strict”がある。
リソース制約306Eは、対象基盤テンプレートに属するメインリソース及び関連リソースに関する選択条件(制約)を表す。リソース制約306Eが表す選択条件は、例えば、対象基盤テンプレートに関連付けられた機能性(つまり、当該テンプレートに対応した基盤システムに必要とされる機能性)を含む。
非承認環境検証306Fは、対象基盤テンプレートに関連付けられた非承認環境検証プログラムに関する情報(例えば、プログラム又はそのID)である。非承認環境検証プログラムは、次の(a)及び(b)の場合に、現在のファームウェアバージョンが対象基盤テンプレートの要件を満たすか否かチェックするために実行されるプログラムである。
(a)関連リソース306Dが表すリソースが見つかったが、見つかったリソースのファームウェアバージョンが、関連リソース306Dが表すファームウェアバージョンと合致しない。
(b)関連リソース306Dが表す適否フラグが示す値が、“non-strict”である。
検証実績306Gは、対象基盤テンプレートに対応する非承認環境検証306Fが表す非承認環境検証プログラムを過去に実行した結果を表す情報(例えば、検証が合格となったファームウェアのバージョンを表す情報、及び、当該検証プログラム実行時のログデータ(又はログデータへのポインタ))である。
自動配備プログラム306Hは、基盤システムソフトウェアのインストール、関連するファームウェアの適用、および各種設定の適用を実行する配備プログラムに関する情報(例えばプログラム又はID)である。
図9は、基盤システム配備テーブル37の構成を示す。
基盤システム配備テーブル37は、配備された基盤システムに関する情報が格納されたテーブルである。基盤システム配備テーブル37は、基盤システム毎に、配備ID307A、テンプレートID307B、配備バージョン307C、配備メインリソース307D及び配備関連リソース307Eといった情報を保持する。図9の説明において、1つの基盤システムを例に取り、その基盤システムを「対象基盤システム」と呼ぶ。
配備ID307Aは、配備された対象基盤システムを一意に識別するための識別子である。テンプレートID307Bは、対象基盤システムの配備に適用された基盤テンプレートの識別子である。配備バージョン307Cは、その適用された基盤テンプレートのバージョンを表す。
配備メインリソース307Dは、配備された基盤システムに含まれているメインリソース毎に、メインリソースの識別子とそのメインリソースに適用されているファームウェアバージョンを表す情報とを含む。
配備関連リソース307Eは、配備された基盤システムに含まれている関連リソース毎に、関連リソースの識別子とその関連リソースに適用されているファームウェアバージョンを表す情報とを含む。
次に、本実施形態に係るリソースグループ管理方式について説明する。
サーバ、ストレージ及びネットワークといったリソースに関する情報がリソーステーブル31に保持される。リソースがリソースプール4に追加されると、リソース管理プログラム20は、追加リソースを検知し(例えば、リソースプール4から追加リソースに関する情報を受信し)、検知したリソースに関する情報301A〜301Eをリソーステーブル31に追加する。また、リソース管理プログラム20は、追加リソースに関する情報301A〜301Eと、リソースグループ種別毎の対象機能性303B及びメンバリソース発見方法303Cとを基に、追加リソースを含んだ1又は複数のリソースの組合せにより実現される機能性を持ったリソースグループの有無を検知する。リソース管理プログラム20は、そのようなリソースグループを検知した場合、検知したリソースグループに関する情報302A〜302Cをリソースグループテーブル32に格納する。さらに、リソース管理プログラム20は、管理クライアント2から或るユーザについて基盤システム配備要求を受け付けると、配備要求に従う配備条件に合致したリソースを選択して配備する。
以下、本実施形態に係る検知処理について説明する。なお、検知処理実行前の状態及び構成は、図1及び図3〜図9に示す状態及び構成とする。ここで、リソースグループ定義テーブル33(図5)、トポロジ関連テーブル35(図7)、及び基盤システムテンプレートテーブル36(図8)は、例えば管理者によって、事前に作成されているものとする。リソーステーブル31(図3)、リソースグループテーブル32(図4)、トポロジテーブル34(図6)及び基盤システム配備テーブル37(図9)は、上述のリソースグループ管理方式により生成されてもよいし、例えば管理者により事前に格納されていてもよい。
このような図1及び図3〜図9に示す状態及び構成において、図10に示すように、下記が行われたとする。
・ラック3を増設すること。
・ラック3内に各種リソースを追加すること。
・電源系統の接続(具体的には、A系PDU3を電源盤3に接続し、B系PDU3を電源盤4に接続すること。)
・ラック3内の高性能イーサネットスイッチ2の任意のポートを、高性能コアイーサネットスイッチ1のポート3(不図示)及び高性能コアイーサネットスイッチ2のポート3(不図示)にネットワークケーブルを用いて接続すること。
なお、ラック3内のリソースは、管理ネットワーク5に接続され、管理サーバ3と通信可能であるものとする。
さらに、ラック3内の高性能イーサネットスイッチ2のメモリ(不図示)上にて、ラック3の管理機能を提供するラック管理プログラム49が実行されているものとする。ラック管理プログラム49は、本実施形態では、高性能イーサネットスイッチ2上で動作しているが、これに限るものではなく、例えば高性能サーバ3のメモリ上で動作していてもよい。ラック管理プログラム49は、例えば、ラック3の中に工場出荷時に組み込まれていてもよく、ラック3に対して電源が投入されたときに起動してよい。ラック管理プログラム49は、ラック40毎に存在してよい。
また、管理サーバ3及びラック3内の全てのリソースは、IP(Internet Protocol)アドレスなどの管理通信に必要な設定が、管理用通信に用いるI/Oインターフェースに設定してあるものとする。
図11及び図12は、検知処理の流れを示す。以下の説明では、図10の例示の通り、ラック3が増設されたものとする。検知処理は、リソースの管理に関する処理であるリソース管理処理の一例である。リソースは、リソースグループのメンバリソースであることもあれば、リソースグループに属さない単独のリソースであることもある。
ラック管理プログラム49が、ラック3にネットワークケーブルが接続されたことを検知すると(ラック3がネットワークに接続されたことを検知すると)、リソース管理プログラム20に、ラック3の増設を通知する(S1)。
次に、リソース管理プログラム20は、ラック3の増設の通知を受けると(S2)、ラック3内のリソースに関する情報をラック管理プログラム49に要求する(S3)。
ラック管理プログラム49は、その要求に応答して、ラック3内のリソースに関する情報をリソース管理プログラム20に送信する(S4)。S4にて送信される情報は、後述する図13Aに記載の情報と同様の内容であるとする。
リソース管理プログラム20は、ラック管理プログラム49から、ラック3内のリソース3に関する情報を受信し、その情報に従う情報(例えば、受信した情報と、その情報に基づき付与された情報とのうちの少なくとも一方)301A〜301Eを、リソーステーブル31に追加し、且つ、ラック管理プログラム49に、隣接詳細に関する情報を要求する(S5)。ここで、図13Aは、S5にてリソーステーブル31にラック3内のリソースに関する情報301A〜301Dが追加された状態を示している。図13Aによれば、物理位置301Eが格納されておらず、且つ、リソース“A系PDU3”および“B系BDU3”に関する機能性301Dも格納されていない。なぜなら、S4にてラック管理プログラム49aから送信される情報(ラック3内のリソースに関する情報)は、ラック3(又はリソース)の出荷時のラック管理プログラム49に登録されている情報であり、通常、出荷時には、ラック3の設置場所、及び、PDUが接続される電源系統まではわからず、故に、出荷時のラック管理プログラム49が、物理位置及び電源系統に関する情報を保持していないためである。
次に、ラック管理プログラム49は、上記LLDP等の既に知られている手法を用い、ラック3の中及び外とのリンクを検知し、検知したリンクに関する情報であるリンク情報をリソース管理プログラム20に送信する(S6)。
リソース管理プログラム20は、リンク情報を受信し、受信した情報が表すリンクに関する情報304A〜304Dを、トポロジテーブル34に格納する。トポロジテーブル34に格納された情報の一例を図14に示す。さらに、リソース管理プログラム20は、トポロジ関連テーブル35(図7)の隣接詳細305Cと、トポロジテーブル34に格納した情報304A〜304D(ラック3に関わるリンクに関する情報)を比較し、一致するレコードを検索する(S7)。
一致するレコードが見つかった場合(S8:Y)、S10に進む。一致するレコードが見つからなかった場合(S8:N)、想定外の接続があったことをemail等の手段を用いて管理者に通知し、処理を終了する(S9)。
S10では、リソース管理プログラム20は、S7で見つかったレコード(トポロジ関連テーブル35のレコード)に格納されている情報を用いて、リソーステーブル31内のレコードに格納されている情報(S5で追加された、ラック3内のレコードに関する情報)を更新する。より具体的には、例えば、トポロジ関連テーブル35から、トポロジ関連ID305A“RL3”を含んだレコードがS7にて見つかったとする。そのレコード内の隣接詳細305Cが、ラック3内のリソースに関する情報301A〜301Dに適合したためである。リソース管理プログラム20は、見つかったレコード内の物理位置305D(ここでは“ラック3”)を、リソーステーブル31内のレコード(ラック3内のリソースに対応したレコード)に、物理位置301Eとしてコピーする。さらに、リソース管理プログラム20は、トポロジ関連ID305A“RL3”を含んだレコード内の機能性305Eより、A系の“電源系統3”及びB系の“電源系統4”を、リソースID301A “A系PDU3”を含んだレコード、及び、リソースID301A“B系PDU3”を含んだレコードに、それぞれ、機能性301Dとして格納する(図13B)。
次に、リソース管理プログラム20は、リソースグループ定義テーブル33のレコードを先頭から順に抽出し(S11)、ラック3内のリソースのうちの、当該抽出したレコード内の対象機能性303Bと同じ機能性301Dに対応したリソースを、リソーステーブル31(図3及び図13B)から検索する(S12)。
当該同じ機能性301Dに対応したリソースが見つかった場合(S13:Y)、S14に進む。そのようなリソースが見つからなかった場合(S13:N)、S18に進む。
S14では、リソース管理プログラム20は、S11で抽出されたレコード内のメンバリソース発見方法303Cが表す発見方法で、見つかったリソース以外のメンバリソースを探索する(S14)。
ここで、具体的な探索例を、リソースグループID303A“FC SANファブリック”を含んだレコード(図5参照)を例に取り説明する。当該レコードは、対象機能性303B “FC SAN”、及び、メンバリソース発見方法303C“対象機能性をもつリソース群で、相互のFCネットワーク隣接関係あり”を含んでいる。そのため、リソース管理プログラム20は、S12にて、図13Bに示すテーブル31(ラック3内のリソース)の中から、機能性301D“FC SAN”に対応したリソース“高性能サーバ3”、“高性能サーバ4”、“FCストレージ3”及び“FCスイッチ3”を特定する。次に、リソース管理プログラム20は、それらのリソースの各々に対して、トポロジテーブル34を用い、FCネットワークにおいて隣接するリソースを検索する。例えば“高性能サーバ3”に関しては、隣接リソースとして、“FCスイッチ3”が検知される。さらに、“FCスイッチ3”に対して、隣接リソースとして、“高性能サーバ4”及び“FCストレージ3”が検知される。以上により、“高性能サーバ3”、“高性能サーバ4”、“FCストレージ3”及び“FCスイッチ3”が、メンバリソース発見方法303Cで記載の“対象機能性をもつリソース群で、相互のFCネットワーク隣接関係あり”により発見されたリソースグループのメンバリソースの一覧である。
次に、リソース管理プログラム20は、S14にて発見された全てのメンバリソースを含んだメンバリソース302Bを有するレコードがリソースグループテーブル32にあるか否かを判定する。判定結果が真の場合(S15:Y)、S17へ進む。判定結果が偽の場合(S15:N)、S16に進む。
S16では、リソース管理プログラム20は、リソースグループテーブル32に対し、新規レコードを追加する。リソース管理プログラム20は、新規レコードに、リソースグループID302Aとして、一意に識別可能な識別子を格納し、メンバリソース302Bとして、S14にて発見された全てのメンバリソースのIDを格納し、機能性302Cとして、当該探索に使用したレコード(リソースグループ定義テーブル33からS11で抽出されたレコード)内のリソースグループ種別303Aの値を格納する。
S17では、リソース管理プログラム20は、S15(S15:Y)にて見つかったレコード内のメンバリソース302Bに対し、S14で発見したメンバリソースのIDを追加する。
S18では、リソース管理プログラム20は、S12で検索された全てのリソースに対して実行がされたか否かを判定する。判定結果が偽の場合(S18:N)、S14に戻り、残りのリソースに対して同様の処理が実行される。一方、判定結果が真の場合(S18:Y)、S19に進む。
S19では、リソース管理プログラム20は、全てのリソースグループ定義に対してS11〜S18の処理を実行したか判定する。判定結果が真の場合(S19:Y)、処理フローが終了する。判定結果が偽の場合(S19:N)、次のリソースグループ定義に対して、S11が実行される。
図15は、ラック3の増設についてS1〜S19を実行した結果としての更新後リソースグループテーブル32の例を示す。図15に示すリソースグループテーブル32のデータの中で、下線で示しているのが、本実施形態に係るリソースグループ管理方式による検知処理を実施した結果、検知処理実施前のリソースグループテーブル32(図4)から更新されたデータである。図15に示すように、“GPGPUクラスタ1”リソースグループには、高性能サーバ及び高性能サーバ4がメンバリソース302Bに追加され、また、“IP QoS転送ネットワーク1”リソースグループには、高性能イーサネットスイッチ2、高性能サーバ3及び高性能サーバ4がメンバリソース302Bに追加され、さらに、“FC SANファブリック2”、“電源系統3”及び“電源系統4”が新たにリソースグループテーブル32に追加されている。
図16は、本実施形態に係る配備処理の流れを示す。配備処理は、基盤システムの構築に関する処理であるシステム構築処理の一例である。
リソース管理プログラム20は、管理クライアント2から基盤システム配備要求を受信する(S31)。この基盤システム配備要求には、テンプレートID及びバージョンと、サーバ台数とが少なくとも指定されているものとする。
なお、この配備処理の説明では、上述の検知処理実施後の状態及び構成が採用されるとする。すなわち、図5、図7、図8、図9、図10、図13B、図14及び図15に示す構成及び状態が採用されるとする。また、S31にて受信した基盤システム配備要求には、テンプレートID“高性能分析用サーバシステム”、バージョン“001”及びサーバ台数“2”が配備条件として指定されているとする。
次に、リソース管理プログラム20は、基盤システムテンプレートテーブル36から、受信した配備要求で指定されているテンプレートID及びバージョンに合致するレコードを検索する(S32)。ここでは、テンプレートID306A“高性能分析用サーバシステム”及びバージョン306B“001”を含んだレコード(言い換えれば、当該レコードに対応した基盤テンプレート)が見つかったとする。
次に、S33にて、リソース管理プログラム20は、見つかったレコード内のメインリソース306Cに記載の選択可能なメインリソースの種別を検索キーとして、リソーステーブル31より、リソース種別301Bが当該種別と合致するリソースを検索する。また、S33にて、リソース管理プログラム20は、その検索により見つかったリソースのうち、基盤システム配備テーブル37の配備メインリソース307Dに含まれていないリソース、つまり使われていないリソースを抽出する。
本実施形態では、当該見つかった基盤テンプレートのメインリソース306Cは“高性能サーバ(firmware:00−02)”であるため、リソーステーブル31より、高性能サーバ1、高性能サーバ2、高性能サーバ3及び高性能サーバ4が抽出される。さらに、図9に示す基盤システム配備テーブル37より、高性能サーバ1が既に使用されているため、リソース管理プログラム20は、S33の処理結果として、高性能サーバ1以外の高性能サーバ、すなわち、高性能サーバ2、高性能サーバ3及び高性能サーバ4を候補として抽出する。
次に、S33の結果、候補となる未使用リソースが見つかった場合(S34:Y)、S35に進む。見つからなかった場合(S34:N)、S37に進む。
S37では、リソース管理プログラム20は、S31で受信した配備要求に対応したユーザについて、配備に失敗した事を通知する。
S35では、リソース管理プログラム20は、見つかったリソースが、当該見つかった基盤テンプレートに対応するリソース制約306Eを満たしているか否かを、見つかったリソースに対応する機能性301D、及び、見つかったリソースを含んだリソースグループに対応する機能性302Cを用いて判定する。具体的には、例えば、リソース管理プログラム20は、見つかったリソースに対応する機能性301Dに、当該リソース制約306Eを満たす機能性が存在するか否か判定する。判定結果が偽の場合、リソース管理プログラム20は、当該見つかったリソースを含むリソースグループに対応した機能性302Cに、当該リソース制約306Eを満たす機能性が存在するか否か判定する。
本実施形態では、当該見つかった基盤テンプレートに対応するリソース制約306Eは“GPGPUクラスタ”であるため、図15に示すリソースグループテーブル32の中で、“GPGPUクラスタ1”のみが、検索されたリソースのうち少なくとも一つを含み、かつ当該リソース制約306Eを満たしている。
S38では、リソース管理プログラム20は、S35にてリソース制約306Eを用いて絞り込まれたリソース候補の中で、S31で受信した配備要求で指定されているサーバ台数分のリソースの組合せを全て作成する。さらに、リソース管理プログラム20は、S35にてリソース制約306Eを満たすと判定されたリソースグループに当該リソースの組合せに属するリソースが全て含まれている場合は、当該リソースの組合せを最終候補として選出する。具体的には、例えば、リソース管理プログラム20は、同一のリソースグループ種別“FC SANファブリック”に属する2以上のリソースグループがある場合、2以上のリソースグループからリソースを選出するのではなく、1つのリソースグループ(同一リソースグループ)からリソースを選出する。
S38にて最終候補が見つからなかった場合(S39:N)、S37に進み、見つかった場合(S39:Y)、S40に進む。
S40にて、リソース管理プログラム20は、上記見つかった基盤テンプレートに対応した関連リソース306Dに含まれているリソース種別及びファームウェアバージョンを抽出する。S40で取得されたファームウェアバージョンを、以下、「要求ファームウェアバージョン」と言う。
S41にて、リソース管理プログラム20は、当該最終候補のリソースと隣接しているリソース(当該最終候補のリソースとリンク経由で接続されているリソース)を、トポロジテーブル34から検索し、当該隣接しているリソースのファームウェアバージョンを確認する。リソース管理プログラム20は、当該隣接しているリソースのファームウェアバージョンを、当該リソースにアクセスすることにより取得してもよい。また、トポロジテーブル34の作成のために収集したリソース情報に、リソースのファームウェアバージョンが含まれていてもよく、そのファームウェアバージョンが、トポロジテーブル34(又は別のテーブル)に登録されてもよく、トポロジテーブル34から取得されてもよい。リソース管理プログラム20は、S40にて抽出したリソース種別とマッチしたリソースが隣接リソースとして存在する場合、さらに、その隣接リソースのファームウェアバージョンが要求ファームウェアバージョンと一致するか否か判定する。判定結果が真の場合(S41:Y)、S47に進む。判定結果が偽の場合(S41:N)、S42に進む。
S42では、リソース管理プログラム20は、要求ファームウェアバージョンが“strict”か“non-strict”か確認する。要求ファームウェアバージョンが“strict”の場合、S37に進む。要求ファームウェアバージョンが“non-strict”の場合、リソース管理プログラム20は、当該隣接リソースのファームウェアバージョンが、当該基盤テンプレートの検証実績306G(例えば、過去に既に検証済みのファームウェアバージョンを表す情報)に適合するか否か判定する(S43)。判定結果が真の場合(S43:Y)、S47に進む。判定結果が偽の場合(S43:N)、S44に進む。
S44では、リソース管理プログラム20は、当該基盤テンプレートに対応する非承認環境検証306Fが表す検証プログラムを、当該隣接リソース(要求ファームウェアバージョンに一致しないバージョンのファームウェアを持つ隣接リソース(関連リソース))に対して実行する。検証プログラムの実行結果がNGの場合(S45:N)、S37に進む。検証プログラムの実行結果がOKの場合(S45:Y)、S46に進む。
S46では、リソース管理プログラム20は、当該隣接リソース(関連リソース)の現在のファームウェアバージョンを表す情報と、当該隣接リソースを表す情報(例えばリソースID)とを含んだ情報を、当該基盤テンプレートに対応した検証実績306Gに追加する。これにより、当該隣接リソース(関連リソース)の現在のファームウェアバージョンが、検証済みのファームウェアバージョンとして、登録される。検証実績306Gは、実行結果を表すログに関する情報も含んでもよい。
S47では、リソース管理プログラム20は、当該基盤テンプレートに対応した自動配備プログラム306Hが表す配備プログラムを実行することで、当該最終候補のリソースに対して基盤システムソフトウェアの配備を実行する。
図16に示した配備処理によれば、例えば以下の通りである。
リソース管理プログラム20は、配備要求に適合する基盤テンプレートを探す。リソース管理プログラム20は、見つかった基盤テンプレート(以下、該当テンプレート)について、下記の(A)乃至(D)の処理を実行する。
(A)該当テンプレートに対応するリソース制約306E(例えば機能性)を満たしているリソース及びリソースグループである候補リソースを絞り込む、
(B)絞り込まれた候補リソースの中から、基盤システムソフトウェアのインストール先(デプロイ先)となる空きサーバを検索する(空きサーバは、該当テンプレートに対応するメインリソース306Cが表すリソース種別に該当するサーバのうちの未使用のサーバ)、
(C)絞り込まれた候補リソースに隣接するリソースであって、該当テンプレートに対応する関連リソース306Dが表すリソース種別に属するリソースを検索する、
(D)(C)で見つかったリソースのファームウェアバージョンが要求ファームウェアバージョン_(該当テンプレートに対応する関連リソース306Dが表すファームウェアバージョン)に一致するか否か判定する、
(E)(D)の判定結果が偽の場合、要求ファームウェアバージョンが“non-strict”か否か判定する、
(F)(E)の判定結果が真の場合、該当テンプレートに対応する非承認環境検証306Fが表す検証プログラムを、当該隣接リソース(要求ファームウェアバージョンに一致しないバージョンのファームウェアを持つ隣接リソース(関連リソース))に対して実行する。
(G)(F)の実行結果がOKの場合、当該隣接リソースの現在のファームウェアバージョンを表す情報を含んだ情報を、該当テンプレートに対応した検証実績306Gに追加する。
処理(D)乃至(G)は、隣接リソース(関連リソース)に代えて又は加えて、メインリソースについても行われてもよい。メインリソース306Cも、メインリソースとしてのサーバ毎にファームウェアバージョン(“strict”又は“non-strict”を含んだ要求ファームウェアバージョン)を含んでもよい。
上記処理のうちの処理(E)乃至(G)の意義は、例えば次の通りである。すなわち、“strict”に対応したリソース種別については、該当テンプレートの提供側での検証により保証されているファームウェアバージョン以外のバージョンのファームウェアの使用が禁止される。しかし、ユーザ側での柔軟なリソース使用が望まれること(例えば、該当テンプレートの提供側に許可を求めることなく特定のリソースを使用することが望まれること)が考えられる。或いは、第1及び第2の基盤システムを含んだ複数の基盤システムのいずれの要素となることが可能な共通リソース(典型的には、ネットワークスイッチのようなスイッチ)も考えられ、且つ、その共通のリソースのファームウェアバージョンは、第1の基盤システムのテンプレートに対応したファームウェアバージョンには適合するものの、第2の基盤システムのテンプレートに対応したファームウェアバージョンには適合しないといったことも考えられる。そこで、或るリソースの或るファームウェアバージョンについては、“non-strict”が採用され得る。“non-strict”とは、要求ファームウェアバージョンとは異なるバージョンのファームウェアの採用を許可し得ることを意味する。具体的には、該当テンプレートに対応する検証プログラムの実行結果がOK(検証成功)の場合に(言い換えれば、テンプレート提供側ではなくユーザ側での検証結果がOKの場合に)、その異なるバージョンのファームウェアの採用が許可され、基盤システム配備テーブル37に、採用されたファームウェアバージョン等の検証実績306Gが登録される。
なお、処理(E)の判定結果が真の場合、リソース管理プログラム20は、該当テンプレートに対応する検証実績306Gが検証OK(検証プログラムの実行結果がOKであった実績を示す)か否かを判定してもよい。判定結果が偽の場合、リソース管理プログラム20は、処理(F)を実行してもよい。
また、“non-strict”及び“strict”といったフラグは必ずしもなくてもよい(例えば、全てのリソースについてファームウェアバージョンは“non-strict”であってもよい)。
以上が、本実施形態の説明である。
本実施形態によれば、個々のリソースに加えて、機能性を提供する複数のリソースの組み合せである「リソースグループ」という概念が導入される。そして、リソースグループ種別毎に、リソースグループに関連付けられている機能性を提供するための条件として、発見方法303Cが定義されている。発見方法303Cに従い見つかったリソースを組み合わせれば、対応する対象機能性303Bが表す機能性を提供することができる。例えば、高品質なネットワーク通信を実現する通信技術として、IEEE(The Institute of Electrical and Electronics Engineers, Inc.)の802.1Qbb仕様として定義されているPFC(Priority-based Flow Control)がある。上述した実施形態によれば、機能性としてPFCをサポートしているサーバ間リソースを含んだ複数のリソースにより構成され機能性としてPFCを実現できるリソースグループの構築が可能である。
また、本実施形態によれば、発見方法303Cに沿ってリソースを見つけるために、トポロジが参照される。なお、トポロジを参照することは、メンバリソースの発見のための一方法に過ぎず、発見方法303Cの定義によっては、トポロジの参照は不要となり得る。
また、本実施形態によれば、トポロジに基づいて検出されたネットワーク位置(トポロジ上の位置)から推定される物理位置に対して、機能性305Eが関連付けられている。発見方法303Cに従いトポロジを参照した場合、トポロジについて関連付けられている機能性305Eを、リソースグループの機能性302Cとして関連付けることができる。
また、本実施形態によれば、第1及び第2の基盤システムを含んだ複数の基盤システムのいずれの要素となることが可能な共通リソースについて、第1の基盤システムのテンプレートに対応したファームウェアバージョンには適合するものの、第2の基盤システムのテンプレートに対応したファームウェアバージョンには適合しないといったことも考えられる。そのような場合であっても、第2の基盤システムのテンプレートについて共通リソースに対応した要求ファームウェアバージョンが“non-strict”であれば(更に、そのテンプレートに対応した検証プログラムの実行結果がOKとなれば)、共通リソースを、第1の基盤システムの要素としてだけでなく第2の基盤システムの要素として配備することが可能である。
以上、本発明の一実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。