Ubuntu по умолчанию не работает с твердотельными накопителями, почему бы и нет, и как включить его самостоятельно
Ubuntu хочет включить TRIM для SSD по умолчанию в 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 по умолчанию не включают «discard» для ваших файловых систем, и вы не должны.
Есть другой путь
Поскольку операция «отбрасывания» 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 для barebones, которая сделает это автоматически.
Сначала запустите следующую команду, чтобы открыть текстовый редактор 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..
Изображение предоставлено: Mace Ojala на Flickr (обрезано)