4.3. 当主机启动时自动启动虚拟机

当一个带有运行的虚拟机(VM)的主机重启时,虚拟机将关闭,默认必须手动启动。要确保虚拟机在其主机运行时处于活跃状态,您可以将虚拟机配置为自动启动。

先决条件

流程

  1. 使用 virsh autostart 工具将虚拟机配置为在主机启动时自动启动。

    例如,以下命令将 demo-guest1 虚拟机配置为自动启动:

    # virsh autostart demo-guest1
    Domain 'demo-guest1' marked as autostarted
  2. 如果您使用不是由 libvirt 管理的网络接口,则也必须对 systemd 配置进行额外的更改。否则,受影响的虚拟机可能无法启动。

    注意

    例如,这些接口包括:

    • NetworkManager 创建的网桥设备
    • 网络配置为使用 <forward mode='bridge'/>
    1. 在 systemd 配置目录树中,如果 virtqemud.service.d 目录尚不存在,则创建该目录。

      # mkdir -p /etc/systemd/system/virtqemud.service.d/
    2. 在之前创建的目录中创建一个 10-network-online.conf systemd 单元覆盖文件。此文件的内容覆盖 virtqemud 服务的默认 systemd 配置。

      # touch /etc/systemd/system/virtqemud.service.d/10-network-online.conf
    3. 将以下行添加到 10-network-online.conf 文件中:这个配置更改可确保 systemd 仅在主机上的网络就绪后启动 virtqemud 服务。

      [Unit]
      After=network-online.target

验证

  1. 查看虚拟机配置,并检查是否启用了 autostart 选项。

    例如,以下命令显示有关 demo-guest1 虚拟机的基本信息,包括 autostart 选项:

    # virsh dominfo demo-guest1
    Id:             2
    Name:           demo-guest1
    UUID:           e46bc81c-74e2-406e-bd7a-67042bae80d1
    OS Type:        hvm
    State:          running
    CPU(s):         2
    CPU time:       385.9s
    Max memory:     4194304 KiB
    Used memory:    4194304 KiB
    Persistent:     yes
    Autostart:      enable
    Managed save:   no
    Security model: selinux
    Security DOI:   0
    Security label: system_u:system_r:svirt_t:s0:c873,c919 (enforcing)
  2. 如果您使用不由 libvirt 管理的网络接口,请检查 10-network-online.conf 文件的内容是否与以下输出匹配:

    $ cat /etc/systemd/system/virtqemud.service.d/10-network-online.conf
    [Unit]
    After=network-online.target

其它资源