Как включить TRIM для SSD в Ubuntu

Фотография двух карт NVMe SSD.

Если вы используете твердотельный накопитель (SSD), вы должны знать, что на него не следует запускать программное обеспечение для дефрагментации или консолидации свободного пространства. Итак, как очистить ваш SSD и освободить пустое пространство? TRIM — это команда, которую мы используем для информирования операционной системы о необходимости очистки. Windows 11 позволяет вам вручную запустить TRIM через команду fsutil. Но как насчет Ubuntu? Как включить TRIM для SSD в Ubuntu?

Примечание: Следующие шаги не сработают, если вы зашифровали свой раздел.

Содержание

  • Создание задания TRIM с помощью cron для вашего SSD
  • Использование опции Discard в fstab
  • Часто задаваемые вопросы

Создание задания TRIM с помощью cron для вашего SSD

  1. Чтобы убедиться, что SSD в вашем компьютере поддерживает TRIM, откройте терминал и введите:
sudo hdparm -I /dev/sda

Окно терминала с выводом команды hdparm.

Если Ubuntu не установлен в первом разделе SSD, измените sda, чтобы отразить раздел, где находится Ubuntu. Вы можете сделать это, запустив lsblk.

Окно терминала с отображением всех дисков, подключенных к машине.

  1. Прокрутите вниз по списку, пока не увидите раздел “Enabled Supported”. Прокрутите еще раз вниз, и если вы увидите что-то вроде “ Поддержка управления набором данных TRIM (лимит 8 блоков),” тогда TRIM поддерживается для вашего SSD.

Окно терминала с флагом TRIM, доступным для демонстрационного SSD.

  1. Проверьте, работает ли функция TRIM в Ubuntu. В терминале введите:
sudo fstrim -v /

Это очистит корневой раздел SSD. Если все прошло успешно, вы должны увидеть что-то похожее на следующее изображение.

Окно терминала с первой командой fstrim для SSD.

  1. Установите задание cron для операционной системы, чтобы отправлять команду TRIM раз в день.
sudo nano /etc/cron.daily/trim
  1. Вставьте следующий код в пустую область:
#!/bin/sh  
fstrim -v /
  1. Если ваш домашний каталог находится на другом разделе, вы можете добавить дополнительную строку в конце приведенного выше кода:
fstrim -v /home >>$LOG
  1. Если вы хотите сохранить вывод в файл журнала, используйте следующий код вместо этого:
#!/bin/sh  
LOG=/var/log/trim.log  
echo "* $(date -R) *" >> $LOG  
fstrim -v / >> $LOG  
fstrim -v /home >> $LOG

Окно терминала с полным скриптом cron для fstrim.

  1. Сохраните (Ctrl + O) и закройте (Ctrl + X).

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

sudo chmod a+x /etc/cron.daily/trim

Окно терминала с скриптом trim с правильными правами доступа.

Полезно знать: cron — отличная утилита, которая может помочь вам автоматизировать задачи в Linux. Узнайте, как это работает и как вы можете использовать ее для своих собственных программ.

Использование опции Discard в fstab

Помимо ручного вызова fstrim, вы также можете настроить свою систему на постоянное “отбрасывание” любого неиспользуемого пустого пространства на вашем диске. Это может быть полезно, если вы используете ноутбук и не хотите оставлять компьютер включенным все время.

  1. Проверьте значение UUID вашего корневого раздела:
ls -l /dev/disk/by-uuid

Окно терминала, показывающее символическую ссылку между UUID и разделами SSD.

  1. Откройте файл “/etc/fstab” с помощью вашего любимого текстового редактора. В моем случае я использую GNU Nano:
sudo nano /etc/fstab
  1. Найдите запись вашего корневого раздела в “/etc/fstab”, нажав Ctrl + W, а затем введя его значение UUID.

Окно терминала, показывающее стандартный файл /etc/fstab для демонстрационной системы.

  1. Перейдите к записи вашего корневого раздела и введите discard,noatime, перед опцией “errors=remount-ro”. Например, мой файл “/etc/fstab” имеет следующую запись корневого раздела:
#   
UUID=xxx    /    ext4    discard,noatime,errors=remount-ro    0 1  
[...]

Окно терминала, показывающее измененный файл /etc/fstab.

  1. Сохраните новый файл “/etc/fstab”, нажав Ctrl + O, а затем Ctrl + X.

Окно терминала с запросом на сохранение для GNU Nano.

  1. Наконец, перезагрузите машину, чтобы применить новые настройки.

Окно терминала с командой перезагрузки для демонстрационной системы.

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

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

Могу ли я использовать одновременно fstrim и discard на своем SSD?

Да. Тем не менее, это не приведет ни к какому заметному улучшению и не продлит срок службы вашего SSD, поскольку и fstrim, и discard используют аналогичные процедуры TRIM, когда они удаляют неиспользуемые, свободные блоки.

С учетом этого, fstrim и discard различаются в одном ключевом моменте: частота. Первый накапливает все неиспользуемые блоки перед тем, как “освободить” их, в то время как последний “освобождает” блок, как только он становится неиспользуемым. Это означает, что discard всегда будет занимать больше системных ресурсов и операций ввода-вывода по сравнению с fstrim.

В моем файле /etc/fstab нет UUID для корневого раздела.

Скорее всего, это связано с тем, что ваша система использует либо аппаратную RAID-карту, либо утилиту управления логическими томами (LVM). По умолчанию TRIM будет работать только на системах, которые используют традиционные дисковые разделы и файловые системы, такие как ext4.

Тем не менее, некоторые программы LVM предоставляют удобный вариант для выполнения TRIM. В Ubuntu вы можете добавить issue_discards = 1 в файл “/etc/lvm/lvm.conf”, чтобы автоматически выполнять TRIM для любых неиспользуемых, свободных блоков.

Возможно ли изменить частоту команды fstrim?

Да. По умолчанию в Linux предоставляется несколько файлов таймера, которые позволяют вам тонко настроить, когда вы хотите использовать fstrim. Например, вы можете выполнить команду sudo mv /etc/cron.daily/trim /etc/cron.weekly/trim, чтобы изменить частоту TRIM с ежедневной на еженедельную.