第 4 章 为 Red Hat Virtualization 安装主机

Red Hat Virtualization 支持两种类型的主机: Red Hat Virtualization Hosts(RHVH)Red Hat Enterprise Linux 主机。根据您的环境,您可能只使用一种类型,或两者都使用。迁移和高可用性等功能至少需要两个主机。

有关为网络信息 配置主机网络,请参阅 推荐的实践

重要

安装时 SELinux 处于 enforcing 模式。要进行验证,请运行 getenforce。SELinux 必须在所有主机和管理器上处于 enforcing 模式,才能支持您的 Red Hat Virtualization 环境。

表 4.1. 主机类型

主机类型其他名称描述

Red Hat Virtualization Host

RHVH,一个精简的主机

这是基于 Red Hat Enterprise Linux 的最小操作系统。它作为 ISO 文件从客户门户分发,仅包含计算机充当主机所需的软件包。

Red Hat Enterprise Linux 主机

RHEL 主机,一个完全的主机

附加了适当订阅的 Red Hat Enterprise Linux 系统可用作主机。

主机兼容性

创建新数据中心时,您可以设置兼容性版本。选择适合数据中心所有主机的兼容性版本。设置之后,不允许版本回归。对于全新的 Red Hat Virtualization 安装,在默认数据中心和默认集群中设置了最新的兼容性版本 ; 要使用较早的兼容性版本,您必须创建额外的数据中心和集群。有关兼容性版本的更多信息,请参阅 Red Hat Virtualization 生命周期中的 Red Hat Virtualization Manager 兼容性

4.1. Red Hat Virtualization 主机

4.1.1. 安装 Red Hat Virtualization 主机

Red Hat Virtualization Host (RHVH) 是一个基于 Red Hat Enterprise Linux 的最小操作系统,旨在提供一种简单的方法来设置物理机以充当 Red Hat Virtualization 的 hypervisor。最小操作系统仅包含计算机充当虚拟机监控程序所需的软件包,并提供 Cockpit Web 界面来监控主机和执行管理任务。有关最低浏览器要求,请参阅 运行 Cockpit

RHVH 支持 NIST 800-53 分区要求以提高安全性。RHVH 默认使用 NIST 800-53 分区布局。

主机必须满足最低主机要求

警告

安装或重新安装主机的操作系统时,红帽强烈建议您先分离附加到主机的任何现有非 OS 存储,以避免意外初始化这些磁盘,从而避免意外初始化这些磁盘,并可能会丢失数据。

流程

  1. 请访问红帽客户门户上的 Red Hat Virtualization 入门并登录。
  2. 单击 Download Latest 以访问产品下载页面。
  3. 从列表中选择适当的 Hypervisor Image for RHV,然后单击 Download Now
  4. 启动您要安装 RHVH 的机器,从准备的安装介质启动。
  5. 在引导菜单中选择 Install RHVH 4.4 并按 Enter

    注意

    您还可以按 Tab 键编辑内核参数。内核参数必须以空格分开,您可以通过按 Enter 键使用指定的内核参数引导系统。按 Esc 键清除对内核参数的任何更改并返回到引导菜单。

  6. 选择语言,点 Continue
  7. 从键盘布局屏幕中选择键盘布局,然后点 Done
  8. Installation Destination 屏幕中选择要在其上安装 RHV 的设备。(可选)启用加密。点 Done

    重要

    使用 Automatically configure partitioning 选项。

  9. Time & Date 屏幕中选择一个时区,然后点 Done
  10. Network & Host Name 屏幕选择一个网络,然后点击 Configure…​ 来配置连接详情。

    注意

    要在系统每次启动时使用连接,请选择 Connect automatically with priority 复选框。如需更多信息,请参阅 Red Hat Enterprise Linux 8 安装指南中的配置网络和主机名选项

    Host Name 字段中输入主机名,然后单击 Done

  11. 可选: 配置安全策略和 Kdump有关安装 概述 屏幕中的每个部分的更多信息,请参阅 为 Red Hat Enterprise Linux 8 执行标准 RHEL 安装中的 GUI 定制您的 RHEL 安装
  12. Begin Installation
  13. 设置 root 密码,并选择性地在 RHVH 安装时创建额外的用户。

    警告

    不要在 RHVH 上创建不受信任的用户,因为这可能导致利用本地安全漏洞。

  14. 单击 Reboot 以完成安装。

    注意

    当 RHVH 重新启动时,nodectl check 会在主机上执行健康检查,并在您在命令行中登录时显示结果。消息 node status: OKnode status: DEGRADED 代表了健康状态。运行 nodectl check 以了解更多信息。

    注意

    如有必要,您可以防止内核模块自动载入

4.1.2. 启用 Red Hat Virtualization 主机存储库

注册系统以接收更新。Red Hat Virtualization Host 只需要一个软件仓库。本节提供有关将 RHVH 注册到内容交付网络Red Hat Satellite 6 的说明。

将 RHVH 注册到内容交付网络

  1. 启用 Red Hat Virtualization Host 8 存储库,以便以后更新 Red Hat Virtualization 主机:

    # subscription-manager repos --enable=rhvh-4-for-rhel-8-x86_64-rpms

将 RHVH 注册到 Red Hat Satellite 6

  1. 登录位于 https://HostFQDNorIP:9090 的 Cockpit Web 界面。
  2. Terminal
  3. 使用 Red Hat Satellite 6 注册 RHVH:

      # rpm -Uvh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
      # subscription-manager register --org="org_id"
      # subscription-manager list --available
      # subscription-manager attach --pool=pool_id
      # subscription-manager repos \
        --disable='*' \
        --enable=rhvh-4-for-rhel-8-x86_64-rpms
注意

您还可以使用 virt-who 在 Red Hat Satellite 中配置虚拟机订阅。请参阅使用 virt-who 管理基于主机的订阅

4.1.3. 高级安装

4.1.3.1. 自定义分区

不建议在 Red Hat Virtualization Host (RHVH) 上自定义分区。在 Installation Destination 窗口中使用 Automatically configure partitioning 选项。

如果您的安装需要自定义分区,在安装过程中选择 I will configure partitioning 选项,请注意这有以下限制:

  • 确定在 Manual Partitioning 窗口中选择了默认 LVM Thin Provisioning 选项。
  • 以下目录是必需的,且必须在精简置备的逻辑卷中:

    • root (/)
    • /home
    • /tmp
    • /var
    • /var/crash
    • /var/log
    • /var/log/audit

      重要

      不要为 /usr 创建单独的分区。这样做将导致安装失败。

      /usr 必须位于可以更改版本与 RHVH 的逻辑卷中,因此应保留在 root (/) 上。

      有关每个分区所需的 存储大小的详情,请参考存储要求

  • /boot 目录应定义为标准分区。
  • /var 目录必须位于单独的卷或磁盘中。
  • 仅支持 XFS 或 Ext4 文件系统。

在 Kickstart 文件中配置手动分区

以下示例演示了如何在 Kickstart 文件中配置手动分区。

clearpart --all
part /boot --fstype xfs --size=1000 --ondisk=sda
part pv.01 --size=42000 --grow
volgroup HostVG pv.01 --reserved-percent=20
logvol swap --vgname=HostVG --name=swap --fstype=swap --recommended
logvol none --vgname=HostVG --name=HostPool --thinpool --size=40000 --grow
logvol / --vgname=HostVG --name=root --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=6000 --grow
logvol /var --vgname=HostVG --name=var --thin --fstype=ext4 --poolname=HostPool
--fsoptions="defaults,discard" --size=15000
logvol /var/crash --vgname=HostVG --name=var_crash --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=10000
logvol /var/log --vgname=HostVG --name=var_log --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=8000
logvol /var/log/audit --vgname=HostVG --name=var_audit --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=2000
logvol /home --vgname=HostVG --name=home --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=1000
logvol /tmp --vgname=HostVG --name=tmp --thin --fstype=ext4 --poolname=HostPool --fsoptions="defaults,discard" --size=1000
注意

如果使用 logvol --thinpool --grow,还必须包含 volgroup --reserved-spacevolgroup --reserved-percent,以在卷组中保留空间,以便精简池增长。

4.1.3.2. 在没有安装程序支持的主机上安装 DUD 驱动程序

安装 Red Hat Virtualization Host(RHVH)有时需要一个 Driver Update Disk(DUD),比如使用 RHVH 默认配置不支持的硬件 RAID 设备。与 Red Hat Enterprise Linux 主机相比,RHVH 并不完全支持使用 DUD。因此,主机在安装后无法正常引导,因为它没有看到 RAID。相反,它引导进入紧急模式。

输出示例:

Warning: /dev/test/rhvh-4.4-20210202.0+1 does not exist
Warning: /dev/test/swap does not exist
Entering emergency mode. Exit the shell to continue.

在这种情况下,您可以在完成安装前手动添加驱动程序。

先决条件

  • 您要在其上安装 RHVH 的计算机。
  • 一个 DUD。
  • 如果您将 USB 驱动器用于 DUD 和 RHVH,则必须至少有两个可用的 USB 端口。

流程

  1. 在主机上加载 DUD。
  2. 安装 RHVH。请参阅 使用命令行将 Red Hat Virtualization 安装为自托管引擎中安装 Red Hat Virtualization 主机

    重要

    安装完成后,请勿重启系统。

    提示

    如果要使用 SSH 访问 DUD,请执行以下操作:

    • 在内核命令行中添加字符串 inst.sshd

      <kernel_command_line> inst.sshd
    • 在安装过程中启用网络。
  3. Ctrl + Alt + F3 进入控制台模式。或者,您也可以使用 SSH 连接到它。
  4. 挂载 DUD:

    # mkdir /mnt/dud
    # mount -r /dev/<dud_device> /mnt/dud
  5. 将 DUD 中的 RPM 文件复制到目标机器的磁盘中:

    # cp /mnt/dud/rpms/<path>/<rpm_file>.rpm /mnt/sysroot/root/

    例如:

    # cp /mnt/dud/rpms/x86_64/kmod-3w-9xxx-2.26.02.014-5.el8_3.elrepo.x86_64.rpm /mnt/sysroot/root/
  6. 将根目录改为 /mnt/sysroot

    # chroot /mnt/sysroot
  7. 备份当前的 initrd 镜像。例如:

    # cp -p /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img.bck1
    # cp -p /boot/rhvh-4.4.5.1-0.20210323.0+1/initramfs-4.18.0-240.15.1.el8_3.x86_64.img /boot/rhvh-4.4.5.1-0.20210323.0+1/initramfs-4.18.0-240.15.1.el8_3.x86_64.img.bck1
  8. 从您之前创建的副本中为驱动程序安装 RPM 文件。

    例如:

    # dnf install /root/kmod-3w-9xxx-2.26.02.014-5.el8_3.elrepo.x86_64.rpm
    注意

    在重新引导安装环境后,此软件包在系统中不可见。因此,如果您需要它才能重新构建 initramfs,您需要再次安装该软件包,之后该软件包仍会保留。

    如果使用 dnf 更新主机,驱动程序更新会保留,因此您不需要重复此过程。

    提示

    如果您没有互联网连接,请使用 rpm 命令而不是 dnf

    # rpm -ivh /root/kmod-3w-9xxx-2.26.02.014-5.el8_3.elrepo.x86_64.rpm
  9. 创建新镜像,强制添加驱动程序:

    # dracut --force --add-drivers <module_name> --kver <kernel_version>

    例如:

    # dracut --force --add-drivers 3w-9xxx --kver 4.18.0-240.15.1.el8_3.x86_64
  10. 检查结果。新镜像应该更大,并且包含驱动程序。例如,比较原始备份镜像文件的大小和新镜像文件的大小。

    在本例中,新镜像文件是 88739013 字节,大于原始 88717417 字节:

    # ls -ltr /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img*
    -rw-------. 1 root root 88717417 Jun  2 14:29 /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img.bck1
    -rw-------. 1 root root 88739013 Jun  2 17:47 /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img

    新驱动程序应该是镜像文件的一部分。例如,应包含 3w-9xxx 模块:

    # lsinitrd /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img | grep 3w-9xxx
    drwxr-xr-x   2 root     root            0 Feb 22 15:57 usr/lib/modules/4.18.0-240.15.1.el8_3.x86_64/weak-updates/3w-9xxx
    lrwxrwxrwx   1 root     root           55 Feb 22 15:57 usr/lib/modules/4.18.0-240.15.1.el8_3.x86_64/weak-updates/3w-9xxx/3w-9xxx.ko-../../../4.18.0-240.el8.x86_64/extra/3w-9xxx/3w-9xxx.ko
    drwxr-xr-x   2 root     root            0 Feb 22 15:57 usr/lib/modules/4.18.0-240.el8.x86_64/extra/3w-9xxx
    -rw-r--r--   1 root     root        80121 Nov 10  2020 usr/lib/modules/4.18.0-240.el8.x86_64/extra/3w-9xxx/3w-9xxx.ko
  11. 将镜像复制到 /boot 下的目录中,其中包含正在安装的层中使用的内核,例如:

    # cp -p /boot/initramfs-4.18.0-240.15.1.el8_3.x86_64.img /boot/rhvh-4.4.5.1-0.20210323.0+1/initramfs-4.18.0-240.15.1.el8_3.x86_64.img
  12. 退出 chroot。
  13. 退出 shell。
  14. 如果您使用 Ctrl + Alt + F3 访问虚拟终端,则请按 Ctrl + Alt + F_<n>_,通常为 F1F5来返回到安装程序。
  15. 在安装程序屏幕中,重新启动.

验证

计算机应成功重新引导。

4.1.3.3. 自动执行 Red Hat Virtualization Host 部署

您可以在没有物理介质设备的情况下安装 Red Hat Virtualization Host (RHVH),方法是使用包含安装问题的答案的 Kickstart 文件通过网络从 PXE 服务器引导。

警告

安装或重新安装主机的操作系统时,红帽强烈建议您先分离附加到主机的任何现有非 OS 存储,以避免意外初始化这些磁盘,从而避免意外初始化这些磁盘,并可能会丢失数据。

Red Hat Enterprise Linux 安装指南中提供了使用 Kickstart 文件从 PXE 服务器安装的一般说明,因为 RHVH 的安装方式与 Red Hat Enterprise Linux 非常相似。下面介绍了 RHVH 的特定说明,以及使用 Red Hat Satellite 部署 RHVH 的示例。

自动化 RHVH 部署有 3 个阶段:

4.1.3.3.1. 准备安装环境
  1. 请访问红帽客户门户上的 Red Hat Virtualization 入门并登录。
  2. 单击 Download Latest 以访问产品下载页面。
  3. 从列表中选择适当的 Hypervisor Image for RHV,然后单击 Download Now
  4. 通过网络提供 RHVH ISO 镜像。请参阅 Red Hat Enterprise Linux 安装指南中的网络安装源
  5. 从 RHVH ISO 中提取 squashfs.img 虚拟机监控程序镜像文件:

    # mount -o loop /path/to/RHVH-ISO /mnt/rhvh
    # cp /mnt/rhvh/Packages/redhat-virtualization-host-image-update* /tmp
    # cd /tmp
    # rpm2cpio redhat-virtualization-host-image-update* | cpio -idmv
    注意

    squashfs.img 文件位于 /tmp/usr/share/redhat-virtualization-host/image/ 目录中,名为 redhat-virtualization-host-version_number_version.squashfs.img。它包含用于在物理机上安装的虚拟机监控程序镜像。它不应与 /LiveOS/squashfs.img 文件(由 Anaconda inst.stage2 选项使用)混淆。

4.1.3.3.2. 配置 PXE 服务器和引导装载程序
  1. 配置 PXE 服务器。请参阅 Red Hat Enterprise Linux 安装指南中的准备网络安装
  2. 将 RHVH 引导镜像复制到 /tftpboot 目录中:

    # cp mnt/rhvh/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/
  3. 创建一个 rhvh 标签,在引导装载程序配置中指定 RHVH 引导镜像:

    LABEL rhvh
    MENU LABEL Install Red Hat Virtualization Host
    KERNEL /var/lib/tftpboot/pxelinux/vmlinuz
    APPEND initrd=/var/lib/tftpboot/pxelinux/initrd.img inst.stage2=URL/to/RHVH-ISO

    Red Hat Satellite 的 RHVH 引导装载程序配置示例

    如果您使用 Red Hat Satellite 中的信息来置备主机,您必须创建一个名为 rhvh_image 的全局或主机组级别参数,并使用挂载或提取 ISO 的目录 URL 填充它:

    <%#
    kind: PXELinux
    name: RHVH PXELinux
    %>
    # Created for booting new hosts
    #
    
    DEFAULT rhvh
    
    LABEL rhvh
    KERNEL <%= @kernel %>
    APPEND initrd=<%= @initrd %> inst.ks=<%= foreman_url("provision") %> inst.stage2=<%= @host.params["rhvh_image"] %> intel_iommu=on console=tty0 console=ttyS1,115200n8 ssh_pwauth=1 local_boot_trigger=<%= foreman_url("built") %>
    IPAPPEND 2
  4. 使 RHVH ISO 的内容在本地可用,并使用 HTTPD 服务器将其导出到网络中:

    # cp -a /mnt/rhvh/ /var/www/html/rhvh-install
    # curl URL/to/RHVH-ISO/rhvh-install
4.1.3.3.3. 创建并运行 Kickstart 文件
  1. 创建 Kickstart 文件,并使其可通过网络使用。请参阅 Red Hat Enterprise Linux 安装指南中的 Kickstart 安装
  2. 确保 Kickstart 文件满足以下 RHV 特定要求:

    • RHVH 不需要 %packages 部分。使用 liveimg 选项并指定 RHVH ISO 镜像中的 redhat-virtualization-host-version_number_version.squashfs.img 文件:

      liveimg --url=example.com/tmp/usr/share/redhat-virtualization-host/image/redhat-virtualization-host-version_number_version.squashfs.img
    • 强烈建议自动分区,但请谨慎操作:确保首先检测到本地磁盘,包含 ignoredisk 命令,并指定要忽略的本地磁盘,如 sda。为确保使用特定的驱动器,红帽建议使用 ignoredisk --only-use=/dev/disk/<path>ignoredisk --only-use=/dev/disk/<ID>

      autopart --type=thinp
      ignoredisk --only-use=sda
      ignoredisk --only-use=/dev/disk/<path>
      ignoredisk --only-use=/dev/disk/<ID>
      注意

      自动分区需要精简配置。

      --no-home 选项无法在 RHVH 中工作,因为 /home 是一个必需的目录。

      如果您的安装需要手动分区,请参阅 Custom Partitioning 以了解适用于分区的限制列表,并在 Kickstart 文件中手动分区示例。

    • 需要一个调用 nodectl init 命令的 %post 部分:

      %post
      nodectl init
      %end
      注意

      确保 nodectl init 命令位于 %post 部分的结尾,但如果存在,则在重新引导代码之前。

      自行部署 RHVH 的 Kickstart 示例

      此 Kickstart 示例演示了如何部署 RHVH。您可以根据需要包含其他命令和选项。

      警告

      本例假定所有磁盘均为空,可以初始化。如果您使用数据附加了磁盘,请将其删除或添加到 ignoredisks 属性中。

      liveimg --url=http://FQDN/tmp/usr/share/redhat-virtualization-host/image/redhat-virtualization-host-version_number_version.squashfs.img
      clearpart --all
      autopart --type=thinp
      rootpw --plaintext ovirt
      timezone --utc America/Phoenix
      zerombr
      text
      
      reboot
      
      %post --erroronfail
      nodectl init
      %end

      Kickstart 示例,部署来自 Satellite 的注册和网络配置的 RHVH。

      此 Kickstart 示例使用 Red Hat Satellite 中的信息来配置主机网络,并将主机注册到 Satellite 服务器。您必须创建一个名为 rhvh_image 的全局或主机组级别参数,并为它填充 squashfs.img 文件的目录 URL。ntp_server1 也是全局或主机组级别变量。

      警告

      本例假定所有磁盘均为空,可以初始化。如果您使用数据附加了磁盘,请将其删除或添加到 ignoredisks 属性中。

      <%#
      kind: provision
      name: RHVH Kickstart default
      oses:
      - RHVH
      %>
      install
      liveimg --url=<%= @host.params['rhvh_image'] %>squashfs.img
      
      network --bootproto static --ip=<%= @host.ip %> --netmask=<%= @host.subnet.mask %> --gateway=<%= @host.subnet.gateway %> --nameserver=<%= @host.subnet.dns_primary %> --hostname <%= @host.name %>
      
      zerombr
      clearpart --all
      autopart --type=thinp
      
      rootpw --iscrypted <%= root_pass %>
      
      # installation answers
      lang en_US.UTF-8
      timezone <%= @host.params['time-zone'] || 'UTC' %>
      keyboard us
      firewall --service=ssh
      services --enabled=sshd
      
      text
      reboot
      
      %post --log=/root/ks.post.log --erroronfail
      nodectl init
      <%= snippet 'subscription_manager_registration' %>
      <%= snippet 'kickstart_networking_setup' %>
      /usr/sbin/ntpdate -sub <%= @host.params['ntp_server1'] || '0.fedora.pool.ntp.org' %>
      /usr/sbin/hwclock --systohc
      
      /usr/bin/curl <%= foreman_url('built') %>
      
      sync
      systemctl reboot
      %end
  3. 将 Kickstart 文件位置添加到 PXE 服务器的引导装载程序配置文件中:

    APPEND initrd=/var/tftpboot/pxelinux/initrd.img inst.stage2=URL/to/RHVH-ISO inst.ks=URL/to/RHVH-ks.cfg
  4. 按照 Red Hat Enterprise Linux 安装指南中的使用 PXE 从网络引导中的内容,安装 RHVH。