Страница 1 из 1

Расписание trim

Добавлено: 21 мар 2025, 14:23
madesta
"Из коробки" в 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?

Расписание trim

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

Расписание trim

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

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

 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, если в понедельник вечером после работы я включился?

Расписание trim

Добавлено: 21 мар 2025, 15:35
WWolf
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
вот это время когда он отработал крайний раз

Расписание trim

Добавлено: 21 мар 2025, 18:18
madesta
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
... 

Расписание trim

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

Расписание trim

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

Расписание trim

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

Расписание trim

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

Расписание trim

Добавлено: 21 мар 2025, 18:51
madesta
Просто смутило в 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
в интернетах инфы с избытком
Согласен, что с избытком, но не всегда можно получить внятное объяснение почему именно так, а не иначе.

Расписание trim

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

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

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

Расписание trim

Добавлено: 21 мар 2025, 19:08
WWolf
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
если текущее время больше чем должен был произойти вызов (ну вот в понедельник включится комп), то немедленно взводится действо с рандомной задержкой

Расписание trim

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

Расписание trim

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

Расписание trim

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