Debian-Gast auf Windows-Host mit discard / TRIM.
Dies ist an sich keine direkte Antwort, da ich das Problem und nicht die Frage anspreche. Anstatt das Image regelmäßig zu komprimieren, werden bei dieser Lösung nicht verwendete Blöcke im VM-Image des Hosts mithilfe von Discard automatisch entfernt.
Diese Lösung erfordert ein Gastdateisystem, das kontinuierliches TRIM unterstützt. Das Arch Linux-Wiki enthält eine Liste von Dateisystemen, die TRIM-Operationen unterstützen .
FDE und Cryptoroot werden speziell nicht behandelt, da es Sicherheitsbedenken gibt und keine der anderen Lösungen für diese Frage eine Komprimierung ermöglichen würde. Das Arch Linux-Wiki enthält Informationen zu TRIM- und dm-crypt-Geräten .
Theoretisch funktioniert dies für alle Linux-Gäste auf VBox-Hosts, die VDI-Speicher verwenden.
Host-Konfiguration
Mit VBox verlassen und keine VMs ausgeführt wird , fügen beide auf Ihre Festplatten Ablage Unterstützung durch das Setzen discard
und nonrotational
für jede Platte in der Konfigurationsdatei für die VM. Zu diesem Zeitpunkt discard
befindet sich das nonrotational
Kontrollkästchen nicht in der GUI, sondern wird als "Solid-State-Laufwerk" angezeigt. (ref: vbox foren, support verwerfen )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Starten Sie die VM und vergewissern Sie sich, dass die TRIM-Unterstützung aktiviert ist:
sudo hdparm -I /dev/sda | grep TRIM
Gastkonfiguration
Wenn LVM verwendet wird, ändern Sie die Discard-Einstellung in /etc/lvm/lvm.conf
. (ref: debian wiki, lvm.conf beispiel )
devices {
...
issue_discards = 1
}
discard
Fügen Sie in fstab die Option zu den Dateisystemen hinzu, die Sie automatisch verwerfen möchten (Ref: Debian-Wiki, Beispiel fstab ).
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
Stellen Sie die Dateisysteme erneut bereit, damit sie ihre neuen Optionen abrufen können.
sudo mount -o remount /
sudo mount -o remount /build
Freie Blöcke jetzt manuell mit zuschneiden fstrim
. fstrim
Verwendet das gemountete Dateisystem und nicht das Blockgerät, das es sichert. Anstatt fortlaufend zu verwerfen fstab
, könnte dies auf einem wöchentlichen Cron erfolgen. (Der wöchentliche Cron wird für physische SSDs empfohlen, die möglicherweise eine fragwürdige Unterstützung für TRIM bieten . Dies ist hier jedoch nicht relevant, da zugrunde liegende SSDs vom Host-Betriebssystem verarbeitet werden. Siehe: ssd trim warning ).
fstrim /
fstrim /build
Zu diesem Zeitpunkt sollten die Größe der Dateisysteme in der VM und die Größe der VM-Images einen ähnlichen Wert haben.
Getestet mit:
- Gast1: Debian 8.7, Kernel: Linux 4.8 grsec von Backports, Dateisystem: ext4
- Gast2: Debian 9 RC2, Kernel: Linux 4.9, Dateisystem: ext4
- Host1: VBox 5.1.14, Win7, Bilddatei: VDI
- Host2: VBox 5.1.14, Win8.1, Bilddatei: VDI