Гид по технологиям

Почему Ubuntu не включает TRIM для SSD по умолчанию и как включить его самому

8 min read Linux Обновлено 02 Dec 2025
Включение TRIM для SSD в Ubuntu
Включение TRIM для SSD в Ubuntu

Почему Ubuntu не включает TRIM для SSD: что это значит и как включить самостоятельно

Кратко

TRIM освобождает блоки на SSD после удаления файлов и предотвращает постепенное замедление диска. Ubuntu долгое время не включала TRIM в режиме «в реальном времени» (параметр mount=discard) из-за проблем с производительностью ядра. Рекомендуем запускать периодический TRIM через fstrim (cron/systemd timer). Ниже — объяснение, когда что подходит, пошаговые инструкции, чек-листы для разных ролей, матрица совместимости, тесты и план отката.


Быстрое содержание

  • Почему TRIM важен
  • Почему Ubuntu не использует TRIM по умолчанию
  • Альтернативы: realtime TRIM vs fstrim
  • Пошаговое включение: единоразовый запуск и регулярная задача
  • Чек-листы для пользователей и администраторов
  • Тесты, критерии приёмки и план отката
  • Матрица совместимости файловых систем и SSD
  • Короткий глоссарий и рекомендации по безопасности

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

TRIM — это команда, которую операционная система посылает SSD, чтобы сообщить, какие блоки больше не содержат полезных данных. Без TRIM SSD со временем ухудшает производительность записи: контроллер вынужден сначала очищать ячейки перед записью, что добавляет задержку.

Пояснение в одну строку: TRIM сообщает диску, какие блоки можно стирать заранее — это поддерживает скорость записью в течение всего срока службы SSD.

Кому это важно:

  • Пользователи ноутбуков и рабочих станций на SSD.
  • Администраторы серверов и виртуальных машин с SSD / NVMe.
  • Разработчики системного ПО и интеграторы.

Важно: TRIM не «восстанавливает» файлы — он просто повышает производительность и потенциально продлевает срок службы SSD.

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

Реальная причина — реализация TRIM в ядре Linux (реaltime discard) былa не оптимизирована для современных SSD на момент внедрения. Когда команда TRIM отправляется «на лету» при каждом удалении (параметр монтирования discard), это может привести к замедлению обычной работы диска. Поэтому дистрибутивы, включая Ubuntu, предпочли отключить realtime TRIM по умолчанию и вместо этого рекомендовать плановый запуск fstrim.

Ключевая мысль: realtime discard работает медленно в некоторых комбинациях ядра + контроллер SSD. Плановый fstrim делает ту же работу, но в контролируемое время, что уменьшает влияние на отклик системы.

Разница между realtime TRIM (discard) и fstrim

  • discard (параметр монтирования): при удалении файла ОС немедленно отправляет TRIM на диск. Преимущества — немедленное освобождение блоков. Недостатки — в Linux на ряде конфигураций это снижает производительность.

  • fstrim (плановый): утилита, которая сканирует файловую систему и сообщает диску неиспользуемые блоки. Обычно запускается периодически (cron или systemd timer). Преимущества — минимальное влияние на обычную нагрузку и возможность планирования в «тихое» время. Недостатки — освобождение происходит не мгновенно.

Когда использовать что:

  • На персональном ноутбуке и десктопе: чаще всего достаточно fstrim по расписанию.
  • На высоконагружённых серверах с критичными задержками: тщательно протестируйте discard; по умолчанию используйте fstrim в низкую нагрузку.

Когда TRIM не нужен или не работает

Контрпримеры / кейсы, когда TRIM не применим:

  • Старые SSD и контроллеры без поддержки TRIM. fstrim выдаст ошибку “operation not supported”.
  • Некорректно реализованный контроллер может давать деградацию производительности при realtime TRIM.
  • Если используется файловая система, не поддерживающая TRIM (например, ext3, ext2), TRIM не сработает.

Важно: всегда проверяйте поддержку TRIM в конкретном диске (datasheet/производитель) и в используемой версии ядра.

Как проверить поддержку TRIM в текущей системе

  1. Проверить, поддерживает ли SSD TRIM (команда через ATA или NVMe):
# Для NVMe
sudo nvme id-ctrl /dev/nvme0 | grep -i trim

# Для SATA SSD (иногда можно посмотреть с помощью hdparm или lsblk)
sudo hdparm -I /dev/sda | grep -i trim
  1. Попробовать выполнить fstrim вручную и посмотреть результат:
sudo fstrim -v /

Если диск не поддерживает TRIM, будет сообщение об ошибке или ноль освобождённых байт.

Пошаговое: единоразовый запуск TRIM

Откройте терминал и выполните:

sudo fstrim -v /

Описание:

  • Параметр -v показывает, сколько байт было освобождено.
  • Команда безопасна: она лишь информирует диск о неиспользуемых блоках.

Пример вывода:

/ trimmed: 123456789 bytes

Если получите ошибку, проверьте, поддерживает ли диск TRIM и выбрана ли файловая система с поддержкой (ext4, btrfs, xfs и др.).

Запуск fstrim на Ubuntu: пример вывода команды

Пошаговое: регулярный запуск — cron или systemd timer

Рекомендуемый способ — запускать fstrim регулярно (еженедельно или ежесуточно для интенсивных систем). Есть два распространённых подхода:

  1. Использовать cron (классический метод). Пример простого скрипта, который выполняет fstrim ежедневно:

Создайте файл:

sudo nano /etc/cron.daily/fstrim

Вставьте содержимое:

#!/bin/sh
fstrim /

Сделайте исполняемым:

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

Cron запустит этот скрипт ежедневно вместе с другими задачами в /etc/cron.daily.

  1. Использовать systemd timer (современный и гибкий метод). Пример для еженедельного запуска:

Создайте юнит сервис:

sudo tee /etc/systemd/system/fstrim-weekly.service > /dev/null << 'EOF'
[Unit]
Description=Run fstrim weekly

[Service]
Type=oneshot
ExecStart=/sbin/fstrim -av
EOF

Создайте таймер:

sudo tee /etc/systemd/system/fstrim-weekly.timer > /dev/null << 'EOF'
[Unit]
Description=Weekly fstrim timer

[Timer]
OnCalendar=weekly
Persistent=true

[Install]
WantedBy=timers.target
EOF

Загрузите и включите таймер:

sudo systemctl daemon-reload
sudo systemctl enable --now fstrim-weekly.timer

Преимущества systemd timer: можно точно настроить расписание, хранить журналы через journalctl и следить за статусом.

Создание cron-скрипта fstrim в nano

Делаем скрипт исполняемым: пример вывода команды chmod

Рекомендации по частоте

  • Домашний пользователь: еженедельно или ежемесячно — обычно достаточно.
  • Интенсивные рабочие нагрузки (много операций записи/удаления): еженощно или ежедневно.
  • Серверы с критичной нагрузкой: планировать в окна с низкой нагрузкой и тестировать влияние.

Факторы, влияющие на частоту: объём записи данных, модель SSD, важность минимизации простоев.

Чек-листы и роли

Чек-лист для обычного пользователя:

  • Убедиться, что файловая система — ext4, btrfs, xfs или другая современная.
  • Выполнить sudo fstrim -v / и проверить результат.
  • Если всё работает, настроить systemd timer или cron для автоматизации.

Чек-лист для системного администратора:

  • Проверить поддержку TRIM в конкретной модели SSD.
  • Выполнить нагрузочные тесты с realtime discard и без него.
  • Настроить fstrim с расписанием, подходящим для нагрузки.
  • Настроить мониторинг и оповещения на сбои fstrim.
  • Подготовить план отката и документировать изменения в конфигурации.

SOP: стандартная операционная процедура для включения fstrim

  1. Проверка совместимости диска и файловой системы.
  2. Резервное копирование критичных данных (рекомендуется всегда перед изменениями на дисках).
  3. Тестовый запуск fstrim вручную на нерабочей системе или вне пиков.
  4. Настройка systemd timer с журналированием.
  5. Мониторинг первых трёх выполнений на предмет ошибок.
  6. Корректировка расписания и уведомлений.

Короткая команда проверки журнала systemd:

sudo journalctl -u fstrim-weekly.service -n 200

Тестовые случаи и критерии приёмки

Тесты:

  • TC1: fstrim запускается вручную без ошибок и возвращает >0 освобождённых байт.
  • TC2: cron/script выполняется автоматически и появляется запись в логах.
  • TC3: при запуске на несupportируемом диске выводится корректная ошибка и скрипт не завершился с успехом.
  • TC4: воздействие на производительность: запуск fstrim в пиковое время не увеличивает среднее время отклика более допустимого порога (задаётся SLA).

Критерии приёмки:

  • Успешное выполнение fstrim в запланированное время минимум три раза подряд.
  • Логи и метрики показывают отсутствие критических ошибок.
  • Нагрузка на диск в момент выполнения находится в допустимых пределах.

План отката и процедуры при инциденте

Если после включения регулярного fstrim наблюдается деградация производительности или ошибки:

  1. Отключить таймер/cron:
sudo systemctl disable --now fstrim-weekly.timer
sudo rm /etc/cron.daily/fstrim
  1. Проверить логи fstrim и SMART диска (smartctl) на наличие ошибок:
sudo journalctl -u fstrim-weekly.service -b
sudo smartctl -a /dev/sda
  1. Если диск стал некорректно работать, восстановите из резервной копии и свяжитесь с производителем SSD.

  2. Документируйте инцидент и проведите post-mortem.

Матрица совместимости (файловые системы и TRIM)

Файловая системаTRIM поддерживаетсяПримечания
ext4ДаСтандартно поддерживается fstrim и discard
btrfsДаПоддерживает fstrim; watch на фрагментацию
xfsДаПоддерживает fstrim (начиная с соответствующих версий ядра)
ext3 / ext2НетНе поддерживают TRIM
LVM на блочных устройствахЧастичноTRIM нужно проверять через слой блочного устройства
LUKS (шифрование)ЗависитПри использовании шифрования TRIM может быть отключён по соображениям безопасности; проверьте настройки

Примечание: конкретная поддержка зависит от версии ядра и драйверов.

Модель принятия решений — кратко

  • Если SSD поддерживает TRIM и файловая система современная => используйте fstrim по расписанию.
  • Если система чувствительна к задержкам и у вас есть подозрение, что realtime discard ухудшит производительность => не включайте discard без тестов.
  • Если вы используете шифрование диска — изучите влияние TRIM на безопасность и проверьте документацию LUKS/cryptsetup.

Риски и смягчения

  • Риск: realtime discard может замедлить систему. Смягчение: используйте fstrim и тестируйте нагрузку.
  • Риск: диск не поддерживает TRIM и команда не сработает. Смягчение: проверить поддержку перед автоматизацией.
  • Риск: информация об освобождённых блоках может снизить уровень приватности при шифровании. Смягчение: оценить требования к безопасности и, при необходимости, не включать TRIM или использовать безопасный метод очистки.

Безопасность и приватность

TRIM сообщает контроллеру диска, какие блоки не используются. В некоторых сценариях это может облегчить восстановление ранее удалённых данных при физическом доступе к диску. При использовании полного шифрования диска (LUKS) это повлияет на модель угроз: по умолчанию TRIM может раскрыть информацию о занятии блоков, но не их содержимое. Если конфиденциальность критична, изучите trade-offs между производительностью и утечкой метаданных.

Короткий глоссарий

  • TRIM: команда, сообщающая SSD об удалённых блоках.
  • discard: параметр монтирования, который отправляет TRIM при каждом удалении файлов.
  • fstrim: утилита, выполняющая сканирование файловой системы и массовую отправку TRIM.
  • systemd timer: механизм systemd для запуска задач по расписанию.

Часто задаваемые вопросы

Нужно ли мне использовать discard вместо fstrim?

Нет — в большинстве случаев fstrim по расписанию предпочтительнее, поскольку он уменьшает риск падения производительности.

Как узнать, какая у меня файловая система?

findmnt -no FSTYPE /

Есть ли риск для данных при запуске fstrim?

fstrim не удаляет пользовательские данные; он лишь сообщает контроллеру, что определённые блоки свободны.

Заключение

TRIM — важная функция для поддержания скорости SSD. Ubuntu и многие другие дистрибутивы не включают realtime TRIM по умолчанию из-за исторических проблем с производительностью в реализации ядра. Лучший практический подход — использовать утилиту fstrim и запускать её по расписанию (systemd timer или cron). Это даёт баланс между производительностью и обслуживанием SSD.

Важно: перед автоматизацией проверьте поддержку TRIM у вашего SSD и протестируйте влияние на производительность в вашей среде.


Кредит изображения: Mace Ojala on Flickr (cropped)

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Purgeable в macOS Sierra: как освобождать место
macOS

Purgeable в macOS Sierra: как освобождать место

Удаление пароля root в Linux — зачем и как
Linux, безопасность

Удаление пароля root в Linux — зачем и как

Трансляция Skype в Mixlr на macOS
Подкасты

Трансляция Skype в Mixlr на macOS

Создать живые плитки игр в Windows 10
Windows

Создать живые плитки игр в Windows 10

Ускорить медленно открывающуюся папку Windows
Windows

Ускорить медленно открывающуюся папку Windows

Opera для Chromebook: руководство и установка
Браузеры

Opera для Chromebook: руководство и установка