콘텐츠로 바로가기

RAID & Redundant Storage Physics

여러 개의 물리 저장 장치를 하나로 묶어 성능을 높이거나 데이터 손실을 방지하는 스트라이핑, 미러링 및 패리티 연산의 물리 구조를 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

operating-systems-system-mechanicsoperating-systemssystem-mechanicsstoragei-o-mechanicsraidredundant-storage-physicsos-storage10 min read

1. Overview

RAID와 중복 스토리지 물리학(RAID & Redundant Storage Physics)은 단일 디스크가 언제든 장애(Failure)를 일으킬 수 있다는 전제를 바탕으로, 여러 디스크를 XOR 수학과 병렬 배치로 묶어 단일 장애점(Single Point of Failure)을 줄이고 데이터를 복구 가능하게 만드는 스토리지 신뢰성 공학입니다.

학습자는 03-03-04 에서 다뤘던 RAID 개요를 확장해, **하드웨어 RAID 컨트롤러(전용 ASIC 칩)**와 소프트웨어 RAID(Linux mdadm/ZFS)의 차이를 분석합니다. 나아가 RAID 6의 이중 패리티(Dual Parity)가 XOR(P)와 갈로아 필드(Galois Field, GF(2^8)) 다항식(Q)을 사용해 두 개의 디스크 장애를 복구하는 원리를 살펴봅니다. 마지막으로 ZFS/Btrfs의 128비트 체크섬(Checksum) 기반 비트 부패(Bit Rot) 감지 아키텍처를 이해하여 엔터프라이즈급 데이터 내구성을 설계하는 기준을 세웁니다.

2. Scope & Boundaries

In-Scope

  • RAID 깊이 있는 수학 (RAID Internals): RAID 5 (XOR Parity), RAID 6 (P+Q, 이중 패리티 / Galois Field 다항식), RAID Z(ZFS 구현), 스트라이프 폭(Stripe Width)과 청크 사이즈(Chunk Size) 최적화.
  • 하드웨어 vs 소프트웨어 RAID (Implementation Spectrum): 전용 컨트롤러(BBU Cache, Write-back 캐시), 리눅스 mdadm 소프트웨어 RAID, ZFS/Btrfs 통합 RAID.
  • 리빌딩 물리학 (Rebuild Mechanics): 핫 스페어(Hot Spare), 리빌드 중 부하(Rebuild I/O Storm), 리빌드 창 취약성(Vulnerability Window).
  • 침묵하는 데이터 부패 (Silent Data Corruption): Bit Rot, 섹터 부패(URE, Uncorrectable Read Error), ZFS 스크러빙(Scrubbing).

Out-of-Scope

  • LVM 논리 볼륨 구성 자체: 물리 볼륨(PV)에서 논리 볼륨(LV)을 잘라내는 운영체제 계층 \rightarrow 03-03-04. Persistence & Storage Analytics 영역.
  • 분산 파일 시스템(Ceph, GlusterFS): 수십 대의 서버에 걸쳐 데이터를 분산하는 클러스터 스토리지 \rightarrow 05-03-02. Distributed Storage 영역.

Boundaries

  • RAID vs. Erasure Coding: RAID는 디스크 개수 단위의 블록 레벨 중복을 제공하는 방식이라면, 클라우드 오브젝트 스토리지(S3)가 쓰는 소거 코드(Erasure Coding)는 데이터를 k개 조각 + m개 패리티로 나누어 일부 노드가 장애를 일으켜도 k개 조각만 있으면 복구할 수 있게 하는 더 유연한 대규모 중복화 방식입니다.

3. Counterexample

  • RAID는 백업이 아니다 (The RAID is Not Backup Fallacy): "RAID 1(미러링)을 쓰니까 데이터가 2개다"라는 이유로 별도 백업을 생략하면 위험합니다. RAID 1은 "지금 이 순간"의 데이터를 두 디스크에 동시에 미러링합니다. 실수로 rm -rf / 를 실행하거나 랜섬웨어가 모든 파일을 암호화하면, 그 삭제/암호화 명령도 양쪽 디스크에 동시에 반영됩니다. 장애 이전 특정 시점으로 되돌리는 Point-in-time Recovery는 RAID가 아니라 백업과 스냅샷의 역할입니다.
  • 리빌드 중 연쇄 장애 (Rebuild Cascade Failure): 14TB짜리 하드디스크 4개를 RAID 5로 묶고 1번 디스크 장애 후 교체 디스크로 리빌드를 시작하면, 나머지 3개 디스크에서 대량 데이터를 읽어 패리티를 역산해야 합니다. 이 과정은 긴 시간 동안 높은 I/O 부하(I/O Storm)를 만들며, 오래된 다른 디스크에서 URE(읽기 불가 오류)가 발생하면 RAID 5는 두 개의 동시 장애를 복구할 방법이 없어 데이터 손실로 이어질 수 있습니다.

4. Prerequisites

  • XOR 논리 연산 (Basic): A XOR B XOR B = A 라는 XOR의 역원성이 RAID 5 패리티 복구의 수학적 핵심입니다. (01-01-02 Binary & Logic)
  • RAID 기본 개념 (Required): RAID 0, 1, 5의 스트라이핑/미러링/패리티 기초 구조를 알고 있어야 합니다. (03-03-04 Persistence & Storage Analytics)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 RAID 5 XOR Internals 단일 패리티 블록이 XOR 수학의 역원성으로 손실 데이터를 복원하는 비트 레벨 원리를 이해합니다. P1
2 RAID 6 Galois Field (P+Q) 두 디스크 장애를 복구하기 위해 GF(2^8) 다항식 기반 이중 패리티가 어떻게 동작하는지 분석합니다. P5
3 HW vs SW RAID 전용 ASIC 컨트롤러(배터리 캐시)와 리눅스 mdadm CPU 연산 방식의 성능/신뢰성 트레이드오프를 살펴봅니다. Industry
4 Bit Rot & ZFS Scrub 전원이 켜져 있어도 발생할 수 있는 비트 부패를 체크섬과 스크러빙으로 감지하는 ZFS 방식을 이해합니다. Industry

6. Learning Topics

Basic

Core Topic 01: RAID 5 XOR 패리티 복구 역학 (RAID 5 Internals)

  • Why to Learn: RAID 5가 디스크 1개 장애를 XOR 패리티로 복구하는 원리가 실제로 어떤 비트 연산으로 동작하는지 이해하기 위해서입니다.
  • What to Learn:
    • Concepts: 분산 패리티(Distributed Parity), 패리티 스트라이프(Parity Stripe), XOR 역원성, 스트라이프 폭(Stripe Width).
    • Skills: 패리티 재계산(Read-Modify-Write Penalty) 비용 분석, 쓰기 성능 패널티.
    • Tools: 리눅스 mdadm --detail, cat /proc/mdstat.
    • Trade-offs: RAID 5는 디스크 N개 중 1개 용량을 패리티로 사용해 디스크 1개 장애를 복구할 수 있지만, 데이터 1KB를 쓸 때도 '기존 패리티 읽기 \rightarrow 새 패리티 계산 \rightarrow 데이터 쓰기 \rightarrow 패리티 쓰기'의 4 I/O 증폭(Read-Modify-Write)이 발생합니다. 이 때문에 소규모 랜덤 쓰기 성능이 낮아질 수 있습니다.
  • How to Learn:
    • 1단계: 데이터 D1=1010, D2=1100, D3=0011을 XOR하여 패리티 P = D1 XOR D2 XOR D3 = 0101을 계산하고, 4개 스트라이프(3 Data + 1 Parity)에 분산 저장하는 초기 레이아웃을 분석합니다.
    • 2단계: D2 디스크에 장애가 발생했을 때, 남아 있는 D1=1010, D3=0011, P=0101을 XOR하면 1010 XOR 0011 XOR 0101 = 1100으로 D2 값을 역산할 수 있음을 확인합니다.
  • Implement: 파이썬 RAID5_Stripe(D1, D2, D3) 클래스. write(d1, d2, d3)P = d1^d2^d3 자동 계산 저장. fail_disk(index) 메서드로 원하는 디스크를 None으로 표시한 뒤, recover() 루틴이 나머지 3개(포함 P)를 XOR 역산하여 원본 값을 출력하는 비트 레벨 복구 증명.

Core Topic 02: 이중 패리티와 RAID 6 갈로아 필드 (Dual Parity P+Q)

  • Why to Learn: 대용량 HDD(16TB) 환경에서는 RAID 5 리빌드 중 두 번째 디스크 장애가 발생할 위험이 커집니다. XOR 패리티 하나로는 복구할 수 없는 두 디스크 동시 장애를 갈로아 필드 수학으로 다루기 위해서입니다.
  • What to Learn:
    • Concepts: RAID 6 P+Q 패리티, 갈로아 필드(GF(2^8)), Reed-Solomon 코드, 이중 패리티 계산.
    • Skills: GF 원소 곱셈(LFSR, Log/Antilog 테이블 활용), 연립방정식 풀이(행렬 역산).
    • Tools: 리눅스 커널 lib/raid6/ 소스 코드.
    • Trade-offs: RAID 6는 디스크 2개분의 패리티(P, Q)를 저장해 두 디스크 장애까지 복구할 수 있지만, 모든 쓰기 연산에서 P와 Q 두 개의 패리티를 계산해야 하므로 RAID 5보다 쓰기 오버헤드가 크고 리빌드 시간도 길어집니다.
  • How to Learn:
    • 1단계: P 패리티 (XOR): 일반 RAID 5와 동일. P = D1 XOR D2 XOR D3.
    • 2단계: Q 패리티 (Galois Field): 각 데이터 블록에 GF(2^8) 원시 원소의 거듭제곱을 곱하여 합산. Q = α^0*D1 XOR α^1*D2 XOR α^2*D3. 여기서 α는 GF(2^8)의 생성원(Generator)이며, GF 내 모든 곱셈은 기약 다항식(Irreducible Polynomial) x8+x4+x3+x2+1x^8+x^4+x^3+x^2+1에 대한 나머지 연산으로 이뤄져 '덧셈 XOR 곱셈'이 닫힌 집합(Closed Field)을 형성합니다.
  • Implement: 8비트(GF(2^8)) 갈로아 필드 곱셈 테이블(Lookup Table) 파이썬 생성기 구축. D1=0xAB, D2=0xCD를 받아 P(XOR)와 Q(GF 가중 XOR)를 계산합니다. D1D2 디스크를 None으로 표시한 뒤, recover_two(missing_indices=[0,1], P, Q, D3) 함수에서 연립방정식 GF-역산으로 원본 D1, D2를 복구하는 이중 복구 데모를 만듭니다.

Practical

Core Topic 03: 하드웨어 RAID와 소프트웨어 RAID 비교 (HW vs SW RAID)

  • Why to Learn: RAID 컨트롤러 카드를 50만 원 주고 사야 하는지, 아니면 리눅스 mdadm과 CPU를 쓰면 되는지 엔터프라이즈 스토리지 예산을 책정할 때 정확한 근거로 아키텍처 결정을 내리기 위해서입니다.
  • What to Learn:
    • Concepts: 하드웨어 RAID 컨트롤러, BBU(Battery Backup Unit), 전면 캐시(Write-through vs Write-back Cache), 소프트웨어 RAID(mdadm, ZFS).
    • Skills: 캐시 도움(Cache-Assisted Write)의 Write I/O 속도 향상 분석.
    • Tools: 리눅스 mdadm --create /dev/md0, zpool create.
    • Trade-offs: 전용 하드웨어 RAID 컨트롤러는 자체 CPU와 배터리 캐시(BBU)를 갖추어 전원 장애 시 캐시 데이터를 보존하고 쓰기 성능을 높일 수 있습니다. 하지만 컨트롤러 칩이 고장 나면 동일 펌웨어/버전 컨트롤러가 필요할 수 있어 벤더 종속성(Vendor Lock-in)과 비용 문제가 생깁니다. mdadm 소프트웨어 RAID는 표준 디스크를 다른 시스템에서도 읽기 쉬운 이식성(Portability)이 있지만, 패리티 계산이 서버 CPU에서 이뤄져 리빌드 중 CPU 부하가 커질 수 있습니다.
  • How to Learn:
    • 1단계: HW RAID BBU 캐시: 1000개의 소규모 Write 요청이 들어올 때, 컨트롤러 카드가 이를 배터리 캐시에 쌓아두고 완료 ACK를 OS에 보낸 뒤, 백그라운드에서 묶어서(Coalescing) 디스크로 내려보내는 Write-back 가속 기법을 분석합니다.
    • 2단계: ZFS 통합 스택: zpool이 RAID 기능, 파일 시스템, 체크섬을 하나의 스택으로 통합하여 별도 컨트롤러 없이 소프트웨어로 RAID-Z(5에 해당), RAID-Z2(6에 해당)를 구현하는 신뢰성 구조를 살펴봅니다.
  • Implement: SoftwareRAID_Controller(disks, mode) 파이썬 클래스. RAID5 모드에서 패리티 계산을 time.sleep(0.01) (CPU 연산 지연 모사)으로 소모하고, RAID5_with_Cache 모드에서는 Write를 Cache_Buffer에만 넣고 즉각 ACK를 반환하며 1초마다 별도 스레드가 flush_to_disk() 하는 성능 비교 Write 처리량(Throughput, ops/sec) 로그 수치 대비.

Advanced

Core Topic 04: 비트 부패와 체크섬 기반 ZFS 스크러빙 (Bit Rot & Scrubbing)

  • Why to Learn: 디스크에 데이터를 장기간 저장하는 동안 1비트가 조용히 뒤집히는 침묵의 데이터 부패(Silent Data Corruption, Bit Rot)가 발생할 수 있습니다. 복구 시점에 손상된 백업이나 데이터 블록을 발견하는 상황을 줄이기 위해 체크섬과 스크러빙을 이해해야 합니다.
  • What to Learn:
    • Concepts: 비트 부패(Bit Rot), URE(Uncorrectable Read Error), ZFS 128비트 체크섬, 스크러빙(Scrubbing), COW(Copy-On-Write) 파일 시스템.
    • Skills: zpool scrub 주기 스케줄링, 체크섬 알고리즘(SHA-256/Fletcher4) 선택.
    • Tools: zpool status -v (오류 카운터 확인), smartctl -a /dev/sda.
    • Trade-offs: ZFS가 모든 데이터 블록의 체크섬을 별도 메타데이터 트리(DMU)에 저장하면 비트 1개가 뒤집혀도 감지하고 RAID를 통해 복구할 수 있습니다. 대신 모든 읽기/쓰기 시 체크섬 계산과 검증이라는 CPU 부담이 붙고, COW(복사 후 쓰기) 특성상 파일 조각이 누적되어 장기적으로 파편화(Fragmentation)가 생길 수 있습니다.
  • How to Learn:
    • 1단계: 하드디스크 플래터의 자성 입자 1개가 우주선(Cosmic Ray) 에너지나 자기 교란으로 뒤집히면, 체크섬이 없는 파일 시스템에서는 손상된 비트를 그대로 읽을 수 있습니다. ZFS는 저장 시 기록한 SHA 체크섬과 읽을 때 재계산한 체크섬을 비교하여 무결성 오류를 감지합니다.
    • 2단계: zpool scrub은 주기적으로 (예: 매주) 모든 블록의 체크섬을 재검증하고, 오류를 발견하면 RAID-Z에서 다른 디스크의 패리티를 활용해 손상된 블록을 자동 자가 치유(Self-Healing)하는 스크러빙 파이프라인을 실행합니다.
  • Implement: 파이썬 ZFS_Block_Store 시뮬레이터. write(key, data)hashlib.sha256(data) 체크섬을 데이터와 함께 쌍으로 저장. corrupt_bit(key) 메서드로 저장된 데이터의 1바이트를 강제 변형(Bit Flip). scrub() 메서드 실행 시 전체 블록을 순회하며 재계산 해시와 저장 해시를 비교, 불일치 블록을 발견하면 RAID_Z.recover(key) 를 호출해 복원하고 print("Bit Rot Detected & Fixed: {key}") 로그를 출력하는 자가 치유 데모.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
RAID 여러 개의 하드디스크를 논리적으로 하나로 묶어 성능과 신뢰성을 향상시키는 저장소 구성 기술입니다. 기본 군집 기초 Clustering / Volume LVM '하드웨어' 장치만을 뜻하지 않음 P1:CS2023 core
Striping 데이터를 여러 디스크에 분산시켜 병렬 I/O를 달성하는 물리적 배치 방식입니다. 기본 성능 향상 Chunk / Parallel Mirroring 안정성은 보장하지 않음 P1:CS2023 core
Parity (패리티) 데이터 오류를 검출하거나 손실된 데이터를 복구하기 위해 추가된 수리적 연산 비트입니다. 추천 복구 논리 XOR / ECC Recovery '백업 복사본'이 아닌 '수학적 증명' P1:CS2023 core
Erasure Coding 데이터를 조각낸 후 수학적 중복을 추가하여 대규모 장애에도 생존 가능케 하는 고성능 가용성 기술입니다. 심화 분산 가용 Reed-Solomon RAID RAID보다 연산 복잡도가 높음 Industry Storage core

8. References

Primary

Secondary

  • [The RAID Book] — Comprehensive technical reference.
  • [High Performance Mass Storage and Parallel I/O] — Striping and performance focus.

Industry

  • [Intel: RAID Levels and Benefits] — Hardware RAID standard guide.
  • [NetApp: RAID-DP and Erasure Coding explained] — Enterprise storage standards.

9. Final Checklist

Primary

  • 'RAID 0'과 'RAID 1'의 데이터 기록 시 물리적 헤드의 움직임과 대역폭의 차이를 설명 가능한가? (P1)
  • '패리티(Parity)' 비트가 어떻게 단 하나의 추가 비트만으로 소실된 물리 데이터를 복원해내는지 XOR 수리 논리로 입증할 수 있는가? (P1)

Secondary

  • RAID 5 구성 시, 디스크 개수가 많아질수록 '읽기 성능'은 좋아지지만 '쓰기 성능'은 왜 패리티 오버헤드 때문에 물리적으로 정체되는지 설명할 수 있는가?
  • 시스템 설계 시, 'RAID 10'이 왜 'RAID 01'보다 물리적 장애 복구 안정성(Fault isolation) 면에서 유리한지 도출할 수 있는가?

Industry

  • 금융권 데이터 센터 구축 시, 서비스 중단 없는 디스크 교체를 위한 'Hot Swapping' 하드웨어 시퀀스와 OS 인터페이스를 제안할 수 있는가? (SFIA)
  • 100TB 이상의 대규모 페타바이트 시스템에서 RAID 6보다 Erasure Coding이 왜 물리적-경제적으로 필수적인지 기술할 수 있는가?

OS Storage & I/O

8 / 8