Invité Debian sur un hôte Windows en utilisant discard / TRIM.
Ce n'est pas une réponse directe en soi, car je traite du problème, pas de la question. Au lieu de compacter périodiquement l'image, cette solution utilise discard pour supprimer automatiquement les blocs inutilisés de l'image de disque de la machine virtuelle hôte.
Cette solution nécessite un système de fichiers invité prenant en charge TRIM en continu. Le wiki Arch Linux contient une liste de systèmes de fichiers prenant en charge les opérations TRIM .
FDE et cryptoroot ne sont pas spécifiquement couverts, car il existe des problèmes de sécurité et aucune des autres solutions à cette question ne permettrait un compactage non plus. Le wiki Arch Linux contient des informations sur les périphériques TRIM et dm-crypt .
En théorie, cela fonctionnera pour tous les invités Linux sur des hôtes VBox utilisant le stockage VDI.
Configuration de l'hôte
Avec la VBox fermée et aucune machine virtuelle en cours d'exécution, ajoutez le support de suppression à vos disques en définissant les deux discard
et nonrotational
pour chaque disque dans le fichier de configuration de la machine virtuelle. A cette époque discard
n'est pas dans l'interface graphique, mais nonrotational
est exposé comme la case à cocher « Solid State Drive ». (ref: forums vbox, supprimer le support )
<AttachedDevice discard="true" nonrotational="true" type="HardDisk" [..other options..] >
Démarrez la machine virtuelle et vérifiez que le support TRIM est activé:
sudo hdparm -I /dev/sda | grep TRIM
Configuration d'invité
Si LVM est utilisé, modifiez le paramètre de mise au rebut dans /etc/lvm/lvm.conf
. (ref: wiki debian, exemple lvm.conf )
devices {
...
issue_discards = 1
}
Dans fstab, ajoutez l' discard
option aux systèmes de fichiers que vous souhaitez supprimer automatiquement (ref: debian wiki, exemple avec 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
Remontez les systèmes de fichiers pour qu'ils récupèrent leurs nouvelles options.
sudo mount -o remount /
sudo mount -o remount /build
Coupez manuellement les blocs libres maintenant avec fstrim
. fstrim
utilise le système de fichiers monté, pas le périphérique bloquant qui le sauvegarde. Au lieu de définir un rejet continu fstab
, cela pourrait être fait sur un cron hebdomadaire. (Le cron hebdomadaire est recommandé pour les disques SSD physiques pouvant prendre en charge le support de TRIM, mais cela n’est pas pertinent ici, car les disques SSD sous-jacents sont gérés par le système d’exploitation hôte. Voir: avertissement de suppression de ssd ).
fstrim /
fstrim /build
À ce stade, la taille des systèmes de fichiers à l'intérieur de la machine virtuelle et celle des images de la machine virtuelle doivent être assez proches.
Testé avec:
- Guest1: Debian 8.7, noyau: linux 4.8 grsec depuis les backports, système de fichiers: ext4
- Guest2: Debian 9 RC2, noyau: linux 4.9, système de fichiers: ext4
- Host1: VBox 5.1.14, Win7, image fmt: VDI
- Host2: VBox 5.1.14, Win8.1, image fmt: VDI