Hardware&RAID/RAID

RAID 정리

서버엔지니어 2023. 3. 10.
728x90

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가 발생했을 경우, 데이터의 절반을 날리게 되므로, 나머지 하나의 디스크도 사실상 못쓰게 된다. 관리 포인트가 하나 늘어남으로 인해 안정성은 떨어지게 되는 것이다.

1+1=2

 

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

단점 : 낮은 안정성

최소 드라이브 개수 : 2

최대 용량 : 디스크의 수 x 디스크의 용량

 

RAID 1 (Mirroring)

RAID 0과는 달리 안정성에 중점을 둔 RAID Level 이다.

아래 그림에서 보면 1번 조각이 디스크에 쓰여질 때 양쪽 디스크(DISK1, DISK2)에 동시에 동일한 데이터가 기록됨을 볼 수 있다.

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

일반적으로 서버에 있어 OS가 설치되는 디스크에 필수적으로 사용되는 구성방법이다.

1+1=1 

 

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

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

최소 드라이브 개수 : 2

최대 용량 : (디스크의 수/2) x 디스크의 용량

 

RAID 2 (Hamming code ECC)

현재는 사용하지 않는 RAID Level 입니다.

bit 단위로 striping을 하고, error correction을 위해 Hamming code 를 사용합니다.

m+1개의 데이터 디스크와 m개의 패리티 디스크로 구성되는 것 같습니다. (즉 N == (m+1) + m)

최소 3개의 디스크로 구성 가능합니다.

그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

하지만 ECC를 위한 드라이브가 손상될 경우는 문제가 발생할 수 있으며 패리티 정보를 하나의 하드 드라이브에 저장하는 RAID 4가 나오면서 거의 사용되지 않는 방식 입니다.

 

RAID 3 (Parallel transfer with parity)

Byte 단위로 striping을 하고, error correction을 위해 전용 패리티 디스크를 1개 사용합니다. 나머지 디스크에 데이터를 균등하게 분산 저장하는 방식이다. 읽기 성능은 RAID 0과 비슷하나 쓰기는 패러티 처리로 인해 일부 성능 저하가 있다. 용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다. Byte 단위로 striping 하기 때문에 너무 작게 쪼개져 현재는 사용하지 않는다고 합니다.

그리고 1개의 디스크 에러 시 패러티 디스크를 통해 복구할 수 있다. (2개 이상의 디스크 에러 시 복구 불가능) 

데이터 복구는 다른 드라이브에 기록 된 정보의 배타적 OR (XOR)을 계산하여 수행된다. I/O 작업은 동시에 모든 드라이브를 처리하므로 RAID 3은 I/O를 중첩 할 수 없습니다. 이러한 이유 때문에 RAID 3는 수행시간이 긴 응용 프로그램이있는 단일 사용자 시스템에 가장 적합하다.

RAID 3은 드라이브 동기화가 필수

 

최소 드라이브 개수 : 3

최대 용량 : (디스크의 수 - 1) x 각 디스크의 용량

 

RAID 4 (Independent data disks with shared parity disk)

현재는 (거의) 사용하지 않는 RAID Level 입니다.

RAID 5로 인해 잘 사용되지는 않지만 NetApp의 스토리지 구성에서는 자주 볼 수 있다.(NetApp은 RAID 4,6을 사용)

 

RAID-3보다 좀 더 개선된 형태라고 생각하면 된다. 블록 형태의 스트라이핑 기술을 사용하여 디스크를 구성한다.

RAID 3와 같이 패러티 정보를 독립된 디스크에 저장한다. 다만 블락(Block) 단위로 분산 저장하는 차이가 있으며 모든 블락이 각 디스크에 균등하게 저장되지는 않는다. 병목 현상이 발생하면 성능 저하가 발생할 수 있다. 

 

RAID-2, RAID-3, RAID-4는 모두 ECC를 사용한다는 특징이 있다.

RAID-2는 비트 단위, RAID-3은 바이트 단위, RAID-4는 워드 단위로 패리티를 관리한다.

그러나 ECC를 위한 패리티를 특정 디스크에 저장 하는 것은 속도 문제 때문에 병목현상이 생기므로 2,3,4 모두 현재는 거의 쓰이지 않는다.

 

RAID 4 구성은 RAID 3구성과 거의 동일하다고 보면되며 스트라이프를 사용하므로 단일 드라이브에서 데이터를 읽을 수 있다. 그리고 모든 쓰기 작업은 패리티 드라이브를 업데이트해야하지만 별도의 디스크이기 때문에 I/O 충돌이 발생하지 않는다. 

 

RAID 3과 RAID 4를 정리하면 RAID 0, RAID 1의 문제점을 보완하기 위해 설계되었으며 3, 4로 나뉘긴 하지만 그림 처럼 RAID 구성 방식은 거의 같습니다. RAID 3, 4는 기본적으로 RAID 0과 같은 스트라이핑 구성을 하고 있어서 성능을 보안하고 디스크 용량을 완전히 사용할 수 있게 해준다. 그리고 에러 체크 및 수정을 위해서 패리티 정보를 별도의 디스크에 따로 저장한다.

 

RAID 3은 데이터를 바이트 단위로 나누어 디스크에 동등하게 분산 기록하며 RAID 4는 데이터를 블록 단위로 나눠 기록하므로 약간의 차이는 존재한다.

 

Block 단위로 striping을 하고, error correction을 위해 패리티 디스크를 1개 사용합니다. 용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다.

 

최소 3개의 디스크로 구성 가능합니다. 그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

Block 단위로 striping 하는 것은 RAID 5, RAID 6와 동일하지만, 패리티 코드를 동일한 디스크에 저장하기 때문에,  패리티 디스크의 사용량이 높아 해당 디스크의 수명이 줄어든다고 합니다.

 

RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.

 

최소 디스크 개수 : 3

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

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

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

※ 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 5 (Independent Data disks with distributed parity blocks)

RAID 4의 문제점인 병목현상을 해결한 레이드 구성 레벨이다. 제일 사용 빈도가 높은 RAID Level 입니다.

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

 

구성은 패리티가있는 블록 레벨 스트라이핑을 기반으로합니다.

패리티 정보는 각 디스크에 스트라이핑되므로 하나의 드라이브가 고장 나더라도 다른 어레이로 대체 작동 할 수 있다.

어레이 아키텍처는 읽기 및 쓰기 작업을 여러 드라이브로 확장이 가능하기 때문에 일반적으로 단일 드라이브의 성능보다 좋지만 RAID 0 어레이의 성능은 높지 않습니다.

RAID 5는 3개 이상의 디스크가 필요하지만 성능상의 이유로 적어도 5 개의 디스크를 사용하는 것이 좋다고 한다.

 

용량 및 성능이 단일 디스크 대비 (N-1) 배 증가합니다.

최소 3개의 디스크로 구성 가능합니다.

그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.

 

3개 이상의 디스크를 붙여서 하나의 디스크처럼 사용하고 각각의 디스크에 패러티 정보를 가지고 있는 방식이다. 

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

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

 

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

 

만약 하드가 4개가 있다면, 하드 하나를 4개로 나눈 뒤 하나를 패리티 디스크로 할당하고 자신을 제외한 나머지 3개 하드 중 한 하드의 페리티 정보를 저장한다. 이렇게 교차로 구성을 할 경우 하나의 하드에 장애가 생기더라도 나머지 3개 하드의 패리티 정보를 모아 복구할 수 있다. 3개이상이기만 하면 RAID-5를 구성할수 있다. 하드 사용량은 N개일 경우 N-1개의 용량을 사용할 수 있다. 안전성과 효율이 뛰어나다.

 

3개 구성 시에는 33.3%, 4개 구성하면 25%, 5개 구성하면 20%가 패리티 공간으로 사용된다.

 

최소 디스크 개수 : 3

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

 

RAID 6 (Independent data disks with two independent distributed parity schemas)

RAID 6은 RAID 5와 비슷한 구성이지만 다른 드라이브들 간에 분포되어 있는 2차 패리티 정보를 넣어 2개의 디스크 오류까지 대처가 가능하게 복구할 수 있게 설계되었으므로 RAID 5보다 더욱 데이터의 안전성을 보장 할 수 있다. 하지만 이러한 추가적 보호 기능은 비용 부담으로 이어질 수 밖에 없다. 패리티 저장 하는 디스크를 고정하지 않고, 매 번 다른 디스크에 저장합니다.

RAID 5에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다. 조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용합니다.  단, 쓰기속도는 Parity를 여러 번 갱신해야 하기 때문에 RAID 5보다 떨어집니다. 디스크를 재구성하는 동안 성능이 나빠질 수 있습니다.

 

 

하나의 패러티를 두 개의 디스크에 분산 저장하는 방식이다.  최소 4개의 디스크를 구성해야 한다. 공간 효율성이나 처리속도는 떨어지지만 안전성은 크게 증가된다.

 

4개 구성시에는 50%, 5개 구성하면 40%, 6개 구성하면 33.3%를 패리티 공간으로 사용한다.

 

최소 디스크 개수 : 4

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

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

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

RAID 7 

하드웨어 컨트롤러에 내장되어 있는 운영체제를 사용하여 구성한다. 벤더마다 독자적인 여러 특성들을 제공한다. 주로 RAID-6까지만 표준 분류로 언급되며 RAID-7은 공식적인 분류로 보지 않는 경우도 많다.

 

RAID 01

RAID 0의 스트라이핑으로 구성된 하드들을 묶어 RAID 1미러링으로 구성하는 방법이다. RAID 0와 RAID 1을 결합하는 방식이다. 

최소 4개 이상의 디스크에서 먼저 2개씩 RAID 0(스트라이핑)으로 묶고 이어 RAID 1(미러링)으로 결합하는 것이다.

RAID 0의 복구 못하는 문제를 해결하면서 RAID 1의 단점이 성능을 개선할 수 있다. 

다만 안정성과 성능을 보장하는 대신 비용이 많이 들어간다는 단점이 있다. 

 

최소 디스크 개수 : 4

용량 : (디스크 수 / 2) X 디스크 용량

 

RAID 10

먼저 2개를 미러링으로 묶고 이후에 스트라이핑으로 결합하는 방식 RAID 0+1의 반대 개념이다. 

RAID 0+1보단 RAID 1+0이 더 많이 쓰인다. RAID 1과 RAID 0을 결합한 이 구성은 RAID 1보다 높은 성능을 제공하지만 추가 비용이 든다. RAID 1+0에서는 데이터가 미러링되고 미러가 스트라이핑 되기 때문이다.

 

최소 디스크 개수 : 4

용량 : (디스크 수 / 2) X 디스크 용량

 

차이점 : 복구시에도 RAID 0+1은 다른 그룹에서 전체 복사를 해야 하지만, RAID 10은 하나의 디스크만 복제해도 된다는 차이가 있다. 

RAID 5+3

RAID 3 방식에 별도로 스트라이프를 구성하는 방식이다. 이 방식은 RAID 3보다 높은 성능을 제공하지만 구성 비용이 많이 든다.

ex)

6개의 디스크를 사용하면 

RAID 0+1은 3개의 디스크를 먼저 스트라이핑으로 묶고 미러링을 하기 때문에 2개의 그룹으로 나누어진다. 

RAID 1+0은 2개 디스크씩 미러링 한 후, 스트라이핑을 하기 때문에 3개의 그룹으로 나누어지게 된다. 

 

그러나 왜 디스크가 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 레벨과 관련된 일부 안정성 문제를 극복하는 데 도움이되므로 비용에도 불구하고 널리 보급되어 사용되었다.

 

이 외에도 

RAID 03 (RAID 0 + 3), RAID 53 (RAID 5 + 3)

RAID 50 (RAID 5 + 0)

RAID 7 (비표준이며 RAID 3, 4를 기반으로 하지만 캐싱 추가)

 

번외

 

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 방식을 사용하면 성능 저하가 크다. 성능저하 뿐만 아니라 복구시에 안정성도 낮음)

 

 

 

 

 

 

 

 

'Hardware&RAID > RAID' 카테고리의 다른 글

간단한 3ware 명령어 3ware tw_cli  (0) 2023.03.10
간단한 메가레이드 명령어 MagaCli  (0) 2023.03.10

댓글