메모리 카드는 왜 불안정해질까: 오버프로비저닝, FTL, 가비지 컬렉션
- scarlettkim7
- 2월 19일
- 3분 분량

메모리 카드 내부 관리에 사용되는 핵심 기술들
메모리 카드는 느려지는 것이 아니라, 내부 동작이 복잡해지면서 응답 시간이 불안정해집니다. OFFLOADER는 그 징후를 촬영 전에 보여줍니다.
촬영 중 발생하는 예기치 않은 오류를 이해하기 위해서는 메모리 카드가 내부적으로 어떤 방식으로 동작하는지를 아는 것이 중요합니다. 이 장에서는 메모리 카드에 사용되는 주요 기술들을 가능한 한 쉽게 설명해 보겠습니다.
1. Over-Provisioning
Over-Provisioning은 메모리 카드 내부에 사용자에게 보이지 않는 여유 공간(spare area)을 확보하여, 장시간 촬영 중에도 안정적인 연속 쓰기 동작을 유지하도록 돕는 기술입니다.
이 기술은 쓰기 속도를 “높이는” 기술이라기보다는, 쓰기 지연이 발생하지 않도록 구조를 바꾼 기술이라고 이해하는 것이 정확합니다.
예를 들어, 64GB로 표시된 메모리 카드의 경우 실제로는 그보다 더 많은 물리 메모리를 가지고 있으며, 그중 일부는 사용자에게 노출되지 않는 내부 관리용 공간으로 사용됩니다.

즉, 사용자에게 보이는 영역 외에 추가적인 숨겨진 여유 공간(예: 11~14)을 내부적으로 보유하고 있습니다.
2010년대 초반 이전에는 NAND Flash의 높은 단가로 인해 이러한 구조가 SD 카드에 거의 적용되지 않았습니다. 그러나 NAND 공정 기술이 발전하면서 비용 부담이 줄어들었고, 이후 Over-Provisioning은 SD 카드에도 적극적으로 도입되었습니다.
이 구조 덕분에, 새로운 데이터를 쓰기 위해 기존 데이터를 즉시 지울 필요가 없어졌고, 데이터 정리는 Garbage Collection을 통해 백그라운드에서 수행할 수 있게 되었습니다. 그 결과 장시간 연속 쓰기 상황에서도 쓰기 지연 없이 안정적인 기록이 기능해졌습니다.
2. Dynamic Mapping – 고급 FTL 구조
Dynamic Mapping은 데이터를 덮어쓰지 않고, 새로운 위치에 기록한 뒤 주소만 변경하는 방식입니다. 이를 가능하게 하는 핵심이 바로 FTL(Flash Translation Layer) 입니다. FTL은 메모리 카드 내부에서 논리 주소(LBA)를 물리 주소(PBA)로 변환해 주는 계층으로, NAND Flash를 HDD나 SSD처럼 연속적인 블록 장치로 사용할 수 있게 해줍니다.
초기 메모리 카드에서는 컨트롤러 성능과 비용 제약으로 인해 주소 변환의 자유도가 낮은 제한적인 static mapping 방식이 주로 사용되었습니다. 이 방식에서는 데이터를 덮어쓸 때마다 기존 데이터를 먼저 지운 후 다시 써야 했습니다.

a) Static Mapping : 3번에 쓰기 위해서는 3번을 지운 후 다시 3번에 쓴다.
그러나 2010년대 이후 Over-Provisioning과 컨트롤러 성능 향상으로 인해 메모리 카드는 Dynamic Mapping 방식을 사용하게 되었습니다. Dynamic Mapping에서는 기존 데이터를 바로 덮어쓰지 않고, 비어 있는 물리 공간에 데이터를 기록한 뒤 해당 물리 주소를 기존 논리 주소에 새로 매핑합니다.

a) Dynamic Mapping : 동일한 사용자 주소라도, 덮어쓰기가 반복될수록 실제 데이터가 저장되는 물리 위치는 계속 바뀌게 됩니다.
3. Garbage Collection (GC)
Garbage Collection(GC) 은 메모리 카드 내부에서 더 이상 필요하지 않은 데이터를 정리하여 다시 쓸 수 있는 빈 공간을 확보하는 백그라운드 작업입니다.
NAND Flash는:
페이지(Page) 단위로 데이터를 쓰지만
블록(Block) 단위로만 지울 수 있기 때문에
유효 데이터와 무효 데이터가 섞인 블록이 점점 늘어나게 됩니다.
GC는 이러한 블록에서:
유효 데이터만 다른 위치로 이동시키고
기존 블록을 Erase하여
다시 사용할 수 있는 빈 블록으로 만드는 작업입니다.
GC는 필수적인 작업이지만, 과도하게 발생하면 내부 데이터 이동이 증가하고 쓰기 지연 및 응답 시간 증가로 이어질 수 있습니다. 특히 장시간 연속 촬영과 같이 쓰기 작업이 멈추지 않는 상황에서는 GC의 효율성이 연속 쓰기 안정성을 좌우합니다.
GC가 잦아진다는 것은 보통:
내부 여유 공간 감소
데이터 조각화 증가
NAND 셀 노화
응답 시간 열화가 진행 중이라는 신호입니다.
SLC Cache & Folding
현대의 SD 카드와 SSD는 대부분 TLC 또는 QLC NAND Flash를 사용합니다.
이를 보완하기 위해 컨트롤러는 NAND 일부를 SLC 모드로 사용하는 SLC Cache 구조를 사용합니다.
영상 데이터는:
먼저 SLC Cache에 빠르게 기록되고
이후 백그라운드에서 TLC/QLC 영역으로 이동됩니다
이 이동 과정을 Folding 이라고 합니다.
중요한 점은 Folding이 SLC Cache가 가득 찬 뒤 한 번에 수행되는 것이 아니라, 쓰기와 동시에 지속적으로 수행되는 작업이라는 점입니다.
장시간 촬영이 안정적으로 유지되기 위한 조건은 명확합니다.
Folding 속도 ≥ 실제 쓰기 속도
이 조건이 무너지면:
SLC Cache가 소진되고
쓰기 지연이 발생하며
결국 녹화가 중단됩니다.
카드가 오래될수록 Over-Provisioning 감소, GC 증가, ECC 재시도 증가로 인해 Folding 속도는 점점 느려지게 되고, 그 결과 응답 시간 열화가 나타나게 됩니다.
OFFLOADER의 카드 체크 기능은 이러한 내부 동작을 직접 보는 것이 아니라, 그 결과로 나타나는 응답 시간의 변화를 측정하여 GC와 Folding이 정상적으로 동작하지 못하는 상태를 촬영 전에 미리 감지할 수 있도록 도와줍니다. 이는 메모리 카드가 완전히 고장 나기 전 단계에서 위험 신호를 확인할 수 있다는 점에서 매우 중요합니다.




다음 글에서는, 정상적으로 사용하던 V30 및 V90 메모리 카드에서도 왜 촬영 중 녹화 중단이 발생할 수 있는지, 그 실제 원인에 대해 살펴보겠습니다.



댓글