Questo contenuto non è disponibile nella lingua selezionata.
Chapter 7. Booting from cinder volumes
This section contains information on creating and connecting volumes created in OpenStack Block Storage (cinder) to bare metal instances created with OpenStack Bare Metal (ironic).
7.1. Cinder volume boot for bare metal nodes Copia collegamentoCollegamento copiato negli appunti!
You can boot bare metal nodes from a block storage device that is stored in OpenStack Block Storage (cinder). OpenStack Bare Metal (ironic) connects bare metal nodes to volumes through an iSCSI interface.
Ironic enables this feature during the overcloud deployment. However, consider the following conditions prior to deployment:
-
The overcloud requires the cinder iSCSI backend to be enabled. Set the
CinderEnableIscsiBackendheat parameter totrueduring overcloud deployment. - You cannot use the cinder volume boot feature with a Red Hat Ceph Storage backend.
-
You must set the
rd.iscsi.firmware=1kernel parameter on the boot disk.
7.2. Configuring nodes for cinder volume boot Copia collegamentoCollegamento copiato negli appunti!
You must configure certain options for each bare metal node to successfully boot from a cinder volume.
Procedure
-
Log in to the undercloud as the
stackuser. Source the overcloud credentials:
$ source ~/overcloudrcSet the
iscsi_bootcapability totrueand thestorage-interfacetocinderfor the selected node:$ openstack baremetal node set --property capabilities=iscsi_boot:true --storage-interface cinder <NODEID>Replace `<NODEID> with the ID of the chosen node.
Create an iSCSI connector for the node:
$ openstack baremetal volume connector create --node <NODEID> --type iqn --connector-id iqn.2010-10.org.openstack.node<NUM>The connector ID for each node must be unique. In the example, the connector is
iqn.2010-10.org.openstack.node<NUM>where<NUM>is an incremented number for each node.
7.3. Configuring iSCSI kernel parameters on the boot disk Copia collegamentoCollegamento copiato negli appunti!
You must enable the iSCSI booting in the kernel on the image. To accomplish this, mount the QCOW2 image and enable iSCSI components on the image.
Prerequisites
Download a Red Hat Enterprise Linux QCOW2 image and copy it to the
/home/stack/directory on the undercloud. You can download Red Hat Enterprise Linux KVM images in QCOW2 format from the following pages:
Procedure
-
Log in to the undercloud as the
stackuser. Mount the QCOW2 image and access it as the
rootuser:Load the
nbdkernel module:$ sudo modprobe nbdConnect the QCOW image as
/dev/nbd0:$ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>Check the partitions on the NBD:
$ sudo fdisk /dev/nbd0 -lNew Red Hat Enterprise Linux QCOW2 images contain only one partition, which is usually named
/dev/nbd0p1on the NBD.Create a mount point for the image:
mkdir /tmp/mountpointMount the image:
sudo mount /dev/nbd0p1 /tmp/mountpoint/Mount your
devdirectory so that the image has access to device information on the host:sudo mount -o bind /dev /tmp/mountpoint/devChange the root directory to the mount point:
sudo chroot /tmp/mountpoint /bin/bash
Configure iSCSI on the image:
NoteSome commands in this step might report the following error:
lscpu: cannot open /proc/cpuinfo: No such file or directoryThis error is not critical and you can ignore the error.
Move the
resolv.conffile to a temporary location:# mv /etc/resolv.conf /etc/resolv.conf.bakCreate a temporary
resolv.conffile to resolve DNS requests for the Red Hat Content Delivery Network. This example uses8.8.8.8for the nameserver:# echo "nameserver 8.8.8.8" > /etc/resolv.confRegister the mounted image to the Red Hat Content Delivery Network:
# subscription-manager registerEnter your username and password when the command prompts you.
Attach a subscription that contains Red Hat Enterprise Linux:
# subscription-manager list --all --available # subscription-manager attach --pool <POOLID>Substitute
<POOLID>with the pool ID of the subscription.Disable the default repositories:
# subscription-manager repos --disable "*"Enable the Red Hat Enterprise Linux repository:
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-rpms"
Install the
iscsi-initiator-utilspackage:# yum install -y iscsi-initiator-utilsUnregister the mounted image:
# subscription-manager unregisterRestore the original
resolv.conffile:# mv /etc/resolv.conf.bak /etc/resolv.confCheck the kernel version on the mounted image:
# rpm -qa kernelFor example, if the output is
kernel-3.10.0-1062.el7.x86_64, the kernel version is3.10.0-1062.el7.x86_64. Note this kernel version for the next step.NoteNew Red Hat Enterprise Linux QCOW2 image have only one kernel version installed. If more than one kernel version is installed, use the latest one.
Add the
networkandiscsidracut modules to the initramfs image:# dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION>Replace
<KERNELVERSION>with the version you obtained fromrpm -qa kernel. The following example uses3.10.0-1062.el7.x86_64as the kernel version:# dracut --force --add "network iscsi" /boot/initramfs-3.10.0-1062.el7.x86_64.img 3.10.0-1062.el7.x86_64Edit the
/etc/default/grubconfiguration file and addrd.iscsi.firmware=1to theGRUB_CMDLINE_LINUXparameter:# vi /etc/default/grubThe following example shows the
GRUB_CMDLINE_LINUXparameter with the addedrd.iscsi.firmware=1kernel argument:GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200n8 no_timer_check net.ifnames=0 rd.iscsi.firmware=1"Save these changes.
NoteDo not rebuild the
grubmenu configuration at this step. A later step in this procedure rebuilds thegrubmenu as a temporary virtual machine.Exit from the mounted image back to your host operating system:
# exit
Unmount the image:
Unmount the
devdirectory from the temporary mount point:$ sudo umount /tmp/mountpoint/devUnmount the image from the mount point:
$ sudo umount /tmp/mountpointDisconnect the QCOW2 image from
/dev/nbd0/:$ sudo qemu-nbd --disconnect /dev/nbd0
Rebuild the
grubmenu configuration on the image:Install the
libguestfs-toolspackage:$ sudo yum -y install libguestfs-toolsImportantIf you install the
libguestfs-toolspackage on the undercloud, disableiscsid.socketto avoid port conflicts with thetripleo_iscsidservice on the undercloud:$ sudo systemctl disable --now iscsid.socketSet the
libguestfsbackend to use QEMU directly:$ export LIBGUESTFS_BACKEND=directUpdate the grub configuration on the image:
$ guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"
7.4. Creating and using a boot volume in cinder Copia collegamentoCollegamento copiato negli appunti!
You must upload the iSCSI-enabled image to OpenStack Image Storage (glance) and create the boot volume in OpenStack Block Storage (cinder).
Procedure
-
Log in to the undercloud as the
stackuser. Upload the iSCSI-enabled image to glance:
$ openstack image create --disk-format qcow2 --container-format bare --file rhel-server-7.7-x86_64-kvm.qcow2 rhel-server-7.7-iscsiCreate a volume from the image:
$ openstack volume create --size 10 --image rhel-server-7.7-iscsi --bootable rhel-test-volumeCreate a bare metal instance that uses the boot volume in cinder:
$ openstack server create --flavor baremetal --volume rhel-test-volume --key default rhel-test