[출처] [RAID] RAID 종류|작성자 카라

RAID는 용량, 성능, 내결함성을 높이기위해 사용되는 디스크의 사용방법이다.

* RAID별 특징

자주 사용되는 RAID로는 RAID0, RAID1, RAID5, RAID10 정도가 있다. 물론 이외에도 RAID2, 3, 4, 01, 6 등 많다. 안써서 그렇지..ㅡ,ㅡ

* RAID0 – Stripe
* RAID1 – Mirror
* RAID5 – Parity Stripe
* RAID10 – Stripe Mirror

 

*. 스트라이핑(Striping)

대부분의 RAID는 데이터 스트라이핑을 사용한다.
데이터 스트라이핑은 두개 이상의 디스크를 하나의 디스크 처럼 사용하는 방식인데 첫번째 데이터 조각은 첫번째 디스크에 두번째 데이터조각은 두번째 디스크에 데이터를 저장한다.
여기서 데이터 조각을 stripes(스트라이프) or 청크(Chunks)라고 하며, 수동구성이 가능하다면 크기는 Windows2000에서 지원한 가능한 가장 큰 I/O크기인 64K를 사용하는것이 좋다.

사용자 삽입 이미지

* RAID 0

RAID 0은 기본적인 데이터 스트라이핑만으로 이루어진 RAID이며, 묶인 디스크들은 Stripes를 라운드로빈 방식으로 저장하게 된다.

그림은 위의 데이터 스트라이핑과 같다.

>> 한개의 파일이 1,2,3,4,5 번 데이터 조각을 합해서 한개의 파일이라고 한다면, 위와같이 한개의 파일이 모든 디스크에 나뉘어 저장 되게 된다
즉 1~5 번 디스크중 한개만 손상이 되어도 파일은 사용할 수 없게 된다.

그러므로, 데이터 용으로는 불안해서 절대로 못쓴다ㅡ,ㅡ  간이 충분히 크다고 생각하는 사람은 써도 괜찮다..ㅡ.ㅡ

※ 구성 최소 디스크 개수 : 2개
※ 실 사용가능 디스크 용량 : 100%

 

* RAID 1

흔히 미러링이라도 말하는 이 방식은 복사해 놓은 듯한 디스크 2장으로 이루어지며 내결함성을 높이기 위한 가장 기본이 되는 RAID이다.

완전하게 동일한 자료를 가지고 있으므로, 2개의 디스크가 다를경우 작은 크기의 디스크 용량으로 인식되며, 쓰기 속도 또한 느린쪽의 쓰기가 끝나는 시점이 기준이다. 따라서 동일한 성능의 디스크로 구성하는것이 좋다.

디스크 하나가 손상 되는것은 괜찮겠죠?

※ 구성 최소 디스크 개수 : 2개
※ 실 사용가능 디스크 용량 : 100%

사용자 삽입 이미지

* RAID 5

RAID 0에 parity를 사용하여 내결함성을 향상 시킨 방식이다(Parity도 스트라이핑 시킴).

각디스크를 비트단위로 패리티를 계산하여 임의의 1장의 디스크를 패리티 비트를 위해 사용한다.

1개의 디스크가 고장난것은 패리티라는것을 이용해서 거뜬히 커버한다. 2장이 고장나면? 데이터는 사라진다..ㅡ,.ㅡ;;

그리고 쓰기 속도가 RAID중 최악의 성능을 자랑한다. 한번쓰려면 2번 을 읽고 2번을 쓰는 4번의 IO 때문에…

※ 구성 최소 디스크 개수 : 3개  왜냐면. 2장 (striping) + 1장 (parity) = 3장
※ 실 사용가능 디스크 용량 : 전체구성장수 – 1장.   왜냐면 1장분량에는 패리티가 들어가기 때문에..

 

* RAID 10

RAID 0과 RAID1을 섞어 놓은 방식이다. 스트라이핑 시켜놓은 것을 한장씩 미러링한 것.

RAID 01과는 엄연히 다르므로 잘 구분하길 바란다.

. RAID01 : 요건 미러링해 놓은 디스크들을 스트라이핑 시켜 놓은것이다.

두 방식의 금액은 같은데 내결함성, 복구능력, 속도 사그리 몽땅 RAID10이 더 좋으므로 요건 암두 안쓴다.

※ 구성 최소 디스크 개수 : 4장.. 왜냐면  2장(striping) * 2(미러링) = 4
※ 실 사용가능 디스크 용량 : 50%

 

-. RAID 10

사용자 삽입 이미지

* 내결함성 : 1-6번, 2-7번, 3-8번, 4-9번, 5-10 번이 미러링이 된다. 그러므로 이 레이드가 깨지려면 쌍을 이루고 있는 디스크가 동시에 깨져야 데이터를 잃게 된다.

※ 예) 1, 7, 3,4,10번 디스크가 장애가 났다면.  나머지  6, 2, 8, 9, 5 번으로 완전하게 데이터가 보존된다.

1장의 디스크의 고장으로는 데이터가 손실 되지 않으며, 2번째 장이 고장 났을때, 데이터가 손실될 경우는?

첫번째 고장난 디스크를 미러해 놓은 디스크일때..9장중 1장.

 

– RAID01

사용자 삽입 이미지

* 내결함성 : 윗쪽을 1그룹, 아래쪽을 2그룹이라 할때, 두 그룹에 각자 데이터 스트라이핑을 했기 때문에 1그룹에서 1개 2그룹에서 1개만 깨지면 아래 레이드는 데이터를 잃게 된다. raid0 의 특성을 생각하라.

※ 역시 1장의 디스크 고장으로는 데이터가 손실 되지 않으며, 2번째 장이 고장 났을때, 데이터가손실될 경우는..?

첫번째 디스크와 다른 그룹의 디스크 일때..  9장중 5장

근데 RAID 10이 내결함성이 좋다는건 알겠죠?

* 복구 측면에서 본다면, RAID 10은 깨진 디스크만 복구 하면 된다. (1장 깨지면 1장만 복구)

RAID 01 은 깨진 디스크가 있는 그룹을 복구 해야 한다.( 1장 깨지면 5장 복구)

 

읽기 성능

* 읽기 성능은 간단히 RAID 를 구성하고 있는 디스크의 개수만큼의 성능을 낸다 할수 있다.

* 성능을 높이고 싶으면 구성하는 디스크의 개수를 늘리면 된다.

* 읽기 성능은 RAID 컨트롤러의 영향을 거의 받지 않는다고 봐도 무방하다.

* 디스크 1장의 I/O 성능은 초당 125 라고 볼때,

– RAID 0   : 10개의 디스크로 구성하였다면  초당 1250  IO를 처리한다.(125 * 10개.이론상임.  실제로는 이렇게 안나온다.; )
– RAID 1   : 125 * 2 = 250 /s
– RAID 5   : 10장으로 구성하였을때  125 * 10 = 1250
– RAID 10 : 10장으로 구성하였다면  125 * 10 = 1250

 

쓰기 성능

* 한번의 쓰기에 대한 각각 RAID들은 다음과 같은 행동을 하게 된다.

– RAID 0 : 10장에 나누어 쓴다.
– RAID 1 : 2장의 디스크에 동일한 내용을 쓴다. 즉, 2배 분량을 써야 한다.
– RAID 5 : 데이터 스트라이프를 읽는다. 패리티 스트라이프를 읽는다. 데이터스트라이프를 쓴다. 패리티스트라이프를 쓴다.

* 한번의 쓰기에 대해 4번의 작업이 필요하게 된다.

* 물론 중간에 패리티비트계산도 하지만, 디스크IO속도에 비하면 요거 계산속도는 새발의 피도 아니다…ㅡ,ㅡ

– RAID 10 : 10장에 2배 분량을 쓴다.

* 따라서, 쓰기 성능순으로 나열해보면

– RAID0 > RAID 10 > RAID 1 > RAID 5 순이 되겠다.

 

** 디스크 개수 결정법

1. 서버를 뚫어지게 쳐다본다.

2. 결과물로  읽기 I/O 횟수 / 초당,  쓰기 I/O 횟수 초당 을 알아낸다.

3. 2번 결과물의 수준으로 I/O 가 행해 졌을때, 아래식으로 디스크 개수 대비 장당 I/O 수를 유추해 낸다.

– RAID 0 : (읽기 + 쓰기) / 디스크수
– RAID 1 : (읽기 + (2 * 쓰기)) / 2
– RAID 5 : (읽기 + (4 * 쓰기)) / 디스크수
– RAID 10 : (읽기 + (2 * 쓰기)) /디스크수

4. 디스크당 IO의 적절한 수준에 맞추어 RAID와 디스크의 크기를 결정한다.

디스크의 작업중 10%이상의 쓰기 작업일 경우, 많은 오버헤드가 생기므로 RAID5에는 적합하지 않다.