디스크 병렬화와 RAID 구성의 성능·신뢰성 설계
디스크 병렬화의 스트라이핑·미러링·패리티 원리와 JBOD, RAID 구성, 재구성 및 스토리지 성능 조정 방법을 정리한다.
2026-08-14 · 최초 발행 2026-01-12
여러 디스크를 하나의 I/O 경로로 묶는 이유
디스크 병렬화는 여러 물리 디스크에 I/O를 나눠 수행하면서 처리량을 높이고, 데이터 중복으로 장애에 대비하는 방식이다. 단일 디스크의 속도와 용량만으로 감당하기 어려운 환경에서 데이터를 분산 저장하거나 복제해 성능과 신뢰성을 함께 다룬다.
이 구성에서 확인할 지표는 단위 시간당 처리 데이터량인 처리량, 초당 I/O 작업 수를 나타내는 IOPS, 요청부터 완료까지 걸리는 지연시간, 초당 전송 가능한 최대량인 대역폭이다. 단일 디스크의 I/O 한계와 저장 공간 부족, 단일 장애 지점, 서비스 연속성 문제가 병렬화의 출발점이 된다.
여러 디스크가 동시에 읽기·쓰기를 수행하도록 만들고, 데이터와 I/O 부하를 분산한다. 필요하다면 같은 데이터를 복제해 두어 특정 디스크가 고장 나도 데이터 손실을 막는다.
스트라이프에 데이터를 배치하는 방식
스트라이핑은 데이터를 고정 크기 블록으로 나눠 여러 디스크에 순환 배치한다. 각 디스크에서 블록을 병렬로 읽을 수 있어 처리량을 높일 수 있으며, N개 디스크를 사용하면 이론상 N배 성능을 낼 수 있다.
스트라이프 크기는 접근 패턴에 맞춰야 한다. 작은 스트라이프는 더 많은 디스크를 활용해 병렬도를 높이고, 큰 스트라이프는 순차 접근에서 단일 디스크 성능을 활용한다. 일반적인 크기 범위는 16KB~256KB다.
인터리빙은 데이터를 비트, 바이트, 블록 단위로 나누어 배치하는 방식이다. 비트 단위가 가장 세밀하고, 블록 단위 인터리빙이 가장 일반적이다. 여러 디스크의 회전 동기화가 필요하다.
복제와 패리티로 장애를 견디기
미러링은 모든 데이터를 두 개 이상의 디스크에 동일하게 저장한다. 두 디스크에서 동시에 읽을 수 있어 읽기 성능은 2배가 될 수 있지만, 쓰기는 두 디스크에 모두 기록해야 하므로 속도 변화가 없다. 2개 디스크 미러링에서는 50% 용량을 활용한다.
패리티는 여러 데이터 블록의 XOR 연산으로 정보를 만들고, 디스크 손실 시 이를 사용해 데이터를 복구한다. 미러링보다 용량 활용률은 높지만 패리티 계산과 갱신에 따른 쓰기 오버헤드가 있다.
데이터 블록 A: 1101
데이터 블록 B: 1010
데이터 블록 C: 0110
패리티 P = A ⊕ B ⊕ C = 0001
디스크 B 손실 시:
B = A ⊕ C ⊕ P = 1101 ⊕ 0110 ⊕ 0001 = 1010 (복구됨)
리드솔로몬 코드는 2개 이상의 패리티 정보를 생성해 동시에 2개 이상 디스크가 고장 난 경우를 복구할 수 있다. XOR보다 계산 비용은 높으며 RAID 6의 이중 패리티에 사용된다.
JBOD와 RAID가 달라지는 지점
JBOD는 여러 디스크를 하나의 논리 볼륨으로 단순 결합한다. 디스크 용량을 합산하며, 첫 번째 디스크가 차면 다음 디스크를 사용한다. 병렬화에 따른 성능 향상은 없고, 한 디스크가 고장 나면 해당 디스크의 데이터만 손실된다. 단순 용량 확장에 적합하다.
RAID는 데이터 분산과 중복 방식을 조합한다. 같은 디스크 수라도 성능, 용량 활용률, 장애 복구 범위가 달라진다.
- RAID 0은 스트라이핑만 사용한다. N개 디스크로 N배 처리량을 낼 수 있지만, 디스크 하나가 장애를 일으키면 전체 데이터를 잃는다. 임시 데이터나 성능 중심 환경에 맞는다.
- RAID 1은 모든 데이터를 2중 저장한다. 읽기 부하를 두 디스크에 나눌 수 있고, 쓰기 성능은 단일 디스크와 유사하다. 2개 디스크 중 1개 용량만 사용한다.
- RAID 5는 패리티를 모든 디스크에 분산한다. N개 디스크 가운데 N-1개 용량을 사용하며, 디스크 1개 장애를 복구할 수 있다. 패리티 갱신 때문에 쓰기 부담이 있다.
- RAID 6은 독립적인 패리티 정보를 2개 둔다. N개 디스크 중 N-2개 용량을 사용하고, 동시에 2개 디스크 장애를 복구한다. RAID 5보다 계산과 쓰기 부담이 크다.
- RAID 10은 미러링한 뒤 미러 쌍을 스트라이핑한다. 읽기와 쓰기 성능이 모두 빠르고 용량 효율은 RAID 1과 같이 50%다. 미러 쌍이 아닌 디스크 장애는 복구할 수 있다.
- RAID 50은 여러 RAID 5 세트를 스트라이핑한다. RAID 5보다 성능을 높일 수 있으며, 각 RAID 5 세트에서 1개씩의 장애를 허용한다. 최소 6개 이상 디스크가 필요하다.
컨트롤러 선택과 운영 중 교체
하드웨어 RAID는 전용 처리 카드를 사용한다. 호스트 CPU 자원을 쓰지 않고, 배터리 백업 캐시로 쓰기 성능을 높일 수 있다. 소프트웨어 RAID보다 성능이 뛰어나다.
소프트웨어 RAID는 운영체제 레벨에서 제공하는 기능으로 구성한다. 별도 하드웨어가 필요 없어 비용을 줄일 수 있고 설정 변경과 관리가 유연하지만, RAID 처리는 호스트 CPU가 담당한다.
하이브리드 RAID는 메인보드 칩셋의 RAID 기능을 이용한다. 하드웨어와 소프트웨어의 중간 성격이며, FakeRAID는 실제로 소프트웨어 RAID에 가깝다. 저렴한 하드웨어 RAID 대안으로 사용할 수 있다.
핫스왑을 지원하면 시스템 전원이 켜진 상태에서 디스크를 교체할 수 있다. SAS/SATA 인터페이스와 전용 트레이 또는 캐디를 사용해 서비스 중단 없이 장애 디스크를 바꾼다.
새 디스크를 장착한 뒤에는 자동 재구성이 진행될 수 있다. 정상 I/O와 병행하는 백그라운드 작업이므로 일시적인 성능 저하가 발생하며, 디스크 용량에 비례해 수 시간~수일이 걸린다. 운영 중 RAID 레벨을 바꾸거나 디스크를 추가해 용량을 확장하고, 스트라이프 크기를 조정하거나 데이터 리밸런싱을 수행할 수도 있다.
워크로드에 맞춰 조정할 항목
캐시 정책은 쓰기 성능과 데이터 보호 방식에 영향을 준다. Write-Back은 캐시에 먼저 기록하고 나중에 디스크에 반영해 빠르며, Write-Through는 캐시와 디스크에 동시에 기록한다. Read-Ahead는 순차 접근을 예측해 미리 읽고, 배터리 백업은 Write-Back 캐시의 데이터를 보호한다.
청크 크기도 I/O 패턴에 따라 달라진다. 작은청크(416KB)는 랜덤 I/O와 높은 병렬도에 적합하고, 큰청크(128256KB)는 순차 I/O에서 오버헤드를 줄인다. 데이터베이스는 보통 작은 청크를 선호한다.
파티션은 물리 섹터 경계에 맞춰 정렬한다. Advanced Format 디스크의 4KB 섹터와 SSD의 페이지·블록 경계를 고려해야 하며, 정렬이 맞지 않으면 읽기와 쓰기 증폭이 발생한다.
서버 역할별로 보는 구성
데이터베이스 서버에서는 로그파일에 RAID 1을 사용해 안정성을 확보하고, 데이터파일에는 RAID 10으로 성능과 안정성의 균형을 맞춘다. 임시공간은 RAID 0 또는 로컬 SSD에 두며, 장기 보관용 백업에는 RAID 6을 사용한다.
웹서버와 파일서버는 OS 디스크에 RAID 1을 구성해 부팅 안정성을 확보할 수 있다. 콘텐츠 디스크는 RAID 5/6으로 대용량 저장에 대응하고, 로그디스크는 JBOD 또는 RAID 0으로 구성한다. 캐시는 고속 SSD를 단독으로 사용한다.
비디오 편집 환경에서는 프로젝트디스크에 RAID 0을 사용해 성능을 높이고, 렌더링출력에는 RAID 5/10으로 안정성을 확보한다. 아카이브는 RAID 6 또는 테이프 백업에 두며, 스크래치디스크는 로컬 NVMe SSD를 사용한다.