仮想マシンとPCの一元管理を 可能にする仮想AMTの開発 九州工業大学大学院 情報工学府 情報創成工学専攻 12675004 大薗弘記
従来のPC管理 組織で使用されるPCの数は膨大になってきている PCが起動していないと管理できない ・・・ PC 管理エージェント 管理ツール 企業など組織のIT化の進展に伴い、組織で使用されるPCの数は膨大になってきている。組織のIT部門の管理者は組織内のすべてのPCを管理しなければならない。PCの管理はOS上に管理エージェントというソフトウェアを管理対象のPCに導入して行っている。 しかし、この方法では管理対象となるPCのOSが起動していないと管理を行うことができない。その場合、管理者は障害が発生したPCの設置場所まで行って修復作業を行わなければならない。このようにソフトウェアベースの管理では限界がある。
AMTを用いた管理 最近のPCにはAMTが搭載されるようになってきて いる 管理者はPCをハードウェアレベルで管理することが できる ネットワークの設定ミスをしていても接続できる PC AMT 管理ツール そこで、最近のPCにはAMTが搭載されるようになってきている。AMTはインテルのvProブランドのPCに搭載されている、PCをリモートからで管理するためのハードウェアである。AMTを利用することで管理者はPCをハードウェアレベルで管理することができる。 従来のソフトウェアレベルの管理ではOSが動いていなければ管理を行うことができなかったが、AMTによる管理ではリモートからPCを起動して管理を行うことができる。また、ネットワークの設定ミスをしていても接続を行うことなどもできる。組織内にPCしかなければAMTによる管理で十分だったが~。 AMTは、Active Management Technologyの略。 ネットワーク上のコンピュータ資源の検出、障害回復、保護を行える。
仮想デスクトップの混在 近年、仮想デスクトップが普及してきている 管理者はPCとVMをそれぞれ管理しなければならな い AMT 管理ツール ・・・ サーバ 仮想デスクトップ 仮想デスクトップの普及によって組織内ではPCと仮想デスクトップが混在している。その理由として、仮想デスクトップの普及はまだ過渡期であることと、それだけではなく、ネットワークが繋がらない環境でも使用されるノートPCなどは仮想デスクトップを使用できないということも挙げられる。 組織内にPCしかない場合はAMTによって管理できるが、PCと仮想デスクトップが混在した環境では、管理者はPCとVMを別々の管理ツールを使って管理しなければならない。
提案:仮想AMT(vAMT) VM用の仮想的なAMTを提供 PCを管理するAMTと同様のインタフェースでVMの管 理を行える CIM、Webサービス、VNC AMT対応の管理ツールよって一元的な管理が可能 PCとVMの違いを意識する必要がない PC AMT ・・・ サーバ VM vAMT 管理ツール 仮想デスクトップ そこで、VM用の仮想的なAMTを提供する仮想AMTを提案する。仮想AMTはPCを管理するAMTと同様のインタフェースでVMの管理を行えるものである。そのインタフェースは、CIM、Webサービス、VNCを用いる。 CIMとは、管理対象デバイスをメーカや種類によらず管理するための規格で、新しいAMTではCIMがメインに使われている。古いバージョンのAMTではWebサービスが使用されていたため、新しいAMTではどちらにも対応できるようになっている。 AMTと仮想AMTを使用することでPCとVMの違いを意識することなく、AMT対応の既存の管理ツールよって一元的な管理が可能になる。
vAMTの構成 CIMOM VM CIMプロ バイダ群 vAMT WS-Manサーバ WS-Man SOAPサーバ Web サービス群 VNCサーバ Webサーバ :16992 :5900 それ以外 VMのIPアドレス 仮想AMTの構成について説明する。管理ツールがリクエストを送る時は管理を行いたいVMのIPアドレスと16992番ポートを指定する。リクエストはまずWebサーバに送られて、URLによってWS-ManagementとSOAPのどちらであるか識別される。 WS-Managementの場合、そのリクエストはWS-ManサーバでCIMのリクエストに変換されて、CIMオブジェクトマネージャに送られ、CIMOMが適切なCIMプロバイダに送る。1つの機能に対して1つのCIMプロバイダが割り当てられており、管理の内容に応じて必要なCIMプロバイダが呼び出されてVMの情報取得や操作を行う。 SOAPのリクエストの場合は、SOAPサーバによって適切なWebサービスにリクエストが送られてVMの情報取得や操作を行う。 VMのIPアドレスの5900番ポートへのアクセスの場合は、VNCサーバに送られてVNC接続が可能になる。 次からはCIMとWebサービスについて説明していく。
インタフェース1:CIM MOF言語でCIMクラスが記述されている CIMプロバイダ CIMクラスは以下の要素で構成される 262個 MOF言語でCIMクラスが記述されている CIMクラスは以下の要素で構成される プロパティ メソッド CIMプロバイダ CIMクラスのインスタンスを管理 インスタンスの列挙 特定のインスタンスの取得 メソッド呼び出し class CIM_Processor : CIM_LogicalDevice { [Key] uint32 Number; uint32 Enable(boolean Enabled); }; CIMクラスはMOFという言語で記述され、主にプロパティ、メソッドで構成される。 上の図はCIMクラスの記述例であり、CIM_ProcessorというCPU情報を扱うクラスが定義されている。CIM_ProcessorはCIM_LogicalDeviceというデバイスの論理的な情報を扱うためのCIMクラスを継承したクラスで、CPU番号を示すNumberというプロパティとCPUの有効化・無効化を行うためのEnableというメソッドを持っている。 このCIMクラスのインスタンスを管理するのがCIMプロバイダである。例えば、CIM_Processorが4つのインスタンスを持っている時、CPU情報を全部取得したい場合は、EnumerateInstancesで全てのインスタンスを取得する。また、あるCPUを無効化したい場合は、GetInstanceでそのインスタンスを1つだけ取得し、Enableメソッドを呼び出して無効化する。 インテルが提供しているCIMクラスは262個ある。 GetInstance CPU1 CIM_Processorプロバイダ CPU2 CPU4 CPU3 EnumerateInstances CPU1 CIM_Processorプロバイダ CPU2 CPU4 CPU3
CIMプロバイダの作成(1) CIMPLEを用いてMOFからCIMプロバイダの雛形を C++で生成 CIM_Processorクラス Enum_Instances_Status CIM_Processor_Provider::enum_instances( ..., Enum_Handler<CIM_Processor>* handler) { for (i = 0; i < nCPU; i++) handler->handle(cpu[i]); return ENUM_INSTANCES_OK; } CIMプロバイダの作成にはCIMPLEというツールを用いた。CIMPLEとはMOFからCIMプロバイダの雛形を生成するもので、生成した雛形に具体的な処理を記述することでCIMプロバイダを作成する。 先ほどのCIM_ProcessorクラスからCIMプロバイダの雛形を生成すると、図の黒字で書かれた部分が作られる。この中に赤文字のように処理を記述することでCIMプロバイダを作成することができる。この例はインスタンスを列挙するenum_instancesで、CPUの数だけfor文を回してインスタンスを返すように記述している。
CIMプロバイダの作成(2) libvirtを用いてVMに関する処理を記述 CIM_PowerManagement クラス CIMプロバイダ MOF Get_Instance_Status CIM_PowerManagement_Provider::get_instance( ..., CIM_PowerManagement*& instance) { pow = virDomainIsActive(dom); instance->PowerState.set(pow); return GET_INSTANCE_OK; } VMの情報取得や操作を行う処理をする場合はlibvirtというライブラリを使用した。 VMの電源状態を管理するCIM_PowerManagementクラスから生成したCIMプロバイダに、1つのインスタンスを返すget_instanceの記述例を示す。赤字のように、libvirt関数であるvirDomainIsActiveを使ってVMの電源状態を取得し、電源状態を表すPowerStateというプロパティに格納する。
インタフェース2:Webサービス WSDLでオペレーション等が記述されている Axis WSDL2Javaを用いてWSDLからWebサービス の雛型をJavaで生成 libvirt-javaを用いてJavaからlibvirtを呼び出す remoteControl オペレーション public RemoteControlResponse remoteControl(RemoteControl control) { command = control.getCommand(); if (command == 1) domain.shutdown(); return … } WSDL 次に、WebサービスはWSDLという言語で記述される。Webサービスを作成するには、WSDL2Javaを用いてWSDLからWebサービスの雛型をJavaで生成する。Javaから直接呼び出せないので、libvirt-javaというAPIを用いてJavaからlibvirtを呼び出すようにした。 Webサービスではメソッドに相当するものをオペレーションと呼ぶ。図はVMの電源操作を行うremoteControlというオペレーションの記述例を示している。赤字のように、getCommandでリクエストされている操作を調べ、電源をオフしたい場合はshutdownというlibvirt関数を使ってVMを停止させる。 このようなインテルが提供しているWebサービスのオペレーションは267個ある。 267個
停止しているVMの管理 PCと違い、VMは停止状態の時には実体がない vAMTは停止状態のVMも管理できる VMから情報を取得できない VMにVNC接続できない vAMTは停止状態のVMも管理できる libvirtを用いることでVMのコンフィグから情報を取得 VMに接続できない時はダミーのVNCサーバに接続 vAMT ダミーの VNCサーバ VM VMの コンフィグ VMの管理を行う際には問題がある、VMはPCと違い停止状態の時には実体がない。そのため、停止状態のVMから情報を取得したり、VNC接続を行うことができない。 しかし、仮想AMTは停止状態のVMも管理することができる。停止したVMの情報を取得する際は、libvirtを用いることでVMのコンフィグから情報を取得する。VNC接続に関しては、VMに接続できない時はダミーのVNCサーバに接続して、AMTと同様に黒い画面を返すようにする。
実装 OpenPegasus、Axis2、KVMを用いて実装した CIMPLEを修正した 作成したCIMプロバイダとWebサービス AMT対応のためにOpenPegasusを修正 CIMPLEを修正した AMT対応のためにMOFの文法チェックを拡張 作成したCIMプロバイダとWebサービス CIMプロバイダ:39個 Webサービス:20個 vAMTはOpenPegasus、Axis2、KVMを用いて実装した。OpenPegasusはCIMオブジェクトマネージャを、Axis2はSOAPサーバをそれぞれ提供する。AMTに対応するためにOpenPegasusの一部に修正を行った。また、CIMPLEに対しても、AMT対応のためにMOFの文法チェックを拡張する修正を行った。 現在、VMの管理用に39個のCIMプロバイダと20個のWebサービスが実装されている。既存の管理ツールでよく使用されるものから優先的に実装していった。
実験 実験の目的 実験環境 既存の管理ツールを用いてvAMTによるVMの管理が できることの確認 AMTとvAMTの処理性能の比較 OS Windows 7 Professional CPU Intel(R) Core(TM) i7 3.40GHz メモリ 2GB OS debian 2.6.32-5-amd64 CPU Intel(R) Core(TM) i7 2.93GHz メモリ 4GB 実験を行った。実験の目的は、~ 実験環境は表の通りである。
デモ Intel System Defense Utilityを使用してVMの管理を実行した。
処理性能の比較 AssetDisplayによるCPU情報取得にかかる時間を AMTとvAMTとで比較 vAMTの処理時間はAMTより短かった 送られたリクエスト数はどちらも12個で同じ AMTのハードウェア性能が低いことが原因 Intel SDKのAssetDisplayというハードウェア情報を取得するコマンドを用いてCPU情報取得にかかる時間をAMTとvAMTとで比較した。 送られたリクエスト数はどちらも同じ12個だったにも関わらず、AMTに比べてvAMTの方が処理時間が短いということが分かった。その理由として、仮想AMTが搭載されているPC本体のCPUに比べてAMTのハードウェア性能が低いためと考えられる。
関連研究 QND Plus [Quality Soft] Virt-manager 管理エージェントを用いてPCとVMを一元的に管理す るツール Virt-manager XenやKVMなどの異なる仮想化ソフトウェアのVMを 一括して管理できる CIM Virtualization [DMTF 2007] VMの管理を行えるようにするために仮想化に対応し たCIM QND Plusはソフトウェアベースのツールなので、エージェントの停止時や電源のオフ時は管理できない。 Virt-managerではPCの管理を行うことはできない。 CIM VirtualizationはAMTの規格には含まれていないため、これによってAMTで仮想マシンを管理することはできない。また、物理マシンとVMを意識せずに扱うこともできない。 IPMI:CPUやOSに依存することなくハードウェアを管理するためのサーバ用インタフェース。米デル、ヒューレット・パッカード(HP)、NEC、インテルによって発表された。
まとめ VMを管理するための仮想的なAMTであるvAMTを 提案 今後の課題 PCとVMの一元的な管理が可能 いくつかの管理ツールの実行に必要なCIMプロバイ ダとWebサービスを作成した 既存の管理ツールからvAMTを用いた管理を行える ことを確認した 今後の課題 VM内のOSからvAMTにアクセスするためのイン タフェースにも対応する AMTでは管理エージェントの監視を行うために、OS側からAMTに対するアクセスを必要としている。そこでvAMTについても、VM内のOSからvAMTに対してアクセスできるようにする必要がある。 CIM_~が150種類、AMT_~が80種類程度ある。