본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.


하드디스크 여러 개를 활용하여 속도 향상이나 안전성 향상을 높이는 기술
Striped disk array without fault tolerance
구조 설명
  • 속도 향상만을 추구하는 스트라이핑 모델
  • 스트라이핑(Striping)은 연속된 데이터를 블록(스트라이프) 단위로 잘라 여러 디스크에 라운드 로빈(돌아가며 차례로) 방식으로 나눠 기록하는 기술이다. 여러 디스크를 동시에 읽고 쓰므로 디스크 하나보다 빠르다. 같은 데이터를 두 디스크에 똑같이 쓰는 것은 미러링, 오류 복구용 값을 따로 계산해 두는 것은 패리티다
  • 디스크 n개에서 n배의 속도를 가진다.
  • 최소 수량: 2개
  • 공간 효율: 1배
  • 읽기 효율: n배
  • 쓰기 효율: n배
  • 고장 허용: 해당 없음
Mirroring and duplexing
구조 설명
  • 안정성만을 추구하는 미러링 모델
  • 읽기 속도는 n배 향상되지만, 쓰기 부하는 n배로 늘어난다.
  • 최소 수량: 2개
  • 공간 효율: 1/n배
  • 읽기 효율: n배
  • 쓰기 효율: 1배
  • 고장 허용: n-1개 허용
Hamming code ECC
구조 설명
  • RAID 0과 같이 스트라이핑으로 구현하고, 오류 정정을 위한 Hamming code를 사용
  • 최근 디스크드라이브는 자체적으로 오류정정 기능이 있으므로, 거의 사용되지 않음
  • 최소 수량: 3개
  • 공간 효율: 1 - 1/n ⋅ log2(n-1)배
  • 읽기 효율: 해당 없음
  • 쓰기 효율: 해당 없음
  • 고장 허용: 1개 허용
Parallel transfer with parity
구조 설명
  • 스트라이핑 기술을 사용하여 디스크들을 구성하고, 별도의 디스크에 패리티 정보를 저장
  • 최소 수량: 3개
  • 공간 효율: 1 - 1/n배
  • 읽기 효율: 해당 없음
  • 쓰기 효율: 해당 없음
  • 고장 허용: 1개 허용
Independent data disks with shared parity disk
구조 설명
  • 블록 형태의 스트라이핑 기술과 패티리 사용
  • 데이터는 블록 단위로 여러 디스크에 스트라이핑하고, 패리티는 전용 패리티 디스크 한 대에 집중해 저장한다
  • 쓰기 때마다 패리티 디스크를 갱신해야 하므로 패리티 디스크가 병목이 된다. RAID 5 는 패리티를 모든 디스크에 돌려 가며 분산해 이 병목을 없앴다
  • RAID 3 도 별도 패리티 디스크를 쓰지만 바이트 단위로 스트라이핑해 모든 디스크가 함께 움직인다. RAID 4 는 블록 단위라 작은 읽기를 디스크별로 따로 처리할 수 있다
  • 최소 수량: 3개
  • 공간 효율: 1 - 1/n배
  • 읽기 효율: n배
  • 쓰기 효율: 1배
  • 고장 허용: 1개 허용
Independent data disks with distributed parity blocks
구조 설명
  • 안전성과 속도 모두를 추구하는 방식
  • 가장 많이 쓰인다.
  • 블록 스트라이핑과 분산된 패리티를 사용한다.
  • 회전 패리티 방식으로 병목현상을 줄인다.
  • 최소 수량: 3개
  • 공간 효율: 1 - (1/n)배
  • 읽기 효율: n-1배
  • 쓰기 효율: 상황에 따라 다름
  • 고장 허용: 1개 허용
Independent data disks with two independent distributed parity schemas
구조 설명
  • RAID 5와 비슷하지만 2차 패리티까지 포함하여 안정성을 더 높였다.
  • 금융업이나 중요 데이터 스토리지 등에 사용된다.
  • 최소 수량: 4개
  • 공간 효율: 1 - (2/n)배
  • 읽기 효율: 해당 없음
  • 쓰기 효율: 해당 없음
  • 고장 허용: 2개 허용
비공식
구조 설명
사진 없음
  • RAID 6까지가 업계 표준으로 인정 받는다.
  • RAID 7은 벤더마다 주장하는 여러가지가 있다.
  • 해당 없음

Linear RAID (JBOD)

편집 원본 편집
Just a Bunch Of Disks; 선형 모드
  • 여러 디스크를 차례로 이어 붙여 하나의 큰 디스크처럼 쓴다. 첫 디스크가 다 찬 뒤에 다음 디스크에 쓴다.
  • 크기가 다른 디스크도 묶을 수 있고 공간 효율은 1배다.
  • 스트라이핑을 하지 않으므로 속도는 디스크 하나와 같다. 패리티나 미러링도 없어 디스크 하나가 고장 나면 그 디스크의 데이터를 잃는다.
  • RAID 0 은 데이터를 일정 크기로 나누어 모든 디스크에 동시에 나누어 쓰므로(스트라이핑) 디스크 수만큼 빨라진다. 2개 이상의 디스크로 가장 빠른 속도를 내는 방식은 RAID 0 이다. RAID 1 은 미러링(안정성), RAID 5 는 분산 패리티(최소 3개)다.
구조 설명
  • RAID-0의 스트라이핑으로 구성된 하드들을 묶어 RAID-1미러링으로 구성
  • 최소 수량: 4개
  • 공간 효율: 1/2배(디스크 수와 관계없이 절반)
  • 읽기 효율: 2배
  • 쓰기 효율: 해당 없음
  • 고장 허용: 1개 허용
구조 설명
  • RAID 0-1보단 RAID 1-0이 더 많이 쓰인다.
  • 디스크를 두 개씩 미러링(RAID 1)한 쌍을 만들고, 그 쌍들을 다시 스트라이핑(RAID 0)한다. 그래서 최소 4개(미러 쌍 2개)가 필요하다
  • 패리티를 쓰지 않는다. 복구는 같은 쌍의 거울 디스크에 있는 사본으로 한다. 패리티로 복구하는 것은 RAID 3·4·5·6 이다
  • 디스크 하나가 고장 나도 그 쌍의 다른 디스크가 데이터를 갖고 있어 전체가 계속 동작한다. 서로 다른 쌍에서 하나씩이면 여러 개가 고장 나도 버티지만, 같은 쌍의 두 디스크가 함께 고장 나면 데이터를 잃는다
  • 공간 효율은 미러링 때문에 50% 이다. RAID 0+1 은 한 디스크 고장으로 스트라이프 한쪽 전체가 빠지므로 RAID 1+0 보다 장애와 재구축에 약하다
  • 성능(IOPS) : 읽기는 미러의 어느 쪽 디스크에서든 할 수 있어 디스크 n개가 모두 읽기에 참여한다. 쓰기는 같은 데이터를 미러 쌍의 두 디스크에 모두 써야 하므로 논리적 쓰기 1번이 물리적 쓰기 2번이 된다(쓰기 페널티 2). 디스크 1개의 IOPS 를 X 라 하면 읽기 = n × X, 쓰기 = n × X / 2 이다[1]
    • 예 : 100,000 IOPS 디스크 8개로 RAID 10 을 만들면 읽기 8 × 100,000 = 800,000 IOPS, 쓰기 8 × 100,000 / 2 = 400,000 IOPS
    • 리눅스 md 드라이버도 RAID10 을 각 청크의 복사본을 서로 다른 장치에 두는 방식으로 정의한다. 복사본이 2개이면 쓰기마다 두 장치에 기록한다[2]
  • 최소 수량: 4개
  • 공간 효율: 1/2배
  • 읽기 효율: n배
  • 쓰기 효율: n/2배
  • 고장 허용: 1개 허용

필요한 디스크 수 계산

편집 원본 편집

같은 용량의 디스크로 원하는 사용 가능 용량을 만들 때 레벨마다 덧붙는 디스크 수가 다르다. 패터슨(Patterson)·깁슨(Gibson)·카츠(Katz)의 RAID 논문은 레벨마다 데이터 디스크 그룹에 덧붙는 검사(패리티·미러) 디스크의 비율을 비교했다. RAID 1 은 데이터 디스크마다 거울 디스크를 하나씩 두고, RAID 3·4·5 는 그룹마다 패리티 디스크 한 대 몫을 둔다.[3] RAID 6 은 서로 독립인 패리티 두 개를 두어 디스크 두 대 몫을 쓴다.[4]

레벨 사용 가능 용량(디스크 n 개, 각 용량 C) 용량 1TB 디스크로 3TB 를 만들 때
RAID 0 n × C 3개
RAID 1 C(전부 같은 내용) 거울 쌍으로는 3TB 를 만들 수 없음
RAID 0+1, 1+0 n/2 × C 6개(3개 스트라이프 × 2벌)
RAID 3, 4, 5 (n - 1) × C 4개
RAID 6 (n - 2) × C 5개
  • 같은 사용 용량에서 디스크가 가장 많이 드는 것은 미러링을 쓰는 RAID 0+1(1+0)이다. 패리티 방식은 1~2개만 더하면 되지만 미러링은 같은 수를 한 벌 더 둔다

예비(스페어) 디스크

편집 원본 편집

예비 디스크(spare disk, 핫 스페어)는 RAID 배열에 붙어 있지만 평소에는 데이터를 담지 않고 대기하는 디스크다. 배열의 디스크 하나가 고장 나면 컨트롤러나 소프트웨어 RAID 가 곧바로 예비 디스크를 배열에 넣고, 남은 디스크의 데이터와 패리티로 고장 난 디스크의 내용을 다시 만든다(재구축). 관리자가 디스크를 갈아 끼울 때까지 기다리지 않으므로 두 번째 고장이 나기 전에 중복성을 되찾는다.

  • 예비 디스크는 사용 가능 용량에 들어가지 않는다. 용량은 예비 디스크를 뺀 나머지 디스크로 위 표의 식을 계산한다
  • 예: 10GB 디스크 8개 중 1개를 예비로 두고 나머지 7개로 RAID 5 를 만들면, RAID 5 는 디스크 한 대 몫을 패리티로 쓰므로 (7 - 1) × 10GB = 60GB 이다. 예비 디스크를 빼지 않고 8개로 계산한 70GB, 예비 디스크를 패리티와 별도로 한 번 더 뺀 50GB 는 틀린 계산이다
  • 리눅스 소프트웨어 RAID 에서는 mdadm 의 --spare-devices(-x) 로 예비 디스크 수를 정한다
  1. ↑ 「Understanding RAID Performance at Various Levels」, Arcserve, https://arcserve.com/blog/understanding-raid-performance-various-levels, 확인일: 2026-11-04.
  2. ↑ 「md(4) - Linux manual page」, man7.org, https://man7.org/linux/man-pages/man4/md.4.html, 확인일: 2026-11-04.
  3. ↑ David A. Patterson, Garth Gibson, Randy H. Katz, 「A Case for Redundant Arrays of Inexpensive Disks (RAID)」, UC Berkeley Technical Report UCB/CSD-87-391, 1987(SIGMOD 1988 발표), https://www2.eecs.berkeley.edu/Pubs/TechRpts/1987/CSD-87-391.pdf, 확인일: 2026-11-05.
  4. ↑ 「Common RAID Disk Data Format Specification」 Revision 2.0, SNIA(Storage Networking Industry Association), 2009.

미러링(Mirroring)

  • 디스크에 에러 발생 시 데이터의 손실을 막기 위해, 추가로 하나 이상의 장치에 중복 저장하는 기술

스트라이핑(Striping)