여러분은 가만히 계세요 제가 모두 고장낼게요

IT 지식, PC 모바일 문제 해결 그리고 종종 애니 게임 일상생활 근황을 종종 올리고 있어요!

냐.한국 자세히보기

카테고리 없음

SSD를 가득 채워 쓰면 안 되는 이유 - 증폭 쓰기 현상

Kamilake 2021. 5. 25. 19:03

핵심: 가득 찼으며 느려 터진 SSD는 문제가 생긴 상태이고 그대로 사용하면 수명이 급격하게 줄어들게 되니 어지간하면 공간을 비우세요!

오늘은 심심하니 잡지식을 하나 적어보려고 해요

HDD보다 SSD가 조용하고 빠릅니다.
이걸 반박하기 위해 초창기 SSD랑 전원 꺼진 시게이트 Exos를 비교하려 하는 사람은 당장 뒤로 가기를 누르시면 됩니다.

SSD를 쓰다 파일 탐색기에서 빨간색이 될때까지 채우면 읽거나 쓸 때 엄청나게 느려지는 경험을 해보신 적이 있을 겁니다.

섬네일 파일이나 저화질 사진처럼 용량 작고 머릿수 많은 파일을 옮기면서 속도가 약간 저하되는 것과는 다르게,
단일 파일을 기록하더라도 300~500MB/s 가 나오다가 급격하게 1MB/s대로 줄어드는 현상입니다.

Write amplification | 쓰기 증폭(WA)

SSD와 같은 반도체 메모리는 다시 정보를 기록하기 전에 기존 데이터를 지워야 합니다.
너무 당연한 소리로 들릴 수도 있지만 의외로 하드 디스크 드라이브는 지우지 않고 그 위에다 데이터를 덧칠해 버리기 때문에 따로 말했습니다.

그런데, 1KiB짜리 글자를 하나 저장한다고 해서 안 쓰는 공간 1KiB를 잡고 거길 지운 다음에 기록하는 게 아닙니다.
물론, 원래부터 텅텅 빈 신품 SSD라면 그냥 기록하면 되겠죠. 하지만 데이터를 다시 기록하려면 복잡한 문제가 생기게 됩니다.

SSD는 데이터를 블록이라고 하는 단위로 묶어서 보관하게 되는데, 기록은 마음대로지만 삭제는 저 블록 단위로만 가능한 것이죠..
블록은 256KiB인데 쓰려고 하는 데이터는 고작 4KiB인 상태라고 하면, 그걸 기록하기 위해 256KiB의 데이터를 모조리 지워버리고 다시 데이터를 기록하고 돌려놔야 하는 SMR 디스크의 고질병이 그대로 나오게 되는 겁니다.
그럼 기존 256KiB 블록에 있던 데이터는? 다른 곳에 기록하기 위해 다른 블록을 또 지우고 그걸 기록해야 하는 거죠..
(사실, 로드 밸런싱과 가비지 컬랙션에 따라 지워야 하는 양이 달라집니다만, 쉽게 설명하도록 할게요)

요즘 판매되는 TLC SSD는 보통 읽기 쓰기를 1000~2000회 반복할 수 있는 내구성을 가지고 있는데, 4K 데이터 하나를 저장하기 위해 다른 부분의 데이터를 마구잡이로 읽고 쓰고 삭제하게 되면 엄청나게 손해를 보게 됩니다.

저도 저 문제를 몰랐을 시점에는 Synology에 SSD Cache로 PM981을 끼워 쓰면서 SSD 할당량의 100%를 전부 캐시로 돌렸던 적이 있는데요, 내부적으로 끊임없이 24시간 쓰기 증폭 현상이 일어나면서 구매한 지 4개월 만에 내구 수명을 모두 쓰고 죽어버렸습니다(당시에는 정말 불량인 줄 알았어요..!)

처음 SSD를 구입했을 때나, Synology에서 캐시 공간을 적게 잡으라고 제안했을 때 저는 왜 빈 공간을 둬야 하는지 모르고 있었는데, 그게 바로 문제의 해결책이었습니다.

오버 프로비저닝 (OP, Over-provisioning)

오버 프로비저닝은 SSD를 안정적으로 구동시키는 데 큰 도움을 줍니다.

TRIM, 가비지 컬랙션, 웨어레벨링, 베드섹터 리맵핑 등 다양한 SSD의 자동 유지보수 기능들이 돌아가기 위해서는 드라이브의 여유 공간이 중요합니다. 다들 이 공간을 활용해 데이터를 옮기고, 정리하기 때문이죠.

HDD처럼 언제나 데이터를 순차로 기록할 필요도 없고, 실제로 그렇게 기록하고 있지도 않습니다.
굳이 순서가 있다면, 수명이 많이 남은 소자 쪽에 데이터를 자주 기록하곤 합니다.

위키미디어 공용 이미지 재가공 - File:Write Amplification on SSD.svg (CC BY-SA 3.0)

그런데 디스크를 가득 채워 쓴다면? 수명이 넉넉한 곳에는 안 바뀌는 파일이 신나게 놀고 있고, 자주 바뀌는 파일은 남아있는 작은 공간에서 그나마 멀쩡한 곳에 데이터를 기록하고 지우기를 반복하는 빈부 격차가 일어나버리게 되는 것이죠.(TRIM에 대해서는 미뤄 두고..)

그래서 오버 프로비저닝은 디스크에서 사용할 수 없는(=빈) 공간을 의도적으로 만들어 놓고 이들의 대피소 역할을 수행하게 됩니다. 그렇게 하면 파일 탐색기에서 드라이브가 가득 차 빨간색을 달리고 있어도 물리적인 SSD의 소자는 아직 여유롭기 때문에 성능 문제와 쓰기 증폭 현상 없이 안정적으로 작동하게 됩니다.

결론

부디 SSD를 가득 채워 쓰지 말아주세요! 디스크는 나름대로 나쁜 주인 때문에 고생하고 있어요 ㅠㅠ

치아 채굴 때문에 많은 SSD가 갈려나가고 있는데, 이것 역시 아주 큰 용량의 SSD를 사서 절반만 채굴에 할당한다면 훨씬 많은 RW를 버틸 수 있어 큰 도움이 되리라 생각합니다.

이 글이 도움이 되었으면 좋겠습니다.