Bug 32687

Summary: После установки на ssd не работает trim
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: util-linuxAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: aen, boyarsh, cas, glebfm, imz, ldv, legion, placeholder, rider, zerg
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://altlinux.org/ssd
Bug Depends on:    
Bug Blocks: 32650, 43582, 43581    

Description Anton Farygin 2016-10-31 10:11:51 MSK
Необходимо в случае установки на SSD запускать fstrim как минимум раз в неделю по расписанию.
Comment 1 AEN 2016-10-31 10:43:41 MSK
Как воспроизвести?
Comment 2 AEN 2016-10-31 10:52:17 MSK
А рецепт с fstab : http://vasilisc.com/trim-ssd годится7
Comment 3 Anton Farygin 2016-10-31 10:54:47 MSK
Найти в коде место, где вызывается fstrim -a по крону. 

Ну или поставить на ssd, через месяц дать команду fstrim -v -a и убедиться в том, что TRIM не выполнен.
# fstrim -v -a
/: 52,6 GiB (56417341440 bytes) trimmed
Comment 4 Anton Farygin 2016-10-31 10:56:22 MSK
Рецепт с fstab признан устаревшим. У меня он не работает.

В других популярных дистрибутивах fstrim вызывается по крону.

Эту функцию нужно иметь возможность отключить.
Comment 5 AEN 2016-10-31 10:59:51 MSK
http://help.ubuntu.ru/wiki/ssd/
Comment 6 AEN 2016-10-31 11:01:31 MSK
И еще (ссылки от rider@) : http://askubuntu.com/questions/443761/how-is-trim-enabled
Comment 7 Michael Shigorin 2016-10-31 16:12:05 MSK
Собери пакетик, который можно класть в дистрибутивы?

Разумеется, стоит проверять, что работаем по SSD
(по /sys/block/sd?/queue/rotational -- должен быть нолик).

У меня на локалхосте воткнуто в скриптик синхронизации сизифа :(
Comment 8 Anton Farygin 2016-10-31 16:21:12 MSK
В исходниках util-linux лежит fstrim.service и fstrim.timer
А проверять надо делать или нет оно умеет само (fstrim -a)
Comment 9 Anton Farygin 2016-10-31 18:23:25 MSK
Кстати, для сервера это тоже актуально
Comment 10 Anton Farygin 2016-10-31 18:34:14 MSK
Т.е. - для того, что бы делать TRIM на ssd достаточно время от времени запускать fstrim -a, все необходимые сервисы (systemd) для которого лежат в исходниках util-linux
Устанавливать это нужно не только на сервера, но и на рабочие станции.
fstrim -a сам умеет (я посмотрел в исходники) определять, для каких дисков нужно делать TRIM а для каких - нет.
Эту функцию нужно включить во все собираемые дистрибутивы, включая стартеркиты.
Comment 11 Michael Shigorin 2016-11-01 13:22:03 MSK
По твоей же ссылке:

---
Only Intel and Samsung SSDs will have TRIM enabled by default in Ubuntu 14.04 because some cheap SSDs can even brick themselves when running TRIM.
--- http://askubuntu.com/questions/443761/how-is-trim-enabled

Повторюсь, просьба по возможности помочь с пакетом.  Я давно хочу добавить такую функциональность, сдерживают именно редкие, но меткие косяки прошивок, о которых порой слышу.
Comment 12 Anton Farygin 2016-11-01 13:26:56 MSK
Миша, blacklist теперь в ядре, посмотри последний комментарий здесь:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1259829
А ещё патч тут:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/ata?id=3b8d2676d15d6b2326757adb66b70a9cd6650373

И баг тут:
https://bugzilla.kernel.org/show_bug.cgi?id=71371

Можно смело запускать fstrim -a везде где хочешь.
Если вылезет проблема - совет отключить trim и дать нам информацию о проблемном устройстве для добавления в blacklist ядра.
Comment 13 Michael Shigorin 2016-11-02 15:21:57 MSK
(В ответ на комментарий №8)
> В исходниках util-linux лежит fstrim.service и fstrim.timer
> А проверять надо делать или нет оно умеет само (fstrim -a)

(В ответ на комментарий №10)
> Эту функцию нужно включить во все собираемые дистрибутивы, включая стартеркиты.

Посмотрел в федорином спеке -- там %{_unitdir}/fstrim.* прямо в основной пакет util-linux и кладут.  Может, так и сделать? (с legion@ обсудили подпакет, он не против -- я пошёл смотреть, заметил такое)
Comment 14 AEN 2016-11-02 15:23:32 MSK
(In reply to comment #13)
> (В ответ на комментарий №8)
> > В исходниках util-linux лежит fstrim.service и fstrim.timer
> > А проверять надо делать или нет оно умеет само (fstrim -a)
> 
> (В ответ на комментарий №10)
> > Эту функцию нужно включить во все собираемые дистрибутивы, включая стартеркиты.
> 
> Посмотрел в федорином спеке -- там %{_unitdir}/fstrim.* прямо в основной пакет
> util-linux и кладут.  Может, так и сделать? (с legion@ обсудили подпакет, он не
> против -- я пошёл смотреть, заметил такое)

+1
Comment 15 AEN 2016-11-02 15:34:23 MSK
(In reply to comment #14)
> (In reply to comment #13)
> > (В ответ на комментарий №8)
> > > В исходниках util-linux лежит fstrim.service и fstrim.timer
> > > А проверять надо делать или нет оно умеет само (fstrim -a)
> > 
> > (В ответ на комментарий №10)
> > > Эту функцию нужно включить во все собираемые дистрибутивы, включая стартеркиты.
> > 
> > Посмотрел в федорином спеке -- там %{_unitdir}/fstrim.* прямо в основной пакет
> > util-linux и кладут.  Может, так и сделать? (с legion@ обсудили подпакет, он не
> > против -- я пошёл смотреть, заметил такое)
> 
> +1

В смысле -- в основной пакет, как в Fedora
Comment 16 Michael Shigorin 2016-11-02 15:40:46 MSK
(В ответ на комментарий №8)
> В исходниках util-linux лежит fstrim.service и fstrim.timer
Обсудили ещё с glebfm@ (в т.ч. по взаимодействию с ovz-el) и aen@;
похоже, стоит положить эти файлики туда же, где и бинарник fstrim,
т.е. в основной подпакет util-linux.  Проверяю 2.27.1-alt2.M80P.1...
Comment 17 Anton Farygin 2016-11-02 19:09:49 MSK
Так я о чём и писал. Конечно так и сделать.
Comment 18 Repository Robot 2016-11-02 21:55:57 MSK
util-linux-2.27.1-alt2.M80P.1 -> p8:

* Wed Nov 02 2016 Michael Shigorin <mike@altlinux> 2.27.1-alt2.M80P.1
- added fstrim service/timer (closes: #32687)
Comment 19 Anton Farygin 2016-11-03 09:19:49 MSK
Факта добавления таймера и сервиса недостаточно - нужно активировать его в дистрибутиве.
Comment 20 Michael Shigorin 2016-11-03 12:49:01 MSK
(В ответ на комментарий №19)
> Факта добавления таймера и сервиса недостаточно - нужно активировать его в
> дистрибутиве.
Да, и мне такое положение вещей кажется разумным.  Достаточно

+       @$(call add,DEFAULT_SERVICES_ENABLE,fstrim.timer)
Comment 21 Michael Shigorin 2016-11-24 13:02:36 MSK
Хорошо бы и в сизифе не забыть сделать.
Comment 22 Anton Farygin 2016-12-08 11:16:36 MSK
А можно то-же самое повторить и в Sisyphus ? а то я с удивлением обнаружил что данное изменение было сделано только в p8
Comment 23 Repository Robot 2017-04-03 00:39:39 MSK
util-linux-2.29.2-alt1 -> sisyphus:

* Sun Apr 02 2017 Alexey Gladkov <legion@altlinux> 2.29.2-alt1
- New version (2.29.2).
- Fix `blkid -v` exit code (ALT#29544).
- Add fstrim service/timer (ALT#32687).
- Cleanup logger man-page (ALT#33152).