Apa itu TRIM sebenarnya?

14

Dari halaman Wikipedia TRIM, saya mendapat kesan bahwa TRIM diperkenalkan untuk menurunkan penulisan ke SSD, tetapi menulis surat sistem file dengan mengambil kasus blok mana yang tidak digunakan.

Jika itu benar, apakah itu berarti, bahwa SSD yang tidak menggunakan TRIM menulis nol pada blok, ketika file dihapus, untuk membiarkan SSD tahu blok bebas?

Baca ini

Sistem file dalam tamu cenderung untuk tidak menggunakan kembali blok yang berarti bahwa meskipun sistem file tetap kecil relatif terhadap ukuran gambar virtual, ukuran gambar aktual cenderung tumbuh hingga mencapai ukuran maksimum.

membuat saya berpikir, SSD jangan ditimpa dengan nol? Atau apakah sistem file dalam tamu, sesuatu yang sama sekali berbeda?

Sandra
sumber

Jawaban:

16

Perangkat memori flash (apa yang digunakan untuk SSD saat ini) tidak dapat menulis data sembarang waktu; sebelum menulis di sel (biasanya 4KB) harus dihapus terlebih dahulu. Sayangnya, operasi penghapusan sangat lambat; itu sebabnya perangkat flash jauh lebih lambat daripada drive magnetik, meskipun tidak memiliki bagian yang bergerak.

SSD modern menyembunyikan waktu penghapusan dengan mempertahankan satu set sel yang telah dihapus, yang berarti bahwa perintah tulis tidak akan segera menimpa data yang ada, sebagai gantinya pengontrol drive mengambil sel yang dihapus, memetakannya kembali, dan menulis dengan data baru. Itu (dan beberapa strategi cache tulis-pikir) memberikan drive speedup besar , sangat melampaui drive magnetik.

Untuk memastikan bahwa selalu ada satu set sel yang lebih dulu, setiap kali sel tidak diperlukan, drive menjadwalkannya untuk penghapusan latar belakang dan menambah daftar sel biaya.

Sayangnya, sistem file yang ada tidak repot-repot memberi tahu drive ketika suatu sektor bebas. Bagaimanapun juga, drive itu seharusnya hanyalah repositori yang bodoh. Menghapus file atau operasi lain yang menandai suatu sektor bebas dari sudut pandang filesystem hanya merupakan tanda pada beberapa struktur metadata. Sektor itu sendiri tidak tersentuh. Bahkan jika filesystem membersihkannya dengan menuliskan angka nol di atasnya, drive tidak dapat mengetahui apakah itu berarti sektor tersebut bebas, atau jika pengguna menginginkan angka nol pada file. Setelah beberapa saat, drive tidak akan memiliki sel bebas untuk dihapus sebelum menulis; dan kinerja menurun secara tragis.

Instruksi TRIM dengan cepat dirancang dan diadopsi oleh sebagian besar sistem file yang saat ini dipelihara. Ini adalah sinyal sederhana yang digunakan sistem file untuk memberi tahu drive bahwa konten suatu sektor tidak penting lagi. Segera setelah semua sektor yang dipetakan pada sel bebas, pengontrol SSD membuka peta sel dan menjadwalkannya untuk dihapus. Jika tuan rumah membaca sektor-sektor itu, SSD tidak akan repot mengambil dari Flash, ia segera merespons dengan nol; tetapi efek yang paling penting adalah menjaga agar daftar sel yang lebih dulu selalu diisi ulang.

Namun, sebagian besar SSD mengekspos kapasitas yang lebih kecil dari ukuran fisik memori Flash, kadang-kadang serendah 75%. Itu memungkinkannya untuk menyimpan beberapa sel yang tidak digunakan bahkan pada sistem penuh 100%, sehingga (lebih) menulis sektor yang digunakan masih cepat.

Javier
sumber
Menarik. Saya secara konseptual tahu tentang bagaimana TRIM bekerja tetapi bertanya-tanya tentang berapa banyak penyimpanan yang akan diungkapkan oleh SSD. Sekarang saya ingin melihat apakah data itu diterbitkan di mana saja untuk SSD yang diberikan ...
Michael B
Jumlah sel yang dipesan biasanya diterbitkan. Biasanya antara 5 dan 10% untuk drive konsumen yang lebih murah, 20% + untuk drive konsumen yang lebih tinggi. Enterprise Flash Drives (EFDs) cenderung memiliki cadangan di mana saja dari 100% hingga 400%; karenanya mengapa mereka sangat mahal, mereka menyimpan cadangan besar ini karena menulis ke lokasi memori flash menghancurkan lokasi sedikit setiap waktu. Menulis aplikasi berat, biasanya ditemukan di lingkungan server, akan membunuh sebagian besar SSD konsumen dengan cepat.
Chris S
"menulis di sel (biasanya 4KB)" - Anda menyalahgunakan konsep "sel" dibandingkan dengan penggunaan konvensional untuk memori flash. "Sel" flash menyimpan hanya satu (atau beberapa) bit. Penggunaan "sel" Anda tampaknya sesuai dengan blok (hapus) yang jauh lebih besar (bisa 128K), seperti yang biasanya dijelaskan dalam lembar data IC flash. Organisasi data adalah sel <sektor <halaman <blok <pesawat <chip.
serbuk kayu
8

TRIM diperkenalkan sehingga Sistem Operasi (Sistem File dalam OS) dapat berkomunikasi dengan media penyimpanan ATA sehingga suatu sektor tidak lagi digunakan oleh sistem file. Ini tidak ada hubungannya dengan menulis ke disk.

TRIM tidak menjamin sektor ini memusatkan perhatian pada media. Ini menjamin ketika sistem file meminta pembacaan dari sektor tersebut bahwa nol dikembalikan (perhatikan bahwa karena SSD tahu sektor tersebut bernilai nol, maka ia akan mengembalikannya terlepas dari apa yang sebenarnya disimpan di media; dimungkinkan untuk memulihkan) data dari disk yang sederhana telah dipangkas, meskipun biasanya SSD benar-benar menghapus memori).

Sistem file cenderung mendistribusikan tulisan mereka (karena berbagai alasan, mulai dari upaya leveling tulis, pengumpulan sampah, hingga pengacakan lokasi penyimpanan, dan banyak lagi). Karena itu, jika media tidak mengetahui sektor mana yang tidak digunakan sistem file, cukup menuliskan angka nol tidak berarti sektor tersebut tidak digunakan, maka pada akhirnya harus mengasumsikan bahwa seluruh disk digunakan.

Untuk SSD asumsi ini berarti bahwa suatu sektor harus dihapus pada waktu tulis, mengurangi kecepatan tulis; alih-alih menghapus lokasi memori pada saat file dihapus. Mirip dengan file disk virtual dalam sistem virtualisasi, file disk dinamis pada akhirnya akan mencakup kapasitas penuh disk virtual. Jika sistem virtualisasi mengimplementasikan TRIM maka ia akan tahu kapan suatu sektor tidak lagi digunakan, dan karenanya disk dinamis tidak perlu melacak lokasi itu.

Chris S
sumber
Apakah itu berarti, bahwa TRIM diperkenalkan untuk memberi tahu SSD sektor mana yang digunakan, sehingga dapat menempatkan data baru pada sektor yang telah lebih sedikit digunakan?
Sandra
1
SSD hanya menggunakan TRIM untuk mengetahui kapan suatu sektor tidak lagi dibutuhkan. Itu tidak menjamin leveling tulis atau fitur lain yang mungkin diterapkan oleh media penyimpanan. Yang mengatakan, sebagian besar SSD menggunakannya untuk meratakan penulisan, pengumpulan sampah (dalam media flash, menghapus sektor yang tidak digunakan), dan menyimpan daftar sektor bebas untuk meningkatkan kinerja penulisan).
Chris S