From 9ded6814c318ffbae18ead69d863e30d42a9c27d Mon Sep 17 00:00:00 2001 From: Ruakij Date: Wed, 7 Oct 2026 22:42:08 +0000 Subject: [PATCH] Pin the fstrim timer and the monthly ZFS trim and scrub per host in the common role to keep them out of the backup window --- common/defaults/main.yml | 9 +++++++- common/tasks/disk_maintenance.yml | 35 +++++++++++++++++++++++++++++++ common/tasks/main.yml | 2 ++ 3 files changed, 45 insertions(+), 1 deletion(-) mode change 100644 => 100755 common/defaults/main.yml create mode 100644 common/tasks/disk_maintenance.yml mode change 100644 => 100755 common/tasks/main.yml diff --git a/common/defaults/main.yml b/common/defaults/main.yml old mode 100644 new mode 100755 index 830b9b9..7a45106 --- a/common/defaults/main.yml +++ b/common/defaults/main.yml @@ -1 +1,8 @@ -ipv6_stable_secret: 1111:2222:3333:4444:5555:6666:7777:8888 +ipv6_stable_secret_seed: "@JW7rQ^P3*f^KRkX3744DZQJb3DfMgZJJMtGc!Jmy!ECBqb^QzAMYLHD8dLvf8m%2bRSRFhgY#SXzAgnxWTvHv#ti6b5PngR^k2gHbQW*%dJ9sdeKM$H77Gymh&xamNN" + +# Times of the heavy disk jobs, for hosts on a shared HDD pool that keep them out of the backup window. +disk_maintenance: + # systemd OnCalendar for fstrim.timer; unset keeps the distribution schedule. + fstrim_on_calendar: + # Cron "minute hour" of the monthly ZFS trim and scrub from zfsutils-linux; unset keeps 00:24. + zfs_cron_time: diff --git a/common/tasks/disk_maintenance.yml b/common/tasks/disk_maintenance.yml new file mode 100644 index 0000000..6e3719e --- /dev/null +++ b/common/tasks/disk_maintenance.yml @@ -0,0 +1,35 @@ +- name: Pin the fstrim timer + when: disk_maintenance.fstrim_on_calendar | default(none) is not none + block: + - name: Create the fstrim timer drop-in directory + file: + path: /etc/systemd/system/fstrim.timer.d + state: directory + + - name: Set the fstrim timer schedule + copy: + dest: /etc/systemd/system/fstrim.timer.d/schedule.conf + content: | + [Timer] + OnCalendar= + OnCalendar={{ disk_maintenance.fstrim_on_calendar }} + RandomizedDelaySec=0 + # A catch-up run after a boot or a timezone change would land at any time. + Persistent=false + register: fstrim_timer + + - name: Restart the fstrim timer + when: fstrim_timer.changed + systemd: + name: fstrim.timer + daemon_reload: yes + state: restarted + +- name: Schedule the monthly ZFS trim and scrub + when: disk_maintenance.zfs_cron_time | default(none) is not none + lineinfile: + path: /etc/cron.d/zfsutils-linux + regexp: '^\S+ \S+ (\S+ \* \* root .*/usr/lib/zfs-linux/{{ item }};.*)$' + line: '{{ disk_maintenance.zfs_cron_time }} \1' + backrefs: yes + loop: [trim, scrub] diff --git a/common/tasks/main.yml b/common/tasks/main.yml old mode 100644 new mode 100755 index 968a70e..ec2b032 --- a/common/tasks/main.yml +++ b/common/tasks/main.yml @@ -9,3 +9,5 @@ - import_tasks: ./aliases.yml - import_tasks: ./networking.yml + +- import_tasks: ./disk_maintenance.yml