Ubuntu не поддерживает SSD по умолчанию: почему нет и как включить его сам

Оглавление:

Ubuntu не поддерживает SSD по умолчанию: почему нет и как включить его сам
Ubuntu не поддерживает SSD по умолчанию: почему нет и как включить его сам

Видео: Ubuntu не поддерживает SSD по умолчанию: почему нет и как включить его сам

Видео: Ubuntu не поддерживает SSD по умолчанию: почему нет и как включить его сам
Видео: TP Link AX1800 Wi Fi 6 Router - YouTube 2024, Апрель
Anonim
Ubuntu хочет включить TRIM для SSD по умолчанию в Ubuntu 14.04. Другими словами, Ubuntu уже не использует TRIM, поэтому ваш SSD замедляется с течением времени. Но почему Ubuntu уже не использует TRIM?
Ubuntu хочет включить TRIM для SSD по умолчанию в Ubuntu 14.04. Другими словами, Ubuntu уже не использует TRIM, поэтому ваш SSD замедляется с течением времени. Но почему Ubuntu уже не использует TRIM?

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

Почему 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 SSD, заключается в том, что реализация TRIM в ядре Linux медленная и приводит к низкой производительности при нормальном использовании.

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

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

“The kernel implementation of realtime trim in 11.2, 11.3, and 11.4 is not optimized. The spec. calls for trim supporting a vectorized list of trim ranges, but as of kernel 3.0 trim is only invoked by the kernel with a single discard / trim range and with current mid 2011 SSDs this has proven to cause a performance degradation instead of a performance increase. There are few reasons to use the kernels realtime discard support with pre-3.1 kernels. It is not known when the kernels discard functionality will be optimized to work beneficially with current generation SSDs.” [Source]

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

Image
Image

Есть еще один способ

Поскольку операция 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, просто откройте терминал и выполните следующую команду:

sudo fstrim -v /

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

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

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

sudo nano /etc/cron.daily/fstrim

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

#!/bin/sh

fstrim /

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

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

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

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

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

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

Рекомендуемые: