본문으로 이동

TRIM

위키백과, 우리 모두의 백과사전.

트림 명령(ATA 커맨드에서는 TRIM, SCSI 커맨드에서는 UNMAP이라고 함)을 사용하면 운영 체제에서 데이터 블록을 더 이상 사용하지 않는다는 것을 솔리드 스테이트 드라이브 (SSD)에 알릴 수 있으므로 내부적으로 데이터를 지우는 것이 가능하다.[1]

TRIM은 SSD가 처음으로 고안된 직후에 도입되었다. SSD가 수행하는 낮은 수준의 작업은 하드 드라이브와 크게 다르기 때문에 운영 체제가 삭제 및 포맷과 같은 작업을 수행하는 일반적인 방식은 예상과는 달리 SSD의 기록 성능이 점진적으로 저하되었다.[2] TRIM을 수행하면 SSD는 가비지 컬렉션을 보다 효율적으로 처리할 수 있다. 그렇지 않다면 향후 관련 블록에 대한 기록 동작이 느려질 수 있다.[3]

TRIM이 도입되기 전에도 이미 일부 드라이브를 초기 상태로 "재설정"하는 도구를 사용할 수 있었지만 드라이브의 모든 데이터를 삭제하기 때문에 최적화 상태를 지속하기에는 실용적이지 않았다.[4] 2014년까지 많은 SSD는 TRIM과 독립적으로 작동하는 내부적인 가비지 컬렉션 메커니즘을 가지고 있었다. 이 매커니즘은 트림을 지원하지 않은 운영 체제에서 성공적으로 성능을 유지했지만, 쓰기 증폭(WAF)의 증가와 플래시 셀의 마모[5]와 연관된 단점이 있었다.

TRIM은 SMR(Shingled Magnetic Recording) 하드 드라이브에도 널리 사용된다.[6]

배경

[편집]

많은 파일 시스템이 데이터 블록을 "사용하지 않음"[7][8]으로 표시해 두는 방식으로 삭제 작업을 처리하기 때문에 저장 미디어(SSD와 기존 하드 드라이브)는 일반적으로 어떤 섹터/페이지가 실제로 사용되고 비어있는지 알지 못한다. 예를 들어 덮어쓰기 작업과 달리 삭제 작업을 할 때는 데이터를 포함하고 있는 섹터를 물리적으로 쓰는 과정이 수반되지 않는다. 일반 SSD는 사용되지않은 블록/섹터 목록을 포함하여 파일 시스템 구조에 대한 정보가 없기 때문에 저장 매체는 블록을 사용할 수 있게 되었다는 사실을 알지 못한다. 이것은 운영 체제에서 파일이 "삭제됨"으로 보고 되었음에도 불구하고 종종 삭제 취소 도구를 사용하여 전자 기계식 하드 디스크[8][9]에서 파일을 복구할 수 있도록 한다. 이는 또한 운영 체제가 나중에 여유 공간으로 간주되는 섹터 중의 하나에 기록 작업을 수행할 때 저장 매체의 관점에서 효과적인 덮어 쓰기 작업이 된다는 것을 의미한다. 자기 디스크의 경우 기존 데이터 덮어쓰기는 빈 섹터에 쓰는 것과 같지만, 일부 SSD가 가장 낮은 수준에서 작동하기 때문에 덮어쓰기는 데이터를 빈 페이지에 쓰는 것과 비교하여 상당한 오버헤드가 발생하여 잠재적으로 쓰기 성능을 저하시킨다.[8][10]

SSD는 일반적으로 4~16kiB의 페이지로 그룹화되고 128~512페이지의 블록으로 그룹화되는 플래시 메모리 셀에 데이터를 저장한다. 예: 512 kiB 블록은 각각 4 kiB의 128 페이지를 그룹화한다.[7][11] NAND 플래시 메모리 셀은 비어 있는 경우에만 직접 쓸 수 있다. 데이터가 포함된 경우 기록 작업 전에 내용을 지워야 한다. SSD 쓰기 작업은 단일 페이지에 수행할 수 있지만 하드웨어 의 제약으로 인해 지우기 명령은 항상 전체 블록에 영향을 준다.[11] 결과적으로 SSD의 빈 페이지에 데이터를 쓰는 것은 매우 빠르지만 이전에 쓴 페이지를 덮어써야 한다면 속도가 상당히 느려진다. 다시 쓰기 전에 페이지의 셀을 지워야 하지만 전체 블록만 지울 수 있으므로 덮어쓰기는 읽기-지우기-수정-쓰기 주기로 동작한다.[7][12] 내용 전체 블록이 캐시에 저장된 다음 전체 블록이 SSD에서 지워지고 덮어쓴 페이지가 캐시된 블록에 기록되고 그런 다음에만 전체 업데이트된 블록이 플래시 매체에 기록될 수 있다. 이 현상을 쓰기 증폭이라고 한다.[13][14]

작업

[편집]

TRIM 명령을 사용하면 운영 체제는 더 이상 유효한 데이터를 포함하지 않는 페이지를 SSD에 알릴 수 있다. 파일 삭제 작업의 경우 운영 체제는 파일의 섹터를 새 데이터를 위한 여유 공간이라 표기한 다음 TRIM 명령을 SSD로 보낸다. TRIM이후 SSD는 플래시 메모리 페이지에 새 데이터를 쓸 때 블록의 내용을 보존하지 않으므로 쓰기 증폭이 줄어들고(쓰기 횟수 감소) 쓰기 처리량이 높아진다(읽기-지우기-수정 시퀀스가 필요 없음). 따라서 드라이브 수명이 증가한다.

SSD마다 명령을 약간 다르게 실행하기 때문에 성능은 다를 수 있다.[3][9]

TRIM은 SSD에 LBA 영역을 유효하지 않은 것으로 표시하도록 지시하고 해당 영역에 대한 후속 읽기는 의미 있는 데이터를 반환하지 않는다. 아주 짧은 시간 동안 데이터는 여전히 내부적으로 플래시에 머무를 수 있다. 그러나 TRIM 명령이 실행되고 가비지 수집이 수행된 후에는 데이터를 복구할 수 있을 가능성은 거의 없다.[15]

실행

[편집]

운영 체제 지원

[편집]

TRIM 명령은 드라이브에서 수행하고 운영 체제에서 요청하는 경우에만 유용하다. 아래 표는 각 주목할만한 운영 체제와 명령을 지원하는 첫 번째 버전을 나타낸다. 또한 ATA 표준에 TRIM 명령을 추가하기 전에 설계된 이전 솔리드 스테이트 드라이브에는 펌웨어 업데이트가 필요하다. 그렇지 않으면 새로 내리는 명령이 무시된다. 하지만 TRIM을 지원하도록 모든 드라이브를 업그레이드할 수 있는 것은 아니다.

TRIM 기능의 지원은 운영 체제의 특정 파일 시스템 드라이버가 수행할 수 있는 기능에 따라 달라진다. 디스크의 어느 부분이 여유 공간인지 알고 있는 프로그램만이 안전하게 명령을 실행할 수 있고 시스템 수준에서는 파일 시스템 드라이버 자체에서 오작동 하는 경향이 있다.

운영 체제 지원시작일 설명
드래곤플라이 BSD 2011-05 2011년 5월[16]
프리BSD 2010-07 8.1 – 2010년 7월[17] 8.1에서 블록 장치 계층에 지원이 추가되었다. 파일 시스템 지원은 UFS로 시작하여 FreeBSD 8.3 및 FreeBSD 9에 추가되었다.[18] ZFS 트리밍 지원이 FreeBSD 9.2에 추가되었다.[19][20] FreeBSD 10은 소프트웨어 RAID 구성에서 트리밍을 지원한다.[21]
NetBSD 2012-10 2012년 10월[22]
리눅스 2008-12-25 2.6.28–25 2008년 12월[23] 2.6.28에서 FTL NAND 플래시 장치에 대한 폐기 작업에 대한 초기 지원이 추가되었다. ATA TRIM 명령에 대한 지원이 2.6.33에 추가되었다.[24] 모든 파일 시스템이 트림을 사용하는 것은 아니다. 트림 요청을 자동으로 발행할 수 있는 파일 시스템 중에는 ext4,[25] Btrfs,[26] FAT, GFS2, JFS,[27] XFS,[28]NTFS-3G가 있다. 그러나 일부 배포판에서는 지원되는 SSD에서 예약된 트리밍을 위해[29] 성능 문제로 인해 기본적으로 비활성화되어 있다.[30] Ext3, NILFS2 및 OCFS2는 오프라인 트리밍을 수행하기 위한 Ioctl을 제공한다. TRIM 사양은 트림 범위 목록을 지원해야 하지만 커널 3.0에서 트림은 더 느린 단일 범위에서만 호출된다.[31]

많은 최신 Linux 배포판에서 systemdfstrim.timer 단위를 제공하므로 fstrim.timerfstrim.service가 매주 실행된다.[32]

맥 OS 2011-06-23 10.6.8–23 2011년 6월[33] AHCI 블록 장치 드라이버가 10.6.6(10J3210)에서 장치가 TRIM 작업을 지원하는지 여부를 표시하는 기능을 얻었지만[34] TRIM 작업이 IOStorageFamily 및 파일 시스템을 통해 노출된 10.6.8까지 기능 자체에 액세스할 수 없었다. (HFS+) 지원이 추가되었다.  10.10.4까지 Mac OS X은 기본적으로 Apple 브랜드 SSD에 대해서만 TRIM을 활성화했다. 타사 유틸리티를 사용하여 다른 브랜드에서 사용할 수 있다. 이전 타사 TRIM 드라이버는 Yosemite 업데이트로 작동을 멈췄다.[35] 이제 OS X Yosemite에서 작동하는 업데이트된 드라이버가 있다.[36][37] Mac OS X 업데이트 10.10.4에서 Apple은 타사 SSD에서 TRIM을 활성화하는 데 사용할 수 있는 명령줄 유틸리티인 trimforce를 추가했다.[38]
마이크로소프트 윈도우 2009–10 Windows 7 및 Windows Server 2008 R2 – 2009년 10월[39][40] Windows 7은 처음에 Parallel ATA직렬 ATA를 포함한 AT Attachment 제품군의 드라이브에 대해서만 TRIM을 지원했으며 장치 자체에서 명령을 수락하더라도 Storport PCI-Express SSD를 포함한 다른 장치에 대해서는 이 명령을 지원하지 않았다.[41] 기본 Microsoft 드라이버를 사용하면 TRIM 명령이 AHCI 및 레거시 IDE/ATA 모드의 Windows 7에서 작동하는 것으로 확인되었다.[42] Windows 8 이상 Windows 운영 체제는 NVMe 기반 PCI Express SSD의 트림을 지원하며, UASP(USB Attached SCSI Protocol)를 포함하여 SCSI 드라이버 스택을 사용하는 장치에 대해 직렬 ATA의 TRIM 명령과 완전히 유사한 unmap 명령을 지원한다. Microsoft는 PCIe SSD용 TRIM을 포함하여 NVM Express 지원을 추가하는 Windows 7용 업데이트를 출시했다.[43][44] TRIM은 비활성화를 위해 DisableDeleteNotify 스위치를 구현하는 ReFSNTFS에 대해 지원되는 것으로 알려져 있다.[45] 출처는 다른 파일 시스템에 대한 TRIM 지원이 존재하는지 여부에는 동의하지 않는다.
오픈솔라리스 2010-07 2010년 7월[46]
안드로이드 OS 2013-7 4.3[47] – 2013년 7월 24일[48] 장치가 최소 1시간 동안 유휴 상태이고 80% 이상 충전된 경우(충전기에 연결된 경우 30%) 최대 24시간마다 fstrim 자동으로 실행한다.[47]

RAID 문제

[편집]

2017년 1월자로 대부분의 하드웨어 기반의 RAID 기술에서는 트림 TRIM 지원이 되지 않는다. 하지만, RAID 실행 소프트웨어에서 TRIM을 지원한다.

Windows

[편집]

Windows 10은 RAID 볼륨을 구성할 때 "드라이브 최적화" 옵션을 사용하여 SSD RAID 볼륨에서 TRIM을 지원한다.

맥 OS 운영체제

[편집]

macOS RAID 드라이버는 TRIM을 지원하지 않는다. 이것은 10.7부터 macOS 10.12.x까지의 모든 Mac OS X 버전에 해당된다.

타사 SoftRAID® 애플리케이션을 사용할 때 타사 SSD 장치에 대한 TRIM 지원을 포함하여 RAID(0,1,4,5 & 10) 볼륨에 대해 TRIM이 지원된다. (참고: 비 Apple SSD 장치용 TRIM은 터미널 명령 "sudo trimforce enable"을 사용하여 구체적으로 활성화해야 함)

리눅스

[편집]

TRIM은 BIOS 지원 "가짜 하드웨어 RAID" 지원을 구현하고 이제 RAID 어레이에 있는 파일 시스템의 모든 TRIM 요청을 통과 하는 Linux 커널 dmraid의 2011년 1월 이후 릴리스에서 RAID 볼륨과 함께 사용할 수 있다.[49]

dmraid와 혼동될 수 있지만 둘은 엄연히 다른 것이다. Linux의 범용 소프트웨어 RAID 시스템인 mdraid는 시스템이 파일 시스템에서 mdtrim 유틸리티를 주기적으로 실행하도록 구성된 경우 RAID 1 어레이에서 배치 기반(라이브가 아닌 파일 삭제 시) TRIM을 실험적으로 지원한다. (네이티브 TRIM 지원이 없는 ext3과 같은 것들도).[50] Red Hat Enterprise Linux 6.5 이상에서 mdraid와 같은 후기 버전의 Linux에서는 단순한 일괄 작업이 아닌 실시간 TRIM 명령을 통해 전달하는 것을 지원한다.[51]

그러나 레드햇은 대부분의 RAID 사용 시 SSD에서 RAID 레벨 1,4,5 그리고 6를 채택한 소프트웨어를 사용하지 않는 것을 권장한다. 왜냐하면 초기화 중에 대부분의 RAID 관리 유틸리티(예: Linux의 mdadm ) 체크섬(또는 RAID 1 및 10의 경우 드라이브 대 드라이브 확인)이 제대로 작동하는지 확인하기 위해 장치의 모든 블록에 기록하여 SSD가 예비 영역 이외의 모든 블록이 사용 시 성능이 크게 저하된다.[52]

반면에 Red Hat은 SSD의 LVM RAID에 대해 RAID 1 또는 RAID 10의 사용을 권장한다. 이러한 레벨은 TRIM(Linux 용어로 "폐기")을 지원하고 LVM 유틸리티는 RAID 1 또는 RAID 10 볼륨을 생성할 때 모든 블록에 쓰지 않기 때문이다.[51]

2010년 3월의 짧은 기간 동안 사용자들은 Intel Rapid Storage Technology(RST) 9.6 드라이버가 RAID 볼륨에서 TRIM을 지원한다고 믿었지만 인텔은 나중에 AHCI 모드 및 RAID 모드의 BIOS 설정에 대해 TRIM이 지원된다고 밝혔다. 하지만 드라이브가 RAID 볼륨의 일부인 경우에는 그렇지 않다.[53]

2012년 8월 현재 Intel은 RST(Rapid Storage Technology) 11.2 드라이버가 포함된 7 시리즈 칩셋이 Microsoft Windows 7에서 RAID 0용 TRIM을 지원함을 확인했다.[54] 인텔은 6 시리즈 칩셋에 대한 지원을 확인하지 않았지만 RAID 0 볼륨의 TRIM은 수정된 RAID 옵션 ROM 이 있는 하드웨어 지지자에 의해 Z68, P67 및 X79 칩셋에서 작동하는 것으로 나타났다.[55] 6 시리즈 칩셋에 대한 공식 지원이 부족한 것은 기술적인 이유가 아니라[56] 이나 소비자의 업그레이드를 유도하려는 시도[57]나 승인 비용 때문이라고 추정된다.

X79 칩셋이 있는 마더보드에서 수정된 옵션 ROM이 필요한 예외는 제조업체가 ROM 스위치를 추가한 경우이다. 이것은 BIOS/UEFI 내부에 있는 RST 및 RST-E ROM을 모두 수반한다. 이를 통해 RST-E ROM 대신 RST ROM을 사용할 수 있으므로 TRIM이 작동할 수 있다.[58] 인텔은 ROM과 동일한 버전의 드라이버를 사용하여 최상의 성능을 얻을 수 있다고 말한다. 예를 들어 BIOS/UEFI에 11.0.0.0m 옵션 ROM이 있는 경우 11.x 버전 드라이버를 사용해야 한다.[59]

지원되지 않는 파일 시스템 활성화

[편집]

파일 시스템이 자동으로 TRIM을 지원하지 않는 경우 일부 유틸리티는 수동으로 TRIM명령을 보낼 수 있다. 일반적으로 사용 가능한 블록을 결정한 다음 이 목록을 일련의 TRIM명령으로 드라이브에 전달한다. 이러한 유틸리티는 다양한 제조업체(예: Intel,[60] G.Skill[61] ) 또는 일반 유틸리티(예: v9.17 이후 Linux의 hdparm "wiper",[62][63] 또는 위에서 언급한 mdtrim). hdparm과 mdtrim은 모두 파일 시스템에 큰 파일을 할당하고 할당된 위치를 확인하여 여유 블록을 찾는다.

모든 운영 체제에서 드라이브는 컴퓨터가 블록에 모두 0을 기록할 때를 감지하고 0 블록을 기록하는 대신 해당 블록을 할당 해제(트림)할 수 있다. 할당 해제된 블록을 읽을 때 항상 0이 반환되는 경우 이 단축키는 모두 0인 블록의 더 빠른 쓰기(및 읽기)의 경우를 제외하고 사용자에게 투명하게 공개된다. 이에 더하여 사용되지 않는 영역에 더 빠르게 쓰는 일반적인 이점도 있다. 운영 체제는 파일이나 여유 공간을 "삭제" 하기 위해 모두 0을 쓰지 않지만 일부 유틸리티는 그렇게 한다.

하드웨어 지원

[편집]

ATA

[편집]

TRIM 명령 사양[64] 은 INCITS( International Committee for Information Technology Standards )의 T13 기술 위원회가 주도하는 ATA( AT Attachment ) 인터페이스 표준의 일부로 표준화되었다.[65] TRIM은 ACS-2 사양 초안의 DATA SET MANAGEMENT 명령(opcode 06h)에 따라 구현된다.[66] ATA 표준은 병렬(IDE, PATA) 및 직렬(SATA) ATA 하드웨어에서 모두 지원된다.

원래 ATA TRIM 명령의 단점은 대기열에 넣을 수 없는 명령으로 정의되어있기 때문에 대기열에 있는 읽기 및 쓰기 작업의 일반 작업 부하와 쉽게 섞일 수 없다는 것이다. SATA 3.1은 이 문제를 해결하기 위해 대기 중인 TRIM 명령을 도입했다.[67]

ATA IDENTIFY DEVICE 명령에서 반환된 SATA 워드 69 및 169에 의해 정의된 다양한 유형의 TRIM이 있다.

  • 비결정적 TRIM: TRIM 후 논리 블록 주소 (LBA)에 대한 각 읽기 명령은 다른 데이터를 반환할 수 있다.
  • 결정적 TRIM(DRAT): TRIM 이후 LBA에 대한 모든 읽기 명령은 동일한 데이터를 반환하거나 결정적이 된다.
  • TRIM 후 결정적 읽기 0(RZAT): TRIM 후 LBA에 대한 모든 읽기 명령은 0을 반환해야 한다.

드라이브가 지원할 수 있는 DATA SET MANAGEMENT 명령당 최대 512바이트 블록 수를 설명하는 SATA Word 105에 추가 정보가 있다. 일반적으로 기본값은 8(또는 4kB)이지만 많은 드라이브는 TRIM에 대한 Microsoft Windows 하드웨어 요구 사항을 충족하기 위해 이 값을 1로 줄인다. 해당 명령 완료 시간은 20ms 또는 8ms ×(LBA 범위 항목 수)를 초과하지 않고 항상 600ms 미만이어야 한다.[68]

개별 LBA 범위를 LBA 범위 항목이라고 하며 8바이트로 표시된다. LBA는 LBA 범위 항목의 처음 6바이트로 표시되고 범위 길이는 나머지 2바이트로 표시되며 0부터 시작한다(예: 0=0 및 1=1)이다. 2바이트 범위 길이가 0이면 LBA 범위 항목이 패딩으로 삭제된다.[69] 즉, 장치가 지원하는 TRIM 범위의 각 512바이트 블록에 대해 최대값은 32MB 또는 2GB의 64개 범위이다. 장치가 8에서 SATA Word 105를 지원하는 경우 단일 TRIM(DATA SET MANAGEMENT) 명령으로 16GB를 트리밍할 수 있어야 한다.

SCSI

[편집]

SCSI는 UNMAP 플래그 세트와 함께 UNMAP 명령(TRIM의 전체 아날로그) 및 WRITE SAME 명령(10 및 16 변형)을 제공한다.[70]

SD/MMC

[편집]

MultiMediaCardSD ERASE(CMD38) 명령은 ATA TRIM 명령과 유사한 기능을 제공하지만 지워진 블록을 0 또는 1로 덮어써야 한다. eMMC 4.5는 폐기된 블록의 내용이 불확실한 것으로 간주될 수 있다는 점에서 ATA TRIM과 보다 밀접하게 일치하는 "폐기" 하위 작업을 추가로 정의한다(즉, "상관하지 않는다").

NVM Express

[편집]

NVM Express 명령 세트에는 블록 범위 세트의 스토리지 장치에 호스트의 의도를 암시하기 위한 일반 데이터 세트 관리 명령이 있다. 작업 중 하나인 deallocate는 트림을 수행한다. 또한 할당 해제 힌트를 제공하고 디스크가 TRIM을 수행하고 0을 반환할 수 있도록 하는 Write Zeroes 명령이 있다.

단점

[편집]
  • 일부 거부 가능한 암호화 체계에는 전체 디스크를 임의의 쓰레기처럼 보이게 만드는 것이 포함된다. TRIM을 사용하면 생성된 all-zero(또는 all-one) 블록이 어떤 블록이 사용되는지 쉽게 나타내므로 이 그럴듯한 거부 가능성 계층을 무효화한다.[71] TRIM을 비활성화하는 것도 의심스러울 수 있다는 주장이 있다.[72]
  • TRIM 명령의 원래 버전은 T13 소위원회에 의해 대기열에 없는 명령으로 정의되었으며, 따라서 예를 들어 각 파일 시스템 삭제 명령 후에 전송되는 경우 부주의하게 사용하면 엄청난 실행 페널티가 발생할 수 있다. 대기열에 없는 명령의 특성으로 인해 드라이버는 먼저 모든 미해결 명령이 완료될 때까지 기다렸다가 TRIM 명령을 실행한 다음 일반 명령을 재개해야 한다. TRIM은 SSD의 펌웨어에 따라 완료하는 데 많은 시간이 걸릴 수 있으며 가비지 수집 주기를 유발할 수도 있다. 이 페널티는 시스템 사용률이 최소인 시간에 이러한 일괄 작업을 예약 하여 모든 파일 삭제 시 트리밍하는 대신 정기적으로 일괄 처리 TRIM을 수행하는 솔루션에서 최소화할 수 있다. 이 TRIM 단점은 Queued TRIM 명령의 도입으로 직렬 ATA 개정판 3.1에서 극복되었다.[73][74]
  • 대기 중인 TRIM에 대한 지원을 잘못 보고하거나 구현에 심각한 버그가 있는 결함이 있는 드라이브 펌웨어는 여러 장치, 특히 Micron 및 Crucial의 M500[75] 및 Samsung의 840 및 850 시리즈에서 심각한 데이터 손상과 관련이 있다.[76] 데이터 손상은 Linux 운영 체제(2015년 7월 1일 현재 대기열 트림 지원이 있는 유일한 OS)에서 확인되었다.[77]

이러한 장치는 Linux 커널의 블랙리스트에 있다.libata-core.c대기열에 포함되지 않은 TRIM 명령을 강제로 보내는 ATA_HORKAGE_NO_NCQ_TRIM대기 중인 TRIM 명령 대신 다음 드라이브에[78]

  • 공장에서 재인증된 SSD를 포함한 모든 펌웨어 버전을 사용하는 Micron/Crucial M500
  • 펌웨어 버전 MU01을 사용하는 Micron M510
  • 펌웨어 버전 MU01을 사용하는 Micron/Crucial M550
  • 펌웨어 버전 MU01을 사용하는 Crucial MX100
  • 모든 펌웨어 버전을 사용하는 Samsung 840 및 850 시리즈 SSD

이 파일은 또한 TRIM이 발행될 때 잘못된 블록이 데이터를 잃게 하기 때문에 일반적으로 TRIM에 대해 SuperSSpeed S238을 블랙리스트에 추가한다.[78][79]

libata-core.c also has a whitelist to list SSDs that are reliably known to the subsystem's maintainers to correctly implement the DRAT and RZAT flags (ATA_HORKAGE_ZERO_AFTER_TRIM), rather than ignoring them, as many drives do. The whitelisted drives are as follows:[78]

  • 크루셜(Crucial) SSD
  • Intel SSD 510을 제외한 Intel SSD
  • 마이크론(Micron) SSD
  • 삼성(Samsung) SSD
  • 씨게이트(Seagate) SSD[80]

각주

[편집]
  1. “Intel High Performance Solid State Drive – Advantages of TRIM”. 《Intel.com》. Intel. 2010년 9월 14일. 2012년 2월 21일에 확인함. 
  2. Shimpi, Anand Lal (2009년 3월 18일). “The SSD Anthology: Understanding SSDs and New Drives from OCZ”. 《AnandTech.com》. 4쪽. 2010년 6월 19일에 확인함. 
  3. Shimpi, Anand Lal. (18 March 2009). p. 10.
  4. Shimpi, Anand Lal. (18 March 2009). p. 11.
  5. “Kingston SSDNow V Plus 100 Review”. 《AnandTech.com》. Anand Lal Shimpi. 2010년 11월 11일. 2010년 12월 10일에 확인함. 
  6. “Trim Command - General Benefits for Hard disk Drives” (PDF). 《Documents.westerndigital.com》. 2021년 11월 7일에 확인함. 
  7. Savill, John (2009년 4월 21일). “I heard solid-state disks (SSDs) suffer from a decline in write performance as they're used. Why?”. WindowsITPro. 2012년 6월 30일에 원본 문서에서 보존된 문서. 2010년 6월 19일에 확인함. 
  8. Shimpi, Anand Lal. (18 March 2009). p. 7.
  9. Savill, John (2009년 4월 22일). “What is the TRIM function for solid-state disks (SSDs) and why is it important?”. WindowsITPro. 2013년 2월 9일에 원본 문서에서 보존된 문서. 2010년 6월 19일에 확인함. 
  10. Malventano, Allyn (2009년 2월 13일). “Long-term performance analysis of Intel Mainstream SSDs”. 《PC Perspective》. 2012년 2월 10일에 확인함. 
  11. Shimpi, Anand Lal. (18 March 2009). p. 5.
  12. Shimpi, Anand Lal. (18 March 2009). p. 8.
  13. “Write Amplification: Intel's Secret Sauce”. ExtremeTech.com. 2010년 11월 15일에 원본 문서에서 보존된 문서. 2010년 11월 6일에 확인함. 
  14. “Inside the X25-M Controller: Wear Leveling, Write Amplification Control”. TomsHardware.com. 2008년 9월 8일. 2010년 11월 6일에 확인함. 
  15. “Too TRIM? When SSD Data Recovery is Impossible”. 《TechGage》. TechGage. 2010년 3월 5일. 2018년 8월 21일에 확인함. 
  16. “Preliminary TRIM support”. 《leaf.dragonflybsd.org》. 
  17. “FreeBSD 8.1-RELEASE Release Notes: Disks and Storage”. 2010년 9월 1일에 확인함. 
  18. “Add kernel side support for BIO_DELETE/TRIM on UFS”. 2011년 2월 1일에 확인함. 
  19. “Added ZFS TRIM support which is enabled by default.”. 2013년 6월 5일에 확인함. 
  20. “FreeBSD 9.2-RELEASE Announcement”. 2013년 10월 4일에 확인함. 
  21. “Base revision 242323 – Add basic BIO_DELETE support to GEOM RAID class for all RAID levels”. 2012년 10월 30일에 확인함. 
  22. “TRIM support in NetBSD”. 2012년 10월 19일. 
  23. “Linux_2_6_28 - Linux Kernel Newbies”. 《kernelnewbies.org》. 
  24. “Storage changes in Linux 2.6.33”. Kernel Newbies. 2010년 9월 1일에 확인함. 
  25. “Forked by Nicolay - HOWTO: Configure Ext4 to Enable TRIM Support for SSDs on Ubuntu and Other Distributions”. 《sites.google.com》. 
  26. “Linux_2_6_32 - Linux Kernel Newbies”. 《kernelnewbies.org》. 
  27. “JFS Filesystem can now handle trim”. 2012년 3월 28일에 확인함. 
  28. “Linux_3.0 - Linux Kernel Newbies”. 《kernelnewbies.org》. 
  29. Freemyer, Greg (2010). “OpenSUSE forum – SSD detection when creating first time fstab”. 2013년 1월 27일에 원본 문서에서 보존된 문서. 2022년 1월 2일에 확인함. 
  30. “How to enable TRIM?”. 《Ask Ubuntu》. 2015년 11월 11일에 확인함. 
  31. “SDB:SSD discard (trim) support - openSUSE Wiki”. 《en.opensuse.org》. 
  32. “Changes/EnableFSTrimTimer - Fedora Project Wiki”. 《fedoraproject.org》. 2020년 12월 10일에 확인함. 
  33. “Mac OS X 10.6.8 Brings TRIM Support for Apple SSDs, Graphics Improvements”. 2012년 2월 24일. 
  34. “Macbook Pros ship with active SSD TRIM support”. 2011년 3월 4일. 
  35. “Yosemite kills third-party SSD support”. 《ZDNet》. 
  36. “Chameleon SSD Optimizer”. 《chameleon.alessandroboschini.com》. 
  37. “You searched for Trim enabler”. 《Cindori.org》. 2021년 11월 8일에 원본 문서에서 보존된 문서. 2021년 11월 7일에 확인함. 
  38. Lee Hutchinson (2015년 6월 30일). “Latest OS X update allows you to enable TRIM for third-party SSDs”. 《Ars Technica》. Condé Nast. 2015년 7월 1일에 확인함. 
  39. Fortin, Michael (2009년 5월 9일). Sinofsky, Steven, 편집. “Support and Q&A for Solid-State Drives”. 《Engineering Windows 7 blog》. 마이크로소프트. 2010년 5월 29일에 원본 문서에서 보존된 문서. 2019년 2월 17일에 확인함. 
  40. “Windows 7 Enhancements for Solid-State Drives” (PDF). 《Microsoft downloads》. Microsoft Corporation. 2008년 11월 12일. 2009년 7월 8일에 확인함. 
  41. Geoff Gasior (2012) OCZ's RevoDrive 3 X2 240GB solid-state drive
  42. Coles, Olin (2010년 4월 15일). “SSD Benchmark Tests: SATA IDE vs AHCI Mode – AHCI vs IDE Final Thoughts”. 《BenchmarkReviews》. 2013년 12월 3일에 원본 문서에서 보존된 문서. 2013년 8월 20일에 확인함. 
  43. “Update to add native driver support in NVM Express in Windows 7 and Windows Server 2008 R2”. 《Support》. Microsoft. 2015년 9월 8일. 
  44. “What is the TRIM Command on Solid State Drives?”. 《datarecovery.com》. 2017년 1월 30일. Microsoft added the feature in a Windows 7 update known as KB2990941 
  45. “Fsutil behavior”. 《Microsoft Documentation》 (미국 영어). 2019년 11월 17일에 확인함. 
  46. “SATA TRIM support in OpenSolaris”. 2010년 7월 29일. 2012년 6월 30일에 원본 문서에서 보존된 문서. 2022년 1월 2일에 확인함. 
  47. “Android 4.3 Update Brings TRIM to All Nexus Devices”. 2013년 7월 29일. 2013년 7월 30일에 확인함. 
  48. "Android 4.3 announced, rolling out to Nexus devices today".The Verge. 24 July 2013. Retrieved 24 July 2013.
  49. “Possible to get SSD TRIM (discard) working on ext4 + LVM + software RAID in Linux? – Server Fault”. 2011년 11월 29일에 확인함. 
  50. “Cyberax/mdtrim – GitHub”. 《GitHub. 2011년 11월 29일에 확인함. 
  51. “Red Hat Enterprise Linux 6 Storage Administration Guide, Chapter 21. Solid-State Disk Deployment Guidelines”. 2016년 3월 9일에 확인함. 
  52. “Red Hat Enterprise Linux 7 Storage Administration Guide”. 2015년 11월 11일. 2016년 2월 29일에 확인함. 
  53. “Is there TRIM support for RAID configurations?”. Intel. 2010년 3월 26일. 2010년 11월 6일에 확인함. 
  54. “Intel Confirms RAID0 TRIM Support on 7-Series Chipsets”. 2012년 8월 19일. 2012년 10월 22일에 원본 문서에서 보존된 문서. 2013년 1월 14일에 확인함. 
  55. “RAID0 trim and SRT seems possible on 6-series and 5-Series”. 2012년 11월 18일. 2013년 1월 18일에 원본 문서에서 보존된 문서. 2013년 1월 14일에 확인함. 
  56. “TRIM & RAID-0 SSD Arrays Work With Intel 6-Series Motherboards Too”. 2012년 11월 28일. 2013년 1월 14일에 확인함. 
  57. “Intel Brings TRIM to RAID-0 SSD Arrays on 7-Series Motherboards, We Test It”. 2012년 8월 16일. 2013년 1월 14일에 확인함. 
  58. Anand Lal Shimpi. “Intel Brings TRIM to RAID-0 SSD Arrays on 7-Series Motherboards, We Test It”. 
  59. Doug Crowthers (2012년 8월 17일). “TRIM Command Confirmed With RAID 0 on Intel 7 Series”. 《Tom's Hardware》. 
  60. “Intel SSD Optimizer White Paper” (PDF). Intel Corporation. 2012년 6월 30일에 원본 문서 (PDF)에서 보존된 문서. 2010년 1월 23일에 확인함. 
  61. “wiper.exe for Falcon Series”. XtremeSystems. 2013년 6월 25일에 원본 문서에서 보존된 문서. 2010년 1월 23일에 확인함. 
  62. “hdparm-9.17 released, with experimental trim/wiper scripts for SSDs”. 2010년 8월 14일에 확인함. 
  63. “hdparm project page”. sourceforge.net. 2010년 8월 14일에 확인함. 
  64. “Data Set Management Commands Proposal for ATA8-ACS2 (revision 6)”. 《INCITS T13》. INCITS. 2007년 12월 12일. 2010년 6월 13일에 원본 문서에서 보존된 문서. 2009년 7월 8일에 확인함.  (draft specification T13/e07154r6)
  65. “T13 documents referring to TRIM”. 《INCITS T13》. INCITS. 2010년 5월 26일에 원본 문서에서 보존된 문서. 2009년 7월 8일에 확인함. 
  66. “T13 ATA8 Draft Spec 1697-D” (PDF). INCITS. 2010년 6월 23일. 2011년 3월 22일에 원본 문서 (PDF)에서 보존된 문서. 2010년 8월 14일에 확인함. 
  67. “SATA 6Gb/s”. Serial ATA International Organization. 2012년 9월 26일에 확인함. 
  68. “Device.Storage Requirements (Windows)”. 2016년 2월 29일에 확인함. 
  69. “T13/2161-D: Information technology – ATA/ATAPI Command Set – 3 (ACS-3)” (PDF). 《T13.org》. 2016년 4월 5일에 원본 문서 (PDF)에서 보존된 문서. 2016년 2월 29일에 확인함. 
  70. Motin, Alexander (2011년 12월 24일). “RFC: SCSI UNMAP (TRIM) support”. 《Lists.freebsd.org》. 2021년 11월 7일에 확인함. 
  71. “Milan Broz's blog: TRIM & dm-crypt ... problems?”. Milan Broz. 2011년 8월 14일. 2014년 10월 1일에 확인함. 
  72. “Perfectly Deniable Steganographic Disk Encryption” (PDF). 《I.blackhat.com》. 2021년 11월 7일에 확인함. 
  73. “The Path from 3Gb/s to SATA 6Gb/s: How to Migrate Current Designs to the SATA Revision 3.0 Specification”. 《Sata-io.org》. 2009년 5월 27일. 2021년 11월 7일에 확인함. 
  74. “SATA 3.1 spec brings swap standard, improved TRIM”. 《The Tech Report》. 
  75. “71371 [PATCH]Crucial M500, broken "queued TRIM" support”. 《bugzilla.kernel.org》. 
  76. “Bug #1449005 trim does not work with Samsung 840 EVO after firm... : Bugs : fstrim package : Ubuntu”. 《Launchpad》. 
  77. torvalds. “linux/libata-core.c at e64f638483a21105c7ce330d543fa1f1c35b5bc7 · torvalds/linux · GitHub”. 《GitHub》. 
  78. torvalds. “linux/libata-core.c at master · torvalds/linux · GitHub”. 《GitHub》. 
  79. torvalds. “libata: force disable trim for SuperSSpeed S238 · torvalds/linux@cda57b1”. 《GitHub》. 
  80. “[1/3] libata: Whitelist SSDs that are known to properly return zeroes after TRIM - Patchwork”. 《patchwork.ozlabs.org》. 

외부 링크

[편집]