15.4. 优化 libvirt 守护进程
libvirt 虚拟化套件作为 RHEL hypervisor 的管理层,libvirt 配置对您的虚拟化主机有很大影响。值得注意的是,RHEL 9 包含两种不同类型的 libvirt 守护进程,即单体或模块化,您使用的守护进程类型会影响您可以配置单独的虚拟化驱动程序。
15.4.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 - hypervisor 管理的主要守护进程
- virtinterfaced - 用于主机 NIC 管理的辅助守护进程
- virtnetworkd - 用于虚拟网络管理的辅助守护进程
- virtnodedevd - 主机物理设备管理的辅助守护进程
- virtnwfilterd - 主机防火墙管理的辅助守护进程
- virtsecretd - 用于主机 secret 管理的辅助守护进程
- virtstoraged - 用于存储管理的辅助守护进程
每个守护进程都有单独的配置文件 - 例如
/etc/libvirt/virtqemud.conf。因此,模块化的libvirt守护进程可以为调优libvirt资源管理提供更好的选项。如果您执行了全新的 RHEL 9 安装,则会默认配置模块化的
libvirt。
后续步骤
-
如果您的 RHEL 9 使用
libvirtd,红帽建议切换到模块化守护进程。具体步骤请参阅启用模块化 libvirt 守护进程。
15.4.2. 启用模块化 libvirt 守护进程 复制链接链接已复制到粘贴板!
在 RHEL 9 中,libvirt 库使用 modular 守护进程来处理您主机上的单个虚拟化驱动程序集。例如,virtqemud 守护进程处理 QEMU 驱动程序。
如果您执行了 RHEL 9 主机的全新安装,您的虚拟机监控程序默认使用模块化 libvirt 守护进程。但是,如果您将主机从 RHEL 8 升级到 RHEL 9,您的管理程序将使用单体 libvirtd 守护进程,这是 RHEL 8 中的默认设置。
如果是这种情况,红帽建议改为启用模块 libvirt 守护进程,因为它们为微调 libvirt 资源管理提供了更好的选项。另外,libvirtd 在以后的 RHEL 主发行版本中将不被支持。
先决条件
您的管理程序使用单体的
libvirtd服务。systemctl is-active libvirtd.service
# systemctl is-active libvirtd.service activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果这个命令显示
active,则代表在使用libvirtd。- 您的虚拟机已关闭。
流程
停止
libvirtd及其套接字。systemctl stop libvirtd.service systemctl stop libvirtd{,-ro,-admin,-tcp,-tls}.socket$ systemctl stop libvirtd.service $ systemctl stop libvirtd{,-ro,-admin,-tcp,-tls}.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用
libvirtd以防止它在引导时启动。systemctl disable libvirtd.service systemctl disable libvirtd{,-ro,-admin,-tcp,-tls}.socket$ systemctl disable libvirtd.service $ systemctl disable libvirtd{,-ro,-admin,-tcp,-tls}.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用模块
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 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; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动模块守护进程的套接字。
for drv in qemu interface network nodedev nwfilter secret storage; do systemctl start virt${drv}d{,-ro,-admin}.socket; done# for drv in qemu interface network nodedev nwfilter secret storage; do systemctl start virt${drv}d{,-ro,-admin}.socket; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果您需要从远程主机连接到主机,请启用并启动虚拟化代理守护进程。
检查
libvirtd-tls.socket服务是否已在系统上启用了。grep listen_tls /etc/libvirt/libvirtd.conf
# grep listen_tls /etc/libvirt/libvirtd.conf listen_tls = 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
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# 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}.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
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# 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}.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要启用
virtproxyd的 TLS 套接字,您的主机必须配置了 TLS 证书,以与libvirt一起工作。如需更多信息,请参阅 上游 libvirt 文档。
验证
激活已启用的虚拟化守护进程。
virsh uri
# virsh uri qemu:///systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证您的主机是否在使用
virtqemud模块守护进程。systemctl is-active virtqemud.service
# systemctl is-active virtqemud.service activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果状态是
active,则您已成功启用了模块libvirt守护进程。