6.3. 在引导磁盘中配置 iSCSI 内核参数
您必须配置实例镜像,以便在内核中启用 iSCSI 引导。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc- 从 Red Hat Enterprise Linux 产品软件下载页,以 QCOW2 格式下载 Red Hat Enterprise Linux KVM 镜像。
-
将镜像复制到 undercloud 上的
/home/stack/目录中。 挂载 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>将
<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 镜像中添加
network和iscsidracut 模块:# 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 配置,并在引导磁盘上设置
rd.iscsi.firmware=1内核参数:$ 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"
将启用了 iSCSI 的镜像上传到镜像服务(glance):
$ openstack image create --disk-format qcow2 --container-format bare \ --file <image> <image_name>-
将
<image> 替换为启用了 iSCSI 的镜像的名称,如rhel-server-7.7-x86_64-kvm.qcow2。 -
将
<image_ref> 替换为用于引用镜像的名称,如rhel-server-7.7-iscsi。
-
将