第 2 章 管理镜像


Image 服务(glance)为磁盘和服务器镜像提供发现、注册和交付服务。它提供复制或快照服务器镜像并立即存储它的功能。您可以将存储的镜像用作模板,比安装服务器操作系统和单独配置服务,快速、一致地编写新的服务器。

2.1. 创建镜像

要创建镜像,您可以使用 Red Hat Enterprise Linux (RHEL)基于内核的虚拟机(KVM)客户机镜像,或者您可以使用 RHEL ISO 文件或 Windows ISO 文件以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。

您可以使用以下可用的 Red Hat Enterprise Linux (RHEL)基于内核的虚拟机(KVM)客户机 QCOW2 镜像之一:

这些镜像使用 cloud-init 配置,且必须利用 EC2 兼容元数据服务来调配 SSH 密钥才能正常工作。

就绪的 Windows KVM 客户机 QCOW2 镜像不可用。

注意

对于 KVM 客户机镜像:

  • 镜像中的 root 帐户被取消激活,但 sudo 访问权限被赋予一个名为 cloud-user 的特殊用户。
  • 此映像没有设置 root 密码。

通过将 !! 放置到第二个字段中,将 root 密码锁定在 /etc/shadow 中。

对于 Red Hat OpenStack Platform (RHOSP)实例,从 RHOSP 仪表板或命令行生成 SSH 密钥对,并使用该密钥组合以 root 用户身份对实例执行 SSH 公钥身份验证。

当您启动实例时,此公钥会注入到其中。然后,您可以使用创建密钥对时下载的私钥进行身份验证。

要创建自定义 Red Hat Enterprise Linux (RHEL)或 Windows 镜像,请确保您有以下先决条件。

先决条件

  • 创建镜像的 Linux 主机。这可以是您可以在其中安装和运行 Linux 软件包的任何机器,但 undercloud 或 overcloud 除外。
  • advanced-virt 存储库已启用:

    $ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
    Copy to Clipboard Toggle word wrap
  • 安装 virt-manager 应用程序以拥有创建客户机操作系统所需的所有软件包:

    $ sudo dnf module install -y virt
    Copy to Clipboard Toggle word wrap
  • 已安装 libguestfs-tools 软件包,以便具有访问和修改虚拟机镜像的一组工具:

    $ sudo dnf install -y libguestfs-tools-c
    Copy to Clipboard Toggle word wrap
  • RHEL 9 或 8 ISO 文件或者 Windows ISO 文件。有关 RHEL ISO 文件的更多信息,请参阅 RHEL 9.0 Binary DVDRHEL 8.6 Binary DVD。如果您没有 Windows ISO 文件,请参阅 Microsoft Evaluation Center 以下载评估镜像。
  • 文本编辑器(如果您想更改 kickstart 文件(仅限 RHEL)。
重要

如果在 undercloud 上安装 libguestfs-tools 软件包,请禁用 iscsid.socket,以避免与 undercloud 上的 tripleo_iscsid 服务的端口冲突:

$ sudo systemctl disable --now iscsid.socket
Copy to Clipboard Toggle word wrap

2.1.3. 创建 Red Hat Enterprise Linux 9 镜像

使用 Red Hat Enterprise Linux (RHEL) 9 ISO 文件,以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。

注意

您必须在主机上使用 [root@host] ""运行所有命令。

流程

  1. 使用 virt-install 开始安装:

    [root@host]# virt-install \
      --virt-type kvm \
      --name <rhel9> \
      --ram <2048> \
      --cdrom </var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso> \
      --disk <rhel9.qcow2>,format=qcow2,size=<10> \
      --network=bridge:virbr0 \
      --graphics vnc,listen=127.0.0.1 \
      --noautoconsole \
      --os-variant=<rhel9.0>
    Copy to Clipboard Toggle word wrap
    • 将尖括号 &lt ;& gt; 中的值替换为 RHEL 9 镜像的正确值。

      这个命令启动一个实例并启动安装过程。

      注意

      如果实例没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <rhel9>
      Copy to Clipboard Toggle word wrap
  2. 配置实例:

    1. 在初始安装程序引导菜单中,选择 Install Red Hat Enterprise Linux 9
    2. 选择相应的 LanguageKeyboard 选项。
    3. 当系统提示输入安装所使用的设备类型时,请选择" 自动探测到的安装介质 "。
    4. 当系统提示安装目的地类型时,请选择 Local Standard Disks。对于其他存储选项,请选择 Automatically configure partitioning
    5. 选择 基本服务器 安装,它将安装 SSH 服务器。
    6. 对于网络和主机名,选择 eth0 作为网络,然后选择设备的主机名。默认主机名是 localhost.localdomain
    7. Root Password 字段中输入密码,并在 Confirm 字段中再次输入相同的密码。

      结果
      安装过程将完成,并显示 Complete! 屏幕。
  3. 安装完成后,重启实例并以 root 用户身份登录。
  4. 更新 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,使其只包含以下值:

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
    Copy to Clipboard Toggle word wrap
  5. 重启机器。
  6. 使用 Content Delivery Network 注册机器。

    # sudo subscription-manager register
    # sudo subscription-manager attach --pool=Valid-Pool-Number-123456
    # sudo subscription-manager repos --enable=rhel-9-server-rpms
    Copy to Clipboard Toggle word wrap
  7. 更新系统:

    # dnf -y update
    Copy to Clipboard Toggle word wrap
  8. 安装 cloud-init 软件包:

    # dnf install -y cloud-utils-growpart cloud-init
    Copy to Clipboard Toggle word wrap
  9. 编辑 /etc/cloud/cloud.cfg 配置文件并在 cloud_init_modules 下添加以下内容:

    - resolv-conf
    Copy to Clipboard Toggle word wrap

    resolv-conf 选项在第一次启动时自动配置 resolv.conf 文件。此文件包含与实例相关的信息,如 名称服务器 和其他选项。

  10. /etc/sysconfig/network 中添加以下行,以避免访问 EC2 元数据服务时出现问题:

    NOZEROCONF=yes
    Copy to Clipboard Toggle word wrap
  11. 要确保控制台信息会在仪表板的 Log 标签页和 nova console-log 输出中显示,请在 /etc/default/grub 文件中添加以下引导选项:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
    Copy to Clipboard Toggle word wrap
  12. 运行 grub2-mkconfig 命令:

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    Copy to Clipboard Toggle word wrap

    输出如下:

    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-229.9.2.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.9.2.el9.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-121.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-121.el9.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b
    Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img
    done
    Copy to Clipboard Toggle word wrap
  13. 取消注册实例,以便生成的镜像不包含此实例的订阅详情:

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
    Copy to Clipboard Toggle word wrap
  14. 关闭实例:

    # poweroff
    Copy to Clipboard Toggle word wrap
  15. 使用 virt-sysprep 命令重置和清理镜像,以便它可用于在没有问题的情况下创建实例:

    [root@host]# virt-sysprep -d <rhel9>
    Copy to Clipboard Toggle word wrap
  16. 通过将磁盘镜像中的任何可用空间转换为主机中的可用空间来减小镜像大小:

    [root@host]# virt-sparsify \
      --compress <rhel9.qcow2> <rhel9-cloud.qcow2>
    Copy to Clipboard Toggle word wrap

    这个命令会在运行命令的位置创建一个新的 < rhel9-cloud.qcow 2> 文件。

    注意

    您必须根据应用到实例的类别中的磁盘空间,手动调整实例的分区大小。

& lt;rhel9-cloud.qcow 2> 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像

2.1.4. 创建 Red Hat Enterprise Linux 8 镜像

使用 Red Hat Enterprise Linux (RHEL) 8 ISO 文件,以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。

注意

您必须在主机上使用 [root@host] ""运行所有命令。

流程

  1. 使用 virt-install 开始安装:

    [root@host]# virt-install \
      --virt-type kvm \
      --name <rhel86-cloud-image> \
      --ram <2048> \
      --vcpus <2> \
      --disk <rhel86.qcow2>,format=qcow2,size=<10> \
      --location <rhel-8.6-x86_64-boot.iso> \
      --network=bridge:virbr0 \
      --graphics vnc,listen=127.0.0.1 \
      --noautoconsole \
      --os-variant <rhel8.6>
    Copy to Clipboard Toggle word wrap
    • 将尖括号 &lt ;& gt; 中的值替换为 RHEL 8 镜像的正确值。

      这个命令启动一个实例并启动安装过程。

      注意

      如果实例没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <rhel86-cloud-image>
      Copy to Clipboard Toggle word wrap
  2. 配置实例:

    1. 在初始安装程序引导菜单中,选择" 安装或升级现有系统 "并按照安装提示进行操作。接受默认值。

      磁盘安装程序提供在安装前测试安装介质的选项。选择 OK 以运行 test 或 Skip 以继续测试。

    2. 选择相应的 LanguageKeyboard 选项。
    3. 当提示输入安装所使用的设备类型时,请选择 基本存储设备
    4. 为您的设备选择一个主机名。默认主机名是 localhost.localdomain
    5. 设置 时区和 root 密码。
    6. 根据磁盘上的空格,从需要安装类型的选项中选择 您需要的安装类型? 窗口。
    7. 选择 基本服务器 安装,它将安装 SSH 服务器。
    8. 安装过程完成并显示 Congratulations,则代表您的 Red Hat Enterprise Linux 安装已完成
  3. 重新启动实例,然后以 root 用户身份登录。
  4. 更新 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,使其只包含以下值:

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
    Copy to Clipboard Toggle word wrap
  5. 重启机器。
  6. 使用 Content Delivery Network 注册机器:

    # sudo subscription-manager register
    # sudo subscription-manager attach --pool=Valid-Pool-Number-123456
    # sudo subscription-manager repos --enable=rhel-8-server-rpms
    Copy to Clipboard Toggle word wrap
  7. 更新系统:

    # dnf -y update
    Copy to Clipboard Toggle word wrap
  8. 安装 cloud-init 软件包:

    # dnf install -y cloud-utils-growpart cloud-init
    Copy to Clipboard Toggle word wrap
  9. 编辑 /etc/cloud/cloud.cfg 配置文件,并在 cloud_init_modules 下添加以下内容。

    - resolv-conf
    Copy to Clipboard Toggle word wrap

    resolv-conf 选项在第一次启动时自动配置 resolv.conf 文件。此文件包含与实例相关的信息,如 名称服务器 和其他选项。

  10. 要防止网络问题,请创建 /etc/udev/rules.d/75-persistent-net-generator.rules

    # echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
    Copy to Clipboard Toggle word wrap

    这可防止 /etc/udev/rules.d/70-persistent-net.rules 文件被创建。如果创建了 /etc/udev/rules.d/70-persistent-net.rules 文件,当您从快照引导时,网络可能无法正常工作,因为网络接口是作为 eth1 而不是 eth0 创建的,并且没有分配 IP 地址。

  11. /etc/sysconfig/network 中添加以下行,以避免访问 EC2 元数据服务时出现问题:

    NOZEROCONF=yes
    Copy to Clipboard Toggle word wrap
  12. 要确保控制台信息会在仪表板的 Log 标签页和 nova console-log 输出中显示,请在 /etc/grub.conf 文件中添加以下引导选项:

    console=tty0 console=ttyS0,115200n8
    Copy to Clipboard Toggle word wrap
  13. 取消注册虚拟机,以便生成的镜像不包含此实例的相同订阅详情:

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
    Copy to Clipboard Toggle word wrap
  14. 关闭实例:

    # poweroff
    Copy to Clipboard Toggle word wrap
  15. 使用 virt-sysprep 命令重置和清理镜像,以便它可用于在没有问题的情况下创建实例:

    [root@host]# virt-sysprep -d <rhel86-cloud-image>
    Copy to Clipboard Toggle word wrap
  16. 使用 virt-sparsify 命令减少镜像大小。这个命令将磁盘镜像中的任何可用空间重新转换为主机中的可用空间:

    [root@host]# virt-sparsify \
      --compress <rhel86.qcow2> <rhel86-cloud.qcow2>
    Copy to Clipboard Toggle word wrap

    这个命令会在运行命令的位置创建一个新的 < rhel86-cloud.qcow 2> 文件。

    注意

    您必须根据应用到实例的类别中的磁盘空间,手动调整实例的分区大小。

& lt;rhel86-cloud.qcow 2> 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像

2.1.5. 创建 Windows 镜像

使用 Windows ISO 文件,以 QCOW2 格式手动创建兼容 Red Hat OpenStack Platform (RHOSP)兼容镜像。

注意

您必须在主机上使用 [root@host] ""运行所有命令。

流程

  1. 使用 virt-install 开始安装:

    [root@host]# virt-install \
        --name=<name> \
        --disk size=<size> \
        --cdrom=<path> \
        --os-type=windows \
        --network=bridge:virbr0 \
        --graphics spice \
        --ram=<ram>
    Copy to Clipboard Toggle word wrap
    • 替换 virt-install 参数的值:

      • <name > rhacm-5-4 Windows 实例具有的名称。
      • <size& gt; HEKETI-wagondisk 大小(以 GB 为单位)。
      • <path > swig- swig the path to the Windows install ISO file.
      • <RAM > HEKETI-5-4the 请求 RAM 量(以 MB 为单位)。

        注意

        the -os-type=windows 参数确保为 Windows 客户机正确配置了时钟,并启用其 Hyper-V enlightenment 功能。在将镜像上传到镜像服务(glance)之前,还必须在镜像元数据中设置 os_type=windows

  2. virt-install 命令将客户机镜像保存为 /var/lib/libvirt/images/<name& gt; .qcow2。如果要将客户机镜像保留在其他位置,请更改 the- disk 选项的参数

    --disk path=<filename>,size=<size>
    Copy to Clipboard Toggle word wrap
    • <filename > 替换为存储实例镜像的文件名称,以及可选的路径。例如,path=win8.qcow2,size=8 在当前工作目录中创建一个名为 win8.qcow2 的 8 GB 文件。

      提示

      如果客户机没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <name>
      Copy to Clipboard Toggle word wrap

      有关如何安装 Windows 的更多信息,请参阅相关的 Microsoft 文档。

  3. 要允许新安装的 Windows 系统使用虚拟化硬件,您可能需要安装 VirtIO 驱动程序。为此,请将镜像作为 CD-ROM 驱动器附加到 Windows 实例来安装镜像。要安装 virtio-win 软件包,您必须将 VirtIO ISO 镜像添加到实例中,并安装 VirtIO 驱动程序。如需更多信息,请参阅 配置和管理虚拟化 中的 为 Windows 虚拟机安装 KVM 半虚拟驱动程序
  4. 要完成配置,请在 Windows 系统上下载并执行 Cloudbase-Init。在安装 Cloudbase-Init 结束时,选择 Run SysprepShutdown 复选框。Sysprep 工具通过生成 OS ID (供某些 Microsoft 服务使用)使客户机是唯一的。

    重要

    红帽不提供 Cloudbase-Init 的技术支持。如果您遇到问题,请参阅 Cloudbase Solutions 联系

当 Windows 系统关闭时,&lt ;name>.qcow2 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像

2.1.5.1. 元数据属性

Compute 服务(nova)已弃用对使用 libosinfo 数据设置默认设备模型的支持。反之,使用以下镜像元数据属性为实例配置最佳虚拟硬件:

  • os_distro
  • os_version
  • hw_cdrom_bus
  • hw_disk_bus
  • hw_scsi_model
  • hw_vif_model
  • hw_video_model
  • hypervisor_type

有关这些元数据属性的更多信息,请参阅 镜像配置参数

2.1.6. 为 UEFI 安全引导创建镜像

当 overcloud 包含 UEFI 安全引导 Compute 节点时,您可以创建一个安全引导实例镜像,供云用户用来启动安全引导实例。

流程

  1. 为 UEFI 安全引导创建新镜像:

    $ openstack image create --file <base_image_file> uefi_secure_boot_image
    Copy to Clipboard Toggle word wrap
    • <base_image_file > 替换为支持 UEFI 和 GUID 分区表(GPT)标准的镜像文件,并包括 EFI 系统分区。
  2. 如果默认机器类型不是 q35,则机器类型设置为 q35

    $ openstack image set --property hw_machine_type=q35 uefi_secure_boot_image
    Copy to Clipboard Toggle word wrap
  3. 指定实例必须调度到 UEFI 安全引导主机上:

    $ openstack image set \
     --property hw_firmware_type=uefi \
     --property os_secure_boot=required \
     uefi_secure_boot_image
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat