7.3. ブートディスクでの iSCSI カーネルパラメーターの設定
イメージ上のカーネルで iSCSI ブートを有効にする必要があります。そのためには、QCOW2 イメージをマウントし、イメージ上で iSCSI コンポーネントを有効にします。
前提条件
Red Hat Enterprise Linux QCOW2 イメージをダウンロードして、アンダークラウドの
/home/stack/ディレクトリーにコピーします。以下のページから、QCOW2 形式で Red Hat Enterprise Linux KVM イメージをダウンロードすることができます。
手順
-
アンダークラウドに
stackユーザーとしてログインします。 QCOW2 イメージをマウントし、
rootユーザーとしてアクセスします。nbdカーネルモジュールを読み込みます。$ sudo modprobe nbdQCOW イメージを
/dev/nbd0として接続します。$ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>NBD 上のパーティションを確認します。
$ sudo fdisk /dev/nbd0 -l新しい Red Hat Enterprise Linux QCOW2 イメージには、パーティションが 1 つだけ含まれます。通常、そのパーティションは 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.bakRed Hat コンテンツ配信ネットワークの DNS 要求を解決するために、一時的な
resolv.confファイルを作成します。以下の例では、ネームサーバーに8.8.8.8を使用しています。# echo "nameserver 8.8.8.8" > /etc/resolv.confマウントしたイメージを Red Hat コンテンツ配信ネットワークに登録します。
# 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-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 イメージには、1 つのカーネルバージョンしかインストールされません。複数のカーネルバージョンがインストールされている場合は、最新のものを使用してください。
initramfs イメージに
networkおよびiscsidracut モジュールを追加します。# dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION><KERNELVERSION>をrpm -qa kernelから取得したバージョンに置き換えます。以下の例では、カーネルバージョンに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設定ファイルを編集し、GRUB_CMDLINE_LINUXパラメーターにrd.iscsi.firmware=1を追加します。# vi /etc/default/grubGRUB_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/mountpointQCOW2 イメージを
/dev/nbd0/から切断します。$ sudo qemu-nbd --disconnect /dev/nbd0
イメージ上で
grubメニュー設定を再ビルドします。libguestfs-toolsパッケージをインストールします。$ sudo yum -y install libguestfs-tools重要アンダークラウドに
libguestfs-toolsパッケージをインストールする場合は、アンダークラウドのtripleo_iscsidサービスとのポートの競合を避けるためにiscsid.socketを無効にします。$ sudo systemctl disable --now iscsid.socketQEMU を直接使用するように
libguestfsバックエンドを設定します。$ export LIBGUESTFS_BACKEND=directイメージ上の grub 設定を更新します。
$ guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"