6.3. 在引导磁盘中配置 iSCSI 内核参数


您必须在镜像上的内核中启用 iSCSI 引导。要实现这一目的,请在镜像上挂载 QCOW2 镜像并启用 iSCSI 组件。

前提条件

  1. 下载 Red Hat Enterprise Linux QCOW2 镜像,并将其复制到 undercloud 的 /home/stack/ 目录中。您可以使用以下页面下载 QCOW2 格式的 Red Hat Enterprise Linux KVM 镜像:

流程

  1. stack 用户的身份登录 undercloud。
  2. 挂载 QCOW2 镜像,并以 root 用户身份进行访问:

    1. 加载 nbd 内核模块:

      $ sudo modprobe nbd
    2. 将 QCOW 镜像连接为 /dev/nbd0

      $ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>
    3. 检查 NBD 上的分区:

      $ sudo fdisk /dev/nbd0 -l

      新的 Red Hat Enterprise Linux QCOW2 镜像只包含一个分区,通常在 NBD 上命名 /dev/nbd0p1

    4. 为镜像创建挂载点:

      mkdir /tmp/mountpoint
    5. 挂载镜像:

      sudo mount /dev/nbd0p1 /tmp/mountpoint/
    6. 挂载您的 dev 目录,以便镜像能够访问主机上的设备信息:

      sudo mount -o bind /dev /tmp/mountpoint/dev
    7. 将根目录改为挂载点:

      sudo chroot /tmp/mountpoint /bin/bash
  3. 在镜像中配置 iSCSI:

    注意

    此步骤中的一些命令可能报告以下错误:

    lscpu: cannot open /proc/cpuinfo: No such file or directory

    此错误不重要,您可以忽略这个错误。

    1. resolv.conf 文件移动到临时位置:

      # mv /etc/resolv.conf /etc/resolv.conf.bak
    2. 创建临时 resolv.conf 文件,以解决 Red Hat Content Delivery Network 的 DNS 请求。这个示例为名称服务器使用 8.8.8.8

      # echo "nameserver 8.8.8.8" > /etc/resolv.conf
    3. 将挂载的镜像注册到 Red Hat Content Delivery Network 中:

      # subscription-manager register

      当命令提示您时,输入您的用户名和密码。

    4. 附加包含 Red Hat Enterprise Linux 的订阅:

      # subscription-manager list --all --available
      # subscription-manager attach --pool <POOLID>

      将 & lt;POOLID > 替换为订阅的池 ID。

    5. 禁用默认软件仓库:

      # subscription-manager repos --disable "*"
    6. 启用 Red Hat Enterprise Linux 软件仓库:

      • Red Hat Enterprise Linux 7:

        # subscription-manager repos --enable "rhel-7-server-rpms"
      • Red Hat Enterprise Linux 8:

        # subscription-manager repos --enable "rhel-8-for-x86_64-baseos-eus-rpms"
    7. 安装 iscsi-initiator-utils 软件包:

      # yum install -y iscsi-initiator-utils
    8. 取消注册挂载的镜像:

      # subscription-manager unregister
    9. 恢复原始 resolv.conf 文件:

      # mv /etc/resolv.conf.bak /etc/resolv.conf
    10. 检查挂载的镜像中的内核版本:

      # rpm -qa kernel

      例如,如果输出为 kernel-3.10.0-1062.el7.x86_64,则内核版本是 3.10.0-1062.el7.x86_64。请注意此内核版本用于下一步。

      注意

      新的 Red Hat Enterprise Linux QCOW2 镜像仅安装了一个内核版本。如果安装了多个内核版本,请使用最新的内核版本。

    11. networkiscsi dracut 模块添加到 initramfs 镜像:

      # dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION>

      <KERNELVERSION > 替换为从 rpm -qa 内核获取的版本号。以下示例使用 3.10.0-1062.el7.x86_64 作为内核版本:

      # dracut --force --add "network iscsi" /boot/initramfs-3.10.0-1062.el7.x86_64.img 3.10.0-1062.el7.x86_64
    12. 从挂载的镜像退出回您的主机操作系统:

      # exit
  4. 卸载镜像:

    1. 从临时挂载点卸载 dev 目录:

      $ sudo umount /tmp/mountpoint/dev
    2. 从挂载点卸载镜像:

      $ sudo umount /tmp/mountpoint
    3. /dev/nbd0/ 断开 QCOW2 镜像:

      $ sudo qemu-nbd --disconnect /dev/nbd0
  5. 在镜像上重建 grub 菜单配置:

    1. 安装 libguestfs-tools 软件包:

      $ sudo yum -y install libguestfs-tools
      重要

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

      $ sudo systemctl disable --now iscsid.socket
    2. libguestfs 后端设置为直接使用 QEMU:

      $ export LIBGUESTFS_BACKEND=direct
    3. 更新镜像的 grub 配置:

      $ guestfish -a /tmp/images/{{ dib_image }} -m /dev/sda3 sh "mount /dev/sda2 /boot/efi && rm /boot/grub2/grubenv && /sbin/grub2-mkconfig -o /boot/grub2/grub.cfg && cp /boot/grub2/grub.cfg /boot/efi/EFI/redhat/grub.cfg && grubby --update-kernel=ALL --args=\"rd.iscsi.firmware=1\" && cp /boot/grub2/grubenv /boot/efi/EFI/redhat/grubenv && echo Success"
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.