TRIM funktioniert nicht

Allgemeine Diskussionen über den Einsatz von VirtualBox.
Post Reply
Miesmuschel
Posts: 34
Joined: 7. Jul 2013, 19:53

TRIM funktioniert nicht

Post by Miesmuschel »

Hallo,

wenn ich im Gast "sudo fstrim -v /" aufrufe, erhalte ich die Meldung, dass diese Funktion nicht unterstützt wird.

"hdparm -I /dev/sda | grep trim -i" liefert kein Ergebnis (leere Ausgabe).

"lsblk -o name,rota" zeigt an, dass /dev/sda als nicht drehendes Medium (also als SSD) erkannt wird.


Was muss ich machen, um TRIM erfolgreich ausführen zu können?


Host: Linux Mint 20.3, SSD, VirtualBox 6.1.50 (aus den offiziellen Paketquellen)
Guest: Linux Mint 20.3,
xfce20.vdi ist am SATA-Controller mit Haken bei "SSD-Laufwerk" angeschlossen
netsrak
Posts: 13
Joined: 22. Oct 2013, 12:57

Re: TRIM funktioniert nicht

Post by netsrak »

Welchen Sinn soll denn ein Trim bei einem virtuellen Dateisystem mit einer virtuellen SSD Festplatte machen, die als eine große Datei auf einer physikalischen Festplatte abgebildet ist?
Miesmuschel
Posts: 34
Joined: 7. Jul 2013, 19:53

Re: TRIM funktioniert nicht

Post by Miesmuschel »

Es könnte dazu beitragen, dass eine dynamische Image-Datei auf dem Host nicht unnötig wachsen müsste. Dadurch würde Platz gespart und das Wear-Leveling begünstigt.

Evtl., da bin ich mir aber nicht sicher, ob das möglich ist, könnte auch der unbenutzte Teil der großen Image-Datei dem FS und damit dem SSD-Controller als "frei" mitgeteilt werden. Das müsste aber dann vermutlich auch VBox und das Filesystem unterstützen.
Dösbaddel
Posts: 3
Joined: 26. Jul 2024, 17:26
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Linux, Windows

Re: TRIM funktioniert nicht

Post by Dösbaddel »

Als Alternative könnte regelmäßig VBoxManage modifymedium mit der --compact-Option ausgeführt werden. Vorher in der VM den freien Speicher mit Nullen füllen, z. B. mit `zerofree` (bei EXT-Dateisystem) oder alternativ:

Code: Select all

dd if=/dev/zero of=zero bs=1M status=progress
rm zero
Das wird schnell ablaufen, da fortlaufende Nullblöcke nicht in die VDI geschrieben werden.

Falls die VM ein komprimierendes Dateisystem nutzt, muss die Kompression (temporär) deaktiviert werden. Im Fall von Btrfs dem obigen Code voranstellen:

Code: Select all

touch zero
btrfs property set zero compression none
Miesmuschel
Posts: 34
Joined: 7. Jul 2013, 19:53

Re: TRIM funktioniert nicht

Post by Miesmuschel »

Dösbaddel wrote: 28. Jul 2024, 20:18 Als Alternative könnte regelmäßig VBoxManage modifymedium mit der --compact-Option ausgeführt werden.
Geht das auch mit Snapshot-VDIs?
Vorher in der VM den freien Speicher mit Nullen füllen, z. B. mit `zerofree` (bei EXT-Dateisystem) oder alternativ:

Code: Select all

dd if=/dev/zero of=zero bs=1M status=progress
rm zero
Das wird schnell ablaufen, da fortlaufende Nullblöcke nicht in die VDI geschrieben werden.
Wie wird das denn gespeichert?
Haben die VDIs intern ein Filesystem mit einem MFT, oder Pendant, in dem dann die Einträge für die gelöschten Dateien ebenfalls gelöscht werden?

Ich werde das mit dem Überschreiben mit Nullen mal ausprobieren und dabei beobachten, ob tatsächlich keine, bzw. nur wenige Schreibzugriffe auf die physische SSD vorgenommen werden. Dann wäre es eine gute Alternative.
Dösbaddel
Posts: 3
Joined: 26. Jul 2024, 17:26
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Linux, Windows

Re: TRIM funktioniert nicht

Post by Dösbaddel »

Die Unterstützung für das TRIM-Kommando kann tatsächlich über vboxmanage storageattach mit der Option --discard=on aktiviert werden.
Post Reply