Was genau machen die Linux-Parameter 'allow-discards' und 'root_trim'?

10

In vielen Online-Anweisungen zu SSD heißt es derzeit, dass Sie Ihrem GRUB_CMDLINE_LINUX allow- discards und root_trim = yes hinzufügen sollten. Ich habe noch keinen gefunden, der besagt, warum Sie das tun sollten, dh was genau (wenn überhaupt!) Diese Parameter tun. Wo ist die Dokumentation dazu und was sagt sie über den Zweck dieser beiden Parameter aus?

Laut Cryptsetup 1.4.0 Release Notes ,

Seit Kernel 3.1 unterstützen dm-crypt-Geräte optional (nicht standardmäßig) TRIM-Befehle (Block Discards). Wenn Sie diesen Vorgang aktivieren möchten, müssen Sie ihn bei jeder Aktivierung mit --allow-discards manuell aktivieren

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

Aber ist es dasselbe, wenn es an den Kernel übergeben wird (über GRUB_CMDLINE_LINUX)?

Bearbeiten: Die Liste der Kernel-Parameter von Kernel.org bietet keine dieser Optionen (derzeit mindestens Januar 2013).

Jani Uusitalo
quelle
Vielleicht werfen Sie einen Blick auf webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Gibt keine Erklärung, aber eine schnelle Vorgehensweise ...
alci
1
Wie gesagt, das Netz ist voller Anweisungen ohne Erklärungen. Ich bin nach den Erklärungen, nicht nach dem Verfahren.
Jani Uusitalo

Antworten:

6

Nach meinem Verständnis ist der Boot-Parameter root_trim=yesGentoo-spezifisch. Darin genkernelbefindet sich ein Skript, das nach dem Parameter sucht und die Option --allow-discardsmit cryptsetup festlegt (siehe das Git-Repository ). Außerdem habe ich viele Berichte von Ubuntu- oder Debian-Benutzern gefunden, die besagten, dass es ohne den root_trimParameter funktioniert . Ich habe auch keine Zeilen im Ubuntus- update-initramfsSkript gefunden.

Alles in allem handelt es sich also nicht um einen Boot-Parameter, sondern eher um einen Parameter cryptsetup. Die Dokumentation --allow-discardszu finden Sie in der Manpage von cryptsetup (8) :

--allow-discards Ermöglicht die
Verwendung von TRIM-Anforderungen (Discards) für das Gerät. Diese Option ist nur für create , luksOpen oder loopaesOpen relevant .

WARNUNG : Beurteilen Sie die spezifische Sicherheitsrisiken sorgfältig durch, bevor Sie diese Option aktivieren. Das Zulassen von Verwerfungen auf verschlüsselten Geräten kann beispielsweise zum Verlust von Informationen über das Chiffretext-Gerät (Dateisystemtyp, verwendeter Speicherplatz usw.) führen, wenn die verworfenen Blöcke später problemlos auf dem Gerät gefunden werden können.

Kernel Version 3.1 oder neuer ist erforderlich. Bei älteren Versionen wird die Option ignoriert.

Basierend auf diesem Blog über TRIM & dm-crypt ist TRIM ein Vorgang, bei dem die obere Schicht (z. B. das Dateisystem) das Gerät darüber informiert, welche Sektoren nicht mehr verwendet werden (keine gültigen Daten mehr enthalten) und dass das Gerät diesen Dateninhalt nicht behalten muss .

In der Linux-Terminologie wird diese Operation als Verwerfen bezeichnet. In der SCSI-Welt wird es als UNMAP-Befehl bezeichnet.

Die Discard-Operation kann für zwei Zwecke verwendet werden: Thin Provisioning (informiert darüber, dass der Datenbereich an den Zuordnungspool zurückgegeben werden kann) und für die Optimierung der SSD-Operation.

Das Verwerfen ist für die SSD-Optimierung am nützlichsten, da die interne Architektur größere Blöcke als Sektoren verwendet und die Blöcke gelöscht werden müssen, bevor eine Schreiboperation ausgeführt werden kann. Informationen zu Sektoren, in denen keine Daten gespeichert werden müssen, sind sehr nützlich, da das Dateisystem Blöcke effektiver so organisieren kann, dass die Datenfragmentierung minimiert und auch die Lebensdauer der Festplatte erhöht wird.

qbi
quelle
Also wird keine der Optionen benötigt, wenn das Dateisystem nicht verschlüsselt ist? Warum zwei Optionen, wenn nur ein Befehl aktiviert werden soll?
Jani Uusitalo
Vielen Dank, dass Sie in Ihrer aktualisierten Antwort auf die Beziehung zwischen dem Kernel-Parameter und der Option mount / devicemapper hingewiesen haben. Diesmal +1. :)
gertvdijk
Diese Antwort sieht langsam gut aus. Ich habe allow_discards auch in der aktuellen Dokumentation von dm-crypt gefunden . Alles scheint zu implizieren, dass es sich nicht um einen Kernel-Parameter handelt, sondern um eine Option für das Ziel dm-crypt device-mapper. Ich versuche immer noch herauszufinden, ob diese über die Linux-Befehlszeile übergeben werden können. Das würde die Anweisungen erklären, die überall nachgezeichnet wurden, sonst handelt es sich wahrscheinlich nur um Fehlinformationen.
Jani Uusitalo
1
@JaniUusitalo Es macht für mich wirklich keinen Sinn, dies zu einem (globalen) Kernel-Parameter zu machen. 1) Sie möchten dieses Dateisystem / gerätespezifisch und nicht systemweit angeben. 2) Mit den Optionen mount / fstab können Sie dies bereits tun. 3) Sie werden beim Booten (bevor das initramfs Ihre /als Lese- / Schreibzugriff bereitgestellt hat ) Sie ' Diese Funktionalität wird wahrscheinlich nicht benötigt.
Gertvdijk
4
Die Kernel-Parametrisierung von Zulassungs-Discards könnte ein Archismus sein: Anscheinend benachrichtigen Sie GRUB in Arch über einen verschlüsselten Root mit (z. B.) "cryptdevice = / dev / mapper / root: root: allow-discards". Dies wird möglicherweise von Ubuntu-Benutzern aufgegriffen, weil das Wiki von Arch von EncryptedFilesystems des Ubuntu-Wikis als "Beste Referenz" bezeichnet wird .
Jani Uusitalo