Проверить поддержку trim linux

Включение TRIM на SSD.

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

До включения TRIM убедитесь, что:

  • Ядро линукс вашего дистрибутива старше 2.6.33
  • Ваш SSD поддерживает TRIM. Узнайте версию прошивки sudo hdparm -i /dev/ваш_диск | grep -i Fw и прочтите на официальном сайте о поддержке или sudo hdparm -I /dev/sda | grep «TRIM» .
  • Разделы у вас в ext4 или btrfs.

discard в fstab.

Самый, наверное, простой способ включить поддержку TRIM для диска SSD — это указать параметр discard у разделов в /etc/fstab.

sudo -e /etc/fstab
Это пример. Не копируйте весь текст целиком, а просто добавьте discard к тем разделам, которые физически размещаются на диске SSD.

Теперь, после перезагрузки компьютера, разделы, расположенные на SSD, будут подмонтированы с параметром discard.

TRIM через cron.

Если по неведомой причине, совет с discard не применим, то можно команду TRIM запланировать на работу через планировщик cron.

sudo -e /etc/cron.daily/trim

и вставьте строки и сохраните файл.

#!/bin/sh
LOG=/var/log/trim.log
echo «*** $(date -R) ***» >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

В примере подразумевается что у вас два раздела, корень / и домашний раздел /home. Если это не так, то удалите лишнее или добавьте нужное.

До поручения планировщику заниматься выполнением TRIM, желательно самому в Терминале проверить работу команды fstrim — sudo fstrim-v / .

Не забудьте сделать /etc/cron.daily/trim исполняемым — sudo chmod +x /etc/cron.daily/trim .

Так как в Ubuntu используется anacron, то пропущенные задания будут выполнены, так что не стоит беспокоиться, что наше «дневное» задание будет пропущено. Гарантированно или раз в сутки или при включении компьютера, планировщик вызовет наш /etc/cron.daily/trim и выполнит fstrim для разделов.

TRIM для зашифрованных разделов.

ВЫ ДЕЙСТВУЕТЕ НА СВОЙ СТРАХ И РИСК.

Откройте с правами рута файл /etc/default/grub — sudo -e /etc/default/grub

Найдите параметр GRUB_CMDLINE_LINUX и добавьте параметры, так чтобы привести к виду GRUB_CMDLINE_LINUX=»allow-discards root_trim=yes».

Сохраните изменения и выполните команду sudo update-grub .

Откройте с правами рута файл /etc/crypttab — sudo -e /etc/crypttab . Аккуратно добавьте параметр discard, ориентируясь по примеру

Источник

Настройка Ubuntu для работы с SSD

Содержание

Просьба к редакторам тоже там отписываться

Настройка Ubuntu для работы с SSD

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

Настройка /etc/fstab

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

Отключаем swap

Если уж SSD приобретен, то вполне можно добавить памяти в машину и отключить swap. Для этого будет достаточно уже 4GiB (используйте утилиты free и top, чтобы узнать сколько памяти потребляет ОС) Если памяти достаточно, ставим систему без свопа или отключаем его, если система уже установлена.
Комментируем (#) строку со словом swap

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

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

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

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

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

Кэш apt в ОЗУ

Дефрагментация BTRFS со сжатием файлов

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

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

Отключение дискового кэша в браузерах

1) Mozilla Firefox

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

Читайте также:  Не отвечает windows store

2) Opera

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

3) Chromium/Google Chrome

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

Источник

Как проверить работу TRIM на SSD

Добрый вечер, ставлю на SSD 256гБ Centos 7. Разделы задала по дефолту.

Отключила swap через fstab.

Хочу проверить, что TRIM запущен и работает, по всем мануалам — в fstab’е разделы должны быть примонтированы с discard

У меня в fstab всё по дефолту:

Нашла, что можно проверить TRIM, выполнив команду:

Это означает, что TRIM работает или может работать?

Ну раз окончание на -ed то видимо триминг успешно осуществился.

Это означает, что TRIM работает или может работать?

Это означает, что он успешно выполняется. Раз в неделю выполняй fstrim и все будет нормально.

а не подскажете как тримать шифрованные разделы? мне

Есть опция: cryptsetup luksOpen —allow-discards.

Здесь есть скриптец и мануал как проверить

В шляпе это делается либо опцией discard, либо юнитом fstrim.timer. Поэтому проверьте

fstrim: /: the discard operation is not supported

это значит никакого trim нет, у меня так тоже пишет — ничего не зашифровано, винт доисторический ide на 40 pin

Хочу проверить, что TRIM запущен и работает, по всем мануалам — в fstab’е разделы должны быть примонтированы с discard

Это один из вариантов. Не самый лучший.

Есть 2 варианта трима.

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

Второй — периодически делать fstrim. По таймеру, ручками, как душе угодно. Этот вариант предпочтительнее.

Спасибо за ответ.

Спасибо! А без команды fstrim в cron’е трим всё равно будет выполняться? Или команда нужна и трим как процесс идет?

Вывод по командам такой:

0 — это НЕвыполнение или выполнение trim? Немного запуталась, в винде 0 для трима — трим работает, а 1 — трим не работает. Знаю, что в Linux всё по-другому, но может и тут трим как-то выделился?

А без команды fstrim в cron’е трим всё равно будет выполняться?

Не будет. Тебе нужно либо монтировать все ФС с discard, чтобы трим выполнялся при работы с ФС, либо выполнять трим вручную время от времени с помощью fstrim.

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

А issue_discards вообще в тему при «нормальном» использовании lvm (когда тома более-менее статичны)?

Потому что lvm.conf говорит

У меня лично issue_discards стоит 0, но fstrim успешно отрабатывает на томе lvm и говорит, что потримано столько то гигабайт.

Где доки — четко написано: Docs: man:fstrim, /etc/lvm/lvm.conf.

cron в Шляпе для периодического трима не принято использовать.

Да, все правильно.

Мы не знаем, что с томом будут делать дальше + мы отвечаем не столько ТС, сколько проясняем этот и похожие кейсы.

Эту тонкость с LVM надо держать в голове.

по всем мануалам — в fstab’е разделы должны быть примонтированы с discard У меня в fstab всё по дефолту

Так что мешает прописать в fstab’е discard вместо дефолта? А заодно relatime, чтоб не писать на диск, когда осуществляется только чтение.

а в этом девайсе есть Background Garbage Collection?

Так что мешает прописать в fstab’е discard вместо дефолта?

Умение читать документацию.

Так что мешает прописать в fstab’е discard вместо дефолта?

И в чём тут здравый смысл?

Умение читать документацию.

И? В документации описаны какие-то программы, имеющиеся на любом сервере и десктопе, которые не будут работать с relatime?

1) До SATA 3.1 тримы ставят раком остальной disk IO.

2) Есть куча популярных девайсов (включая даже EVO 850), для которых использование discard’а приводит к потере данных из-за кривой фирмвари.

Так что большинство дистров рекоммендуют дискард без особой необходимости не использовать.

1) До SATA 3.1 тримы ставят раком остальной disk IO.

2) Есть куча популярных девайсов (включая даже EVO 850), для которых использование discard’а приводит к потере данных из-за кривой фирмвари.

У меня samsung 850 evo mz-75e500bw sata III чуть меньше года (поставил в начале года), в fstab прописан discard для всех разделов ext4, раком ничего не встаёт, и данные ни разу не терялись.

Но если такое бывает (о чём я не знал), то, наверно, стоит потестировать конкретный диск с этой опцией, прежде чем использовать её в рабочем режиме и с рабочими данными. Но, имхо, это не повод без тестов от неё отказываться только потому, что у кого-то такое иногда случается.

Про дискард надо понимать, что ты настаиваешь не одну рукоятку вкл/выкл, а целый бутерброд систем, где команда discard проходит сверху вниз.

  • Наверху у тебя ФС
  • Ниже всякие lvm (в т.ч. thin pool которым тоже принимать команды на discard бывает полезно)
  • Ещё ниже шифрование
  • И уж совсем внизу SSD.
Читайте также:  Снять экран со звуком windows

Если любой из слоев не пробрасывает дискард далее вниз, то ничего не будет.

Отдельный вопрос — как настраивать самый верхний уровень — через таймер/крон или через опцию в фстаб.

У меня samsung 850 evo mz-75e500bw sata III чуть меньше года (поставил в начале года), в fstab прописан discard для всех разделов ext4, раком ничего не встаёт, и данные ни разу не терялись.

В итоге у тебя non-queued trim, чтобы данные не потерялись. Раком не встает потому что мноо не трешь.

The non-queued nature of the command requires the driver to first wait for all outstanding commands to be finished, issue the TRIM command, then resume normal commands. TRIM can take a lot of time to complete, depending on the firmware in the SSD, and may even trigger a garbage collection cycle

В итоге у тебя non-queued trim, чтобы данные не потерялись.

Спасибо за информацию. Но таки он ведь работает и тримит?

Раком не встает потому что мноо не трешь.

Спасибо за ликбез. Я действительно много пока не тёр. Сейчас у меня лежат несколько здоровых фильмов, которые я давно посмотрел, но продолжаю раздавать, поэтому не удаляю. Когда буду удалять, обязательно потестирую, как будут вести себя другие программы, обращающиеся к диску.

У меня у самого 850 EVO, и fstrim отрабатывает где-то секунд за 5, но это раз в пару недель, так что скорее всего для десктопного использования ничего прямтакого не будет.

Источник

Настройка TRIM для SSD-хранилища на сервере Linux

Длительное использование SSD-хранилища (или твердотельного накопителя) приводит к снижению его производительности. Чтобы такое хранилище прослужило дольше, его работу нужно тщательно продумывать. Команда TRIM сообщает SSD, какие блоки данных больше не используются. Это позволяет внутренней системе SSD-накопителя выровнять износ устройства и подготовить его к дальнейшим операциям записи. TRIM может оказать существенное влияние на производительность и долговечность устройства.

В Linux можно настроить непрерывное выполнение TRIM, однако такая нагрузка может негативно сказаться на производительности. Существует также более мягкий альтернативный вариант – периодическое выполнение TRIM. При этом устройство получит все преимущества команды без ущерба для производительности.

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

Как SSD-накопители хранят данные?

Чтобы лучше понимать, какие именно проблемы устраняет TRIM, нужно ознакомиться с особенностями хранения данных на SSD.

Ограничение циклов перезаписи

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

Чтобы изменить данные, SSD-накопитель должен прочитать их старую версию, отредактировать её в памяти, а затем записать обновлённые данные на новую – обнулённую – страницу. После этого устройство обновляет внутреннюю таблицу и задаёт новое местонахождение данных. Предыдущее местонахождение данных становится устаревшим – оно больше не используется, но еще не обнулено.

Восстановление устаревших страниц

Чтобы восстановить устаревшие страницы, внутренние процессы сборщика мусора SSD должны прочитать все действительные страницы из блока и записать их в новый блок. После этого снова обновляется внутренняя таблица. Старый блок, который в настоящее время не содержит никаких уникальных и востребованных данных, можно обнулить и использовать для дальнейшей записи.

Как работает TRIM?

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

Это означает, что SSD-накопитель обычно не знает, что страница больше не нужна, пока файловая система не использует это логическое местоположение для записи новых данных. Накопитель не может выполнять процедуру сборки мусора, потому что ему просто не сообщили об удалении данных, он узнаёт об этом только тогда, когда ранее занятое пространство используется для записи других данных.

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

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

Отключение непрерывного выполнения TRIM

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

Непрерывное выполнение команды включается с помощью опции discard при монтировании устройства или раздела.

Найдите текущую файловую систему, смонтированную с опцией discard.

findmnt -O discard
TARGET SOURCE FSTYPE OPTIONS
/mnt/data /dev/sda1 ext4 rw,relatime, discard ,data=ordered
/mnt/data2 /dev/sdb1 ext4 rw,relatime, discard ,data=ordered

Перемонтируйте эти файловые системы, убрав опцию discard. Для этого используйте команду mount и опцию -o remount,nodiscard:

sudo mount -o remount,nodiscard /mnt/data
sudo mount -o remount,nodiscard /mnt/data2

Читайте также:  Для запуска dism требуется более высокий уровень разрешений windows 10 ошибка 740

Снова запустите команду findmnt, теперь она должна не вернуть никакого вывода:

findmnt -O discard

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

sudo nano /etc/fstab

Найдите в нём опцию discard и удалите её:

. . .
# /dev/sda1 /mnt/data ext4 defaults,nofail, discard 0 0
/dev/sda1 /mnt/data ext4 defaults,nofail 0 0
# /dev/sdb1 /mnt/data2 ext4 defaults,nofail, discard 0 0
/dev/sdb1 /mnt/data2 ext4 defaults,nofail 0 0

Сохраните и закройте файл. Теперь при повторном монтировании файловой системы опция discard не будет использоваться.

Настройка TRIM в дистрибутивах systemd

В данном разделе показано, как настроить периодический запуск TRIM в дистрибутивах, которые используют систему инициализации systemd.

Ubuntu 16.04

Дистрибутив Ubuntu 16.04 предоставляет сценарий, который еженедельно запускается с помощью cron.

Примечание: Стратегия настройки TRIM в Ubuntu 16.04 не зависит от systemd и отличается от остальных дистрибутивов этого типа.

Чтобы просмотреть сценарий, введите:

cat /etc/cron.weekly/fstrim
#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim —all || true

Как видите, сценарий требует версии fstrim с флагом –all. Многие версии fstrim, поставляющиеся в ранних версиях Ubuntu, не поддерживают этого флага.

Другие дистрибутивы systemd

В остальных дистрибутивах на основе systemd поддержка TRIM включается в файле fstrim.timer, который запускает операции TRIM на всех доступных смонтированных устройствах один раз в неделю. Он тоже использует опцию fstrim –all.

На момент написания этого руководства к таким дистрибутивам относятся:

В CentOS 7, Fedora 23, Fedora 24 и CoreOS юниты fstrim.service и fstrim.timer доступны по умолчанию. Чтобы настроить еженедельный запуск TRIM на всех смонтированных накопителях, включите юнит .timer:

sudo systemctl enable fstrim.timer

В Debian 8 юниты fstrim.service и fstrim.timer доступны внутри файловой системы, но по умолчанию не загружены в systemd. Сначала просто скопируйте эти файлы:

sudo cp /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
sudo cp /usr/share/doc/util-linux/examples/fstrim.timer /etc/systemd/system

Затем вы можете активировать этот юнит так же, как и в других дистрибутивах.

sudo systemctl enable fstrim.timer

Теперь команда TRIM будет выполняться на всех доступных устройствах раз в неделю.

Настройка TRIM в других дистрибутивах

Большинство дистрибутивов, которые используют не Systemd, а другую систему инициализации, также поставляются с fstrim без флага –all. Это несколько усложняет автозапуск TRIM.

Важно! Использовать TRIM на устройствах, которые не поддерживают эту команду или выполняют её не правильно, очень опасно и может привести к потере данных. Флаг –all может обеспечить безопасное выполнение команды, однако не пытайтесь определить вручную, корректно ли поддерживают подключенные диски данную операцию.

В системе Ubuntu 14.04 существует короткий сценарий fstrim-all, который еженедельно выполняется демоном cron. Однако данный сценарий не всегда правильно интерпретирует поддержку TRIM на подключенных дисках.

Существует обходное решение для этого и других дистрибутивов с поддержкой fstrim без флага –all: нужно скомпилировать статически скомпонованную версию fstrim с поддержкой этого флага. Эту версию можно установить и явно вызывать с помощью cron.

Такой вариант лучше всего сработает в:

  • Ubuntu 14.04
  • Ubuntu 12.04
  • Debian 7
  • CentOS 6

В Ubuntu 14.04 нужно сначала отключить сценарий fstrim-all, поскольку он не может корректно определять статус.

sudo chmod a-x /etc/cron.weekly/fstrim
sudo mv /etc/cron.weekly/fstrim /etc/cron.weekly/fstrim.bak

Установка инструментов для компиляции

Установите набор инструментов для сборки программ.

В Ubuntu и Debian:
sudo apt-get update
sudo apt-get install build-essential
В CentOS:
sudo yum groupinstall ‘Development Tools’

Загрузка и извлечение исходного кода

Утилита fstrim поставляется в наборе инструментов util-linux. Исходный код можно найти здесь.

Выберите самую новую версию пакета. На момент написания руководства это v2.28.

Откройте каталог и найдите самый новый архив (его название должно начинаться с util-linux- и заканчиваться расширением .tar.gz). На данный момент наиболее актуальным является util-linux-2.28.1.tar.gz. Кликните правой кнопкой и скопируйте ссылку в буфер обмена.

Вернитесь на сервер и откройте каталог /tmp. С помощью утилиты curl или wget загрузите необходимый файл.

cd /tmp
curl -LO https://www.kernel.org/pub/linux/utils/util-linux/v2.28/util-linux-2.28.1.tar.gz

tar xzvf util-linux*

Теперь исходный код можно скомпилировать.

Настройка и компиляция исходного кода

Откройте извлечённый каталог:

Теперь нужно настроить программное обеспечение. Создайте бинарный файл для fstrim.

Для этого необходимо включить статические ссылки и отключить расшаренные библиотеки. Введите:

./configure —enable-static —disable-shared

Чтобы скомпилировать утилиту fstrim, введите:

Скопируйте бинарный файл в каталог, который не указан в PATH. Этот файл будет вызываться только демоном cron, потому нужно убедиться, что он не будет конфликтовать со стандартной утилитой fstrim.

Создайте каталог /cron-bin и переместите в него бинарный файл:

sudo mkdir /cron-bin
sudo cp /tmp/util-linux*/fstrim /cron-bin

Теперь у вас есть доступ к пользовательской версии утилиты fstrim.

Настройка cron

Теперь нужно создать новый сценарий, который будет запускаться демоном cron.

Это делается почти так же, как в Ubuntu 16.04 (нужно также указать место хранения бинарного файла).

sudo nano /etc/cron.weekly/fstrim

Вставьте в него следующие строки. Это включит поддержку флага –all:

#!/bin/sh
# trim all mounted file systems which support it
/cron-bin/fstrim —all || true

Сохраните и закройте файл.

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

sudo chmod a+x /etc/cron.weekly/fstrim

Демоны cron и anacron смогут использовать этот сценарий для выполнения проверки TRIM.

Заключение

Теперь сервер Linux запускает TRIM раз в неделю. Команда TRIM увеличивает производительность и уменьшает износ SSD-устройств.

Источник

Оцените статью