Ubuntu trim ssd как проверить

Обновлено: 01.07.2024

Я знаю, что ядро ​​Linux поддерживает TRIM начиная с версии 2.6.33, поэтому в Ubuntu должна быть поддержка TRIM.

TRIM включен по умолчанию или мне нужно изменить некоторые настройки или установить дополнительное программное обеспечение для его работы? Если так, то как?

2 ответа

В Ubuntu 14.10 и 15.04 TRIMming происходит автоматически каждую неделю на всех SSD, поддерживаемых fstrim ,

С 15.04 Ubuntu использует systemd и его таймер ( man systemd.timer Арка вики)

Начиная с Ubuntu 14.04, запланированный TRIM включен по умолчанию для твердотельных накопителей Intel, SAMSUNG, OCZ, Patriot и Sandisk. Если у вас есть другой бренд, вы можете отключить проверку поставщика, выполнив следующую команду:

(или просто отредактируйте файл /etc/cron.weekly/fstrim и добавить --no-model-check )

Существует три способа выполнения TRIM: ручной, запланированный и автоматический:

Ручная TRIM

В Ubuntu это можно выполнить с помощью fstrim :

однако это не требуется при включенном расписании или автоматическом режиме TRIM, как подробно описано в разделах ниже.

Примечание. Для систем Ubuntu 11.04 и более ранних версий fstrim недоступен, поэтому необходимо использовать wiper.sh снабжен чем то hdparm в /usr/share/doc/hdparm/contrib/wiper.sh.gz

Запланированный TRIM (рекомендуется)

Это рекомендуемый в настоящее время метод, который планируется активировать по умолчанию для Ubuntu 14.04. Вот как активировать его вручную в старых версиях ubuntu (с 11.10 по 13.10):

Создайте файл сценария еженедельного задания CRON:

Вставьте следующий код в файл, затем сохраните и закройте файл:

Обратите внимание, что приведенное выше предполагает, что только ваша корневая файловая система / находится на SSD. Если у вас есть несколько точек монтирования на одном или нескольких твердотельных накопителях, добавьте их в SSD_MOUNT_POINTS как объяснено в коде.

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

И наконец, проверьте это:

Если вы не видите ошибок, ваша работа cron должна работать нормально.

Автоматическая TRIM (устарела, медленная)

Автоматический TRIM поддерживается с Ubuntu 10.10 (ядро 2.6.33) с файловой системой EXT4. Однако было установлено, что отправка команд TRIM на твердотельный накопитель в режиме реального времени - после каждого удаления - делает удаление на некоторых дисках намного медленнее, чем обычно. Поэтому рекомендуется еженедельная запланированная TRIM через задание cron (описанное выше).

Для включения автоматического TRIM на диске или разделе их необходимо смонтировать с помощью discard вариант в fstab , Сначала сделайте резервную копию вашего fstab, затем откройте его для редактирования:

добавлять discard к записи опций fstab (через запятую) для SSD-диска или каждого раздела.

Закройте и сохраните fstab, затем перезагрузка и автоматический TRIM теперь должны работать.

Тестирование автоматического TRIM

Чтобы проверить, работает ли TRIM, введите следующие команды ( источник):

Из выходных данных скопируйте число под begin_LBA и проверьте имя устройства вашего SSD: System->Administration->Disk Utility например, sda, sdb, sdc.

Запустите следующее, но замените [ADDRESS] (begin_LBA) и sdX (Имя устройства SSD) с подробностями, полученными выше.

вывод должен быть длинной строкой символов для этих секторов

Повторите hdparm команда сверху:

Если вы получаете только нули, то автоматический TRIM работает. Однако, если после удаления файла сектора все еще не пусты, подождите некоторое время и повторите команду.

Современные накопители данных такие как SSD нуждаются в команде TRIM интерфейса ATA и для этого в ОС построенных на базе ядра Linux предусмотрено два метода управления на уровне файловых систем:

  • discard — устанавливается как опция монтировании файловой системы. Позволяет ядру Linux сразу отправлять команду TRIM на устройство, как только об этом сообщит файловая система.
  • fstrim — утилита которая запускается вручную или по расписанию как сервис ОС, отправляет список удаленных блоков с ФС для зачистки их на устройстве.

Для включения fstrim достаточно активировать сервис fstrim.service в systemd, но лучше вместо сервиса, который будет висеть в памяти, использовать таймер fstrim.timer который будет запускать еженедельный TRIM.

Пример включения сервиса:

Но этих мер недостаточно, если у вас файловые системы располагаются на томах LVM, а LVM в LUKS игла в яйце, яйцо в утке, утка в зайце :





Первое что нужно сделать, это проверить, что контроллер SATA работает в режиме AHCI, а не IDE, иначе TRIM работать не будет:

Ключевое слово здесь это TRIM supported , значит контроллер SATA работает в режиме AHCI и вам не нужно ничего менять в BIOS или UEFI.

Итак, опция discard может устанавливаться:

  • в суперблоке ФС (как опция монтирования по умолчанию)
  • в конфигурации монтирования ФС — /etc/fstab
  • в конфигурации cryptsetup — /etc/crypttab
  • в конфигурации LVM — /etc/lvm/lvm.conf
  • в конфигурации загрузчика — /boot/grub/grub.cfg

Мы рассмотрим все эти варианты. Примеры будут даны для дистрибутива Arch Linux и его производных, но я думаю вас не затруднит адаптировать тему к любому другому дистрибутиву Linux.

Если в /etc/fstab для файловой системы опция discard не указана или в опциях монтирования указана опция defaults , то система будет использовать опции монтирования прописанные в суперблоке файловой системы. Это актуально для файловой системы EXT4. Запись опций монтирования в суперблоке ФС может быть выгодна тем, что если у вас съёмное устройство которое подключается по SATA к разным машинам в которых вы не можете по каким-то причинам вносить изменения в /etc/fstab .

Добавляем опцию монтирования discard по умолчанию в суперблок файловой системы EXT4. У меня это три раздела:

Убедиться в установленной опции можно через tune2fs . Здесь /dev/mapper/vg1-lvroot это устройство, раздел с файловой системой EXT4 в томе LVM:

Если это единственная система куда разделы SSD будут монтироваться, то мы можем прописать опцию discard явно в /etc/fstab для автомонтирования разделов, но устанавливать опцию необязательно для EXT4, если она уже была ранее задана в суперблоке.

Также, опцию discard следует добавить для swap раздела:

В конфигурационном файле /etc/lvm/lvm.conf устанавливаем значение опции issue_discards в значение равное 1 :

Важно отметить, что включение этой опции не пересылает команду TRIM с файловых систем когда на них производятся команды удаления файлов, эта опция посылает команду TRIM только когда производятся манипуляции изменения логического тома, например, через такие команды как lvremove, lvreduce и т.д.

Прежде, чем вы решите включить discard на зашифрованных томах, необходимо оценить риск безопасности утечки метаданных (тип файловой системы, используемое пространство и т. д.) которые могут быть извлечены из физического устройства при его завладении нежелательными лицами, об этом говорит предупреждение в мануале crypttab :

WARNING: This command can have a negative security impact because it can make filesystem-level operations visible on the physical device. For example, information leaking filesystem type, used space, etc. may be extractable from the physical device if the discarded blocks can be located later. If in doubt, do not use it.

Если вы Джеймс Бонд или секретный агент который занимается незаконными делами или работаете с гостайной и рискуете потерять жизнь, то эту опцию нежелательно использовать. В иных случаях, для простого пользователя, который шифрует разделы на устройстве с целью защиты информации от посторонних глаз, защиты себя и своих близких от шантажа неким домашним хакером в случае кражи ноута или устройства, то возможно ли расшифровать данные, если злой хакер получит метаданные файловой системы? Каким уровнем знаний должен обладать этот хакер, чтобы справится с расшифровкой данных? Какова цена? Предлагаю обсудить это в комментариях :)



В приведенной выше схеме разметки таблицы разделов на накопителе, некоторые разделы являются зашифрованными и "заперты" в криптоконтейнере LUKS. Чтобы TRIM был разрешен для этих разделов, корневой раздел должен быть открыт cryptsetup 'ом с аргументом --allow-discards или опция должна быть прописана в /etc/crypttab для нужного раздела, но проблема заключается в том, что мы не можем прописать опцию в /etc/crypttab , так как root-раздел в нашей схеме изначально зашифрован и система не может прочитать его до того как откроет криптоконтейнер.

Решением этой проблемы является указать опцию при открытии криптоконтейнера на раннем этапе загрузки в initramfs, а передать эту опцию в initramfs поможет опция в конфигурации загрузчика grub для ядра Linux.

Добавляем значение allow-discards в конфигурационный файл /etc/default/grub для параметра cryptdevice в параметре для ядра GRUB_CMDLINE_LINUX .

Меняем эту строчку:

Затем необходимо сгенерировать "правильный" конфиг grub'а:

Также проверьте, что у вас образ initramfs скомпилирован с хуком encrypt который позволяет открывать криптоконтейнеры с помощью cryptsetup и он расположен до хука lvm2 :

После внесения изменений в grub систему следует перезагрузить для применения изменений.


В приведенной выше схеме разметки, раздел /home не является корневым и находится в контейнере LUKS. В этом случае, следует прописать опцию монтирования discard в конфигурационном файле /etc/crypttab который зачитывается системой до зачитывания и выполнения /etc/fstab .

Формат записи опции в конфигурационном файле вы найдете в мануале: man crypttab

Выполните следующую команду:

Если вы видите нулевые значения в колонках DISC-GRAN (discard granularity) и DISC-MAX (discard max bytes), значит TRIM не работает.

Проверить еще можно командой ручного вызова TRIM:

Если вы видите положительный результат, значит TRIM работает. При полной поддержке TRIM значения должны быть на всех разделах:

Здесь DISC-GRAN равен 512B потому что размер сектора на моём SSD равен 512 bytes. Операционная система посылает команду TRIM контроллеру накопителя с указанием номеров секторов, которые могут быть очищены. Размер вашего сектора можно узнать из следующих команд:

UPDATE 14.04.2020 14:20: Добавил предупреждение использования опции на зашифрованных томах. Спасибо AAngstrom который отметил в комментариях это упущение.
UPDATE 23.04.2020 22:00: Подправил текст, убрал слово "диск" из текста, так как оно не соответствует описываемому в статье устройству. Спасибо vitaliy2

Как всем известно SSD очень быстры, но имеют один маленький (или не маленький) недостаток - ограниченное число циклов записи. Т.е. их надо стараться больше использовать на чтение, а запись свести к минимуму, дабы свести риск выхода из строя диска раньше времени к минимуму. Статья написана для Ubuntu 14.04 и более новых версий.

/etc/fstab – один из важных файлов ОС, который исполняется во время загрузки системы. В нем описаны какие разделы накопителей и как именно монтируется в файловую систему ОС. Открываем:

Отключаем swap

Для систем, у которых systemd надо еще отключить службу

Если же памяти для задач ОС маловато, то пробуем настроить приоритет использования swap

Опции монтирования

compress - сжатие файлов (lzo - рекомендумое значение, быстрое сжатие; zlib - выше уровень сжатия, но значительно медленнее, больше нагрузка ЦПУ, больше потребление батареи на ноутбуках.

После применения этой опции новые файлы будут сжиматься при записи, а также старые при изменении. Если хотите сжать уже установленную систему нужно применить команду дефрагментации со сжатием .

Часто рекомендуют опцию discard - активирует TRIM для SSD. Опция discard не использована в силу того, что в Ubuntu начиная с версии 14.04 разработчики позаботились о пользователях. Система сама периодически делает fstrim-all, эта команда тримит SSD в момент запуска (команды), а не на лету как discard. Но результат один, деградации скорости не будет.

Как видим BTRFS хорошо приспособлена для SSD. Ранее BTRFS имела проблемы с производительностью, особенно при установке пакетов. Сейчас, на свежих ядрах 4.* я не вижу этой проблемы, работает быстро.

Кэш apt в ОЗУ

Кэш apt не будет сохраняться на диске и при переустановке пакетов, потребуется их выкачивать заново. Кроме того это не сильно поможет нашему SSD, т.к. пакеты сжатые, а при установке занимают в 5-10 раз больше места, чем в архиве. Также это увеличит использование ОЗУ. После включения убедитесь, что в системе хватает памяти для выполнения ваших задач Для SSD не требуется дефрагментация. В данном случае она применена для того, чтобы сжать файлы уже установленной системы

Для выполнения нужно загрузиться в живую сессию, примонтировать раздел с BTRFS и применить команду дефрагментации со сжатием:

У себя я получил коэффициент сжатия 0.63, было 5.21 ГБ, стало 3.7 ГБ, т.е. в 1.5 раза меньше запись на SSD в процессе дальнейшей работы. Замечу, что я не храню на SSD плохо сжимаемые файлы - аудио, видео, фото и т.п., они размещены на другом разделе.

1) Mozilla Firefox

Правка → Настройки → Дополнительные → Сеть → Поставить галочку «Отключить автоматическое управление кэшем» → Установить значение в 0.

2) Opera

Ctrl + F12 → Расширенные → История → Дисковый кэш → Отключено

3) Chromium/Google Chrome

К сожалению этот браузер не умеет отключать дисковый кэш полностью из GUI .

Настройки → Дополнительные инструменты → Инструменты разработчика ( Ctrl + Shift + I ) → Настройки (значек шестеренки) → поставить галочку Disable cache (while DevTools is open)


Большая часть рекомендаций по оптимизации работы и продлении жизни SSD-накопителя сводится к уменьшению количества записи и перезаписи. В этой статье разберемся, какие службы ОС нужно включить или отключить, чтобы продлить жизнь накопителя, а какие нет смысла трогать и лучше оставить работать в конфигурации по умолчанию.

Команда TRIM

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

Чтобы определить состояние TRIM в Windows введем в консоли:

DisableDeleteNotify = 1 – TRIM отключен

DisableDeleteNotify = 0 – TRIM включен

Рис. 1. Определение состояния службы TRIM в Windows

Рис. 1. Определение состояния службы TRIM в Windows

Для включения TRIM введем в командной строке:

Для выключения TRIM:

Проверим, включена ли команда TRIM в Ubuntu следующей командой:

Если у столбцов DISC-GRAN и DISC-MAX нулевые значения, то TRIM выключен.

Рис. 2. Определение состояния службы TRIM в Ubuntu

Рис. 2. Определение состояния службы TRIM в Ubuntu

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

Служба SysMain

Служба SysMain (Windows 10) в предыдущих версиях Windows называлась Superfetch. Когда ОЗУ недостаточно, SysMain не записывает данные в файл подкачки, а сжимает их в ОЗУ. Также служба объединяет страницы с одинаковым содержимым. Получаем снижение объема записи на диск. Отключать нет смысла.

Как проверить состояние SysMain:

Служба Prefetcher

Служба Prefetcher отслеживает какие файлы запускаются при старте Windows и сохраняет их в папке C:\Windows\Prefetch . При следующем запуске компьютера Windows ссылается на эти файлы, чтобы ускорить процесс запуска. Эту папку не нужно удалять самостоятельно, она является самодостаточной и обновляется сама. Если ее удалить, то потребуется больше времени для запуска системы, так как Prefetch нужно будет собрать данные заново. У современных SSD-накопителей большой ресурс по количеству записываемых данных в день (десятки, сотни гигабайт), следовательно эту службу тоже можно не отключать.

Как проверить состояние Prefetch:

  1. Откроем Пуск и введем regedit .
  2. Перейдем в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters и дважды щелкнем по EnablePrefetcher .
  3. Чтобы включить Superfetch введем 3 , включить только для программ – 2 , включить для файлов загрузки системы – 1 , для выключения службы – 0 .

Система индексирования Windows

Служба Windows Search индексирует файлы и папки. Эту службу можно отключить, а для поиска использовать бесплатную программу Everything , которая находит файлы и папки практически мгновенно.

Как отключить индексацию файлов:

  1. Откроем проводник и кликнем правой кнопкой мыши на диск → Свойства .
  2. Снимем флажок Разрешить индексировать содержимое файлов. .

Режим гибернации

Режим гибернации сохраняет содержимое оперативной памяти на SSD перед выключением компьютера. При включении данные с SSD загружаются в ОЗУ. Если сверхбыстрый запуск ОС не нужен, а достаточно быстрого запуска с SSD, то гибернацию можно отключить.

Чтобы отключить гибернацию в Windows откроем консоль и введем:

Для включения гибернации используем команду:

Точки восстановления системы

Отключение точек восстановления лишит пользователя возможности восстановить систему. Чем больше места, тем больше точек восстановления имеется в распоряжении. Старые точки восстановления удаляются автоматически, когда все место под них занято и нужно создать новую. Отключать не стоит.

Как проверить состояние точек восстановления:

  1. Откроем меню Пуск , введем Система и откроем панель управления.
  2. Кликнем на Защита системы .
  3. Выберем нужный диск и кликнем Настроить .

Быстрый доступ к настройкам восстановления системы:

Служба дефрагментации и автоматического обслуживания

Начиная с Windows 7 система научилась определять тип накопителя и отключает дефрагментацию для SSD, а взамен выполняет TRIM. Как оказалось, не всегда.

Как посмотреть состояние службы дефрагментации:

Чтобы посмотреть журнал оптимизации и дефрагментации дисков откроем PowerShell из меню пуск и введем следующую команду:

Мои диски С и P расположены на твердотельных накопителях и Windows почему-то провела дефрагментацию этих дисков. Это связано с тем, что я переустанавливал Windows и это было первое выполнение задачи оптимизации по расписанию. Потом ОС выполняла только оптимизацию дисков.

Рис. 9. Журнал дефрагментации и оптимизации SSD-накопителя в Windows

Рис. 9. Журнал дефрагментации и оптимизации SSD-накопителя в Windows

Файл подкачки

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

Настройка файла подкачки:

  1. Нажмем клавиши Win + R и введем sysdm.cpl .
  2. Перейдем в Дополнительно → Быстродействие → Параметры .
  3. Дополнительно → Виртуальная память → Изменить .

Выравнивание разделов

Разделы выравнивают, чтобы физические ячейки объема соответствовали логическим ячейкам и сократилось количество дисковых операций. Если разделы отличаются по длине – один кластер перекрывает два блока секторов, как в HDD, – удваивается число операций чтения и записи, накопитель работает медленнее и повышается его износ (рис. 11 ).

Рис. 11. Иллюстрация не выровненных разделов в HDD

Рис. 11. Иллюстрация не выровненных разделов в HDD

В SSD также нужно выравнивать разделы, чтобы продлить срок службы накопителя.

Чтобы узнать размер кластера в Windows введем в консоли:

Рис. 13. Информация о размере сектора и кластера в Windows

Рис. 13. Информация о размере сектора и кластера в Windows

Как изменить размер кластера в Windows:

  1. В меню Пуск введем Создание и форматирование разделов жесткого диска .
  2. Кликнем правой кнопкой мыши по нужному тому и выберем Форматировать , либо Создать новый том . При форматировании данные на диске будут удалены.
  3. В следующем окне зададим размер кластера.

Как узнать размер кластера в Ubuntu:

/dev/sda1 – путь к разделу.

Рис. 14. Информация о размере сектора и кластера в Ubuntu

Рис. 14. Информация о размере сектора и кластера в Ubuntu

Как изменить размер кластера в Ubuntu (все данные будут удалены):

mkfs.ntfs – форматирование в NTFS ( mkfs.ext4 – форматирование в ext4).

-c – проверка на наличие битых блоков на устройстве.

4096 – размер кластера.

Как узнать выровнен ли раздел в Windows:

  1. Введем в меню Пуск команду msinfo .
  2. Выберем Компоненты → Запоминающие устройства → Диски .
  3. Если значение Начальное смещение раздела делится на 4096 без остатка, то раздел выровнен.

Как узнать выровнен ли раздел в Ubuntu:

1 – номер раздела. Например, у sda1 будет единица.

Рис. 16. Проверка, выровнен раздел в Ubuntu или нет

Рис. 16. Проверка, выровнен раздел в Ubuntu или нет

Чтобы узнать номер раздела введем в консоли:

На что смотреть при покупке SSD

У твердотельных дисков есть два параметра, которые определяют его долговечность:

  1. TBW – количество циклов перезаписи, то есть общее количество данных, которое гарантированно запишется на диск в течение всего срока службы. Выражается в ТБ.
  2. DWPD – количество полных перезаписей всего накопителя в день. Выражается в (количество перезаписей)/день. Для накопителя 240 ГБ этот параметр в среднем составляет 0.3-0.4, то есть от 72 до 96 Гб в день, что очень много. Поэтому нет смысла проводить тонкую настройку SSD, отключая все службы. Вероятнее всего накопитель поменяют, чтобы увеличить объём, а не вследствие поломки.

Чем больше значение этих параметров, тем лучше.

Рис. 17. Количество циклов перезаписи SSD-накопителя с разными типами памяти

Рис. 17. Количество циклов перезаписи SSD-накопителя с разными типами памяти

Как оптимизировать работу SSD-накопителя

  1. Проверить, включен ли TRIM. В Windows 7, 8, 10 TRIM запускается по расписанию один раз в неделю.
  2. Не проводить дефрагментацию накопителя вручную. Windows и Ubuntu сами не дефрагментируют твердотельный накопитель.
  3. Выровнять разделы. При установке Windows и Ubuntu разделы выравниваются автоматически.

Мы узнали какие службы действительно продлевают жизнь и ускоряют твердотельный накопитель, а какие нет. Про SSD для рядового потребителя можно сказать одно – установил и забыл, так как все важные службы работают в автоматическом режиме, а ненужные отключены.

Читайте также: