6 분 소요

RAID(Redundant Array of Independent Disks, 독립 디스크의 중복 배열) 는 여러 개의 하드 드라이브를 하나의 논리적인 유닛으로 결합하여 데이터 저장의 성능, 안정성, 또는 용량을 향상시키는 기술입니다. RAID는 데이터를 여러 디스크에 분산시켜 시스템의 신뢰성과 성능을 높이는 것을 목표로 합니다.

RAID에는 여러 가지 레벨이 있으며, 각각 성능, 신뢰성, 저장 효율성 등의 측면에서 다양한 특성을 갖고 있습니다. RAID 0, 1, 2, 3, 4, 5, 6을 설명하면 다음과 같습니다:


RAID 0
RAID 0은 데이터를 여러 디스크에 분산하여 저장함으로써 성능을 극대화하는 방식입니다. 이를 데이터 스트라이핑(Data Striping)이라고 하며, 데이터가 각 디스크에 순차적으로 나누어져 저장되기 때문에 읽기 및 쓰기 속도가 매우 빠릅니다. 그러나 RAID 0에는 데이터 보호 기능이 전혀 없어서, 하나의 디스크라도 고장 나면 모든 데이터가 손실됩니다. 따라서 RAID 0은 주로 성능이 중요한 애플리케이션에서 사용되며, 데이터 손실 위험을 감수할 수 있는 경우에 적합합니다.

RAID 1
RAID 1은 미러링(Mirroring) 방식을 사용하여 데이터를 두 개 이상의 디스크에 동일하게 복제합니다. 모든 쓰기 작업은 두 디스크에 동일하게 수행되며, 읽기 작업은 어느 디스크에서든 가능합니다. 이로 인해 하나의 디스크가 고장 나더라도 다른 디스크에서 데이터를 복구할 수 있어 높은 신뢰성을 제공합니다. 그러나 저장 공간의 효율성이 낮아서, 사용 가능한 저장 공간이 절반으로 줄어들게 됩니다. RAID 1은 데이터 보호가 중요한 애플리케이션에 주로 사용됩니다.

RAID 2
RAID 2는 비트 수준 스트라이핑(Bit-Level Striping)해밍 코드(Hamming Code)를 사용하여 오류를 검출하고 수정합니다. 각 바이트의 비트를 여러 디스크에 나누어 저장하고, 오류 검출 및 수정용 해밍 코드를 추가하여 신뢰성을 높입니다. RAID 2는 RAID 0과 RAID 1에 비해 데이터 오류 검출 및 수정 기능을 통해 데이터 신뢰성을 크게 향상시킨 기술입니다. RAID 2는 데이터를 비트 수준으로 여러 디스크에 스트라이핑하고, 각 디스크에 오류 검출 및 수정을 위한 해밍 코드를 추가로 저장합니다.

예를 들어, 8개의 디스크가 있는 경우, 각 바이트의 비트를 8개의 디스크에 분산 저장하고, 별도의 디스크에 해밍 코드를 저장합니다. 이 방식은 데이터 전송 속도를 높이면서도 데이터의 무결성을 유지할 수 있습니다.

RAID 2는 이론적으로 오류 검출과 수정 기능을 제공하지만, 구현이 복잡하고 비용이 많이 들기 때문에 현재는 거의 사용되지 않습니다. 초기 RAID 시스템에서 사용되었으나, 다른 RAID 레벨로 대체되었습니다.

RAID 3
RAID 3은 바이트 수준 스트라이핑(Byte-Level Striping)과 별도의 패리티 디스크를 사용하여 데이터를 보호합니다. 데이터가 바이트 단위로 여러 디스크에 스트라이핑되며, 패리티 정보는 전용 디스크에 저장됩니다. 이 방식은 높은 데이터 전송 속도를 제공하지만, 패리티 디스크가 병목 현상을 일으킬 수 있습니다. RAID 3는 연속 데이터 전송이 중요한 애플리케이션에서 주로 사용됩니다.

RAID 4
RAID 4는 블록 수준 스트라이핑(Block-Level Striping)과 별도의 패리티 디스크를 사용합니다. 데이터가 블록 단위로 여러 디스크에 스트라이핑되며, 패리티 정보는 전용 디스크에 저장됩니다. RAID 4는 RAID 3보다 더 일반적인 I/O 작업에 적합하지만, 패리티 디스크가 병목 현상을 일으킬 수 있다는 단점이 있습니다. 데이터 읽기와 쓰기가 균형 있게 중요한 애플리케이션에서 사용됩니다.

RAID 5
RAID 5는 데이터를 블록 수준으로 스트라이핑하고, 패리티 정보를 분산하여 모든 디스크에 분산 저장합니다. 이러한 분산은 부하를 균형 있게 분산시켜 전용 패리티 디스크와 관련된 병목 현상을 줄여주며, 성능과 데이터 보호 간의 균형이 좋습니다. 하나의 디스크가 고장 나더라도 패리티 정보를 통해 데이터를 복구할 수 있습니다. 그러나 하나의 디스크가 고장나면 데이터 복구 시간이 걸립니다. RAID 5는 성능과 데이터 보호가 모두 중요한 애플리케이션에서 주로 사용됩니다.

RAID 6
RAID 6은 RAID 5와 유사하지만, 두 개의 패리티 블록을 사용하여 두 개의 디스크가 동시에 고장 나더라도 데이터를 복구할 수 있습니다. 이는 매우 높은 신뢰성을 제공합니다. 그러나 추가적인 패리티 정보로 인해 쓰기 성능이 약간 저하될 수 있습니다. RAID 6은 매우 높은 신뢰성이 요구되는 환경에서 사용됩니다. RAID 수준 5보다 좀 더 신뢰성을 강화한 수준이나, 실제 널리 사용되지 않은 수준입니다.

RAID 0부터 RAID 6까지 각 레벨은 성능, 신뢰성, 저장 효율성 등의 측면에서 다양한 특성을 가지고 있습니다. 사용자의 요구에 따라 적절한 RAID 레벨을 선택하여 활용할 수 있습니다.


  • RAID 0: Striping. 읽기 및 쓰기 성능이 향상, but 데이터 중복이 없어 하나의 디스크만 고장 나도 모든 데이터가 손실
  • RAID 1: Mirroring. 높은 데이터 신뢰성, but 디스크 저장 공간의 효율성이 낮아 사용 가능한 저장 공간이 절반으로 줄어듦
  • RAID 2: Bit-level Striping, Hamming Code ECC. 오류 검출 및 수정 가능, but 구현이 복잡하고 현재는 잘 사용되지 않음
  • RAID 3: Byte-level Striping with Dedicated Parity. 데이터 복구 가능, but disk arm 이동을 낭비하는 비효율성
  • RAID 4: Block-level Striping with Dedicated Parity. 읽기 성능이 우수, but 패리티 디스크가 병목 현상을 일으킬 수 있음
  • RAID 5: Block-level Striping with Distributed Parity. 균형 잡힌 성능과 신뢰성 & 단일 디스크 장애 시 데이터 복구 가능, but 구현이 복잡함
  • RAID 6: Block-level Striping with Double Distributed Parity. 매우 높은 신뢰성 & 두 개의 디스크 장애에도 데이터 복구 가능, but 추가된 패리티 계산으로 인해 쓰기 성능이 약간 저하될 수 있음

RAID의 목적과 사용 환경에 따라 적절한 RAID 레벨을 선택하는 것이 중요합니다. RAID는 데이터 보호와 성능 향상에 큰 도움이 되지만, 완벽한 데이터 보호를 위해서는 RAID와 함께 정기적인 백업도 필요합니다.

Choice of RAID Levels

RAID 레벨을 선택할 때는 여러 가지 요소를 고려해야 합니다. 가장 중요한 요소는

  • 금전적 비용,
  • 성능,
  • 고장 발생 시의 성능,
  • 고장 디스크 복구 시의 성능입니다. 이러한 요소들은 각각의 RAID 레벨이 제공하는 특징 및 장단점에 따라 달라집니다.

RAID 0은 데이터 스트라이핑을 통해 성능을 극대화하지만, 데이터 보호 기능이 전혀 없습니다. 따라서 데이터 안전이 중요하지 않은 경우에만 사용됩니다. RAID 0은 주로 성능이 중요한 애플리케이션에서 사용되며, 데이터 손실 위험을 감수할 수 있는 경우에 적합합니다.

RAID 1은 데이터를 두 개 이상의 디스크에 동일하게 복제하여 저장하는 미러링 방식을 사용합니다. 이는 높은 신뢰성을 제공하며, 디스크 중 하나가 고장 나더라도 다른 디스크에서 데이터를 복구할 수 있습니다. 그러나 RAID 1은 저장 공간의 효율성이 낮아서 사용 가능한 저장 공간이 절반으로 줄어들게 됩니다. RAID 1은 데이터 보호가 중요한 애플리케이션에서 주로 사용됩니다. 또한 RAID 1은 쓰기 성능이 RAID 5보다 훨씬 좋기 때문에, 높은 업데이트 빈도가 있는 환경 (예: 로그 디스크)에서 선호됩니다.

RAID 2와 RAID 4는 각각 RAID 3과 RAID 5로 대체되어 거의 사용되지 않습니다. RAID 2는 비트 수준 스트라이핑과 해밍 코드를 사용하여 오류를 검출하고 수정하지만, 구현이 복잡하고 비용이 많이 듭니다. RAID 4는 블록 수준 스트라이핑과 패리티 디스크를 사용하지만, 패리티 디스크가 병목 현상을 일으킬 수 있습니다.

RAID 3은 바이트 수준 스트라이핑과 패리티 디스크를 사용하여 데이터를 보호하지만, 비트 스트라이핑이 단일 블록 읽기를 위해 모든 디스크 접근을 강요하여 disk arm 이동을 낭비합니다. 이로 인해 RAID 3은 비효율적이어서 현재는 거의 사용되지 않습니다. 대신 블록 스트라이핑을 사용하는 RAID 5가 이러한 문제를 피하고 더 널리 사용됩니다.

RAID 5는 데이터를 블록 수준으로 스트라이핑하고, 패리티 정보를 분산하여 모든 디스크에 저장합니다. 이는 패리티 디스크에 대한 병목 현상을 줄여주며, 성능과 데이터 보호 간의 균형이 좋습니다. RAID 5는 낮은 업데이트 빈도와 대량의 데이터가 있는 애플리케이션에 적합합니다. 대규모 저장소를 더 저렴하게 구성할 수 있다는 장점이 있습니다.

RAID 6은 RAID 5와 유사하지만, 두 개의 패리티 블록을 사용하여 두 개의 디스크가 동시에 고장 나더라도 데이터를 복구할 수 있습니다. 이는 매우 높은 신뢰성을 제공하지만, 추가적인 패리티 정보로 인해 쓰기 성능이 약간 저하될 수 있습니다. RAID 6은 매우 높은 신뢰성이 요구되는 환경에서 사용되지만, 대부분의 애플리케이션에서는 RAID 1 또는 RAID 5가 충분한 안전성을 제공하기 때문에 잘 사용되지 않습니다.

결론적으로, RAID 레벨을 선택할 때는 애플리케이션의 요구 사항과 데이터 보호, 성능, 비용 효율성 등을 종합적으로 고려해야 합니다.

RAID 0은 성능이 중요한 경우, RAID 1은 데이터 보호가 중요한 경우, RAID 5는 성능과 데이터 보호의 균형이 중요한 경우, RAID 6은 매우 높은 신뢰성이 필요한 경우에 적합합니다. RAID 2와 RAID 4는 거의 사용되지 않으며, RAID 3도 비효율성 때문에 사용되지 않습니다.

Software RAID vs. Hardware RAID

소프트웨어 RAID는 RAID 구현이 전적으로 소프트웨어에서 이루어지며, 특별한 하드웨어 지원이 필요 없습니다. 이는 운영 체제 수준에서 구현되며, 비용이 적게 들지만 CPU와 메모리를 많이 사용하게 되어 시스템 성능에 영향을 미칠 수 있습니다.

반면, 하드웨어 RAID는 특별한 하드웨어를 통해 RAID를 구현합니다. 하드웨어 RAID는 비휘발성 메모리(NV-RAM)를 사용하여 실행 중인 쓰기 작업을 기록합니다. 전원 장애가 발생하면, 데이터 손상이 일어날 수 있습니다.

예를 들어, 미러링 시스템에서 한 블록을 쓰고 두 번째 블록을 쓰기 전에 전원 장애가 발생하면, 이러한 손상된 데이터는 전원이 복구될 때 검출되어야 합니다. NV-RAM은 잠재적으로 손상된 블록을 효율적으로 검출하는 데 도움을 줍니다. (그렇지 않으면 모든 디스크 블록을 읽고 미러/패리티 블록과 비교해야 합니다)

Hardware RAID Issues

하드웨어 RAID에서 발생할 수 있는 주요 이슈는 다음과 같습니다.

Latent failure (bit rot)

  • 데이터가 시간이 지나면서 손상되는 현상으로, 이전에 성공적으로 기록된 데이터가 손상될 수 있습니다.
  • 디스크 중 하나만 고장 나도 데이터 손실이 발생할 수 있습니다.

이를 해결하기 위한 기능들은 다음과 같습니다:

  1. Data scrubbing:
    • 지속적으로 잠재적 실패를 스캔하고, 복사본이나 패리티 데이터를 통해 복구합니다.
    • 이는 데이터를 주기적으로 확인하고 오류를 수정하는 과정입니다.
  2. Hot swapping:
    • 시스템이 작동 중일 때 전원을 끄지 않고 디스크를 교체하는 기능입니다.
    • 일부 하드웨어 RAID 시스템에서 지원하며, 복구 시간을 줄이고 시스템 가용성을 크게 향상시킵니다.
  3. Hot spare:
    • 많은 시스템이 예비 디스크를 온라인 상태로 유지하며, 디스크 고장 시 이를 즉시 교체합니다.
    • 이를 핫 스페어라고 하며, 고장난 디스크를 자동으로 대체하여 데이터 보호를 강화합니다.
  4. 단일 장애 지점 방지:
    • 많은 RAID 시스템은 시스템의 작동을 중단시키지 않도록 단일 장애 지점을 방지합니다.
    • 이를 위해 배터리 백업이 있는 중복 전원 공급 장치, 다중 컨트롤러 및 다중 인터커넥션을 사용합니다.

하드웨어 RAID는 데이터 손상 가능성을 줄이고, 복구 시간을 단축하며, 시스템의 가용성을 높이기 위해 여러 가지 방법을 사용합니다.

카테고리:

업데이트: