Moderne Datenspeichergeräte wie SSDs benötigen den TRA-Befehl der ATA-Schnittstelle. Dafür bietet das auf dem Linux-Kernel basierende Betriebssystem zwei Steuerungsmethoden auf Dateisystemebene:
- verwerfen - Wird als Option zum Mounten des Dateisystems installiert. Ermöglicht dem Linux-Kernel, den TRIM-Befehl sofort an das Gerät zu senden, sobald das Dateisystem ihn meldet.
- fstrim - Ein Dienstprogramm, das manuell oder planmäßig als Betriebssystemdienst gestartet wird, sendet eine Liste gelöschter Blöcke vom FS, um sie auf dem Gerät zu bereinigen.
Um fstrim zu aktivieren , reicht es aus, den Dienst fstrim.servicein systemd zu aktivieren. Anstelle eines Dienstes, der im Speicher hängen bleibt, ist es jedoch besser, einen Timer zu verwenden fstrim.timer, der das wöchentliche TRIM startet.
Beispiel fĂĽr die Dienstaktivierung:
systemctl enable fstrim.service && \
systemctl start fstrim.service && \
systemctl status fstrim.service
Diese MaĂźnahmen reichen jedoch nicht aus, wenn sich Ihre Dateisysteme auf LVM-Volumes und LVM in LUKS befinden , , ::

Überprüfen Sie zunächst, ob sich der SATA-Controller im AHCI-Modus und nicht in der IDE befindet. Andernfalls funktioniert TRIM nicht:
sudo hdparm -I /dev/sda | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
* Deterministic read ZEROs after TRIM
TRIM supported, SATA AHCI BIOS UEFI.
, discard :
- ( )
- —
/etc/fstab - cryptsetup —
/etc/crypttab - LVM —
/etc/lvm/lvm.conf - —
/boot/grub/grub.cfg
. Arch Linux , Linux.
discard EXT4
/etc/fstab discard defaults, . EXT4. , SATA - /etc/fstab.
discard EXT4. :
sudo tune2fs -o discard /dev/mapper/vg1-lvroot
sudo tune2fs -o discard /dev/mapper/vg1-lvhome
sudo tune2fs -o discard /dev/mapper/vg1-lvvar
tune2fs. /dev/mapper/vg1-lvroot , EXT4 LVM:
sudo tune2fs -l /dev/mapper/vg1-lvroot | grep options
discard fstab
SSD , discard /etc/fstab , EXT4, .
, discard swap :
UUID=e86ab458-341d-4f59-8344-0271d2c363e8 / ext4 rw,noatime,discard 0 0
UUID=44b31816-1193-4dc1-9f58-f70df2250e1a /var ext4 rw,noatime,discard 0 0
UUID=372bc9ae-b581-49a4-abed-ca9f3b67edb6 /home ext4 rw,noatime,discard 0 0
UUID=0BE5-60FB /boot/efi vfat rw,relatime,discard,...,errors=remount-ro 0 0
UUID=cf67ae1e-3a17-4e5e-ac58-ef23725d2359 none swap defaults,discard,pri=-2 0 0
discard LVM
/etc/lvm/lvm.conf issue_discards 1:
devices {
issue_discards = 1
}
, TRIM , TRIM , , lvremove, lvreduce ..
discard root-
, discard , ( , . .) , crypttab:
WARNING: This command can have a negative security impact because it can make filesystem-level operations visible on the physical device. For example, information leaking filesystem type, used space, etc. may be extractable from the physical device if the discarded blocks can be located later. If in doubt, do not use it.
, . , , , , , ? , ? ? :)

, "" LUKS. TRIM , cryptsetup' --allow-discards /etc/crypttab , , /etc/crypttab, root- .
initramfs, initramfs grub Linux.
allow-discards /etc/default/grub cryptdevice GRUB_CMDLINE_LINUX.
:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=3c121aac-ead9-4d57-88be-c1199acf72f0:cryptlvm"
:
GRUB_CMDLINE_LINUX="cryptdevice=UUID=3c121aac-ead9-4d57-88be-c1199acf72f0:cryptlvm:allow-discards"
"" grub':
sudo grub-mkconfig -o /boot/grub/grub.cfg
, initramfs encrypt cryptsetup lvm2:
cat /etc/mkinitcpio.conf | grep ^HOOKS
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 resume filesystems)
grub .
discard

, /home LUKS. , discard /etc/crypttab /etc/fstab.
: man crypttab
TRIM
:
lsblk --discard
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 512B 2G 0
├─sda1 0 512B 2G 0
└─sda2 0 512B 2G 0
└─cryptlvm 0 0B 0B 0
├─vg1-lvroot 0 0B 0B 0
├─vg1-lvvar 0 0B 0B 0
├─vg1-lvswap 0 0B 0B 0
└─vg1-lvhome 0 0B 0B 0
DISC-GRAN (discard granularity) DISC-MAX (discard max bytes), TRIM .
TRIM:
sudo fstrim -v /
/: 7,4 GiB (7906193408 bytes) trimmed
, TRIM . TRIM :
lsblk --discard
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 512B 2G 0
├─sda1 0 512B 2G 0
└─sda2 0 512B 2G 0
└─cryptlvm 0 512B 2G 0
├─vg1-lvroot 0 512B 2G 0
├─vg1-lvvar 0 512B 2G 0
├─vg1-lvswap 0 512B 2G 0
└─vg1-lvhome 0 512B 2G 0
DISC-GRAN 512B SSD 512 bytes. TRIM , . :
sudo cryptsetup status cryptlvm
/dev/mapper/cryptlvm is active and is in use.
type: LUKS1
cipher: aes-xts-plain64
keysize: 512 bits
key location: dm-crypt
device: /dev/sda2
sector size: 512
offset: 4096 sectors
size: 487806976 sectors
mode: read/write
sudo hdparm -I /dev/sda | grep -i "sector size"
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
sudo smartctl -a /dev/sda | grep -i "sector size"
Sector Size: 512 bytes logical/physical
!
UPDATE 14.04.2020 14:20: . AAngstrom .
UPDATE 23.04.2020 22:00: , "" , . vitaliy2