6.3. 在引导磁盘中配置 iSCSI 内核参数
您必须在镜像中在内核中启用 iSCSI 引导。要实现这一目的,请挂载 QCOW2 镜像并在镜像中启用 iSCSI 组件。
先决条件
下载 Red Hat Enterprise Linux QCOW2 镜像,并将其复制到 undercloud 上的
/home/stack/
目录中。您可以从以下页面以 QCOW2 格式下载 Red Hat Enterprise Linux KVM 镜像:
流程
-
以
stack
用户的身份登录 undercloud。 挂载 QCOW2 镜像,并以
root
用户身份访问它:加载
nbd
内核模块:$ sudo modprobe nbd
以
/dev/nbd0
身份连接 QCOW 镜像:$ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>
检查 NBD 中的分区:
$ sudo fdisk /dev/nbd0 -l
新的 Red Hat Enterprise Linux QCOW2 镜像只包含一个分区,它通常命名为 NBD 上的
/dev/nbd0p1
。为镜像创建一个挂载点:
mkdir /tmp/mountpoint
挂载镜像:
sudo mount /dev/nbd0p1 /tmp/mountpoint/
挂载您的
dev
目录,以便镜像能够访问主机上的设备信息:sudo mount -o bind /dev /tmp/mountpoint/dev
将根目录改为挂载点:
sudo chroot /tmp/mountpoint /bin/bash
在镜像中配置 iSCSI:
注意此步骤中的一些命令可能会报告以下错误:
lscpu: cannot open /proc/cpuinfo: No such file or directory
此错误并不重要,您可以忽略错误。
将
resolv.conf
文件移动到临时位置:# mv /etc/resolv.conf /etc/resolv.conf.bak
创建一个临时
resolv.conf
文件,以解决 Red Hat Content Delivery Network 的 DNS 请求。这个示例在名称服务器中使用8.8.8.8
:# echo "nameserver 8.8.8.8" > /etc/resolv.conf
将挂载的镜像注册到 Red Hat Content Delivery Network 中:
# subscription-manager register
当命令提示您输入时,输入您的用户名和密码。
附加包含 Red Hat Enterprise Linux 的订阅:
# subscription-manager list --all --available # subscription-manager attach --pool <POOLID>
将 &
lt;POOLID
> 替换为订阅的池 ID。禁用默认软件仓库:
# subscription-manager repos --disable "*"
启用 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"
安装
iscsi-initiator-utils
软件包:# yum install -y iscsi-initiator-utils
取消注册挂载的镜像:
# subscription-manager unregister
恢复原始
resolv.conf
文件:# mv /etc/resolv.conf.bak /etc/resolv.conf
检查挂载镜像的内核版本:
# rpm -qa kernel
例如,如果输出为
kernel-3.10.0-1062.el7.x86_64
,则内核版本为3.10.0-1062.el7.x86_64
。请记录此内核版本来执行后续步骤。注意新的 Red Hat Enterprise Linux QCOW2 镜像只安装一个内核版本。如果安装了多个内核版本,请使用最新的版本。
在 initramfs 镜像中添加
网络和
iscsi
dracut 模块:# 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
从挂载的镜像退出回主机操作系统:
# exit
卸载镜像:
从临时挂载点卸载
dev
目录:$ sudo umount /tmp/mountpoint/dev
从挂载点卸载镜像:
$ sudo umount /tmp/mountpoint
从
/dev/nbd0/
断开 QCOW2 镜像:$ sudo qemu-nbd --disconnect /dev/nbd0
在镜像中重建
grub
菜单配置:安装
libguestfs-tools
软件包:$ sudo yum -y install libguestfs-tools
重要如果在 undercloud 上安装
libguestfs-tools
软件包,请禁用iscsid.socket
,以避免与 undercloud 上的tripleo_iscsid
服务冲突:$ sudo systemctl disable --now iscsid.socket
将
libguestfs
后端设置为直接使用 QEMU:$ export LIBGUESTFS_BACKEND=direct
更新镜像的 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"