RAID 레벨별 성능과 장애 대응 방식

RAID 0·1·5·6·10·50·60의 성능, 용량 효율, 장애 허용 범위와 재구성 운영 시 주의점을 정리합니다.

2026-08-14 · 최초 발행 2026-01-12

여러 디스크를 하나의 저장소로 다루는 방식

RAID(Redundant Array of Independent Disks, 초기에는 Inexpensive Disks)는 여러 물리 디스크를 하나의 논리 단위로 묶어 성능, 신뢰성 또는 두 요소를 함께 높이는 저장 기술이다. 1987년 UC Berkeley 연구에서 출발했으며, 현재 서버와 스토리지 시스템에서 널리 쓰인다.

Patterson, Gibson, Katz는 1987년에 A Case for Redundant Arrays of Inexpensive Disks를 발표했다. 당시에는 고가의 대형 디스크를 저렴한 소형 디스크 어레이로 대체하는 것이 출발점이었다. 이후 고급 디스크도 쓰이게 되면서 Inexpensive는 Independent로 바뀌었고, RAID Advisory Board(RAB)가 표준을 관리했다.

RAID 구성에는 몇 가지 공통된 성질이 있다. 데이터 복제나 패리티로 장애에 대응하는 중복성, 여러 디스크에 동시에 접근하는 병렬성, 운영체제에서 단일 논리 디스크처럼 보이게 하는 투명성이 그것이다. 가동 중 디스크를 교체할 수 있는 핫스왑도 운영 환경에서 중요한 요소다.

병렬 I/O는 처리량과 IOPS를 높이고, 여러 디스크를 결합하면 더 큰 용량을 구성할 수 있다. 반면 RAID는 다중 디스크 동시 장애나 컨트롤러 장애까지 막아 주지 않으며 백업을 대신하지 않는다. 디스크 교체 뒤 재구성 시간이 필요하고, 대용량 디스크에서는 재구성 중 URE가 발생할 위험도 있다.

RAID 0은 성능을 위해 데이터를 분산한다

RAID 0은 데이터를 여러 디스크에 나누어 기록하는 스트라이핑만 사용한다. 중복 데이터가 없으므로 디스크 하나만 장애가 나도 전체 데이터를 잃는다. 대신 N개 디스크를 사용하면 이론상 N배 처리량을 낼 수 있고, 전체 디스크 용량을 모두 활용한다.

데이터 블록:  [A] [B] [C] [D] [E] [F] [G] [H]
Disk 0:       [A]     [C]     [E]     [G]
Disk 1:           [B]     [D]     [F]     [H]

읽기와 쓰기는 N개 디스크에서 병렬로 수행되어 각각 N배 향상될 수 있으며, IOPS는 각 디스크 IOPS의 합이 된다. 지연 시간은 단일 디스크와 유사하다.

실시간 4K/8K 비디오 스트리밍, 3D 렌더링 임시 파일, 데이터베이스 임시 테이블스페이스, 재생성 가능한 데이터가 RAID 0의 적용 대상이다.

RAID 1은 동일한 데이터를 미러에 기록한다

RAID 1은 모든 데이터를 N개 디스크에 동일하게 복제한다. N-1개 디스크 장애까지 허용할 수 있으며, 읽기는 여러 디스크에 분산할 수 있다. 쓰기는 모든 디스크에 기록해야 하므로 속도는 단일 디스크와 유사하다.

데이터 블록:  [A] [B] [C] [D]
Disk 0:       [A] [B] [C] [D]
Disk 1:       [A] [B] [C] [D] (미러)

두 디스크 구성에서는 병렬 읽기로 최대 2배 성능을 기대할 수 있다. 용량 효율은 2개 미러링에서 50%이며, N개 미러링에서는 1/N이다. 장애가 난 디스크는 전체 데이터를 복사하는 방식으로 복구한다.

부팅 드라이브, 데이터베이스 트랜잭션 로그, 시스템 설정과 구성 정보, 2개 디스크로 안정성을 확보하려는 소규모 서버에 적합하다.

RAID 5는 분산 패리티로 단일 장애를 복구한다

RAID 5는 패리티 블록을 특정 디스크에 몰아두지 않고 모든 디스크에 분산한다. N개 디스크 중 N-1개 용량을 사용할 수 있고, 디스크 1개가 장애가 나도 패리티를 이용해 복구한다. 그 대가로 패리티 계산과 갱신이 쓰기 성능에 영향을 준다.

Disk 0:  [A0] [B1] [C2] [Dp]
Disk 1:  [A1] [B2] [Cp] [D0]
Disk 2:  [A2] [Bp] [C0] [D1]
Disk 3:  [Ap] [B0] [C1] [D2]

Ap = A0 ⊕ A1 ⊕ A2

작은 랜덤 쓰기에서는 Read-Modify-Write가 발생한다. 기존 데이터와 기존 패리티를 읽고, 새 패리티를 계산한 뒤 새 데이터와 패리티를 기록하므로 4회 디스크 접근이 필요하다. Reconstruct-Write는 같은 스트라이프의 다른 데이터를 모두 읽어 새 패리티를 계산한 뒤 데이터와 패리티를 쓴다. Write-Back 캐시는 이런 쓰기 성능을 개선하는 데 사용된다.

RAID 5 Write (SmallRandom)Read Old DataRead Old ParityCalculate New ParityWrite New DataWrite New Parity4 Disk Operations

읽기는 (N-1)개 디스크에서 병렬로 처리할 수 있다. 작은 쓰기는 4배 오버헤드가 있어 느리지만, 큰 쓰기는 양호하다. 용량 효율은 (N-1)/N이며 4디스크에서는 75%, 6디스크에서는 83%다. 재구성할 때는 패리티를 계산해야 하므로 시간이 오래 걸린다.

대용량 파일 공유, 백업 데이터 장기 보관, 정적 콘텐츠 저장, 읽기 위주 아카이브에 사용할 수 있다.

RAID 6은 이중 패리티를 사용한다

RAID 6은 P+Q라는 두 독립 패리티를 기록한다. 동시에 2개 디스크가 장애가 나도 복구할 수 있으며, N개 디스크 중 N-2개 용량을 사용한다. Q 패리티 계산에는 Reed-Solomon 코드를 사용한다.

Disk 0:  [A0] [B1] [Cp] [Dq]
Disk 1:  [A1] [Bp] [C0] [D0]
Disk 2:  [Ap] [B0] [C1] [D1]
Disk 3:  [Aq] [Bq] [Cq] [Dp]

P 패리티: XOR 기반
Q 패리티: Galois Field 연산 기반

읽기 성능은 RAID 5와 유사하며 (N-2)개 디스크에서 병렬 읽기를 수행한다. 쓰기는 P와 Q를 모두 계산해야 하므로 RAID 5보다 느리다. 용량 효율은 (N-2)/N으로, 6디스크에서는 67%, 8디스크에서는 75%다. 재구성 중 추가 장애가 발생해도 안전하다는 점이 차이다.

TB~PB급 저장 시스템, 데이터 무결성이 중요한 장기 아카이브, 높은 가용성이 필요한 시스템, 4TB+ 대용량 디스크의 재구성 안전성을 고려해야 하는 환경에 적용한다.

RAID 10은 미러 쌍을 스트라이핑한다

RAID 10(1+0)은 RAID 1으로 먼저 미러를 만들고 그 위를 RAID 0으로 스트라이핑하는 방식이다. 읽기와 쓰기 모두 빠르며, 미러 쌍이 아닌 디스크들의 동시 장애를 허용한다. 최소 4개 디스크가 필요하고 용량 효율은 50%다.

        RAID 0 (Stripe)
       /                \
   RAID 1             RAID 1
   /    \             /    \
Disk0  Disk1      Disk2  Disk3
(Mirror Pair 0)   (Mirror Pair 1)

읽기는 모든 디스크에서 병렬로 수행되어 N/2배, 쓰기는 N/2개 미러 쌍에 병렬로 수행되어 N/2배 성능을 낼 수 있다. 장애 복구는 패리티를 다시 계산하는 대신 미러 디스크를 복사하면 되므로 빠르다.

RAID 01은 스트라이프를 먼저 만들고 그 결과를 미러링한다. 이 경우 장애가 발생하면 전체 스트라이프 세트를 잃을 수 있다. RAID 10은 미러를 먼저 만들기 때문에 더 안전하며 일반적으로 선호된다.

RAID 10 vs RAID 01RAID 10RAID 01Mirror FirstThen StripeSafer: Multiple DiskFailures OKStripe FirstThen MirrorRisky: One Failure perStripe

고성능 OLTP 데이터베이스, 높은 I/O 부하의 이메일 서버, 금융 거래 시스템, VM 이미지를 저장하는 가상화 호스트가 대표적인 사용처다.

RAID 50과 RAID 60이 맞는 환경

RAID 50(5+0)은 여러 RAID 5 세트를 RAID 0으로 스트라이핑한다. RAID 5보다 쓰기 성능을 높일 수 있고, 각 RAID 5 세트에서 1개씩의 장애를 허용한다. RAID 5 x 2 구성에는 최소 6디스크가 필요하다. 높은 처리량과 용량이 필요한 대규모 파일 서버, 멀티미디어 콘텐츠를 전송하는 스트리밍 서버, 분산 파일시스템 하부 스토리지에 적용한다.

RAID 60(6+0)은 여러 RAID 6 세트를 RAID 0으로 스트라이핑한다. 각 세트에서 2개씩의 디스크 장애를 허용하며, RAID 6 x 2에는 최소 8디스크가 필요하다. 많은 디스크와 용량 오버헤드가 필요하므로 비용은 높다. 최고 수준 가용성이 필요한 엔터프라이즈 스토리지, 대규모 클라우드 스토리지, 금융·의료처럼 데이터 무결성이 중요한 규제 산업이 대상이다.

컨트롤러와 운영체제가 RAID를 처리하는 차이

하드웨어 RAID는 전용 RAID 처리 카드가 동작을 맡는다. 호스트 CPU 부하가 없고, 배터리 백업 캐시 메모리(BBU 캐시)와 전용 프로세서로 패리티 계산 성능을 제공한다. 대신 컨트롤러 카드 비용이 추가된다.

소프트웨어 RAID는 운영체제 커널에서 RAID 기능을 제공한다. 별도 하드웨어가 필요 없어 비용 효율이 좋고, 구성 변경과 관리가 유연하다. RAID 처리는 호스트 CPU가 담당하지만 현대 CPU로 충분한 성능을 낼 수 있다.

하이브리드(FakeRAID)는 메인보드 칩셋의 BIOS 기반 RAID 기능을 사용한다. 실제 처리는 OS 드라이버가 맡으며, 메인보드 기본 기능을 활용하는 중간 비용 방식이다. 고급 기능은 제한적이다.

RAID ImplementationHardware RAIDSoftware RAIDHybrid (FakeRAID)Dedicated ControllerBest PerformanceHigh CostOS KernelCPU OverheadLow CostChipset/BIOSDriver-basedMedium Cost

재구성 중에는 성능과 읽기 오류를 함께 봐야 한다

디스크 장애를 감지하면 컨트롤러는 핫스왑으로 새 디스크를 장착한 뒤 재구성을 자동 시작한다. 재구성은 정상 I/O와 병행되는 백그라운드 작업이며, 용량과 부하에 따라 수 시간~수일이 걸린다.

URE(Unrecoverable Read Error)는 재구성 중 다른 디스크에서 읽기 오류가 발생하는 상황이다. 디스크 용량이 커질수록 위험이 증가하며, 발생 확률은 10^14~10^15 비트당 1회다. RAID 6 또는 RAID 10을 사용하고 정기적인 스크러빙을 실행하는 것이 대응 방법이다.

스크러빙은 모든 데이터와 패리티를 검증해 URE가 발생하기 전에 잠재 오류를 찾아 복구한다. 주간 또는 월간으로 자동 실행할 수 있고, 백그라운드에서 동작해 성능 영향은 최소화한다.

RAID스토리지디스크 배열운영체제데이터 보호