프린트 하기

RAID

Redundant Array of Independant Disk


(흔히 성능 향상이나 안정성 향상을 위해 사용하는 것으로 알고 있는 RAID에 대한 개념 정리)

 

* 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 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 (Distribute Parity) *

RAID 4의 문제점인 병목현상을 해결한 레이드 구성 레벨이다.

Parity bit을 하나의 디스크로 몰아놓은것이 아닌, 분산하여 구성하기 때문에 RAID 4의 병목현상을 현저하게 줄일 수 있다.

안정성과 성능을 어느정도 보장할 수 있는, 스토리지에 있어 가장많이 사용되는 구성방법이다.

RAID 4와 마찬가지로 N개의 디스크가 있으면 실제 사용 가능한 디스크는 N-1개가 된다.

 

장점 : RAID 4 대비 병목현상을 줄임, 안정성과 성능 모든 부분에서 뛰어나 실제로 가장 많이 사용되는 레벨중에 하나.

단점 : 특별히 없음

 

 

* 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 *

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를 커버 가능하게 된다.

 

 

 

 

 

 

 

※ 번외편

 

- 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 방식을 사용하면 성능 저하가

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

 

 

 

※ 내용에 오류가 있다면 말씀해주세요

 

 

※ 참고한 사이트

http://ko.wikipedia.org/wiki/RAID

http://smsinfo.tistory.com/177

http://cleep.egloos.com/1766182

http://www.webopedia.com/TERM/R/RAID.html

http://searchstorage.techtarget.com/definition/RAID


==출처 : http://blog.naver.com/leekh8412/100175594400 ==


2개이상의 하드디스크를 하나의 대형디스크처럼 사용가능하게 하며, 장애시 완전히 복구할 수 있는 기술.

미러링, 패리티, 스트라이핑 기법을 사용.

목적

개별 하드디스크를 논리디스크로 통합

여러대의 하드디스크에 입출력 분산하여 성능향상

복구정보(패리티) 제공하여 장애발생시 손쉬운 복구


RAID 0 (stripping)

데이터 입출력 빠르게 하기위해 분산시킴.

복구관련 정보가 없기에 고장시 전체데이터 손실됨.

입출력이 빠른게 장점임.


RAID 1 (mirroring)

한개의 하드보다 조금 더 빠름. (읽기) / 쓰기는 오히려 성능이 저하됨.

ECC를 계산하지 않기에 RAID 4 , RAID 5 보다 속도가 빠름.

단가가 비싸 중요업무의 스토리지에 사용됨.


RAID 2 (hamming)

ECC 기능이 없는 하드를 위해 쓰는 방식.

SCSI 는 에러검출능력이 있어 사용되지않음. 

RAID 3에 비해 장점이 없어 사용되지않음.


RAID 3 

하드1에 패리티정보저장. 나머지 드라이브 사이에 데이터를 Byte 단위로 분산시킴. (Block Striping : 전용 패리티를 이용한 블록분배)

하나의 드라이브에 문제가 생기면 컨트롤러가 전용 패리티 드라이브에서 문제가 생긴 드라이브의 손실 데이터를 가져와 복구함.

효율적인 동작을 위해 동기 가능한 드라이브를 사용해야 함.

입출력을 겹치게 할수없기에 대형 레코드가 쓰이는 업무에서 단일 사용자 시스템에 적합함.


RAID 4 (parity)

RAID 3과 같은 방식이나 드라이브 사이에 데이터를 Block 단위로 분산함.

RAID 0 에 필적하는 속도를 보이지만, 저장시 매번 패리티 정보를 갱신하기에 추가적인 시간이 필요함.

작고 랜덤하게 기록할수록 느리며, 크고 순차적일땐 속도저하가 없음.

두개이상의 디스크 장애 발생시 데이터손실이 발생하기도 함.

패리티 디스크에 병목현상 발생해 전체 스토리지 성능저하를 가져올 수 있음.


RAID 5 (distributed parity)

가장 많이 사용되는 RAID

패리티정보를 모든 하드에 나눠 기록함.

멀티프로세스 시스템처럼 작은 데이터 기록이 수시로 발생할때 그 성능이 뛰어남.

다중사용자 환경을 위해 가장 좋은 선택이며, 최소한 3개이상의 드라이브가 필요함.


RAID 6 (Dual parity)

RAID 5 와 기능적으로 비슷하나, 이중 패리티 구성을 포함하여 매우 높은 장애대비 능력을 지님.

복구시간이 길어 복구중 장애가 발생할 확률이 높아짐.


RAID 7 

컨트롤러에 내장된 실시간 운영체제를 사용.

속도가 빠른 버스를 통한 캐시, 독자적인  컴퓨터의 여러 특성을 포함함

많이 사용되고 있지않음.


RAID 10 (Mirroring & Striping)

RAID 1 과 RAID 0 의 안정적인 복구/속도를 합쳐놓은 방식임.

최소 4개의 드라이브로 구성되며 데이터 입력시 두개를 한쌍으로 Mirroring 하고, 그 2쌍을 Striping 함.

미러링으로 사본을 갖고 있기에 장애발생시에도 완벽한 복구가 가능함.


RAID 50 (RAID 5 & Striping)

RAID 5 구성시 드라이브 숫자가 많아지면 패리티 연산 문제로 성능 저하가 발생할수 있는데, 이걸 Striping 하는 방식


raid 5 에서는 최소 3개의 디스크가 필요함

xor에 대한 이미지 검색결과

parity는 XOR이다.


참조


http://www.php5.me/blog/raid-%EC%9D%B4%EB%A1%A0-raid-%EA%B5%AC%EC%84%B1%EC%9D%98-%EC%A2%85%EB%A5%98%EC%97%90-%EB%8C%80%ED%95%B4-%EB%82%98%EC%97%B4-raid0-raid1-raid2-raid3-raid4-raid5-raid6raid7raid10-raid50/





'Others' 카테고리의 다른 글

블레이드 서버(blade server)란?  (0) 2017.08.17
Thin Provisioning(씬 프로비저닝) 이란?  (0) 2017.08.17
MBR 이란?  (0) 2017.07.12
파일경로, 절대경로, 상대경로란?  (0) 2017.05.31
티스토리 해킹관련 글  (0) 2014.06.20