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
$ sudo modprobe nbdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 QCOW 镜像连接为
/dev/nbd0:sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>
$ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 NBD 上的分区:
sudo fdisk /dev/nbd0 -l
$ sudo fdisk /dev/nbd0 -lCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新的 Red Hat Enterprise Linux QCOW2 镜像只包含一个分区,通常在 NBD 上命名
/dev/nbd0p1。为镜像创建挂载点:
mkdir /tmp/mountpoint
mkdir /tmp/mountpointCopy to Clipboard Copied! Toggle word wrap Toggle overflow 挂载镜像:
sudo mount /dev/nbd0p1 /tmp/mountpoint/
sudo mount /dev/nbd0p1 /tmp/mountpoint/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 挂载您的
dev目录,以便镜像能够访问主机上的设备信息:sudo mount -o bind /dev /tmp/mountpoint/dev
sudo mount -o bind /dev /tmp/mountpoint/devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将根目录改为挂载点:
sudo chroot /tmp/mountpoint /bin/bash
sudo chroot /tmp/mountpoint /bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在镜像中配置 iSCSI:
注意此步骤中的一些命令可能报告以下错误:
lscpu: cannot open /proc/cpuinfo: No such file or directory
lscpu: cannot open /proc/cpuinfo: No such file or directoryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此错误不重要,您可以忽略这个错误。
将
resolv.conf文件移动到临时位置:mv /etc/resolv.conf /etc/resolv.conf.bak
# mv /etc/resolv.conf /etc/resolv.conf.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建临时
resolv.conf文件,以解决 Red Hat Content Delivery Network 的 DNS 请求。这个示例为名称服务器使用8.8.8.8:echo "nameserver 8.8.8.8" > /etc/resolv.conf
# echo "nameserver 8.8.8.8" > /etc/resolv.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将挂载的镜像注册到 Red Hat Content Delivery Network 中:
subscription-manager register
# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当命令提示您时,输入您的用户名和密码。
附加包含 Red Hat Enterprise Linux 的订阅:
subscription-manager list --all --available subscription-manager attach --pool <POOLID>
# subscription-manager list --all --available # subscription-manager attach --pool <POOLID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 &
lt;POOLID> 替换为订阅的池 ID。禁用默认软件仓库:
subscription-manager repos --disable "*"
# subscription-manager repos --disable "*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Enterprise Linux 软件仓库:
Red Hat Enterprise Linux 7:
subscription-manager repos --enable "rhel-7-server-rpms"
# subscription-manager repos --enable "rhel-7-server-rpms"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
subscription-manager repos --enable "rhel-8-for-x86_64-baseos-eus-rpms"
# subscription-manager repos --enable "rhel-8-for-x86_64-baseos-eus-rpms"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
安装
iscsi-initiator-utils软件包:yum install -y iscsi-initiator-utils
# yum install -y iscsi-initiator-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 取消注册挂载的镜像:
subscription-manager unregister
# subscription-manager unregisterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 恢复原始
resolv.conf文件:mv /etc/resolv.conf.bak /etc/resolv.conf
# mv /etc/resolv.conf.bak /etc/resolv.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查挂载的镜像中的内核版本:
rpm -qa kernel
# rpm -qa kernelCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,如果输出为
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>
# dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<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
# dracut --force --add "network iscsi" /boot/initramfs-3.10.0-1062.el7.x86_64.img 3.10.0-1062.el7.x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/default/grub配置文件并将rd.iscsi.firmware=1添加到GRUB_CMDLINE_LINUX参数:vi /etc/default/grub
# vi /etc/default/grubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例显示了
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_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200n8 no_timer_check net.ifnames=0 rd.iscsi.firmware=1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改。
注意不要在此步骤中重建
grub菜单配置。此流程中的后续步骤会重建grub菜单作为临时虚拟机。从挂载的镜像退出回您的主机操作系统:
exit
# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
卸载镜像:
从临时挂载点卸载
dev目录:sudo umount /tmp/mountpoint/dev
$ sudo umount /tmp/mountpoint/devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从挂载点卸载镜像:
sudo umount /tmp/mountpoint
$ sudo umount /tmp/mountpointCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从
/dev/nbd0/断开 QCOW2 镜像:sudo qemu-nbd --disconnect /dev/nbd0
$ sudo qemu-nbd --disconnect /dev/nbd0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在镜像上重建
grub菜单配置:安装
libguestfs-tools软件包:sudo yum -y install libguestfs-tools
$ sudo yum -y install libguestfs-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果在 undercloud 上安装
libguestfs-tools软件包,请禁用iscsid.socket以避免与 undercloud 上的tripleo_iscsid服务冲突:sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
libguestfs后端设置为直接使用 QEMU:export LIBGUESTFS_BACKEND=direct
$ export LIBGUESTFS_BACKEND=directCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新镜像的 grub 配置:
guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"
$ guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"Copy to Clipboard Copied! Toggle word wrap Toggle overflow