Disk, SSD & Magnetic Physics
회전하는 자성판과 전자의 흐름을 가두는 플래시 메모리 등 물리 저장 매체의 하드웨어 구동 원리와 데이터 기록의 물리학을 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
operating-systems-system-mechanicsoperating-systemssystem-mechanicsstoragei-o-mechanicsdiskssdmagnetic-physics10 min read
1. Overview
디스크, SSD와 마그네틱 물리학(Disk, SSD & Magnetic Physics)은 메모리 계층(Memory Hierarchy)의 하위 저장 계층에서, 전원이 끊겨도 데이터가 유지되도록 자성(Magnetism)과 전하 저장 구조를 이용해 데이터를 기록하는 기계적/물리적 저장 공학입니다.
학습자는 모터로 플래터를 7200 RPM으로 회전시키고, 매우 좁은 간격에서 움직이는 헤드(Head)로 자기장(Flux)의 상태를 0과 1로 해석하는 하드디스크(HDD)의 기계적 기록 방식을 살펴봅니다. 나아가 플로팅 게이트(Floating Gate)에 전하를 저장하고 블록 단위 지우기(Erase)를 거쳐 새 데이터를 쓰는 낸드 플래시(NAND Flash)의 구조, 그리고 쓰기 증폭과 수명 저하를 완화하는 SSD 컨트롤러의 FTL(Flash Translation Layer) 매핑 전략을 익힙니다.
2. Scope & Boundaries
In-Scope
- HDD 물리 역학 (Magnetic Drives): 플래터(Platter), 트랙(Track), 섹터(Sector 512B/4K), 실린더(Cylinder), 스핀들 모터, 헤드 탐색 시간(Seek Time)과 회전 지연(Rotational Latency).
- NAND 플래시 물리 (Solid State Physics): 플로팅 게이트(Floating Gate), 터널링 효과(Fowler-Nordheim), SLC/MLC/TLC/QLC 셀 전압(Voltage) 분할, 쓰기/지우기 비대칭성(Page Read/Write vs Block Erase).
- SSD FTL 아키텍처 (Flash Translation Layer): 맵핑 테이블(Mapping Table), 가비지 컬렉션(GC), 마모 평준화(Wear Leveling), 쓰기 증폭(Write Amplification, WAF), TRIM 명령어.
Out-of-Scope
- 운영체제 파일 시스템 논리 구조: EXT4나 NTFS의 Inode, 디렉토리 구조 맵핑 03-03-03. VFS & Filesystem Internals 영역.
- 다중 디스크 분산 저장 시스템: RAID 구성이나 LVM 논리 볼륨 03-03-04. Persistence & Storage Analytics 영역.
Boundaries
- Block I/O Layer (OS) vs. Physical Drive (Hardware): 운영체제의 블록 스케줄러(03-03-02)가 디스크 헤드 이동을 줄이도록 요청(LBA 100 200)을 정렬하는 소프트웨어 영역이라면, 이 모듈(03-04-01)은 정렬된 LBA(Logical Block Address)가 실제 물리 실린더의 자성 상태나 실리콘 셀의 전하 상태로 어떻게 기록되는지 규명하는 하드웨어 저장 계층입니다.
3. Counterexample
- 낸드(NAND) 덮어쓰기 오해와 플래시 마모 (In-Place Update Crash): 하드디스크(HDD)처럼 Raw NAND의 특정 섹터에 센서 값을 계속 덮어쓰도록 구현하면 빠르게 마모가 누적됩니다. 낸드는 덮어쓰기(Overwrite)가 물리적으로 불가능하고 블록 단위 지우기 후 쓰기가 필요하므로, 같은 영역을 반복 갱신하면 산화막(Oxide)이 손상되어 Wear-out이 발생합니다. 낸드는 반드시 빈 공간에 분산 기록하는 웨어 레벨링(Wear Leveling)과 매핑(FTL)을 거쳐야 합니다.
- 가비지 컬렉션(GC) 병목과 SSD 쓰기 절벽 (The Dirty Drive Lag): SSD 용량을 99%까지 채워 쓰면 새 데이터를 기록할 빈 Erase Block을 찾기 어려워집니다. FTL은 유효 데이터와 무효 페이지를 모아 정리하는 가비지 컬렉션(Garbage Collection)을 백그라운드에서 수행해야 하며, 이 과정이 사용자 쓰기와 겹치면 쓰기(Write) 속도가 급격히 떨어지는 쓰기 절벽(Write Cliff)이 나타날 수 있습니다. SSD에는 일정한 여유 공간(Over-provisioning)을 남겨두는 것이 중요합니다.
4. Prerequisites
- 디지털 논리 전압 (Basic): 0과 1이 결국 실리콘 칩 안에 미세한 전압(Voltage)의 높낮이로 갇힌다는 반도체 센싱의 개념이 필요합니다. (02-02-01 Transistors & Logic Gates)
- 블록 I/O 큐 (Recommended): OS 커널이 하드웨어 디바이스로 명령(BIO)을 보낼 때 요청을 모으고 정렬하는 흐름을 이해해야 드라이브 내부 동작을 해석할 수 있습니다. (03-03-02 Page Cache & I/O Stack)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 자성 기록과 물리적 대기, 하드디스크의 궤적 (Magnetic Platter & Seek)
- Why to Learn: 최신 CPU를 사용하더라도 저장 장치가 느리면 부팅과 파일 접근이 지연됩니다. 하드디스크의 물리적 탐색 지연(Mechanical Latency)을 수치로 계산하기 위함입니다.
- What to Learn:
- Concepts: 플래터(Platter), 스핀들 모터(7200 RPM), 자기 헤드(Read/Write Head), 트랙(Track), 섹터(Sector), 실린더(Cylinder).
- Skills: 탐색 시간(Seek Time), 회전 지연(Rotational Latency), 순차 대 랜덤(Sequential vs Random) 속도차 분석.
- Tools: S.M.A.R.T. 하드웨어 물리 에러 카운터.
- Trade-offs: 자성(Magnetism)으로 기록하는 HDD는 낸드처럼 P/E Cycle 제한을 받지 않고 대용량을 저렴하게 제공하지만, 모터와 헤드 이동이 필요하므로 4KB 랜덤 I/O가 많아지면 IOPS가 크게 낮아지는 기계적 한계가 있습니다.
- How to Learn:
- 1단계: Rotational Latency: 디스크가 7200 RPM으로 회전할 때, 헤드가 같은 트랙에 있어도 원하는 데이터(섹터)가 헤드 아래를 지나갈 때까지 평균 반 바퀴를 기다려야 하는 회전 지연(평균 약 4ms)을 계산합니다.
- 2단계: Seek Time: 1번 트랙을 읽다가 999번 트랙 요청이 들어오면 헤드가 물리적으로 이동하고 안정화되어야 하므로 탐색 지연(약 8ms)이 발생하는 과정을 살펴봅니다.
- Implement: 파이썬
HDD_Simulator모사. 헤드의 현재 트랙Current_T = 0에서,Request_Queue = [10, 50, 15]가 주어질 때abs(Target - Current) * Seek_Delay(1ms)수학 공식을 돌려 총 물리 이동 비용(Cost)을 계산하고, 이 지연 시간 동안 블로킹(Blocking)이 발생하는 흐름을 터미널 텍스트 지연(time.sleep)으로 확인합니다.
Recommended
Core Topic 02: 전하 저장과 덮어쓰기 제약, 낸드 플래시 역학 (NAND Quantum Physics)
- Why to Learn: SSD가 기계적 모터 없이 빠르게 동작하는 이유와, 그 이면에 있는 낸드 플래시의 지우기 횟수 제한과 블록 단위 쓰기 제약을 이해하기 위해서입니다.
- What to Learn:
- Concepts: 플로팅 게이트(Floating Gate), 파울러-노르드하임 터널링(FN Tunneling), 쓰기 팽창(Page Read/Write vs Block Erase).
- Skills: 인플레이스 업데이트(In-place Update) 불가능성, 배드 블록(Bad Block) 생성 원리.
- Tools: NAND 트랜지스터 단면 기하학 분석.
- Trade-offs: 절연막(Oxide) 너머로 전자를 이동시켜 저장하면 전원이 꺼져도 데이터를 유지할 수 있지만, 셀 상태를 바꾸려면 블록 단위 Erase가 필요합니다. 이 과정이 반복되면 산화막이 손상되어 Wear-out이 누적됩니다.
- How to Learn:
- 1단계: 비대칭 단위 제약: 낸드는 데이터를 읽고(Read) 쓰는(Write/Program) 것은 작은 4KB(Page) 단위로 가능하지만, 지우기(Erase)는 2MB 안팎의 큰 Block 단위로 수행해야 하는 회로적 제약을 이해합니다.
- 2단계: 덮어쓰기 불가의 벽: 이미 'A'라는 글자가 써진 4KB 페이지에 'B'를 덮어쓰려면, 그 페이지 하나만 지울 수 없으므로 해당 블록 전체를 읽고 블록을 Erase한 뒤 수정된 데이터를 다시 쓰는 쓰기 증폭(Write Amplification) 과정을 추적합니다.
- Implement: 4KB 크기의
Page리스트 10개로 묶인Block파이썬 객체 시뮬레이션.Page[2]에 쓴 데이터를 수정(Overwrite)하라는 명령이 들어오면Exception: Erase_Before_Write_Required를 발생시킵니다. 정상적으로 갱신하려면 블록 내 전체Page를 백업 버퍼로 옮기고.erase_all()을 수행한 뒤 다시 기록하며 erase count가 증가하는 흐름을 확인합니다.
Practical
Core Topic 03: 셀 전압 분할과 용량 타협, SLC부터 QLC까지 (Multi-Level Cell Math)
- Why to Learn: 같은 칩 면적에서 SSD 용량이 128GB에서 1TB, 2TB로 커질 수 있었던 이유와, 그 과정에서 속도와 수명이 어떻게 타협되는지 이해하기 위해서입니다.
- What to Learn:
- Concepts: SLC(Single Level Cell, 1bit), MLC(2bit), TLC(3bit), QLC(Quad, 4bit), 셀 문턱 전압(Threshold Voltage) 분할.
- Skills: 수명(P/E Cycle) 하락 곡선 계산, 전압 읽기 재시도(Read Retry) 지연.
- Tools: SSD 스펙 시트(TBW: Terabytes Written) 해독.
- Trade-offs: SLC는 셀 하나를 두 상태(0과 1)로만 구분해 속도와 수명에 유리하지만 용량 대비 가격이 높습니다. QLC는 하나의 셀을 16단계 전압으로 나누어 4비트를 저장하므로 용량 효율은 높지만, 읽기 판별이 복잡해지고 전압 여유 폭이 좁아져 지연과 수명 저하가 커집니다.
- How to Learn:
- 1단계: TLC 전압 구간: 셀에 저장된 전자의 양(전압)을 0V부터 5V까지 8구간으로 나누어(000, 001 ... 111) 3비트(TLC) 정보를 표현하는 전압 기하학을 분석합니다.
- 2단계: QLC는 쓰기 때 목표 전압을 더 정밀하게 맞춰야 하고, 읽을 때도 Reference Voltage를 여러 번 바꿔가며 판별해야 하므로 Read Latency가 증가하는 과정을 살펴봅니다.
- Implement: 셀
Voltage(0.0~5.0)파이썬 클래스 구축. SLC 셋업 시voltage > 2.5면1, 아니면0으로 1단계 판독하지만, QLC(16단계) 셋업 시 임의의 전압3.15V가 찍히면[0.3V, 0.6V... 3.3V]리스트와 여러 번 비교하며 판독 지연 코스트가 커지는 반도체 센싱 시뮬레이션 콘솔 덤프.
Advanced
Core Topic 04: 논리-물리 매핑과 FTL 아키텍처 (Flash Translation Layer)
- Why to Learn: 낸드 플래시는 덮어쓰기가 불가능하고 지우기 횟수 제한이 있지만, OS는 일반 블록 장치처럼 덮어쓰기 명령을 보냅니다. SSD 컨트롤러가 이 차이를 어떻게 FTL로 흡수하는지 이해하기 위해서입니다.
- What to Learn:
- Concepts: FTL(Flash Translation Layer), 논리-물리 맵핑(Logical-to-Physical Mapping), 가비지 컬렉션(GC, Garbage Collection), 마모 평준화(Wear Leveling), 쓰기 증폭(WAF).
- Skills: 오버 프로비저닝(Over-Provisioning) 튜닝, TRIM 명령어.
- Tools: SSD 컨트롤러(Phison, Samsung) ARM 코어 메커니즘.
- Trade-offs: FTL이 논리 주소 10번을 물리 페이지 500번에 매핑했다가, 수정 요청이 오면 새 물리 페이지 600번에 데이터를 쓰고 매핑만 갱신하면 덮어쓰기 제약을 우회할 수 있습니다. 하지만 이런 방식이 반복되면 Invalid Page가 늘어나고, 가비지 컬렉션(GC) 비용 때문에 쓰기 성능이 떨어질 수 있습니다.
- How to Learn:
- 1단계: 마모 평준화(Wear Leveling): 커널이
Sector 0(파티션 부트 테이블)에만 반복적으로 덮어쓰기 명령을 내려도, FTL은 여러 물리 셀에 기록을 분산해 특정 셀에 마모가 집중되는 상황을 줄입니다. - 2단계: TRIM 전달: 사용자가 큰 파일을 삭제해도 OS는 파일 시스템 메타데이터만 갱신할 수 있으므로 SSD는 해당 블록이 더 이상 유효하지 않은지 알기 어렵습니다. TRIM 명령은 OS가 SSD에게 "이 논리 블록들은 더 이상 필요 없다"고 알려주어, 가비지 컬렉션이 불필요한 데이터 복사를 줄이게 합니다.
- 1단계: 마모 평준화(Wear Leveling): 커널이
- Implement: 매핑 테이블 딕셔너리(
Logical_Addr -> Physical_Page)를 탑재한 FTL 파이썬 객체 작성. 사용자가 LBA 5번에 "A"를 쓰고 0.1초 뒤 LBA 5번에 "B"를 덮어쓰라고 명령하면, 객체는 기존Physical=10(A)를 그 자리에 덮지 않고 새 빈 페이지Physical=99에 "B"를 기록한 뒤 테이블을LBA 5 -> 99로 갱신합니다. 이후 백그라운드 루틴이 Invalid Page를 모아Erase()하는 GC 시퀀스를 출력합니다.
7. Terminology
8. References
Primary
- [P2] SWEBOK v4.0 - Computing Foundations / Computer Organization (Storage) — Physical structures.
- [P1] CS2023 - OS/Operating System Principles (Physical Storage) — Core requirements.
Secondary
- [The Art of Magnetic Recording] — Physics of hard drive storage.
- [Inside Solid State Drives (SSD)] Rino Micheloni — Semiconductor physics focus.
Industry
- [Seagate: Magnetic Recording Technologies] — HAMR/SMR industry guide.
- [Micron: NAND Flash Physical Structure and Operation] — Technical brief.
9. Final Checklist
Primary
- HDD의 '헤드', '트랙', '섹터'의 물리적 관계와 데이터 주소 지정 방식(CHS vs LBA)을 설명 가능한가? (P1)
- SSD가 HDD와 달리 '물리적 충격(Shock)'에 왜 강하며 소음이 없는지 그 하드웨어적 근거를 입증할 수 있는가? (P1)
Secondary
- 디스크의 회전 속도(RPM)가 7200에서 15000으로 올라갈 때, '비트 밀도'를 일정하게 유지한다면 물리적 데이터 전송률이 어떻게 변하는지 설명할 수 있는가?
- 플래시 메모리의 'TLC'와 'QLC' 중 어느 것이 물리적으로 수명이 더 짧은지 전압 세분화 관점에서 도출할 수 있는가?
Industry
- 데이터 센터 하드웨어 관리 시, 특정 전압 범위를 벗어난 SSD가 왜 'Silent Corruption'을 유발할 수 있는지 물리적 위험성을 제안할 수 있는가? (SFIA)
- HAMR 기술이 왜 전통적인 자기 기록 방식의 밀도 한계를 '온도'를 이용해 돌파할 수 있는지 물리적 원리를 기술할 수 있는가?