Jump to content

Question

Posted

Удалось заставить работать TRIM на внешнем диске WD MyPassport 5Tb (как знаете, сейчас большинство больших HDD стали с черепичной записью, из-за чего они поддерживают TRIM - чтобы не было проблем с быстродействием по мере заполнения диска). По идее это должно работать и на SSD.

 Настраивается все через OPKG, сам внешний диск/контроллер должны поддерживать TRIM. Файловая система EXT4.

- Устанавливаем необходимые пакеты

# opkg install fstrim

# opkg install lsblk

Во всех командах прописываете пути до своего диска и точки монтирования, у меня это

/dev/sda

/tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2

- Проверяем, что сейчас TRIM не работает

# fstrim -v /tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2

fstrim: /tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2: the discard operation is not supported

 

# cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode

disabled

 

# lsblk --discard /dev/sda

NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO

sda        0     4K        0B         0

sda1       0     4K        0B         0

sda2       0     4K        0B         0

здесь DISC-MAX - по нулям

- Включаем поддержку TRIM

# echo -n unmap > /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode

- Проверяем что включение поддержки сработало

# cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode
unmap

Должен сохраниться unmap

 

# lsblk --discard /dev/sda

NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO

sda         0       4K       4G         0

sda1        0       4K       4G         0

sda2        0       4K       4G         0

здесь  DISC-MAX теперь ненулевой - 4Gb

- Запускаем TRIM

# fstrim -v /tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2

/tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2: 4.5 TiB (4920666669056 bytes) trimmed

По выводу команды видно, что TRIM сработал, после удаления файлов тоже срабатывает как надо:

# fstrim -v /tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2
/tmp/mnt/d572541d-d7c9-4540-bef3-8da2d0b4f9c2: 121.7 MiB (127647744 bytes) trimmed


Кому надо, для автоматизации могут добавить соответствующие команды в cron и т.д.

  • Thanks 2

21 answers to this question

Recommended Posts

  • 0
Posted (edited)
1 час назад, redarmy сказал:

как знаете, сейчас большинство больших HDD стали с черепичной записью,

Так а зачем же вы покупаете мусор? Берите нормальные жесткие диски с CMR .....если интересуют hdd фирмы WD то это серии: WD RED PRO, WD BLACK , WD GOLD .

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

Использовать под nas диски с SMR записью ни в коем случае нельзя....

Edited by krass
  • 0
Posted
1 час назад, redarmy сказал:

чтобы не было проблем с быстродействием по мере заполнения диска

И там важна проблема другая.....с черепичной записью по мере заполнения вы теряете данные...и TRIM от этого не спасет....ну и в RAID такие диски нельзя ставить

1 час назад, redarmy сказал:

По идее это должно работать и на SSD.

Про SSD: надежны только SLC, 2-bit MLC.....все остальные непригодны....( pSLC, 3-bit MLC, TLC,QLC,PLC итд итп) , к сожалению потребители покупают не глядя.....

  • 0
Posted
8 минут назад, krass сказал:

Про SSD: надежны только SLC, 2-bit MLC.....все остальные непригодны....( pSLC, 3-bit MLC, TLC,QLC,PLC итд итп) , к сожалению потребители покупают не глядя.....

Мифы не имеющие ничего общего с практикой. 

  • Upvote 2
  • 0
Posted
17 минут назад, keenet07 сказал:

Мифы не имеющие ничего общего с практикой. 

Смотря под какие цели применения.....вставьте в NAS и посмотрите как долго прослужат эти ssd....или для работы MSSQLS

  • 0
Posted
11 минуту назад, krass сказал:

Смотря под какие цели применения.....вставьте в NAS и посмотрите как долго прослужат эти ssd

В общем случае в NAS особой перезаписи и нет. Лежат файлопомои годами и никого не трогают. Разве что злоупотребление торрентами может подгрызть ресурс ssd. Мучить ssd торрентами или нет каждый решает сам. Износ ssd преимущественно прерогатива рабочих дисков, но в случае домашнего сценария запаса даже tlc хватает надолго.

  • Thanks 2
  • 0
Posted (edited)
5 минут назад, Кинетиковод сказал:

о в случае домашнего сценария запаса даже tlc хватает надолго.

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

А вот для тех,  кто занимается, например, видеомонтажом, долгосрочным ! хранением данных итд итп...такие диски уже непригодны....я же больше про расширенное применение... надежность....были ssd c гарантией 10 лет....сейчас их убрали т.к. люди берут и с 3х летней гарантией...

P.S. давали бы гарантию 10 лет как было ранее и проблем бы не было.....хоть на OctaLC делайте ну и ресурс по записи как на MLC

Edited by krass
  • 0
Posted
3 минуты назад, krass сказал:

А вот для тех,  кто занимается видеомонтажом, долгосрочным

Это уже профзадачи. Монтажники вон Макбуки берут за очень дорого и на ssd деньги найдут.

4 минуты назад, krass сказал:

были ssd c гарантией 10 лет....сейчас их убрали т.к. люди берут и с 3х летней гарантией...

SLC конечно найти трудно, но MLC ещё есть в продаже. Думаю профессионалов MLC вполне устроит. А вот для простого люда TLC предпочтительней, т.к. они заметно дешевле и их ресурс для дома достаточен.

  • Thanks 1
  • 0
Posted
Только что, Кинетиковод сказал:

Это уже профзадачи. Монтажники вон Макбуки берут за очень дорого и на ssd деньги найдут.

SLC конечно найти трудно, но MLC ещё есть в продаже. Думаю профессионалов MLC вполне устроит. А вот для простого люда TLC предпочтительней, т.к. они заметно дешевле и их ресурс для дома достаточен.

Есть нюанс -- теперь вместо честных 2-bit MLC стали ставить 3-bit MLC ( это на самом деле TLC) .....( в обзорах одна начинка у ssd и контроллер, а потом раз и производитель меняет и начинку и контроллер, ухудшая параметры и надежность без объявления войны  на своем офиц. сайте )

Мне тенденция не нравится.....подождите 2-3 года и мы уже и TLC не увидим.....будут QLC/PLC, а ресурс записи всё ниже и ниже.....и гарантия всё меньше и меньше...

Очень много обмана по дискам, как пример серия black у wd --- если для 3.5 дисков они сохранили CMR, то та же серия, но для 2.5 уже на SMR -- вот что это? кроме как пакость и слова другого нет....в итоге под ноутбуки HDD пригодных нет ни у одной фирмы....приходится брать ssd 2-bit MLC ....пока они еще есть в продаже.....

  • 0
Posted
22 минуты назад, krass сказал:

Есть нюанс -- теперь вместо честных 2-bit MLC стали ставить 3-bit MLC ( это на самом деле TLC) .....( в обзорах одна начинка у ssd и контроллер, а потом раз и производитель меняет и начинку и контроллер, ухудшая параметры и надежность без объявления войны  на своем офиц. сайте )

Мне тенденция не нравится.....подождите 2-3 года и мы уже и TLC не увидим.....будут QLC/PLC, а ресурс записи всё ниже и ниже.....и гарантия всё меньше и меньше...

Очень много обмана по дискам, как пример серия black у wd --- если для 3.5 дисков они сохранили CMR, то та же серия, но для 2.5 уже на SMR -- вот что это? кроме как пакость и слова другого нет....в итоге под ноутбуки HDD пригодных нет ни у одной фирмы....приходится брать ssd 2-bit MLC ....пока они еще есть в продаже.....

Как будто бы это всё они делают просто так или из вредности. А ёмкость SSD за счёт чего растет? При этом не увеличивая его стоимость кратно? С ростом ёмкости уменьшается и нагрузка и износ конкретных ячеек памяти. Всё за счёт технологии выравнивания износа, которая сейчас практически в любом SSD присутствует. 

 

  • 0
Posted
В 24.01.2022 в 15:22, redarmy сказал:

Кому надо, для автоматизации могут добавить соответствующие команды в cron и т.д.

Давайте кончно.

И еще неплохо бы в инструкции добавить команду как посмотреть точки монтирования, я например смотрю по

mount | grep sd
  • Thanks 1
  • 0
Posted

а в таком варианте поддержка трим на ntfs разделах есть?

в сравнении с инструкцией в первом посте у меня имеются некоторые отличия.

~ # cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode
full
~ # lsblk --discard /dev/sda
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0        0B       0B         0
├─sda1        0        0B       0B         0
├─sda2        0        0B       0B         0
├─sda3        0        0B       0B         0
└─sda4        0        0B       0B         0

после unmap стало:

~ # cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode
unmap
~ # lsblk --discard /dev/sda
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0      512B       4G         0
├─sda1        0      512B       4G         0
├─sda2        0      512B       4G         0
├─sda3        0      512B       4G         0
└─sda4        0      512B       4G         0

и по итогу:

~ # fstrim -v /tmp/mnt/C2064E47064E3CA3
fstrim: /tmp/mnt/C2064E47064E3CA3: the discard operation is not supported

спасибо.

  • 0
Posted

 

В 12.07.2023 в 15:24, z_mashine сказал:

поддержка трим на ntfs разделах есть

C NTFS может и не работать - тут все зависит от драйвера NTFS-3G, который в кинетике используется, в нем может быть и отключена возможности trim'a (по крайней мере раньше на линуксах было упоминание о возможных проблемах trim'a с ним).

Еще зависит от того, как диск подключен, есть дешевые китайские переходники sata-usb, которые просто физически команду trim не пропускают, и с ними это никогда не заработает.

 

  • 0
Posted
2 hours ago, redarmy said:

Еще зависит от того, как диск подключен, есть дешевые китайские переходники sata-usb, которые просто физически команду trim не пропускают, и с ними это никогда не заработает.

Коробка от Orico на Jmicron JMS567. Трим точно умеет.

  • 0
Posted
3 часа назад, redarmy сказал:

тут все зависит от драйвера NTFS-3G, который в кинетике используется, в нем может быть и отключена возможности trim'a

В KeeneticOS используется коммерческий драйвер NTFS от Tuxera.

  • 0
Posted (edited)
В 24.01.2022 в 15:22, redarmy сказал:

Кому надо, для автоматизации могут добавить соответствующие команды в cron и т.д.

Спасибо за инструкцию. Всё сделал и добавил в cron ежедневное задание. Работает как часы. Только вот потом подумал, что эта команда:

В 24.01.2022 в 15:22, redarmy сказал:

- Включаем поддержку TRIM

# echo -n unmap > /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode

При добавлении её в cron, производит каждый раз запись на внутренний накопитель, что не очень хорошо судя по статье от разработчика. Причем именно в одну и ту же ячейку, т. к. тут простейший транслятор, а не SSD. И, если не ошибаюсь (поправьте), пишется на внутренний накопитель даже независимо от того, куда установлен entware, т. к. путь монтирования /sys/block. А если не добавлять это в cron, то, понятно, слетает после переподключения накопителя или перезагрузки роутера и fstrim уже не будет работать.

Решил это через проверку состояния if-then-fi - если provisioning_mode уже unmap, то не пишем. Но, может, как-то можно сделать, чтобы папка /sys/block/sda вообще не удалялась после отключения накопителя или так нереально сделать?

Edited by DzmitryK
  • 0
Posted
23 часа назад, DzmitryK сказал:

производит каждый раз запись на внутренний накопитель, что не очень хорошо судя по статье от разработчика. Причем именно в одну и ту же ячейку, т. к. тут простейший транслятор, а не SSD. И, если не ошибаюсь (поправьте), пишется на внутренний накопитель даже независимо от того, куда установлен entware, т. к. путь монтирования /sys/block.

А откуда такая  информация? Вроде не должно такого быть, путь /sys/ - это виртуальная файловая система sysfs, она полностью находится в оперативной памяти (фактически это доступ к текущим настройкам ОС, просто он сделан так, как будто это доступ к файлам, поэтому после отключения диска нужная папка исчезает). Т.е. ни на внутреннюю память, ни на диск ничего не должно писаться.

Я у себя сделал, чтобы только при старте роутера unmap выставлялся, т.к. диск никогда не отключаю.   С if-then-fi решение нормальное.

  • 0
Posted
1 минуту назад, redarmy сказал:

А откуда такая  информация?

Методом исключения) Т. к. и у внутренней памяти и у подключенного накопителя - другие пути монтирования. Но да, тоже думал может быть в ОЗУ (на это намекало удаление настроек после перезапуска роутера), а не в память, пишет. Поэтому и написал, чтобы поправили)

2 минуты назад, redarmy сказал:

Я у себя сделал, чтобы только при старте роутера unmap выставлялся

Подскажите, пожалуйста, каким образом?

3 минуты назад, redarmy сказал:

С if-then-fi решение нормальное.

Выложу тогда, мало ли кому понадобится)

if [ $(cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode) != unmap ]; then echo -n unmap > /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode; fi; fstrim -v /tmp/mnt/путь_монтирования

Если кто будет делать, учтите, что для cron нужно код именно так писать, в одну строку, по-другому он почему-то не понимает...

  • Thanks 1
  • 0
Posted
33 минуты назад, DzmitryK сказал:
40 минут назад, redarmy сказал:

Я у себя сделал, чтобы только при старте роутера unmap выставлялся

Подскажите, пожалуйста, каким образом?

В   /opt/etc/init.d/ положил скрипт 'S99drivesetup', в котором выставляется unmap. Скрипт в аттаче (плюс не забыть сделать его исполняемым - chmod +x ./S99drivesetup), 

S99drivesetup

  • Thanks 1
  • 0
Posted (edited)

Подниму тему и оставлю полезность от себя - сгруппировал с просторов Интернета.

А именно - как легко сохранять логи fstrim в комбинации fstrim + cron . syslog-ng не понадобится 👌

Опишу поподробнее, т.к. самому надо упорядочить информацию в голове 🧠

 

Рецепт:

1. Делать всё, как указывает ув. redarmy в первом посте.

Не забываем про 

mount | grep sd

чтобы посмотреть точки монтирования, как упоминал ув. vai73

Для раздела EXT4 команда trim у меня срабатывает. Оборудование: NVMe SSD в боксе от JEYI (контроллер Realtek RTL9210B), подключенный к USB 3.0 на роутере. Но, похоже, до сих пор в драйвер NTFS, вшитый в Keenetic (прошивка 4.2.6.3), не добавили возможность trim - у меня не срабатывает.

Использую свой SSD, как своеобразный NAS: под торренты, бэкапы и файлообмен. Задача - запускать команду trim раз в месяц для тех разделов, где это применимо. Почти год разделы NTFS этой команды не получали - критических изменений в работе SSD не заметил. Подключил SSD-бокс через USB к Windows и запустил "оптимизацию". Ещё годик может поработать 😁

 

2. Далее для периодического запуска fstrim нужен cron - инструкция по его установке от ув. gvan в первом посте здесь .

Установку и настройку logrotate в той инструкции можно игнорировать.

Настраиваем основной файл /opt/etc/crontab - отключаем лишние строки, ставя перед ними # . Перезапускаем cron.

 

2.1. Если в веб-консоли Keenetic, в логе "Диагностика > Показать журнал" появляются строки

(*system*) BAD FILE MODE (/opt/etc/crontab)
 

то помогает следующее:

chmod 0600 /opt/etc/crontab

/opt/etc/init.d/S10cron restart

Пока не особо мониторил, но кажется, что иногда эти права доступа всё равно могут слетать 🤔

 

3. Добавляем для cron задачу (файл со скриптом) в нужный каталог (например, /opt/etc/cron.monthly ). Я назвал trim .

И вот тут кроется основная хитрость. Первоначально взял скрипт из поста ув. DzmitryK , но модифицировал его:

if [ $(cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode) != unmap ]; then echo -n unmap > /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode; fi; date +"%F %H:%M" >> /ПУТЬ/ДО/ЛОГА/ЛОГ.txt && fstrim -v /tmp/mnt/ПУТЬ_МОНТИРОВАНИЯ >> /ПУТЬ/ДО/ЛОГА/ЛОГ.txt

По-прежнему важно писать скрипт в одну строку - без переносов.

 

3.1. Важно сделать файл со скриптом исполняемым. С командной строки, для примера:

chmod 755 /opt/etc/cron.monthly/trim
ИЛИ
chmod +x /opt/etc/cron.monthly/trim

 

3.2. Скрипт у меня выглядит так:

if [ $(cat /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode) != unmap ]; then echo -n unmap > /sys/block/sda/device/scsi_disk/0\:0\:0\:0/provisioning_mode; fi; date +"%F %H:%M" >> /opt/var/log/fstrim.txt && fstrim -v /tmp/mnt/853b1204-9fe9-284a-ad12-0d439adb0bd1 >> /opt/var/log/fstrim.txt

Из скрипта видно, что логи будут писаться в файл /opt/var/log/fstrim.txt - его создал заранее.

 

Из нововведений. Код:

date +"%F %H:%M" >> /opt/var/log/fstrim.txt

отвечает за вставку даты и времени отдельной строкой. Формат здесь такой: 2025-06-13 23:25 - можно менять.

 

Далее сама утилита fstrim при выполнении дописывает следующей строкой в этот же лог результат от себя:

fstrim -v /tmp/mnt/853b1204-9fe9-284a-ad12-0d439adb0bd1 >> /opt/var/log/fstrim.txt

 

Результат - вполне себе лаконичный лог, когда именно, и с каким результатом отрабатывал fstrim:

 

2025.06.14 00-25-17 01.png

Edited by Draco47
  • 0
Posted

У меня почти так и сделано, как видно по моим скринам выше.

Только у меня, в отличие от того как сделано у вас, пишется не в opt, а в tmp, и ежесуточно а не ежемесячно. Если entware установлено во внутреннюю память (у меня так) то крайне нежелательно любое логгирование (убивает ресурс накопителя), особенно если это частые ежедневные логи. Если установлено на hdd/ssd, то такой проблемы нет. Да, в tmp пропадет после перезагрузки, но нужно решать нужны ли эти логи в долгую)

  • 0
Posted (edited)

DzmitryK, Вы хотите сказать, что в моём случае логи, помимо SSD, также пишутся во внутреннюю память роутера?

Если так, то необходимо использовать /tmp/mnt/ПУТЬ/ДО/КАТАЛОГА/НА/SSD/ЛОГ.txt вместо /opt/var/log/fstrim.txt ???

P.S. Кажется, понял - Вы имеете ввиду свой случай, когда Entware стоит во внутренней памяти роутера. У меня же Entware стоит на отдельном разделе SSD, на ресурс которого не обращаю внимания - покупал его, чтоб не жалко было оборудование под торренты гробить.

Edited by Draco47
Добавил P.S.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.