Что именно делают параметры Linux allow-discards и root_trim?

10

Многие онлайн-инструкции, касающиеся SSD, в настоящее время говорят, что вы должны добавить allow- discards и root_trim = yes в свой GRUB_CMDLINE_LINUX. Мне еще предстоит найти такой, который говорит, почему вы должны это делать, то есть, что именно (если что-нибудь!) Делают эти параметры. Где находится документация по этому вопросу и что говорится о назначении этих двух параметров?

В соответствии с примечаниями к выпуску Cryptsetup 1.4.0 ,

Начиная с ядра 3.1, устройства dm-crypt опционально (не по умолчанию) поддерживают команды отбрасывания блоков (TRIM). Если вы хотите включить эту операцию, вы должны включить ее вручную при каждой активации, используя --allow-discards

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

но это то же самое, когда передается в ядро ​​(через GRUB_CMDLINE_LINUX)?

Изменить: Список параметров ядра Kernel.org не имеет (в настоящее время, по крайней мере, январь 2013 г.) ни одного из этих параметров.

Яни Ууситало
источник
Может быть, посмотрите на webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html Не дает объяснений, но быстрая процедура ...
alci
1
Как я уже сказал, в сети полно инструкций без объяснений. Я после объяснений, а не процедуры.
Яни Ууситало

Ответы:

6

Насколько я понимаю, параметр загрузки root_trim=yesявляется специфичным для Gentoo. Внутри genkernelесть скрипт, который ищет параметр и устанавливает опцию --allow-discardsс помощью cryptsetup (см. Их репозиторий git ). Кроме того, я нашел много отчетов о пользователях Ubuntu или Debian, в которых говорилось, что он работает без root_trimпараметра. Я также не нашел никаких строк в update-initramfsсценарии Ubuntus .

В общем, это не параметр загрузки, а скорее параметр cryptsetup. Документация --allow-discardsможет быть найдена в man- странице cryptsetup (8) :

--allow-discards
Разрешить использование запросов Discards (TRIM) для устройства. Эта опция актуальна только для create , luksOpen или loopaesOpen .

ПРЕДУПРЕЖДЕНИЕ . Перед включением этой опции тщательно оцените конкретные риски безопасности. Например, разрешение сброса на зашифрованных устройствах может привести к утечке информации об устройстве зашифрованного текста (тип файловой системы, используемое пространство и т. Д.), Если сброшенные блоки можно будет легко разместить на устройстве позже.

Требуется версия ядра 3.1 или более поздняя. Для более старых версий этот параметр игнорируется.

Основанный на этом блоге на TRIM & dm-crypt , TRIM - это операция, в которой верхний уровень (например, файловая система) сообщает устройству, какие сектора больше не используются (больше не содержат действительных данных) и что устройству не нужно сохранять этот контент данных. ,

В терминологии Linux эта операция называется сбросом. В мире SCSI это упоминается как команда UNMAP.

Операция сброса может использоваться для двух целей: тонкая инициализация (сообщает, что область данных может быть возвращена в пул распределения) и для оптимизации работы SSD.

Сброс наиболее полезен для оптимизации SSD, поскольку внутренняя архитектура использует блоки большего размера, чем сектора, и что блоки должны быть удалены перед выполнением операции записи. Информация о секторах, в которых нет необходимости хранить данные, очень полезна, поскольку файловая система сможет более эффективно организовывать блоки таким образом, чтобы минимизировать фрагментацию данных, а также увеличить время жизни диска.

QBi
источник
Таким образом, ни один из параметров не требуется, если файловая система не зашифрована? Зачем два варианта, если все, что они делают, это позволяют одной команде работать?
Яни Ууситало
Спасибо за указание на связь между параметром ядра и опцией mount / devicemapper в вашем обновленном ответе. +1 на этот раз. :)
gertvdijk
Этот ответ начинает хорошо выглядеть. Я также нашел allow_discards в текущей документации dm-crypt ; Кажется, все подразумевает, что это не параметр ядра, а опция для цели устройства устройства отображения dm-crypt. Я все еще пытаюсь выяснить, можно ли их передать в командной строке Linux. Это объяснило бы инструкции, попутные повсюду, иначе это, вероятно, просто дезинформация.
Яни Ууситало
1
@JaniUusitalo Мне действительно не имеет смысла делать этот (глобальный) параметр ядра. 1) вы действительно хотите указать эту файловую систему / устройство, а не общесистемную, 2) параметры mount / fstab позволяют вам это уже делать, 3) во время загрузки (до того, как initramfs смонтирует ваш файл /как для чтения / записи), вы ' вряд ли понадобится эта функциональность.
gertvdijk
4
Параметризацией ядра allow-discards может быть Archism: очевидно, в Arch вы уведомляете GRUB о зашифрованном корне с помощью (например) «cryptdevice = / dev / mapper / root: root: allow-discards». Это может быть замечено пользователями Ubuntu, возможно, из-за того, что вики Arch упоминается как «Лучший справочник» EncryptedFilesystems вики Ubuntu .
Яни Ууситало