Debian-Gast auf Windows-Host mit discard/TRIM.
Dies ist keine direkte Antwort an sich, da ich das Problem anspreche, nicht die Frage. Anstatt das Image periodisch zu komprimieren, verwendet diese Lösung Discard, um unbenutzte Blöcke im VM-Festplattenimage des Hosts automatisch zu entfernen.
Diese Lösung erfordert ein Gast-Dateisystem, das kontinuierliches TRIM unterstützt. Das Arch-Linux-Wiki hat eine Liste von Dateisystemen, die TRIM-Operationen unterstützen .
FDE und cryptoroot sind ausdrücklich nicht abgedeckt, da Sicherheitsbedenken bestehen und auch keine der anderen Lösungen dieser Frage eine Komprimierung erlauben würde. Das Arch-Linux-Wiki enthält Informationen über TRIM- und dm-crypt-Geräte .
Theoretisch funktioniert dies für alle Linux-Gäste auf VBox-Hosts, die VDI-Speicher verwenden.
Host-Konfiguration
Wenn die VBox beendet ist und keine VMs laufen, fügen Sie Ihren Platten Unterstützung für das Verwerfen hinzu, indem Sie sowohl discard
als auch nonrotational
für jede Platte in der Konfigurationsdatei für die VM einstellen. Zu diesem Zeitpunkt befindet sich discard
nicht in der GUI, aber nonrotational
wird als das Kontrollkästchen “Solid-State-Laufwerk” angezeigt. (ref: vbox forums, discard support )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Booten Sie die VM hoch und überprüfen Sie, ob die TRIM-Unterstützung aktiviert ist:
sudo hdparm -I /dev/sda | grep TRIM
Gastkonfiguration
Wenn LVM in Gebrauch ist, ändern Sie die Verwerfen-Einstellung in /etc/lvm/lvm.conf
. (ref: debian wiki, lvm.conf Beispiel )
devices {
...
issue_discards = 1
}
Fügen Sie in der fstab die Option discard
zu den Dateisystemen hinzu, die Sie automatisch verwerfen möchten (ref: debian wiki, fstab Beispiel )
UUID=8db6787f-1e82-42d8-b39f-8b7491a0523c / ext4 discard,errors=remount-ro 0 1
UUID=70bfca92-8454-4777-9d87-a7face32b7e7 /build ext4 discard,errors=remount-ro,noatime 0 1
Die Dateisysteme neu mounten, damit sie ihre neuen Optionen aufnehmen.
sudo mount -o remount /
sudo mount -o remount /build
Manuelles Beschneiden freier Blöcke jetzt mit fstrim
. fstrim
verwendet das gemountete Dateisystem, nicht das Block-Gerät, das es unterstützt. Anstatt in fstab
kontinuierliches Verwerfen einzustellen, könnte dies auf einem wöchentlichen Cron erfolgen. (Der wöchentliche Cron wird für physische SSDs empfohlen, die möglicherweise fragwürdige Unterstützung für TRIM haben, aber das ist hier nicht relevant, da die zugrundeliegenden SSDs vom Host-Betriebssystem gehandhabt werden. siehe: (https://wiki.debian.org/SSDOptimization#WARNING)).
fstrim /
fstrim /build
An diesem Punkt sollten die Größe der Dateisysteme innerhalb der VM und die Größe der VM-Images ziemlich nahe beieinander liegen.
Getestet mit:
- Guest1: Debian 8.7, Kernel: linux 4.8 grsec aus Backports, Dateisystem: ext4
- Gast2: Debian 9 RC2, Kernel: linux 4.9, Dateisystem: ext4
- Host1: VBox 5.1.14, Win7, Bild fmt: VDI
- Host2: VBox 5.1.14, Win8.1, Bild fmt: VDI