7.3. 부팅 디스크에서 iSCSI 커널 매개변수 구성

이미지의 커널에서 iSCSI 부팅을 활성화해야 합니다. 이를 수행하려면 QCOW2 이미지를 마운트하고 이미지에서 iSCSI 구성 요소를 활성화합니다.

사전 요구 사항

  1. Red Hat Enterprise Linux QCOW2 이미지를 다운로드하여 언더클라우드의 /home/stack/ 디렉터리에 복사합니다. 다음 페이지에서 QCOW2 형식으로 Red Hat Enterprise Linux KVM 이미지를 다운로드할 수 있습니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. QCOW2 이미지를 마운트하고 root 사용자로 액세스합니다.

    1. nbd 커널 모듈을 로드합니다.

      $ sudo modprobe nbd
    2. QCOW 이미지를 /dev/nbd0 으로 연결합니다.

      $ sudo qemu-nbd --connect=/dev/nbd0 <IMAGE>
    3. NBD의 파티션을 확인합니다.

      $ sudo fdisk /dev/nbd0 -l

      새로운 Red Hat Enterprise Linux QCOW2 이미지에는 하나의 파티션만 포함되어 있으며, 일반적으로 NBD에서 이름이 /dev/nbd0p1 입니다.

    4. 이미지의 마운트 지점을 생성합니다.

      mkdir /tmp/mountpoint
    5. 이미지를 마운트합니다.

      sudo mount /dev/nbd0p1 /tmp/mountpoint/
    6. 이미지가 호스트의 장치 정보에 액세스할 수 있도록 dev 디렉터리를 마운트합니다.

      sudo mount -o bind /dev /tmp/mountpoint/dev
    7. 루트 디렉터리를 마운트 지점으로 변경합니다.

      sudo chroot /tmp/mountpoint /bin/bash
  3. 이미지에서 iSCSI를 구성합니다.

    참고

    이 단계의 일부 명령은 다음 오류를 보고할 수 있습니다.

    lscpu: cannot open /proc/cpuinfo: No such file or directory

    이 오류는 중요하지 않으며 오류를 무시할 수 있습니다.

    1. resolv.conf 파일을 임시 위치로 이동합니다.

      # mv /etc/resolv.conf /etc/resolv.conf.bak
    2. 임시 resolv.conf 파일을 생성하여 Red Hat Content Delivery Network에 대한 DNS 요청을 해결합니다. 이 예제에서는 이름 서버에 8.8.8.8 을 사용합니다.

      # echo "nameserver 8.8.8.8" > /etc/resolv.conf
    3. 마운트된 이미지를 Red Hat Content Delivery Network에 등록합니다.

      # subscription-manager register

      명령에서 메시지를 표시하면 사용자 이름과 암호를 입력합니다.

    4. Red Hat Enterprise Linux가 포함된 서브스크립션을 연결합니다.

      # subscription-manager list --all --available
      # subscription-manager attach --pool <POOLID>

      <POOLID> 를 서브스크립션의 풀 ID로 바꿉니다.

    5. 기본 리포지토리를 비활성화합니다.

      # subscription-manager repos --disable "*"
    6. 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-eus-rpms"
    7. iscsi-initiator-utils 패키지를 설치합니다.

      # yum install -y iscsi-initiator-utils
    8. 마운트된 이미지를 등록 취소합니다.

      # subscription-manager unregister
    9. original resolv.conf 파일을 복원합니다.

      # mv /etc/resolv.conf.bak /etc/resolv.conf
    10. 마운트된 이미지의 커널 버전을 확인합니다.

      # rpm -qa kernel

      예를 들어 출력이 kernel-3.10.0-1062.el7.x86_64 인 경우 커널 버전은 3.10.0-1062.el7.x86_64 입니다. 다음 단계에서 이 커널 버전을 확인합니다.

      참고

      새 Red Hat Enterprise Linux QCOW2 이미지에는 하나의 커널 버전만 설치되어 있습니다. 둘 이상의 커널 버전이 설치되어 있으면 최신 버전을 사용합니다.

    11. networkiscsi dracut 모듈을 initramfs 이미지에 추가합니다.

      # dracut --force --add "network iscsi" /boot/initramfs-<KERNELVERSION>.img <KERNELVERSION>

      <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
    12. /etc/default/grub 구성 파일과 add rd.iscsi.firmware=1GRUB_CMDLINE_LINUX 매개변수에 편집합니다.

      # vi /etc/default/grub

      다음 예제에서는 added rd.iscsi.firmware=1 커널 인수가 있는 GRUB_CMDLINE_LINUX 매개변수를 보여줍니다.

      GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200n8 no_timer_check net.ifnames=0 rd.iscsi.firmware=1"

      이러한 변경 사항을 저장합니다.

      참고

      이 단계에서 grub 메뉴 구성을 다시 빌드하지 마십시오. 이 절차의 이후 단계에서는 임시 가상 시스템으로 grub 메뉴를 다시 빌드합니다.

    13. 마운트된 이미지를 호스트 운영 체제로 다시 종료합니다.

      # exit
  4. 이미지를 마운트 해제합니다.

    1. 임시 마운트 지점에서 dev 디렉터리를 마운트 해제합니다.

      $ sudo umount /tmp/mountpoint/dev
    2. 마운트 지점에서 이미지를 마운트 해제합니다.

      $ sudo umount /tmp/mountpoint
    3. /dev/nbd0/ 에서 QCOW2 이미지의 연결을 끊습니다.

      $ sudo qemu-nbd --disconnect /dev/nbd0
  5. 이미지에서 grub 메뉴 구성을 다시 빌드합니다.

    1. libguestfs-tools 패키지를 설치합니다.

      $ sudo yum -y install libguestfs-tools
      중요

      언더클라우드에 libguestfs-tools 패키지를 설치하는 경우 iscsid.socket 을 비활성화하여 언더클라우드의 tripleo_iscsid 서비스와 포트 충돌을 방지합니다.

      $ sudo systemctl disable --now iscsid.socket
    2. QEMU를 직접 사용하도록 libguestfs 백엔드를 설정합니다.

      $ export LIBGUESTFS_BACKEND=direct
    3. 이미지의 grub 구성을 업데이트합니다.

      $ guestfish -a <IMAGE> -m /dev/sda1 sh "/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg"