본문 바로가기
Linux

[Linux] RAID(Redundant Array of Independent Disks)

by daun_up 2026. 4. 20.

여러 개의 저렴한 하드디스크를 하나로 묶어 성능을 높이거나 안정성을 확보하는 기능이다. 디스크 하나가 죽어도 데이터가 날아가지 않게 보호하거나, 여러 디스크에 데이터를 나눠 써서 속도를 비약적으로 높인다.

 

  • 스트라이핑 (Striping): 데이터를 여러 디스크에 나누어 저장하는 것. (속도 향상 / RAID-0)
  • 미러링 (Mirroring): 똑같은 데이터를 다른 디스크에 복사해서 저장하는 것. (안정성 확보 / RAID-1)
  • 패리티 (Parity): 데이터 복구를 위한 체크용 정보. 디스크 고장 시 이 정보를 이용해 데이터를 되살린다. (효율적 안정성 / RAID-5, 6)

용량 계산 공식

(N: RAID 구성에 참여하는 총 디스크 개수, S: 개별 디스크 1개의 용량)

기본 공식

(N - 1) x S

스페어 디스크가 있는 경우 - 스페어는 고장 날 때를 대비한 예비이기 때문에 계산에서 미리 빼야함

(N - 1 - Spare) x S

RAID 종류 핵심 키워드 가용 용량 공식 특징 활용
RAID-0 스트라이핑 N x S 속도 최상, 안정성 최하 영상 편집 임시 저장 등
RAID-1 미러링 (N / 2) x S 복사본 생성, 안정성 최상, 비용 비쌈 (용량 50%만 사용) 중요한 문서 보관
RAID-5 분산 패리티 (N - 1) x S 가성비 왕, 성능/안정성 절충 (최소 디스크 3개) 일반적인 서버
RAID-6 이중 패리티 (N - 2) x S 안정성 강화, 디스크 2개 고장나도 버팀 (최소 디스크 4개) 대형 금고 / 기업 서버

RAID 1, 5, 6 은 결함을 허용하지만  RAID 0 은 결함을 허용하지 않는다. 엥? RAID 0 이 손실을 감수한다고 하는데 얘가 오히려 결함을 허용하는 것이 아닐까? 아니다! 결함을 허용한다는 것은 디스크가 고장(falut) 났을 때 이를 허용하여 시스템이 멈추지 않고 계속 돌아가는 능력을 말한다. 

  • RAID-0: 허용할 수 있는 결함의 개수가 0개
  • RAID-1: 허용할 수 있는 결함의 개수가 1개 (똑같은 복사본이 있으니까)
  • RAID-5: 허용할 수 있는 결함의 개수가 1개 (패리티로 복구 가능)
  • RAID-6: 허용할 수 있는 결함의 개수가 2개 (이중 패리티의 !)

RAID 2, 3, 4 는 데이터를 비트/바이트 단위로 쪼개거나 전용 패리티 디스크를 따로 두는 방식을 사용한다. 병목 현상 때문에 지금은 사용하지 않는다.

하드웨어 RAID vs 소프트웨어 RAID

구분 하드웨어 RAID 소프트웨어 RAID
방식 전용 RAID 컨트롤러 (카드) 장착 리눅스 OS 내에서 명령어로 처리
성능 전용 칩셋이 처리하므로 매우 빠름 CPU 가 계산을 나눠서 하므로 부하 발생 가능
명령어 제조사 제공 유틸리티 사용 mdadm
비용 비쌈 (서버 살 때 옵션) 공짜 (리눅스만 있으면 됨)

 

실무에서 RAID

기업용 서버는 디스크 하나 때문에 서비스가 멈춰선 안 된다...그래서 RAID 를 꼭꼭 사용한다.

  • 웹 서버 및 DB 서버 (RAID-5, RAID-6, RAID-10)
    • 24 시간 중단 없이 돌아가야 하는 서비스는 디스크 고장을 늘~ 대비해야 한다.
    • RAID-5/6: 용량 효율이 좋아서 대용량 데이터를 다루는 파일 서버나 일반적인 웹 서버에 가장 많이 사용된다.
    • RAID-10 (1+0): RAID-1의 안정성과 RAID-0의 속도를 합친 방식이다. 돈이 좀 들더라도 속도와 안정성 둘 다 중요한 고성능 DB 서버에 주로 사용한다.
  • 백업 서버 (RAID-1)
    • 중요한 문서나 소스 코드를 보관하는 서버이다. 똑같은 복사본을 실시간으로 만들기 때문에 한쪽 디스크가 불타버려도 옆에 있는 디스크를 떼어서 바로 복구할 수 있다.
  • 고성능 작업용 워크스테이션 (RAID-0)
    • 영상 편집이나 렌더링은 데이터 유실을 조금 감수하고 짱 빠른 속도를 위해 RAID 0 을 사용한다.

mdadm (Multiple Disks ADMinistrator)

리눅스 RAID 를 보통 md 라고 부르고 mdadm 이라는 패키지를 이용해서 관리한다. 현재 mdadm 으로 구성할 수 있는 RAID 레벨에는 1, 4, 5, 6, 10 이 있다. 

1. RAID 생성하기 (create)

디스크를 하나로 묶어 새로운 장치 (/dev/md0) 을 만드는 과정이다.

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
  • --create: 새로 만들겠다.
  • /dev/md0: 만들어질 RAID 장치 이름 (보통 md 로 시작)
  • --level=5: RAID 레벨 5로 설정
  • --raid-devices=3: 실제 구성에 사용할 디스크 개수

RAID 를 구성하기 전 fdisk 로 파티션을 만들 때 시스템 ID 를 꼭 변경해주어야 한다. fdisk 실행 후 t 명령어로 타입을 fd (Linux raid autodetect) 로 바꿔야 커널이 RAID 용 디스크라고 인식한다.

2. 상태 확인하기 (Detail & Monitor)

RAID가 잘 돌아가는지, 디스크 하나가 죽지는 않았는지 확인한다.

  • 상세 정보 보기: mdadm --detail /dev/md0
  • 실시간 상태 요약: cat /proc/mdstat
    • [UUU] 라고 뜨면 정상, [_UU] 라고 뜨면 디스크 하나가 빠진 (Fail) 상태

3. 중지 및 삭제 (Stop)

RAID 구성을 해제할 때 사용한다.

  • mdadm --stop /dev/md0
옵션 의미 설명
-C --create 새로운 RAID 생성
-S --stop 가동 중인 RAID 중지
-D --detail RAID 장치의 상세 정보 출력
-a --add 작동 중인 RAID 에 새로운 디스크 추가 (교체용)
-r --remove 고장 난 디스크 제

복구(Rebuild) 프로세스 시나리오

 

  1. cat /proc/mdstat으로 확인하니 디스크 하나가 죽어있다.
  2. mdadm /dev/md0 --remove /dev/sdb1로 고장 난 걸 뺀다.
  3. 새 디스크를 꽂고 mdadm /dev/md0 --add /dev/sdb1로 추가한다.
  4. 다시 Rebuild가 시작되며 시스템이 정상화된다.

/proc/mdstat

  • /proc 디렉터리는 하드디스크에 실제로 존재하는 파일이 아니라, 커널의 메모리 정보를 파일 형태로 보여주는 가상 공간이다.
  • mdstat: 'Multiple Disk Statistics'의 약자로, 현재 시스템에서 가동 중인 소프트웨어 RAID(mdadm으로 만든 것)의 상태를 실시간으로 보여줍니다.
  • 결과 해석
    • active: RAID 장치가 현재 정상적으로 작동 중임을 의미
    • raid5, raid1 등: 현재 구성된 RAID의 레벨
    • [UUU]: 디스크들의 건강 상태. U (Up)는 정상이며, 만약 _ 가 보인다면 해당 디스크에 문제가 생겼다는 뜻. (예: [UU_] 이면 3개 중 1개 고장)