Apa sebenarnya yang dilakukan parameter Linux 'allow-discards' dan 'root_trim'?

10

Banyak instruksi terkait SSD online saat ini mengatakan Anda harus menambahkan allow-discards dan root_trim = yes ke GRUB_CMDLINE_LINUX Anda. Saya belum menemukan satu yang mengatakan mengapa Anda harus melakukan itu, yaitu apa tepatnya (jika ada!) Yang dilakukan oleh parameter tersebut. Di mana dokumentasi tentang hal ini dan apa yang dikatakannya tentang tujuan kedua parameter tersebut?

Menurut Catatan Rilis Cryptsetup 1.4.0 ,

Sejak kernel 3.1, perangkat dm-crypt secara opsional (tidak secara default) mendukung perintah blokir buang (TRIM). Jika Anda ingin mengaktifkan operasi ini, Anda harus mengaktifkannya secara manual pada setiap aktivasi menggunakan --allow-discards

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

tetapi apakah itu sama ketika dilewatkan ke kernel (via GRUB_CMDLINE_LINUX)?

Sunting: Daftar parameter kernel Kernel.org tidak (saat ini, Jan 2013, setidaknya) memiliki salah satu dari opsi ini.

Jani Uusitalo
sumber
Mungkin melihat webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Tidak memberikan penjelasan, tapi prosedur cepat ...
alci
1
Seperti yang saya katakan, net penuh dengan instruksi tanpa penjelasan. Saya mencari penjelasan, bukan prosedur.
Jani Uusitalo

Jawaban:

6

Dari pemahaman saya, parameter boot root_trim=yesspesifik untuk Gentoo. Di genkerneldalamnya ada skrip yang mencari parameter dan mengatur opsi --allow-discardsdengan cryptsetup (lihat repositori git mereka ). Selanjutnya saya menemukan banyak laporan pengguna Ubuntu atau Debian yang mengatakan bahwa itu berfungsi tanpa root_trimparameter. Saya juga tidak menemukan baris dalam update-initramfsskrip Ubuntus .

Jadi semuanya bukan parameter boot, tapi lebih ke parameter cryptsetup. Dokumentasi --allow-discardsdapat ditemukan di halaman manual cryptsetup (8) :

--allow-discards
Memungkinkan penggunaan permintaan discards (TRIM) untuk perangkat. Opsi ini hanya relevan untuk create , luksOpen atau loopaesOpen .

PERINGATAN : Nilai risiko keamanan spesifik dengan cermat sebelum mengaktifkan opsi ini. Sebagai contoh, membiarkan discards pada perangkat yang dienkripsi dapat menyebabkan kebocoran informasi tentang perangkat ciphertext (tipe sistem file, ruang yang digunakan, dll.) Jika blok yang dibuang dapat dengan mudah ditemukan di perangkat nanti.

Diperlukan versi kernel 3.1 atau lebih baru. Untuk versi yang lebih lama opsi ini diabaikan.

Berdasarkan blog ini di TRIM & dm-crypt , TRIM adalah operasi di mana lapisan atas (misalnya sistem file) memberi tahu perangkat sektor mana yang tidak lagi digunakan (tidak mengandung data yang valid lagi) dan bahwa perangkat tidak perlu menyimpan konten data itu .

Dalam terminologi Linux, operasi ini disebut discard. Di dunia SCSI itu disebut sebagai perintah UNMAP.

Operasi discard dapat digunakan untuk dua tujuan: thin Provisioning (menginformasikan bahwa area data dapat dikembalikan ke kumpulan alokasi) dan untuk optimalisasi operasi SSD.

Buang paling berguna untuk optimasi SSD karena arsitektur internal menggunakan blok yang lebih besar daripada sektor dan bahwa blok harus dihapus sebelum operasi penulisan dapat dilakukan. Informasi tentang sektor-sektor yang tidak perlu menyimpan data sangat berguna karena sistem file akan dapat mengatur blok secara lebih efektif sedemikian rupa sehingga fragmentasi data diminimalkan dan masa pakai disk juga akan meningkat.

qbi
sumber
Jadi, tidak ada pilihan yang diperlukan jika sistem file tidak dienkripsi? Mengapa dua opsi jika semua yang mereka lakukan adalah mengaktifkan satu perintah untuk bekerja?
Jani Uusitalo
Terima kasih telah menunjukkan hubungan antara parameter kernel dan opsi mount / devicemapper dalam jawaban Anda yang diperbarui. +1 saat ini. :)
gertvdijk
Jawaban ini mulai terlihat bagus. Saya juga menemukan allow_discards dalam dokumentasi saat ini dm-crypt ; semuanya tampaknya menyiratkan itu bukan parameter kernel tetapi opsi untuk target device-mapper dm-crypt. Saya masih mencoba mencari tahu apakah itu dapat dilewatkan pada baris perintah linux. Itu akan menjelaskan instruksi di seluruh burung beo, jika tidak, itu mungkin hanya informasi yang salah.
Jani Uusitalo
1
@JaniUusitalo Benar-benar tidak masuk akal bagi saya untuk menjadikan ini sebagai kernel (global) kernel. 1) Anda benar-benar ingin menentukan filesystem / perangkat khusus ini daripada sistem, 2) opsi mount / fstab memungkinkan Anda melakukannya, 3) pada saat boot (sebelum initramfs me-mount Anda /sebagai baca / tulis), Anda kembali tidak membutuhkan fungsi ini.
gertvdijk
4
Parameterisasi kernel dari allow-discards dapat berupa Archism: tampaknya di Arch, Anda memberi tahu GRUB tentang root yang dienkripsi dengan (mis.) "Cryptdevice = / dev / mapper / root: root: allow-discards". Ini diambil oleh pengguna Ubuntu mungkin karena wiki Arch disebut sebagai "Referensi terbaik" oleh Ubuntu wiki's EncryptedFilesystems .
Jani Uusitalo