본문 바로가기

IT 일반

[컴퓨터구조] RAID 구성(레이드별 특징)

반응형

RAID란?

보조기억매체(디스크)의 속도가 주기억장치(메모리)나 CPU의 처리속도에 비해 현저히 느리기 때문에 이를 해결하기 위한 방안으로 RAID라는 개념이 고안되었다.



RAID는 Redundant Array of Independent Disks의 줄임말. 즉 독립디스크의 중복배열이다.

말그대로 여러개의 디스크를 병렬로(독립적으로) 구성하여 병렬적 I/O처리를 통해 처리속도를 높히고, 

디스크 중복 및 패리티 정보 등을 활용하여 데이터의 안전성을 높히는 기술이다.



RAID를 구성하게 되면 논리적으로는 하나의 디스크로 보여지지만, 실제로는 여러개의 물리적 디스크를 가진다.

(디스크 중복 및 패리티 디스크로 인해 용량은 줄어든다.)

예를들면 서버스펙이 600G*3(1.8T)이면 서버는 1.2T의 하나의 디스크를 가진 서버로 보이게 된다.



RAID는 그 구성방식에 따라 일반적로 RAID 0 ~ RAID 6로 구성되고,

각 레이드의 구성방식을 조합한 RAID 1+0, 0+1, RAID 5+0, RAID 6+0 등의 응용구성도 있다.

레이드 레벨이 높다고 해서 무조건 높은 수준이거나 좋은것은 아니고,

레벨별 특징이 있기 때문에 컴퓨팅 환경에 따라 적절한 레이드 레벨을 선택하면 된다.



일반적으로 데스크톱PC에서는 쉽게 볼수 없지만 서버급 컴퓨터의 경우 RAID 구성된 것을 쉽게 볼 수 있다.

아래에서 RAID의 각 구성방식에 대해 설명하겠다.


RAID 0(디스크 스트라이핑)


RAID 0는 분산된(여러개의) 디스크에 데이터를 분산하여 저장한다.

줄무늬 처럼 데이터를 저장한다고 해서 디스크 스트라이핑이라고도 한다.


다른 레이드 구성과는 다르게 중복 및 패리티 정보가 없고 분산만으로 구성된다.

즉 데이터 안전성에 대한 고려 없이 처리속도를 극대화하기 위한 방식이다.

(디스크에서 데이터를 쓰거나 읽는 시간이 매우 느리고 명령을 하는 시간이 매우 빠르다고 생각하면 이해하기 쉽다

첫번째 디스크에 쓰도록 지시하고 첫번째 디스크가 쓰는동안 2번째, 3번째 디스크에 쓰도록 지시하면 전체 IO시간을 줄일 수 있다.)


디스크는 최소 2개가 필요하고,

용량손실 없이 추가된 물리 디스크 용량 전체를 이용 가능하다.


데이터를 여러개의 디스크에 분산하여 저장하기 때문에, 읽기 및 쓰기 속도가 매우 빠르다.

그러나 중복이나 패리티가 없기 때문에 데이터 안전성이 취약하다.

(위의 예에서 보면 A1~5가 하나의 데이터라고 가정하면 2번째 디스크가 손상되면 A2, A5를 잃기 때문에 데이터를 읽을 수 없다.)

디스크를 추가할수록 처리속도는 더욱 빨라지나, 위험도 또한 증가한다.



RAID 1(디스크 미러링)


RAID 1은 디스크 미러링, 즉 복사(안전성, 무결성)에 중점을 두는 방식이다.

이름에서도 알 수 있듯이 동일 데이터를 미러링하여 이중으로 저장하기 때문에, 데이터 안전성이 높다.

디스크는 2N개로 구성되며, 용량은 물리 디스크 용량의 절반만 이용가능하다.
(실제로 사용하지 않는)RAID2를 제외하면 디스크 대비 가용량이 가장 작아 디스크 비용이 많이 발생한다.

단순히 보자면 속도개선이 없을 것 같지만 읽기에서 약간의 속도개선이 있다고 볼 수 있다.
읽기는 두 디스크 중 seek time이 작은 디스크에서 가져올 수 있기 때문에 단일 디스크 보다는 빠르고,
쓰기는 두 디스크에 모두 데이터를 써야 하지만 병렬로 기록할 수 있기 때문에 두 디스크 중 느린것의 속도로 처리 속도가 결정된다.
또 쓰기에서 다른 레이드구성과는 다르게 패티리 계산이 필요없기 때문에 쓰기 패널티가 없다.

데이터를 두개의 디스크에 복제해서 저장하기 때문에 
하나의 디스크가 고장나도 나머지 디스크를 이용하여 사용가능하고 복구가 용이하다



RAID 2


RAID 2는 해밍코드를 이용한 방식인데, 

해밍코드의 체크비트 만큼의 디스크가 추가로 필요하기 때문에 디스크가 매우 많이 필요해 효율성이 낮다.

해밍코드에서 최소 패리티비트수를 산출하는 산식이

(p는 패리티 수, d는 디스크 수) 이므로

2개의 디스크라 가정했을때 패리티 디스크(여분 디스크)는 2개

3~4개의 디스크라 가정했을때 패리티 디스크(여분 디스크)는 3개

로 매우 비효율적임을 알 수 있다.


RAID 2는 이론은 존재하지만 실제로 이용하지는 않는다.


RAID 3(패리티 비트)


RAID 3는 RAID2와 유사한데 해밍코드 대신 패리티 비트를 이용한다.

패리티 비트를 이용하기 때문에 1개의 여분 디스크만 있으면 되기 때문에 RAID 2에 비해 효율적이다.


디스크는 최소 3개 이상 필요하며,

용량은 패리티디스크(1개)를 제외한 용량만큼 사용가능하다.


특징적인 점은

RAID3에서는 비트나 바이트 단위로 데이터를 처리하며(raid2도 동일),

디스크의 각 비트에 대응대는 값에 대해 패리디디스크에 패리티 값이 저장된다.

데이터를 쓰거나 수정할때마다 패리티 디스크에 패리티 값을 계산하여 기록한다.


디스크 1개가 고장나도 패리티 값을 이용하여 정상사용이 가능하다.


속도 측면에서는

비트 단위로 데이터를 처리하기 때문에 모든 디스크가 IO에 참여할 확률이 높아지므로

큰 데이터 전송이 많은에는 성능적으로 유리하지만

트랜잭션 환경에서는 전송률이 낮아진다. 


RAID 4(패리티 블럭 공유)



RAID4는 RAID3와 같은 구조에 데이터를 비트 단위가 아닌 큰 블록 단위로 처리한다.

속도적인 측면을 제외하면 RAID3와 특징이 같다.

데이터가 블록단위로 저장되기 때문에 균등하게 저장되지 않아
IO처리에 모든 디스크가 참여할 확률이 낮으므로
큰 데이터 전송에는 다소 불리하고
트랜잭션 환경에서는 유리하다.


RAID 5()



RAID5는 디스크 개수 및 데이터 처리 단위는 RAID4와 같으나 패리티 정보를 디스크에 분산하여 저장한다.
패리티 정보는 라운드로빈(RR) 방식으로 디스크에 돌아가면서 순차적으로 저장한다.

RAID3~4에서는 하나의 디스크에 쓰기나 수정이 발행해도 패리티디스크를 수정해야 하므로
패리티 디스크의 IO병목이 발생할수 있고,
패리티 디스크의 사용빈도가 더 높기 때문에 디스크 수명도 비대칭적이게 된다.

이를 해결하기 위해 패리티 정보를 모든 디스크에 나누어 저장한다.

디스크 용량은 RAID4와 같이 1개의 디스크 용량만큼 작아진다.


RAID 6()


RAID6는 RAID5에서 한단계 더 나아가서 각 블록에 대해 패리티정보를 2개를 저장한다.

패리티 정보가 2개이므로 2개의 디스크 장애에도 사용이 가능하다.


다만 패리티가 2번 생성되므로 다른 RAID와 대비하여 쓰기 패털티가 조금 더 높고 

디스크 용량 2개의 디스크 용량이 작아진다.


즉 RAID5에 비해 데이터 가용성이 높아지는 반면

디스크 비용이 높아지고 쓰기 패널티가 일부 발생하게 된다.




기타 RAID 구성

raid 0+1


raid 1+0



이외에도 RAID 0+1(데이터 스트라이핑 후 미러링) RAID 1+0(데이터 미러링 후 스트라이핑) 등이 있다.

 * 복구 측면에서 미러링 후 스트라이핑이 편리함







전체적으로 살펴 볼 때

어느 RAID가 완벽하게 좋다고 할 수 없다.


큰 데이터 전송을 중점적으로 한다면 RAID3

데이터의 손실이 발생하면 안되는 구조에서는 RAID1나 RAID6, RAID1+0를 사용을 검토

일반적인 상황에서는 주로 RAID5를 구성하는 등

내가 구성할 시스템의 특성에 맞게 RAID를 선택하면 될 것 같다.

반응형