CS/DB / / 2021. 2. 3. 19:05

RAID(Redundant Array Independent Disks)란?

What is RAID?

  RAID란 독립적(물리적)으로 만들어진 두 개 이상의 디스크를 병렬로 연결시켜서 논리적으로 연결시켜 성능 및 안정성을 향상시키는 방식이다. Raid는 미러링(Mirroring) 방식과 스트라이핑(Stripping) 방식이 있으며 RAID는 미러링과 스트라이핑을 어떻게 구성했느냐에 따라 구분된다. RAID의 종류에는 RAID 0, RAID 1, RAID 2, RAID3, RAID 4, RAID 5, RAID 6, RAID 7, RAID 0+1, RAID 1+0 등이 있지만 여기서는 자주 쓰이는 것들만 간단히 알아보고자 한다.

 

Why is RAID used?

    서버의 사용자가 서버 운영에 있어 가장 당혹스러울 때는 하드디스크의 장애로 인한 data 손실이다. 특히, 서버에 저장되는 데이터의 경우 손실 또는 유출 되었을 때 치명적인 것이 대부분일 것으로 대표적으로 은행과 같은 금융, 군사적 목적의 데이터가 있을 것이다. 이로 인해 백업이 절대적으로 필요한 경우가 있고 또한, 여분의 디스크가 있어 용량을 증설하려고 할 때 데이터 손실 없이 증설이 필요한 경우가 있다. 그래서 많은 서버 관리자는 RAID 구성을 통해 하드디스크의 가용성을 높이거나 서버 데이터의 안정성을 확보해야 한다.

Stripping 방식 (RAID 0) / Mirroring 방식 (RAID 1)

RAID 0 (스트라이핑, Stripping)

  Stripe는 줄이라는 뜻을 가지고 있으며, 스트라이핑 방식은 연속된 데이터를 물리적으로 떨어진 디스크를 병렬적으로 저장하는 것을 말한다. 그래서 개별 디스크에 저장된 데이터만으로는 쓸모가 없고, 스트라이핑한 모든 데이터가 모여야 비로소 하나의 데이터가 된다. RAID 0은 데이터 보존보다는 성능에 초점을 맞춘 구성이라고 할 수 있다.

 장점: 스트라이핑 방식으로 디스크를 구성했을 때의 장점은 각각의 디스크와 데이터를 주고 받는 방식이 독립적으로 디스크를 구성했을 때보다 빠르다는 점이다. 한 개의 디스크에 read/write 하기 위해서 기다려야 하는 시간을 줄일 수 있으며, 이론적으로는 디스크를 추가할수록 성능이 좋아진다.

 단점: 하나의 디스크라도 저장된 데이터가 유실되면 다시는 데이터를 복구할 수가 없는 단점이 있다.

 

RAID 1 (미러링, Mirroring)

  미러링 방식은 문자 그대로 하나의 데이터를 복수의 디스크에 동일하게 복사하는 것이다. 스트라이핑 방식과 정반대라고 생각하면 된다. 즉, RAID 1은 RAID 0과 반대로 속도는 조금 양보하더라도 데이터 보호에 초점을 맞춘 구성이다.

  장점: 볼륨 내 하나의 디스크만 정상이라도 데이터가 보존된다.

  단점: 같은 데이터를 두 개의 디스크에 저장해야 하다보니 디스크 가용량도 당연히 50%로 줄어든다.  또한, 쓰기 속도가 줄어든다


RAID 5

RAID 5 (데이터 보호 및 성능)

  RAID 5는 데이터 보호와 성능을 모두 잡은 방식으로서 가장 많이 사용된다. 최소한 3개 이상의 디스크가 있어야 구현이 가능하다. 모든 디스크에 걸쳐 데이터를 스트라이핑 함으로써 성능을 높였으며, 각 드라이브의 일부를 패티리(Parity) 내부 고장에 할애하고, 나머지 부분은 데이터 저장 공간으로 남겨둠으로써 데이터 보호와 성능을 최대화한 방식이다. 

  예를 들어 위 그림에서 Stripe 1 구간에서, Disk 1에서는 0111이라는 데이터가, Disk 2에는 0101 데이터가 저장되어 있다. Disk 3에 Strip 1 구간에는 0111과 0101을 XOR 한 값(0111 ^ 0101 = 1110)을 저장한다. 즉, Stripe 1 구간의 Parity에는 1110이 저장된다. RAID 4는 Parirty를 하나의 하드 디스크에 몰아서 저장했지만, 그렇게 할 경우 Parity가 저장된 하드디스크가 깨지면 데이터를 백업해 놓은 의미가 없어진다. 반면, RAID 5는 Parity 블록을 분산해서 저장했기 때문에 하나의 하드 디스크가 깨지더라도 Parity 비트를 조합해서 복구할 수 있고, Parity 블록 데이터 역시 보존된 데이터를 다시 XOR 연산을 하면 만들 수 있다. RAID 0과 마찬가지로 데이터들이 각각의 디스크에 중복되지 않게 저장되므로 성능 역시 뛰어나다.

 


RAID 01 (0+1) vs RAID 10(1+0)

RAID 01 (0+1) vs RAID 10(1+0)

RAID 01(0+1)

  RAID 01은 RAID 0과 RAID 1을 혼합한 방식이다. 위 그림(왼쪽)에서 볼 수 있듯이,  RAID 01은 4개의 디스크 중 2개의 디스크 씩 데이터를 스트라이핑한 다음, 스트라이핑 데이터를 미러링한다. 이렇게 디스크를 구성하면 RAID 1만 사용했을 때의 단점인, 속도 저하를 어느정도 극복할 수 있고, 복사본 생성이라는 목적을 어느 정도 달성할 수 있다.

 

RAID 10(1+0)

  RAID 10은 정확이 RAID 01의 반대이다. 디스크를 먼저 미러링 한 다음에, 스트라이핑한다. RAID 10 역시 복사복 생성과 성능 향상을 어는 정도 달성할 수 있다.

 

어느 것을 써야할까?

  디스크가 깨졌을 때를 생각해보자. 위 그림을 기준으로 디스크가 1개 깨지면 RAID 01과 RAID 10 데이터는 보존된다. 그렇다면 서로 다른 그룹의 디스크가 2개 깨졌다고 가정해보자. 디스크가 2개가 깨질 경우, RAID 01은 Disk 1과 Disk 4가 깨지면 데이터가 보존되겠지만, Disk 1과 Disk 3이 깨질 경우 전체 데이터는 보존되지 않는다. 

  RAID 10도 RAID 01과 마찬가지로 디스크가 1개 깨질 경우에는 전체 데이터는 보존된다. 서로 다른 그룹의 디스크가 2개 깨질 경우를 생각해보면, 어떠한 디스크 2개를 선택해도 결과적으로 데이터가 보존된다. 즉 스트라이핑 -> 미러링 방식보다 미러링 -> 스트라이핑 방식이 더 높은 데이터 보존을 보장한다. 결과적으로 성능에 있어서는 비슷하지만 안정성 측면에서 RAID 10이 더 뛰어나다고 할 수 있다. 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유