콘텐츠로 바로가기

Storage Systems & Hardware Interfacing

파일 시스템의 내부 구조, 블록 저장소의 물리적 배치, 그리고 NVMe/SSD 등 현대 저장 장치의 하드웨어 인터페이스 기술을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

저장 시스템 및 하드웨어 인터페이스(Storage Systems & Hardware Interfacing, SHO)는 비트 단위의 데이터가 물리적인 비휘발성 장치에 기록되고 관리되는 운영체제 하부와 하드웨어 접점을 다룹니다.

데이터 엔지니어링의 최종 단계는 물리적 기록입니다. 학습자는 파일 시스템의 아이노드(Inode) 구조, SSD의 하부 작동 역학(Wear Leveling, FTL), 그리고 고속 I/O를 위한 NVMe 프로토콜과 다이렉트 메모리 액세스(DMA) 기술을 학습합니다. 이를 통해 소프트웨어 데이터 모델이 물리 장치의 물리적 특성(Sequential vs Random access)과 충돌하지 않도록 최적화된 저장 계층을 설계합니다.

2. Scope & Boundaries

In-Scope

  • File System Internals: Inode 구조, 디렉토리 인덱싱, 정방향/역방향 탐색 물리
  • Block Storage Mechanics: 블록 배치 알고리즘, 세그먼트 파편화 관리, RAID 물리
  • SSD & Flash Physics: NAND 셀 구동 원리, 가비지 컬렉션(GC), 쓰기 증폭(Write Amplification)
  • High-speed I/O: NVMe 큐잉 모델, SPDK/DPDK 등 커널 우회 기술 기초

Out-of-Scope

  • 고수준 데이터베이스 쿼리 최적화 (06-01 Relational Systems 영역으로 위임)
  • 네트워크 저장소 프로토콜(NFS/SMB) 상세 (08. Network 영역으로 위임)

Boundaries

  • SHO vs. Memory Management: 03-03(MMVP)이 '휘발성 RAM의 효율적 분할'을 다룬다면, SHO는 '비휘발성 저장 매체로의 영구 기록과 하드웨어 제어'에 집중합니다.

3. Counterexample

  • 단순히 파일을 저장하는 API를 사용하는 것은 SHO 학습이 아닙니다. SSD 환경에서 왜 **덮어쓰기(Overwrite)**가 기존 데이터를 직접 수정하지 못하고 새로운 블록을 할당해야 하는지 그 **물리적 제약(P/E Cycle)**을 설명하고, 이를 보완하는 **FTL(Flash Translation Layer)**의 역할을 논할 수 있어야 합니다.

4. Prerequisites

  • 디지털 논리 및 프로세서 물리 (Basic): 비트 연산과 하드웨어 신호 체계에 대한 이해가 필요합니다. (02. Digital Logic)
  • 커널 및 시스템 인터페이스 물리 (Recommended): 파일 시스템 시스템 콜(Open, Read, Write)과 버퍼 캐시 이해가 권장됩니다. (03. KSIP)

5. Learning Map

  1. Mapping Blocks: 논리적인 파일 데이터를 물리적 디스크 블록으로 매핑하는 기본 구조를 익힙니다.
  2. Flash Dynamics: 현대 저장 매체의 주류인 SSD의 내부 관리 알고리즘과 수명 제어 방식을 이해합니다.
  3. I/O Pipelines: 인터럽트 기반 I/O와 현대적인 큐 기반 고속 전송 기술을 구분합니다.
  4. Resilient Storage: 정전이나 장비 고장 시에도 데이터를 보존하기 위한 물리적 계층 설계를 실습합니다.

6. Learning Topics

Basic

Core: 파일 시스템 구조와 아이노드 (File Systems & Inodes)

  • Why to Learn: 파일이라는 추상화된 단위를 시스템이 어떻게 물리 주소로 찾아가는지 알기 위함입니다.
  • What to Learn:
    • Inode의 구조: 메타데이터와 데이터 블록 포인터 배치
    • 파일 이름 해석(Path resolution) 과정의 디렉토리 엔트리 물리
    • 심볼릭 링크 vs 하드 링크의 물리적 차이
  • How to Learn:
    • debugfs와 같은 도구로 실제 파일 시스템의 Inode 번호와 물리 블록 위치를 역추적
    • 파일 하나를 생성할 때 동반되는 메타데이터 업데이트 횟수 정량 분석
  • Implement: 아이노드 번호를 기반으로 파일의 물리적 위치를 시뮬레이션하는 논리 모델

Core: SSD 기술과 FTL 역학 (SSD Physics & FTL)

  • Why to Learn: HDD와는 전혀 다른 SSD의 물리적 특성을 이해하여 저장 성능 병목을 해결하기 위해서입니다.
  • What to Learn:
    • NAND Flash의 읽기/쓰기/삭제(Erase) 단위 불일치 문제
    • FTL (Flash Translation Layer): 논리-물리 주소 매핑 및 매핑 테이블 관리
    • 웨어 레벨링(Wear Leveling) 및 오버 프로비저닝(Over-provisioning) 물리
  • How to Learn:
    • SSD의 쓰기 증폭(Write Amplification Factor) 공식 유도 및 시나리오별 계산 실습
    • 트리밍(TRIM) 명령어가 SSD 내부 가비지 컬렉션에 미치는 가시적 효과 관측
  • Implement: SSD 내부의 웨어 레벨링 알고리즘을 모사하여 셀 수명을 평준화하는 시뮬레이터

Practical

Core: I/O 최적화와 커널 캐시 (I/O Stack & Caching)

  • Why to Learn: 하위 하드웨어의 느린 속도를 소프트웨어 계층에서 어떻게 은닉하는지 배우기 위함입니다.
  • What to Learn:
    • 페이지 캐시(Page Cache)와 Write-back 전략의 물리적 지연시간 감소 효과
    • Direct I/O vs Buffered I/O: 유저 메모리와 커널 메모리 간의 제로 카피 물리
    • I/O 스케줄러(CFQ, Deadline 등)의 요청 병합 및 순서 재조정 원리
  • How to Learn:
    • fio 벤치마킹 도구를 사용하여 블록 크기별 랜덤/순차 I/O 성능 격차 측정
    • 대용량 파일 전송 시 mmap()과 일반 read/write의 메모리 복사 비용 비교
  • Implement: 특정 워크로드에 최적화된 I/O 스케줄링 설정 및 성능 개선 분석서

Advanced

Core: 고속 저장 인터페이스와 NVMe (NVMe & Extreme I/O)

  • Why to Learn: CPU 성능을 따라가지 못하는 저장소 병목을 최신 프로토콜로 돌파하기 위해서입니다.
  • What to Learn:
    • SAS/SATA의 한계와 PCIe 기반 NVMe의 병렬 큐잉(Command Queues) 물리
    • SPDK (Storage Performance Development Kit): 유저 공간 드라이버와 폴링 모드 I/O
    • 비휘발성 메모리(NVDIMM, Optane) 등 차세대 계층 저장 구조
  • How to Learn:
    • NVMe 전용 툴을 사용하여 다중 큐에 분산되는 I/O 요청의 동시성 확인
    • 커널 모드 I/O와 유저 모드 폴링 I/O 간의 컨텍스트 스위칭 오버헤드 벤치마킹
  • Implement: 대규모 분산 처리를 위한 NVMe over Fabrics(NVMe-oF) 기초 설계 개념도

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
Inode 파일 시스템에서 파일의 소유권, 권한, 실제 위치 지점 등 모든 정보를 담고 있는 데이터 구조입니다. 기본 파일 관리 Metadata File Descriptor 파일 내용 자체로 오해 P1:CS2023/Storage core
FTL SSD 내부에서 논리적 블록 주소를 실제 NAND의 물리적 위치로 변환하고 수명을 관리하는 펌웨어 계층입니다. 추천 성능 vs 수명 SSD Wear Leveling 단순한 '드라이버'로 오해 Industry Manufacturer Specs core
Write Amplification 실제 요청한 데이터 양보다 더 많은 양의 물리적 쓰기가 장치 내부에서 발생하는 현상입니다. 추천 수명 관리 GC SSD P/E Cycle '데이터 압축'과 혼동 P1:CS2023/Storage core
Zero-copy 데이터를 한 메모리 영역에서 다른 영역으로 복사하지 않고 주소 정보만 전달하여 전송 효율을 극대화하는 방식입니다. 실무 성능 최적화 DMA mmap / splice '복제 미발생'과 혼동 P5:SFIA Development core

8. References

Primary References

Secondary References

  • [Operating Systems: Three Easy Pieces (OSTEP)] Arpaci-Dusseau — Excellent storage chapters.
  • [Modern Operating Systems] Andrew S. Tanenbaum — Deep file system analysis.

Industry References

  • [Intel/Samsung NVMe Whitepapers] — Hardware interface standards.
  • [Linux Kernel Documentation - The Block Layer] — Practical storage stack internals.

9. Final Checklist

Primary Checklist

  • 특정 파일 시스템에서 수천 개의 작은 파일을 가진 디렉토리를 탐색할 때 병목이 발생하는 아이노드 레벨의 이유를 설명 가능한가? (P1)
  • SSD에서 TRIM 명령어가 실행되지 않았을 때, 장기적인 쓰기 성능이 저하되는 물리적 메커니즘을 기술할 수 있는가? (P1)

Secondary Checklist

  • RAID 0, 1, 5, 10의 물리적 배치 차이를 알고 데이터 손실 리스크와 읽기/쓰기 성능 간의 트레이드오프를 평가할 수 있는가?
  • 파일 시스템 저널링(Journaling)이 갑작스러운 전원 차단 시 파일 무결성을 어떻게 물리적으로 보호하는지 인지하는가?

Industry Checklist

  • 실무 서비스에서 디스크 I/O 대기시간(iowait)이 급증할 때, 이를 iostat 데이터로 분석하여 랜덤 I/O 병목인지 대역폭 포화인지 식별 가능한가? (SFIA)
  • 고성능 데이터베이스 서버 구축 시 NVMe 큐 깊이(Queue Depth) 설정이 애플리케이션의 결과 응답 지연에 미치는 영향을 제안할 수 있는가?