SSD 용량이 꽉 차면 느려지는 이유

컴퓨터의 속도를 획기적으로 높여주는 일등 공신은 단연 SSD(Solid State Drive)입니다. 하드디스크(HDD)와 달리 물리적인 디스크 회전 없이 전기적 신호로 데이터를 주고받기 때문에 부팅 속도와 게임 로딩 속도에서 압도적인 성능을 보여줍니다. 하지만 많은 사용자가 SSD를 사용하다 보면 어느 순간부터, 특히 저장 공간이 가득 차갈수록 컴퓨터가 버벅거리거나 파일 복사 속도가 급격히 떨어지는 현상을 경험하곤 합니다.

단순히 용량이 부족하다고 생각하기 쉽지만, 이 현상의 이면에는 낸드 플래시 메모리(NAND Flash Memory)의 독특한 데이터 기록 방식과 구조적인 한계가 숨어 있습니다. 오늘은 SSD가 저장 공간이 부족할 때 왜 성능 저하를 겪게 되는지, 그 기술적 원인을 심층 분석해 보겠습니다.

1. 덮어쓰기가 불가능한 낸드 플래시의 숙명

우리가 흔히 사용하던 하드디스크(HDD)는 데이터 위에 새로운 데이터를 덮어쓰는 것이 자유롭습니다. 빈 공책에 연필로 글씨를 썼다가 지우개로 지우지 않고 그 위에 덧칠을 해도 되는 것과 비슷합니다. 하지만 SSD의 저장 단위인 낸드 플래시는 근본적으로 다릅니다.

SSD는 데이터의 최소 기록 단위인 페이지와 이 페이지들이 모인 블록으로 구성됩니다. 여기서 치명적인 구조적 제약이 발생합니다.

  • 읽기와 쓰기 : 페이지 단위로 수행됩니다.
  • 삭제 : 블록 단위로만 수행됩니다.

즉, 데이터가 이미 기록된 페이지에 새로운 데이터를 쓰려면, 해당 페이지가 포함된 블록 전체를 비운 후에야 새로운 데이터를 기록할 수 있습니다. SSD에 빈 공간이 넉넉할 때는 비어 있는 페이지에 바로 데이터를 쓰면 되기 때문에 속도가 매우 빠릅니다. 이를 Clean State라고 합니다. 하지만 용량이 가득 차게 되면 SSD 컨트롤러는 “기존 데이터를 읽어서 임시 저장 -> 해당 블록 삭제 -> 기존 데이터와 새 데이터를 합쳐서 다시 기록”이라는 복잡한 과정을 거쳐야 합니다. 이 과정을 쓰기 증폭 현상이라고 부르며, 이것이 속도 저하의 첫 번째 원인입니다.

2. 가비지 컬렉션(Garbage Collection)의 과부하

운영체제에서 파일을 삭제하면 SSD 내부에서는 데이터가 즉시 사라지는 것이 아니라 삭제된 데이터라는 표시만 남게 됩니다. 이러한 불필요한 데이터가 쌓인 블록을 정리하여 다시 쓸 수 있는 빈 공간으로 만드는 작업을 가비지 컬렉션이라고 합니다.

SSD는 노는 시간에 틈틈이 이 청소 작업을 수행하여 빈 블록을 확보해 둡니다. 하지만 저장 공간이 꽉 차 있다면 어떻게 될까요? SSD는 여유 공간이 없기 때문에 사용자가 데이터를 기록하려는 그 순간에 실시간으로 가비지 컬렉션을 수행해야 합니다.

사용자는 단순히 “파일 저장” 명령을 내렸지만, SSD 내부에서는 “유효한 데이터 피신 -> 블록 삭제 -> 데이터 재배치 -> 저장”이라는 막노동을 동시에 수행하게 됩니다. 당연히 CPU와 SSD 컨트롤러에 과부하가 걸리고, 이는 시스템 전반의 랙이나 프리징 현상으로 이어집니다.

3. SLC 캐싱 구간의 실종

현대의 소비자용 SSD는 대부분 TLC(Triple Level Cell) 또는 QLC(Quad Level Cell) 방식을 사용합니다. 이는 하나의 셀에 3~4비트의 정보를 저장하여 용량을 늘리는 방식인데, 속도와 수명 면에서는 1비트만 저장하는 SLC(Single Level Cell)보다 불리합니다.

이 속도 저하를 보완하기 위해 제조사들은 SSD의 일부 공간을 SLC 캐시로 할당합니다. 마치 고속도로의 하이패스 차선처럼 데이터가 들어오면 일단 빠른 SLC 영역에 기록했다가 나중에 천천히 TLC/QLC 영역으로 옮기는 방식입니다.

문제는 SSD 용량이 가득 차면, 이 가변적인 SLC 캐싱 영역 자체가 줄어들거나 사라진다는 점입니다. 캐시로 쓸 공간조차 데이터로 꽉 차버리면, SSD는 느린 TLC/QLC 낸드 플래시에 직접 데이터를 기록해야 합니다. 이때의 속도는 구형 하드디스크 수준으로 떨어질 수 있으며 사용자는 급격한 성능 저하를 체감하게 됩니다.

4. TRIM 명령어의 중요성

윈도우와 같은 운영체제는 TRIM이라는 명령어를 통해 삭제된 데이터의 정보를 SSD에 미리 알려줍니다. “이 주소에 있는 데이터는 이제 안 쓰니까 미리 지워도 돼”라고 귀띔해 주는 것입니다. 이를 통해 SSD는 미리 블록을 비워 놓을 수 있어 쓰기 속도를 유지합니다.

하지만 SSD 용량이 물리적 한계치인 90%~95% 이상 도달하면 TRIM 명령어가 작동할 여지조차 줄어듭니다. 비워낼 공간 자체가 부족하기 때문에 TRIM의 효율성이 급격히 떨어지고, 이는 곧바로 컨트롤러의 연산 부담으로 돌아옵니다.

5. 성능을 유지하기 위한 최적의 관리

그렇다면 꽉 찬 SSD의 속도 저하를 막기 위해서는 어떻게 해야 할까요? 전문가들은 SSD 용량의 최소 10%에서 20%는 항상 비워둘 것을 권장합니다. 이를 기술적인 용어로 오버 프로비저닝(Over-Provisioning) 영역이라고도 부릅니다.

이 여유 공간은 사용자가 데이터를 저장하는 공간이 아니라, SSD 컨트롤러가 가비지 컬렉션을 원활하게 수행하고, 마모된 셀을 대체하며 SLC 캐싱을 유지하기 위한 작업 공간으로 활용됩니다. 최근 출시되는 SSD 관리 소프트웨어(삼성 등)에서는 사용자가 임의로 이 영역을 설정할 수 있는 기능을 제공하기도 합니다.

비움이 곧 속도다.

결론적으로, SSD가 꽉 찼을 때 느려지는 현상은 고장이 아니라 낸드 플래시 메모리의 구조적 특성에 기인한 지극히 자연스러운 현상입니다. ‘쓰기 전 삭제’라는 SSD의 숙명적인 메커니즘 때문입니다.

따라서 쾌적한 컴퓨터 환경을 유지하고 싶다면, 불필요한 대용량 파일은 외장 하드나 클라우드로 옮기고, 주기적으로 디스크 정리를 수행하여 항상 10~20%의 여유 공간을 확보하는 것이 좋습니다. SSD에게 숨 쉴 공간을 만들어주는 것, 그것이 바로 고성능 PC를 유지하는 가장 스마트한 관리 전략입니다.

지금까지 ‘토니노드의 글’ 이었습니다. 긴 글 읽어주셔서 감사합니다!