이쁜왕자 만쉐~~

SSD 에서 TRIM 은 무엇인가? 본문

낙서장

SSD 에서 TRIM 은 무엇인가?

이쁜왕자 2011. 10. 27. 17:01
1. HDD 와 SSD 의 다른점

HDD(Hard Disk Drive)는 디스크라고 부르는 원형 금속판에 데이터를 저장하지만, SSD (Solid-State Drive)는 NAND flash 라는 메모리에 데이터를 저장한다. DRAM 에 저장하는 특수한 저장장치도 역시 SSD 라고 부르기도 하는데, 일반인이 구경할 일은 없다.[각주:1] 그러므로, SSD 라 하면 flash 에 저장하는 것만 생각해도 무방하다.

SSD는 읽고 쓰기가 아주 빠르고, 물리적 충격에 강하고, 가볍고, 전력 소모량이 적으며, 사이즈를 줄이는데도 용이한 점 등등 수많은 장점이 있다. 단, 용량에 비해 무지무지 비싸다는 단 하나의 단점만을 가지고 있다. 현재 2TB HDD 가 약 15만원인데, 64GB SSD 역시 그정도 가격이다. 즉, SSD 가 HDD 에 비해서 30 배 정도 비싼 셈이다.

SSD 는 저장 매체의 특성으로 쓰기(좀더 정확히는 다시쓰기,rewrite) 에서의 동작이 다르다. HDD 는 처음에 한번 포맷을 해두면, 데이터를 몇번이나 덮어서 다시 써도 문제가 없다. 그래서 데이터를 쓴 뒤, 삭제하기 위해서는 삭제하겠다고 마크만 해두면 되며, 그 위에 다시 다른 데이터를 덮어 써버리면 된다.

HDD 의 다시쓰기 방식

데이터 쓰기 -> 삭제한다는 마크 표시 -> 그 위에 덮어쓰기


하지만, SSD 는 덮어 쓰는 것이 불가능하며, 데이터를 다시 쓰기 위해서, 반드시 그 영역을 깨끗히 삭제해주는 절차가 필요하다. 포맷 자체가 삭제하는 동작을 해주므로, 처음 사용시에는 문제가 없으나, 데이터를 지우고 다시 쓰는 경우에는 삭제해주는 작업를 해야 해서, 쓰기 속도가 느려진다. 하지만, 그래도 HDD 보다 빠르다.

SSD 의 다시쓰기 방식

데이터 쓰기 -> 삭제한다는 마크 표시 -> 데이터 삭제 -> 그 위에 다시 쓰기



2. SSD 의 문제점과 해결책

하나의 파일을 계속해서 수정하고, 저장하는 형태로 사용할 경우, 원래 있던 파일을 지우고 그 위치에 다시 쓰기 때문에, 위의 문제로 인해서, 쓰기 속도 저하 문제가 발생한다. 뿐만 아니라 SSD 의 NAND Flash 에는 쓰기 수명(주: 좀더 정확히는 삭제시 수명이 줄어 든다.)이 있어서, 특정 영역에 반복해서 자주 쓰는 작업을 할 경우, 그 부분은 수명을 다해서 더이상 쓰기가 불가능해진다. 다만, 그렇게 되더라도 읽기는 된다. 참고로, 이 때문에 SSD 수명이 짧다고 생각하는 사람이 많은데, 그래도 십년은 족히 쓴다.

위와 같은 문제를 방지 하기 위해서 SSD 는 성능과 수명 향상을 위해서 다양한 방법을 사용한다. 이를 wear leveling 이라고 부르는데, 세부적인 기법 몇가지만 설명한다.

2.1. Spreading
 
해석하면 넓게 펼쳐 쓰는 것이다. 예를 들어 파일을 다시 쓸 경우, 원래 위치에 저장하는 것이 아니라, 다른 깨끗한 영역으로 옮겨 가며 쓰기를 하는 것이다. 이렇게 할 경우, 이미 포맷된 깨끗한 영역에 쓰기를 하기 때문에, 삭제로 인한 쓰기 속도가 하락이 생기지 않는다. 즉, 삭제하는 절차를 패스하여 성능을 높이는 것이다. 또한, 같은 영역을 반복해서 써서 발생하는 수명 문제도 어느정도 극복할 수 있다. 

다만, 이렇게 사용할 경우, 비어 있는 모든 영역에 죄다 한번씩 쓰기를 하게 된 이후로부터는, 쓰기 전에 삭제하는 절차를 수행해야 하므로 성능 저하가 발생한다.(주: 그래도 HDD 보단 빠르다.) 이 성능 저하를 해결하기 위해서는 더러워진 영역을 깨끗하게 삭제해 주면 된다. 이를 GC (garbage collection) 라고 부른다. 초기에는 이를 사용자가 수동으로 수행해줘야 했지만, 좀더 세련되게 자동으로 해주는 TRIM 이란 기술이 추가되었다.

2.2. Counting

해당 영역을 몇번 쓰기를 했는지, 그 쓰기 횟수(주: 좀더 정확히는 삭제 횟수)를 저장한다. 그리고, 쓰기 횟수가 적은 영역을 먼저 사용하도록 하는 기법이다. Spreading 과 병행해서 사용한다. 성능과는 무관하고, 수명을 늘이기 위한 기법이다.

2.3. Swapping

Counting 을 하더라도, OS 처럼 한번 쓰고나면 줄창 읽기만 하는 영역이 있고, 데이터 영역처럼 읽고 쓰기가 자주 일어 나는 영역이 있다. 이런 경우 OS 가 사용하는 영역은 처음에 포맷을 한번은 하니깐, 쓰기 횟수가 1 이며, 데이터 영역은 쓰기 횟수가 높을 것이다. 이럴 경우 OS 처럼 쓰기 횟수가 적은 데이터를 쓰기 횟수가 많은 곳으로 옮기고, 이 영역을 데이터들이 사용하도록 바꿔 준다. Counting 을 좀더 적극적으로 사용하여 수명을 늘리는 기법이다.

3. Garbage Collection

GC 는 일반적으로 메모리 관리에 나오는 용어인데, SSD 에서도 비슷한 동작을 수행한다. Spreading 기법에 의해서 삭제 예정이지만, 아직 삭제 되지 않은 영역을 깨끗하게 해주는 작업이다. 초기에는 이를 수동으로 해주어야 했지만, TRIM 이란 기능이 생기면서 OS 에서 자동으로 해주는 것으로 바뀌었다. 

4. TRIM

참고로, TRIM 은 대문자로 써서 약자로 보이지만, 약자가 아니다. 그냥 trim 이란 영어단어에서 따온 명령어 이름일 뿐이다. (주:나도 착각했던 내용이며, 어쩌다 대문자로 쓰는지는 모르겠다.)

앞서 설명했듯이 GC 를 OS 가 자동으로 해주도록 해주는 기능이며, 쓰기 성능을 높게 유지 시켜 주는 기능이다. OS 스케줄러가 보기에 SSD 읽고 쓰기가 적은 시간에, 더러워진 영역을 열심히 청소해준다. 좀더 복잡하고 자세한 기술적인 설명은 이 블로그의 내용을 벗어나므로 생략한다.

4-1. TRIM 을 사용하지 않으면 성능이 하락한다?

이것은 맞는 말이기도 하고, 틀린 말이기도 하다.

일단 읽기 성능은 TRIM 과 아무런 상관이 없다. TRIM 을 사용하든 안하는 읽기 성능에는 변화가 없다.

쓰기에 관해서도, 위의 Spreading 에 대한 내용을 이해한다면, TRIM 을 사용하지 않는다고, 그 즉시 성능이 하락되는 것은 아니라는 것을 이해 할 수 있을 것이다. 다만, 모든 영역을 한번씩 다 쓴 이후에나 쓰기 성능 하락이 발생할 뿐이다. 이 상태로 계속 쓴다면 쓰기 성능이 하락된 채로 유지되겠지만, 그 때마다 한번씩 수동으로 GC 를 돌려주면 될 뿐이다.

SSD 에 읽고 쓰기를 자주하는 사용자라면, GC 도 자주해야 하므로 TRIM 의 편의성이 아주 중요할 것이다. 하지만, OS 처럼 한번 설치하고 줄창 읽기만 하는 용도로 SSD 를 사용한다면, TRIM 의 역할은 그만큼 줄어 들게 된다.

4-2. TRIM 을 사용하지 않으면 SSD 수명이 줄어든다?


TRIM 을 사용하든 사용하지 않든, 삭제를 해야 한다는 것은 동일하며, 삭제 해야 하는 횟수도 동일하다. 단지 '언제' 삭제 하느냐가 다를 뿐이다. 즉, 수명과는 별로 상관이 없다.
수명에 관한 내용은 앞의 2번 항목에 있는 것들과 관련이 크며, TRIM 을 사용하지 않더라도, 저런 기법은 현재 출시 되는 SSD 라면 기본적으로 적용되어 있다.

4-3. TRIM 을 지원하는 OS

Windows 7 에서 지원되며, Windows Server 2008 R2 에서도 지원된다고 한다. 2000, XP, Vista 등은 지원하지 않는다. 

Mac OS X Lion 에서 지원되지만, 애플에서 구매한 SSD 에서만 정식 지원된다. Mac OS X Snow Leopard 의 최신버전도 지원하며, 역시 
애플에서 구매한 SSD 에서만 정식 지원된다. 그외의 SSD 는 커널 수정등의 방법으로 TRIM 사용이 가능하다고 한다.

Linux 나 FreeBSD 의 경우는 파일 시스템에 따라 지원 여부가 다르다.  종류가 많아서 생략.


4-4. TRIM 과 RAID


SSD 의 고성능에 만족하지 못하는 일부 사용자는 SSD 를 RAID-0 (striping) 으로 묶어서 더욱더 성능 향상을 꾀하기도 한다. 하지만, 이때 한가지 문제가 있는데, 현재까지는 SSD 를 RAID 로 묶을 경우는 TRIM 을 사용할 수 없다. 그래서, 성능 향상과 TRIM 의 편의성 사이에서 고민하는 유저들이 많다. 어느게 정답인지는 스스로 결정할 일이다.

- 엔델 -
  1. DRAM 저장장치는 훨씬 더 빠르고, 또한 훨씬 더 비싸다. 무엇보다도 전원이 끊어지면 모든 데이터가 사라지므로 별도의 배터리 백업 장치도 필요하다. 특수한 용도에서 서버 성능을 극한으로 올리기 위해서 사용된다. [본문으로]
Tag
,
13 Comments
  • 프로필사진 2011.11.10 14:40 궁금했던 내용을 해결하고 갑니다 ~~
  • 프로필사진 지나가다가 2013.01.08 00:26 출처는 잘 모르겠지만, 잘못된 정보를 전달하고 있는 것 같습니다. trim이 삭제정보를 표시해 주는 것은 맞지만, 이로 인해 가비지 콜렉션 / 웨어 레벨링시에 지우기 횟수와 쓰기 횟수가 줄어들 수 있습니다. 이것은 콘트롤러 내부에서 동작하는 valid copy 라는 오퍼레이션이랑 관계가 있습니다. 그래서 수명도 당연히 영향을 받게 됩니다. 위에서 그린 그림 자체도 틀린 것 같은데요. OS/ 파일시스템 / SSD에 대해 좀더 공부를 해 보시는 게 좋을 것 같습니다.
  • 프로필사진 이쁜왕자 2013.01.08 00:47 신고 어떤 내용이 틀렸다고 말하시는 지는 모르겠지만, 제가 이글을 쓰면서 참조한건 위키백과 입니다. http://en.wikipedia.org/wiki/TRIM
  • 프로필사진 잘봤습니다. 2014.02.17 06:12 빈틈없이 잘 정리되어 있어서 이해가 잘되네요. 감사합니다.
  • 프로필사진 이쁜왕자 2014.02.17 19:48 신고 도움이 되었다니 저도 기쁩니다.
  • 프로필사진 나모찾기 2019.08.11 13:07 신고 "용량에 비해 무지무지 비싸다는 단 하나의 단점"만 있는 것은 아닙니다.
    NAND flash 도 시간이 지나면 데이터가 사라집니다.
    다만 DRAM은 약 64ms 정도 데이터가 유지되는 반면, NAND flash는 1 ~ 10년의 유지시간이 좀 더 긴 것이죠.
    또한 주위의 온도에 따라 사라지는 시간은 많이 달라진다고 하네요.
  • 프로필사진 이쁜왕자 2019.08.12 17:28 신고 SSD 의 비교 대상은 DRAM 이 아니라 하드 디스크입니다.
    하드디스크 역시 수명이 있는 부품이기에 이에 대해선 언급하진 않았습니다.
    참고로, SLC는 HDD 보다 훨씬 긴 수명을 가집니다. 다만, TLC 나 QLC 는 HDD 에 비하면 수명이 짧습니다.
  • 프로필사진 나모찾기 2019.08.12 17:38 신고 NAND 플래시의 비교 대상을 DRAM이 아닌 하드디스크로 택한 이유는 비휘발성 메모리의 특성으로 묶어서 생각하셨기 때문인 것으로 보입니다.
    또한 제가 언급한 것은 '수명'이 아닌 '데이터 유지 시간'입니다.

    소자의 관점으로 보았을 때는 NAND 플래시는 DRAM과 더 유사한 특징을 보입니다. 왜냐하면 데이터를 받을지 말지를 결정하는 스위칭을 둘 다 MOS 트랜지스터를 통해 하기 때문입니다.

    다만 DRAM은 데이터를 캐패시터에 저장을 하기 때문에 저장 가능한 시간이 짧은 것이고, NAND 플래시의 경우 플로팅 게이트에 하기 때문에 저장 시간이 긴 이유인 것이지요.

    보통 SSD를 하드디스크와 같은 분류군으로 보기 때문에 SSD가 영속성을 가진 느낌을 가지기 쉬운데 소자 특성상 데이터가 결국은 사라지게 된다는 다른 관점을 위해 댓글을 달은 것입니다.
    (저도 평상시에는 SSD를 HDD랑 같은 영속 스토리지로 여깁니다.)
  • 프로필사진 이쁜왕자 2019.08.14 15:25 신고 1. DRAM 과 NAND flash 가 같은 반도체 디바이스라는 점은 사실이나, 이 둘을 동일선상에서 비교할 이유는 전혀 없다고 봅니다.
    기술이 발전하여 PRAM 같은게 상용화가 되면 모를까, RAM 과 SSD 는 전혀 다른 용도로 쓰일 수 밖에 없습니다.

    2. '데이터 유지 시간'은 일반 사용자 기준으로 전혀 관심가질 필요가 없는 내용입니다. DRAM 의 데이터 유지 시간은 겨우 몇 마이크로세컨드 밖에 안되어서 메모리 컨트롤러가 계속 리프레시 해줘야 하지만, 일반 사용자는 몰라도 되는 내용입니다.

    3. 그리고, NAND flash 의 데이터 유지기간은 '년' 단위 입니다. 컴퓨터를 꺼두고 1년이상 경과하는 경우에나 혹시나 SSD 데이터가 날라갈 걸 걱정해야 하는 수준이기에, 전혀 관심 가질 필요가 없습니다.
  • 프로필사진 나모찾기 2019.08.14 15:45 신고 그렇다면 '사진, 동영상' 같은 자료를 아카이브 목적으로 HDD 대신 속도가 빠른 SSD를 대체하려고 하는데 전혀 문제 없을까요?

    참고로 한 번 저장되면 수십년(10년 이상) 컴퓨터에 연결이 안될 수 있는 2차 '콜드 스토리지' 용도입니다.
  • 프로필사진 이쁜왕자 2019.08.14 16:09 신고 1) 10년 저장이 목적이라면 HDD, SSD, 광학매체 (CD, DVD 등) 모두 적절하지 않는 방법입니다. 이 조건을 만족하는 장치는 DAT 같은 테이프 백업 밖에 없습니다. 하지만, 개인이 쓰기에는 그다지 적절치는 않죠.
    2) 개인적으로 CD/DVD 도 많이 구워보고, RAID 로 구성된 NAS 도 써보는 등 다양한 시도를 해봤었지만, 장기 저장에는 모두 제약이 있었습니다.
    3) 차라리 개인적으로 생각하는 바람직한 방법은 10년이 지나도 망하지 않을 만한 대기업( 구글, 애플, MS 등)의 클라우드 서비스를 이용하는 것입니다.
    4) 용량이 HDD 를 써야할만큼 크고, 공개하기 적절치 않은 내용이라면, RAID 로 구성된 NAS 를 구성하되 2~3년마다 HDD 를 소모품처럼 꾸준히 교체하는게 그나마 가장 현실적인 방법이라 봅니다.
  • 프로필사진 나모찾기 2019.08.14 16:29 신고 제가 HDD를 콜드 스토리지로 사용하는 이유는,
    자기장의 손실이 연당 1%이고, 60~70년 정도 후에 half 손실이 발생하는 것으로 알고 있습니다.
    그리고 10~15년 주기로 전체 내용을 다른 HDD로 리프레시용 목적(regaussing)으로 복사를 통해 갱신을 하고 있고요.

    이 방법이 좋지 않다는 의견이신가요?
  • 프로필사진 이쁜왕자 2019.08.19 10:17 신고 제 개인적인 생각은 "HDD 의 수명이 10년씩이나 되지 않는다." 입니다.
댓글쓰기 폼