14장. 가상 머신용 스토리지 관리
VM(가상 머신)은 실제 시스템과 마찬가지로 데이터, 프로그램 및 시스템 파일을 위한 스토리지가 필요합니다. VM 관리자는 가상 스토리지로 물리적 또는 네트워크 기반 스토리지를 VM에 할당할 수 있습니다. 기본 하드웨어에 관계없이 VM에 스토리지가 표시되는 방식을 수정할 수도 있습니다.
다음 섹션에서는 다양한 유형의 VM 스토리지, 작동 방식 및 CLI 또는 웹 콘솔을 사용하여 이를 관리하는 방법에 대한 정보를 제공합니다.
14.1. 가상 머신 스토리지 이해
가상 머신(VM) 스토리지를 처음 사용하거나 작동 방식에 대해 잘 모르는 경우 다음 섹션에서는 VM 스토리지의 다양한 구성 요소, 작동 방법, 관리 기본 사항 및 Red Hat에서 제공하는 지원되는 솔루션에 대한 일반적인 개요를 제공합니다.
다음에 대한 정보를 찾을 수 있습니다.
14.1.1. 스토리지 풀 소개
스토리지 풀은 가상 시스템(VM)에 스토리지를 제공하기 위해 libvirt
에서 관리하는 파일, 디렉터리 또는 스토리지 장치입니다. 스토리지 풀을 스토리지 볼륨으로 분리하여 VM 이미지를 저장하거나 VM에 추가 스토리지로 연결할 수 있습니다.
또한 여러 VM이 동일한 스토리지 풀을 공유할 수 있어 스토리지 리소스를 더 효율적으로 할당할 수 있습니다.
스토리지 풀은 영구 또는 임시일 수 있습니다.
-
영구 스토리지 풀은 시스템이 호스트 머신을 재시작해도 유지됩니다.
virsh pool-define
을 사용하여 영구 스토리지 풀을 생성할 수 있습니다. -
일시적인 스토리지 풀은 호스트가 재부팅될 때까지만 존재합니다.
virsh pool-create
명령을 사용하여 임시 스토리지 풀을 생성할 수 있습니다.
-
영구 스토리지 풀은 시스템이 호스트 머신을 재시작해도 유지됩니다.
스토리지 풀 스토리지 유형
스토리지 풀은 로컬 또는 네트워크 기반(공유)일 수 있습니다.
로컬 스토리지 풀
로컬 스토리지 풀은 호스트 서버에 직접 연결됩니다. 여기에는 로컬 디렉터리, 직접 연결된 디스크, 물리 파티션, 로컬 장치에 논리 볼륨 관리(LVM) 볼륨 그룹이 포함됩니다.
로컬 스토리지 풀은 마이그레이션이 필요하지 않거나 다수의 VM이 없는 개발, 테스트 및 소규모 배포에 유용합니다.
네트워크(공유) 스토리지 풀
네트워크로 연결된 스토리지 풀에는 표준 프로토콜을 사용하여 네트워크를 통해 공유하는 스토리지 장치가 포함됩니다.
14.1.2. 스토리지 볼륨 소개
스토리지 풀은 스토리지 볼륨으로
나뉩니다. 스토리지 볼륨은 물리 파티션, LVM 논리 볼륨, 파일 기반 디스크 이미지 및 libvirt
에서 처리하는 기타 스토리지 유형에 대한 추상화입니다. 스토리지 볼륨은 기본 하드웨어에 관계없이 디스크와 같은 로컬 스토리지 장치로 VM에 제공됩니다.
호스트 시스템에서 스토리지 볼륨은 이름 및 파생되는 스토리지 풀의 식별자로 참조합니다. virsh
명령줄에서 --pool storage_pool volume_name
형식을 사용합니다.
예를 들어 guest_images 풀에 firstimage 라는 볼륨에 대한 정보를 표시하려면 다음을 수행합니다.
# virsh vol-info --pool guest_images firstimage
Name: firstimage
Type: block
Capacity: 20.00 GB
Allocation: 20.00 GB
14.1.3. libvirt를 사용한 스토리지 관리
libvirt
원격 프로토콜을 사용하여 VM 스토리지의 모든 측면을 관리할 수 있습니다. 이러한 작업은 원격 호스트에서도 수행할 수 있습니다. 결과적으로 RHEL 웹 콘솔과 같이 libvirt
를 사용하는 관리 애플리케이션을 사용하여 VM의 스토리지를 구성하는 데 필요한 모든 작업을 수행할 수 있습니다.
libvirt
API를 사용하여 스토리지 풀의 볼륨 목록을 쿼리하거나 해당 스토리지 풀에서 사용 가능한 용량, 할당 및 사용 가능한 스토리지에 대한 정보를 가져올 수 있습니다. 이를 지원하는 스토리지 풀의 경우 libvirt
API를 사용하여 스토리지 볼륨을 생성, 복제, 크기 조정, 삭제할 수도 있습니다. 또한 libvirt
API를 사용하여 스토리지 볼륨에 데이터를 업로드하거나 스토리지 볼륨에서 데이터를 다운로드하거나 스토리지 볼륨에서 데이터를 초기화할 수 있습니다.
14.1.4. 스토리지 관리 개요
스토리지 관리에 사용 가능한 옵션을 설명하기 위해 다음 예제에서는 mount -t nfs.example.com:/path/to/share /path/to/data
를 사용하는 샘플 NFS 서버에 대해 설명합니다.
스토리지 관리자로서:
-
내보낸 서버 경로 및 클라이언트 대상 경로를 설명하도록 가상화 호스트에서 NFS 스토리지 풀을 정의할 수 있습니다. 따라서
libvirt
는libvirt
가 시작될 때 또는libvirt
를 실행하는 동안 필요에 따라 스토리지를 자동으로 마운트할 수 있습니다. - 간단히 스토리지 풀 및 스토리지 볼륨을 VM에 이름으로 추가할 수 있습니다. 볼륨에 대상 경로를 추가할 필요가 없습니다. 따라서 대상 클라이언트 경로가 변경되더라도 VM에 영향을 미치지 않습니다.
-
자동 시작을 위해 스토리지 풀을 구성할 수 있습니다. 이렇게 하면
libvirt
가 시작될 때 지정된 디렉터리에 NFS 공유 디스크를 자동으로 마운트합니다.libvirt
nfs.example.com:/path/to/share /vmdata 와 유사하게 지정된 디렉터리에 공유를 마운트합니다
. -
libvirt
API를 사용하여 스토리지 볼륨 경로를 쿼리할 수 있습니다. 이러한 스토리지 볼륨은 기본적으로 NFS 공유 디스크에 있는 파일입니다. 그런 다음 VM 블록 장치의 소스 스토리지를 설명하는 VM의 XML 정의 섹션에 이러한 경로를 복사할 수 있습니다. NFS의 경우
libvirt
API를 사용하는 애플리케이션을 사용하여 풀 크기(공유의 스토리지 용량)까지 스토리지 풀(NFS 공유의 파일)에서 스토리지 볼륨을 생성하고 삭제할 수 있습니다.일부 스토리지 풀 유형은 볼륨 생성 및 삭제를 지원하는 것은 아닙니다.
-
더 이상 필요하지 않은 경우 스토리지 풀을 중지할 수 있습니다. 스토리지 풀(
pool-destroy
)을 중지하면 시작 작업을 취소합니다. 이 경우 NFS 공유를 마운트 해제합니다. 공유의 데이터는 명령 이름이 제안한 경우에도 destroy 작업에 의해 수정되지 않습니다. 자세한 내용은man virsh
을 참조하십시오.
14.1.5. 지원되지 않는 스토리지 풀 유형
지원되는 스토리지 풀 유형
다음은 RHEL에서 지원하는 스토리지 풀 유형 목록입니다.
- 디렉터리 기반 스토리지 풀
- 디스크 기반 스토리지 풀
- 파티션 기반 스토리지 풀
- iSCSI 기반 스토리지 풀
- LVM 기반 스토리지 풀
- NFS 기반 스토리지 풀
- vHBA 장치가 있는 SCSI 기반 스토리지 풀
- 다중 경로 기반 스토리지 풀
- RBD 기반 스토리지 풀
지원되지 않는 스토리지 풀 유형
다음은 RHEL에서 지원하지 않는 libvirt
스토리지 풀 유형 목록입니다.
- Sheepdog 기반 스토리지 풀
- Vstorage 기반 스토리지 풀
- aware-based storage pool
- iSCSI-direct 스토리지 풀
- GlusterFS 스토리지 풀