다섯 살도 알 수 있게 · 시스템SW
플래시 변환계층(FTL)이 뭐예요?
SSD의 플래시 변환계층(FTL)을, 카탈로그 번호와 실제 칸을 이어주고 바뀐 부품은 늘 새 칸에 넣는 정비공장 부품 창고 관리인 이야기로 풀어봤어요.
'3번 칸만 바꿔주세요' 했더니, 상자째 비워야 한대요.의아하죠? 플래시 메모리 창고는 원래 상자 단위로만 비워져요.
이 창고는 상자 단위로만 비워지고, 너무 자주 쓰면 칸이 닳아요.비우고 채우는 걸 너무 자주 하면 그 칸이 못 쓰게 돼요.
FTL은 카탈로그 번호와 실제 칸을 이어주는 관리인이에요.관리인은 옛 칸 위에 덮어쓰지 않고, 새 빈 칸에 넣어요.
주소 바꿔주기카탈로그 번호↔실제 칸을 이어요
새 칸에 넣기옛 칸에 덮어쓰지 않아요
폐기 칸 모아 비우기가비지 컬렉션이에요
칸을 골고루 돌려쓰기마모 평준화예요
관리인은 새 칸에 넣고, 옛 칸을 표시하고, 모아 비우고, 골고루 돌려써요.손님(운영체제)은 이 과정을 몰라도 돼요, 카탈로그 번호(논리 주소)로만 찾으면 돼요.
창고는 빈 칸을 늘 남겨둬야 하고, 옛 칸을 비우는 동안 잠깐 느려지기도 해요.FTL이 덮어쓰기 문제를 풀어주지만, 여유 공간과 잠깐의 느려짐이 그 대가예요.
한 줄로
플래시 변환계층(FTL)은 카탈로그 번호(논리 주소)와 실제 칸(물리 주소)을 이어주고, 바뀐 부품을 옛 칸에 덮어쓰지 않고 새 칸에 넣어주는 관리인이에요.
FTL은 SSD 내부에서 논리 블록 주소(LBA)를 실제 NAND 플래시의 물리 주소로 변환해주는 계층이에요. 플래시는 덮어쓰기가 안 되고 블록 단위로만 지울 수 있어, 쓰기 요청이 오면 기존 페이지는 무효 처리하고 새 빈 페이지에 기록해요. 무효 페이지가 쌓인 블록은 가비지 컬렉션이 아직 유효한 페이지를 다른 블록으로 옮긴 뒤 통째 지워 재사용하고, 특정 블록만 닳지 않도록 쓰기를 고르게 분산하는 웨어 레벨링도 함께 수행해요.
어른들은 이렇게 불러요
- FTL(플래시 변환계층)
Flash Translation Layer - 카탈로그 번호와 칸을 이어주는 부품 창고 관리인. 주소 변환·가비지 컬렉션·마모 평준화를 SSD 안에서 맡아요.
- 논리 주소/물리 주소
Logical/Physical Address - 카탈로그 번호 vs 실제 칸 번호. FTL이 이 둘을 연결해줘요.
- 가비지 컬렉션
Garbage Collection - 폐기 예정 칸을 모아 한번에 비우기. 아직 쓰는 칸을 옮기며 비우는 동안엔 쓰기가 잠깐 느려질 수 있어요.
- 웨어 레벨링
Wear Leveling - 칸을 골고루 돌려쓰기. 한 칸만 닳아 못 쓰게 되는 걸 막아요.
- 오버프로비저닝
Over-provisioning - 늘 비워두는 여분의 칸. SSD의 쓰기 속도와 수명을 지켜줘요.
- 블록/페이지
Block/Page - 통째로만 지워지는 큰 칸, 그 안의 작은 칸. 지우기는 블록, 쓰기는 페이지 단위예요.
- 플래시 메모리
Flash Memory - 전원이 꺼져도 부품을 기억하는 이 창고 자체. 이 창고를 관리하는 소프트웨어가 FTL이에요. → 전원이 꺼져도 기억하는 부품 창고
- 고가용성
High Availability - 칸 하나가 망가져도 버티는 대비. 이 분야 대신 SRE 분야에서 다뤄요. → 예비 발전기가 넘겨받는 이야기
다음 이야기
급한 차가 덜 급한 차에 밀려 멈춰요 →