2장. 이미지 관리


Image 서비스(glance)는 디스크 및 서버 이미지에 대한 검색, 등록 및 전달 서비스를 제공합니다. 서버 이미지를 복사하거나 스냅샷을 작성하고 저장할 수 있는 기능을 제공합니다. 저장된 이미지를 서버 운영 체제를 설치하고 개별적으로 서비스를 구성하는 것보다 새로운 서버를 빠르고 일관되게 위임하는 템플릿으로 사용할 수 있습니다.

2.1. 이미지 생성

RHEL(Red Hat Enterprise Linux) ISO 파일 또는 Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.

2.1.1. Red Hat OpenStack Platform에서 KVM 게스트 이미지 사용

준비된 RHEL KVM(커널 기반 가상 머신) 게스트 QCOW2 이미지를 사용할 수 있습니다.

이러한 이미지는 cloud-init 로 구성되며 SSH 키 프로비저닝이 올바르게 작동하려면 ec2-compatible 메타데이터 서비스를 활용해야 합니다.

준비된 Windows KVM 게스트 QCOW2 이미지를 사용할 수 없습니다.

참고

KVM 게스트 이미지의 경우:

  • 이미지의 root 계정은 비활성화되어 있지만 sudo 액세스는 cloud-user 라는 특수 사용자에게 부여됩니다.
  • 이 이미지에는 루트 암호가 설정되어 있지 않습니다.

루트 암호는 두 번째 필드에 !! 를 배치하여 /etc/shadow 에 잠겨 있습니다.

RHOSP 인스턴스의 경우 RHOSP 대시보드 또는 명령줄에서 ssh 키 쌍을 생성하고 해당 키 조합을 사용하여 인스턴스에 대한 SSH 공용 인증을 root로 수행합니다.

인스턴스가 시작되면 이 공개 키가 삽입됩니다. 그런 다음 키 쌍을 만들 때 다운로드한 개인 키를 사용하여 인증할 수 있습니다.

2.1.2. 사용자 지정 Red Hat Enterprise Linux 또는 Windows 이미지 만들기

사전 요구 사항

  • 이미지를 생성할 Linux 호스트 머신입니다. 언더클라우드 또는 오버클라우드를 제외한 Linux 패키지를 설치하고 실행할 수 있는 머신일 수 있습니다.
  • advanced-virt 리포지토리가 활성화되어 있습니다.

    $ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
  • libvirt, virt-manager: 게스트 운영 체제를 생성하는 데 필요한 모든 패키지를 설치합니다.

    $ sudo dnf module install -y virt
  • libguestfs 툴을 설치하여 가상 머신 이미지에 액세스하고 수정합니다.

    $ sudo dnf install -y libguestfs-tools-c
  • RHEL 9 또는 8 ISO 파일 또는 Windows ISO 파일. RHEL ISO 파일에 대한 자세한 내용은 RHEL 9.0 Binary DVD 또는 RHEL 8.6 Binary DVD 를 참조하십시오. Windows ISO 파일이 없는 경우 Microsoft Evaluation Center 에서 평가판 이미지를 다운로드합니다.
  • Kickstart 파일(RHEL만)을 변경하려면 텍스트 편집기입니다.
중요

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

$ sudo systemctl disable --now iscsid.socket

2.1.3. Red Hat Enterprise Linux 9 이미지 생성

Red Hat Enterprise Linux 9 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.

참고

호스트 시스템에서 [root@host]# 을 사용하여 모든 명령을 실행해야 합니다.

절차

  1. virt-install 을 사용하여 설치를 시작하십시오.

    [root@host]# qemu-img create -f qcow2 rhel9.qcow2 10G.
    [root@host]# virt-install --virt-type kvm --name rhel9 --ram 2048 \
    --cdrom /var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso \
    --disk rhel9.qcow2,format=qcow2 \
    --network=bridge:virbr0 --graphics vnc,listen=127.0.0.1 \
    --noautoconsole --os-type=linux --os-variant=rhel9.0

    그러면 인스턴스가 시작되고 설치 프로세스가 시작됩니다.

    참고

    인스턴스가 자동으로 시작되지 않으면 virt-viewer 명령을 실행하여 콘솔을 확인합니다.

    [root@host]# virt-viewer rhel9
  2. 인스턴스를 구성합니다.

    1. 초기 설치 관리자 부팅 메뉴에서 Install Red Hat Enterprise Linux 9 를 선택합니다.
    2. 적절한 Language 및 Cryostat 옵션을 선택합니다.
    3. 설치에서 사용하는 장치 유형에 대한 메시지가 표시되면 자동 감지된 설치 미디어를 선택합니다.
    4. 설치 대상 유형에 대한 메시지가 표시되면 로컬 표준 디스크 를 선택합니다. 기타 스토리지 옵션의 경우 파티션 자동 구성을 선택합니다.
    5. SSH 서버를 설치하는 기본 서버 설치를 선택합니다.
    6. 네트워크 및 호스트 이름의 경우 네트워크에 eth0 을 선택하고 장치의 호스트 이름을 선택합니다. 기본 호스트 이름은 localhost.localdomain 입니다.
    7. Root Password 필드에 암호를 입력하고 Confirm 필드에 동일한 암호를 다시 입력합니다.

      결과
      설치 프로세스가 완료되고 Complete! 화면이 표시됩니다.
  3. 설치가 완료되면 인스턴스를 재부팅하고 root 사용자로 로그인합니다.
  4. 다음 값만 포함하도록 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 업데이트합니다.

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
  5. 시스템을 재부팅합니다.
  6. Content Delivery Network에 머신을 등록합니다.

    # sudo subscription-manager register
    # sudo subscription-manager attach --pool=Valid-Pool-Number-123456
    # sudo subscription-manager repos --enable=rhel-9-server-rpms
  7. 시스템을 업데이트합니다.

    # dnf -y update
  8. cloud-init 패키지를 설치합니다.

    # dnf install -y cloud-utils-growpart cloud-init
  9. /etc/cloud/cloud.cfg 구성 파일을 편집하고 cloud_init_modules 에서 다음을 추가합니다.

    - resolv-conf

    resolv-conf 옵션은 인스턴스가 처음 부팅될 때 resolv.conf 를 자동으로 구성합니다. 이 파일에는 이름 서버,도메인 및 기타 옵션과 같은 인스턴스와 관련된 정보가 포함되어 있습니다.

  10. EC2 메타데이터 서비스에 액세스하는 문제를 방지하려면 /etc/sysconfig/network 에 다음 행을 추가합니다.

    NOZEROCONF=yes
  11. 콘솔 메시지가 대시보드 및 nova console-log 출력의 로그 탭에 표시되도록 하려면 /etc/default/grub 파일에 다음 부팅 옵션을 추가합니다.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
  12. grub2-mkconfig 명령을 실행합니다.

    # grub2-mkconfig -o /boot/grub2/grub.cfg

    출력은 다음과 같습니다.

    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-229.9.2.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.9.2.el9.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-121.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-121.el9.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b
    Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img
    done
  13. 생성된 이미지에 이 인스턴스의 서브스크립션 세부 정보가 포함되지 않도록 인스턴스를 등록합니다.

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
  14. 인스턴스의 전원을 끕니다.

    # poweroff
  15. virt-sysprep 명령을 사용하여 문제 없이 인스턴스를 생성하는 데 사용할 수 있도록 이미지를 재설정하고 정리합니다.

    [root@host]# virt-sysprep -d rhel9
  16. 디스크 이미지 내의 사용 가능한 공간을 다시 호스트 내의 여유 공간으로 변환하여 이미지 크기를 줄입니다.

    [root@host]# virt-sparsify --compress rhel9.qcow2 rhel9-cloud.qcow2

    그러면 명령이 실행되는 위치에 새 rhel9-cloud.qcow2 파일이 생성됩니다. rhel9-cloud.qcow2 이미지 파일을 이미지 서비스에 업로드할 수 있습니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.

2.1.4. Red Hat Enterprise Linux 8 이미지 생성

Red Hat Enterprise Linux 8 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.

참고

호스트 시스템에서 [root@host]# 을 사용하여 모든 명령을 실행해야 합니다.

절차

  1. virt-install 을 사용하여 설치를 시작하십시오.

    [root@host]# qemu-img create -f qcow2 rhel8.qcow2 10G
    [root@host]# virt-install --virt-type kvm --name rhel8 --ram 2048 \
    --cdrom /var/lib/libvirt/images/RHEL-8.0.0--x86_64-dvd1.iso \
    --disk rhel8.qcow2,format=qcow2 \
    --network=bridge:virbr0 --graphics vnc,listen=127.0.0.1 \
    --noautoconsole --os-type=linux --os-variant=rhel8.0

    그러면 인스턴스가 시작되고 설치 프로세스가 시작됩니다.

    참고

    인스턴스가 자동으로 시작되지 않으면 virt-viewer 명령을 실행하여 콘솔을 확인합니다.

    [root@host]# virt-viewer rhel8
  2. 인스턴스를 구성합니다.

    1. 초기 설치 프로그램 부팅 메뉴에서 Install or upgrade an existing system 을 선택하고 설치 프롬프트를 따릅니다. 기본값을 수락합니다.

      디스크 설치 프로그램은 설치 전에 설치 미디어를 테스트하는 옵션을 제공합니다. 확인을 선택하여 테스트 또는 Skip 을 실행하여 테스트 없이 진행합니다.

    2. 적절한 Language 및 Cryostat 옵션을 선택합니다.
    3. 설치에서 사용하는 장치 유형에 대한 메시지가 표시되면 Basic Storage Devices 를 선택합니다.
    4. 장치의 호스트 이름을 선택합니다. 기본 호스트 이름은 localhost.localdomain 입니다.
    5. 시간대root 암호를 설정합니다.
    6. 디스크 공간에 따라 설치하려는 옵션에서 설치 유형을 선택합니다.
    7. SSH 서버를 설치하는 기본 서버 설치를 선택합니다.
    8. 설치 프로세스가 완료되고 Congratulations가 완료되면 Red Hat Enterprise Linux 설치가 완전히 표시됩니다.
  3. 인스턴스를 재부팅하고 root 사용자로 로그인합니다.
  4. 다음 값만 포함하도록 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 업데이트합니다.

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
  5. 시스템을 재부팅합니다.
  6. Content Delivery Network에 머신을 등록합니다.

    # sudo subscription-manager register
    # sudo subscription-manager attach --pool=Valid-Pool-Number-123456
    # sudo subscription-manager repos --enable=rhel-8-server-rpms
  7. 시스템을 업데이트합니다.

    # dnf -y update
  8. cloud-init 패키지를 설치합니다.

    # dnf install -y cloud-utils-growpart cloud-init
  9. /etc/cloud/cloud.cfg 구성 파일을 편집하고 cloud_init_modules 아래에 다음 콘텐츠를 추가합니다.

    - resolv-conf

    resolv-conf 옵션은 인스턴스가 처음 부팅될 때 resolv.conf 구성 파일을 자동으로 구성합니다. 이 파일에는 이름 서버 ,도메인 및 기타 옵션 같은 인스턴스 관련 정보가 포함되어 있습니다.

  10. 네트워크 문제를 방지하려면 /etc/udev/rules.d/75-persistent-net-generator.rules:을 생성하십시오.

    # echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules

    이렇게 하면 /etc/udev/rules.d/70-persistent-net.rules 파일이 생성되지 않습니다. /etc/udev/rules.d/70-persistent-net.rules 가 생성되면 스냅샷에서 부팅할 때 네트워킹이 올바르게 작동하지 않을 수 있습니다. 네트워크 인터페이스는 eth0 이 아니라 eth1 로 생성되고 IP 주소가 할당되지 않습니다.

  11. EC2 메타데이터 서비스에 액세스하는 문제를 방지하려면 /etc/sysconfig/network 에 다음 행을 추가합니다.

    NOZEROCONF=yes
  12. 콘솔 메시지가 대시보드 및 nova console-log 출력의 로그 탭에 표시되도록 하려면 /etc/grub.conf 파일에 다음 부팅 옵션을 추가합니다.

    console=tty0 console=ttyS0,115200n8
  13. 결과 이미지에 이 인스턴스에 대한 동일한 서브스크립션 세부 정보가 포함되지 않도록 가상 머신을 등록합니다.

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
  14. 인스턴스의 전원을 끕니다.

    # poweroff
  15. virt-sysprep 명령을 사용하여 문제 없이 인스턴스를 생성하는 데 사용할 수 있도록 이미지를 재설정하고 정리합니다.

    [root@host]# virt-sysprep -d rhel8
  16. virt-sparsify 명령을 사용하여 이미지 크기를 줄입니다. 이 명령은 디스크 이미지 내의 사용 가능한 공간을 다시 변환하여 호스트 내의 사용 가능한 공간을 다시 변환합니다.

    [root@host]# virt-sparsify --compress rhel8.qcow2 rhel8-cloud.qcow2

    이렇게 하면 명령이 실행되는 위치에 새 rhel8-cloud.qcow2 파일이 생성됩니다.

    참고

    인스턴스에 적용되는 플레이버의 디스크 공간에 따라 이미지를 기반으로 인스턴스 파티션의 크기를 수동으로 조정해야 합니다.

rhel8-cloud.qcow2 이미지 파일을 이미지 서비스에 업로드할 준비가 되었습니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.

2.1.5. Windows 이미지 생성

Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.

참고

호스트 시스템에서 [root@host]# 을 사용하여 모든 명령을 실행해야 합니다.

절차

  1. virt-install 을 사용하여 설치를 시작하십시오.

    [root@host]# virt-install --name=<name> \
    --disk size=<size> \
    --cdrom=<path> \
    --os-type=windows \
    --network=bridge:virbr0 \
    --graphics spice \
    --ram=<ram>

    virt-install 매개변수의 다음 값을 바꿉니다.

    • <name> true - Windows 인스턴스에 있는 이름입니다.
    • <size> Cryostat- Cryostatdisk 크기(GB)입니다.
    • Windows 설치 ISO 파일의 경로입니다.
    • <RAM>유지 관리 - 요청된 RAM 양(MB)입니다.

      참고

      --os-type=windows 매개변수를 사용하면 시계가 Windows 게스트에 대해 올바르게 구성되어 있으며 Hyper-V 지원 기능을 활성화합니다. 이미지를 Image 서비스(glance)에 업로드하기 전에 이미지 메타데이터에서 os_type=windows 를 설정해야 합니다.

  2. virt-install 은 게스트 이미지를 /var/lib/libvirt/images/<name > .qcow2 로 저장합니다. 게스트 이미지를 다른 곳에 유지하려면 --disk 옵션의 매개변수를 변경합니다.

    --disk path=<filename>,size=<size>

    <filename>을 인스턴스 이미지를 저장하는 파일 이름 및 선택적으로 해당 경로로 바꿉니다. 예를 들어 path=win8.qcow2,size=8 은 현재 작업 디렉터리에 win8.qcow2 라는 8GB 파일을 생성합니다.

    작은 정보

    게스트가 자동으로 시작되지 않으면 virt-viewer 명령을 실행하여 콘솔을 확인합니다.

    [root@host]# virt-viewer <name>

    Windows를 설치하는 방법에 대한 자세한 내용은 관련 Microsoft 설명서를 참조하십시오.

  3. 새로 설치된 Windows 시스템이 가상화된 하드웨어를 사용하도록 허용하려면 VirtIO 드라이버를 설치해야 할 수 있습니다. 이렇게 하려면 이미지를 Windows 인스턴스에 CD-ROM 드라이브로 연결하여 설치합니다. virtio-win 패키지를 설치하려면 VirtIO ISO 이미지를 인스턴스에 추가하고 VirtIO 드라이버를 설치해야 합니다. 자세한 내용은 가상화 구성 및 관리 가이드에서 Windows 가상 머신용 KVM 반가상화 드라이버 설치를 참조하십시오.
  4. 구성을 완료하려면 Windows 시스템에서 Cloudbase-Init 를 다운로드하고 실행합니다. Cloudbase-Init 설치가 끝나면 Run Sysprep 및 Cryostat 확인란 선택합니다. Sysprep 툴은 특정 Microsoft 서비스에서 사용하는 OS ID를 생성하여 게스트를 고유하게 만듭니다.

    중요

    Red Hat은 Cloudbase-Init에 대한 기술 지원을 제공하지 않습니다. 문제가 발생하면 Contact Cloudbase Solutions 를 참조하십시오.

Windows 시스템이 종료되면 < name>.qcow2 이미지 파일을 이미지 서비스에 업로드할 준비가 된 것입니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.

2.1.5.1. 메타데이터 속성

Compute 서비스(nova)는 libosinfo 데이터를 사용하여 기본 장치 모델을 설정할 수 있도록 더 이상 지원되지 않습니다. 대신 다음 이미지 메타데이터 속성을 사용하여 인스턴스에 최적의 가상 하드웨어를 구성합니다.

  • os_distro
  • os_version
  • hw_cdrom_bus
  • hw_disk_bus
  • hw_scsi_model
  • hw_vif_model
  • hw_video_model
  • hypervisor_type

이러한 메타데이터 속성에 대한 자세한 내용은 이미지 구성 매개변수를 참조하십시오.

2.1.6. UEFI Secure Boot 용 이미지 생성

오버클라우드에 UEFI Secure Boot Compute 노드가 포함된 경우 클라우드 사용자가 Secure Boot 인스턴스를 시작하는 데 사용할 수 있는 Secure Boot 인스턴스 이미지를 생성할 수 있습니다.

프로세스

  1. UEFI Secure Boot의 새 이미지를 생성합니다.

    $ openstack image create --file <base_image_file> uefi_secure_boot_image
    • & lt;base_image_file >을 UEFI 및 GUID 파티션 테이블(GPT) 표준을 지원하고 EFI 시스템 파티션을 포함하는 이미지 파일로 바꿉니다.
  2. 기본 머신 유형이 q35 가 아닌 경우 시스템 유형을 q35 로 설정합니다.

    $ openstack image set --property hw_machine_type=q35 uefi_secure_boot_image
  3. UEFI Secure Boot 호스트에서 인스턴스를 예약하도록 지정합니다.

    $ openstack image set \
     --property hw_firmware_type=uefi \
     --property os_secure_boot=required \
     uefi_secure_boot_image
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.