소식

 

 

* RAID 개념

 

RAID 란? ( Redundant Array of Independent Disk )

여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술입니다.

중복된 데이터를 나눠서 저장하는 제일 큰 이유는 데이터를 안전하게 보호하기 위함에 있습니다.

데이터를 나누는 다양한 방법이 존재하며, 이 방법들을 레벨이라 하는데 레벨에 따라 저장장치의 신뢰성을 높이거나 전체적인 성능을 향상 시키는 등의 다양한 목적을 만족 시킬 수 있습니다.

 

RAID의 목적은 크게 세 가지로 볼 수 있는데,

첫째 는 여러 개의 디스크 모듈을 하나의 대용량 디스크처럼 사용할 수 있도록 하는 것이고, 두 번째는 여러 개의 디스크 모듈에 데이터를 나누어서 한꺼번에 쓰고 한꺼번에 읽는 식으로 입출력 속도를 높인다는 것입니다.

마지막으로 여러 개의 디스크를 모아서 하나의 디스크로 만들고 그 중 하나 혹은 그 이상의 디스크에 장애가 나더라도 최소한 데이터가 사라지는 것은 방지하자는 것에 있습니다.

 

이 같은 RAID에는 여러 종류에 RAID 레벨이 있는데 대표적인 RAID 구성 조합은 다음과 같습니다.

 

- RAID 0

 

 

데이터의 빠른 입출력을 위해 데이터를 여러 디스크에 분산 저장합니다.

데이터 복구를 위한 추가 정보를 기록하지 않기 때문에 성능은 뛰어나겠죠?

하지만 어느 한 디스크에서 장애가 발생하면 데이터는 모두 손실 된다는 단점이 있습니다.

(실제로 RAID 0 만으로 구성된 서버나 스토리지는 주변에서 찾기 매우 어렵습니다.)

 

- RAID 1

 

 

Mirror 구성 또는 Shadowing 이라고 불리는 Raid 1은 빠른 기록 속도와 함께 장애 복구 능력이 요구되는 경우에 많이 사용됩니다.

최소 2개의 디스크로 구성할 수 있습니다. 

이것은 디스크 장애를 대비하여 백업 용으로 다른 하나의 디스크를 동일하게 구성한다고 생각하시면 됩니다.

RAID 1 은 한 디스크에 기록되는 모든 데이터를 다른 디스크에 복사해 놓는 방법으로 복구 능력을 제공합니다. 

또한, 하나의 디스크를 사용하는 것보다는 약간 나은 정도의 성능을 제공합니다.

단, 읽을 때는 조금 빠른 속도를 제공하지만 저장할 때는 속도가 약간 느려지기도 합니다.

두 개의 디스크에 데이터가 동일하게 기록되므로 데이터의 복구 능력은 높지만 전체 용량의 절반이 여분의 데이터를 기록하기 위해 사용되기 때문에 저장 용량 당 단가가 비싸다는 단점이 있습니다.

 

- RAID 5

 

 

RAID 5 는 Parity 정보를 모든 디스크에 나눠 기록합니다. 

여기서 말하는 Parity ( 패리티 ) 란? 디스크 장애 시 데이터를 재 구축하는데 사용할 수 있는 사전에 계산된 값으로 디스크의 4개 블록 중 3개는 데이터를 저장하는데 쓰고 나머지 하나는 Parity 영역으로 두는 겁니다.

디스크 하나가 장애가 날 경우 Parity 영역를 이용해서 장애 난 디스크의 데이터를 복구해내는 것을 말합니다.

따라서 문제가 발생할 경우, 컨트롤러 가 정상적으로 운영되고 있는 다른 디스크로부터 손실 된 데이터를 가져와 복구/재생 합니다. 

Parity를 담당하는 디스크가 병목 현상을 일으키지 않기 때문에 RAID 5는 Multi 프로세스 시스템과 같이 작은 데이터 기록이 수시로 발생할 경우 속도가 더 빠릅니다. 

하지만 읽기 작업일 경우 각 드라이브에서 Parity 정보를 건너뛰어야 하기 때문에 조금 느릴 수 있습니다.

작고 Random한 입출력이 많은 경우 더 나은 성능을 제공하며 빠른 기록 속도가 필수적이지 않다면 일반적인 다중 사용자 환경을 위해 가장 좋은 선택이라고 볼 수 있습니다. 

Disk는 최소 3개, 일반적으로는 5개 이상 필요합니다.

 

- RAID 6 

 

 

RAID 6는 RAID 5 와 비슷하지만 다른 디스크들 값에 분포되어 있는 2차 Parity 구성을 포함함으로써 매우 높은 장애 대비 능력을 제공하고 있습니다.

디스크가 최대 2개까지 장애가 나더라도 데이터의 손실이 발생하지 않습니다. 

하지만 Parity가 2개이다 보니 장애가 난 디스크와의 동기화가 RAID 5보다는 느립니다.

Disk는 최소 4개가 필요합니다.

 

- RAID 0+1 ( Stripping & Mirroring )

 

 

RAID 0+1 은 RAID 0 의 빠른 속도와 RAID 1 의 안정적인 복구 기능을 합쳐 놓은 방식으로 최소 4개의 디스크로 구성됩니다.

데이터가 입력되면 Striping 방식으로 두 개 이상의 디스크에 나눠서 저장하며 동시에 같은 형태로 다른 하드디스크에도 동일하게 저장됩니다. 

여기서 Striping이란? 쉽게 말해 디스크 하나가 Block 으로 이루어져 있는데, 이러한 Block들을 Strips 라고 하며 이러한 Strips의 집합을 Stripe 라고 합니다. Striping이란 데이터를 물리적인 디스크에게 넓게 퍼뜨리며 읽기/쓰기를 가능하게 하는 것을 말합니다. 

4개의 디스크로 RAID 0 + 1 구성하면 2개의 디스크로 Striping 할 때와 같은 쓰기 속도가 나오며 읽기 속도는 4개의 디스크에서 나눠서 읽어오기 때문에 보다 빠른 속도를 갖게 됩니다.

그리고 Mirroring 으로 똑같은 디스크 복사본(Hot spare) 을 갖고 있기 때문에 장애가 발생했을 때도 완벽한 복구가 가능하다는 장점이 있습니다.

(전체 용량의 50%만 사용이 가능하다는 점 기억해주세요!)

 

 RAID 10 (Mirror -> stripe)

 [조건 : 최소 4개이상의 드라이브가 필요]

 [디스크 사용 평균 용량 : (디스크 수/2) X 디스크 용량]

 

개념

RAID 1과 RAID 0을 함께 적용합니다. mirroring을 통해 똑같이 복사될 복사본을 만든 뒤, 각각의 스트라이프를 제공하여 성능을 

향상시킵니다.

 

특징

RAID를 구성하는데 많은 비용이 발생됩니다.

RAID 1, 0의 장점들을 조합하여 데이터의 안전성 및 성능 향상을 노릴 수 있습니다.

이러한 점에도 불구하고 여전히 전체 용량의 50%만 사용할 수 있습니다.

고장난 하드가 1개일 때, 미러링으로 묶인 하드를 통해 데이터를 복구하기만 하면 되므로 RAID 01보다 운용이 유리합니다.

4개로 구성하면 RAID 01과 차이가 없지만 6개 이상으로 구성하면 차이가 나기 시작합니다.

 

 


 

 

 

 

 

 RAID 01 (stripe -> mirror)

 [조건 : 최소 4개이상의 드라이브가 필요]

 [디스크 사용 평균 용량 : (디스크 수/2) X 디스크 용량]

 

개념

RAID 1과 RAID 0을 함께 적용합니다. RAID 0으로 Striping된 볼륨을 RAID 1로 결합하는 방식입니다. 

RAID 0의 복구능력을 극복하기 위한 방안과 RAID 1의 단점을 개선하기 위해 나왔습니다.

 

특징

RAID를 구성하는데 많은 비용이 발생됩니다.

RAID 1, 0의 장점들을 조합하여 데이터의 안전성 및 성능 향상을 노릴 수 있습니다.

이러한 점에도 불구하고 여전히 전체 용량의 50%만 사용할 수 있습니다.

하드가 고장나서 복구해도 다른 RAID 0 구성에서 나머지 하드까지 데이터 전체를 복구해야 합니다.

RAID 10에 비해 RAID 볼륨이 깨졌을 경우 복구가 번거로운데 그 예시를 아래에서 들겠습니다

RAID 10과 비교하자면, 미러 볼륨으로 구성된 어레이에서 디스크 하나가 고장이 났다면, 미러 볼륨 자체는 깨지지 않습니다. 즉, 디스크만 바꿔 넣어주면 알아서 리빌딩하여 원래 상태로 돌아갑니다. 하지만 RAID 0+1의 경우 디스크 하나가 고장이 났다면, 해당 RAID 0 어레이 전체가 깨져버립니다. 디스크를 교체한 뒤 RAID 0 어레이를 다시 구성한 다음, 미러링해야 한다.

4개로 구성하면 RAID 01과 차이가 없지만 6개 이상으로 구성하면 차이가 나기 시작합니다.

 

 

 

 

 

 

 RAID 50 

 

개념

하위 배열은 RAID 5, 상위 배열은 RAID 0입니다. 마찬가지로 개인 사용자 레벨에서는 사용할 일이 거의 없습니다. RAID 5 볼륨을 RAID 0으로 스트라이핑 합니다. 마찬가지로 RAID 5의 경우 최소 3개 이상의 디스크가 필요하기 때문에 디스크 6개로 구성할 수 있는 경우의 수는 하나밖에 없습니다.

 

특징

RAID 0+5에 비해서 디스크 장애 발생 시 복구가 수월합니다.

 

 

 

 RAID 05 

 

개념

하위 배열은 RAID 0, 상위 배열은 RAID 5 입니다. 역시 개인 사용자 레벨에서는 사용할 일이 거의 없습니다. 

  RAID 0 볼륨을 RAID 5 볼륨으로 묶습니다. RAID 5의 경우 최소 3개 이상의 디스크를 필요로 하므로 디스크 6개로 

  구성할 수 있는 경우의 수는 하나밖에 없습니다.

 

특징

RAID 50에 비해 장애 조치가 힘듭니다. 이유는 RAID 0+1에도 나와 있지만 디스크 장애 발생시 해당 RAID 0 볼륨이 깨져버리기 

  때문입니다.

 

 

 

부록1(단어) 

 

*stripe or striping : 하나의 데이터를 여러 드라이브에 분산 저장시키는 방법

*mirror or mirroring : 하나의 하드디스크에 기록되는 모든 데이터가 다른 하나의 하드디스크에 그대로 복사되는 방법(통째로)(카피)

*Parity : 데이터 오류 체크 및 복구를 위해 사용되는 기술로 패리티 코드와 *XOR 연산을 이용하여 타 디스크에서 손상된 데이터를

           복구할 수 있습니다.

*stripe zone : stripe 방식은 여러개의 디스크에 데이터를 골고루 분산시키면서 수직으로 데이터를 기입하여 저장하는 방식입니다.

                 각각의 다른 디스크끼리 matching이 되는 같은 일직선상의 Line이라고 생각하면 된다고 생각합니다.

                 아래의 그림에서 A, B, C, D가 수평으로 일직선상에 있습니다. 이 Line을 개별 stripe zone이라고 생각하시면 됩니다.

             

         (stripe zone은 고정된 단어가 아니라 이해/설명을 위해 임시로 표현한 단어입니다.)

 

 

*XOR 연산 : 출처 : https://blog.naver.com/rpg2003a/221198102068

디스크 A의 데이터 : 101
디스크 B의 데이터 : 110
두 개의 디스크를 XOR 연산하면 011이 나옵니다. 그리고 이 값을 3번째 디스크에 저장합니다.
그럼 데이터가 아래처럼 됩니다.
101 | 110 | 011
여기서 디스크를 고장내보면 다음처럼 됩니다.
101 | 110 | 011
그리고 101과 parity bit인 011을 XOR해보면 없어졌던 데이터인 110이 나옵니다.
이런 방식으로 XOR 연산을 통해서 parity bit를 만들고 그것을 통해서 데이터를 복구할 수 있습니다.

위 예시에서는 3비트를 가지고 했지만 통상 64kb 단위로 데이터를 분산하여 저장한다고 합니다. 

64kb는 65536(2의 15승)이고 곱하기 8을 하면 524,288bit가 나옵니다. 이 정도 단위로 parity bit를 만든다고 보시면 됩니다. parity 비트는 디스크에 골고루 분배됩니다.

 

 

 

*병목현상 : 전체 시스템에 절대적 영향을 미치는 프로그램의 사용 빈도가 많아지며 생기는 현상. 좁은 병 입구에 대량의 물을 집어 넣을 때를 예시로 생각하면 될 듯합니다.

      사용 빈도의 증가로 유발되는 데이터의 딜레이 또는 미스매치로 인한 전체 시스템의 성능 저하나 장애, 마비되는 현상이 나타납니다.

      상대적으로 적은 수의 디스크에 많은 양의 데이터 저장 요청이 들어와서 발생되며 디스크 기억장치에서 많이 발생합니다.

 

부록1(사진, 표) 

 

 





 

 

 

 

반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band