Que font exactement les paramètres Linux «allow-discards» et «root_trim»?

10

De nombreuses instructions en ligne relatives aux SSD indiquent actuellement que vous devez ajouter allow- discards et root_trim = yes à votre GRUB_CMDLINE_LINUX. Je n'en ai pas encore trouvé un qui explique pourquoi vous devriez le faire, c'est-à-dire ce que font exactement (le cas échéant!) Ces paramètres. Où est la documentation à ce sujet et que dit-elle sur le but de ces deux paramètres?

Selon les notes de mise à jour de Cryptsetup 1.4.0 ,

Depuis le noyau 3.1, les périphériques dm-crypt supportent optionnellement (pas par défaut) les commandes de blocage de bloc (TRIM). Si vous souhaitez activer cette opération, vous devez l'activer manuellement à chaque activation en utilisant --allow-discards

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

mais est-il le même lorsqu'il est transmis au noyau (via GRUB_CMDLINE_LINUX)?

Edit: la liste des paramètres du noyau de Kernel.org n'a (actuellement, janvier 2013, au moins) aucune de ces options.

Jani Uusitalo
la source
Peut-être jetez un œil à webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Ne donne pas d'explication, mais une procédure rapide ...
alci
1
Comme je l'ai dit, net est plein d'instructions sans explications. Je cherche les explications, pas la procédure.
Jani Uusitalo

Réponses:

6

D'après ma compréhension, le paramètre de démarrage root_trim=yesest spécifique à Gentoo. Au sein genkernelil y a un script qui recherche le paramètre et définit l'option --allow-discardsavec cryptsetup (voir leur dépôt git ). De plus, j'ai trouvé de nombreux rapports d'utilisateurs d'Ubuntu ou de Debian qui disaient que cela fonctionnait sans le root_trimparamètre. Je n'ai également trouvé aucune ligne dans le update-initramfsscript Ubuntus .

Donc, dans l'ensemble, ce n'est pas un paramètre de démarrage, mais plutôt un paramètre pour cryptsetup. La documentation de --allow-discardsse trouve dans la page de manuel de cryptsetup (8) :

--allow-discards
Autorise l'utilisation des demandes de rejet (TRIM) pour le périphérique. Cette option n'est pertinente que pour create , luksOpen ou loopaesOpen .

AVERTISSEMENT : évaluez soigneusement les risques de sécurité spécifiques avant d'activer cette option. Par exemple, autoriser les rejets sur les appareils cryptés peut entraîner une fuite d'informations sur le périphérique de texte chiffré (type de système de fichiers, espace utilisé, etc.) si les blocs supprimés peuvent être facilement localisés ultérieurement sur le périphérique.

La version 3.1 ou plus récente du noyau est requise. Pour les versions plus anciennes, l'option est ignorée.

Basé sur ce blog sur TRIM & dm-crypt , TRIM est une opération où la couche supérieure (par exemple, le système de fichiers) informe l'appareil quels secteurs ne sont plus utilisés (ne contiennent plus de données valides) et que l'appareil n'a pas besoin de conserver ce contenu de données .

Dans la terminologie Linux, cette opération est appelée discard. Dans le monde SCSI, il s'agit de la commande UNMAP.

L'opération de suppression peut être utilisée à deux fins: l'allocation dynamique (informe que la zone de données peut être retournée au pool d'allocation) et pour l'optimisation de l'opération SSD.

Les rejets sont plus utiles pour l'optimisation SSD car l'architecture interne utilise des blocs plus grands que les secteurs et que les blocs doivent être effacés avant qu'une opération d'écriture puisse être effectuée. Les informations sur les secteurs qui n'ont pas besoin de conserver les données sont très utiles car le système de fichiers serait en mesure d'organiser plus efficacement les blocs de manière à minimiser la fragmentation des données et à augmenter la durée de vie du disque.

qbi
la source
Donc, aucune des options n'est nécessaire si le système de fichiers n'est pas chiffré? Pourquoi deux options si tout ce qu’elles font est d’activer une seule commande?
Jani Uusitalo
Merci d'avoir souligné la relation entre le paramètre du noyau et l'option mount / devicemapper dans votre réponse mise à jour. +1 cette fois. :)
gertvdijk
Cette réponse commence à bien paraître. J'ai également trouvé allow_discards dans la documentation actuelle de dm-crypt ; tout semble impliquer que ce n'est pas un paramètre du noyau mais une option pour la cible du mappeur de périphériques dm-crypt. J'essaie toujours de savoir si ceux-ci peuvent être transmis sur la ligne de commande Linux. Cela expliquerait les instructions réparties partout, sinon ce n'est probablement que de la désinformation.
Jani Uusitalo
1
@JaniUusitalo Cela n'a vraiment aucun sens pour moi d'en faire un paramètre de noyau (global). 1) vous voulez vraiment spécifier ce système de fichiers / périphérique plutôt que l'ensemble du système, 2) les options de montage / fstab vous le permettent déjà, 3) au démarrage (avant que les initramfs aient monté votre /en lecture / écriture) vous ' il est peu probable que vous ayez besoin de cette fonctionnalité.
gertvdijk
4
Le paramétrage du noyau de allow-discards pourrait être un Archism: apparemment dans Arch, vous notifiez GRUB d'une racine cryptée avec (par exemple) "cryptdevice = / dev / mapper / root: root: allow-discards". Ceci étant repris par les utilisateurs d'Ubuntu peut être dû au fait que le wiki d' Arch est appelé "meilleure référence" par les systèmes de fichiers EncryptedFiles d'Ubuntu .
Jani Uusitalo