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 nbdCopy 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 -lCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새로운 Red Hat Enterprise Linux QCOW2 이미지에는 하나의 파티션만 포함되어 있으며, 일반적으로 NBD에서 이름이
/dev/nbd0p1입니다.이미지의 마운트 지점을 생성합니다.
mkdir /tmp/mountpoint
mkdir /tmp/mountpointCopy 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/devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 루트 디렉터리를 마운트 지점으로 변경합니다.
sudo chroot /tmp/mountpoint /bin/bash
sudo chroot /tmp/mountpoint /bin/bashCopy 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 directoryCopy 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.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 임시
resolv.conf파일을 생성하여 Red Hat Content Delivery Network에 대한 DNS 요청을 해결합니다. 이 예제에서는 이름 서버에8.8.8.8을 사용합니다.echo "nameserver 8.8.8.8" > /etc/resolv.conf
# echo "nameserver 8.8.8.8" > /etc/resolv.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트된 이미지를 Red Hat Content Delivery Network에 등록합니다.
subscription-manager register
# subscription-manager registerCopy 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-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트된 이미지를 등록 취소합니다.
subscription-manager unregister
# subscription-manager unregisterCopy to Clipboard Copied! Toggle word wrap Toggle overflow original
resolv.conf파일을 복원합니다.mv /etc/resolv.conf.bak /etc/resolv.conf
# mv /etc/resolv.conf.bak /etc/resolv.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트된 이미지의 커널 버전을 확인합니다.
rpm -qa kernel
# rpm -qa kernelCopy 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 이미지에는 하나의 커널 버전만 설치되어 있습니다. 둘 이상의 커널 버전이 설치되어 있으면 최신 버전을 사용합니다.
network및iscsidracut 모듈을 initramfs 이미지에 추가합니다.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 커널에서얻은 버전 번호로 바꿉니다. 다음 예제에서는 커널 버전으로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_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트된 이미지를 호스트 운영 체제로 다시 종료합니다.
exit
# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이미지를 마운트 해제합니다.
임시 마운트 지점에서
dev디렉터리를 마운트 해제합니다.sudo umount /tmp/mountpoint/dev
$ sudo umount /tmp/mountpoint/devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 마운트 지점에서 이미지를 마운트 해제합니다.
sudo umount /tmp/mountpoint
$ sudo umount /tmp/mountpointCopy to Clipboard Copied! Toggle word wrap Toggle overflow /dev/nbd0/에서 QCOW2 이미지의 연결을 끊습니다.sudo qemu-nbd --disconnect /dev/nbd0
$ sudo qemu-nbd --disconnect /dev/nbd0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이미지에서
grub메뉴 구성을 다시 빌드합니다.libguestfs-tools패키지를 설치합니다.sudo yum -y install libguestfs-tools
$ sudo yum -y install libguestfs-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요언더클라우드에
libguestfs-tools패키지를 설치하는 경우iscsid.socket을 비활성화하여 언더클라우드의tripleo_iscsid서비스와 포트 충돌을 방지합니다.sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow QEMU를 직접 사용하도록
libguestfs백엔드를 설정합니다.export LIBGUESTFS_BACKEND=direct
$ export LIBGUESTFS_BACKEND=directCopy 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