Как работает trim на хостах pve? Мы разрешили discard для гостевых машин и в них работает вызов fstrim
Jun 09 00:04:04 backend fstrim[1725601]: /: 32.4 GiB (34754322432 bytes) trimmed on /dev/disk/by-uuid/b388b8f9-8ac5-494f-91aa-6399c248acf9 Jun 16 00:08:57 backend fstrim[243125]: /: 29.9 GiB (32120410112 bytes) trimmed on /dev/disk/by-uuid/b388b8f9-8ac5-494f-91aa-6399c248acf9 Jun 23 00:09:55 backend fstrim[2933059]: /: 34.4 GiB (36972310528 bytes) trimmed on /dev/disk/by-uuid/b388b8f9-8ac5-494f-91aa-6399c248acf9
Далее, на хосте тоже работает вызов fstrim
Aug 18 00:50:51 pve fstrim[1284794]: /boot: 891.8 MiB (935067648 bytes) trimmed on /dev/md0 Aug 18 00:50:51 pve fstrim[1284794]: /: 31.4 GiB (33708711936 bytes) trimmed on /dev/mapper/vgssd-root Aug 25 00:38:39 pve fstrim[151816]: /boot: 0 B (0 bytes) trimmed on /dev/md0 Aug 25 00:38:39 pve fstrim[151816]: /: 3.1 GiB (3323039744 bytes) trimmed on /dev/mapper/vgssd-root
Вот так выглядит вызов fstrim из debian, например
cat /lib/systemd/system/fstrim.service [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
то есть, оно трогает только примонтированные сущности. НО. Сама по себе операция trim выполняется кодом прошивки контроллера конкретного накопителя. Но мы не работаем непосредственно с накопителями. Накопители состоят в raid. Поверх raid размещён LVM. И уже на LV размещены файловые системы, которые примонтированы в OS.
Как работает fstrim? Нужно ли разрешать-вызывать trim на гостевых машинах? Нужно ли переделывать вызов trim на хостах виртуализации?
В общем, вообще нет понимания как это работает. Помогите понять.