6.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
$ sudo modprobe nbd
Copy 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 -l
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい Red Hat Enterprise Linux QCOW2 イメージには、パーティションが 1 つだけ含まれます。通常、そのパーティションは NBD の
/dev/nbd0p1
という名前です。イメージのマウントポイントを作成します。
mkdir /tmp/mountpoint
mkdir /tmp/mountpoint
Copy 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/dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートディレクトリーをマウントポイントに変更します。
sudo chroot /tmp/mountpoint /bin/bash
sudo chroot /tmp/mountpoint /bin/bash
Copy 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 directory
Copy 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.bak
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat コンテンツ配信ネットワークの DNS 要求を解決するために、一時的な
resolv.conf
ファイルを作成します。以下の例では、ネームサーバーに8.8.8.8
を使用しています。echo "nameserver 8.8.8.8" > /etc/resolv.conf
# echo "nameserver 8.8.8.8" > /etc/resolv.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントしたイメージを Red Hat コンテンツ配信ネットワークに登録します。
subscription-manager register
# subscription-manager register
Copy 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 <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-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントしたイメージの登録を解除します。
subscription-manager unregister
# subscription-manager unregister
Copy 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.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされたイメージのカーネルバージョンを確認します。
rpm -qa kernel
# rpm -qa kernel
Copy 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 イメージには、1 つのカーネルバージョンしかインストールされません。複数のカーネルバージョンがインストールされている場合は、最新のものを使用してください。
initramfs イメージに
network
およびiscsi
dracut モジュールを追加します。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 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
# dracut --force --add "network iscsi" /boot/initramfs-3.10.0-1062.el7.x86_64.img 3.10.0-1062.el7.x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントされたイメージからホストオペレーティングシステムに戻ります。
exit
# exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
イメージをアンマウントします。
一時的なマウントポイントから
dev
ディレクトリーをアンマウントします。sudo umount /tmp/mountpoint/dev
$ sudo umount /tmp/mountpoint/dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントポイントからイメージをアンマウントします。
sudo umount /tmp/mountpoint
$ sudo umount /tmp/mountpoint
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QCOW2 イメージを
/dev/nbd0/
から切断します。sudo qemu-nbd --disconnect /dev/nbd0
$ sudo qemu-nbd --disconnect /dev/nbd0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
イメージ上で
grub
メニュー設定を再ビルドします。libguestfs-tools
パッケージをインストールします。sudo yum -y install libguestfs-tools
$ sudo yum -y install libguestfs-tools
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要アンダークラウドに
libguestfs-tools
パッケージをインストールする場合は、アンダークラウドのtripleo_iscsid
サービスとのポートの競合を避けるためにiscsid.socket
を無効にします。sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QEMU を直接使用するように
libguestfs
バックエンドを設定します。export LIBGUESTFS_BACKEND=direct
$ export LIBGUESTFS_BACKEND=direct
Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージ上の grub 設定を更新します。
guestfish -a /tmp/images/{{ dib_image }} -m /dev/sda3 sh "mount /dev/sda2 /boot/efi && rm /boot/grub2/grubenv && /sbin/grub2-mkconfig -o /boot/grub2/grub.cfg && cp /boot/grub2/grub.cfg /boot/efi/EFI/redhat/grub.cfg && grubby --update-kernel=ALL --args=\"rd.iscsi.firmware=1\" && cp /boot/grub2/grubenv /boot/efi/EFI/redhat/grubenv && echo Success"
$ guestfish -a /tmp/images/{{ dib_image }} -m /dev/sda3 sh "mount /dev/sda2 /boot/efi && rm /boot/grub2/grubenv && /sbin/grub2-mkconfig -o /boot/grub2/grub.cfg && cp /boot/grub2/grub.cfg /boot/efi/EFI/redhat/grub.cfg && grubby --update-kernel=ALL --args=\"rd.iscsi.firmware=1\" && cp /boot/grub2/grubenv /boot/efi/EFI/redhat/grubenv && echo Success"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow