<disk type="file" device="disk"> <driver name="qemu" type="qcow2" discard="unmap"/> <target dev="vda" bus="virtio"/>
Dies ist eine alte Version des Dokuments!
Anzeigen, welche Blockdevices auf rotierenden Geräten (z.B. magnetische Festplatten) liegen und welche nicht (z.B. SSDs):
lsblk -o NAME,ROTA
Geräte mit 1 in der Spalte „ROTA“ liegen auf rotierenden Geräten, Geräte mit 0 nicht.
z.B. virtio 1)
lsblk -bo NAME,DISC-MAX
oder
grep -vxl 0 /sys/block/*/queue/discard_max_hw_bytes | sed -r 's:/sys/block/(.*)/queue/discard_max_hw_bytes:/dev/\1:'
freie Bereiche des Dateisystems unter /mnt/ext4
„trimmen“:
fstrim -v /mnt/ext4
/mnt/ext4: 9,3 GiB (9950195712 bytes) trimmed
Ab Debian 10 und Ubuntu 18.04 default:
systemctl edit --force fstrim.timer
[Unit] Description=Discard unused blocks once a week Documentation=man:fstrim [Timer] OnCalendar=weekly AccuracySec=1h Persistent=true [Install] WantedBy=timers.target
systemctl cat fstrim.timer
systemctl edit --force fstrim.service
[Unit] Description=Discard unused blocks [Service] Type=oneshot ExecStart=/sbin/fstrim -av
systemctl cat fstrim.service
TODO: verlangsamt laut diversen Webseiten die Geschwindigkeit in der Dateien gelöscht werden, da nach dem Löschen jeder Datei die SSD informiert wird → prüfen
mount -o discard /dev/sda2 /mnt/ext4
Beim Löschen und verkleinern von Logical Volumes frei werdende Bereiche „trimmen“: 8)
… devices { … issue_discards = 1 … }
<disk type="file" device="disk"> <driver name="qemu" type="qcow2" discard="unmap"/> <target dev="vda" bus="virtio"/>
tr '\0' '\377' < /dev/zero | dd of=/dev/sda2 bs=1MiB status=progress fdisk -l /dev/sda
Device Boot Start End Sectors Size Id Type … /dev/sda2 444416 21415935 20971520 10G 83 Linux
hdparm --read-sector 444416 /dev/sda hdparm --read-sector 21415935 /dev/sda→ sollte lauter Einsen anzeigen TODO: hier prüfe ich nur den ersten und den letzten Sektor, besser wäre ein Test ob alle Sektoren Einsen enthalten
hdparm --read-sector 444416 /dev/sda hdparm --read-sector 21415935 /dev/sda→ sollte lauter Nullen anzeigen TODO: hier prüfe ich nur den ersten und den letzten Sektor, besser wäre ein Test ob alle Sektoren Nullen enthalten
tr '\0' '\377' < /dev/zero | dd of=file1 count=100 bs=512k iflag=fullblock oflag=direct od -x file1
0000000 ffff ffff ffff ffff ffff ffff ffff ffff * 24000000
hdparm --fibmap file1
… byte_offset begin_LBA end_LBA sectors 0 14874624 14884863 10240
rm file1 hdparm --read-sector 14874624 /dev/sda hdparm --read-sector 14884863 /dev/sda→ sollte lauter Einsen ausgeben
hdparm --read-sector 14874624 /dev/sda hdparm --read-sector 14884863 /dev/sda→ sollte lauter Nullen ausgeben
Datei mit lauter Einsen anlegen und wieder löschen: tr '\0' '\377' < /dev/zero | dd of=file1 count=100 bs=512k iflag=fullblock oflag=direct od -x file1
0000000 ffff ffff ffff ffff ffff ffff ffff ffff * 24000000
hdparm --fibmap file1
… byte_offset begin_LBA end_LBA sectors 0 14874624 14884863 10240
hdparm --read-sector 14874624 /dev/sda hdparm --read-sector 14884863 /dev/sda→ sollte lauter Einsen ausgeben
rm file1 syncPrüfen:
watch hdparm --read-sector 14874624 /dev/sda→ sollte (spätestens nach ein paar Minuten) lauter Nullen ausgeben
[Service] ExecStart=lvcreate -l100%FREE -n trim your_volume_group ExecStart=blkdiscard /dev/your_volume_group/trim ExecStart=lvremove your_volume_group/trim