Co dokładnie robią parametry Linuksa „allow-discards” i „root_trim”?

10

Wiele instrukcji związanych z dyskami SSD online mówi obecnie, że należy dodać zezwolenia na odrzucanie i root_trim = yes do GRUB_CMDLINE_LINUX. Muszę jeszcze znaleźć taki, który mówi, dlaczego powinieneś to zrobić, czyli co dokładnie (jeśli cokolwiek!) Robi te parametry. Gdzie znajduje się dokumentacja na ten temat i co mówi o celu tych dwóch parametrów?

Zgodnie z informacjami o wersji Cryptsetup 1.4.0 ,

Od jądra 3.1 urządzenia dm-crypt opcjonalnie (nie domyślnie) obsługują polecenia odrzucania bloków (TRIM). Jeśli chcesz włączyć tę operację, musisz włączyć ją ręcznie przy każdej aktywacji za pomocą opcji --allow-discards

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

ale czy jest taki sam, gdy jest przekazywany do jądra (przez GRUB_CMDLINE_LINUX)?

Edycja: Lista parametrów jądra Kernel.org nie ma (przynajmniej w styczniu 2013 r.) Żadnej z tych opcji.

Jani Uusitalo
źródło
Może zajrzyj na webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Nie daje wyjaśnień, ale szybka procedura ...
alci
1
Jak powiedziałem, sieć jest pełna instrukcji bez wyjaśnień. Jestem po wyjaśnieniach, a nie po procedurze.
Jani Uusitalo,

Odpowiedzi:

6

Z mojego zrozumienia, parametr rozruchowy root_trim=yesjest specyficzny dla Gentoo. Wewnątrz genkernelznajduje się skrypt, który szuka parametru i ustawia opcję --allow-discardsz cryptsetup (zobacz ich repozytorium git ). Ponadto znalazłem wiele raportów użytkowników Ubuntu lub Debian, którzy twierdzili, że działa bez tego root_trimparametru. Nie znalazłem też żadnych wierszy w update-initramfsskrypcie Ubuntus .

Więc w sumie to nie parametr startowy, ale bardziej parametrem cryptsetup. Dokumentację --allow-discardsmożna znaleźć na stronie podręcznika cryptsetup (8) :

--allow-discards
Zezwól na stosowanie żądań odrzucania (TRIM) dla urządzenia. Ta opcja jest ważna tylko dla create , luksOpen lub loopaesOpen .

OSTRZEŻENIE : Przed włączeniem tej opcji należy dokładnie ocenić konkretne zagrożenia bezpieczeństwa. Na przykład zezwolenie na odrzucanie na zaszyfrowanych urządzeniach może prowadzić do wycieku informacji o urządzeniu zaszyfrowanym (typ systemu plików, wykorzystana przestrzeń itp.), Jeśli odrzucone bloki można później łatwo zlokalizować na urządzeniu.

Wymagane jest jądro w wersji 3.1 lub nowszej. W przypadku starszych wersji opcja jest ignorowana.

Oparty na tym blogu na TRIM i dm-crypt , TRIM to operacja, w której górna warstwa (np. System plików) informuje urządzenie, które sektory nie są już używane (nie zawierają już prawidłowych danych) i że urządzenie nie musi przechowywać tych danych .

W systemie Linux terminologia to operacja nazywana odrzucaniem. W świecie SCSI jest to określane jako polecenie UNMAP.

Operację odrzucania można wykorzystać do dwóch celów: cienkiego administrowania (informuje, że obszar danych można zwrócić do puli alokacji) oraz do optymalizacji operacji SSD.

Odrzucanie jest najbardziej przydatne do optymalizacji SSD, ponieważ architektura wewnętrzna wykorzystuje większe bloki niż sektory i że bloki muszą zostać usunięte przed wykonaniem operacji zapisu. Informacje o sektorach, które nie muszą przechowywać danych, są bardzo przydatne, ponieważ system plików byłby w stanie efektywniej organizować bloki w taki sposób, aby zminimalizować fragmentację danych, a także wydłużyć żywotność dysku.

qbi
źródło
Więc żadna z opcji nie jest potrzebna, jeśli system plików nie jest zaszyfrowany? Dlaczego dwie opcje, jeśli wszystko, co robią, to włączenie jednego polecenia do działania?
Jani Uusitalo
Dziękujemy za wskazanie związku między parametrem jądra a opcją mount / devicemapper w zaktualizowanej odpowiedzi. +1 tym razem. :)
gertvdijk
Ta odpowiedź zaczyna wyglądać dobrze. Znalazłem także allow_discards w aktualnej dokumentacji dm-crypt ; wszystko wydaje się sugerować, że nie jest to parametr jądra, ale opcja dla celu dm-crypt device-mapper. Nadal próbuję dowiedzieć się, czy można je przekazać w wierszu poleceń systemu Linux. To by tłumaczyło instrukcje papugowane na całym świecie, w przeciwnym razie to prawdopodobnie tylko błędne informacje.
Jani Uusitalo
1
@JaniUusitalo Naprawdę nie ma sensu robić z tego (globalnego) parametru jądra. 1) naprawdę chcesz określić ten system plików / urządzenie zamiast całego systemu, 2) opcje mount / fstab pozwala to zrobić już, 3) w czasie rozruchu (zanim initramfs zamontuje twój plik /do odczytu / zapisu) ' prawdopodobnie nie będzie potrzebować tej funkcji.
gertvdijk
4
Parametryzacja jądra funkcji allow-discards może być Archism: najwyraźniej w Arch, powiadamiasz GRUB o zaszyfrowanym katalogu głównym za pomocą (np.) „Cryptdevice = / dev / mapper / root: root: allow-discards”. To, że jest pobierane przez użytkowników Ubuntu, może wynikać z tego, że wiki Archa określane jest jako „Najlepsze referencje” przez EncryptedFilesystems Ubuntu wiki .
Jani Uusitalo