습관처럼

RAID 종류 및 특징 본문

CS/Linux&Unix

RAID 종류 및 특징

dev.wookii 2020. 6. 2. 09:45

RAID

Redundant Array Inexpensive Disk 혹은 Redundant Array Independent Disk 의 약자

처음 개념이 등장할 때는 여러개의 저렴한 디스크를 하나로 모아 고성능의 디스크처럼 사용하자는 생각에서 출발.

현재는 꼭 저렴한 디스크 라기 보다는 여분의 독립적인 디스크들을 하나로 모아 고성능 혹은 고가용성을 위한 개념이다.

 

RAID는 구현 방법에 따라 여러개의 RAID LEVEL 로 표현된다.

 

단일 디스크 I/O

아래 그림은 단일디스크에서 I/O가 발생하는 상황이다.

모든 데이터는 조각(block 혹은 cluster로 표현됨)으로 나뉘어 디스크에 쓰여지기 때문에 아래와 같은 그림이 된다.

1번 조각이 디스크에 쓰여지고 있는 동안 나머지 조각들은 대기를 하게 되고, 1번이 다 쓰여진 이후에 2번, 3번 순으로 쓰기가 이루어진다.

 

RAID 0 (Striping)

처음 개념이 등장했을때, 즉 여러개의 저렴한 디스크를 하나로 모아 고성능의 디스크로 사용하는 개념에서 나온 Level 이다. 

패리티(오류검출기능)이 없이 striping 된 형태를 말한다. 최소 2개 이상의 디스크를 필요로 하며 안정성보다는 고성능을 위해 사용된다.

 

RAID 0의 경우는 I/O가 일어날때 데이터를 여러 조각으로 나누어 각각의 디스크에 순서대로 저장하게 된다. 아래 그림처럼 디스크 2개로 RAID-0 을 구성했을 경우, 1번 조각이 DISK1에 쓰여지고 있을 동안 2번 조각은 기다리지 않고 바로 DISK2에 기록이 된다. 1번 조각의 쓰기가 끝나는대로 DISK1 에서는 3번조각이 쓰여지고 2번 조각의 쓰기가 끝나는대로 4번 조각의 쓰기가 일어나 단일디스크일 경우보다 거의 2배에 가까운 성능을 발휘한다. (물론 실제적으로 2배까지는 아님) 하지만 두 디스크중 하나의 디스크에 Fault가 발생했을 경우, 데이터의 절반을 날리게 되므로, 나머지 하나의 디스크도 사실상 못쓰게 된다. 관리 포인트가 하나 늘어남으로 인해 안정성은 떨어지게 되는 것이다.

 

장점 : 빠른 I/O 성능, 디스크가 N개로 구성될 경우 N개의 디스크 용량 모두를 활용할 수 있음.

단점 : 낮은 안정성

 

RAID 1 (Mirroring)

RAID 0과는 달리 안정성에 중점을 둔 RAID Level 이다. 아래 그림에서 보면 1번 조각이 디스크에 쓰여질 때 양쪽 디스크(DISK1, DISK2)에 동시에 동일한 데이터가 기록됨을 볼 수 있다.

 

RAID 1은 하나의 데이터를 양쪽 디스크에 동일하게 기록함으로써, 하나의 DISK에 Fault가 발생해도 나머지  하나의 디스크를 통해 데이터에 접근할 수 있는, 안정성을 강화한 방법이라고 보면 된다. 일반적으로 서버에 있어 OS가 설치되는 디스크에 필수적으로 사용되는 구성방법이다.

 

장점 : 높은 안정성. 일반적인 구성대비 읽기 성능에서 아주 조금 향상된성능을 보임.

단점 : 전체 디스크 용량에 비해 사용가능한 용량은 절반이 됨. 즉 높은 비용.

 

RAID 2

RAID2는 RAID 0처럼 스트라이핑 구성이지만 일부 디스크에는 오류 검사 및 수정을 위해 ECC(Error Correction Code) 정보가 저장된다. RAID 3~4에 비해 이점이 없으며 현재는 더 이상 사용되지 않는 구성이다.

 

단점 : ECC를 위한 드라이브가 손상될 경우는 문제가 발생할 수 있으며 패리티 정보를 하나의 하드 드라이브에 저장하는 RAID 4가 나오면서 폐기되었다.

 

최소 디스크 개수 : 3

용량 : (디스크 수 - 1) X 디스크 용량

 

RAID 3

 

RAID 3 구성은 스트라이핑을 사용하고 하나의 드라이브를 패리티 정보를 저장하는데 사용된다. 내장 된 ECC 정보는 오류를 감지하는 데 사용된다. 데이터 복구는 다른 드라이브에 기록 된 정보의 배타적 OR (XOR)을 계산하여 수행된다.

 

I/O 작업은 동시에 모든 드라이브를 처리하므로 RAID 3은 I/O를 중첩 할 수 없습니다. 이러한 이유 때문에 RAID 3는 수행시간이 긴 응용 프로그램이있는 단일 사용자 시스템에 가장 적합하다.

 

최소 디스크 개수 : 3

용량 : (디스크 수 - 1) X 디스크 용량

 

RAID 4 (Parity)

 

RAID 0(Striping)의 성능에 안정성을 결합한 방식이다. 데이터는 RAID 0에서처럼 디스크에 순차적으로 쓰여지기 때문에 성능 향상의 이점이 있고, 불안한 안정성을 위해 하나의 디스크를 Parity 전용 디스크로 사용한다. 전체 디스크가 N개로 구성되면 실제 사용가능한 디스크는 N-1개가 된다. RAID 5로 인해 잘 사용되지는 않지만 NetApp의 스토리지 구성에서는 자주 볼 수 있다.(NetApp은 RAID 4,6을 사용)

 

※ Parity 가 어떻게 사용되는건지에 대해~~

 - 아래 그림에서 1번,2번,3번 데이터와 맨 윗줄의 P 하나가 한 셋트가 된다.

정말 간단하게 설명하면 1번 데이터의 실제 값은 1, 2번 데이터의 실제값은 0, 3번 데이터의 실제값은 1이라고 가정해 보자 

(이렇게 가정할 수 있는 이유는 컴퓨터는 실제 0과 1로만 이루어진 데이터를 주고받기 때문이라고 보면 된다)

 

맨 윗줄의 Parity는 같은 위치에 있는 1~3번 데이터의 실제값을 확인하게 되는데, 1이 홀수개면 1, 1이 짝수개면 0이라는 값이 쓰여진다.

이경우 맨 첫번째 Parity는 1번 데이터는 1, 2번 데이터는 0, 3번 데이터는 1 -> 즉 1이 총 짝수개, 따라서 Parity값은 0이된다. 

이후에 만약 DISK 1이 손상되어 1번 데이터 부분이 없어진다고 해도, Parity 값을 이용하여 1번 데이터 부분에 어떤 값이 있는지 역추적이 가능하기 때문에 복구가 가능해 지는 것이다.

 

장점 : RAID 0 대비 높아진 안정성, RAID 1 대비 뛰어난 성능

단점 : Parity 전용 디스크에 부하가 걸릴 경우(Parity 연산을 해야하는 경우가 많을수록) 전체적인 성능이 저하됨. 읽기 보다는 쓰기에서 성능의 저하가 큼(디스크에 쓸 때는 Parity를 연산하여 기록해야 하기 때문에, 읽기때는 데이터만 읽으면 됨)

 

RAID 5

이 구성은 패리티가있는 블록 레벨 스트라이핑을 기반으로합니다. 패리티 정보는 각 디스크에 스트라이핑되므로 하나의 드라이브가 고장 나더라도 다른 어레이로 대체 작동 할 수 있다. 어레이 아키텍처는 읽기 및 쓰기 작업을 여러 드라이브로 확장이 가능하기 때문에 일반적으로 단일 드라이브의 성능보다 좋지만 RAID 0 어레이의 성능은 높지 않습니다. RAID 5는 3개 이상의 디스크가 필요하지만 성능상의 이유로 적어도 5 개의 디스크를 사용하는 것이 좋다고 한다.

 

RAID 5 어레이는 일반적으로 패리티 정보 작성과 관련된 성능 영향으로 인해 쓰기 집약적 시스템에서 사용하기에는 좋지 않은 선택이다. 디스크에 장애가 발생하면 RAID 5 어레이를 재구성하는 데 오랜 시간이 걸릴 수 있기 때문이다. 성능은 대개 재구성 시간 동안 저하되며 어레이는 재구성이 완료 될 때까지 추가 디스크 오류에 취약할 수 밖에 없다.

 

즉, RAID 5는 RAID 3,RAID 4 에서 별도의 패리티 정보 디스크를 사용함으로써 발생하는 문제점을 보완하는 방식으로 패리티 정보를 stripe로 구성된 디스크 내에서 처리하게 구성한다. 만약 1개의 디스크가 고장 나더라도 남은 디스크들이 복구를 할 수 있기 때문이다.

 

최소 디스크 개수 : 3

용량 : (디스크 수 - 1) X 디스크 용량

RAID 6

RAID 5 의 경우 Parity bit을 이용하여 어느정도의 안정성을 보장할 수 있었다.(1개의 디스크 Fault까지는 Parity를 이용하여 복구 가능)

 

하지만 1개의 디스크가 손상된 후, 바로 또 하나의 디스크가 손상이 된다면 전체 디스크의 데이터를 사용할 수 없게 되었다. 이에 하나의 디스크를 추가로 Parity로 사용, 즉 Parity bit을 두개의 디스크에 두어 안정성을 더욱 강화한 방법이다. 전체 디스크가 N개일 경우, 실제 사용가능한 디스크는 N-2 개가 된다.

 

장점 : RAID 4,5 대비 안정성 증가

단점 : RAID 4,5 대비 비용 증가

 

RAID 1+0, 0+1 (RAID10)

RAID 0과 1을 합쳐놓은 방법이다. RAID 0으로 구성된 디스크들을 다시 RAID 1로 구성하면 0+1, RAID 1로 구성된 디스크들을 다시 RAID 0으로 구성하면 1+0 이 된다. RAID 0과 1의 장점들을 취한 방법으로, striping(RAID 0)의 성능과, mirroring(RAID 1)의 안정성을 갖는 방법이다.

 

디스크 4개로 구성된 0+1, 1+0의 경우 서로간에 성능 차이는 없다고 보면 된다. 하지만 디스크가 4N 개(4의 배수)가 아닌 6개로 구성되어 있을 경우는 0+1보다 1+0의 안정성이 더 높아지므로, 실질적으로 1+0 을 많이 사용하고 있다.

 

※ 왜 디스크가 6개일때 1+0의 안정성이 높은가???

디스크 6개를 1+0으로 구성하게 되면 2+2+2 형태로 구성이 가능하다

(2개씩 mirror 구성 후 3개의 셋트를 다시 striping). 

디스크 6개를 0+1로 구성하게 되면 3+3 형태로 구성이 가능하다

(3개씩 striping 구성 후 2개의 셋트를 다시 mirror). 

 

이경우 2+2+2 상태에서는 각각의 셋트에서 디스크가 하나씩 Fault가 발생해도 전체 데이터를 사용할 수 있는 반면 3+3 상태에서는 각각의 셋트에서 디스크가 1개씩만 fault가 허용될뿐 추가적으로 Fault 가 발생할 경우 전체 데이터를 손실하게 된다. 즉 2+2+2 상태에서는 최대 3개까지 디스크 Fault를 커버 가능, 3+3 상태에서는 최대 2개까지 디스크 Fault를 커버 가능하게 된다. 

 

장점 : 성능, 탄력성 및 비용은 RAID의 주요 장점이라고 볼 수 있다. 여러 개의 하드 드라이브를 함께 설치하면 RAID를 사용하여 단일 하드 드라이브의 작업을 향상시킬 수 있으며 구성 방법에 따라 충돌 후 컴퓨터 속도와 안정성이 향상 될 수 있기 때문이다.

 

단점 : 중첩 된 RAID 레벨은 많은 수의 디스크가 필요하기 때문에 기존의 RAID 레벨보다 구현 비용이 비싸다. 대다수의 디스크가 중복성을 위해 사용되기 때문에 중첩 된 RAID의 경우 스토리지 비용도 높습니다. 하지만 중첩 된 RAID는 표준 RAID 레벨과 관련된 일부 안정성 문제를 극복하는 데 도움이되므로 비용에도 불구하고 널리 보급되어 사용되었다.

 

※ 번외편

 

- Hardware RAID :

하드웨어 적으로 RAID를 구성하는 방법이다. 별도의 RAID 컨트롤러를 사용하여 구성하게 되며, RAID 컨트롤러에서 디스크 구성을 한 후 OS에게 전달하는 방식으로 OS는 해당 디스크가 RAID 구성되어있는지 아닌지의 여부를 알 수가 없게된다.

 

                           OS가 RAID에 관여하지 않고, 또 별도의 하드웨어가 RAID관련 연산을 처리함으로 인해 Software RAID 방식보다 더 나은 성능을 기대할 수 있다. 단, RAID 컨트롤러를 이중화 하지 않을 경우, 컨트롤러의 손상만으로 디스크 전체를 사용할 수 없게 될 수가 있다.

 

- Software RAID :

OS가 RAID 구성을 지원하는 방식이다. OS는 장치에 연결된 모든 디스크를 인식할 수 있으며 OS에서 제공하는 기능을 통해 RAID 구성이 가능하다. 별도의 RAID 컨트롤러가 필요가 없기에 비용적인 측면에서 조금 더 나을 수 있지만, Hardware RAID방식에 비해 성능은 더 낮다.

 

                           Windows OS에서는 동적디스크를 사용하여 RAID 구성이 가능하며, UNIX 계열에서는 LVM을 사용하여 구성이 가능하다. (HP나 IBM쪽에서는 LVM을 통해 Mirror를 구성하는, 즉 Software RAID방식을 사용해도 Hardware RAID 방법과

                           비교하여 성능차이가 거의 없다고 한다. 하지만 Windows의 경우에는 Software RAID 방식을 사용하면 성능 저하가

                           크다. 성능저하 뿐만 아니라 복구시에 안정성도 낮음)