SSD를 트림 없이 오랜기간 계속 사용하면 어떤 문제가 있을까요?

VSPress   
   조회 5472   추천 0    

 외장 USB 디스크로 사용중인 SSD 에 관해서인데,

트림을 하지 않고 계속 USB로만 사용하면 속도 저하 외에 다른 문제가 생길까요?

그리고 만약 그렇다면 USB로 연결되는 기성품 외장 SSD에도 같은 문제가 있을까요? 

짧은글 일수록 신중하게.
dateno1 2022-02
그냥 특정 섹터가 빠르게 죽어서 예비치 넘으면 디스크가 작동 이상해지다가 죽어요 (경험담)

물른 Trim이 안 되어도 GC는 되므로 관리는 됩니다
수명도 조금 더 빨리 닳을 수 있습니다. 정도의 차이는 있을 수 있지만, 어떤 SSD라도 마찬가지입니다.
하드의 자기 디스크는 기록시 기존의 기록이 쓰는 기록으로 바로 바뀌지만 낸드는 기존의 기록을 초기화를 해주고 기록해야 합니다 (트림)
우리가 화일 지우기등을 해도 화일 목록과 해당 기록 위치로의 링크만 사라진거지 블록셀 단위에서는 아직 그대로 남아있죠
그래서 지워도 실제 기록된 영역만 바뀌지 않았다면 데이타 복원이 가능한거죠
낸드는 물리적 영역에 새로운 기록을 위해 초기화 과정을 거처야 하기 때문에 쓰기할때 그때 한다면 기록 속도가 느려지겠죠
그래서 빈 시간에 미리미리 해놓습니다
트림을 하고 안하고에 따라  기본적으로 쓰기속도의 차이가 납니다

USB는 기본적으로 트림이라는 개념이 없었으나 외장디스크에도 SSD를 많이 쓰게되니 SCSI 외장장치의 트림 명령을 가져와서
UASP라는 규약으로 트림을 지원하게 바뀌었습니다 단 OS와 해당 외장하드가 양쪽 모두 지원해야합니다
윈 8부터인가 지원이고 외장하드에는 UASP 지원이라고 표기합니다 장치관리자에는 SCSI 저장장치라 뜨던가.... 

트림과 웨어레블링은 그리 크게 상관관계가 없기 때문에 수명과는 크게 상관없고 쓰기 속도에 더 관계가 있습니다
셀의 균등 쓰기는 낸드의 컨트롤러 칩에서 한다고 보시면 됩니다
USB메모리나 플래시 메모리가 SSD보다 빨리 죽는건 상대적으로 컨트롤러 성능이 SSD의 컨트롤러만큼의 웨어레블링
관리능력이 안되기 때문입니다 그래서 저렴하죠
     
VSPress 2022-02
UASP라는 것이 있었군요! :)
          
dateno1 2022-02
참고로 8 이상은 기본 지원이고, 7은 드라이버 개조한걸로 올려야 작동합니다
     
친절한 설명 감사드립니다

1. 트림을 안하면/없다면,
  지우기 성능은 동일하고,
  지워진 부분에 화일 내용을 쓰는 경우에,
    기존 내용을 지워야 함으로, 쓰기 성능이 이 시점에서 저하 되는 건지요 ?

2. 트림과 관계 없이,
  대용량 화일을 쓰는 경우에,
    트림 작업이 끝났거나, 쓰기 가능한 곳에 먼저 데이타 쓰기를 마치고,
      이후에 트림 작업이 필요한 부분에 쓰기 작업이 이루어 지는지요 ?

3. 트림은 지우기가 필요한 부분에 OS에서 한가한(알아서) 시점에 해당 지우기 부분을 지우는 건지요 ?
    그렇다면, 가비지 콜랙션은 동일한 작업이지만, SSD 컨트롤러에서 자체적으로(알아서) 해당 작업을 진행하는 건지요 ?
    레이드 구성한 경우에, SSD를 OS에서 Trim이 불가할 것이니 가비지 콜렉션이 유용(유일)할 거 같아서요

4. 외장 SSD에서 TRIM을 쓰려면, USB/썬더볼트가 아니고 eSATA면 가능할런지요 ?

그 동안 나름 답을 찾지 못했던 부분을 고수님께 조심스레 여쭈어 봅니다. 꾸벅
감사합니다
          
개론적인 지식으로 말씀 드린거고
트림 작업의 알고리즘은 거의 콘트롤러 칩 회사의 기술 기밀이고 정확하게 어떤 식으로 행해는지에 대한 자료는
찾아봐도 개론적인 것만 나오지 데테일한 부분까지는 나오지 않습니다 표준 프론토콜 명령어 규약만 있지
그게 논리적, 물리적으로 어떻게 디테일하게 구현되는지는 사실 자사 콘트롤러 칩 개발부서 연구진이 아니면
알 수도 없습니다............
소프트웨어와 하드웨어적인 거라 자기 영역의 기술은 비밀로 지키며 규약등에서 협업이 정말 필요한 부분만 서로 공개해서
표준화하고 만들고 뭐 그런 식입니다
그래서 칩마다 성능이나 호환성이 있고 같은 칩이라도 갖다가 쓰는  제조사 바이오스 능력에 따라 또 그러한 차이가........
샌디포스 같은 칩 갖다쓰던 OCZ는 펌웨어 잘못 만들어서 해당 파트가 부도가 났고 인텔은 그걸로 저렴이 제품군 버전 만들어 잘 팔아 먹었죠
삼성도 에보버전 처음 만들때 컨트롤러 칩 성능저하 때문에 말이 있었죠

재작년인가 전문 기술 기고가가 윈도우10에선가 디프래그가 SSD에 필요한가 관해서 논쟁이 있었고 결국 윈도우 기술 부서에 문의해서
정리된 글을 올린 적이 있었죠 대충 답은 디프래그시 SSD 감지해서 디스크 같은 화일 배치가 아닌 트림으로 바뀌고 화일의 논리적 문제를
해결 해줘서 잠재적 문제를 없애주기에 하는게 좋다였다가 결론 이었던걸로.......ㅋ
요즘은 그래서 디프레그먼트라 안하고 옵티마이징이라 하죠

트림 https://www.crucial.kr/articles/about-ssd/what-is-trim
가비지콜렉션 https://www.crucial.kr/articles/about-ssd/active-garbage-collection
                  https://kr.transcend-info.com/embedded/Essay-21 (좀 더 기술적 설명)
SSD에서 쓰기를 위한 트림과 가비지 콜렉션은 서로 얽혀 있음 즉 분리해서 볼 수 없음 (낸드 저장장치의 블록과 페이지 단위 때문에)ㅣ
어느 싯점에서 어떻게 일어나는지는 설명으론 모호

인텔 IRST 레이드하고 기타 유명 고가 레이드 카드들은 드라이버에서 트림을 지원하게 바뀌었습니다 레이드가 트림 안된다는 건 옛날 이야기

USB 외장은 윈 8 이상에 UASP 지원장치쓰면 트림 됨, 썬더볼트는 잘 모르겠음

E-SATA 는 기존 SATA를 밖으로만 빼놓은거므로 윈7 이상 AHCI 드라이버로 돌아간다면 트림 됨
          
drachen 2022-02
1. 트림이 없다면 쓰기 작업시 불필요한 웨어레벨링 처리로 인해서 쓰기 성능이 저하되는 겁니다.
2. 데이터를 기록하는 건 트림과 관계없이 블록의 수명을 고려해서 이루어집니다.
  즉 수명이 많이 남은 블록에 먼저 쓰고 해당 블록에 데이터가 있다면 다른 곳에 재배치하고 쓰는 식으로 동작합니다.
3. 가베지 콜렉팅과 트림은 다릅니다.
  가베지 콜렉팅은 플래시 메모리 상에 데이터가 지워진 블록들을 초기화하는 작업이고,
  트림은 OS상에서 삭제된 데이터의 위치를 SSD의 콘트롤러에 알려줘서 불필요한 웨어레벨링을 방지하고 가베지 콜렉팅을 하도록 하는 겁니다.
     
drachen 2022-02
설명에 잘못된 부분이 있는 것 같습니다.

트림은 웨어레벨링과 깊은 연관이 있습니다.
플래시 메모리의 각 블록은 쓰기를 할 수록 수명이 줄어듭니다.
그래서 특정 블록에 쓰기 작업이 집중되면 먼저 죽어서 다른 블록의 수명이 남아 있음에도 플래시 메모리 전체를 사용하지 못할 가능성도 있습니다.
이를 피하기 위해서 각 블록을 고르게 쓰기 작업을 하는게 웨어 레벨링이죠.

예를 들어,
플래시 메모리에 A/B/C/D 블록이 있다면 A에 1번 기록하면, B~D에도 순차적으로 1번씩 기록하는 식이죠.
그런데 A에 계속 보존하는 데이터 a1이 있을 때, B에 b1을 기록을 하고 지우고 C에 c1을 기록을 하는 식으로 빈 영역에만 기록을 한다면
A와 B~D의 수명 차이가 발생하게 됩니다. - 동적 웨어 레벨링

이를 막기 위해서 A에 a1이 있더라도 b1을 기록할 때
a1을 D에 옮기고, A에도 b1을 기록하는 식으로 전체적으로 수명을 맞추게 만들었습니다. - 정적 웨어 레벨링


이 때 문제가 되는게 파일 시스템에서 파일의 삭제 작업 속도를 높이기 위해서
OS에서 파일을 삭제하면 저장장치의 실제 데이터를 지우는게 아니라 파일 테이블 상의 정보만 일부 삭제하는 식으로 되어 있다는 점 입니다.

위의 예에서 OS에서 a1을 삭제했더라도 블록 A에 데이터가 들어있다고 판단을 하기 때문에
이미 삭제된 a1을 D에 옮기고 A에 b1을 기록하는 무의미한 동작을 하게 되는 거죠.
그러면 쓸데없는 기록 작업 때문에 블록의 수명이 줄어들고, b1을 쓰는 속도도 떨어지는 겁니다.


트림은 이렇게 이미 삭제된 데이터를 정리해서 불필요하게 웨어 레벨링 작업이 발생하는걸 막는게 목적 입니다.
a1을 삭제하고 일정 기간이 지나면 SSD의 컨트롤러에 블록 A가 비어 있다고 얘기하는거죠.
그러면 b1을 기록할 때 그냥 A에 쓰기만 하면 되니까 처리 속도가 빨라지는 겁니다.
          
웨어레블링도 어떤 방식으로  하는가에 따라 가령 컨트롤러에서 SLC  캐시 영역을 두고 혹은 램 캐시를 두고 그걸 이용해서 웨어레블링중
TLC QLC 낸드 모듈에서 일어나는 불필요한 쓰기 막는 방법도 있기 때문에 뭐라 딱 정해져 있다고 보기는 힘들거 같습니다
말씀하신 건 컨트롤러가 웨어레벨링을 오직 데이타 저장용 낸드플래시 모듈 자원만 가지고 한다는 조건에서만 해당 될겁니다
SSD의 각 방식에 대헤 이래저래 이견이 많은 건 제조사에 따라 여러 다른 방법이 총 동원되어 낸드플래시의 속도와 수명을
늘린다는거에 기인한다고 봅니다
가령 인텔의 H10 같은 건 OLC 낸드에다가 옵테인 메모리 32G 캐쉬를 쓰는 식으로 QLC에서 쓰기를 최대한 줄이는 방법으로 수명을
늘립니다 옵테인 P램은 낸드플래시가 아니라 트림이 없다더군요 그럼에도 수명은 넘사벽이죠 H10 쓰기 보증 수명 보면
다른 회사의 QLC 심지어 TLC도 넘어 MLC 제품과 비교해도 비슷하거나 넘습니다 결국 가비지 콜렉트나 웨어레블링 과정중
불가피한 쓰기를 옵테인 캐시 영역에 가져와서하는 방식으로 QLC 영역에서 쓰기 횟수를 최대한 줄인다는 추정이 가능하죠
비록 단종이지만 삼성의 850 PRO도 MLC인데 10년 보증을 할 정도의,, 수명 테스트 한 걸 보면 다른 삼성 제품군보다 쓰기 수명 스펙을
압도해버리는 넘사벽의 수명을 보여줍니다 https://dpg.danawa.com/bbs/view?boardSeq=231&listSeq=3406177&past=Y
인텔의 DC 제품군도 일반 사용자 제품보다 보증 쓰기가 엄청 납니다

그래서 워낙 컨트롤러 칩 제조사의 노하우에 따라 또한 각 제품에 적용한 방법에 따라  딱히 이러하다고 말하기는 어렵다고 말한거죠
가비지 콜렉트나 웨어레블링등이 어떤 자원을 이용해 어떤 알고리즘과 어떤 메커니즘므로 일어나는지는 기술 비밀이고
소비자가 볼 수 있는 건 스펙상 쓰기수명 더 나아가 그 정도 수명을 다 쓸 수도 없으니 극한 테스터의 막장 수명 테스트
로 간접 체험이나 해보는 수준이죠
갠적으론 비공개된 걸로 왈가왈부보다는 리얼라이프 극한 막장 수명 테스터를 가장 신뢰 합니다.....^^
(조건을 어떻게 잡느냐에 따라 변수가 너무 많음....)
찾아보시면 자동 트림이 실제 되나 임의 빈공간에 기록하고 지우고 그 공간을 읽는 러시아 사람이 만든 체크 프로그램이 있습니다

근데 이것도 100% 장담을 못하는게 트림을 언제 할지는 OS 드라이버와 SSD 컨트롤러 칩간에
상호작용으로 결정되는거라서.....
SSD에 따라 이 체크 프로그램이 체크한 싯점보다 자동 트림이 나중에 일어나는데 체크한 싯점에선 안 일어날수도 있어서...
체크시 된다는 되는건데, 안된다는건 나중에 될 수도 있다는 의미더군요

그래도 레지스트리 값을 읽는게 아닌 실 데이타 기록으로 테스트 하는거라 참조용으로 많이 쓰더군요
간장게장 2022-02
flash는 쓰기 전에 page 단위로 미리 지워주어야 합니다. 이 지우는 시간이 굉장히 느립니다.

쓰기를 빨리 하기 위해서는 미리 지워 놓은 깨끗한 page들이 많이 있어야 합니다. 이 작업이 GC입니다. page에는 쓰기가 된 공간도 있고 비어 있는 공간도 있는데, 이것들을 깨끗한 다른 페이지로 꽉꽉 채워 옮기면 빈 page들을 확보할 수 있겠지요. 이 GC 작업을 하는데 있어서 trim을 하게 되면 훨씬 효율적으로 할 수 있습니다. trim을 하지 않으면 이리 저리 여러번 옮겨야 할 것을 단번에 옮길 수 있게 해 줍니다.(필요한 데이터인지 파일시스템에서 이미 지워진 불필요한 데이터인지를 판별할 수 있게 해 줌)

trim을 하지 않게 되어 GC를 비효율적으로 하게 되면 데이터를 이리 저리 옮기면서 썼다 지웠다를 여러번 하게 되어 성능도 저하되고 수명도 확 줄어듭니다.

trim을 하지 않더라도 overprovisioning을 많이 하게 되면 GC를 효율적으로 할 수 있습니다. usb에 물려 사용하거나 raid로 묶는 경우 다는 아니지만 trim이 안되는 경우가 대부분입니다. trim이 안되는 방식으로 사용하려면 일반용이 아닌 기업용 ssd를 사용하는 것이 좋습니다. 일반용을 사용해야 한다면 overprovisioning를 충분히 해 주는 것이 좋습니다. 가령 960GB 짜리라면 800GB만 사용하는 정도로 줄여주면 좋습니다.

일반용과 기업용은 endurance를 측정하는 기준이 다릅니다. 일반용은 trim을 하는 것을 전제로 측정하는 값이고, 기업용은 trim을 하지 않는 것을 가정하고 측정하는 값입니다.
     
아.. 좋은 정보 알아 갑니다.


QnA
제목Page 2795/5708
2015-12   1674022   백메가
2014-05   5139471   정은준1
2014-07   5274   Nikon
2012-08   5274   이선호
2012-04   5274   김제연
2008-07   5273   손경화
2009-03   5273   김성철
2007-11   5273   오성기
2020-03   5273   블루스카이
2016-08   5273   엔진엑스
2008-01   5273   신민철
2012-06   5273   싱어송라이터
2006-05   5273   김용수_
2006-07   5273   윤상현
2008-12   5273   이동관
2007-04   5273   김현호
2017-02   5273   agegold
2013-03   5273   서울l승용
2020-03   5273   김썬더
2006-03   5273   이상열
2005-10   5273   이희원
2013-09   5273   윈도우10