System Engineering/DB&Storage

Storage #1. JBOD부터 RAID 6까지

ZunoXI 2023. 5. 22.

 

개요

 

인프라분야의 업무를 하다 보면 디스크를 구성하는 것에 있어 raid0 구성, raid5 구성 등의 용어를 듣게 된다. 순간순간 잠깐 찾아보면 휘발성 정보가 되는 것 같아 해당 포스트를 작성하며 스스로 디스크 구성방법에 대해 정리해보고자 한다.

 

참고

- 사진 출처 : https://www.stevenjlee.net/2020/03/01/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-raid-%EA%B5%AC%ED%98%84-%EB%B0%A9%EC%8B%9D%EA%B3%BC-%EC%A2%85%EB%A5%98%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC/

 

[이해하기] RAID – 구현 방식과 종류에 대하여 | STEVEN J. LEE

RAID (Redundant Array of Inexpensive/Independent Disk) 란, 여러 개의 저장 장치 (예> 하드디스크 드라이브 등) 를 묶어서 하나의 고용량/고성능 저장 장치 ‘처럼’ 사용하는 기술이라고 할 수 있습니다.

www.stevenjlee.net

 

 

RAID?

 

RAID란 Redundant Array of Inexpensive Disks의 약자로, 한 개 이상의 디스크를 이용하여 하나의 논리 디스크를 구성하는 기술이다. RAID를 구성을 하는 여러 가지 방법이 있고 그 종류별로 장점과 단점을 갖고 있는데, 본 포스팅에서는 해당 차이점들에 대해 기술한다.

 

구성방법

 

서버의 경우 RAID를 구성하는 방법은 서버의 레이드 컨트롤러를 이용하여 BIOS영역에서도 구성하는 것이 일반적이지만 벤더별 Raid CLI 툴을 이용하여 OS 영역서도 구성할 수 있다. 또한, 소프트 레이드 구성방법을 사용해서 OS에서 지원하는 소프트웨어를 이용하여 하드웨어 Raid 컨트롤러 유무와 관계없이 RAID도 구성이 가능하다. 내가 경험했던 소규모 인프라 구축 환경에서는 디스크 추가 및 교체 후 부팅과정에서 벤더 bios 접속하여 구성했었고, 대규모 환경에서는 OS에서 벤더 Raid CLI를 이용해서 컨트롤했던 경험도 있다. 구성하는 방법이 다양하다라는 점을 참고하면 좋을 것 같다.

 


 

 

RAID 종류

 

RAID 0 

 

RAID 0로 구성하는 것은 여러 개의 디스크를 구성할 때 한 개의 논리적인 볼륨으로 구성하고 데이터를 쓸 때 스트라이핑 기술을 사용하여 구성된 디스크에 분산하여 저장한다. 이러한 구성 덕분에 동시에 디스크를 읽고 쓸 수 있다는 점에서 전체적인 성능의 향상을 가져다주지만, 디스크 한 개의 장애가 발생한다면 전체 데이터를 모두 날릴 가능성이 있다.

 

디스크 저장방식은 a,b,c,d..가 저장될 때, 두 개의 디스크가 RAID 0 구성이 되어있다면 각각 ac, bd가 번갈아가며 저장된다.

 

 

 

JBOD

 

JBOD은 Just a Bunch Of Disks의 약자고 RAID 0 방식과 유사하게 여러 개의 디스크를 하나의 논리적인 볼륨으로 구성하는 부분은 동일하지만 분산하여 저장하는 RAID 0 과는 달리 그저 이어 붙여 용량을 확장하는 개념이다. 따라서 읽고/쓰기가 각 드라이브에서 수행되어 성능이 특별히 향상되지는 않고 디스크 장애가 난경우 해당 디스크에만 접근이 되지 않고 다른 디스크는 접근이 가능하다. 

 

디스크 저장방식은 데이터가 먼저 저장되기 시작한 디스크부터 데이터가 저장되고 용량이 모두 찰때까지 다른 디스크에는 저장되지 않는 것이 일반적이다. 즉, 데이터는 순차적으로 디스크에 저장된다. 

 

 

RAID 1

 

RAID 1 은 미러링 기술을 사용하여 데이터를 복제하여 저장하는 방식이다. 이 방식을 사용하면 각 데이터 블록이 최소한 두 개의 디스크에 복제 저장되어야 하기 때문에 최소 두 개의 디스크로 구성되어야 하나 홀수 구성은 제한된다. 구성의 예를 들자면 2TB짜리 디스크 2개를 이용하여 RAID 1 level로 논리볼륨을 구성하면 총 사용가능한 용량은 2TB이다. 또한, 2TB 디스크 4개를 이용하여 RAID1로 구성해도 한 개의 디스크 용량인 2TB가 총 사용가능한 용량이라고 볼 수 있다. 이는 모든 디스크에 동일한 데이터가 복제되기 때문이다.

 

위와 같이 2TB디스크 4개를 구성한 경우에는 이론적으로 디스크 3개의 장애까지는 데이터에 접근할 수 있다. (물론 언제 남은 디스크가 장애 날지 모르기 때문에 빠른 점검이 필요하다...) 극단적으로 안정성을 추구하는 경우에는 이처럼 여러 개의 짝수개 디스크를 하나의 RAID1 구성으로 묶어 사용이 가능하다. 

 

 

RAID 01 (0+1), RAID 10 (1+0)

 

Raid 01은 Raid1의 미러링기술을 사용하여 안정성을 더하고 Raid0 스트라이핑 기술을 이용해서 성능향상을 얻어가는 레이드 레벨이다. 일반적으로 디스크 두 개를 Raid0으로 묶고, 묶인 Raid0 두 개의 논리볼륨을 다시 Raid1로 미러링으로 묶게 되며 최소 4개의 디스크 구성이 필요하다. 이 경우 1TB 4개의 디스크를 사용하여 RAID01으로 구성하면 총 2TB의 총용량이 가용하다고 볼 수 있다. 이 경우는 Raid 10은 고성능과 안정성을 제공하지만 용량에 있어서 손해 보는 부분(디스크 전체 용량의 50% 사용가능)이 있기 때문에 이 부분을 고려하여 사용이 필요하다.

 

 

 

위 내용과 반대로 raid1로 먼저 구성하고 이를 0으로 묶는 경우는 RAID10(1+0) 이라고 지칭한다. RAID10은 RAID01보다 안정성이 더 좋다. 왜냐하면 먼저 미러링으로 볼륨을 묶고 스트라이핑 처리하게 되면 동시에 각 Raid 1으로 묶인 볼륨에서 디스크가 하나씩 장애 나도 조치가 가능하다. RAID 01의 경우는 RAID 0로 묶인 논리볼륨들에서 각각 디스크가 하나씩 폴트가 발생하면 복구가 불가능하기 때문이다.. 그러므로 둘 중에는 RAID 10이 더 안정성이 좋다고 볼 수 있다.

 

 

RAID 5

 

Raid 5는 패리티 정보를 사용하여 데이터 복구를 지원하는 방법이다. 스트라이프와 패리티 기술을 모두 사용하는 방식이고 기본적으로는 스트라이프 방식으로 디스크에 저장하고 패리티 정보를는각 디스크에 분산 저장하는 방식이다. 따라서 아래와 같이 최소 3개의 디스크가 필요하고 실제 가용 용량은 같은 용량의 디스크 총개수가 n개일 때, n개에서 1개 디스크 용량을 제외한 값이다. 

 

예를 들어 2TB짜리 디스크 4개로 RAID 5 구성 시, 실제 총 사용가용 용량은 6TB 이다. 이는 RAID10보다 용량 효율이 더 좋기 때문에 일반적인 환경에서 가장 많이 사용되는 레이드 레벨로 알고 있다. RAID 2, RAID 3, RAID 4 의 레이드 레벨도 있지만 현재는 여려가지 측면에서 RAID5가 더 합리적이기 때문에 RAID5를 사용하는 추세이다.

 

 

RAID 6

 

RAID 6는 RAID 5와 거의 유사한 방식이고 기존 RAID5에서 패리티 정보의 저장을 위해 디스크 1개를 사용했던 것에 비해 디스크 2개에 패리티 정보를 저장하는 방식이다. 그렇기 때문에 최소 디스크 구성은 4개이며 가용용량은 같은 용량의 디스크 총개수가 n개일 때, n개에서 2개 디스크 용량을 제외한 값이다. 

 

 

 

예를 들어 2TB짜리 디스크 4개로 RAID 6 구성 시, 실제 총 사용가용 용량은 4TB 이다. 이는 RAID5보다 용량 효율이 떨어지더라도 안정성을 더 추구하는 경우 사용되는 레이드 레벨이다.

 

 

 

반응형

댓글