Libvirt

libvirt:仮想化管理のためのオープンソースAPI



libvirtは、レッドハットを中心とした開発者コミュニティによって開発されているオープンソースプロジェクトです。様々な仮想化技術を抽象化し、共通のAPIを提供することで、仮想マシンの管理を容易にすることを目的としています。その高い汎用性と柔軟性から、仮想化基盤における事実上の標準として広く利用されています。

主要な特徴



幅広い仮想化技術のサポート: libvirtは、Xen、KVM、QEMU、LXC、OpenVZ、UML、VirtualBoxVMware ESX/GSX/Workstation/Player、Hyper-V、そしてOpenNebulaといった、主要な仮想化技術をサポートしています。 さらに、Linux-VServerなどへの対応も検討されており、常に最新の仮想化技術に対応するよう進化を続けています。 サポートするハイパーバイザーのバージョンも多岐に渡り、高い互換性を提供しています。

多様なプラットフォームと言語への対応: x86、x86-64、IA-64、POWERなど、様々なCPUアーキテクチャと、32ビット/64ビット、ビッグエンディアン/リトルエンディアンといったエンディアンネスを問わず動作します。 Unix系OSだけでなく、Windows上でもMinGWCygwinを用いて利用可能です。 主要なAPIはCとPythonで提供され、PerlOCamlRubyJavaなど、他の言語用のバインディングもオプションで提供されています。

柔軟なライセンス: LGPLライセンスの下で提供されているため、GPLライセンスソフトウェアと比較して、アプリケーション開発における制約が少なく、開発者にとって使い勝手の良いライブラリとなっています。

堅牢なセキュリティ: libvirtは、様々な認証方法に対応しています。UNIXドメインソケットを用いた伝統的な権限管理、Polkitによる高度なアクセス制御、ユーザ名とパスワードによる認証、そしてKerberos認証など、セキュリティ要件に合わせて柔軟に設定できます。 また、TCPソケットを用いる際にはSASL認証機構を標準で採用し、Digest-MD5を用いた基本的なユーザ名とパスワード認証に加え、TLSによるデータ暗号化もサポートします。

ソフトウェア構成



libvirtの中心となるのはlibvirt.cです。 このライブラリの上に、管理コマンドである`virsh`やPythonバインディングが構築されています。 一方、下層には、XenQEMU/KVMなどの仮想化技術に対応したドライバが存在し、それぞれのハイパーバイザーを制御します。 ネットワーク越しでの制御は、クライアント側の`remote_internal.c`と、サーバ側の`libvirtd`によって実現されています。

アクセス制御の詳細



libvirtへのアクセス制御は、libvirtdの設定ファイル(/etc/libvirt/libvirtd.conf)で設定可能です。認証方法は、なし、Polkit、SASLの3種類から選択できます。

UNIXドメインソケットによる伝統的権限管理: 従来のファイルアクセス権限を用いたシンプルな方法です。読み書き可能なソケットと読み取り専用のソケットの2種類があり、アクセス権限は、`libvirtd.conf`ファイルで調整できます。

Polkitを使ったUNIXドメインソケットの認証: Polkitを用いた、より高度なアクセス制御です。PolicyKit.confファイルで詳細なアクセスルールを設定できます。 アプリケーションはPolkitと連携して認証を行い、ルート権限を持たない状態で仮想マシンを管理できます。

ユーザ名とパスワードによる認証: TCPソケットを用いた場合の標準的な認証方法です。SASL認証機構とDigest-MD5アルゴリズムを使用します。 `saslpasswd2`コマンドを使用してユーザアカウントを追加・削除できます。

Kerberos認証: シングルサインオンを実現するKerberos認証もサポートしています。`/etc/sasl2/libvirt.conf`ファイルの設定を変更することで有効化できます。 Kerberos認証を用いるには、適切なKerberos設定と、libvirtサーバ用のプリンシパルの設定が必要です。

各種ドライバ



libvirtは、XenQEMU/KVM、そしてネットワーク越しでのリモート管理に対応したドライバを提供しています。それぞれのドライバは、対応するハイパーバイザーと適切に連携して動作します。

まとめ



libvirtは、その汎用性、柔軟性、そしてセキュリティの高さから、大規模な仮想化環境構築において重要な役割を果たしています。 様々な仮想化技術を統一的に管理できるプラットフォームとして、今後もその重要性は増していくと考えられます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。