Disk, SSD & Flash Internals
기계적 회전의 HDD부터 전자의 터널링 현상을 활용하는 SSD/플래시 메모리까지, 비휘발성 저장 장치의 물리적 하부 구조와 성능 제약을 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
computer-architecture-embedded-systemscomputer-architectureembedded-systemsmemory-systemsstorage-physicsdiskssdflash-internals9 min read
1. Overview
디스크, SSD와 낸드 플래시 역학 (Disk, SSD & Flash Internals, DSF)은 전원을 꺼도 데이터가 사라지지 않는 비휘발성 저장을 다루며, 수 테라바이트의 비트를 자성(Magnetic)과 갇힌 전자(Trapped Electrons)의 형태로 유지하는 보조기억장치 공학입니다.
학습자는 회전하는 원판 위에 자기를 기록하며 탐색 시간(Seek Time)을 만드는 하드 디스크(HDD)의 물리적 기계 역학을 살펴보고, 반도체의 플로팅 게이트에 전자를 저장하는 낸드 플래시(NAND Flash) 메모리의 양자 역학적 원리를 분석합니다. 나아가 플래시 메모리 특유의 "덮어쓰기 불가(No In-place Update)" 제약을 완화하기 위해 도입된 **플래시 변환 계층(FTL)**과 가비지 컬렉션(GC), 마모도 평준화(Wear Leveling)를 익혀, 데이터베이스 엔진이 디스크 I/O를 제어할 때 마주치는 물리적 지연(Latency)의 근원을 이해합니다.
2. Scope & Boundaries
In-Scope
- 자기 디스크 물리학 (Magnetic Disk Mechanics): 플래터(Platter), 트랙(Track), 섹터(Sector), 실린더(Cylinder), 탐색 시간(Seek Time)과 회전 지연(Rotational Latency).
- 낸드 플래시 역학 (NAND Flash Physics): 셀(Cell), 플로팅 게이트(Floating Gate), 페이지(Page)와 블록(Block), SLC/MLC/TLC/QLC 특성.
- 플래시 비대칭성 제어 (Flash Constraints): 읽기/쓰기(Page 단위) vs 지우기(Block 단위), 제자리 덮어쓰기 불가(Erase-before-Write).
- 플래시 변환 계층 (Flash Translation Layer, FTL): 논리-물리 주소 매핑(LBA to PBA), 가비지 컬렉션(Garbage Collection), 마모도 평준화(Wear Leveling), 쓰기 증폭(Write Amplification).
Out-of-Scope
- 파일 시스템 데이터 구조: 리눅스 ext4나 윈도우 NTFS의 inode, B-Tree 디렉토리 관리 구조 03-01. Process & Memory Mechanics 영역.
- 분산 스토리지 아키텍처: AWS S3나 HDFS가 여러 개의 디스크를 묶어서 복제(Replication)하는 분산 처리 기법 07-03. Distributed Storage & Big Data Physics 영역.
Boundaries
- DSF vs. File Systems (03-01): 파일 시스템(03-01)이 "어떻게 하면 사용자가 '폴더와 파일명'이라는 추상화로 데이터를 편하게 정리할까?"라는 논리적 장부 정리라면, DSF는 "그 장부에 적힌 데이터가 실제 금속 원판 위나 실리콘 트랜지스터에 어떻게 전기장/자기장으로 기록되는가?"를 다루는 하드웨어 물리학입니다.
3. Counterexample
- 임의 쓰기 가정에 의한 SSD 수명 저하 (Random Write Amplification): "SSD는 모터가 없으니까 디스크 헤드 이동 시간(Seek Time)이 없어서 무작위 쓰기(Random Write)를 많이 해도 빠르겠지"라고 믿고, 데이터베이스 로깅을 4바이트 단위로 과도하게 발생시키는 설계입니다. 낸드 플래시는 구조상 '블록 단위 지우기'를 해야 하므로, 4바이트를 고치기 위해 백그라운드에서 4MB 블록 전체를 복사하고 지우는 과정이 반복될 수 있습니다(쓰기 증폭 현상). 결국 FTL 가비지 컬렉션 부하가 커져 SSD 칩 수명(Wear-out)이 빠르게 줄어듭니다.
- 디스크 암(Arm)의 랜덤 액세스 병목 (HDD Thrashing): 하드 디스크(HDD)를 쓰는 데이터베이스에서 클러스터링 인덱스(순차 물리 정렬)를 걸어두지 않고 파편화된 테이블 풀 스캔(Full Scan)을 수행하는 설계입니다. 플래터 위의 디스크 헤드가 트랙과 트랙 사이를 물리적으로 이동(Seek Time = 보통 수 밀리초)해야 하므로, 순차 읽기(Sequential Read) 대비 성능이 수천 배 떨어지고 서버 I/O가 100% 대기 상태에 가까워질 수 있습니다.
4. Prerequisites
- 디지털 논리 트랜지스터 (Basic): 낸드 플래시 셀이 전자를 보관하는 트랜지스터(MOSFET)의 변종임을 이해하기 위한 기초 지식. (02-01-01 DLB)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 자성 원판과 기계적 한계 역학 (Magnetic Disk Anatomy)
- Why to Learn: RDBMS(관계형 데이터베이스)가 데이터를 왜 B-Tree 모양으로 묶어 정렬(Clustering)하는지, 그 근본 원인인 금속 헤드의 물리적 지연 한계를 이해하기 위함입니다.
- What to Learn:
- Concepts: 플래터(Platter), 스핀들(Spindle) 모터, 트랙(Track), 섹터(Sector), 실린더(Cylinder).
- Skills: 탐색 시간(Seek Time), 회전 지연(Rotational Latency), 전송 시간(Transfer Time).
- Tools: 디스크 I/O 스케줄링(엘리베이터 알고리즘).
- Trade-offs: 원판을 15,000 RPM으로 빠르게 돌려 회전 지연을 줄이면 열과 소음이 증가하는 아날로그 기계 공학의 한계 vs 데이터를 흩어놓지 않고(Random) 실린더 단위로 가지런히 배치(Sequential)하여 암(Arm)의 이동을 줄이는 소프트웨어 최적화.
- How to Learn:
- 1단계: 디스크 원판의 맨 바깥쪽 트랙이 안쪽 트랙보다 둘레가 길어 더 많은 섹터(데이터)를 담을 수 있는 존 비트 레코딩(Zone Bit Recording)의 물리적 각속도 효율성을 분석합니다.
- 2단계: 파일의 파편들이 디스크 곳곳에 흩어져 있을 때, 암(Arm)이 위아래로 이동하며 발생하는 평균 탐색 시간(약 5~10ms)이 메모리 접근(100ns) 대비 약 10만 배 느릴 수 있음을 살펴봅니다.
- Implement: 개의 임의 디스크 트랙 번호(
[50, 12, 89, 4, 100])가 요청 배열로 들어왔을 때, 들어온 순서대로 암(Arm)을 움직이는 단순 FCFS 알고리즘과, 현재 헤드 위치에서 엘리베이터처럼 훑고 지나가는 SCAN 알고리즘의 총 헤드 이동 거리 차이를 계산해 텍스트 다이어그램으로 출력하는 물리 시뮬레이터.
Recommended
Core Topic 02: 낸드 플래시 메모리 양자 역학 (NAND Flash Physics)
- Why to Learn: 모터가 없는 SSD가 어떻게 전원을 꺼도 데이터를 유지하는지, 트랜지스터 차원의 미시적 셀 구조를 이해하기 위해서입니다.
- What to Learn:
- Concepts: 플로팅 게이트(Floating Gate), 컨트롤 게이트(Control Gate), 셀(Cell).
- Skills: 전하 포획(Charge Trapping), SLC(Single-Level Cell), MLC, TLC, QLC 전압 레벨 쪼개기.
- Tools: 실리콘 반도체 단면도.
- Trade-offs: 1개의 셀에 1비트만 담는 SLC의 높은 속도와 긴 수명 vs 동일한 셀 1개에 전압 단계를 16단계로 나누어 4비트를 저장하는 QLC의 높은 용량(하지만 수명과 쓰기 속도는 낮아짐).
- How to Learn:
- 1단계: 트랜지스터 중간에 얇은 절연막(산화막)으로 둘러싸인 플로팅 게이트(Floating Gate)를 만들고, 강한 고전압으로 전자를 터널링(Fowler-Nordheim Tunneling)시켜 저장하는 양자 역학적 원리를 분석합니다.
- 2단계: 저장된 전자의 양(문턱 전압)을 8단계(TLC)로 구분해 판독하는 과정이, 셀이 노후화됨에 따라 전자가 새어 나가면서(Leakage) 수명(TBW) 한계에 부딪히는 하드웨어 소모 과정을 살펴봅니다.
- Implement: SLC, MLC, TLC 각각의 전압 레벨 판독 범위를 배열로 정의하고, 난수(노이즈)가 섞인 전압 값들을 입력받았을 때 마진(Margin)이 좁은 TLC일수록 판독 에러율(Bit Error Rate)이 급상승하는 현상을 증명하는 스크립트 모듈.
Practical
Core Topic 03: 읽기/쓰기/지우기 비대칭성 제약 (Flash Constraints)
- Why to Learn: SSD에 단순히 파일을 덮어쓰기(Overwrite)한다고 생각하기 쉽지만, 실제로는 왜 빈 공간을 찾아 쓰는 Out-of-place Update가 필요한지 구조를 이해하기 위함입니다.
- What to Learn:
- Concepts: 페이지(Page), 블록(Block), 덮어쓰기 불가(No In-place Update).
- Skills: 지우기 후 쓰기(Erase-Before-Write), 페이지 상태(Free, Valid, Invalid).
- Tools: SSD I/O 병렬 처리 채널.
- Trade-offs: "원하는 4KB 데이터만 정확히 지우고(Erase) 싶다"는 소프트웨어 관점의 요구 vs 하드웨어 회로망 한계 때문에 지우기 명령(수백 볼트 방전)은 큰 4MB 블록 단위로만 수행해야 하는 비대칭성.
- How to Learn:
- 1단계: 플래시 메모리에서 읽기(Read)와 쓰기(Program)는 4KB 페이지(Page) 단위로 할 수 있지만, 그 페이지가 속한 영역을 지우려면 수십 개의 페이지가 묶인 Block 전체를 지워야 하는 물리적 제약을 분석합니다.
- 2단계: 데이터 덮어쓰기 명령이 오면 기존 페이지를 실제로 지우지 않고 Invalid 처리한 뒤, 다른 Free 페이지를 찾아 새 데이터를 기록하는 Out-of-place 방식을 살펴봅니다.
- Implement: 크기의 2차원 배열 구조를 파이썬 리스트로 구현하고, 특정 인덱스에 값을
Update할 때마다 기존 원소를 지우지 못하고Invalid로 표기한 뒤 새 빈칸에 데이터를 채우다가, 빈칸이 부족하면OutOfMemory에러를 내는 엄격한 플래시 어레이 객체 구축.
Advanced
Core Topic 04: FTL과 가비지 컬렉션, 마모도 평준화 (FTL & Wear Leveling)
- Why to Learn: 플래시 메모리의 쓰기 제약(비대칭성)을 감추고 OS에게 일반 디스크와 비슷한 블록 장치 인터페이스를 제공하는 SSD 내부의 고도화된 제어 계층(FTL)을 이해하기 위해서입니다.
- What to Learn:
- Concepts: FTL(Flash Translation Layer), LBA(Logical Block Address), PBA(Physical Block Address).
- Skills: 매핑 테이블(Mapping Table), 가비지 컬렉션(Garbage Collection), 마모도 평준화(Wear Leveling), 쓰기 증폭(Write Amplification).
- Tools: SSD 컨트롤러(ARM 칩), 오버 프로비저닝(Over-Provisioning).
- Trade-offs: 특정 블록 하나에 쓰기가 집중되는 워크로드에서 그 블록만 빠르게 마모되는 것을 막기 위해, 다른 블록의 데이터까지 함께 이동시키는(Wear Leveling) 수명 연장 전략 vs 이를 수행하느라 백그라운드에서 동작하는 GC 지연(Latency Spikes)이 일시적인 프리징(Freezing)을 만들 수 있는 비용.
- How to Learn:
- 1단계: 운영체제가 논리 주소(LBA 1번)에 매일 덮어쓰기를 명령해도, FTL이 매핑 테이블을 갱신해 칩 전체의 빈 물리 주소(PBA)를 돌아가며 사용하도록 만드는(Wear Leveling) 우회 방식을 분석합니다.
- 2단계: 빈 블록이 부족해지면 FTL이 Invalid 페이지가 많은 블록을 찾아 Valid 페이지만 새 블록으로 옮긴 뒤, 기존 블록을 Erase하여 빈 블록을 확보하는 가비지 컬렉션의 백그라운드 작업을 살펴봅니다.
- Implement: LBA PBA 매핑 딕셔너리와 블록 배열을 시뮬레이터로 띄운 뒤, 1,000번의 임의 덮어쓰기 루프를 실행합니다. 이때 FTL 로직이 GC를 발동시켜 흩어진 Valid 데이터들을 한곳으로 모으고 옛날 블록들의
Erase_Count를 평탄화하는 과정을 추적 로그로 찍어내는 FTL 미니 OS 엔진 작성.
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Storage Systems — Basic I/O behavior.
- [P2] SWEBOK v4.0 - Computing Foundations / External Storage — Industry standards.
Secondary
- [Design and Implementation of NAND Flash Memory Control Systems] — Deep dive into FTL.
- [Database Internals] Alex Petrov — Storage-specific engine design.
Industry
- [The SSD Anthology] AnandTech — Classic industry performance analysis.
- [JEDEC JESD218/219 Standard] — SSD endurance and retention standards.
9. Final Checklist
Primary
- HDD에서 헤드 이동 거리와 데이터 접근 지연 시간 사이의 선형적 물리 관계를 도출할 수 있는가? (P1)
- NAND 플래시의 '지우기(Erase)' 단위가 '쓰기(Write)' 단위보다 왜 항상 물리적으로 훨씬 커야 하는지 구조적 이유를 설명할 수 있는가? (P1)
Secondary
- MLC(2bit)를 TLC(3bit)로 대체했을 때, 동일 면적당 용량 이득과 신뢰성 하락 사이의 수리적 트레이드오프를 소통 가능한가?
- 'TRIM' 명령어가 삭제된 파일을 가리키는 물리 페이지를 어떻게 비유효(Invalid) 상태로 만들어 나중의 쓰기 증폭을 줄이는지 입증 가능한가?
Industry
- 쓰기 집약적인(Write-heavy) DB 환경에서 SSD를 선택할 때, DWPD(Drive Writes Per Day) 수치가 시스템 운영 비용에 미치는 영향을 제안할 수 있는가? (SFIA)
- 실시간 스트리밍 시스템에서 SSD의 가비지 컬렉션 주기가 유발하는 일시적 성능 튐(Latency spike) 현상을 분석하고 완화책을 제시할 수 있는가?