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 레벨을 선택하는 것만큼 중요하다.
관련 기술
- 파일 시스템 개요: RAID 위에서 동작하는 파일 시스템의 선택과 성능
- NVMe Architecture: NVMe 스토리지 인터커넥트와 RAID의 통합
- SSD Internal Parallelism: SSD 내부 병렬성과 RAID 성능
- FTL WearLeveling GarbageCollection: NAND FTL과 RAID의 상호작용
- DRAM Architecture: 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 운영
핵심 정리
- RAID 0은 성능이 최우선인 환경(임시 데이터, 캐시, 과학 계산)에 적합하며, 데이터 중복이 없어 단일 디스크 고장 시 전체 손실된다.
- RAID 1은 OS 볼륨, 로그, 데이터베이스 트랜잭션 로그 등 데이터 보호가 중요한 환경에 적합하며, 50% 용량 효율을 감수해야 한다.
- RAID 5는 범용 파일 서버에서 가장 널리 사용되며, 높은 용량 효율과 단일 디스크 고장 보호를 제공하지만, 대용량 디스크 환경에서는 재구성 시간이 길어 이중 고장 위험이 있다.
- RAID 6은 RAID 5의 이중 고장 위험을 해결하며, 대용량 스토리지 시스템에서 안정성을 우선시할 때 선택한다.
- RAID 10은 데이터베이스, 이메일, 웹 서버 등 고성능 IOPS가 필요한 환경에서 최고의 성능과 안정성을 제공하지만, 디스크 비용이 높다.