이쁜왕자 만쉐~~

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 저장장치는 훨씬 더 빠르고, 또한 훨씬 더 비싸다. 무엇보다도 전원이 끊어지면 모든 데이터가 사라지므로 별도의 배터리 백업 장치도 필요하다. 특수한 용도에서 서버 성능을 극한으로 올리기 위해서 사용된다. [본문으로]
728x90
반응형
Comments