'Allow-discards' ve 'root_trim' Linux parametreleri tam olarak ne yapar?


10

Çevrimiçi olarak SSD ile ilgili birçok talimat , GRUB_CMDLINE_LINUX'unuza allow- discards ve root_trim = yes eklemeniz gerektiğini söylüyor . Bunu neden yapmanız gerektiğini söyleyen bir tane bulmadım , yani tam olarak (eğer bir şey varsa!) Bu parametrelerin ne yaptığını. Bununla ilgili belgeler nerede ve bu iki parametrenin amacı hakkında ne diyor?

Göre cryptsetup 1.4.0 Sürüm Notları ,

Çekirdek 3.1'den beri, dm-crypt aygıtları isteğe bağlı olarak (varsayılan olarak değil) blok silme (TRIM) komutlarını destekler. Bu işlemi etkinleştirmek istiyorsanız, --allow-disards kullanarak her etkinleştirme işleminde manuel olarak etkinleştirmeniz gerekir.

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

fakat çekirdeğe aktarıldığında aynı mı (GRUB_CMDLINE_LINUX aracılığıyla)?

Düzenleme: Kernel.org'un çekirdek parametreleri listesi (şu anda Ocak 2013, en azından) bu seçeneklerden hiçbirine sahip değil.


Belki webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html bir göz atın ama açıklama değil, hızlı bir prosedür ...
alci

1
Dediğim gibi net açıklama olmadan talimatlarla dolu. Ben açıklamaların peşindeyim, prosedürden değil.
Jani Uusitalo

Yanıtlar:


6

Anladığım kadarıyla boot parametresi root_trim=yesGentoo'ya özgüdür. İçinde genkernelparametreyi arayan ve --allow-discardscryptsetup ile seçeneği ayarlayan bir komut dosyası vardır ( git deposuna bakın ). Ayrıca, root_trimparametre olmadan çalıştığını söyleyen Ubuntu veya Debian kullanıcılarının birçok raporunu buldum . Ayrıca Ubuntus update-initramfskomut dosyasında hiç satır bulamadım .

Sonuçta hiçbir önyükleme parametresi değil, daha çok bir parametredir cryptsetup. Dokümantasyonu --allow-discards, kripto kurulumunun (8) kılavuzunda bulunabilir :

--allow-discards Aygıt için ıskarta
(TRIM) isteklerinin kullanılmasına izin ver. Bu seçenek yalnızca create , luksOpen veya loopaesOpen için geçerlidir .

UYARI : Bu seçeneği etkinleştirmeden önce belirli güvenlik risklerini dikkatle değerlendirin. Örneğin, atılan bloklar daha sonra cihaza kolayca yerleştirilebiliyorsa, şifreli cihazlarda atılmaya izin vermek, şifre metni cihazı (dosya sistemi türü, kullanılan alan vb.) Hakkında bilgi sızıntısına neden olabilir.

Çekirdek sürüm 3.1 veya daha yenisi gereklidir. Daha eski sürümler için bu seçenek yoksayılır.

TRIM & dm-crypt hakkındaki bu bloga dayanarak TRIM, üst katmanın (örneğin dosya sistemi) cihaza hangi sektörlerin artık kullanılmadığını (artık geçerli veri içermediğini) bildirdiği ve cihazın bu veri içeriğini tutması gerekmediği bir işlemdir. .

Linux terminolojisinde bu işlem atma denir. SCSI dünyasında buna UNMAP komutu denir.

Atma işlemi iki amaç için kullanılabilir: ince Hazırlama (veri alanının ayırma havuzuna döndürülebileceğini bildirir) ve SSD işlemi optimizasyonu için.

Dahili mimari, sektörlerden daha büyük bloklar kullandığından ve bir yazma işlemi gerçekleştirilmeden önce blokların silinmesi gerektiğinden, SSD optimizasyonu için kullanışlıdır. Veri sistemi tutması gerekmeyen sektörler hakkında bilgi çok yararlıdır, çünkü dosya sistemi blokları veri parçalanması en aza indirilecek ve disk ömrü uzayacak şekilde daha etkin bir şekilde organize edebilecektir.


Dolayısıyla, dosya sistemi şifrelenmemişse seçeneklerden hiçbirine gerek yoktur? Tek yaptıkları bir komutun çalışmasını sağlamaksa neden iki seçenek?
Jani Uusitalo

Güncellenmiş yanıtınızdaki çekirdek parametresi ile mount / devicemapper seçeneği arasındaki ilişkiyi belirttiğiniz için teşekkür ederiz. Bu sefer + 1'leyin. :)
gertvdijk

Bu cevap iyi görünmeye başlıyor. Ayrıca dm- crypt'in geçerli belgelerinde allow_discards buldum ; her şey bunun bir çekirdek parametresi değil, dm-crypt cihaz eşleyici hedefi için bir seçenek olduğu anlamına geliyor. Hala bu linux komut satırında geçirilip geçirilemeyeceğini bulmaya çalışıyorum. Bu, her yerde papağan talimatlarını açıklar, aksi takdirde muhtemelen yanlış bilgi verir.
Jani Uusitalo

1
@JaniUusitalo Bunu (küresel) bir çekirdek parametresi yapmak benim için gerçekten mantıklı değil. 1) gerçekten sistem genelinde değil, bu dosya sistemine / cihaza özgü belirtmek istiyorsunuz, 2) mount / fstab seçenekleri bunu zaten yapmanıza izin veriyor, 3) açılışta (initramfs /okuma / yazma olarak monte etmeden önce ) bu işlevselliğe ihtiyaç duyma olasılığı düşüktür.
gertvdijk

4
Allow-discard'ların çekirdek parametrelemesi Archism olabilir: Görünüşe göre Arch'de şifrelenmiş bir kökün GRUB'una (örneğin) "cryptdevice = / dev / mapper / root: root: allow-discards" ile bildirirsiniz. Bu Ubuntu kullanıcıları tarafından alınmak Arch'ın wiki'sinin Ubuntu wiki'nin EncryptedFilesystems tarafından "En iyi referans" olarak adlandırılmasından kaynaklanıyor olabilir .
Jani Uusitalo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.