Study/Memory, SSD, RAM

SSD 공부 - 3: FTL

로버트 E.O. 스피드왜건 2026. 1. 11. 23:23

 

SSD는 사실 거짓말쟁이?!

이 냄새는...! 치밀한 두뇌 싸움의 냄새가 나는군! 겉으로는 평온해 보이지만, 속에서는 엄청난 계산이 돌아가는 천재의 냄새다!

"SSD는 그냥 저장만 하면 되는 거 아닌가?"라고 생각했나? 천만에! SSD는 지금 이 순간에도 컴퓨터(OS)를 완벽하게 속이고 있다!

설명충 등판! 아니, 나 스피드웨건이 3탄으로 돌아왔다! SSD는 HDD처럼 단순 무식하게 데이터를 덮어쓰지 않는다. 컴퓨터(OS)가 "야! 여기다 저장해!"라고 명령해도, SSD는 "싫은데? 여기다 할 건데?"라며 딴 곳에 저장한다! 도대체 왜 이런 반항(?)을 하는지, 그리고 그 중심에 있는 FTL이 뭔지 아주 속 시원하게 파헤쳐 주겠다!

1. 충격! SSD는 '덮어쓰기'가 안 된다?! (Out-of-place update)

자, 칠판을 생각해 봐라. 분필로 글씨를 썼는데 틀렸다. 어떻게 하지? 지우개로 지우고 그 자리에 다시 쓰지? 이게 바로 HDD의 방식이다! (Over-write)

하.지.만! SSD는 다르다! SSD의 낸드 플래시는 데이터를 쓰는 건 자유롭지만, **지우는 건 엄청나게 고통스러운 작업**이다! 그래서 SSD는 데이터를 수정할 때, 기존 데이터를 지우고 다시 쓰는 게 아니라... '새로운 빈 공간'에다가 데이터를 써버린다! 그리고 기존 데이터는 "넌 이제 쓸모없어!"라고 딱지(Invalid)만 붙여놓고 버려두지!

🚨 스피드웨건의 핵심 요약! '이곳이 아니면 안 돼' 방식!

이것을 전문 용어로 'Out-of-place update'라고 한다!
1. HDD: 100번지 데이터를 수정해라 -> 100번지를 지우고 다시 쓴다.
2. SSD: 100번지 데이터를 수정해라 -> 100번지는 놔두고, 빈 200번지에 새 데이터를 쓴다. -> "이제부터 200번지가 진짜 100번지야!"라고 메모한다.
(뭐라고?! 이렇게 제멋대로라니!)

 


 

2. 통역사 등장! 두 세계를 잇는 FTL (Flash Translation Layer)

여기서 문제가 발생한다! 컴퓨터(윈도우)는 멍청하게도 아직 SSD를 HDD라고 생각한다! 그래서 "야! 아까 그 100번지에 덮어써!"라고 계속 명령을 내리지. 하지만 SSD는 "아, 거긴 못 쓴다니까..."라며 딴 곳에 쓴다. 이 대화가 통하겠나?!

그래서 필요한 것이 바로 최강의 통역사, FTL(Flash Translation Layer)이다! (두둥!) 이 녀석은 SSD 컨트롤러 안에 살면서 컴퓨터와 낸드 플래시 사이를 중재하는 '문지기' 역할을 한다!

🗣️ FTL의 기가 막힌 통역 실력!

컴퓨터(OS): "야, 1번 주소(LBA)에 데이터 저장해!"
FTL (속마음): '1번 방은 지금 더러우니까 깨끗한 50번 방(PBA)에 넣어야지.'
FTL (실제 행동): 데이터를 50번 방에 쏙 넣음.
FTL (대답): "네! 1번 주소에 잘 넣었습니다 형님!" (거짓말)

결국 컴퓨터는 자기가 원한 곳에 저장된 줄 알지만, 실제로는 FTL이 관리하는 딴 곳에 저장된 것이다! 이 얼마나 완벽한 사기극인가!

 


 

3. 논리 주소(LBA)와 물리 주소(PBA)의 숨바꼭질!

방금 말한 내용을 좀 더 있어 보이는 말로 정리해주지! 컴퓨터가 알고 있는 주소를 '논리 주소(Logical Block Address, LBA)'라고 하고, 실제 낸드 플래시 칩 안의 진짜 위치를 '물리 주소(Physical Block Address, PBA)'라고 한다.

FTL은 이 둘을 연결해 주는 '매핑 테이블(Mapping Table)'이라는 지도를 가지고 있다! 마치 도서관 사서가 "해리포터 책(LBA)"을 찾으면 "3번 책장 2번째 칸(PBA)"이라고 알려주는 것과 똑같지!

(식은땀을 흘리며) 만약 이 매핑 테이블이 꼬이거나 날아가면? 데이터는 멀쩡히 살아있는데 컴퓨터는 파일을 절대 찾을 수 없게 된다! 그래서 SSD가 뻑나면 복구가 그토록 어려운 것이다!

🗺️ 매핑 테이블의 역할

* LBA 100 (사용자가 보는 위치) ➡️ PBA 3521 (실제 위치)
* 데이터 수정 발생! ➡️ PBA 3521은 버려짐(Invalid) ➡️ 새 데이터는 PBA 9022에 저장
* 매핑 테이블 업데이트! ➡️ LBA 100은 이제 PBA 9022를 가리킴!
(사용자는 아무것도 모른 채 행복하다!)

 


 

마무리: FTL, 고독한 천재여!

자, 어떤가! 우리가 아무 생각 없이 저장 버튼을 누를 때, SSD 내부에서는 FTL이라는 녀석이 미친 듯이 주소를 바꾸고 지도를 수정하며 발바닥에 땀이 나도록 뛰어다니고 있다는 사실! 이 녀석 덕분에 우리는 SSD의 복잡한 특성을 몰라도 편하게 컴퓨터를 쓸 수 있는 것이다!

📌 3부 핵심 요약!
1. SSD는 덮어쓰기가 안 돼서 빈 공간에 새로 쓰는 방식을 택한다! (Out-of-place)
2. 컴퓨터(OS)는 HDD인 줄 알고 명령하지만, FTL이 중간에서 통역한다!
3. 사용자가 아는 주소(LBA)와 실제 주소(PBA)는 다르다!
4. FTL의 매핑 테이블이 이 모든 사기극(?)을 관리하는 핵심 장부다!

설명은 끝났다! 하지만 여기서 의문이 들지 않나? "그럼 쓰다 버린 데이터(쓰레기)들은 어떻게 되나요? 방이 꽉 차면 터지나요?" 크크큭... 예리하군! 다음 4부에서는 SSD의 청소부, '가비지 컬렉션(Garbage Collection)'과 수명을 늘리는 기술인 '웨어 레벨링'에 대해 설명해주지! 나 스피드웨건은 이만 쿨하게 떠나주지! (도움이 되었다면 공감을 눌러라!)