17.3. libvirt デーモンの最適化
libvirt
仮想化スイートは、RHEL ハイパーバイザーの管理層として機能し、libvirt
の設定は仮想化ホストに大きな影響を与えます。特に、RHEL 9 には、モノリシックまたはモジュラーの 2 つのタイプの libvirt
デーモンが含まれており、使用するデーモンのタイプは、個々の仮想化ドライバーをどの程度細かく設定できるかに影響します。
17.3.1. libvirt デーモンのタイプ
RHEL 9 は、以下の libvirt
デーモンタイプをサポートします。
- モノリシックな libvirt
従来の
libvirt
デーモンであるlibvirtd
は、単一の設定ファイル/etc/libvirt/libvirtd.conf
を使用して、さまざまな仮想化ドライバーを制御します。このため、
libvirtd
は一元化されたハイパーバイザー設定を可能にしますが、システムリソースの使用が非効率的となる可能性があります。したがって、libvirtd
は、RHEL の今後のメジャーリリースではサポートされなくなる予定です。ただし、RHEL 8 から RHEL 9 に更新した場合、ホストはデフォルトで引き続き
libvirtd
を使用します。- モジュラー libvirt
RHEL 9 で新たに導入されたモジュラー
libvirt
は、仮想化ドライバーごとに特定のデーモンを提供します。これらには以下が含まれます。- virtqemud - ハイパーバイザー管理用のプライマリーデーモン
- virtinterfaced - ホストの NIC 管理用のセカンダリーデーモン
- virtnetworkd - 仮想ネットワーク管理用のセカンダリーデーモン
- virtnodedevd - ホストの物理デバイス管理用のセカンダリーデーモン
- virtnwfilterd - ホストのファイアウォール管理用のセカンダリーデーモン
- virtsecretd - ホストシークレット管理用のセカンダリーデーモン
- virtstoraged - ストレージ管理用のセカンダリーデーモン
デーモンごとに個別の設定ファイル (
/etc/libvirt/virtqemud.conf
など) があります。したがって、モジュラーのlibvirt
デーモンは、libvirt
リソース管理を細かく調整するためのより良いオプションを提供します。RHEL 9 を新規インストールした場合、モジュラー
libvirt
はデフォルトで設定されています。
次のステップ
-
RHEL 9 で
libvirtd
を使用する場合、Red Hat は、モジュール式デーモンへの切り替えを推奨しています。手順は、モジュラー libvirt デーモンの有効化 を参照してください。
17.3.2. モジュラー libvirt デーモンの有効化
RHEL 9 では、libvirt
ライブラリーは、ホスト上の個々の仮想化ドライバーセットを処理するモジュラーデーモンを使用します。たとえば、virtqemud
デーモンは QEMU ドライバーを処理します。
RHEL 9 ホストの新規インストールを実行すると、ハイパーバイザーはデフォルトでモジュラー libvirt
デーモンを使用します。ただし、ホストを RHEL 8 から RHEL 9 にアップグレードした場合、ハイパーバイザーは RHEL 8 のデフォルトであるモノリシックな libvirtd
デーモンを使用します。
その場合、Red Hat は、代わりにモジュラー libvirt
デーモンを有効にすることを推奨します。これは、libvirt
リソース管理を微調整するためのより良いオプションを提供するためです。また、RHEL の今後のメジャーリリースでは libvirtd
はサポートされなくなる予定です。
前提条件
ハイパーバイザーがモノリシックな
libvirtd
サービスを使用している。# systemctl is-active libvirtd.service active
このコマンドで
active
が表示される場合、libvirtd
を使用していることになります。- 仮想マシンがシャットダウンしている。
手順
libvirtd
とそのソケットを停止します。$ systemctl stop libvirtd.service $ systemctl stop libvirtd{,-ro,-admin,-tcp,-tls}.socket
libvirtd
を無効にして、システムの起動時に開始されないようにします。$ systemctl disable libvirtd.service $ systemctl disable libvirtd{,-ro,-admin,-tcp,-tls}.socket
モジュラーの
libvirt
デーモンを有効にします。# for drv in qemu interface network nodedev nwfilter secret storage; do systemctl unmask virt${drv}d.service; systemctl unmask virt${drv}d{,-ro,-admin}.socket; systemctl enable virt${drv}d.service; systemctl enable virt${drv}d{,-ro,-admin}.socket; done
モジュラーデーモンのソケットを起動します。
# for drv in qemu network nodedev nwfilter secret storage; do systemctl start virt${drv}d{,-ro,-admin}.socket; done
オプション: リモートホストからホストに接続する必要がある場合は、仮想化プロキシーデーモンを有効にして起動します。
システムで
libvirtd-tls.socket
サービスが有効になっているかどうかを確認します。# cat /etc/libvirt/libvirt.conf | grep listen_tls listen_tls = 0
libvirtd-tls.socket
が有効になっていない場合 (listen_tls = 0
)、次のようにvirtproxyd
をアクティブにします。# systemctl unmask virtproxyd.service # systemctl unmask virtproxyd{,-ro,-admin}.socket # systemctl enable virtproxyd.service # systemctl enable virtproxyd{,-ro,-admin}.socket # systemctl start virtproxyd{,-ro,-admin}.socket
libvirtd-tls.socket
が有効になっている場合 (listen_tls = 1
)、次のようにvirtproxyd
をアクティブにします。# systemctl unmask virtproxyd.service # systemctl unmask virtproxyd{,-ro,-admin,-tls}.socket # systemctl enable virtproxyd.service # systemctl enable virtproxyd{,-ro,-admin,-tls}.socket # systemctl start virtproxyd{,-ro,-admin,-tls}.socket
virtproxyd
の TLS ソケットを有効にするには、libvirt
で使用できるように設定された TLS 証明書がホストに必要です。詳細は、アップストリームの libvirt ドキュメント を参照してください。
検証
有効化された仮想化デーモンをアクティブにします。
# virsh uri qemu:///system
ホストが
virtqemud
モジュラーデーモンを使用していることを確認します。# systemctl is-active virtqemud.service active
ステータスが
active
の場合、libvirt
モジュラーデーモンは正常に有効になっています。