콘텐츠로 바로가기

Persistence & Storage Analytics

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

Article
M

Me

hyunyoun's Blog

operating-systems-system-mechanicsoperating-systemssystem-mechanicsmemory-managementvirtualization-physicspersistencestorage-analyticsos-storage9 min read

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 등 네트워크를 넘나드는 스토리지 통신 규약 자체 \rightarrow 04-01-02. Network Layer & Routing 영역.
  • 디스크 플래터/NAND 플래시의 전기적 구조: 전자가 플로팅 게이트에 갇혀(Fowler-Nordheim) 기록되는 물리 회로 기작 \rightarrow 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 \rightarrow EXT4 \rightarrow LVM 가상 매핑 \rightarrow 물리 디스크] 경로를 거치므로 약간의 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