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 nbd
QCOW イメージを
/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.bak
Red 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
およびiscsi
dracut モジュールを追加します。# 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/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
QCOW2 イメージを
/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.socket
QEMU を直接使用するように
libguestfs
バックエンドを設定します。$ export LIBGUESTFS_BACKEND=direct
イメージ上の grub 設定を更新します。
$ guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"