搜索

13.3. 优化 libvirt 守护进程

download PDF

libvirt 虚拟化套件作为 RHEL hypervisor 的管理层,libvirt 配置对您的虚拟化主机有很大影响。值得注意的是,RHEL 9 包含两种不同类型的 libvirt 守护进程,即单体或模块化,您使用的守护进程类型会影响您可以配置单独的虚拟化驱动程序。

13.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 - hypervisor 管理的主要守护进程
  • virtinterfaced - 用于主机 NIC 管理的辅助守护进程
  • virtnetworkd - 用于虚拟网络管理的辅助守护进程
  • virtnodedevd - 主机物理设备管理的辅助守护进程
  • virtnwfilterd - 主机防火墙管理的辅助守护进程
  • virtsecretd - 用于主机 secret 管理的辅助守护进程
  • virtstoraged - 用于存储管理的辅助守护进程

每个守护进程都有单独的配置文件 - 例如 /etc/libvirt/virtqemud.conf。因此,模块化的 libvirt 守护进程可以为调优 libvirt 资源管理提供更好的选项。

如果您执行了全新的 RHEL 9 安装,则会默认配置模块化的 libvirt

后续步骤

13.3.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
    active

    如果这个命令显示 active,则代表在使用 libvirtd

  • 您的虚拟机已关闭。

流程

  1. 停止 libvirtd 及其套接字。

    $ systemctl stop libvirtd.service
    $ systemctl stop libvirtd{,-ro,-admin,-tcp,-tls}.socket
  2. 禁用 libvirtd 以防止它在引导时启动。

    $ systemctl disable libvirtd.service
    $ systemctl disable libvirtd{,-ro,-admin,-tcp,-tls}.socket
  3. 启用模块 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
  4. 启动模块守护进程的套接字。

    # for drv in qemu network nodedev nwfilter secret storage; do systemctl start virt${drv}d{,-ro,-admin}.socket; done
  5. 可选: 如果您需要从远程主机连接到主机,请启用并启动虚拟化代理守护进程。

    1. 检查libvirtd-tls.socket 服务是否已在系统上启用了。

      # grep listen_tls /etc/libvirt/libvirtd.conf
      
      listen_tls = 0
    2. 如果 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
    3. 如果 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 套接字,您的主机必须配置了 TLS 证书,以与 libvirt 一起工作。如需更多信息,请参阅 上游 libvirt 文档

验证

  1. 激活已启用的虚拟化守护进程。

    # virsh uri
    qemu:///system
  2. 验证您的主机是否在使用 virtqemud 模块守护进程。

    # systemctl is-active virtqemud.service
    active

    如果状态是 active,则您已成功启用了模块 libvirt 守护进程。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.