본문 바로가기

Programming

[System] Raid에 대해서 알아보자

마푸입니다. 


이전에 작성한 포스트를 열심히 옮기고 있는데요





쓰다보니 점점 기억이 새록새록 나는게 더 좋은거 같네요 

(* 업무시간에 빈둥거리기 위해서가 아닙니다!!)


레이드 시스템은 솔직히 DBA는 잘 몰라도 됩니다. 

최신 트랜드가 어떤지도 모르고 세팅하는 방법을 알아도 써먹을이 1%도 없을 것 같지....만!! 


영세한 업체나 까칠하신 유관부서 장님이 계시다면 역시나 "대략 이런 것이다" 라고만 알 면 될것 같습니다. 


아래는 2010년 7월 2일날 작성한 포스트입니다.



간만에 mssql 메뉴얼을 다시 읽기 시작했습니다.

읽은지도 오래되었고, mysql과 정리를 할려고 하니 다시 보게 되었네요 ㅋ;;

 

사실 저는 DBA로써의 함량이 많이 부족한거 같습니다. 사실, SE파트에 대한 업무를 거의 모르고 지내고 있으니 말이죠!!

 

보안이나, Raid 등의 기술적인 부분은 그냥 수박의 겉핡기 수준으로 밖에 모르니...

허나, 그마저도 잘 까먹어서 이렇게 포스팅으로 남기려 합니다.

 

Raid에 대한 막연한 느낌은

'여러개의 Disk를 하나의 논리 disk로 구성해주는 기술' 이라고 생각했습니다.

 

딱딱한 정의보다는(*물런 SE를 목표로 하시는분들은 더 세부적으로 짚고 넘어가셔야합니다.)

그냥 이런거다.. 라고 생각하는것이지요~

(* 사실 저는 이러한 구상법을 영어공부에 많이 쓰고있습니다. 딱히 정의하지않고 두리뭉실하게 혹은 그와 비슷한 느낌에 대칭해서 외우기 때문에 나중에 더 도움이 되리라 믿고 있습죠!!)

 

그럼, 각설하고 본론으로 들어가 볼까요

 

Raid는 많은 구성이 있습니다.

 

1. RAID-0 : Striping(스트라이핑)

2. RAID-1 : Mirroring(미러링)

3. RAID-2 : Hamming Encoding(헤밍 인코딩)

4. RAID-3 ~ 5 : Parity RAID(페러티 레이드)

  a. RAID-3 : Virtual Disk Blocks(가상 디스크 블럭)

  b. RAID-4 : Dedicated Parity Region(전용 패러티 영역)

  c. RAID-5 : Striped Parity Region(스트라이핑 된 패러티 영역)

 

이런식으로 구분됩니다. 사실 종류가 무척 많지요 ^^;;

각각의 특징과 장,단점은 존재하나 흔히 실무에서 사용하는 Raid는

 

RAID-10과 RAID-5입니다.

 

그럼 다른거는?? (* 네 여기서 다루지 않도록 하겠습니다. ;; 내용도 어렵고 -- 사실 저도 잘 이해를 못하는 부분도 있구요 ^^;; 흥미가 있으시거나 SE를 목표로 하시는 분은 반듯이 짚고 넘어 가시길 바랍니다.)

 

RAID-10은 위에서 나열한 종류에 빠져있습니다. 눈치 빠르신 분들은 벌써 알고 계시겠지만 이것은

RAID-1과 RAID-0을 합친것입니다.

 

단, 순서가 중요하다는것이 팁입니다. 일반적으로 RAID 0과 1은 서로의 장단점을 보완하기위해서 한 System에서 함께 구축됩니다. 역시나 독립적인 기술이므로 어느 기술이 먼저 쓰였냐에 따라서 그 시스템은 판이하게 달라집니다. 즉, RAID-10은 "스트라이핑된 미러링"기술입니다.

(* 머리에 쥐가 날지도 모르겠습니다만, 그냥 그런가 보다 하고 아래서 이야기하도록 하겠습니다.)

 

RAID-0부터 하나씩 볼까요 ^^;

 

1. RAID-0

 

0는 위에서도 알수있듯이 Striping기술이 적용된 RAID 기술입니다.

Striping를 영어사전에서 찾아보면 '줄무늬붙임', '줄무늬 디자인'따위로 나옵니다.

즉, 완성된 Disk의 형태가 줄무늬처럼 보인다는것이지요 ^^

 

아래의 URL을 보면 서버에서 보내주는 DATA BLOCK을 각 물리 Disk에 동일하게 나뉘어 담습니다. 완성된 Disk의 형태를 보면 줄무늬 모양이 되겠지요 실제로 논리 디스크는 이것을 다 하나로 붙은것처럼 뒤죽박죽으로 데이터가 들어가게 됩니다.

 

물리적 Disk가 병렬로 묶여져서 데이터를 주고 받기 때문에 한디스크에서는 읽기작업이 그리고 나머지 디스크에서는 쓰기작업을 진행하는 식으로 운영이 가능합니다. 즉, 단일 Disk에 비해서 매우 빠른 속도를 낼 수 있다는것이지요!!

 

URL :: http://www.acnc.com/04_01_00.html

 

2. RAID-1

 

RAID-1은 미러링을 이용한 RAID 기술입니다. 즉, 복제와 비슷한 방식으로 데이터가 저장되는 것이지요. 즉, 여러개의 물리 DISK를 사용해서 하나의 논리 Disk로 사용하더라도 복제작업으로 인해 Disk의 양이 실제로는 50%뿐이 사용 할 수 있습니다.

 

또한, 앞서 말씀한것처럼 복제와 비슷한 방식이라는 의미는 읽기과정에서 실제 물리 Disk A와 이를 미리링한 Disk B의 읽기에 대한 응답이 양쪽 어느곳이나 빠른곳에서의 데이터를 처리하게 됩니다. 즉, Disk의 I/O분산 처리의 효과를 얻을 수 있습니다. 또한, 이는 Disk I/O의 집중도를 낮춰주므로 실제 Disk의 수명을 오랫동안 유지 할 수 있는 결과를 얻을 수 있습니다.

 

그른데~ 장점이 있다면 단점이 있다는거 RAID-1의 경우 쓰기작업(미러링)이 단일 Disk에 비해 2배가 소모됩니다. 즉, 정말 느리겟지요 ^^;;

 

URL :: http://www.acnc.com/04_01_01.html

 

# TIP 1

 

RAID-0의 경우 단순히 들어오는 DATA를 쪼개서 각 물리 Disk에 저장하는 방식을 가집니다. 즉, Disk의 장애가 발생했을때는 복구 솔루션이 전혀없다는것이지요!! 즉, RAID-0은 효율적인 DATA의 저장 방식의 기술입니다. 이는 다른 RAID의 방식과 결합했을때 큰 효과를 발생할 수 있다는 것이지요

 

RAID-1의 경우 예상한것처럼 물리 Disk의 DATA의 결함이 발생하였을때 미러된 Disk가 있다면 대부분이 복구가 가능하게된다. 앞서 이야기한 장점을 제외한다면, 우선 각 Disk에 복제작업을 진행하기 때문에 쓰기 작업이 매우 느리게 진행됩니다. 재동기화의 경우에서도 장애가 발생한 Disk의 교환의 경우에 해당 블럭을 모두 복사해야만 정상적인 운영이 가능하게 됩니다.

 

 

3. RAID-10

 

자~ 그럼 이제 RAID의 기술을 짬뽕시켜보겠습니다. 사실 RAID는 10과 01은 다른 기술입니다. 즉, 0과 1이합쳐진 기술이긴하지만 어느것이 선행이냐에 따라서 표기법이 다른 것이지요. 즉, 10은 RAID-1을 먼저 수행한후에 RAID-0을 진행한 것입니다.

 

즉, 두 기술의 차이는 아래와 같습니다.

 

 

 

차이점에 대해서 예문으로 자세히 설명한 Blog가있어 인용하도록 하겠습니다.

 

------------------------------------------------------------------------------------------

RAID0+1
RAID0+1로 10개의 HDD를 묶는다고 하면,
1) RAID0으로 5개씩 묶습니다.
RAID0[1,2,3,4,5], RAID0[6,7,8,9,10] 이렇게 2개의 묶음을 R0, R1이라고 이름짓습니다. 
2) RAID1으로 2개를 묶습니다.
RAID1[R0,R1]
이것을 풀어서 보시면
RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]] 이렇게 들어가는것을 알수 있습니다.

RAID10
RAID1로 구성한것을 RAID0로 묶는 구조입니다.
RAID10으로 10개의 HDD를 묶는다고 하면,
1) RAID1으로 2개씩 묶어서 5개의 RAID1볼륨을 만듭니다.
RAID1[1,2], RAID1[3,4], RAID1[5,6], RAID1[7,8], RAID1[9,10] 이렇게 5개가 나옵니다. 각각 R0, R1, R2, R3, R4라고 이름짓습니다.
2) RAID0로 5개를 묶습니다.
RAID0[R0,R1,R2,R3,R4]
이것을 풀어서 보면
RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]] 이렇게 됩니다.

첫번째 차이점. 안정성의 차이
RAID0+1에서 RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]]가 있는데, 1번 하드가 고장 나버렸습니다.
그러면 RAID0[1,2,3,4,5]는 깨지겠죠? RAID0는 하나라도 문제가 생기면 전체가 중지되어버립니다. 
반면에 RAID10은 RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]]에서 1번하드가 고장나면, RAID1[1,2]가 RAID1이기 때문에 1,2가 동시에 문제가 생기지 않는한은 RAID1은 중지되지 않습니다.
이런 질문을 하실수 있습니다. 1,2가 같이 깨지는 경우는 RAID0+1이 낫겠네요...라고요.
그러나 확률을 보시면 아시겠지만, RAID0+1의 경우는 R0에 하나 R1에 하나만 문제가 생기면 완전히 끝입니다. 그러나 RAID10의 경우는 1,3,5,7,9 5개의 하드가 동시에 깨져도 문제 없이 동작합니다. 확률적으로 더 나은 안정성을 보장하죠.

두번째 차이점. 복구의 차이
RAID0+1의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후에 REBUILD를 하게 되면 R1에서 R0을 통채로 복사하게 됩니다.
반면 RAID10의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후 REBUILD를 하면 2번 하드에서 1번 하드로 복사를 하게 됩니다.
RAID10의 경우 시간이 엄청나게 단축되겠죠?

[출처] RAID 10 은? |작성자 삽질맨

------------------------------------------------------------------------------------------

 

3. RAID-5

 

RAID 3, 4, 5는 데이터를 카피해서 따로 저장하는 방식이 아니라 복구 가능한 패러티 정보를 기록하는 방식을 선택한 기술입니다. 이중 가장 많이 사용하는 방식은 RAID-5 방식이며 이방식에 대해서 알아보도록 하겠습니다

 

RAID-5는 스트라이핑 된 패러티 영역이라는 기술이며, 이름처럼 패러티 정보를 스프라이팅해서 각각의 Disk에 저장하는 방식입니다. 즉, 쓰기에 패러티 정보가 분산되어 저장되기 때문에(* 3, 4는 별도의 패러티 정보를 저장하는 공간(Disk or Sector)를 가지므로 쓰기부분에서 병목을 발생합니다.) 병목현상을 줄여줍니다. 하지만, 읽기는 스트라이핑 되어있으므로 각 디스크에 분포되기때문에 이를 읽는 과정에서 지연이 발생하므로 성능저하를 야기하게 됩니다. 즉, 성능면에서는 RAID-0보다 약간 떨어지지만 안정성과 용량 그리고 성능까지 모두 고려한 RAID의 기술입니다.

 

장애의 경우에도 저장된 패러티정보를 통해서 복구하고 손상된 드라이브의 패러티 정보는 나머지 하드에 있는 데이터를 토대로 다시 작성할 수 있습니다. 이처럼 별도의 패러티 정보를 저장하는 작업을 진행해야하기때문에 RAID-1보다 쓰기성능이 떨어지게 됩니다.

 

 

흠.. 이정도로 정리하고 추천 URL을 남기도록 하겠습니다.

 

URL : http://smsinfo.tistory.com/177

 

이런저런 글을 읽어봣는데 여기가 그나마 괜찮더군요 ^^

 

아.. 스크롤 압박이 ㅠ.ㅠ


반응형