libvirt
開発元Red Hat
libvirt community ⇒[1]
最新版6.3.0 / 2020年5月5日 (4年前) (2020-05-05)[1]
リポジトリ
gitlab.com/libvirt/libvirt
libvirtとは、仮想化管理用の共通APIを提供する、レッドハットを中心としたオープンソースプロジェクトである。 libvirtは仮想機械の制御を抽象化したライブラリである。本ライブラリの特徴は、サポート範囲が広いことである。サポートしている仮想化は、現在Xen、KVM、QEMU、LXC、OpenVZ、UML、VirtualBox、VMware ESX・GSX・Workstation・Player、Hyper-V、そしてクラスタ管理ソフトOpenNebula
概要
libvirt自体が多くの種類の仮想化をサポートしていても、必ずしもlibvirtを利用しているアプリケーションが全ての仮想化をサポートしているというわけではなく、KVMやXenなどがlibvirtを利用しているアプリケーションのサポートの中心となっている。
またハードウェアプラットフォームに着目すると、CPUの場合、x86、x86-64、IA-64、POWERなどをサポートしており、ビット (32/64) およびエンディアンを問わない。
このような幅広いサポートを行っているため、仮想機械を制御するインタフェースとしては、事実上の標準の地位を築きつつある。例えば、RHEL5上で仮想機械を管理するためのアプリケーションであるVirtual Machine Managerの実装においても利用されている[2]。
本ソフトウェアのライセンスはLGPLで提供されている。このため、GPLで開発されているXenのライブラリ (libxc) に比べてアプリケーション開発者の視点では使い勝手が良い。
標準提供APIはCとPythonである。またその他の言語 (Perl, OCaml, Ruby, Java) のAPIもオプションパッケージで提供されている。また、運用管理の標準インタフェースであるCIMへの対応もIBMを中心にCMPI CIM Providerとしてlibvirt-CIMの開発が進んでいる。なお、CMPIは、Common Manageability Programming Interfaceの略である。
セキュリティ拡張として、MACアクセス制御との連携を考えた ⇒sVirtが検討されている。
本プロジェクトのメンテナーは、Daniel Veillard(通称Daniel)、Daniel Berrange(通称Dan)、Richard W.M.Jones(通称Rich)などレッドハットの開発者である。そのほか、レッドハット以外にもIBMやノベル、富士通の開発者にソースコードの変更権が与えられている。 libvirtの実装はlibvirt.cを中心としたソフトウェア構成になっている。libvirtのAPIを利用しているアプリケーションとしては、管理コマンドvirshが提供されている。また、Python Bindingsもlibvirt.cの上位に位置する。 一方、各種仮想機械の制御ドライバは、libvirt.cの下に位置する。例えばXenの制御層の実装では、Xen統合管理層 (xen_unified.c) から、それぞれのXenのモジュールを呼び出す形になっている。ハイパーバイザ直接 (xen_internal.c)、管理ツールであるXend (xend_internal.c)、管理データベースであるxenstore (xs_internal.c) を呼び出している。 また、ネットワーク越しの制御に関するコードは、以下の通りである。クライアント側では、remote_internal.cを介してリクエストを発行する。サーバ側では、libvirtd(コード的には、qemudディレクトリ以下)を介して、libvirtAPIを使って制御を行う。 libvirtAPIを使う前にクライアント認証を必要とする接続がある。 接続で用いるクライアント認証方法は、管理者が選択できる。 この選択は、libvirtAPIを用いるアプリケーションに依存せず、統一的に適用される。
ソフトウェア構成
アクセス制御
サーバ設定
UNIXドメインソケットによる伝統的権限管理