Trim (komputer)

**Perintah trim** (dikenal sebagai **TRIM** di set perintah ATA, dan **UNMAP** di set perintah SCSI) memungkinkan sistem operasi untuk menginformasikan solid-state drive (SSD) blok data mana yang tidak lagi dianggap 'sedang digunakan' dan oleh karena itu dapat dihapus secara internal.

Trim diperkenalkan segera setelah SSD diperkenalkan. Karena operasi SSD tingkat rendah berbeda secara signifikan dari hard drive, cara umum sistem operasi menangani operasi seperti penghapusan dan format mengakibatkan penurunan kinerja progresif yang tidak terduga dari operasi tulis pada SSD. Pemangkasan memungkinkan SSD menangani pengumpulan sampah secara lebih cepat, yang sebaliknya akan memperlambat operasi penulisan pada masa mendatang ke blok yang terlibat.

Meskipun alat untuk "mengatur ulang" beberapa kandar ke keadaan baru sudah tersedia sebelum pemangkasan diperkenalkan, alat tersebut juga menghapus semua data pada drive, yang membuatnya tidak praktis digunakan untuk pengoptimalan berkelanjutan. Pada tahun 2022, banyak SSD dan kandar kilas USB memiliki mekanisme pengumpulan sampah internal untuk sistem file tertentu (seperti FAT32, NTFS, APFS) yang bekerja secara terpercaya dari pemangkasan. Meskipun ini berhasil mempertahankan masa pakai dan kinerjanya bahkan di bawah sistem operasi yang tidak mendukung trim, dia memiliki kelemahan terkait peningkatan amplifikasi tulis dan keausan sel kilat.

TRIM juga banyak digunakan pada kandar keras shingled magnetic recording (SMR).

## Latar belakang
Karena cara banyak sistem berkas menangani operasi penghapusan, dengan menandai blok data sebagai "tidak digunakan", media penyimpanan (SSD, tetapi juga cakram keras) umumnya tidak mengetahui sektor/halaman mana yang benar-benar digunakan dan mana yang dapat digunakan. dianggap ruang kosong. Berlawanan dengan (misalnya) operasi penimpaan, penghapusan tidak akan melibatkan penulisan fisik ke sektor yang berisi data. Karena SSD umum tidak memiliki pengetahuan tentang struktur sistem berkas, termasuk daftar blok/sektor yang tidak digunakan, media penyimpanan tetap tidak menyadari bahwa blok telah tersedia. Meskipun ini sering memungkinkan alat yang tidak terhapus untuk memulihkan file dari hard disk elektromekanis, meskipun file dilaporkan sebagai "dihapus" oleh sistem operasi, itu juga berarti bahwa ketika sistem operasi kemudian melakukan operasi tulis ke salah satu sektor, yang dianggapnya ruang kosong, secara efektif menjadi operasi penimpaan dari sudut pandang media penyimpanan. Untuk disk magnetik, penimpaan data yang ada tidak berbeda dengan penulisan ke sektor kosong, tetapi karena beberapa SSD berfungsi pada tingkat terendah, penimpaan menghasilkan overhead yang signifikan dibandingkan dengan penulisan data ke halaman kosong, yang berpotensi melumpuhkan kinerja penulisan.

SSD menyimpan data dalam sel memori flash yang dikelompokkan ke dalam halaman yang biasanya berukuran 4 hingga 16 kiB, dikelompokkan bersama ke dalam blok yang biasanya terdiri dari 128 hingga 512 halaman. Contoh: 512 kiB blok yang mengelompokkan 128 halaman masing-masing 4 kiB. Sel memori kilat NAND dapat langsung ditulisi hanya jika kosong. Jika kebetulan berisi data, konten harus dihapus sebelum operasi tulis. Operasi penulisan SSD dapat dilakukan pada satu halaman tetapi, karena keterbatasan perangkat keras, perintah hapus selalu memengaruhi seluruh blok; akibatnya, menulis data ke halaman kosong pada SSD sangat cepat, tetapi sangat melambat setelah halaman yang ditulis sebelumnya perlu ditimpa. Karena penghapusan sel di halaman diperlukan sebelum dapat ditulis lagi, tetapi hanya seluruh blok yang dapat dihapus, penimpaan akan memulai siklus baca-hapus-ubah-tulis: isi seluruh blok disimpan di cache, kemudian seluruh blok dihapus dari SSD, kemudian halaman yang ditimpa ditulis ke dalam blok yang di-cache, dan hanya dengan demikian seluruh blok yang diperbarui dapat ditulis ke media flash. Fenomena ini dikenal sebagai amplifikasi tulis.

## Operasi
Perintah TRIM memungkinkan sistem operasi untuk memberi tahu SSD tentang halaman yang tidak lagi berisi data yang valid. Untuk operasi penghapusan berkas, sistem operasi akan menandai sektor file sebagai bebas untuk data baru, kemudian mengirim perintah TRIM ke SSD. Setelah pemangkasan, SSD tidak akan menyimpan konten apa pun dari blok saat menulis data baru ke halaman memori flash, menghasilkan amplifikasi penulisan yang lebih sedikit (penulisan lebih sedikit), throughput penulisan yang lebih tinggi (tidak perlu urutan baca-hapus-modifikasi), sehingga meningkatkan umur kandar.

SSD yang berbeda menerapkan perintah dengan agak berbeda, sehingga kinerjanya dapat bervariasi.

TRIM memberi tahu SSD untuk menandai wilayah LBA sebagai tidak valid dan pembacaan selanjutnya pada wilayah tersebut tidak akan mengembalikan data yang berarti. Untuk waktu yang sangat singkat, data masih dapat berada di flash secara internal. Namun, setelah perintah TRIM dikeluarkan dan pengumpulan sampah telah dilakukan, sangat tidak mungkin bahwa bahkan seorang ilmuwan forensik dapat memulihkan data.

## Penerapan

### Operating system support
Perintah TRIM hanya bermanfaat jika kandar menerapkannya dan sistem operasi memintanya. Tabel di bawah ini mengidentifikasi setiap sistem operasi terkenal dan versi pertama yang mendukung perintah tersebut. Selain itu, solid-state drive lama yang dirancang sebelum penambahan perintah TRIM ke standar ATA akan memerlukan pembaruan firmware, jika tidak, perintah baru akan diabaikan. Namun, tidak setiap drive dapat ditingkatkan untuk mendukung pemangkasan.

Dukungan untuk TRIM juga bervariasi berdasarkan kemampuan kandar sistem berkas tertentu pada sistem operasi, karena hanya program dengan pemahaman tentang bagian disk mana yang merupakan ruang kosong yang dapat dengan aman mengeluarkan perintah, dan pada tingkat sistem kemampuan ini cenderung terletak pada driver sistem file itu sendiri.

### masalah RAID
Hingga Januari 2017, dukungan untuk perintah TRIM tidak diterapkan di sebagian besar teknologi RAID berbasis perangkat keras. Namun, implementasi RAID perangkat lunak sering kali menyertakan dukungan untuk TRIM.

#### Windows
Windows 10 menawarkan dukungan untuk TRIM dalam volume ID SSD menggunakan opsi "optimalkan drive" saat mengonfigurasi volume RAID.

#### macOS
Driver RAID macOS tidak mendukung TRIM. Ini berlaku untuk semua versi Mac OS X dari 10.7 hingga macOS 10.12.x.

TRIM didukung untuk volume RAID (0,1,4,5 & 10) saat menggunakan aplikasi SoftRAID® pihak ketiga, termasuk dukungan TRIM dengan perangkat SSD non-Apple. (Catatan: TRIM untuk perangkat SSD non-Apple harus diaktifkan secara khusus menggunakan perintah terminal "sudo trimforce enable")

#### Linux
TRIM tersedia dengan volume RAID dalam rilis dmraid kernel Linux pasca-Januari-2011, yang mengimplementasikan dukungan "RAID perangkat keras palsu" berbantuan BIOS, dan yang sekarang melewati semua permintaan TRIM dari sistem file yang berada di larik RAID.

Jangan bingung dengan dmraid, sistem RAID perangkat lunak serba guna Linux, mdraid, memiliki dukungan eksperimental untuk TRIM berbasis batch (bukan langsung, setelah penghapusan file) pada array RAID 1 ketika sistem dikonfigurasikan untuk menjalankan utilitas mdtrim secara berkala pada sistem file (bahkan yang menyukai ext3 tanpa dukungan TRIM asli). Di versi Linux yang lebih baru, mis. Red Hat Enterprise Linux 6.5 dan seterusnya, mdraid mendukung benar-benar melewati perintah TRIM secara real-time, bukan hanya sebagai pekerjaan batch.

Namun, Red Hat menyarankan untuk tidak menggunakan perangkat lunak RAID level 1, 4, 5, dan 6 pada SSD dengan sebagian besar teknologi RAID, karena selama inisialisasi, sebagian besar daya guna pengelolaan RAID (misalnya mdadm Linux) menulis ke semua blok pada perangkat untuk memastikan bahwa checksum ( atau verifikasi drive-to-drive, dalam kasus RAID 1 dan 10) beroperasi dengan benar, menyebabkan SSD percaya bahwa semua blok selain di area cadangan sedang digunakan, menurunkan kinerja secara signifikan.

Di sisi lain, Red Hat merekomendasikan penggunaan RAID 1 atau RAID 10 untuk LVM RAID pada SSD, karena level ini mendukung TRIM ("buang" dalam terminologi Linux), dan utilitas LVM tidak menulis ke semua blok saat membuat RAID 1 atau RAID 10 volume.

#### RAID berdasar perangkat tegar
Untuk waktu yang singkat pada bulan Maret 2010, pengguna dituntun untuk percaya bahwa driver Intel Rapid Storage Technology (RST) 9.6 mendukung TRIM pada volume RAID, tetapi Intel kemudian mengklarifikasi bahwa TRIM didukung untuk pengaturan BIOS mode AHCI dan mode RAID, tetapi tidak jika drive tersebut merupakan bagian dari volume RAID.

Mulai Agustus 2012, Intel mengonfirmasi bahwa chipset seri 7 dengan driver Rapid Storage Technology (RST) 11.2 mendukung TRIM untuk RAID 0 di Microsoft Windows 7. Meskipun Intel tidak mengonfirmasi dukungan untuk chipset seri 6, TRIM pada volume RAID 0 telah terbukti bekerja pada chipset Z68, P67, dan X79 oleh penggemar perangkat keras dengan ROM opsi RAID yang dimodifikasi. Diperkirakan bahwa kurangnya dukungan resmi untuk chipset 6-series adalah karena biaya validasi atau upaya untuk mendorong konsumen untuk meningkatkan, bukan karena alasan teknis.

Pengecualian untuk kebutuhan ROM opsi yang dimodifikasi pada motherboard dengan chipset X79 adalah jika pabrikan telah menambahkan sakelar ROM; ini memerlukan ROM RST dan RST-E berada di dalam BIOS/UEFI. Ini memungkinkan ROM RST untuk digunakan sebagai pengganti ROM RST-E, memungkinkan TRIM berfungsi. Intel mencatat bahwa kinerja terbaik dapat dicapai dengan menggunakan driver dengan versi yang sama dengan ROM; misalnya, jika BIOS/UEFI memiliki ROM opsi 11.0.0.0m, driver versi 11.x harus digunakan.

### Menggunakan sistem berkas yang tidak didukung
Jika sistem file tidak secara otomatis mendukung TRIM, beberapa utilitas dapat mengirim perintah pemangkasan secara manual. Biasanya mereka menentukan blok mana yang gratis dan kemudian meneruskan daftar ini sebagai serangkaian perintah pemangkasan ke drive. Utilitas ini tersedia dari berbagai produsen (misalnya Intel, G.Skill), atau sebagai utilitas umum (misalnya "wiper" hdparm Linux sejak v9.17, atau mdtrim, seperti yang disebutkan di atas). Baik hdparm dan mdtrim menemukan blok gratis dengan mengalokasikan file besar pada sistem file dan menyelesaikan lokasi fisik yang ditetapkan.

## Dukungan perangkat keras

### ATA
Spesifikasi perintah TRIM  telah distandardisasi sebagai bagian dari standar antarmuka AT Attachment (ATA), yang dipimpin oleh Komite Teknis T13 dari Komite Internasional untuk Standar Teknologi Informasi (INCITS). TRIM diimplementasikan di bawah perintah DATA SET MANAGEMENT (opcode 06h) dari rancangan spesifikasi ACS-2. Standar ATA didukung oleh perangkat keras ATA paralel (IDE, PATA) dan serial (SATA).

Kelemahan dari perintah ATA TRIM asli adalah bahwa perintah tersebut didefinisikan sebagai perintah yang tidak dapat diantre dan oleh karena itu tidak dapat dengan mudah dicampur dengan beban kerja normal dari operasi baca dan tulis yang diantre. SATA 3.1 memperkenalkan perintah TRIM yang antre untuk mengatasi masalah ini.

Ada berbagai jenis TRIM yang ditentukan oleh SATA Words 69 dan 169 yang dikembalikan dari perintah ATA IDENTIFY DEVICE:

* TRIM non-deterministik: Setiap perintah baca ke alamat blok logis (LBA) setelah TRIM dapat mengembalikan data yang berbeda.
* TRIM deterministik (DRAT): Semua perintah yang dibaca ke LBA setelah TRIM akan mengembalikan data yang sama, atau menjadi determinasi.
* Read Zero deterministik setelah TRIM (RZAT): Semua perintah baca ke LBA setelah TRIM akan menghasilkan nol.

Ada informasi tambahan di SATA Word 105 yang menjelaskan jumlah maksimum blok 512-bita per perintah DATA SET MANAGEMENT yang dapat didukung oleh drive. Biasanya defaultnya adalah 8 (atau 4 kB) tetapi banyak drive menguranginya menjadi 1 untuk memenuhi Persyaratan Perangkat Keras Microsoft Windows untuk TRIM, waktu penyelesaian perintah tersebut tidak boleh melebihi 20 ms atau 8 ms × (jumlah entri rentang LBA), mana saja yang lebih besar, dan akan selalu kurang dari 600 ms.

Rentang LBA individual disebut Entri Rentang LBA dan diwakili oleh delapan byte. LBA dinyatakan dengan enam byte pertama Entri Rentang LBA dan Panjang Rentang adalah penghitung berbasis nol (misalnya, 0=0 dan 1=1) yang diwakili oleh dua byte sisanya. Jika panjang rentang dua byte adalah nol, maka Entri Rentang LBA akan dibuang sebagai padding. Artinya, untuk setiap blok TRIM 512 byte yang didukung perangkat, jumlah maksimumnya adalah 64 rentang 32 MB, atau 2 GB. Jika perangkat mendukung SATA Word 105 di 8 maka perangkat tersebut seharusnya dapat memangkas 16 GB dalam satu perintah TRIM (DATA SET MANAGEMENT).

### NVM Ekspres

## Disadvantages

* Some deniable encryption schemes involve making the whole disk look like random garbage. Using TRIM defeats this layer of plausible deniability as the all-zero (or all-one) blocks created easily indicate what blocks are used. It has been argued disabling TRIM might be suspicious too.
* The original version of the TRIM command has been defined as a non-queued command by the T13 subcommittee, and consequently can incur massive execution penalty if used carelessly, e.g., if sent after each filesystem delete command. The non-queued nature of the command requires the driver to first wait for all outstanding commands to be finished, issue the TRIM command, then resume normal commands. TRIM can take a lot of time to complete, depending on the firmware in the SSD, and may even trigger a garbage collection cycle. This penalty can be minimized in solutions that periodically do a batched TRIM, rather than trimming upon every file deletion, by scheduling such batch jobs for times when system utilization is minimal. This TRIM disadvantage has been overcome in Serial ATA revision 3.1 with the introduction of the Queued TRIM Command.
* Faulty drive firmware that misreports support for queued TRIM or has critical bugs in its implementation has been linked to serious data corruption in several devices, most notably Micron and Crucial's M500 and Samsung's 840 and 850 series. The data corruption has been confirmed on the Linux operating system (the only OS with queued trim support as of 1 July 2015).

Perangkat ini masuk daftar hitam di kernel Linux untuk memaksa pengiriman perintah TRIM yang tidak antre ( ) ke drive ini alih-alih perintah TRIM yang diantre:

* Micron/Crucial M500 menggunakan semua versi firmware termasuk SSD yang disertifikasi ulang oleh pabrik
* Micron M510 menggunakan firmware versi MU01
* Micron/Crucial M550 menggunakan firmware versi MU01
* Krusial MX100 menggunakan firmware versi MU01
* SSD Samsung seri 840 dan 850 menggunakan semua versi firmware

File ini juga memasukkan SuperSSpeed S238 ke dalam daftar hitam terhadap TRIM secara umum karena menyebabkan blok yang salah kehilangan data saat TRIM dikeluarkan.

 also memiliki daftar putih ke SSD:

* SSD penting
* Intel SSD tidak termasuk Intel SSD 510
* SSD mikron
* SSD Samsung
* SSD Seagate 

## Lihat juga

* Remanensi data

## Referensi

## Pranala luar

* ''Dari write() hingga chip flash'' – Penjelasan tentang bagaimana perintah TRIM memungkinkan SSD menghapus data yang tidak digunakan oleh sistem file
* ''Buku Putih Perintah TRIM'' – Buku putih yang menjelaskan tujuan dan tindakan perintah
* Paten Fusion-io "Peralatan, sistem, dan metode untuk cache tulis redundan"