libvirt とは何か
Web の情報がとっちらかってて分かり辛いので、要点を意識してまとめる。
libvirt の概要
「りぶばーと」と読む。virt は「virtualization」の略。
仮想化基盤との対話のためのライブラリおよびツールキット。 libvirt という名前だが、ツールキットとしての色合いが強い。
主に Linux を対象としていて、ハイパーバイザとの対話のみに機能を絞っている点がポイント。 下まわりは KVM/QEMU, Xen, LXC といった仮想化基盤に任せる。
RedHat が中心となって開発が進められており、RedHat 系の OS では KVM と共に標準的にサポートされている。
libvirt の構成
libvirt はハイパーバイザとの対話のみを扱うので、実際に VM を立ち上げるには別途下回りとなる仮想化基盤が必要となる。 libvirt はその特徴として、KVM/QEMU や Xen を始めとして、多くの仮想化基盤をサポートしているため、その選択肢は広い。 ただし、ある仮想化基盤を採用する場合には、それに合わせたドライバのインストールが必要となる。
libvirt はサーバ/クライアント構成をとる。 libvirt を利用するには、libvirt を利用したいホストの上で libvirtd と呼ばれるサービスを走らせる必要がある。 また、libvirtd へのアクセスには、クライアントライブラリやアプリを利用する。 C および Python のクライアントライブラリが libvirt コミュニティから提供されている他、 クライアントアプリとして、CLI の virsh や GUI の virt-manager が提供されている。
サーバ/クライアント構成からわかるように、libvirt はリモートアクセスによるクライアント操作に対応している。 接続方式は、libvirt 固有のプロトコルの他、SSH, Xen 由来の接続方式に対応する。 また、認証機能は SASL との連携によって提供され、パスワード認証, GSSAPI, Kerberos 認証に対応する。
libvirt の競合
複数の仮想化基盤をサポートした対話専用のライブラリとしては、これといった競合プロダクトは他に存在しない。 多くの仮想化基盤は対話を含めたレイヤをサポートしているため、libvirt のようなプロダクトを必要としないことが一因として考えられるだろう。
Docker は、下まわりを仮想化基盤(LXC)に依存することで、ユーザに機能を提供しているという点で類似がみられるが、特定の仮想化基盤に特化することで、ユーザが仮想化基盤を意識することなく利用できる作りになっている点や、DockerHub の存在など、よりプラットフォームとしての機能に力を入れている点で大きく違っている。