Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
lpi2:ssd [2019/01/02 14:33] 127.0.0.1 Externe Bearbeitung |
lpi2:ssd [2021/12/30 08:22] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== SSDs anzeigen ====== | ||
- | 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. | ||
- | |||
- | ====== Daten auf einer Partition oder SSD löschen & TRIM auslösen ====== | ||
- | ((Optional (damit man es besser sieht) Einsen auf die Partition schreiben: | ||
- | tr '\0' '\377' < /dev/zero | dd of=/dev/sda2 bs=1MiB status=progress | ||
- | fdisk -l /dev/sda | ||
- | <file txt ausgabe> | ||
- | Device Boot Start End Sectors Size Id Type | ||
- | … | ||
- | /dev/sda2 444416 21415935 20971520 10G 83 Linux | ||
- | </file> | ||
- | 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)) | ||
- | |||
- | Daten auf Partition ''/dev/sda2'' löschen und [[WPDE>TRIM]] auslösen: | ||
- | blkdiscard /dev/sda2 | ||
- | |||
- | ((Prüfen: | ||
- | 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)) | ||
- | |||
- | ====== manuell freie Bereiche eines Dateisystems "trimmen" ====== | ||
- | ((Optional: 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 | ||
- | <file txt ausgabe> | ||
- | 0000000 ffff ffff ffff ffff ffff ffff ffff ffff | ||
- | * | ||
- | 24000000 | ||
- | </file> | ||
- | hdparm --fibmap file1 | ||
- | <file txt ausgabe> | ||
- | … | ||
- | byte_offset begin_LBA end_LBA sectors | ||
- | 0 14874624 14884863 10240 | ||
- | </file> | ||
- | rm file1 | ||
- | hdparm --read-sector 14874624 /dev/sda | ||
- | hdparm --read-sector 14884863 /dev/sda | ||
- | -> sollte lauter Einsen ausgeben)) | ||
- | |||
- | freie Bereiche des Dateisystems unter ''/mnt/ext4'' "trimmen": | ||
- | fstrim -v /mnt/ext4 | ||
- | <file txt ausgabe> | ||
- | /mnt/ext4: 9,3 GiB (9950195712 bytes) trimmed | ||
- | </file> | ||
- | |||
- | ((Prüfen: | ||
- | hdparm --read-sector 14874624 /dev/sda | ||
- | hdparm --read-sector 14884863 /dev/sda | ||
- | -> sollte lauter Nullen ausgeben)) | ||
- | |||
- | ===== regelmäßig "trimmen" ===== | ||
- | Laut [[https://wiki.debian.org/SSDOptimization#Mounting_SSD_filesystems|Debian Wiki]] ab Version 10 (Buster) nicht mehr nötig, unter Ubuntu 18.04 default: | ||
- | systemctl edit --force fstrim.timer | ||
- | <file txt /etc/systemd/system/fstrim.timer> | ||
- | [Unit] | ||
- | Description=Discard unused blocks once a week | ||
- | Documentation=man:fstrim | ||
- | |||
- | [Timer] | ||
- | OnCalendar=weekly | ||
- | AccuracySec=1h | ||
- | Persistent=true | ||
- | |||
- | [Install] | ||
- | WantedBy=timers.target | ||
- | </file> | ||
- | systemctl cat fstrim.timer | ||
- | |||
- | systemctl edit --force fstrim.service | ||
- | <file txt /etc/systemd/system/fstrim.service> | ||
- | [Unit] | ||
- | Description=Discard unused blocks | ||
- | |||
- | [Service] | ||
- | Type=oneshot | ||
- | ExecStart=/sbin/fstrim -av | ||
- | </file> | ||
- | systemctl cat fstrim.service | ||
- | |||
- | ====== kontinuierlich freie Bereiche eines Dateisystems "trimmen" ====== | ||
- | TODO: verlangsamt laut diversen Webseiten die Geschwindikeit 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 | ||
- | |||
- | ((Prüfen: | ||
- | 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 | ||
- | <file txt ausgabe> | ||
- | 0000000 ffff ffff ffff ffff ffff ffff ffff ffff | ||
- | * | ||
- | 24000000 | ||
- | </file> | ||
- | hdparm --fibmap file1 | ||
- | <file txt ausgabe> | ||
- | … | ||
- | byte_offset begin_LBA end_LBA sectors | ||
- | 0 14874624 14884863 10240 | ||
- | </file> | ||
- | hdparm --read-sector 14874624 /dev/sda | ||
- | hdparm --read-sector 14884863 /dev/sda | ||
- | -> sollte lauter Einsen ausgeben | ||
- | rm file1 | ||
- | sync | ||
- | |||
- | Prüfen: | ||
- | watch hdparm --read-sector 14874624 /dev/sda | ||
- | -> sollte (spätestens nach ein paar Minuten) lauter Nullen ausgeben)) | ||
- | |||
- | ====== kontinuierlich freie Bereiche im LVM "trimmen" ====== | ||
- | Beim löschen und verkleinern von Logical Volumes frei werdende Bereiche "trimmen": TODO: warum ist das nicht default? | ||
- | <file txt /etc/lvm/lvm.conf> | ||
- | … | ||
- | devices { | ||
- | … | ||
- | issue_discards = 1 | ||
- | … | ||
- | } | ||
- | </file> | ||