LINUX.ORG.RU

fstrim и hdd рейд

 , , ,


1

2

Заметил, что запускаемый по расписанию fstrim на Debian 11, усиленно насилует hdd диски! Если запускать

sudo fstrim --listed-in /etc/fstab --verbose
то работает долго и слышно как обычные диски, связанные в рейд, усиленно насилуются, если /etc/fstab скопировать и закомментить hdd раздел, то
sudo fstrim --listed-in /tmp/fstab --verbose
пролетает мгновенно. Что это за подстава? И для hdd надо что-то в fstab прописывать, чтоб его в покое оставили???

vitus@vitus-home:/data/Видео$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=2068fd14-5203-4232-98d2-59a4dd517163 /               ext4    noatime,nodiratime,errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=A544-D3FB  /boot/efi       vfat    umask=0077      0       1
# /data was on /dev/md0 during installation
UUID=1102cf02-8776-4331-9eb4-dea36bf6ae08 /data           ext4    defaults        0       2
# swap was on /dev/nvme0n1p3 during installation
UUID=b1667351-0f67-48ad-a68a-a06548ef6641 none            swap    sw              0       0
★★★★★

Ответ на: комментарий от darkenshvein

Это стандартный сервис

vitus@vitus-home:/data/Видео$ systemctl cat fstrim.service 
# /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

я раньше всегда свой крон писал, а тут якобы в debian 11 «усё работает из коробки» и чесногря был уверен, что fstrim работает только на ssd, а тут такое непонятное поведение. Написать свой конфиг это просто, понять почему так по умолчанию вот вопрос.

vtVitus ★★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

А зачем тебе fstrim с hdd, он же только ssd нужен?

Во-первых, вопрос не об этом. Во вторых, нет, он бывает нужен и на hdd (например, если это smr диск).

anonymous ()
Ответ на: комментарий от anonymous

Не совсем так, AFAIR, fstrim отработает на всём, что умеет в discard.

Как это понять для hdd???

vitus@vitus-home:/data/Видео$ sudo hdparm -I /dev/sda | grep -i trim
	   *	Data Set Management TRIM supported (limit 8 blocks)

И каким образом в fstab или где-нить исчо можно написать типа nofstrim для hdd?

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 2)
Ответ на: комментарий от vtVitus
# lsblk --discard
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda           0      512B       2G         0
└─sda1        0      512B       2G         0
sdb           0        4K       0B         0

# time fstrim -v --listed-in /etc/fstab:/proc/self/mountinfo
/srv/vol/1: 0 B (0 bytes) trimmed on /dev/sdb
/: 0 B (0 bytes) trimmed on /dev/sda1

cat  /sys/block/sdb/device/scsi_disk/6\:0\:0\:0/provisioning_mode 
unmap

# echo "disabled" > /sys/block/sdb/device/scsi_disk/6\:0\:0\:0/provisioning_mode

# umount /srv/vol/1 && mount /srv/vol/1

# time fstrim -v --listed-in /etc/fstab:/proc/self/mountinfo
fstrim: /srv/vol/1: the discard operation is not supported
/: 0 B (0 bytes) trimmed on /dev/sda1
anonymous ()
Ответ на: комментарий от vtVitus

Надеюсь, костылить скрипты с echo "disabled" > /sys/... не будете? :)

То же самое можно сделать при помощи udev правила навроде

ACTION=="add|change", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="disabled"

Но учтите, что это в принципе отключает trim на блочном устройстве, т.е. «ручной» trim (не по таймеру) тоже перестанет работать.

anonymous ()
Ответ на: комментарий от zemidius

Да, спасибо - я ужо разобрался про чудеса современного «маркетингового» железа. Просто расписания для ssd и «hdd» разнёс - trim на двух «hdd» около 40 минут работает. А я думал, почему рейд из 2 жалких тб строился кучу часов. В общем, никому эту smr не рекомендую - такая себе экономия.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от anonymous

Да я, примерно, такое и нагуглил, но совсем отключать не вариант. Но может кому-то и пригодиться, ибо гуглил на русском - половина ссылок на лор идёт - мы в тренде :D :D :D.

vtVitus ★★★★★ ()