16.5. 从 PXE 服务器启动虚拟机

使用预引导执行环境(PXE)的虚拟机可以从网络引导并加载它们的配置。本章描述了如何使用 libvirt 在虚拟或桥接网络上从 PXE 服务器引导虚拟机。

警告

这些流程仅作为示例提供。在操作之前,请确保您有足够的备份。

16.5.1. 在虚拟网络中设置 PXE 引导服务器

这个流程描述了如何配置 libvirt 虚拟网络以提供预启动执行环境(PXE)。这可让主机上的虚拟机被配置为从虚拟网络上提供的引导镜像引导。

先决条件

  • 本地 PXE 服务器(DHCP 和 TFTP),例如:

    • libvirt 内部服务器
    • 手动配置 dhcpd 和 tftpd
    • dnsmasq
    • Cobbler 服务器
  • PXE 引导映像,如 Cobbler 配置的 PXELINUX 或手工进行配置。

流程

  1. 将 PXE 引导镜像和配置放在 /var/lib/tftpboot 文件夹中。
  2. 设置文件夹权限:

    # chmod -R a+r /var/lib/tftpboot
  3. 设置文件夹所有权:

    # chown -R nobody: /var/lib/tftpboot
  4. 更新 SELinux 上下文:

    # chcon -R --reference /usr/sbin/dnsmasq /var/lib/tftpboot
    # chcon -R --reference /usr/libexec/libvirt_leaseshelper /var/lib/tftpboot
  5. 关闭虚拟网络:

    # virsh net-destroy default
  6. 在默认编辑器中打开虚拟网络配置文件:

    # virsh net-edit default
  7. 编辑 <ip> 元素,来包含合适的地址、网络掩码、DHCP 地址范围和引导文件,其中 example-pxelinux 是引导镜像文件的名称。

    <ip address='192.0.2.1' netmask='255.255.255.0'>
       <tftp root='/var/lib/tftpboot'/>
       <dhcp>
          <range start='192.0.2.2' end='192.0.2.254' />
          <bootp file='example-pxelinux'/>
       </dhcp>
    </ip>
  8. 启动虚拟网络:

    # virsh net-start default

验证

  • 验证 default 虚拟网络是否处于活跃状态:

    # virsh net-list
    Name             State    Autostart   Persistent
    ---------------------------------------------------
    default          active   no          no

16.5.2. 使用 PXE 和虚拟网络引导虚拟机

要从虚拟网络上的预引导执行环境(PXE)服务器引导虚拟机(VM),您必须启用 PXE 引导。

先决条件

流程

  • 创建启用了 PXE 引导的新虚拟机。例如,若要从 default 虚拟网络上提供的 PXE 安装一个新的 10 GB qcow2 镜像文件:

    # virt-install --pxe --network network=default --memory 2048 --vcpus 2 --disk size=10
    • 另外,您可以手动编辑现有虚拟机的 XML 配置文件:

      1. 确保 <os> 元素中有一个 <boot dev='network'/> 元素:

        <os>
           <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
           <boot dev='network'/>
           <boot dev='hd'/>
        </os>
      2. 确定客户端网络已配置为使用您的虚拟网络:

        <interface type='network'>
           <mac address='52:54:00:66:79:14'/>
           <source network='default'/>
           <target dev='vnet0'/>
           <alias name='net0'/>
           <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>

验证

  • 使用 virsh start 命令启动虚拟机。如果正确配置了 PXE,则虚拟机可以从 PXE 服务器上提供的引导镜像启动。

16.5.3. 使用 PXE 和桥接网络启动虚拟机

要从桥接网络上提供的预引导执行环境(PXE)服务器启动虚拟机(VM),您必须启用 PXE 引导。

先决条件

  • 启用了网络桥接。
  • 网桥网络上提供了 PXE 引导服务器。

流程

  • 创建启用了 PXE 引导的新虚拟机。例如,若要在 breth0 桥接网络上从 PXE 安装一个新的 10 GB qcow2 镜像文件:

    # virt-install --pxe --network bridge=breth0 --memory 2048 --vcpus 2 --disk size=10
    • 另外,您可以手动编辑现有虚拟机的 XML 配置文件:

      1. 确保 <os> 元素中有一个 <boot dev='network'/> 元素:

        <os>
           <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
           <boot dev='network'/>
           <boot dev='hd'/>
        </os>
      2. 确保虚拟机配置为使用桥接网络:

        <interface type='bridge'>
           <mac address='52:54:00:5a:ad:cb'/>
           <source bridge='breth0'/>
           <target dev='vnet0'/>
           <alias name='net0'/>
           <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>

验证

  • 使用 virsh start 命令启动虚拟机。如果正确配置了 PXE,则虚拟机可以从 PXE 服务器上提供的引导镜像启动。

其它资源