Ryotta's Basic

Storage
💿 Storage 검증완료

RAID 기술

개요

RAID(Redundant Array of Independent Disks)는 여러 개의 물리적 디스크를 하나의 논리적 볼륨으로 묶어 성능 향상, 데이터 중복, 또는 두 가지를 동시에 달성하는 스토리지 가상화 기술이다. 1988년 Berkeley 대학교의 Patterson, Gibson, Katz가 제안한 이래 엔터프라이즈 스토리지의 기반 기술로 자리잡았다. 각 RAID 레벨은 스트리핑(striping), 미러링(mirroring), 패리티(parity) 기법의 조합으로 서로 다른 트레이드오프를 제공한다.

최근 NVMe SSD와 CXL 인터커넥트의 발전으로 RAID의 적용 범위가 확대되고 있다. 소프트웨어 RAID(mdadm, ZFS RAID-Z, Btrfs RAID)와 하드웨어 RAID 컨트롤러 모두 최신 스토리지 인프라에서 중요한 역할을 하며, 특히 RAID 10은 데이터베이스 서버에서, RAID 5/6은 대용량 아카이브 시스템에서 널리 사용된다. 다만 RAID는 백업을 대체하지 않으며, 재해 복구 계획과 함께 설계되어야 한다.

핵심 개념

스트리핑 (Striping)

데이터를 블록 단위로 여러 디스크에 분산하여 기록하는 기법이다. 각 디스크가 독립적으로 읽기/쓰기를 수행하므로 병렬 I/O가 가능해진다. 스트라이프 크기(stripe size)는 한 디스크에 기록되는 연속 블록의 수로, 워크로드 특성에 따라 64KB~1MB 사이에서 조정한다.

  • 장점: 읽기/쓰기 대역폭이 디스크 수에 비례하여 증가
  • 단점: 데이터 중복이 없어 디스크 1개라도 고장 나면 전체 데이터 손실

미러링 (Mirroring)

동일한 데이터를 두 개 이상의 디스크에 동시에 기록하여 완전한 중복성을 보장하는 기법이다. RAID 1이 대표적이며, 읽기 시 여러 디스크에서 분산 읽기가 가능하여 읽기 성능도 향상된다.

  • 장점: 높은 데이터 보호, 읽기 성능 향상
  • 단점: 디스크 용량 효율이 50%(2미러 기준)로 낮음

패리티 (Parity)

XOR 연산을 통해 패리티 블록을 계산하고, 디스크 고장 시 나머지 디스크의 데이터와 패리티로 누락된 데이터를 복구하는 기법이다. RAID 4는 전용 패리티 디스크를, RAID 5/6은 패리티를 모든 디스크에 분산시킨다.

  • 장점: 미러링보다 높은 용량 효율, 단일 또는 이중 디스크 고장 보호
  • 단점: 패리티 계산 오버헤드, 쓰기 시 small-write penalty

Hot Spare (핫 스페어)

RAID 어레이에 여유 디스크를 미리 연결해 두어, 구성 디스크가 고장나면 자동으로 재구성(rebuild)을 시작하는 메커니즘이다. 재구성 시간을 대폭 줄여 이중 고장 위험을 감소시킨다.

  • Dedicated Hot Spare: 특정 RAID 어레이에 전용으로 할당된 스페어
  • Global Hot Spare: 여러 어레이에서 공유하는 스페어 디스크

비교/분석

주요 RAID 레벨 비교표

항목 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10
최소 디스크 수 2 2 3 4 4
용량 효율 100% 50% (n-1)/n (n-2)/n 50%
읽기 성능 n배 2배 n-1배 n-2배 2배
쓰기 성능 n배 1배 (n-1)/2배 (n-2)/3배 1배
고장 허용 0 n-1 1 2 1 per mirror
재구성 시간 없음 즉시 길다 매우 김 보통
주요 용도 임시 데이터, 캐시 OS, 로그 범용 파일 서버 대용량 저장 DB, IOPS

용량 및 성능 계산

RAID 레벨 총 용량 읽기 대역폭 쓰기 대역폭 고장 허용
RAID 0 (4disk) 4 × S 4 × R 4 × W 0
RAID 1 (2disk) 1 × S 2 × R 1 × W 1
RAID 5 (4disk) 3 × S 3 × R 3/2 × W 1
RAID 6 (4disk) 2 × S 2 × R 2/3 × W 2
RAID 10 (4disk) 2 × S 2 × R 1 × W 1 (mirroring)

S: 디스크 용량, R: 읽기 속도, W: 쓰기 속도

동작 원리

RAID 0 — 블록 레벨 스트리핑

데이터 블록이 순차적으로 디스크 0, 1, 2, ...에 분산 기록된다. 예를 들어 4디스크 RAID 0에서 블록 A1~A4가 각각 디스크 0~3에 기록되고, B1~B4도 동일하게 분산된다. 스트라이프 크기가 설정되면 모든 디스크에서 동일하게 유지된다. n개 디스크로 I/O 요청이 병렬 처리되므로 처리량은 이상적으로 n배에 가깝게 증가한다.

RAID 1 — 미러링

동일한 데이터가 두 디스크에 동시에 기록된다. 읽기 요청은 두 디스크 중 어느 것이든 처리할 수 있어 무작위 읽기 성능이 향상된다. 쓰기 성능은 가장 느린 디스크 속도로 제한된다. 디스크 1개가 고장나도 나머지 디스크에서 데이터가 완전히 복구된다.

RAID 5 — 블록 레벨 스트리핑 + 분산 패리티

블록 단위 스트리핑과 XOR 패리티를 분산 배치한다. 각 스트라이프에서 하나의 블록이 패리티로 사용되며, 패리티 블록은 모든 디스크에 고르게 분산된다. 디스크 1개 고장 시 나머지 디스크의 데이터와 패리티를 XOR 연산하여 복구한다.

Small-Write Penalty: 쓰기 시 스트라이프의 나머지 블록을 읽고 새 패리티를 계산한 후 데이터 블록과 패리티 블록을 모두 기록해야 한다. 이 과정에서 읽기 2회 + 쓰기 2회가 발생한다.

RAID 6 — 블록 레벨 스트리핑 + 이중 분산 패리티

RAID 5와 동일한 스트리핑에 두 개의 패리티 블록(P, Q)을 추가한다. P는 XOR 패리티, Q는 Reed-Solomon 또는 EVENODD 같은 erasure code로 계산된다. 디스크 2개가 동시에 고장나도 데이터를 복구할 수 있다.

  • P 블록: 단순 XOR 연산 (RAID 5와 동일)
  • Q 블록: 가우스 체크 연산 또는 기타 이류코드 기반 계산

RAID 10 — 미러링 + 스트리핑

RAID 1(미러링)을 먼저 구성한 후, 그 위에 RAID 0(스트리핑)을 적용하는 네스티드 RAID이다. 최소 4디스크 필요하며, 각 미러 쌍에서 1개 디스크씩 고장나도 데이터가 안전하다. 가장 높은 IOPS와 안정성을 제공하지만, 디스크 용량의 절반만 사용 가능하다.

RAID 50 / RAID 60 — 네스티드 RAID

  • RAID 50: RAID 5 세트를 RAID 0으로 스트리핑. 최소 6디스크. 각 RAID 5 세트에서 1개 고장 허용.
  • RAID 60: RAID 6 세트를 RAID 0으로 스트리핑. 최소 8디스크. 각 RAID 6 세트에서 2개 고장 허용.

장단점

RAID 0

장점 단점
최고 수준의 읽기/쓰기 성능 데이터 중복 없음
100% 용량 활용 디스크 1개 고장 시 전체 손실
구현이 간단 핫스팟 가능성이 높음

RAID 1

장점 단점
높은 데이터 보호 50% 용량 효율
읽기 성능 향상 쓰기 성능 향상 없음
즉시 장애 조치 디스크 수에 비해 비용 높음

RAID 5

장점 단점
높은 용량 효율 large-stripe에서 small-write penalty
1 디스크 고장 보호 재구성 시간이 김 (대용량 디스크)
범용성 재구성 중 이중 고장 시 데이터 손실

RAID 6

장점 단점
2 디스크 동시 고장 보호 RAID 5보다 낮은 용량 효율
재구성 중 안정성 향상 이중 패리티 계산 오버헤드
large-drive 환경에 적합 쓰기 성능 저하

RAID 10

장점 단점
최고 수준의 IOPS 및 안정성 50% 용량 효율
재구성 시간이 짧음 높은 하드웨어 비용
랜덤 I/O에 최적 모든 디스크가 고성능 필요

핫스팟 (Hot Spot)

RAID 어레이에서 특정 디스크에 I/O가 집중되는 현상이다. RAID 4의 전용 패리티 디스크, RAID 5/6의 메타데이터 영역, 또는 하나의 파일에 집중적인 접근 시 발생할 수 있다.

핫스팟 방지 전략

전략 설명
스트라이프 크기 조정 워크로드에 맞는 스트라이프 크기로 분산
디스크 균형 배치 동일 성능/용량의 디스크로 구성
RAID 레벨 변경 RAID 5 → RAID 10으로 변경하여 쓰기 부하 분산
메타데이터 분리 메타데이터 전용 볼륨 분리
HW RAID 컨트롤러 캐시 배터리 백업 캐시로 쓰기 버퍼링

핫스팟이 자주 발생하는 환경

  • 소수의 디스크에 반복적인 쓰기 워크로드
  • 데이터베이스의 인덱스/로그 영역
  • 가상 머신의 스냅샷/체크포인트 영역
  • 빅데이터 워크로드의 셔플/정렬 단계

운영 시 주의점

재구성과 URE(Unrecoverable Read Error)

대용량 HDD나 SSD로 RAID 5/6을 구성하면 디스크 1개 고장 후 재구성하는 동안 나머지 모든 디스크를 거의 전부 읽어야 한다. 이때 잠복 배드 블록이나 URE가 발생하면 RAID 5는 전체 볼륨 손실로 이어질 수 있고, RAID 6도 추가 오류 위치에 따라 복구 여유가 빠르게 줄어든다. 그래서 대용량 어레이에서는 RAID 5보다 RAID 6 또는 RAID 10을 선호하는 경우가 많다.

Patrol Read / Data Scrubbing

실제 운영에서는 정기적으로 patrol read 또는 data scrubbing을 수행해 평소 접근하지 않는 블록까지 읽고, 잠복 오류를 재구성 전에 미리 발견한다. 이 과정은 패리티 기반 RAID의 신뢰성을 높이는 핵심 운영 작업이며, 단순히 RAID 레벨을 선택하는 것만큼 중요하다.

관련 기술

참고 문헌

  • Patterson, D., Gibson, G., & Katz, R. (1988). "A Case for Redundant Arrays of Inexpensive Disks (RAID)". ACM SIGMOD.
  • Chen, P., Lee, E., Gibson, G., Katz, R., & Patterson, D. (1994). "RAID: High-Performance, Reliable Secondary Storage". ACM Computing Surveys.
  • SNIA: Common RAID Disk Data Format (DDF) Specification
  • The RAID Book, 6th Edition, RAID Advisory Board (1997)
  • Intel: Enterprise vs Desktop Hard Drives
  • Linux MD RAID / mdadm 문서: scrub, check, repair 작업과 소프트웨어 RAID 운영

핵심 정리

  1. RAID 0은 성능이 최우선인 환경(임시 데이터, 캐시, 과학 계산)에 적합하며, 데이터 중복이 없어 단일 디스크 고장 시 전체 손실된다.
  2. RAID 1은 OS 볼륨, 로그, 데이터베이스 트랜잭션 로그 등 데이터 보호가 중요한 환경에 적합하며, 50% 용량 효율을 감수해야 한다.
  3. RAID 5는 범용 파일 서버에서 가장 널리 사용되며, 높은 용량 효율과 단일 디스크 고장 보호를 제공하지만, 대용량 디스크 환경에서는 재구성 시간이 길어 이중 고장 위험이 있다.
  4. RAID 6은 RAID 5의 이중 고장 위험을 해결하며, 대용량 스토리지 시스템에서 안정성을 우선시할 때 선택한다.
  5. RAID 10은 데이터베이스, 이메일, 웹 서버 등 고성능 IOPS가 필요한 환경에서 최고의 성능과 안정성을 제공하지만, 디스크 비용이 높다.
RAID 레벨 비교 개요

RAID 동작 원리