단일 디스크는 느리고, 작고, 고장이 나기 쉽다. 그렇다면 여러 개의 디스크를 묶어서 마치 하나의 크고, 빠르고, 안전한 디스크처럼 보이게 만들면 어떨까? 이것이 바로 RAID(Redundant Array of Inexpensive Disks)의 기본 아이디어다.
RAID는 운영체제(파일 시스템)에게 투명(Transparent)하다. 즉, OS는 뒤에 디스크가 몇 개가 있는지, 어떻게 묶여 있는지 신경 쓰지 않고 그냥 하나의 논리적인 블록 장치로 인식한다.
RAID를 평가하는 기준은 크게 세 가지다.
- 용량 (Capacity): N개의 디스크를 썼을 때 실제로 사용할 수 있는 공간은 얼마인가?
- 신뢰성 (Reliability): 디스크가 몇 개 고장 나도 데이터를 잃지 않는가?
- 성능 (Performance): 읽기/쓰기 속도가 얼마나 빨라지는가? (대기 시간 및 처리량)
OSTEP에서 중요하게 다루는 RAID 레벨 0, 1, 4, 5를 중심으로 이 세 가지 기준을 분석해 본다.
1. RAID Level 0: 스트라이핑 (Striping)
RAID 0은 데이터를 여러 디스크에 쪼개서 분산 저장하는 방식이다. 엄밀히 말하면 중복(Redundancy)이 없으므로 RAID의 'R'에는 부합하지 않지만, 성능과 용량을 극대화한 방식이다.

특징
- 방식: 데이터를 청크(Chunk) 단위로 잘라서 디스크 0, 디스크 1, ... 디스크 N에 순서대로 라운드 로빈 방식으로 저장한다.
- 용량: $N$개의 디스크가 있다면 $N \times B$ (B는 디스크 용량). 즉, 100% 활용한다.
- 신뢰성: 0. 디스크가 하나만 고장 나도 전체 데이터가 손실된다.
- 성능: 가장 뛰어나다.
- 순차 읽기/쓰기: 모든 디스크를 병렬로 사용하므로 $N \times S$ (S는 단일 디스크 속도).
- 랜덤 읽기/쓰기: 데이터가 골고루 퍼져 있다면 역시 병렬 처리가 가능하여 빠르다.
2. RAID Level 1: 미러링 (Mirroring)
RAID 1은 데이터를 있는 그대로 복사해서 다른 디스크에 똑같이 저장하는 방식이다. 보통 RAID 10(1+0) 형태로 많이 쓰인다.

특징
- 방식: 데이터 블록을 쓸 때, 원본 디스크와 미러(사본) 디스크에 동시에 쓴다.
- 용량: $N / 2$. 디스크를 100개 사도 50개 분량밖에 못 쓴다. 비용이 비싸다.
- 신뢰성: 좋다. 미러링된 쌍 중 하나가 살아있으면 데이터는 안전하다. (최대 N/2개 고장 허용)
- 성능:
- 읽기: 임의의 디스크에서 읽으면 되므로 처리량이 좋다.
- 쓰기: 두 디스크에 모두 써야 완료되므로, 둘 중 느린 디스크의 속도에 맞춰진다. (하지만 논리적으로 크게 느리진 않다.)
3. RAID Level 4: 패리티 (Parity)와 패리티 디스크
RAID 1의 용량 낭비 문제(50% 손실)를 해결하기 위해 등장했다. 오류 검출 및 복구를 위해 패리티(Parity) 비트를 사용한다. 주로 XOR 연산($\oplus$)을 이용한다.
XOR의 마법: $C = A \oplus B$ 일 때, C와 B만 알면 A를 복구할 수 있다. ($A = C \oplus B$)
특징
- 방식: N-1개의 디스크에는 데이터를 저장하고, 마지막 1개의 디스크를 전용 패리티 디스크로 쓴다. 각 행(Stripe)의 데이터들을 XOR 한 값을 패리티 디스크에 저장한다.
- 용량: $N - 1$. 디스크 하나 분량만 손해 보면 되므로 RAID 1보다 훨씬 효율적이다.
- 신뢰성: 디스크 1개가 고장 나면, 나머지 디스크들과 패리티 디스크를 XOR 연산하여 데이터를 복구할 수 있다. (1개 고장 허용)
- 성능 (중요!):
- 순차 읽기/쓰기: 빠르다. (디스크 N-1개 병렬 사용)
- 랜덤 쓰기 (Small Write Problem): 여기가 문제다. 데이터 블록 하나만 수정하려고 해도, 패리티를 다시 계산해야 한다.
- 기존 데이터 읽기
- 기존 패리티 읽기
- 새 패리티 계산 ($P_{new} = (D_{old} \oplus D_{new}) \oplus P_{old}$)
- 새 데이터 쓰기
- 새 패리티 쓰기
- 결국 모든 쓰기 작업이 패리티 디스크 하나에 집중된다. 병목현상(Bottleneck)이 발생하여 성능이 저하된다.
4. RAID Level 5: 회전 패리티 (Rotating Parity)
RAID 4의 "패리티 디스크 병목" 문제를 해결하기 위해 고안되었다. 현재 가장 널리 쓰이는 방식 중 하나다.
특징
- 방식: RAID 4와 같지만, 패리티 블록을 한 디스크에 몰아두지 않고 모든 디스크에 번갈아 가며(Rotate) 분산 저장한다.
- 용량: $N - 1$. (RAID 4와 동일)
- 신뢰성: 1개 고장 허용. (RAID 4와 동일)
- 성능:
- 패리티 업데이트 작업이 모든 디스크에 분산되므로, RAID 4의 병목 현상이 사라진다.
- 랜덤 쓰기 성능이 RAID 4보다 월등히 좋다.
'Deep Dive > OS' 카테고리의 다른 글
| [OSTEP] 스터디 15주차 Part.2 파일 시스템 구현 (0) | 2025.12.09 |
|---|---|
| [OSTEP] 스터디 15주차 Part.1 파일과 디렉터리 (1) | 2025.12.09 |
| [OSTEP] 스터디 14주차 - 영속성 1 Part.2 (0) | 2025.12.02 |
| [OSTEP] 스터디 14주차 - 영속성 1 Part.1 (0) | 2025.12.02 |
| [OSTEP] 스터디 13주차 - 병행성 3 Part.2 (0) | 2025.11.25 |
