SSDs рдЬреИрд╕реЗ рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ ATA рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА TRA рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд OS, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рджреЛ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- рддреНрдпрд╛рдЧреЗрдВ - рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рддред рдЬреИрд╕реЗ рд╣реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ TRIM рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдлреНрд░реЙрд╕реНрдЯрд┐рдо - рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рдУрдПрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╕реВрдЪреА рдкрд░ рдЪрд▓рддреА рд╣реИ, рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрдПрд╕ рд╕реЗ рд╣рдЯрд╛рдП рдЧрдП рдмреНрд▓реЙрдХ рдХреА рдПрдХ рд╕реВрдЪреА рднреЗрдЬрддреА рд╣реИред
рдлреНрд░реЙрд╕реНрдЯрд┐рдо рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдпрд╣ рд╕реЗрд╡рд╛ рдХреЛ рд╕рд┐рд╕реНрдЯрдордб рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ fstrim.service
, рд▓реЗрдХрд┐рди рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рдЯрдХрд╛рдПрдЧрд╛, рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ fstrim.timer
рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ TRIM рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред
рд╕реЗрд╡рд╛ рд╕рдХреНрд░рд┐рдпрдг рдЙрджрд╛рд╣рд░рдг:
systemctl enable fstrim.service && \
systemctl start fstrim.service && \
systemctl status fstrim.service
рд▓реЗрдХрд┐рди рдпреЗ рдЙрдкрд╛рдп рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдПрд▓рд╡реАрдПрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдПрд▓рдпреВрдПрдо рдкрд░ рдПрд▓рдпреВрдХреЗрдПрд╕ рдореЗрдВ рд░рд╣рддреА рд╣реИрдВ , ,
:

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ SATA рдирд┐рдпрдВрддреНрд░рдХ AHCI рдореЛрдб рдореЗрдВ рд╣реИ рдФрд░ IDE рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдпрдерд╛ TRIM рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:
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