Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

12장. 스토리지 풀

이 장에서는 다양한 유형의 스토리지 풀을 생성하는 방법을 설명합니다. 스토리지 풀 은 관리자 측의 스토리지 세트 양이며, 종종 가상 머신에서 사용할 전용 스토리지 관리자입니다. 스토리지 풀은 스토리지 관리자 또는 시스템 관리자가 스토리지 볼륨으로 구분하며 볼륨은 블록 장치로 게스트 가상 머신에 할당됩니다.

예 12.1. NFS 스토리지 풀

NFS 서버를 담당하는 스토리지 관리자가 게스트 가상 시스템의 데이터를 저장하는 공유를 생성한다고 가정합니다. 시스템 관리자는 공유 세부 정보를 사용하여 호스트 물리적 시스템의 풀을 정의합니다(nfs.example.com:/path/to/share/vm_data에 마운트되어야 함). 풀이 시작되면 libvirt는 시스템 관리자가 로그인한 것처럼 NFS .example.com:/path/to/share /vmdata 와 마찬가지로 지정된 디렉터리에 공유를 마운트합니다. 풀이 autostart로 구성된 경우 libvirt는 libvirt를 시작할 때 지정된 디렉터리에 NFS 공유가 마운트되도록 합니다.
풀이 시작되면 NFS 공유 파일이 볼륨으로 보고되고 스토리지 볼륨의 경로는 libvirt API를 사용하여 쿼리됩니다. 그러면 게스트 가상 머신의 블록 장치에 대한 소스 스토리지를 설명하는 게스트 가상 머신의 XML 정의 파일의 섹션에 볼륨 경로를 복사할 수 있습니다. NFS를 사용하면 libvirt API를 사용하는 애플리케이션에서 풀 크기(공유의 최대 스토리지 용량)까지 풀 크기(NFS 공유 내의 파일)를 만들고 삭제할 수 있습니다. 일부 풀 유형이 볼륨 생성 및 삭제를 지원하는 것은 아닙니다. 풀을 중지하면 시작 작업이 무효화되어 NFS 공유를 마운트 해제합니다. 공유의 데이터는 이름에도 불구하고 destroy 작업에 의해 수정되지 않습니다. 자세한 내용은 man virsh를 참조하십시오.
참고
게스트 가상 머신을 제대로 작동하는 데는 스토리지 풀과 볼륨이 필요하지 않습니다. 풀과 볼륨은 libvirt에서 게스트 가상 머신에 특정 스토리지를 사용할 수 있도록 하는 방법을 제공하지만 일부 관리자는 자체 스토리지와 게스트 가상 머신을 관리하는 것이 좋습니다. 풀을 사용하지 않는 시스템에서 시스템 관리자는 원하는 툴을 사용하여 게스트 가상 시스템의 스토리지의 가용성을 확인해야 합니다(예: 호스트 물리적 시스템의 fstab에 NFS 공유를 추가하여 해당 공유를 부팅 시 마운트할 수 있도록 합니다.
주의
게스트에 스토리지 풀을 생성할 때 보안 고려 사항을 따르십시오. 이 정보는 에서 찾을 https://access.redhat.com/site/documentation/ 수 있는 Red Hat Enterprise Linux Virtualization 보안 가이드에서 자세히 설명합니다.

12.1. 디스크 기반 스토리지 풀

이 섹션에서는 게스트 가상 머신에 대한 디스크 기반 스토리지 장치를 생성하는 방법을 설명합니다.
주의
게스트에는 전체 디스크 또는 블록 장치(예: /dev/sdb)에 대한 쓰기 액세스 권한이 부여되지 않아야 합니다. 파티션(예: /dev/sdb1) 또는 LVM 볼륨 사용.
전체 블록 장치를 게스트에 전달하면 게스트에서 파티션을 지정하거나 자체 LVM 그룹을 만들 수 있습니다. 이로 인해 호스트 물리적 시스템에서 이러한 파티션 또는 LVM 그룹을 감지하고 오류가 발생할 수 있습니다.

12.1.1. virsh를 사용하여 디스크 기반 스토리지 풀 생성

이 절차에서는 virsh 명령으로 디스크 장치를 사용하여 새 스토리지 풀을 생성합니다.
주의
스토리지 풀에 디스크를 전용으로 사용하면 디스크 장치에 현재 저장된 모든 데이터를 다시 포맷하고 삭제합니다. 다음 절차를 시작하기 전에 스토리지 장치를 백업하는 것이 좋습니다.
  1. 디스크에 GPT 디스크 레이블 만들기

    디스크는 GUID 파티션 테이블 (GPT) 디스크 레이블을 사용하여 레이블을 다시 지정해야 합니다. GPT 디스크 레이블을 사용하면 각 장치에 최대 128개의 파티션을 만들 수 있습니다. GPT 파티션 테이블은 MS-DOS 파티션 테이블보다 훨씬 더 많은 파티션에 대한 파티션 데이터를 저장할 수 있습니다.
    # parted /dev/sdb
    GNU Parted 2.1
    Using /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) mklabel
    New disk label type? gpt
    (parted) quit
    Information: You may need to update /etc/fstab.
    #
    
  2. 스토리지 풀 구성 파일 생성

    새 장치에 필요한 스토리지 풀 정보를 포함하는 임시 XML 텍스트 파일을 생성합니다.
    파일은 아래 표시된 형식이어야 하며 다음 필드를 포함해야 합니다.
    <name>guest_images_disk</name>
    name 매개변수는 스토리지 풀의 이름을 결정합니다. 이 예에서는 아래 예제에서 guest_images_disk 라는 이름을 사용합니다.
    <device path='/dev/sdb'/>
    path 속성이 있는 device 매개변수는 스토리지 장치의 장치 경로를 지정합니다. 이 예에서는 /dev/sdb 장치를 사용합니다.
    <target> <path>/dev</path></target>
    경로 하위 매개 변수가 있는 파일 시스템 대상 매개 변수는 이 스토리지 풀을 사용하여 생성된 볼륨을 연결할 호스트 물리적 머신 파일 시스템의 위치를 결정합니다.
    예를 들면 sdb1, sdb2, sdb3입니다. 아래 예제와 같이 /dev/ 를 사용하면 이 스토리지 풀에서 생성된 볼륨에 /dev /sdb1, /dev/sdb2, / dev/sdb3로 액세스할 수 있음을 의미합니다.
    <format type='gpt'/>
    format 매개 변수는 파티션 테이블 유형을 지정합니다. 이 예에서는 아래 예제의 gpt 를 사용하여 이전 단계에서 만든 GPT 디스크 레이블 유형과 일치합니다.
    텍스트 편집기를 사용하여 스토리지 풀 장치의 XML 파일을 생성합니다.

    예 12.2. 디스크 기반 스토리지 장치 스토리지 풀

    <pool type='disk'>
      <name>guest_images_disk</name>
      <source>
        <device path='/dev/sdb'/>
        <format type='gpt'/>
      </source>
      <target>
        <path>/dev</path>
      </target>
    </pool>
    
  3. 장치 연결

    이전 단계에서 만든 XML 구성 파일과 함께 virsh pool-define 명령을 사용하여 스토리지 풀 정의를 추가합니다.
    # virsh pool-define ~/guest_images_disk.xml
    Pool guest_images_disk defined from /root/guest_images_disk.xml
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_disk    inactive   no
    
  4. 스토리지 풀 시작

    virsh pool-start 명령을 사용하여 스토리지 풀을 시작합니다. 풀이 virsh pool-list --all 명령으로 시작되었는지 확인합니다.
    # virsh pool-start guest_images_disk
    Pool guest_images_disk started
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_disk    active     no
    
  5. 자동 시작 켜기

    스토리지 풀에 대해 autostart 를 켭니다. autostart는 서비스가 시작될 때 스토리지 풀을 시작하도록 libvirtd 서비스를 구성합니다.
    # virsh pool-autostart guest_images_disk
    Pool guest_images_disk marked as autostarted
    # virsh pool-list --all
    Name                 State      Autostart
    -----------------------------------------
    default              active     yes
    guest_images_disk    active     yes
    
  6. 스토리지 풀 구성 확인

    스토리지 풀이 올바르게 생성되었고 크기가 올바르게 보고되었는지, 상태 보고서가 실행 중으로 생성되었는지 확인합니다.
    # virsh pool-info guest_images_disk
    Name:           guest_images_disk
    UUID:           551a67c8-5f2a-012c-3844-df29b167431c
    State:          running
    Capacity:       465.76 GB
    Allocation:     0.00
    Available:      465.76 GB
    # ls -la /dev/sdb
    brw-rw----. 1 root disk 8, 16 May 30 14:08 /dev/sdb
    # virsh vol-list guest_images_disk
    Name                 Path
    -----------------------------------------
    
  7. 선택 사항: 임시 구성 파일을 제거합니다.

    필요하지 않은 경우 임시 스토리지 풀 XML 구성 파일을 제거합니다.
    # rm ~/guest_images_disk.xml
디스크 기반 스토리지 풀을 사용할 수 있습니다.

12.1.2. virsh를 사용하여 스토리지 풀 삭제

다음은 virsh를 사용하여 스토리지 풀을 삭제하는 방법을 보여줍니다.
  1. 동일한 풀을 사용하는 다른 게스트 가상 머신의 문제를 방지하려면 스토리지 풀을 중지하고 사용 중인 리소스를 모두 해제하는 것이 가장 좋습니다.
    # virsh pool-destroy guest_images_disk
  2. 스토리지 풀의 정의 제거
    # virsh pool-undefine guest_images_disk