TRIM이란 무엇입니까?


14

TRIM 의 Wikipedia 페이지 에서 SSD에 대한 쓰기를 낮추기 위해 TRIM이 도입되었다는 인상을 받았지만 사용되지 않는 블록의 경우 파일 시스템에 문자를 보냅니다.

그것이 맞다면, TRIM을 사용하지 않는 SSD는 블록이 비어 있음을 알리기 위해 파일을 삭제할 때 블록에 0을 씁니다.

이것을 읽고

게스트 내의 파일 시스템은 블록을 재사용하지 않는 경향이 있습니다. 즉, 파일 시스템이 가상 이미지 크기에 비해 작더라도 실제 이미지 크기는 최대 크기에 도달 할 때까지 커지는 경향이 있습니다.

SSD가 0으로 덮어 쓰지 않는다고 생각하게합니까? 아니면 손님의 파일 시스템이 완전히 다른가요?

답변:


16

플래시 메모리 장치 (오늘날 SSD에 사용되는 장치)는 임의의 데이터를 언제든지 쓸 수 없습니다. 셀에 쓰기 전에 (일반적으로 4KB) 먼저 지워야합니다. 불행하게도, 소거 동작은 매우 느리다; 그렇기 때문에 움직이는 부품이 없어도 플래시 장치가 자기 드라이브보다 훨씬 느립니다.

최신 SSD는 사전 삭제 된 셀 세트를 유지함으로써 소거 시간을 숨 깁니다. 즉, 쓰기 명령이 기존 데이터를 즉시 덮어 쓰지 않고 드라이브 컨트롤러가 지워진 셀을 선택하여 다시 매핑하고 새 데이터로 씁니다. 그 (여러 쓰기 생각 캐시 전략) 드라이브에게주는 거대한 크게 자기 드라이브를 능가하는 속도 향상을.

사전에 삭제 된 셀 세트가 항상 있도록하기 위해 셀이 필요하지 않을 때마다 드라이브는 백그라운드 삭제를 예약하고 요금 셀 목록에 추가합니다.

불행히도 기존 파일 시스템은 섹터가 비어있을 때 드라이브에 알리지 않았습니다. 결국이 드라이브는 단순한 비트 저장소 일뿐이었습니다. 파일 시스템의 관점에서 섹터를 자유롭게 표시하는 파일 또는 기타 작업을 삭제하는 것은 일부 메타 데이터 구조에 대한 표시 일뿐입니다. 섹터 자체는 건드리지 않았습니다. 파일 시스템에 0을 써서 파일을 지우더라도 드라이브가 섹터가 비어 있는지 또는 사용자가 파일에서 0을 원했는지 여부를 알 수 없었습니다. 얼마 후, 드라이브는 쓰기 전에 지울 수있는 빈 셀이 없습니다. 성능이 비극적으로 저하되었습니다.

TRIM 명령은 현재 유지 관리되는 대부분의 파일 시스템에서 신속하게 작성되고 채택되었습니다. 파일 시스템이 섹터의 ​​내용이 더 이상 중요하지 않다고 드라이브에 알리는 데 사용하는 간단한 신호입니다. 셀에 매핑 된 모든 섹터가 사용 가능 해지면 SSD 컨트롤러가 셀을 매핑 해제하고 삭제하도록 예약합니다. 호스트가 해당 섹터를 읽으면 SSD가 플래시에서 가져 오는 것을 방해하지 않고 즉시 0으로 응답합니다. 그러나 가장 중요한 효과는 미리 삭제 된 셀 목록을 항상 보충하는 것입니다.

그럼에도 불구하고 대부분의 SSD는 플래시 메모리의 물리적 크기보다 작은 용량, 때로는 75 %의 낮은 용량을 제공합니다. 이를 통해 100 % 전체 시스템에서도 일부 미사용 셀을 유지할 수 있으므로 사용 된 섹터를 (초과하는) 쓰기 속도가 여전히 빠릅니다.


흥미 롭군 TRIM의 작동 방식을 개념적으로 알았지 만 SSD가 얼마나 많은 스토리지를 노출 시킬지 궁금했습니다. 이제 데이터가 주어진 SSD에 대해 어디서나 게시되는지 확인하고 싶습니다.
Michael B

예약 된 셀의 양은 일반적으로 게시됩니다. 저렴한 소비자 드라이브의 경우 일반적으로 5 ~ 10 %, 고급 소비자 드라이브의 경우 20 % 이상입니다. EFD (Enterprise Flash Drive)는 100 % ~ 400 %의 여유 공간이 있습니다. 따라서 왜 그렇게 비싸지 만 플래시 메모리 위치에 쓰는 것이 매번 위치를 조금씩 파괴하기 때문에이 대량 예약을 유지합니다. 일반적으로 서버 환경에서 발견되는 무거운 응용 프로그램을 작성하면 대부분의 소비자 SSD가 빠르게 종료됩니다.
Chris S

"셀에 쓰기 (일반적으로 4KB)" - 기존의 플래시 메모리 사용과 비교하여 "셀" 개념을 잘못 사용하고 있습니다. 플래시 "셀"은 하나 또는 몇 비트 만 저장합니다. 플래시 IC 데이터 시트에 일반적으로 설명 된대로 "셀"을 사용하면 훨씬 더 큰 (삭제) 블록 (128K 일 수 있음)에 해당하는 것 같습니다. 데이터 구성은 셀 <섹터 <페이지 <블록 <평면 <칩입니다.
톱밥

8

TRIM은 운영 체제 (OS 내의 파일 시스템)가 ATA 저장 매체와 통신하여 섹터가 더 이상 파일 시스템에서 사용되지 않도록 ATA 저장 매체와 통신 할 수 있도록 도입되었습니다. 이것은 디스크에 쓰는 것과 관련이 없습니다.

TRIM은 미디어에서 섹터가 제로화되었음을 보장하지 않습니다. 파일 시스템이 해당 섹터에서 0이 리턴된다는 읽기를 요청할 때이를 보장합니다 (SSD는 섹터가 0이어야한다는 것을 알고 있기 때문에 실제로 매체에 저장된 내용에 관계없이 섹터를 리턴 함을 알 수 있습니다. 복구 가능) 일반적으로 SSD는 실제로 메모리를 지우지 만 간단하게 정리 된 디스크의 데이터).

파일 시스템은 쓰기를 분산시키는 경향이 있습니다 (다양한 이유로 쓰기 레벨링 시도, 가비지 콜렉션, 무작위 저장 위치 등). 이 때문에 파일 시스템이 사용하지 않는 섹터를 미디어가 인식하지 못하는 경우, 단순히 0을 쓴다고해서 반드시 섹터가 사용되지 않는 것은 아니며 결국 전체 디스크가 사용 중이라고 가정해야합니다.

SSD의 경우이 가정은 쓰기 시간에 섹터를 삭제해야 쓰기 속도가 감소한다는 것을 의미합니다. 파일이 삭제 될 때 메모리 위치를 지우는 대신. 가상화 시스템의 가상 디스크 파일과 유사하게 동적 디스크 파일은 결국 가상 디스크의 전체 용량을 포함합니다. 가상화 시스템이 TRIM을 구현하면 섹터가 더 이상 사용되지 않는시기를 알 수 있으므로 동적 디스크는 해당 위치를 추적 할 필요가 없습니다.


이는 TRIM이 SSD에 어떤 섹터가 사용되는지 알리기 위해 도입되었으므로 덜 사용 된 섹터에 새 데이터를 넣을 수 있습니까?
Sandra

1
SSD는 단순히 섹터를 더 이상 필요로하지 않을 때 TRIM을 사용합니다. 쓰기 레벨링 또는 저장 매체가 구현할 수있는 다른 기능을 보장하지는 않습니다. 즉, 대부분의 SSD는 쓰기 레벨링, 가비지 수집 (플래시 미디어에서, 사용되지 않은 섹터 지우기) 및 쓰기 성능 향상을 위해 빈 섹터 목록 유지에 사용합니다.
Chris S
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.