콘텐츠로 바로가기

Persistence & Storage Analytics

휘발성 메모리 너머에 데이터를 영구적으로 기록하는 보증 기술과, 저장소의 수명과 성능을 분석하여 데이터 유실을 방지하는 신뢰성 공학을 다루는 학습 노드입니다.

9분 읽기
목차 보기22

1. Overview

영구 저장과 스토리지 분석(Persistence & Storage Analytics)은 전원이 차단(Power-off)되면 사라지는 휘발성 RAM과 달리, 데이터를 디스크나 NAND 플래시에 지속적으로 기록하고 장애 상황에서도 복구 가능성을 높이는 스토리지 신뢰성 공학입니다.

학습자는 여러 하드디스크를 병렬로 묶어 성능을 높이거나 장애 시 데이터를 복구하는 RAID(Redundant Array of Independent Disks) 구조를 이해합니다. 이어 고정 파티션의 한계를 줄이고 운영 중에도 용량을 확장할 수 있게 하는 **LVM(Logical Volume Manager)**의 추상화 계층을 살펴보며, 클라우드 시대 블록 스토리지 확장의 기반을 익힙니다.

2. Scope & Boundaries

In-Scope

  • RAID 기하학 (Redundancy & Striping): RAID 0(Striping), RAID 1(Mirroring), RAID 5(Parity), RAID 10 구조와 장단점, 패리티 비트(XOR) 복원 수학.
  • LVM (Logical Volume Manager): PV(Physical Volume), VG(Volume Group), LV(Logical Volume) 3단계 추상화, 런타임 볼륨 리사이징, LVM 스냅샷(Snapshot).
  • 스토리지 분석 및 프로파일링 (Storage Analytics): IOPS, Throughput(대역폭), Latency(지연 시간), 랜덤/순차 I/O 패턴.
  • 데이터 무결성 검증 (Integrity): 체크섬(Checksum), 데이터 부패(Silent Data Corruption, Bit Rot) 방어, ZFS/Btrfs의 카피-온-라이트(CoW) 개념 확장.

Out-of-Scope

  • 네트워크 스토리지 파일 프로토콜: NFS, SMB/CIFS, iSCSI 등 네트워크를 넘나드는 스토리지 통신 규약 자체 → 04-01-02. Network Layer & Routing 영역.
  • 디스크 플래터/NAND 플래시의 전기적 구조: 전자가 플로팅 게이트에 갇혀(Fowler-Nordheim) 기록되는 물리 회로 기작 → 03-04-01. Disk, SSD & Magnetic Physics 영역.

Boundaries

  • Filesystem (03-03-03) vs. Storage Volume (03-03-04): 파일 시스템(03-03-03)이 단일 블록 장치 위에 폴더와 파일 구조를 배치하는 계층이라면, LVM/RAID(03-03-04)는 여러 물리 장치를 묶거나 복제해 파일 시스템이 사용할 가상 블록 장치를 제공하는 추상화 계층입니다.

3. Counterexample

  • RAID 0의 속도와 장애 위험 (The Striping Russian Roulette): 서버 디스크 4개를 RAID 0(스트라이핑)으로 묶으면 읽기/쓰기 처리량은 높아질 수 있지만, RAID 0은 데이터를 여러 디스크에 분산 저장할 뿐 중복 저장을 제공하지 않습니다. 4개 중 1개 디스크에 장애가 발생하면 일부 조각만 사라지는 것이 아니라 파일 전체의 일관성이 깨져 전체 볼륨 복구가 어려워질 수 있습니다.
  • LVM 없는 전통 파티션의 용량 한계 (Static Partition Wall): 리눅스 설치 시 /dev/sda1/home 파티션을 100GB로 고정해 두면, 나중에 용량이 부족해졌을 때 새 1TB 디스크를 추가하더라도 기존 /home에 자연스럽게 합치기 어렵습니다. LVM을 사용하면 새 디스크를 볼륨 그룹(VG)에 추가하고 lvextend로 논리 볼륨을 확장할 수 있습니다.

4. Prerequisites

  • 블록 디바이스 기초 (Basic): 파일 시스템이 디스크를 512바이트나 4KB짜리 블록 덩어리로 썰어서 통신한다는 커널 I/O 스택의 이해가 필요합니다. (03-03-02 Page Cache & I/O Stack)
  • 비트 단위 연산 (Basic): RAID 5의 핵심인 두 비트가 다르면 1을 반환하는 배타적 논리합(XOR)의 부울 대수 수학 원리를 알아야 패리티 복원을 이해할 수 있습니다. (01-01-02 Binary & Logic Math)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 RAID 0/1: Speed vs Mirror 데이터를 분산(Stripe)해 처리량을 높이는 RAID 0과 복제(Mirror)로 장애 대응력을 높이는 RAID 1을 비교합니다. P1
2 RAID 5 & XOR Parity XOR 패리티(Parity)를 사용해 디스크 하나가 손실되어도 남은 데이터로 복구하는 방식을 이해합니다. P5
3 LVM Abstraction Physics 물리 디스크를 PV/VG/LV 계층으로 묶고 논리 볼륨을 확장하는 LVM 추상화를 살핍니다. Industry
4 Storage Analytics (IOPS) 대역폭(Throughput)과 IOPS, 지연 시간(Latency)의 차이를 구분하고 DB 워크로드에 맞는 지표를 이해합니다. Industry

6. Learning Topics

Basic

Core Topic 01: RAID 0과 RAID 1, Striping vs Mirroring

  • Why to Learn: 하드디스크 1개의 순차 처리량 한계를 여러 디스크의 병렬 처리로 보완하거나, 미러링으로 장애 대응력을 높이는 RAID 기본 구조를 이해하기 위해서입니다.
  • What to Learn:
    • Concepts: RAID(Redundant Array of Independent Disks), 스트라이핑(Striping, RAID 0), 미러링(Mirroring, RAID 1), 블록 크기(Chunk Size).
    • Skills: I/O 병렬 처리, 고가용성(High Availability, Fault Tolerance) 설계.
    • Tools: 리눅스 mdadm 소프트웨어 RAID 구성툴.
    • Trade-offs: **RAID 0(Striping)**은 100바이트를 하드 4개에 25바이트씩 병렬 저장해 처리량을 높일 수 있지만, 하드 하나에 장애가 생기면 전체 데이터 일관성이 깨질 수 있습니다. **RAID 1(Mirroring)**은 100바이트를 하드 2개에 동일하게 기록해 복구 가능성을 높이지만, 1TB 하드 2개를 사용해도 실사용 용량은 1TB가 됩니다.
  • How to Learn:
    • 1단계: 스트라이핑(RAID 0): 파일 "HELLO WORLD"가 OS 커널을 통과할 때 볼륨 레이어가 이를 여러 조각으로 나누어 H,E,L은 1번 하드로, L,O, 은 2번 하드로 기록하는 병렬 저장 방식을 확인합니다.
    • 2단계: 미러링(RAID 1): "HELLO"가 들어오면 1번 하드와 2번 하드에 동일한 복사 명령을 보내고, 1번 하드 장애(Failure) 시 2번 하드에서 같은 데이터를 읽어 서비스를 이어가는 흐름을 살핍니다.
  • Implement: 파이썬 RAID0, RAID1 가상 클래스 시뮬레이터를 만듭니다. 입력 배열 [1,2,3,4,5,6]RAID0 객체에 .write()하면 DiskA=[1,3,5], DiskB=[2,4,6]으로 나누어 저장하고, DiskA 리스트 삭제(del) 시 데이터 복원이 불가능해지는 Raise DataCorruption 로그를 출력합니다.

Core Topic 02: RAID 5 패리티와 XOR 복구 (XOR Parity)

  • Why to Learn: RAID 1보다 더 높은 실사용 용량을 유지하면서도 단일 디스크 장애를 복구할 수 있는 RAID 5의 XOR 패리티 구조를 이해하기 위해서입니다.
  • What to Learn:
    • Concepts: 패리티 비트(Parity Bit), 배타적 논리합(XOR), RAID 5 분산 패리티 구조, RAID 6(이중 패리티).
    • Skills: 핫 스페어(Hot Spare) 디스크 리빌딩(Rebuilding), Read-Modify-Write 오버헤드 분석.
    • Tools: XOR 진리표 계산.
    • Trade-offs: 하드 4개(각 1TB)를 RAID 5로 묶으면 3TB를 사용하면서도 디스크 1개 장애를 복구할 수 있습니다. 대신 데이터를 덮어쓸 때 기존 패리티를 다시 계산해야 하므로 Read-Modify-Write에 따른 Write Penalty가 발생하고, 장애 디스크 교체 후 Rebuild 동안 성능 부담이 커집니다.
  • How to Learn:
    • 1단계: 하드 3개에 데이터 A=1(01), B=3(11)을 저장할 때, 세 번째 하드에 13=2(10)1 \oplus 3 = 2(10) 라는 XOR 계산값(패리티)을 기록하는 방식을 확인합니다.
    • 2단계: A 하드가 손실되면, 남아있는 B(3)B(3) 와 패리티 P(2)P(2)32=13 \oplus 2 = 1 을 계산해 원본 데이터 A=1을 복구하는 흐름을 살핍니다.
  • Implement: 3개의 리스트(D1, D2, P)를 가진 파이썬 8비트 RAID5 모사를 작성합니다. D1=0b1010, D2=0b1100 입력 시 P = D1 ^ D2 (0b0110)을 갱신하고, 이후 D1 = None으로 장애(Crash)를 모사한 뒤 Recover()에서 D1 = D2 ^ P로 복구합니다.

Practical

Core Topic 03: LVM 아키텍처와 온라인 확장 (Logical Volume Manager)

  • Why to Learn: 리눅스 설치 시 고정 파티션만 사용하면 운영 중 용량 변경이 어렵습니다. LVM이 운영 중 논리 볼륨을 확장하거나 줄이는 추상화를 어떻게 제공하는지 이해하기 위해서입니다.
  • What to Learn:
    • Concepts: PV(Physical Volume), VG(Volume Group), LV(Logical Volume), PE(Physical Extent).
    • Skills: 라이브 볼륨 확장(lvextend), 온라인 파일 시스템 확장(resize2fs), 스냅샷(Snapshot).
    • Tools: 리눅스 pvs, vgs, lvs 명령어 체인.
    • Trade-offs: 커널과 하드디스크 사이에 LVM 매핑 계층을 두면 용량 확장과 스냅샷 같은 유연성을 얻습니다. 대신 데이터를 읽을 때 [VFS → EXT4 → LVM 가상 매핑 → 물리 디스크] 경로를 거치므로 약간의 I/O 지연과 복구 복잡성이 생길 수 있습니다.
  • How to Learn:
    • 1단계: 용량이 다른 500GB SSD와 2TB HDD를 pvcreate로 Physical Volume으로 만들고, PE 단위 조각을 하나의 2.5TB Volume Group(vgcreate)으로 묶는 흐름을 살핍니다.
    • 2단계: Volume Group에서 100GB home, 200GB db 같은 Logical Volume(lvcreate)을 만들고, 나중에 lvextend로 남은 용량을 추가해 파일 시스템을 확장하는 과정을 확인합니다.
  • Implement: 파이썬 가상 LVM 아키텍처 스크립트를 작성합니다. Physical_Drive_A(100), Drive_B(50) 객체를 Volume_Group(150) 풀로 병합하고, Logical_Vol_1을 크기 80으로 할당합니다. 이후 LV_1.extend(50) 명령으로 잔여량에서 50 블록을 매핑해 LV_1 크기가 130이 되도록 구현합니다.

Advanced

Core Topic 04: 대역폭과 IOPS, 스토리지 성능 메트릭 (Storage Analytics & IOPS)

  • Why to Learn: 순차 대역폭이 높아도, 4KB 랜덤 I/O가 많은 DB 서버에서는 IOPS와 지연 시간이 더 중요한 병목 지표가 될 수 있습니다. 워크로드에 맞는 스토리지 성능 지표를 구분하기 위해서입니다.
  • What to Learn:
    • Concepts: IOPS(Input/Output Operations Per Second), 대역폭(Throughput/Bandwidth), 지연 시간(Latency/Response Time).
    • Skills: 랜덤 I/O(Random Access) vs 순차 I/O(Sequential Access) 워크로드 분석.
    • Tools: 리눅스 fio 벤치마크, iostat -x 큐 길이(avgqu-sz) 및 대기시간(await) 병목 관측.
    • Trade-offs: 하드디스크(HDD)는 10GB짜리 파일을 순차 복사할 때는 150MB/s 정도의 대역폭을 낼 수 있지만, 4KB 랜덤 요청이 많아지면 헤드 탐색(Seek) 때문에 IOPS가 크게 낮아집니다. SSD는 탐색 헤드가 없기 때문에 랜덤 I/O에서 훨씬 높은 IOPS를 낼 수 있습니다.
  • How to Learn:
    • 1단계: Throughput vs IOPS: 10MB짜리 큰 덩어리 1개를 순차 처리하는 대역폭(Throughput)과, 4KB짜리 작은 데이터 1만 개를 랜덤 처리하는 IOPS의 차이를 비교합니다.
    • 2단계: Latency & Queue: I/O 처리가 밀리면 커널 블록 큐(Queue)에 대기열(avgqu-sz)이 쌓이고, CPU 스레드가 데이터를 기다리며 iowait 상태에 머무를 수 있음을 성능 병목 관점에서 추적합니다.
  • Implement: 파이썬으로 가상 디스크 디바이스 객체를 구현합니다. Seek_Latency(탐색 시간)10ms로 설정하고, 순차 주소(0, 1, 2...)는 1ms에 응답하도록, 난수 주소(random.randint(0, 100))는 매번 10ms 탐색 지연이 발생하도록 만들어 IOPS 차이를 비교합니다.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Persistence 전원이 공급되지 않아도 데이터가 상실되지 않고 유지되는 성질입니다. 기본 저장소 근본 Volatile / Storage Retention '단순한 저장' 이상의 불변성 P1:CS2023 core
Journaling 실제 데이터 수정 전에 변경 사항을 별도의 로그 영역에 기록하여 시스템 크래시 시 복구를 보장하는 기법입니다. 기본 신뢰성 보증 Metadata / WAL Checkpoint '백업'과는 다른 '작업 예고' P1:CS2023 core
Wear Leveling 플래시 메모리의 특정 셀만 마모되는 것을 막기 위해 모든 셀에 쓰기 작업을 물리적으로 고르게 분산시키는 기술입니다. 추천 수명 연장 SSD / FTL Garbage Coll. 소프트웨어가 아닌 하드웨어 레벨 관리 Industry Flash core
S.M.A.R.T 저장 장치가 자신의 상태를 스스로 감시하고 고장 가능성을 미리 알리는 물리적 자가 진단 체계입니다. 실무 고장 예측 Health / Alert Analytics '성능' 지표가 아닌 '건강' 지표 Industry/NVMe core

8. References

Primary

Secondary

  • [Transaction-Safe File Systems] — Specialized theory for persistence.
  • [Solid State Drive (SSD) Reliability] — Hardware-focused reliability analysis.

Industry

  • [ZFS: The Last Word in File Systems (Sun Microsystems)] — High-integrity FS standard.
  • [Western Digital: Managing NAND Flash with WAF Analytics] — Technical whitepaper.

9. Final Checklist

Primary

  • '저널링'이 왜 시스템 크래시 이후의 '전수 검사(fsck)' 지연을 줄이는지 원리를 설명 가능한가? (P1)
  • 영속적 쓰기 과정에서 'Atomicity'가 결여되었을 때 저장소에 어떤 데이터 파편화가 남는지 설명할 수 있는가? (P1)

Secondary

  • 'Copy-on-Write' 방식의 파일 시스템이 왜 전통적인 'Overwrite' 방식보다 데이터 무결성은 높지만 단편화(Fragmentation)가 더 잘 일어나는지 상충 관계를 설명할 수 있는가?
  • SSD의 'Write Amplification Factor'를 1에 가깝게 유지하기 위한 파일 접근 전략을 도출할 수 있는가?

Industry

  • 클라우드 스토리지 설계 시, '배드 블록' 발생 추이를 보고 하드웨어 수명을 예측하여 선제적으로 부하를 분산하는 PSA 시스템을 제안할 수 있는가? (SFIA)
  • 금융 거래 시스템에서 정전 발생 시, 하드웨어 내의 '슈퍼 커패시터(PLP)'가 커널의 지연 쓰기 데이터를 어떻게 최종 보호하는지 기술할 수 있는가?

OS Storage & I/O

6 / 8