이론으로만 외우면 금방 잊기 때문에 실제로 세팅해보고 테스트한 결과를 작성하려고 한다.

실험 환경
테스트 종류:
데이터를 앞에서부터 뒤까지 순서대로 연속해서 읽는 작업이다. 디스크 헤드(특히 HDD)가 이동할 필요 없이 연속된 영역을 읽기 때문에 가장 빠른 성능이 나온다.
0MB → 1MB → 2MB → 3MB → …
케이스 정리
데이터를 앞에서부터 뒤까지 연속된 공간에 순서대로 기록하는 작업이다.
순차 읽기와 마찬가지로 디스크 헤드가 크게 이동하지 않아 HDD에서도 높은 쓰기 성능을 낼 수 있다.
0MB ← 1MB ← 2MB ← 3MB ← …
다만 RAID 구조에 따라 쓰기 성능 차이가 크게 난다.
특히 RAID5는 패리티 계산 때문에 순차 쓰기가 매우 느릴 수 있다.
케이스 정리
데이터를 임의(random) 위치에서 작은 단위(4KB) 로 읽는 작업이다.
HDD에서는 디스크 헤드가 다양한 위치로 이동해야 하기에 가장 느린 접근 패턴이다.
200MB → 12GB → 5MB → 340KB → …
랜덤 읽기는 OS와 데이터베이스에서 가장 자주 발생하며, RAID 구조에 따라 성능 차이가 크게 난다.
HDD 기반에서는 여러 디스크에 분산된 데이터를 병렬로 읽을 수 있는 RAID5가 상대적으로 이점이 있을 수 있다.
케이스 정리
임의의 위치에 작은 블록(4KB) 을 기록하는 작업이다.
디스크 헤드 이동 + RAID 패리티/미러 구조 때문에 RAID 종류에 따라 성능 차이가 매우 큰 영역이다.
3GB 위치 ← 450MB 위치 ← 12KB 위치 ← 77GB 위치 …
특히 RAID5는 패리티 연산으로 인해 랜덤 쓰기가 매우 느리고,
RAID10은 미러 구조 + 스트라이핑 덕분에 랜덤 쓰기 성능이 가장 뛰어나다.
케이스 정리
| RAID | Seq Read (MiB/s) | Seq Write (MiB/s) | Rand Read (IOPS) | Rand Write (IOPS) |
|---|---|---|---|---|
| RAID0 | 191.7 | 185 | 131 | 453 |
| RAID1 | 26.6 | 67.6 | 13 | 45 |
| RAID5 | 144 | 13.1 | 1864 | 94 |
| RAID10 | 189 | 182 | 132 | 455 |
1위: RAID0 (191 MiB/s)
최고 속도 스트라이핑 효과로 4개 디스크를 모두 활용
2위: RAID10 (189 MiB/s)
RAID0와 거의 동일 2×2 미러이지만 스트라이핑으로 높은 대역폭
3위: RAID5 (144 MiB/s)
패리티 불필요한 읽기는 빠름
4위: RAID1 (26.6 MiB/s)
단일 디스크 수준
📌 해석
순차 읽기는 디스크 헤드가 한 방향으로 쭉 움직이기 때문에,
스트라이핑 구조(RAID0, RAID10)가 절대적으로 유리하다.
📌 의문점
Q.
RAID0(4-striping)은 RAID10(2-striping + 2-mirroring)보다 대역폭이 2배 더 높으니까 그만큼의 성능을 보여줘야 하는 것 아닌가?
A.
순차 I/O 병목은 디스크의 최대 처리량(SATA 인터페이스 병목)에 걸려 있기 때문에 실제 순차 I/O는 디스크 개수만큼 선형 증가하지 않는다. 디스크 2~3개만 써도 이미 최대 대역폭 근접한다. 만약 SSD를 사용하게 된다면 처리량 차이를 볼 수 있다.
1위: RAID0 (185 MiB/s)
패리티 없음, 미러 없음 → 순수 스트라이핑
2위: RAID10 (182 MiB/s)
미러 쓰기 + 스트라이프 → RAID5보다 훨씬 유리
3위: RAID1 (67.6 MiB/s)
2개 디스크에 동일 데이터 기록
4위: RAID5 (13.1 MiB/s)
패리티 계산 병목 때문에 최악
📌 해석
RAID5는 쓰기 시 “패리티 연산 + 읽기 후 쓰기(read-modify-write)” 작업이 필요해
속도가 HDD 환경에서는 가장 낮게 나온다.
1위: RAID5 (1864 IOPS)
HDD 기준에서는 읽기가 매우 빠름 (패리티 필요 없음)
RAID10 (132 IOPS)
pair 당 1디스크 읽기 → HDD에서는 RAID5에 밀릴 수 있음
RAID0 (131 IOPS)
스트라이프이지만 헤드 seek 병목 동일
RAID1 (13 IOPS)
단일 디스크 수준
📌 해석
랜덤 읽기에서는 헤드가 여러 디스크에서 동시에 seek 할 수 있는 RAID5가 압도적이다.
패리티 연산이 필요 없는 read path이기 때문.
📌 의문점
Q.
RAID5 값이 너무 높은 수치가 아닌가? 사실 RAID 0과 비슷할 것이라고 생각했다.
W.
실제로는 RAID0 수치와 비슷해질수는 있지만 이렇게 압도적으로 높은 수치가 나오는 것은 이상수치이다. 테스트시에 direct 옵션을 주지 않아 캐시가 개입하여 더 높은 수치가 나오는 것으로 추측하고 있다.
1위: RAID10 (455 IOPS)
병렬 쓰기 효과 + 패리티 없음
2위: RAID0 (453 IOPS)
패리티 없음 → 순수 스트라이핑
RAID5 (94 IOPS)
패리티 연산 때문에 낮은 편
RAID1 (45 IOPS)
미러 쓰기 때문에 디스크 head 움직임 증가
📌 해석
RAID10과 RAID0은 랜덤 쓰기에서도 압도적인 성능을 보인다.
특히 RAID10은 내구성 + 빠른 랜덤 쓰기를 동시에 갖는다는 점에서
DB, 트랜잭션 처리에 가장 적합하다.