7.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将 QCOW 镜像连接为
/dev/nbd0:$ 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 镜像仅安装了一个内核版本。如果安装了多个内核版本,请使用最新的内核版本。
将
network和iscsidracut 模块添加到 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编辑
/etc/default/grub配置文件并将rd.iscsi.firmware=1添加到GRUB_CMDLINE_LINUX参数:# vi /etc/default/grub以下示例显示了
GRUB_CMDLINE_LINUX参数以及添加的rd.iscsi.firmware=1内核参数:GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200n8 no_timer_check net.ifnames=0 rd.iscsi.firmware=1"保存更改。
注意不要在此步骤中重建
grub菜单配置。此流程中的后续步骤会重建grub菜单作为临时虚拟机。从挂载的镜像退出回您的主机操作系统:
# 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 <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"