RAID는 여러 개의 하드디스크를 하나의 디스크처럼 묶어 사용하는 기술로, 서버의 저장 장치 대부분이 이 방식을 채택한다. 비용을 줄이면서도 데이터의 신뢰성을 높이고 읽기·쓰기 성능까지 끌어올릴 수 있기 때문이다. 이 글에서는 RAID의 개념과 목적부터 RAID 0·1·5·6·10의 레벨별 차이를 표로 비교하고, 하드웨어와 소프트웨어 RAID의 차이, 리눅스 mdadm 구성 예시, 그리고 상황별 선택 가이드까지 정리한다.
목차
RAID란 무엇인가
RAID는 ‘Redundant Array of Independent Disks’의 약자로, 여러 개의 독립된 디스크를 하나의 논리 볼륨으로 묶어 쓰는 기술이다. 운영체제 입장에서는 여러 물리 디스크가 마치 하나의 큰 디스크처럼 보인다. 데이터를 어떻게 분산·복제하느냐에 따라 RAID 0, 1, 5, 6, 10 등 여러 레벨로 나뉘며, 각 레벨은 성능·안정성·용량 효율 사이에서 서로 다른 균형을 가진다.
RAID를 이해하는 데 중요한 두 가지 개념이 있다. 하나는 데이터를 여러 디스크에 잘게 나눠 동시에 기록하는 스트라이핑(striping)이고, 다른 하나는 같은 데이터를 다른 디스크에 그대로 복제해 두는 미러링(mirroring)이다. 여기에 오류 검증·복구용 데이터인 패리티(parity)가 더해지면 RAID 5·6 같은 방식이 된다.
RAID를 왜 쓰나
RAID를 도입하는 목적은 크게 두 가지, 성능과 가용성이다.
- 성능 향상 : 데이터를 여러 디스크에 나눠 동시에 읽고 쓰면, 디스크 한 대가 처리하던 작업을 병렬로 분산해 처리 속도를 높일 수 있다.
- 가용성·내결함성 : 디스크는 언젠가 고장난다. RAID는 같은 데이터를 복제(미러링)하거나 패리티로 복구 정보를 분산해 두어, 디스크 일부가 죽어도 데이터를 잃지 않고 서비스를 계속할 수 있게 한다.
단, RAID는 백업이 아니라는 점을 기억해야 한다. 디스크 물리 장애에는 대응하지만, 실수로 인한 파일 삭제·랜섬웨어·논리적 손상은 모든 디스크에 그대로 반영된다. 따라서 RAID와 별개로 정기 백업은 반드시 필요하다.
RAID 레벨별 비교
실무에서 자주 쓰는 RAID 레벨을 최소 디스크 수, 내결함성, 용량 효율, 읽기/쓰기 특성으로 정리하면 다음과 같다. 표의 N은 디스크 개수를 뜻한다.
| 레벨 | 핵심 방식 | 최소 디스크 | 내결함성 | 용량 효율 | 읽기/쓰기 특성 |
|---|---|---|---|---|---|
| RAID 0 | 스트라이핑 | 2 | 없음(1대 고장 시 전체 손실) | 100% | 읽기·쓰기 모두 빠름 |
| RAID 1 | 미러링 | 2 | 1대 고장 허용 | 50% | 읽기 빠름, 쓰기 보통 |
| RAID 5 | 단일 패리티 | 3 | 1대 고장 허용 | (N-1)/N | 읽기 빠름, 쓰기 패리티 부담 |
| RAID 6 | 이중 패리티 | 4 | 2대 고장 허용 | (N-2)/N | 읽기 빠름, 쓰기 부담 RAID 5보다 큼 |
| RAID 10 | 미러+스트라이프 | 4 | 미러 세트당 1대 허용 | 50% | 읽기·쓰기 모두 빠름 |
RAID 0 — 스트라이핑
RAID 0은 모든 디스크에 데이터를 잘게 쪼개 동시에 나눠 저장한다. 예를 들어 ‘Hello, SUWON!’이라는 12글자를 한 글자당 1초로 저장한다면, 단일 디스크에서는 12초가 걸리지만 디스크 2개로 병렬 기록하면 6초면 끝난다. 읽기·쓰기가 모두 빠르고 용량 효율이 100%지만, 디스크 한 대만 고장나도 전체 데이터를 잃는다. 또한 용량이 작은 디스크에 맞춰지므로 100TB와 1TB를 묶으면 2TB만 쓸 수 있다.
RAID 1 — 미러링
RAID 1은 같은 데이터의 거울(복사본)을 다른 디스크에 그대로 만들어 둔다. 디스크 하나가 고장나도 다른 디스크에 동일한 데이터가 남아 있어 데이터를 잃지 않는다. 대신 같은 데이터를 두 벌 보관하므로 전체 용량의 절반(50%)만 실제로 쓸 수 있다. 절대 손실되면 안 되는 중요한 데이터에 적합하다.
RAID 5 — 단일 패리티
RAID 5는 RAID 1의 안정성과 RAID 0의 공간 효율을 절충한 방식이다. 최소 3개의 디스크가 필요하며, 데이터와 함께 패리티를 각 디스크에 분산 저장한다. 디스크 하나가 고장나면 나머지 데이터와 패리티를 이용해 잃어버린 값을 역산해 복구한다.
패리티의 원리는 간단한 짝수 검사로 이해할 수 있다. 짝수 패리티를 쓴다고 하면, 한 행의 데이터 비트들과 패리티 비트를 합친 1의 개수가 항상 짝수가 되도록 패리티를 정한다. 예를 들어 데이터가 0 + 0 + 0이면 1의 개수가 짝수(0개)가 되도록 패리티는 0이 된다. 이후 디스크 한 대가 고장나면, 같은 행의 나머지 값과 패리티로 ‘짝수가 되려면 빠진 값이 무엇이어야 하는가’를 역산해 데이터를 복원한다. 용량 효율은 (N-1)/N이라 디스크가 많을수록 효율이 좋아진다. 다만 쓰기마다 패리티를 계산해야 해 쓰기 성능에는 부담이 있다.
RAID 6 — 이중 패리티
RAID 5는 디스크 1대 고장까지만 견딘다. 디스크 10개로 구성했을 때 2대가 동시에 죽으면 데이터를 복구할 수 없다. RAID 6은 패리티를 2개 사용해 이 문제를 해결한다. 최소 4개의 디스크가 필요하고, 디스크 2대가 동시에 고장나도 데이터를 지킬 수 있다. 패리티가 하나 더 들어가는 만큼 용량 효율은 (N-2)/N로 RAID 5보다 낮고 쓰기 부담도 더 크지만, 그만큼 신뢰성이 높다. 1TB 디스크 10개로 구성하면 8TB를 쓸 수 있다.
RAID 10 — 미러 + 스트라이프
RAID 10(또는 RAID 1+0)은 미러링과 스트라이핑을 결합한 방식이다. 먼저 디스크를 둘씩 묶어 미러링(RAID 1)으로 복제하고, 그 미러 세트들을 다시 스트라이핑(RAID 0)으로 묶는다. 최소 4개의 디스크가 필요하며, 패리티 계산이 없어 읽기·쓰기 모두 빠르면서 각 미러 세트마다 디스크 1대 고장을 견딜 수 있다. 용량 효율은 50%로 RAID 1과 같지만, 속도와 안정성을 동시에 요구하는 데이터베이스 서버 등에서 선호된다.
하드웨어 RAID vs 소프트웨어 RAID
같은 RAID 레벨이라도 누가 RAID를 처리하느냐에 따라 하드웨어 방식과 소프트웨어 방식으로 나뉜다.
| 구분 | 하드웨어 RAID | 소프트웨어 RAID |
|---|---|---|
| 처리 주체 | 전용 RAID 컨트롤러 카드 | 운영체제(예: 리눅스 mdadm) |
| CPU 부하 | 낮음(컨트롤러가 연산 처리) | 호스트 CPU 사용 |
| 비용 | 컨트롤러 카드 추가 비용 | 별도 비용 없음 |
| 이식성 | 컨트롤러 종속(고장 시 동일 모델 필요) | OS만 있으면 다른 장비로 이전 용이 |
하드웨어 RAID는 전용 컨트롤러가 패리티 연산까지 처리해 CPU 부담이 적고 안정적이지만, 컨트롤러 자체가 고장나면 같은 모델을 구해야 복구가 수월하다는 종속성이 있다. 소프트웨어 RAID는 추가 비용 없이 OS 기능만으로 구성할 수 있고 다른 장비로 옮기기도 비교적 쉬워, 리눅스 서버에서는 mdadm을 이용한 소프트웨어 RAID가 널리 쓰인다.
리눅스 mdadm으로 RAID 구성하기
리눅스에서는 mdadm 패키지로 소프트웨어 RAID를 만들 수 있다. 아래는 디스크 2개로 RAID 1(미러링)을 구성하는 기본 흐름이다. 장치명(/dev/sdb, /dev/sdc)은 환경에 맞게 바꿔야 한다.
# mdadm 설치 (RHEL/CentOS 계열)
yum -y install mdadm
# /dev/sdb, /dev/sdc 두 디스크로 RAID 1 배열(/dev/md0) 생성
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# 배열 상태 확인
mdadm --detail /dev/md0
cat /proc/mdstat
배열이 만들어지면 일반 디스크처럼 파일 시스템을 만들고 마운트해 사용한다.
# 파일 시스템 생성 후 마운트
mkfs.ext4 /dev/md0
mkdir /mnt/raid
mount /dev/md0 /mnt/raid
# 재부팅 후에도 배열이 유지되도록 설정 저장
mdadm --detail --scan >> /etc/mdadm.conf
RAID 0은 --level=0, RAID 5는 --level=5 --raid-devices=3처럼 레벨과 디스크 수만 바꾸면 같은 방식으로 구성할 수 있다.
RAID 레벨 선택 가이드
- 속도가 최우선이고 데이터 손실을 감수할 수 있다면 → RAID 0 (캐시·임시 데이터용)
- 안정성이 가장 중요하다면 → RAID 1 (소수 디스크, 중요 데이터)
- 용량 효율과 안정성의 균형을 원한다면 → RAID 5 (디스크 3대 이상)
- 더 높은 내결함성이 필요하다면 → RAID 6 (대용량 스토리지, 2대 동시 고장 대비)
- 속도와 안정성을 동시에 원한다면 → RAID 10 (데이터베이스 등)
자주 묻는 질문
RAID를 쓰면 백업이 필요 없나?
아니다. RAID는 디스크 물리 장애에 대비하는 기술이지 백업이 아니다. 실수로 파일을 지우거나 랜섬웨어에 감염되면 모든 디스크에 그대로 반영된다. RAID와 별개로 정기 백업은 반드시 병행해야 한다.
서로 다른 용량의 디스크를 묶어도 되나?
가능하지만 권장하지 않는다. RAID 0·1·5 등 대부분의 레벨은 가장 작은 디스크 용량에 맞춰져 큰 디스크의 남는 공간은 버려진다. 가능하면 같은 용량·같은 모델의 디스크로 구성하는 것이 효율과 안정성 면에서 좋다.
정리
RAID는 속도·안정성·용량 효율 사이에서 무엇을 우선하느냐에 따라 레벨을 선택한다. 속도가 중요하면 RAID 0, 안정성이 최우선이면 RAID 1, 둘의 균형을 원하면 RAID 5, 더 높은 내결함성이 필요하면 RAID 6, 속도와 안정성을 함께 잡으려면 RAID 10을 고려하면 된다. 서버 저장소를 구성하기 전에 데이터의 중요도와 예산을 함께 따져 적절한 레벨을 정하는 것이 핵심이며, RAID와 별개로 백업도 잊지 말자. 서버 구축 실습이 궁금하다면 NFS 서버 구축 글도 함께 참고하면 좋다.
Reference
https://www.hanbit.co.kr/store/books/look.php?p_code=B8529915277



💬 댓글 0