당신의 논리가 올바르지 않습니다. 그러나 일부 조건이 충족되는 경우에만 유효합니다.
TRIM 명령 에 지정된대로, ATA 명령 세트 , 또는이에 대해 실행되는 섹터를 제로되지 않을 수 있습니다.
사실, 어떤 데이터에 대한 표준 초점을 맞추고은 TRIM이 발행 된 후 반환하는 1 :
장치가 다듬는 섹터에 대해이 표준에 따라 다음 동작이 지정됩니다 (7.5.3.3 참조).
a) 비결정론 적-트림 된 섹터로부터의 리드에 응답하여 데이터가 호스트에 의해 섹터가 쓰여질 때까지 각각의 리드마다 변경 될 수있다;
b) DRAT (Deterministic Read After Trim)-트림 된 섹터의 읽기에 대한 응답으로 반환 된 데이터는 변경되지 않지만 이전에 반환 된 데이터와 다를 수 있습니다. 및
c) 읽기를 제로) 트림 (RZAT 후 - 트리밍 섹터의 판독에 응답하여 리턴 된 데이터가 제로이다.
[...] DRAT 및 비 결정적 저장 장치의 경우 데이터가 성공적으로 잘린 LBA에 대한 읽기 명령에 대한 응답으로 반환되었습니다.
a) 지정된 LBA에 대해 이전에 반환 된 데이터 일 수 있습니다.
b) 저장 장치에 의해 생성 된 패턴 일 수 있고; 및
c)는 이전에 호스트가 다른 LBA에 기록 된 데이터가 아니다.
따라서 장치가 반환 한 내용 fstrim
은 구현하는 기능에 따라 다릅니다. RZAT를 지원하지 않는 한 잘린 장치에서 읽은 데이터가 0 일 것이라는 가정은 유지되지 않습니다.
당신이 사용할 수있는 hdparm
이를 확인 데 .
sudo hdparm -I /dev/sdX | grep -i trim
두 개의 SSD를 사용하여 몇 가지 테스트를 수행 sda
했으며sdb
. 동일한 ATA 규격을 가진 동일한 제조업체, 다른 모델 :
$ sudo hdparm -i /dev/sdb
...
Drive conforms to: Unspecified: ATA/ATAPI-3,4,5,6,7
...
$ sudo hdparm -i /dev/sda
...
Drive conforms to: unknown: ATA/ATAPI-2,3,4,5,6,7
...
두 SSD는 TRIM을 다르게 지원합니다.
$ sudo hdparm -I /dev/sda | grep -i trim
* Data Set Management TRIM supported (limit 1 block)
$ sudo hdparm -I /dev/sdb | grep -i trim
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM
발행 fstrim
후 "TRIM 이후 결정적 읽기 ZEROs"(RZAT)를 지원하는 드라이브가 실제로 관련 파티션을 거의 완전히 제로화 한 것으로 보입니다. 반대로, 다른 드라이브는 여유 공간의 작은 부분 만 제로화했거나 압축률이 높은 일부 패턴으로 교체 한 것 같습니다.
1 온라인 출처 : INCITS 529 : 정보 기술-ATA / ATAPI 명령 세트-4 (ACS-4)
테스트에 대한 참고 사항 :
주석에서 frostschutz 가 지적한 바와 같이 읽은 후에 fstrim
는 잘린 장치가 아닌 운영 체제 캐시에서 데이터를 반환 할 수 있습니다. 예를 들어, 이 qustion 에서 일어난 일입니다 .
(또한 이 답변을 가리킬 것입니다 TRIM 테스트를위한 대체 방법에 대한 동일한 질문 을 ).
fstrim
다음 읽기 사이 에서 캐시를 삭제해야 할 수도 있습니다 (예 :
echo 3 | sudo tee /proc/sys/vm/drop_caches
사용중인 파티션의 크기에 따라 캐시를 삭제하지 않으면 테스트에 실패 할 수 있습니다.
설정에 대한 참고 사항 :
이 discard
옵션은 언제든지 파일이 삭제됩니다 즉, 연속 TRIM을 가능하게 마운트합니다. 필요하지 않습니다 fstrim
. 실제로 주문형 TRIM과 연속 TRIM은 TRIM 작업을 관리하는 두 가지 고유 한 방법입니다. 자세한 내용 은 Arch Linux Wiki의 솔리드 스테이트 드라이브 를 가리키며이 문제에 대한 자세한 내용을 다루고 있습니다.
dmsetup table | grep allow_discards