Вредят ли установщики дистрибутивов SSD-накопителям?

Вредят ли установщики дистрибутивов SSD-накопителям?

По данным Intel, важно, чтобы блоки не отбрасывались при создании файловой системы Linux на твердотельном диске. В документе указано, что поведение по умолчанию ( mke2fsв марте 2015 г.) — не отбрасывать блоки. Однако текущая mke2fsстраница руководства гласит, что:

отказаться:Попытайтесь сбросить блоки во время mkfs (сброс блоков изначально полезен на твердотельных устройствах и разреженных/тонко-выделенных хранилищах). Когда устройство объявляет, что сброс также обнуляет данные (любое последующее чтение после сброса и перед записью возвращает ноль), то пометьте все еще не обнуленные таблицы inode как обнуленные. Это значительно ускоряет инициализацию файловой системы.Это установлено по умолчанию..

Когда я форматирую SSD вручную, я могу предотвратить отбрасывание блоков во время форматирования, добавив -E nodiscardв mke2fsкомандную строку, но поскольку установщики дистрибутивов автоматические, сделать это невозможно. Стоит ли об этом беспокоиться?

решение1

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

Утверждается, что ext4 не сбрасывает данные во время mkfs...

Основные файловые системы:

  • ext4 — расширенная опция по умолчанию — не отбрасывать блоки во время создания файловой системы, сохраните ее и не добавляйте расширенную опцию «отбрасывать», хотя в некоторой информации вам будет предложено сделать это.
  • xfs – в mkfs.xfs добавьте опцию –K, чтобы не отбрасывать блоки.

...и все же это происходит. Это первое, что он делает.

# mkfs.ext4 /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Discarding device blocks: done
Creating filesystem [...]

Поэтому, если вы не хотите сбрасывать все данные, вам необходимо активно предотвратить это, для xfs используя mkfs.xfs -K, как предлагается, для ext4 с помощью mkfs.ext4 -E nodiscard.

# mkfs.ext4 -E nodiscard /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem [...]

Я не знаю, менялось ли поведение по умолчанию когда-либо. Насколько я могу судить, оно всегда было по умолчанию. До того, как появились опции -E discard,nodiscard, была также опция -K для сохранения данных (отключение default-on discard) без соответствующей опции для включения discard, если бы она была отключена по умолчанию.

На странице руководства когда-то утверждалось, что nodiscard является значением по умолчанию, но я не вижу отражения этого в коде где-либо в истории коммитов, так что, возможно, это связано с ошибкой документации.

mke2fs: Отменить опцию -K, ввести discard/nodiscard

(На самом деле, в этом коммите одновременно утверждалось, что discard и nodiscard являются значениями по умолчанию.)

Было бы здорово, если бы nodiscard был по умолчанию, а fstrim не был бы доступен до следующей недели. Linux слишком быстро сбрасывает ваши данные. Отформатируйте неправильное устройство, и даже если вы сразу заметите свою ошибку, будет уже слишком поздно выполнять какое-либо восстановление данных.

решение2

Сразу скажу: не особо верю.

Этот документ устарел и может быть неточным.

Кроме того, это может быть просто неверно; исторически было много недопонимания по этому поводу, и люди, пишущие руководства, не обязательно те же самые, что и люди, вносящие вклад в ядро ​​Linux из той же компании. Ситуация действительно сложная — оптимизация для одного SSD может быть худшим, что можно сделать для другого, и производители чипсетов не нашли способа сообщить предпочтения своих контроллеров.
Однако функциональность сброса NVMe давно стандартизирована (Intel участвовала — на самом деле, доминировала — в этом), и это ее предполагаемое использование, поэтому я был бы довольно удивлен, если бы она не была «хорошей».

В целом, использование discard дает SSD больше информации — что он с ней делает, зависит от SSD. Так что, работая хуже с большим количеством информации, которую вы могли бы просто игнорировать: это на самом деле проблема прошивки контроллера SSD, а не проблема драйвера. Держу пари, что Intel, будучи очень заинтересованной в хорошей поддержке в центрах обработки данных Linux, давно исправила эту проблему.

Связанный контент