Storage Provisioning
스토리지 프로비저닝(provisioning)이란, 스토리지 리소스를 호스트의 요구 조건에 따라 할당하는 과정이다.
virtual provisioning은 가상화 기술을 이용해 스토리지를 공급하는 방법을 말한다.
Traditional storage provisioning
기존 방식 프로비저닝은 물리적 디스크를 논리적으로 그룹화하고, 요청된 RAID 레벨을 적용해 RAID 집합을 형성한다. RAID 집합의 드라이브 개수와 레벨이 RAID 집합의 가용성과 용량, 성능을 결정한다.
종류와 속도, 용량이 같은 드라이브로 RAID 집합을 구성하는것이 좋다. RAID 집합의 드라이브 중 용량이 다른 드라이브가 있다면 작은 용량에 맞춰 RAID 집합의 전체 용량을 구성하게 된다. 이와 비슷하게 RPM이 이 다르면 낮은 드라이브에 맞춰 전체 성능이 떨어진다.
RAID 집합은 드라이브 용량이 합해져 대용량 저장 공간을 갖는다. 이런 가용 저장 공간을 파티셔닝 해 logical unit을 만들고, 호스트의 요구사항에 따라 할당한다.
논리적 유닛은 집합에 속한 물리적 디스크에 고르게 분포된다. RAID 집합에서 만들어진 각 논리적 유닛은 논리적 유닛 넘버(LUN, Logical Unit Number)라는 고유 ID를 부여받는다. LUN은 호스트로부터 RAID 집합이 어떻게 구성되어있는지 감추어준다. 전통적 방식의 LUN을 가상화 프로비저닝 기법으로 생성한 LUN과 구별하기 위해 Thick LUN 이라고도 한다.
LUN을 구성하고 호스트에 할당 할 때는 LUN을 찾는 버스 스캔이 필요하다. OS에게 LUN은 raw disk로 보이고, 이를 사용하려면 파일 시스템으로 포맷하고 마운트 해야 한다.
가상 호스트 환경에서는 LUN이 하이퍼바이저에게 할당된다. 하이퍼바이저도 LUN을 raw disk로 인식한다. 이 디스크에 하이퍼바이저 파일 시스템을 설정하고, 가상 디스크를 생성하고, 가상 디스크를 가상 머신에 할당하면 가상 머신에 raw disk로 나타난다. 여기서는 LUN 공간을 여러 가상 머신에 공유할 수 있다.
가상 머신은 스토리지 시스템의 LUN을 직접 접근할 수도 있다. 이렇게 하면 전체 LUN이 단일 가상 머신에 할당된다. 가상 머신에서 실행하는 애플리케이션 응답성이 중요하고 다른 가상 머신과 스토리지를 공유하는게 안좋은 경우 이렇게 구성하는것이 좋다. 가상 머신과 물리적 머신이 결합된 경우엔 물리적 머신이 접근하고 있는 LUN을 가상 머신도 접근하게 된다.
Meta LUN(Logical Unit Number)
메타 LUN은 용량을 추가하거나 성능을 높이기 위해 LUN을 확장하는 방법이다.
2개 이상의 LUN을 합해 만들며, 베이스 LUN 1개와 1개 이상의 컴포넌트 LUN으로 구성된다.
concatenated 방식이나 striping 방식을 사용할 수 있다.
concatenated 방식에서, 컴포넌트 LUN의 추가 용량은 베이스 LUN의 용량에 더해진다. 컴포넌트 LUN의 크기가 베이스 LUN의 크기와 같지 않아도 된다.
이어 붙여진(concatenated) 메타 LUN은 모두 보호되거나(패리티 혹은 미러링) 모두 보호되지 않아야 한다(RAID 0).
메타 LUN 안에서 여러 RAID 유형을 섞어서 사용할 수 있다. 예를 들어 RAID 1/0 LUN은 RAID 5 LUN과 결합되어 사용될 수 있다. 하지만 RAID 0 LUN은 RAID 0 LUN과만 concatenated 될 수 있다.
concatenated 된 LUN의 구성은 빠르지만 성능상의 이점은 없다.
striping 방식에서, 베이스 LUN의 데이터를 베이스 LUN과 컴포넌트 LUN에 스트라이핑 한다. 스트라이프 확장에서 모든 LUN은 같은 용량이며 같은 RAID 레벨을 가져야 한다.
striping 확장은 스트라이핑 드라이브의 개수가 늘어나기 때문에 성능이 향상된다.
두 방식 모두 모든 LUN의 디스크 드라이브 유형이 같아야 한다. 즉, 모두 FC거나 모두 ATA여야 한다.
Virtual Storage Provisioning
가상화 프로비저닝은 스토리지 어레이에 물리적으로 할당된 것보다 많은 용량의 LUN을 만들고 제공 할 수 있다. 가상화 프로비저닝으로 만들어진 LUN을 Thin LUN이라고도 한다.
Thin LUN은 호스트에 제공될 때 필요한 모든 물리적 스토리지를 할당하지 않아도 된다. 물리적 스토리지는 공유 풀에서 필요할 때 호스트에게 할당된다. 공유 풀(shared pool)은 물리 디스크로 구성되어 있다.
가상화 프로비저닝의 공유 풀은 LUN의 RAID 그룹과 유사하다. RAID 그룹처럼 하나의 RAID 보호 레벨을 제공한다. 하지만 RAID 그룹과 달리 많은 개수의 드라이브를 포함 할 수 있다. 공유 풀은 단일 종류와 여러 종류의 드라이브를 모두 지원한다(플래시, FC, SAS, SATA 등).
가상화 프로비저닝은 스토리지를 좀 더 효율적으로 호스트에게 할당해줄 수 있고, 실제 용량보다 더 큰 용량도 할당 할 수 있다. 공유 풀과 Thin LUN은 호스트의 요청에 따라 쉽게 확장할수도 있다. 스토리지 어레이에 여러개의 공유 풀을 만들 수도 있고, 공유 풀을 여러 Thin LUN이 공유할 수도 있다.
Traditional vs Virtual Storage Provisioning
보통 예상 스토리지 용량에 따라 스토리지를 할당하는데, LUN 용량이 떨어질 때마다 프로비저닝 하는것과 애플리케이션의 중단을 막기 위해서 실제보다 과도하게 프로비저닝이 될 확률이 높다.
가상화 프로비저닝이 이런 비용 비효율적 문제를 해결 할 수 있다.
Thin LUN, Thick LUN Use Case
Thin LUN은 성능 변동을 감수 할 수 있는 애플리케이션에 적합하다. 어떤 경우엔 여러 풀의 여러 디스크를 사용해 스트라이핑해 성능을 개선 할 수도 있다. 그러나 씬 LUN 여럿이 공유 스토리지 리소스에 대해 경쟁하기 때문에 성능이 저하 될 수도 있다.
Thin LUN은 최상의 저장 효율성을 제공하며 공간 사용을 예측하기 어려운 경우에도 적합하다.
Thick LUN은 예측 가능한 성능이 필요한 애플리케이션에 적합하다. 데이터 위치를 정확히 알 수 있고, 워크로드에 경쟁이 있는 경우 다른 RAID 그룹에 LUN을 만들 수 있다.
현 스토리지 어레이에는 Thin LUN과 Thick LUN을 함께 사용할 수도 있고, 필요에 따라 데이터를 옮길 수도 있다.
LUN Masking
LUN 마스킹은 호스트가 접근할 수 있는 LUN을 정의해 데이터 접근을 제한하는 프로세스다. 스토리지 어레이에 구현되며 호스트의 접근을 적절히 제어해 권한 밖의 접근이나 잘못된 사용을 막아준다.
'OS & Container > Storage' 카테고리의 다른 글
fstrim과 ssd, thin-provisioning (1) | 2023.01.11 |
---|---|
DAS, SAN (0) | 2022.03.31 |
스토리지 시스템 컴포넌트 (0) | 2022.03.21 |
RAID 정리, 핫 스페어 (0) | 2022.03.18 |
RAID와 디스크 성능 (0) | 2022.03.16 |