Write Amplification, SSD 수명을 갉아먹는 주범

Write Amplification이란?

Write Amplification(쓰기 증폭, WA)은 호스트(운영체제)가 SSD에 실제로 쓰려고 요청한 데이터양보다 SSD 내부에서 더 많은 양의 데이터가 물리적으로 쓰이는 현상을 말합니다. 예를 들어 사용자가 4KB짜리 파일 하나를 수정했는데, SSD 내부적으로는 그보다 훨씬 큰 용량의 데이터를 다시 쓰는 경우가 흔합니다. 이 비율을 수치화한 것이 WA 지수이며, ‘WA = 실제 낸드에 쓰인 데이터량 / 호스트가 요청한 데이터량’으로 계산합니다. 이상적인 값은 1이지만 실제로는 항상 1보다 큽니다.

왜 증폭이 발생할까? – 동작 원리

원인은 SSD의 물리적 구조에 있습니다. HDD와 달리 SSD는 데이터를 직접 덮어쓰기(overwrite)할 수 없습니다. 낸드 플래시는 ‘페이지’ 단위(보통 4~16KB)로 쓰기를 하지만, 삭제는 여러 페이지를 묶은 ‘블록’ 단위(보통 수백 KB~수MB)로만 가능합니다. 이미 데이터가 있는 페이지를 수정하려면, 블록 전체를 지우고 다시 써야 하는 제약이 생깁니다.

이를 비유하면, 책 한 페이지의 오타 하나를 고치기 위해 책 전체를 찢어서 새로 인쇄하는 것과 비슷합니다. SSD 컨트롤러는 이런 비효율을 줄이기 위해 ‘가비지 컬렉션(Garbage Collection)’이라는 과정을 수행하는데, 이때 유효한 데이터를 다른 블록으로 옮기고(copy) 기존 블록을 통째로 지운 뒤 재사용합니다. 이 복사 과정에서 호스트가 요청하지 않은 추가 쓰기가 발생하는 것이 WA의 핵심 원인입니다.

여기에 더해 다음 요소들도 WA를 키웁니다.

  • SSD의 여유 공간(Over-Provisioning)이 적을수록 GC가 자주 발생해 WA 증가
  • 파일 시스템의 블록 크기와 낸드 페이지 크기가 맞지 않는 경우
  • 랜덤 쓰기가 많은 워크로드(작은 데이터를 여기저기 흩어서 쓰는 경우)

실무에서 왜 신경 써야 할까

낸드 플래시는 쓰기/지우기(P/E, Program/Erase) 사이클 횟수에 물리적 한계가 있습니다. WA가 2라는 것은 사용자가 100GB를 썼을 때 실제로는 200GB만큼 셀이 마모된다는 뜻이므로, SSD의 수명이 그만큼 빨리 줄어듭니다. 그래서 SSD 펌웨어와 파일 시스템 설계자들은 WA를 최대한 1에 가깝게 낮추기 위해 다음과 같은 기법을 씁니다.

  • TRIM 명령어로 삭제된 데이터를 미리 SSD에 알려 GC 효율 향상
  • Over-Provisioning 공간을 늘려 여유 블록 확보
  • 순차 쓰기 위주로 데이터를 정렬하는 로그 구조 파일 시스템(F2FS 등) 사용

결국 WA는 단순한 이론이 아니라, SSD의 실제 수명과 성능을 좌우하는 핵심 지표입니다. 서버나 데이터베이스처럼 쓰기 부하가 큰 환경을 설계할 때는 SSD의 스펙 시트에서 WA 관련 수치나 TBW(Terabytes Written) 값을 꼭 확인하는 것이 좋습니다.

댓글 남기기