RAID — 0, 1, 5, 6, 10 구성과 선택 기준
RAID는 여러 디스크를 조합해서 성능이나 안정성을 높이는 기술입니다. 서버 환경에서 거의 필수적으로 사용되고, 각 레벨의 차이를 물어봅니다.
RAID란
RAID(Redundant Array of Independent Disks)는 여러 개의 물리 디스크를 묶어 하나의 논리 디스크로 사용하는 기술 입니다.
목적:
- 성능 향상: 여러 디스크에 동시 읽기/쓰기 (병렬 I/O)
- 안정성 향상: 디스크 하나가 고장나도 데이터 보존
- 둘 다 동시에 달성하려면 트레이드오프가 필요
RAID 0 — 스트라이핑
데이터를 여러 디스크에 분산 저장(스트라이핑) 합니다. 중복 저장 없음.
데이터: A B C D E F G H
디스크1: A C E G
디스크2: B D F H
| 항목 | 값 |
|---|---|
| 최소 디스크 수 | 2 |
| 사용 가능 용량 | N × 디스크 용량 (100%) |
| 읽기 성능 | N배 향상 |
| 쓰기 성능 | N배 향상 |
| 내결함성 | 없음 — 하나 고장 = 전체 데이터 손실 |
용도: 임시 데이터, 캐시, 백업이 있는 환경에서 순수 성능이 필요할 때
RAID 1 — 미러링
같은 데이터를 두 디스크에 동일하게 복사(미러링) 합니다.
데이터: A B C D
디스크1: A B C D
디스크2: A B C D (동일한 복사본)
| 항목 | 값 |
|---|---|
| 최소 디스크 수 | 2 |
| 사용 가능 용량 | N/2 × 디스크 용량 (50%) |
| 읽기 성능 | 2배 (두 디스크에서 동시 읽기 가능) |
| 쓰기 성능 | 1배 (양쪽에 다 써야 함) |
| 내결함성 | 1개 디스크 고장 허용 |
용도: OS 부팅 디스크, 중요한 로그, 소규모 데이터베이스
RAID 5 — 분산 패리티
데이터를 스트라이핑하면서 패리티(오류 복구 정보)를 분산 저장 합니다.
디스크1: A1 B1 Cp D1
디스크2: A2 Bp C1 D2
디스크3: Ap B2 C2 Dp
p = 패리티 블록 (다른 블록들의 XOR)
패리티 복구 원리:
A1 XOR A2 = Ap
→ A1이 손실되면: A1 = A2 XOR Ap 로 복구
| 항목 | 값 |
|---|---|
| 최소 디스크 수 | 3 |
| 사용 가능 용량 | (N-1) × 디스크 용량 |
| 읽기 성능 | 좋음 (스트라이핑 효과) |
| 쓰기 성능 | 패리티 계산으로 RAID 0보다 느림 |
| 내결함성 | 1개 디스크 고장 허용 |
용도: 웹 서버, 파일 서버 — 용량 효율과 안정성의 균형
RAID 6 — 이중 분산 패리티
RAID 5와 비슷하지만 패리티를 2개 저장합니다. 동시에 2개 디스크가 고장나도 복구 가능합니다.
| 항목 | 값 |
|---|---|
| 최소 디스크 수 | 4 |
| 사용 가능 용량 | (N-2) × 디스크 용량 |
| 내결함성 | 2개 디스크 고장 허용 |
| 쓰기 성능 | RAID 5보다 느림 (패리티 2개 계산) |
용도: 대용량 스토리지, 디스크 수가 많은 환경 (디스크가 많을수록 동시 고장 확률 증가)
RAID 10 (RAID 1+0) — 미러링 + 스트라이핑
RAID 1(미러링)을 먼저 만들고, 그 미러 세트를 RAID 0(스트라이핑)으로 묶습니다.
RAID 0 (스트라이핑)
┌──────────┬──────────┐
RAID 1 RAID 1
┌────┬────┐ ┌────┬────┐
│D1 │D2 │ │D3 │D4 │
│A,C │A,C │ │B,D │B,D │
└────┴────┘ └────┴────┘
미러 미러
| 항목 | 값 |
|---|---|
| 최소 디스크 수 | 4 |
| 사용 가능 용량 | N/2 × 디스크 용량 (50%) |
| 읽기 성능 | 매우 좋음 |
| 쓰기 성능 | 좋음 (패리티 계산 없음) |
| 내결함성 | 각 미러 세트에서 1개씩 고장 허용 |
용도: 데이터베이스 서버 — 성능과 안정성 모두 중요한 환경. 비용이 높지만 가장 많이 선택됨.
RAID 비교 정리
| RAID | 방식 | 최소 디스크 | 용량 효율 | 내결함성 | 성능 | 주 용도 |
|---|---|---|---|---|---|---|
| 0 | 스트라이핑 | 2 | 100% | 없음 | 최고 | 임시 데이터 |
| 1 | 미러링 | 2 | 50% | 1개 | 읽기 좋음 | OS, 로그 |
| 5 | 분산 패리티 | 3 | (N-1)/N | 1개 | 읽기 좋음 | 파일 서버 |
| 6 | 이중 패리티 | 4 | (N-2)/N | 2개 | 보통 | 대용량 스토리지 |
| 10 | 미러+스트라이프 | 4 | 50% | 미러당 1개 | 최고 | 데이터베이스 |
소프트웨어 RAID vs 하드웨어 RAID
| 소프트웨어 RAID | 하드웨어 RAID | |
|---|---|---|
| 구현 | OS에서 처리 (mdadm) | 전용 RAID 카드(컨트롤러) |
| 비용 | 무료 | RAID 카드 비용 |
| CPU 부하 | 있음 (패리티 계산) | 없음 (전용 칩) |
| 성능 | 중간 | 좋음 (캐시 포함) |
# 리눅스 소프트웨어 RAID 생성 (RAID 1)
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
# RAID 상태 확인
cat /proc/mdstat
핵심 포인트
- RAID 5 vs RAID 10: DB는 RAID 10(쓰기 성능 + 안정성), 파일 서버는 RAID 5(용량 효율)
- RAID는 백업이 아닙니다: RAID는 디스크 고장에 대한 대비이지, 실수로 삭제한 데이터는 복구 불가
- RAID 5의 Write Hole: 정전 시 데이터와 패리티가 불일치할 수 있는 문제 → 배터리 백업 캐시(BBU)로 대응
정리
RAID 선택은 성능 vs 안정성 vs 비용 의 트레이드오프입니다. 각 레벨의 최소 디스크 수, 용량 효율, 내결함성을 정확히 알고 있어야 하며, "데이터베이스에는 RAID 10, 파일 서버에는 RAID 5"라는 실제 판단 기준을 설명할 수 있으면 좋습니다.