플래시 메모리 - 4. 플래시 메모리의 동작 방식 및 관리 기법 (4.3 가비지 컬렉션 (Garbage Collection))

2025. 2. 23. 16:23정보기술/하드웨어

4.3 가비지 컬렉션 (Garbage Collection)

가비지 컬렉션(Garbage Collection, GC)은 플래시 메모리에서 불필요한 데이터를 정리하고, 새로운 데이터를 저장할 공간을 확보하는 기술이다.
플래시 메모리는 HDD와 달리 덮어쓰기가 불가능하므로, 기존 데이터를 지우고 새로운 데이터를 저장하기 위해 삭제(Erase) 작업이 필요하다.
가비지 컬렉션은 이러한 삭제 과정을 자동으로 최적화하여 성능 저하를 방지하고, 저장장치의 수명을 연장하는 역할을 한다.


4.3.1 데이터 정리 및 효율적 사용

① 플래시 메모리의 쓰기/삭제 문제점

  • 플래시 메모리는 페이지(Page) 단위로 데이터를 기록하지만, 삭제(Erase)는 블록(Block) 단위로 수행됨.
  • 기존 데이터를 덮어쓸 수 없으므로, 수정된 데이터는 새로운 페이지에 기록되고, 기존 페이지는 무효화(Invalid)됨.
  • 시간이 지나면서 사용되지 않는(Invalid) 페이지가 늘어나면, 새로운 데이터를 저장할 공간이 부족해짐.
  • 가비지 컬렉션은 이러한 무효화된 데이터를 정리하여 저장 공간을 확보하는 역할을 한다.

② 가비지 컬렉션의 핵심 개념

  • 유효한 데이터(Valid Data)와 무효 데이터(Invalid Data)를 분리.
  • 무효 데이터가 포함된 블록을 삭제(Erase)하여 새로운 데이터를 저장할 수 있도록 공간을 확보.
  • 이 과정에서 유효한 데이터를 다른 블록으로 이동하여 데이터 손실을 방지함.

4.3.2 SSD에서의 가비지 컬렉션 과정

① 기본 개념: 블록과 페이지 관리

  • SSD에서는 데이터를 페이지(Page) 단위로 기록하고, 블록(Block) 단위로 삭제해야 함.
  • 페이지에 저장된 데이터가 업데이트되면, 기존 페이지는 무효화(Invalid)되며 새로운 위치에 저장됨.
  • 블록에 무효화된 페이지가 많아지면, 가비지 컬렉션이 실행되어 유효한 데이터만 새로운 블록으로 이동한 후, 기존 블록을 삭제(Erase)하여 재사용할 수 있도록 만듦.

② SSD 가비지 컬렉션의 동작 과정

📌 Step 1: 데이터 변경 발생

  • 기존 데이터(예: A, B, C)가 저장된 블록이 있음.
  • 사용자가 데이터를 변경하면, 기존 페이지를 수정할 수 없으므로 새로운 블록에 데이터를 저장.
  • 기존 데이터는 무효화(Invalid) 상태가 됨.

📌 예제 블록 상태 변화

블록 상태 페이지 1 페이지 2 페이지 3 페이지 4
초기 상태 A B C D
데이터 변경 (B → B') A ❌(Invalid) C D
새로운 페이지에 저장 A B' C D

📌 Step 2: 가비지 컬렉션 실행

  • 유효한 데이터(A, C, D)를 새로운 블록으로 이동.
  • 무효화된 페이지(B)가 포함된 블록을 삭제(Erase)하여 빈 공간을 확보.

📌 블록 이동 후 상태

블록 상태 페이지 1 페이지 2 페이지 3 페이지 4
새로운 블록 A B' C D
삭제된 블록 ❌(빈 공간) ❌(빈 공간) ❌(빈 공간) ❌(빈 공간)

📌 Step 3: 새로운 데이터 저장 가능

  • 삭제된 블록이 다시 사용 가능한 공간으로 전환됨.
  • 새로운 데이터를 저장할 공간이 충분해짐.

4.3.3 가비지 컬렉션과 SSD 성능 관계

① 가비지 컬렉션이 SSD 성능에 미치는 영향

  • 가비지 컬렉션이 자주 발생하면 성능 저하 가능성 있음 → SSD 컨트롤러가 데이터를 이동하고 블록을 삭제하는 과정이 추가되기 때문.
  • SSD 용량이 부족하면 가비지 컬렉션이 더 자주 실행됨 → 가용 블록이 적어질수록 GC 부담 증가.
  • 쓰기 증폭(Write Amplification) 문제 발생 가능 → 데이터를 재배치하는 과정에서 추가적인 쓰기가 발생하여 SSD 수명이 단축될 수 있음.

② 가비지 컬렉션 성능 최적화 기법

웨어 레벨링(Wear Leveling) → 특정 블록이 집중적으로 사용되지 않도록 균등하게 배치하여 가비지 컬렉션 부담 감소.
TRIM 명령어 → 운영체제가 더 이상 필요 없는 데이터를 미리 삭제하여 가비지 컬렉션의 부담을 줄임.
오버 프로비저닝(Over-Provisioning) → SSD 내에서 일부 용량을 미리 확보하여 가비지 컬렉션을 원활하게 수행할 수 있도록 함.
SLC 캐싱 기술 → SLC 캐시를 활용하여 임시 저장 속도를 높여 가비지 컬렉션의 부하를 줄임.


4.3.4 TRIM과 가비지 컬렉션의 차이점

가비지 컬렉션과 TRIM 명령어는 SSD의 성능과 수명을 유지하는 데 중요한 역할을 하지만, 그 동작 방식에는 차이가 있다.

비교 항목 가비지 컬렉션(GC) TRIM 명령어
역할 무효화된 데이터를 정리하고 저장 공간 확보 운영체제가 더 이상 필요 없는 데이터 정보를 SSD에 전달
작동 시점 SSD 내부에서 자동으로 실행 운영체제(OS)에서 TRIM을 지원하는 경우 실행
효과 성능 유지 및 쓰기 공간 확보 불필요한 데이터 삭제로 가비지 컬렉션 부담 감소
부하 발생 여부 GC가 실행되면 성능 저하 가능 사전 정리 방식이므로 추가 부하 적음

정리

  • 가비지 컬렉션은 플래시 메모리에서 불필요한 데이터를 정리하고 저장 공간을 확보하는 과정.
  • SSD에서는 페이지 단위로 데이터를 기록하지만, 삭제는 블록 단위로 이루어지므로 가비지 컬렉션이 필요.
  • 유효한 데이터를 새로운 블록으로 이동한 후, 무효화된 블록을 삭제하여 공간을 확보.
  • 자주 발생할 경우 SSD 성능 저하와 쓰기 증폭(Write Amplification) 문제가 발생할 수 있음.
  • 웨어 레벨링, TRIM 명령어, 오버 프로비저닝 같은 기술을 함께 활용하여 SSD의 수명을 연장하고 성능을 유지할 수 있음.