Расписание trim

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#1

21 мар 2025, 14:23

"Из коробки" в LM установлено, что для SSD trim автоматически выполняется по понедельникам примерно после полуночи. Пример:
systemctl list-timers
NEXT Mon 2025-03-24 01:27:02 +03
LEFT 2 days
LAST Mon 2025-03-17 00:20:31 +03
- fstrim.timer fstrim.service

Кто-нибудь сталкивался с необходимостью переназначить это время на другое? Смею предположить, что подавляющее большинство пользователей в это время с воскресенья на понедельник уже спит, в результате чего полезность такого задания стремится к нулевому значению. Или же следует пойти по одному из двух других путей: монтировать ext4 с discard, либо для выполнения trim в нужное время создать отдельное задание cron?

Аватара пользователя

hellonet
Сообщения: 3326
Зарегистрирован: 11 окт 2016, 12:58
Решено: 17
Откуда: Новосибирск
Благодарил (а): 1208 раз
Поблагодарили: 519 раз
Контактная информация:

Расписание trim

#2

21 мар 2025, 14:47

madesta писал(а):
21 мар 2025, 14:23
trim автоматически выполняется по понедельникам примерно после полуночи.
Время "После полуночи" скорее всего длится 24 часа - до следующей полуночи. Если в понедельник вечером после работы включил комп, то TRIM отработает

Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#3

21 мар 2025, 15:11

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

Код: Выделить всё

 systemctl status fstrim.timer
     fstrim.timer - Discard unused filesystem blocks once a week
     Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; preset: enabled)
     Active: active (waiting) since Fri 2025-03-21 11:07:46 +03; 3h 49min ago
    Trigger: Mon 2025-03-24 01:27:02 +03; 2 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim
мар 21 11:07:46 H-4 systemd[1]: Started fstrim.timer - Discard unused filesystem blocks once a week.
Не буду утверждать категорично, но полагаю, что если задание не было выполнено, но оно автоматически планируется на следующую неделю. Расковырять бы таймеры systemd, но у меня таких знаний пока что не имеется. И по какой команде посмотреть, выполнен ли был trim, если в понедельник вечером после работы я включился?

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#4

21 мар 2025, 15:35

madesta писал(а):
21 мар 2025, 14:23
Cмею предположить, что подавляющее большинство пользователей в это время с воскресенья на понедельник уже спит, в результате чего полезность такого задания стремится к нулевому значению.
не смей, таймер сработает сразу же, если увидит что время прошло...
madesta писал(а):
21 мар 2025, 15:11
Active: active (waiting) since Fri 2025-03-21 11:07:46 +03; 3h 49min ago
вот это время когда он отработал крайний раз

Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#5

21 мар 2025, 18:18

WWolf писал(а):
21 мар 2025, 15:35
когда он отработал крайний раз
Не соглашусь. По-моему мнению, это время прошло с запуска самой службы fstrim.service, но не триггера запуска trim, то есть это время прошло с момента включения мной компьютера, что примерно и совпадает. Вот недавно с полчаса назад пришёл из магазина и включил компьютер:

Код: Выделить всё

~$ systemctl status fstrim.timer
● fstrim.timer - Discard unused filesystem blocks once a week
     Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; preset: enabled)
     Active: active (waiting) since Fri 2025-03-21 17:19:45 +03; 38min ago
    Trigger: Mon 2025-03-24 01:16:10 +03; 2 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim

мар 21 17:19:45 H-4 systemd[1]: Started fstrim.timer - Discard unused filesystem blocks once a week.
Что-то мне не верится, что у меня при включении отработался trim. Исходя из такой логики, trim должен выполняться при каждом новом запуске системы. Тогда из каких соображений имеется целая служба с таймером?
Попытка найти концы пока что не увенчалась успехом. В /etc/systemd/system/timers.target.wants найден fstrim.timer, являющийся ссылкой на /lib/systemd/system/fstrim.timer Но его листинг ясности не внёс:

Код: Выделить всё

[Unit]
Description=Discard unused filesystem blocks once a week
Documentation=man:fstrim
ConditionVirtualization=!container
ConditionPathExists=!/etc/initrd-release

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
RandomizedDelaySec=100min

[Install]
WantedBy=timers.target
А вот сама служба:

Код: Выделить всё

[Unit]
Description=Discard unused blocks on filesystems from /etc/fstab
Documentation=man:fstrim(8)
ConditionVirtualization=!container

[Service]
Type=oneshot
ExecStart=/sbin/fstrim --listed-in /etc/fstab:/proc/self/mountinfo --verbose --quiet-unsupported
PrivateDevices=no
PrivateNetwork=yes
PrivateUsers=no
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
MemoryDenyWriteExecute=yes
SystemCallFilter=@default @file-system @basic-io @system-service
Можно было бы предположить, что при старте службы выполняется /sbin/trim, но в /sbin я trim не нашёл

Код: Выделить всё

~$ ls /sbin
...
sysctl
system-tools-backends
tarcat
tc
telinit
thermald
tipc
tune.exfat
tune2fs
tunefs.reiserfs
u-d-c-print-pci-ids
umount.ecryptfs
... 

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#6

21 мар 2025, 18:24

madesta писал(а):
21 мар 2025, 18:18
По-моему мнению
документацию читай

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#7

21 мар 2025, 18:25

madesta писал(а):
21 мар 2025, 18:18
Можно было бы предположить, что при старте службы выполняется /sbin/trim, но в /sbin я trim не нашёл
потому что искать надо
madesta писал(а):
21 мар 2025, 18:18
ExecStart=/sbin/fstrim

Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#8

21 мар 2025, 18:29

WWolf писал(а):
21 мар 2025, 18:25
потому что искать надо
Посыпаю голову пеплом, каюсь :blush: . Тогда получается, что служба с таймером это как дополнительная процедура и вопрос поднят напрасно?

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#9

21 мар 2025, 18:37

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

Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#10

21 мар 2025, 18:51

Просто смутило в man fstrim вот это:
Running fstrim frequently, or even using mount -o discard, might negatively affect the lifetime of poor-quality SSD devices. For most desktop and server systems a sufficient trimming frequency is once a week.
WWolf писал(а):
21 мар 2025, 18:37
в интернетах инфы с избытком
Согласен, что с избытком, но не всегда можно получить внятное объяснение почему именно так, а не иначе.

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#11

21 мар 2025, 19:05

madesta, короче я понял - тебя смутило время отработки таймера и время самого действа :)
идём в fstrim.timer и видим:

Код: Выделить всё

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
RandomizedDelaySec=100min  
то есть исполнять действо раз в неделю, с точностью 1час и рандомной задержкой 100 минут...

Аватара пользователя

WWolf
Сообщения: 4176
Зарегистрирован: 14 фев 2018, 00:51
Решено: 35
Откуда: Краснодар
Благодарил (а): 1733 раза
Поблагодарили: 1273 раза
Контактная информация:

Расписание trim

#12

21 мар 2025, 19:08

madesta, есть такая команда systemctl list-timers
которая показывает когда будет следующий вызов действа, сколько времени осталось до него и когда исполнилось в прошлый раз

Код: Выделить всё

NEXT                                 LEFT LAST                              PASSED UNIT                                   ACTIVATES                               
Mon 2025-03-24 00:57:37 MSK        2 days Mon 2025-03-17 11:15:55 MSK            - fstrim.timer                           fstrim.service
если текущее время больше чем должен был произойти вызов (ну вот в понедельник включится комп), то немедленно взводится действо с рандомной задержкой

Аватара пользователя

Автор темы
madesta
Сообщения: 2384
Зарегистрирован: 11 июн 2017, 21:47
Решено: 31
Откуда: BY
Благодарил (а): 83 раза
Поблагодарили: 497 раз
Контактная информация:

Расписание trim

#13

21 мар 2025, 20:21

WWolf писал(а):
21 мар 2025, 19:08
если текущее время больше чем должен был произойти вызов (ну вот в понедельник включится комп), то немедленно взводится действо с рандомной задержкой
Хотел найти подтверждение тому, что если не было выполнено по таймеру, то будет выполнено при следующем включении системы. Если это действительно так, то вопрос, в общем-то, и отпадает. Как для меня так значения не имеет, но знакомые могут вынести мозг. А лично я сам себе "злобный Буратино", который в ночь на понедельник может запланировать выключиться и попозже :hoho: :
shutdown-plan.png
shutdown-plan.png (9.93 КБ) 476 просмотров

Аватара пользователя

slant
Сообщения: 4837
Зарегистрирован: 21 июн 2017, 18:09
Решено: 110
Благодарил (а): 53 раза
Поблагодарили: 2160 раз
Контактная информация:

Расписание trim

#14

21 мар 2025, 21:25

В общем-то, это cron так не умел. Чтобы добиться такого эффекта - придумали anacron. Посмотрел на все это Поттеринг и решил - и это тоже переписать по своему, как и все остальное в systemd. В своем уникальном стиле "сложнее но проще". Или "проще но сложнее". Кому как, в общем. :)

Аватара пользователя

hellonet
Сообщения: 3326
Зарегистрирован: 11 окт 2016, 12:58
Решено: 17
Откуда: Новосибирск
Благодарил (а): 1208 раз
Поблагодарили: 519 раз
Контактная информация:

Расписание trim

#15

22 мар 2025, 08:07

madesta писал(а):
21 мар 2025, 20:21
который в ночь на понедельник может запланировать выключиться и попозже :
Можно вообще в воскресенье не выключать, а выключить в понедельник как проснешься

Ответить

Вернуться в «Системные утилиты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя