Ospite Debian su host Windows usando discard / TRIM.
Questa non è una risposta diretta di per sé, poiché sto affrontando il problema, non la domanda. Invece di compattare periodicamente l'immagine, questa soluzione utilizza scarta per rimuovere automaticamente i blocchi non utilizzati nell'immagine del disco della macchina virtuale dell'host.
Questa soluzione richiede un filesystem guest che supporti il TRIM continuo. La wiki di Arch Linux ha un elenco di filesystem che supportano le operazioni TRIM .
FDE e cryptoroot non sono specificamente coperti, in quanto vi sono problemi di sicurezza e nessuna delle altre soluzioni a questa domanda consentirebbe la compattazione. La wiki di Arch Linux contiene informazioni sui dispositivi TRIM e dm-crypt .
In teoria, questo funzionerà per tutti i guest Linux su host VBox che usano l'archiviazione VDI.
Configurazione host
Con VBox chiuso e nessuna VM in esecuzione, aggiungere il supporto di eliminazione ai dischi impostando entrambi discard
e nonrotational
per ciascun disco nel file di configurazione per la VM. Al momento discard
non si trova nella GUI, ma nonrotational
è esposto come casella di controllo "Unità a stato solido". (rif: forum vbox, supporto scarta )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Avviare la VM e verificare che il supporto TRIM sia abilitato:
sudo hdparm -I /dev/sda | grep TRIM
Configurazione ospite
Se LVM è in uso, modificare l'impostazione di eliminazione in /etc/lvm/lvm.conf
. (ref: debian wiki, esempio lvm.conf )
devices {
...
issue_discards = 1
}
In fstab, aggiungi l' discard
opzione al filesystem che desideri scartare automaticamente (rif: debian wiki, esempio 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
Rimontare i filesystem per farli scegliere le loro nuove opzioni.
sudo mount -o remount /
sudo mount -o remount /build
Taglia manualmente i blocchi gratuiti ora con fstrim
. fstrim
usa il filesystem montato, non il dispositivo a blocchi che lo supporta. Invece di impostare uno scarto continuo fstab
, questo potrebbe essere fatto su un cron settimanale. (Il cron settimanale è raccomandato per gli SSD fisici che potrebbero avere un supporto discutibile per TRIM, ma questo non è rilevante qui poiché gli SSD sottostanti sono gestiti dal sistema operativo host. Vedi: avviso di ssd trim ).
fstrim /
fstrim /build
A questo punto, la dimensione dei filesystem all'interno della VM e la dimensione delle immagini della VM dovrebbero avere un valore abbastanza vicino.
Testato con:
- Guest1: Debian 8.7, kernel: linux 4.8 grsec da backport, filesystem: ext4
- Guest2: Debian 9 RC2, kernel: linux 4.9, filesystem: ext4
- Host1: VBox 5.1.14, Win7, immagine fmt: VDI
- Host2: VBox 5.1.14, Win8.1, immagine fmt: VDI