본문 바로가기
공부 및 정리/기타 정리

RAID

by 스파이펭귄 2024. 4. 25.
728x90

RAID란 Redundant Array of Independent(Inexpensive) Disk의 약자로 여러개의 하드 디스크에 데이터를 나누어 저장하는 기술이다.

이렇게 여러 디스크에 데이터를 나누어 저장시 다음과 같은 기대 효과를 얻을 수 있다.

  • 대용량 단일 볼륨을 사용하는 효과
  • 디스크 I/O 병렬화로 인한 성능 향상
  • 데이터 복제로 인한 안정성 향상

이 여러개의 하드 디스크에 데이터를 나누어 저장하는 방식에 따라서 레벨이라 부르게 되며, 이에 따라서 같은 갯수의 하드디스크를 사용하더라도 성능, 용량 등이 달라지게 된다.

이 레벨에 따라 정리를 해보자.

먼저 RAID의 Level은 초기에 0, 1, 4, 5, 6으로 5가지가 존재했는데 이후 중첩 레벨같이 여러가지 다른 레벨들이 추가되었다. 여기서는 standard level. 즉, 0, 1, 4, 5, 6에 대해서만 정리하였다.

 

RAID 0

Striping이라고도 불리는 방식으로 적어도 2개의 디스크가 필요하다는 조건이 있다. 패리티(오류 검출) 기능이 없이 하나의 데이터를 모든 디스크에 나누어 저장하게 된다. 이로인해 다음과 같은 특징을 가진다.

  1. 데이터 분산
    1. 데이터를 일정 크기의 블록으로 나누어 모든 디스크에 저장한다.
  2. 높은 읽기/쓰기 성능
    1. 여러 디스크에 동시에 데이터를 읽고 쓰기 때문에 읽기/쓰기 성능이 디스크 갯수에 비례하여 향상된다.
  3. 높은 가용 공간
    1. 모든 디스크의 용량을 모두 합친 크기의 용량을 사용할 수 있다.
  4. 데이터 안정성 문제
    1. RAID 0의 가장 큰 단점으로 데이터를 모든 디스크에 데이터를 분산하기 때문에 하나의 디스크만 고장이 나더라도 모든 데이터를 잃어버리게 된다.
    2. 이러한 문제로 RAID 0를 사용시 백업이 필수적이다.
  5. 비용 효율성
    1. RAID 0는 다른 RAID 레벨에 비해 추가 비용이 들지 않는다.
    2. 모든 디스크 용량을 사용할 수 있기에 가격 대비 성능이 좋다.

매우 좋은 성능과 용량을 제공하기에 높은 성능이 요구되는 환경에 적합하지만, 하나의 디스크만 고장나더라도 모든 데이터를 잃어버리기에 매우 위험성이 높아, 중요 데이터를 다루는 환경에서는 적절치 않다.

그렇기 때문에 RAID 0는 정기적 데이터 백업이 필수적인 방식이다.

 

RAID 1

RAID 1은 미러링(Mirroring)이라고도 불리는 방식으로 이를 위해서는 최소 2개의 디스크가 필요하다.

이 방식에서는 동일한 데이터를 N개로 복제하여 각 디스크에 저장한다.

때문에 여러 디스크로 RAID를 구성해도 1개의 DISK의 용량만 사용 가능하다. 이러한 특정으로 다음 특징을 갖는다.

  1. 데이터 미러링
    1. 모든 데이터를 여러 디스크에 동일하게 저장한다.
  2. 높은 데이터 안정성
    1. 모든 데이터가 여러 디스크에 동일하게 저장되기에 하나의 디스크만 정상이면 모든 데이터를 복구할 수 있다.
  3. 읽기 성능 향상
    1. 동일한 데이터를 여러 디스크에서 읽을 수 있기에 읽기 성능이 향상된다.
    2. 즉, 병렬 처리로 읽기가 가능하다.
  4. 쓰기 성능 저하
    1. 모든 쓰기 작업시 각 디스크에 동일하게 수행되어야하기 때문에 이를 완료하는것에 대한 대기로 인해 성능이 느려질 수 있다.
  5. 가용 공간 감수
    1. RAID 1의 가장 큰 단점으로 모든 디스크가 같은 데이터를 가지기에 실제로 사용 가능한 크기가 1개의 디스크 정도이다.

RAID 1은 데이터 안정성이 매우 중요한 환경에 적합하다. 또한 쓰기는 느려도 되지만, 읽기 성능이 매우 중요한 서비스에서도 유용하다.

RAID 2-4

2와 3은 현재는 사용되지 않는 레벨이며, 4도 거의 사용되지 않는 레벨이다.

이 레벨들의 차이점은 패리티(오류 검출) 기능을 어떻게 정의하느냐이다.

여러개의 디스크가 존재할 때 하나의 디스크를 패리티 전용 디스크로 사용한다. 이때 패리티 부호의 단위를 각 레벨별로 다음과 같이 정의한다.

  • RAID 2: 비트
  • RAID 3: 바이트
  • RAID 4: 블록

나머지 디스크를 RAID 0와 같이 사용하여 안정성을 높이게 된다. 이 방식을 사용하기 위해서는 최소 3개의 디스크가 필요하며, 하나의 디스크가 손상되어도 정상 작동이 가능하다.

위와 같은 구조로 인해 다음 특징들이 있다.

  1. 전용 패리티 디스크와 데이터 보호
    1. 패리티 정보를 저장하기 위한 전용 디스크가 존재하여 데이터 디스크의 데이터에 대한 패리티 정보를 저장한다.
    2. 이를 통해 단일 디스크 장애로부터 데이터를 복원이 가능하다.
  2. 읽기 성능 향상
    1. 데이터가 여러 디스크에 분산되어 저장되기에 병렬로 읽을 수 있다. (LEVEL 2와 3는 좀 낮은듯?)
  3. 쓰기 성능 저하
    1. 모든 쓰기 작업을 데이터 디스크와 패리티 디스크에 업데이트 해야하기 때문에 패리티 디스크에 대한 쓰기 작업이 집중되어 쓰기 병목이 발생할 수 있다.

이러한 방식은 RAID 5라는 개선형이 나오며 빠르게 대체되었다.

 

RAID 5

가장 많이 사용되고 있는 레벨로, 데이터 보호와 성능 향상을 동시에 제공한다.

  1. 블록 레벨 스트라이핑
    1. RAID 4와 같이 블록 단위로 분할해 여러 디스크에 분산 저장한다.
    2. 각 블록은 라운드로빈 방식으로 분산 저장된다.
  2. 분산 패리티
    1. 패리티 정보를 모든 디스크에 분산하여 저장한다.
    2. 각 패리티 블록은 다른 디스크의 해당 블록들의 XOR 연산을 통해 계산된다.
      예시)
      디스크 1의 블록: 1011
      디스크 2의 블록: 0110
      디스크 3의 블록: 1101 (패리티 블록)
      패리티 블록은 다른 디스크의 해당 블록들을 XOR 연산하여 계산된다.
      1011 (디스크 1의 블록)
      0110 (디스크 2의 블록)
      --- XOR 연산
      1101 (디스크 3의 블록, 패리티 블록)

      만약 디스크 1이 고장나서 데이터를 잃어버렸다면, 디스크 2와 패리티 블록(디스크 3)을 XOR 연산하여 디스크 1의 데이터를 복구할 수 있다.
      0110 (디스크 2의 블록)
      1101 (디스크 3의 블록, 패리티 블록)
      --- XOR 연산
      1011 (복구된 디스크1의 블록)
  3. 단일 디스크 장애 보호
  4. 향상된 읽기/쓰기 성능
  5. 효율적 공간 활용

가장 균형잡힌 레벨로 널리 사용되고 있다. 하지만 더욱 안정적인 방식을 원하는 경우 RAID 6을 쓰기도 한다.

 

RAID 6

RAID 5에서 성능, 용량을 줄이고, 안정성을 높인 레벨이다.

패리티 부호를 여러 디스크에 분산하여 저장하는 방식으로 하나의 디스크가 손상되어도 정상 작동하며, 최소 3개의 디스크가 필요하다.

패리티를 나누어 두개의 디스크에 저장한다. 용량 및 성능은 2개의 디스크를 뺀 크기만큼 향상되며, 최소 4개의 디스크가 필요하다. 이를 통해 최대 2개의 디스크 장애시에도 데이터 복구가 가능하다는 장점이 있다.

  1. 블록 레벨 스트라이핑
    1. RAID 5와 동일하다.
  2. 이중 분산 패리티
    1. 첫 패리티 블록은 RAID 5와 동일한 XOR 연산을 사용해서 계산되며 나머지 블록은 다른 알고리즘 (보통 Reed-solomon 코드)를 사용하여 계산된다.
    2. 두 패리티는 서로 다른 디스크에 저장된다.
  3. 이중 디스크 장애 보호
    1. 두개의 독립적 패리티를 가지고 있어, 두개의 디스크 장애로부터 데이터 복구가 가능하다.
  4. 향상된 읽기/쓰기 성능
    1. RAID 5보다는 성능이 약간 낮다는 특징이 있다.

RAID 6은 RAID 5보다 향상된 데이터 보호 기능을 제공하기 때문에, 데이터 안정성이 매우 중요한 환경에서 사용된다. 하지만 RAID 6은 RAID 5에 비해 더 많은 패리티 계산과 디스크 공간이 필요하므로 비용이 더 높아질 수 있다.

 

WIKIPEDIA의 요약

요약하면 위와 같다.

 

Reference

728x90

'공부 및 정리 > 기타 정리' 카테고리의 다른 글

CTE와 Recursive 쿼리  (0) 2024.04.25
[SQL] DELETE, TRUNCATE, DROP  (0) 2024.04.24
동기, 비동기, Blocking, Non-Blocking  (0) 2024.04.14
CAP 정리  (1) 2024.03.06
트랜잭션과 ACID  (0) 2024.03.05