Ubuntu по умолчанию не использует твердотельные накопители TRIM: почему бы и нет, и как это сделать самостоятельно

Ubuntu хочет включить TRIM для твердотельных накопителей по умолчанию в Ubuntu 14.04. Другими словами, Ubuntu еще не использует TRIM, поэтому ваш SSD со временем замедляется. Но почему Ubuntu уже не использует TRIM?

Эта новость, вероятно, станет неожиданностью для многих людей, которые предположили, что Ubuntu и другие дистрибутивы Linux уже используют TRIM. TRIM предотвращает замедление работы твердотельных накопителей и является необходимой частью обслуживания твердотельных накопителей.

Почему TRIM важен

Мы рассмотрели, почему TRIM важна прежде. Когда вы удаляете файл на старом магнитном жестком диске, компьютер просто помечает этот файл как удаленный. Данные файла остаются на жестком диске, поэтому удаленные файлы можно восстановить. Компьютер в конечном итоге перезапишет удаленные файлы, когда перезаписывает их сектора новыми данными.

Твердотельные накопители (SSD) работают по-другому. Всякий раз, когда вы записываете файл на SSD, компьютер должен сначала стереть все данные в секторах, в которые он записывает данные. Он не может просто «перезаписать» сектора за одну операцию – он должен сначала очистить их, а затем записать в пустые сектора.

Это означает, что SSD замедлится со временем. Запись в сектора SSD будет быстрой с первого раза. После того, как вы удалите некоторые файлы и попытаетесь записать их снова, это займет больше времени. Это большая часть причины, по которой оригинальный Nexus 7 от Google так сильно замедлялся с течением времени. Google исправил это, внедрив TRIM в Android 4.3. (Android также использует ядро ​​Linux.)

Когда TRIM включен, операционная система сообщает SSD каждый раз, когда удаляет файл. Затем накопитель может стереть сектора, содержащие содержимое файла, поэтому запись в сектора будет быстрой в будущем.

Другими словами, если вы не используете TRIM, ваш SSD со временем замедлится. Вот почему современные операционные системы, включая Windows 7+, Mac OS X 10.6.8+ и Android 4.3+, используют TRIM. TRIM был внедрен в Linux еще в декабре 2008 года, но Ubuntu по умолчанию его не использует.

Почему Ubuntu TRIM не используется по умолчанию?

Настоящая причина, по которой Ubuntu по умолчанию не использует твердотельные накопители TRIM, заключается в том, что реализация TRIM в ядре Linux медленная и приводит к снижению производительности при обычном использовании.

В Windows 7 и 8 Windows отправляет команду TRIM каждый раз, когда удаляет файл, сообщая дисководу о немедленном удалении битов файла. Linux поддерживает это, когда файловые системы монтируются с опцией discard. Однако Ubuntu – и другие дистрибутивы – не делают этого по умолчанию из соображений производительности.

Вики OpenSUSE содержит подробную информацию от разработчика, который более знаком с ядром Linux, чем мы. Это немного устарело, но, вероятно, все еще верно, когда дело доходит до производительности:

«Реализация ядра в режиме реального времени в 11.2, 11.3 и 11.4 не оптимизирована. Спецификация требует обрезки, поддерживающей векторизованный список диапазонов обрезки, но начиная с ядра 3.0, обрезка вызывается только ядром с одним диапазоном сброса/обрезки, а с текущими твердотельными накопителями середины 2011 года это привело к снижению производительности вместо повышения производительности. Есть несколько причин использовать поддержку удаления ядер в реальном времени с ядрами до 3.1. Неизвестно, когда функциональность удаления ядер будет оптимизирована для полезной работы с твердотельными накопителями текущего поколения ». [Источник]

Другими словами, ядро ​​Linux обрабатывает такие команды TRIM в реальном времени медленным, неоптимизированным способом. Включение TRIM аналогично тому, как это делает Windows, то есть с использованием опции «сброс», приводит к тому, что система на самом деле становится медленнее, чем если бы TRIM не использовался вообще. Ubuntu и другие дистрибутивы Linux по умолчанию не включают «сброс» в ваших файловых системах, и вы не должны этого делать.

Есть другой путь

Поскольку операция «отбрасывать» TRIM ядра Linux в реальном времени не работает должным образом, большинство дистрибутивов Linux, включая Ubuntu, не используют TRIM автоматически. Android также не использовал TRIM до версии Android 4.3.

Но есть и другой способ использовать TRIM. Вместо того, чтобы просто вводить команду TRIM при каждом удалении файла, можно использовать функцию FITRIM. Это происходит с помощью команды fstrim. По сути, команда fstrim анализирует файловую систему и сообщает накопителю, какие блоки больше не нужны, чтобы накопитель мог их отбросить. Это превращает TRIM из операции в реальном времени в запланированное задание. Другими словами, fstrim может выполнять TRIM как задание cron. Нет причин не делать этого. Это ничего не замедлит; это просто очередная уборка, которую система должна выполнять по расписанию.

На самом деле, это подход, который Google использовал с Android 4.3. Android просто иногда запускает задачу fstrim, чтобы TRIM файловую систему, решая проблему, которая замедляла все эти оригинальные Nexus 7s.

Ubuntu также рассматривает возможность автоматического включения TRIM путем регулярного запуска системы fstrim. Мы надеемся, что это будет частью Ubuntu 14.04, поэтому пользователи Ubuntu не будут вынуждены справляться с падением производительности SSD или запускать fstrim самостоятельно.

Как включить TRIM

Мы не рекомендуем монтировать ваши файловые системы с помощью операции «сброс», так как это может привести к снижению производительности при нормальном использовании. Однако вы можете использовать TRIM самостоятельно, периодически выполняя команду fstrim или создавая свой собственный cronjob, который запускает fstrim по расписанию.

Чтобы TRIM ваш SSD в Ubuntu, просто откройте терминал и выполните следующую команду:

Судо Фстрим -v/

Вы можете периодически запускать вышеуказанную команду, чтобы предотвратить снижение производительности на SSD. Частота запуска зависит от того, как часто файлы удаляются с вашего SSD. Вы увидите ошибку, если попытаетесь запустить команду с диска, который не поддерживает TRIM.

Если вы хотите регулярно запускать TRIM, вы можете просто создать cronjob, который запускает команду fstrim. Вот как можно сделать работу cron без костей, которая будет делать это автоматически.

Сначала запустите следующую команду, чтобы открыть текстовый редактор nano с правами root:

sudo nano /etc/cron.daily/fstrim

Введите следующий код в файл:

#!/Bin/ш

Фстрим/

Сохраните файл, нажав Ctrl + O и нажмите Enter для подтверждения. Нажмите Ctrl + X, чтобы закрыть nano после сохранения файла.

Наконец, выполните следующую команду, чтобы сделать сценарий исполняемым:

sudo chmod + x /etc/cron.daily/fstrim

Ubuntu теперь будет запускать fstrim по расписанию, так же как и другие задачи по обслуживанию системы.

Обратите внимание, что TRIM поддерживается только в современных файловых системах, поэтому вам понадобится что-то вроде ext4, а не ext3 или ext2. Если вы не знаете, какую файловую систему вы используете, не беспокойтесь – по умолчанию выбран ext4.

Большая часть этого совета также относится к другим дистрибутивам Linux. Хотя Linux уже давно реализовал поддержку TRIM в ядре, его поддержка TRIM, по-видимому, никогда не была включена по умолчанию для типичных пользователей в дистрибутивах Linux.

Изображение предоставлено: Мейс Ояла на Flickr (обрезано)

Оцените статью
TutoryBird.Ru
Добавить комментарий