스토리지
이 문서에서는 물리적 스토리지 하드웨어가 가상 머신(VM)에 매핑되는 방식과 XenServer®에서 스토리지 관련 작업을 수행하는 데 사용되는 소프트웨어 개체에 대해 설명합니다. 또한 환경에서 사용할 스토리지 하드웨어를 올바르게 선택할 수 있도록 사용 가능한 스토리지 유형에 대한 정보도 제공합니다.
스토리지 개념
다음 이미지는 이 섹션에 설명된 스토리지 개체가 서로 어떻게 관련되어 있는지 보여줍니다.
스토리지 리포지토리 및 관련 개체의 그래픽 개요 ](/ko-kr/xenserver/9/media/sr-diagram.png)
스토리지 리포지토리(SR)
스토리지 리포지토리(SR)는 가상 머신(VM) 가상 디스크 이미지(VDI)가 저장되는 특정 스토리지 대상입니다. VDI는 가상 하드 디스크 드라이브(HDD)를 나타내는 스토리지 추상화입니다. XenServer에서 지원하는 SR 유형에 대해 알아보려면 스토리지 리포지토리 유형을 참조하십시오.
SR 및 VDI 추상화를 통해 고급 스토리지 기능을 지원하는 스토리지 대상에 해당 기능을 노출할 수 있습니다. 예를 들어 씬 프로비저닝, VDI 스냅샷 및 빠른 복제와 같은 고급 기능이 있습니다. 고급 작업을 직접 지원하지 않는 스토리지 서브시스템의 경우 이러한 기능을 구현하는 소프트웨어 스택이 제공됩니다.
스토리지 리포지토리는 영구적인 온디스크 데이터 구조입니다. 기본 블록 장치를 사용하는 SR 유형의 경우 SR을 생성하는 과정에서 지정된 스토리지 대상의 기존 데이터를 모두 지워야 합니다. NFS와 같은 다른 스토리지 유형은 기존 SR과 병렬로 스토리지 어레이에 컨테이너를 생성합니다.
각 XenServer 호스트는 여러 SR과 다양한 SR 유형을 동시에 사용할 수 있습니다. 이러한 SR은 호스트 간에 공유되거나 특정 호스트에 전용으로 할당될 수 있습니다. 공유 스토리지는 정의된 리소스 풀 내의 여러 호스트 간에 풀링됩니다. 공유 SR은 풀의 각 호스트에 네트워크로 액세스할 수 있어야 합니다. 공유 스토리지는 여러 풀 간에 공유할 수 없습니다.
SR 명령은 포함된 개별 VDI를 생성, 삭제, 크기 조정, 복제, 연결 및 검색하는 작업을 제공합니다. 스토리지 리포지토리를 관리하는 CLI 작업은 SR 명령에 설명되어 있습니다.
가상 디스크 이미지(VDI)
가상 디스크 이미지(VDI)는 가상 하드 디스크 드라이브(HDD)를 나타내는 스토리지 추상화입니다. VDI는 XenServer에서 가상화된 스토리지의 기본 단위입니다. VDI는 XenServer 호스트와 독립적으로 존재하는 영구적인 온디스크 개체입니다. XenServer에서 가상 디스크에 지원되는 데이터 형식에 대한 자세한 내용은 가상 디스크 데이터 형식을 참조하십시오.
VDI를 관리하는 CLI 작업은 VDI 명령에 설명되어 있습니다. 데이터의 온디스크 표현은 SR 유형에 따라 다릅니다. SM API라고 하는 각 SR에 대한 별도의 스토리지 플러그인 인터페이스가 데이터를 관리합니다.
물리적 블록 장치(PBD)
물리적 블록 장치(PBD)는 물리적 서버와 연결된 SR 간의 인터페이스를 나타냅니다. PBD는 특정 SR을 호스트에 매핑할 수 있도록 하는 커넥터 개체입니다. PBD는 특정 스토리지 대상에 연결하고 상호 작용하는 데 사용되는 장치 구성 필드를 저장합니다. 예를 들어, NFS 장치 구성에는 NFS 서버의 IP 주소와 XenServer 호스트가 마운트하는 관련 경로가 포함됩니다. PBD 개체는 특정 SR을 특정 XenServer 호스트에 런타임으로 연결하는 것을 관리합니다. PBD와 관련된 CLI 작업은 PBD 명령에 설명되어 있습니다.
가상 블록 장치(VBD)
가상 블록 장치(VBD)는 VDI와 VM 간의 매핑을 허용하는 커넥터 개체(위에서 설명한 PBD와 유사)입니다. VBD는 VDI를 VM에 연결하는 메커니즘을 제공하는 것 외에도 특정 VDI의 디스크 I/O 우선순위 및 통계, 그리고 해당 VDI를 부팅할 수 있는지 여부에 대한 매개변수를 세밀하게 조정할 수 있도록 합니다. VBD와 관련된 CLI 작업은 VBD 명령에 설명되어 있습니다.
스토리지 저장소 유형
XenServer는 로컬 및 원격으로 연결된 SR 모두에 대해 다양한 스토리지 유형을 지원합니다.
경고:
XenServer는 어떤 SR 유형에 대해서도 LUN의 외부 SAN 수준에서 스냅샷을 지원하지 않습니다.
로컬 SR
로컬 스토리지 저장소(SR)는 단일 호스트에 연결되며 풀의 모든 호스트 간에 공유되지 않습니다. 로컬 물리적 스토리지 하드웨어는 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD)일 수 있습니다. SATA, SCSI, SAS, NVMe와 같은 방법 중 하나를 사용하여 호스트에 연결할 수 있습니다.
XenServer 호스트는 다음 유형의 로컬 스토리지를 지원합니다.
원격 SR
XenServer는 다음 드라이브를 사용하여 원격으로 연결된 스토리지를 지원합니다: iSCSI, NFS, SAS, SMB (버전 3만 해당), Fibre Channel.
참고:
NVMe 오버 파이버 채널 및 NVMe 오버 TCP는 지원되지 않습니다.
다음 원격 연결 스토리지 유형을 사용하여 XenServer 풀에 대한 공유 SR을 생성할 수 있습니다.
ISO 라이브러리:
파일 기반 스토리지:
블록 기반 스토리지:
공유 스토리지 유형 비교
다음 표는 공유 SR에 지원되는 다양한 스토리지 유형의 기능을 비교합니다. 스토리지 솔루션을 선택할 때 이러한 기능을 고려하십시오.
| 파일 기반 (SMB/NFS) | 블록 기반 (iSCSI/HBA) 논리 볼륨 관리 | Block-based (iSCSI/HBA) GFS2 | |
|---|---|---|---|
| 가상 디스크 유형 | VHD | VHD | QCOW2 이미지 |
| SR당 최대 가상 디스크 수 | 20000 | 1000 | 20000 |
| 최대 가상 디스크 크기 | 2,040 GiB | 2,040 GiB | 16 TiB |
| 최대 풀 크기(/ko-kr/xenserver/9/hosts-pools#recommended-pool-size) | 32/64 | 32 | 16 |
| 지원되는 기능 | |||
| 스토리지 마이그레이션(/ko-kr/xenserver/9/vms/migrate) | 예 | 예 | 아니요 |
| 인텔리캐시(/ko-kr/xenserver/9/storage/intellicache) | 예 | 예 | 아니요 |
| 읽기 캐싱(/ko-kr/xenserver/9/storage/read-cache) | 예 | 아니요 | 예 |
| 씬 프로비저닝 (참고 참조) | 예 | 아니요 | 예 |
| 재해 복구 | 아니요 | 예 | 아니요 |
참고:
블록 기반 LVM 스토리지의 경우, 기본 SAN에서 씬 프로비저닝을 구현할 수 있습니다. 하지만 GFS2 SR에서는 권장되지 않습니다.
가상 디스크 데이터 형식
일반적으로 물리적 스토리지를 VDI에 매핑하는 방법은 다음과 같습니다:
-
LUN의 논리 볼륨 기반 VHD: 기본 XenServer 블록 기반 스토리지는 디스크에 논리 볼륨 관리자를 삽입합니다. 이 디스크는 로컬 연결 장치(LVM)이거나 Fibre Channel, iSCSI 또는 SAS를 통한 SAN 연결 LUN입니다. VDI는 볼륨 관리자 내의 볼륨으로 표현되며, 스냅샷 및 복제 시 참조 노드의 씬 프로비저닝을 허용하기 위해 VHD 형식으로 저장됩니다.
-
LUN 기반 파일 QCOW2: VM 이미지는 iSCSI 소프트웨어 이니시에이터 또는 하드웨어 HBA를 통해 연결된 LUN의 GFS2 공유 디스크 파일 시스템에 씬 프로비저닝된 QCOW2 형식 파일로 저장됩니다.
-
파일 시스템 기반 VHD: VM 이미지는 로컬 비공유 파일 시스템(EXT3/EXT4 유형 SR), 공유 NFS 대상(NFS 유형 SR) 또는 원격 SMB 대상(SMB 유형 SR) 중 하나에 씬 프로비저닝된 VHD 형식 파일로 저장됩니다.
-
파일 시스템 기반 QCOW2: VM 이미지는 로컬 비공유 XFS 파일 시스템에 씬 프로비저닝된 QCOW2 형식 파일로 저장됩니다.
VDI 유형
GFS2 및 XFS SR의 경우 QCOW2 VDI가 생성됩니다.
다른 SR 유형의 경우 VHD 형식 VDI가 생성됩니다. VDI를 생성할 때 raw를 사용하도록 선택할 수 있습니다. 이 옵션은 xe CLI를 통해서만 지정할 수 있습니다.
참고:
LVM 기반 SR 또는 HBA/LUN-per-VDI SR에 raw VDI를 생성하는 경우, 소유 VM이 이전에 삭제된 VDI(모든 형식)에 속한 데이터를 액세스할 수 있도록 허용할 수 있습니다. 이 옵션을 사용하기 전에 보안 요구 사항을 고려하는 것이 좋습니다.
NFS, EXT 또는 SMB SR의 Raw VDI는 어떤 VM에 속하든 이전에 삭제된 VDI의 데이터에 대한 액세스를 허용하지 않습니다.
VDI가 type=raw으로 생성되었는지 확인하려면 해당 sm-config 맵을 확인하십시오. 이를 위해 sr-param-list 및 vdi-param-list xe 명령을 각각 사용할 수 있습니다.
xe CLI를 사용하여 raw 가상 디스크 생성
-
가상 디스크를 배치할 SR의 UUID를 지정하여 VDI를 생성하려면 다음 명령을 실행하십시오.
xe vdi-create sr-uuid=sr-uuid type=user virtual-size=virtual-size \ name-label=VDI name sm-config:type=raw <!--NeedCopy--> -
새 가상 디스크를 VM에 연결합니다. VM 내의 디스크 도구를 사용하여 새 디스크를 분할하고 포맷하거나 다른 방식으로 사용하십시오.
vbd-create명령을 사용하여 가상 디스크를 VM에 매핑하는 VBD를 생성할 수 있습니다.
VDI 형식 간 변환
raw 및 VHD 형식 간에 직접 변환하는 것은 불가능합니다. 대신, VDI(위에서 설명한 대로 raw 또는 VHD)를 생성한 다음 기존 볼륨에서 데이터를 복사할 수 있습니다. xe CLI를 사용하여 새 VDI의 가상 크기가 복사할 VDI보다 최소한 크거나 같도록 하십시오. 예를 들어 vdi-param-list 명령을 사용하여 해당 virtual-size 필드를 확인하여 이를 수행할 수 있습니다. 그런 다음 이 새 VDI를 VM에 연결하고 VM 내에서 선호하는 도구를 사용하여 데이터의 직접 블록 복사를 수행할 수 있습니다. 예를 들어 Windows의 표준 디스크 관리 도구 또는 Linux의 dd 명령을 사용할 수 있습니다. 새 볼륨이 VHD 볼륨인 경우, 빈 섹터를 디스크에 쓰지 않도록 하는 도구를 사용하십시오. 이 작업은 기본 스토리지 리포지토리에서 공간이 최적으로 사용되도록 보장할 수 있습니다. 파일 기반 복사 방식이 더 적합할 수 있습니다.
VHD 기반 및 QCOW2 기반 가상 디스크 이미지
VHD 및 QCOW2 이미지는 체인화될 수 있어 두 개의 VDI가 공통 데이터를 공유할 수 있습니다. VHD 기반 또는 QCOW2 기반 VM이 복제되는 경우, 결과 VM은 복제 시점에 공통 온디스크 데이터를 공유합니다. 각 VM은 VDI의 격리된 복사본 쓰기(copy-on-write) 버전에서 자체 변경 사항을 만듭니다. 이 기능을 통해 이러한 VM을 템플릿에서 빠르게 복제할 수 있어 새 VM의 매우 빠른 프로비저닝 및 배포가 용이합니다.
VM과 관련 VDI가 시간이 지남에 따라 복제되면 체인화된 VDI 트리가 생성됩니다. 체인의 VDI 중 하나가 삭제되면 XenServer는 불필요한 VDI를 제거하기 위해 체인의 다른 VDI를 합리화합니다. 이 병합(coalescing) 프로세스는 비동기적으로 실행됩니다. 회수되는 디스크 공간의 양과 프로세스 수행에 걸리는 시간은 VDI의 크기와 공유 데이터의 양에 따라 달라집니다. 자세한 내용은 (#notes-on-coalesce)을 참조하십시오.
VHD 및 QCOW2 형식 모두 씬 프로비저닝을 지원합니다. VM이 디스크에 데이터를 기록함에 따라 이미지 파일은 미세한 단위로 자동으로 확장됩니다. 파일 기반 VHD 및 GFS2 기반 QCOW2의 경우, 이 접근 방식은 VM 이미지 파일이 물리적 스토리지에서 필요한 만큼의 공간만 차지한다는 상당한 이점을 가집니다. LVM 기반 VHD의 경우, 기본 논리 볼륨 컨테이너는 VDI의 가상 크기에 맞게 크기가 조정되어야 합니다. 그러나 스냅샷 또는 복제가 발생하면 기본 복사본 쓰기 인스턴스 디스크의 사용되지 않는 공간이 회수됩니다. 두 동작의 차이점은 다음과 같이 설명할 수 있습니다.
-
LVM 기반 VHD 이미지의 경우, 체인 내의 차이 디스크 노드는 디스크에 기록된 만큼의 데이터만 소비합니다. 그러나 리프 노드(VDI 복제본)는 디스크의 가상 크기로 완전히 확장된 상태를 유지합니다. 스냅샷 리프 노드(VDI 스냅샷)는 사용하지 않을 때 축소된 상태를 유지하며, 축소된 할당을 보존하기 위해 읽기 전용으로 연결할 수 있습니다. 읽기-쓰기 모드로 연결된 스냅샷 노드는 연결 시 완전히 확장되고, 분리 시 축소됩니다.
-
파일 기반 VHD 및 GFS2 기반 QCOW2 이미지의 경우, 모든 노드는 기록된 만큼의 데이터만 소비합니다. 리프 노드 파일은 데이터가 활발하게 기록됨에 따라 데이터를 수용하기 위해 증가합니다. VM에 100GB VDI가 할당되고 OS가 설치되면, VDI 파일은 물리적으로 디스크의 OS 데이터 크기에 약간의 메타데이터 오버헤드를 더한 크기만 차지합니다.
단일 VHD 또는 QCOW2 템플릿을 기반으로 VM을 복제할 때, 각 자식 VM은 새 변경 사항이 새 VM에 기록되는 체인을 형성합니다. 이전 블록은 부모 템플릿에서 직접 읽습니다. 새 VM이 추가 템플릿으로 변환되고 더 많은 VM이 복제되면, 결과 체인으로 인해 성능이 저하됩니다. XenServer는 최대 체인 길이를 30으로 지원합니다. 합당한 이유 없이 이 한계에 접근하지 마십시오. 의심스러운 경우 XenCenter를 사용하여 VM을 “복사”하거나 vm-copy 명령을 사용하여 체인 길이를 0으로 재설정하십시오.
병합에 대한 참고 사항
SR에 대해 한 번에 하나의 병합 프로세스만 활성화됩니다. 이 프로세스 스레드는 SR 풀 코디네이터에서 실행됩니다. 병합 프로세스가 활성화되어 있는 동안, 델타 트리의 한 레벨에서 다른 레벨로 데이터가 병합되는 것을 수용하기 위해 SR에 추가 공간이 필요할 수 있습니다. 이 프로세스 후에 중복 레벨이 제거되고 공간이 확보됩니다.
풀 코디네이터에서 중요한 VM이 실행 중인 경우, 가끔 발생하는 느린 I/O를 완화하기 위해 다음 단계를 수행할 수 있습니다.
-
VM을 SR 풀 코디네이터가 아닌 다른 호스트로 마이그레이션합니다.
-
디스크 I/O 우선순위를 더 높은 수준으로 설정하고 스케줄러를 조정합니다. 자세한 내용은 (/ko-kr/xenserver/9/storage/manage.html#virtual-disk-io-request-prioritization)을 참조하십시오.