Je suis conscient du grand nombre de publications sur Internet disant que cela ne fonctionnerait pas et pourquoi et j'ai vraiment passé des jours à chercher des solutions il y a des mois, mais j'ai trouvé hier quelques conseils pour "activer le support de commande TRIM" pour les machines invitées . Je l'ai essayé et "ça a l'air" de fonctionner. Ce que j'aimerais savoir, c'est où est la prise ou cela fonctionne-t-il vraiment comme il se doit.
Sources:
https://forums.virtualbox.org/viewtopic.php?f=7&t=51768
http://jaysonrowe.blogspot.com/2013/08/compacting-virtualbox-vdi.html
Ma commande exacte en attachant le fichier disque:
VBoxManage storageattach "GuestOsMachineName" --storagectl "SATA" --port 1 --device 0 --nonrotational on --discard on --medium "C: \ path \ to \ file.vdi" --type hdd
Qui a généré cette entrée dans le fichier * .vbox de la machine:
<AttachedDevice nonrotational="true" discard="true" type="HardDisk" port="1" device="0">
<Image uuid="{3836a042-a83e-4000-9a59-e95ad65162ce}"/>
</AttachedDevice>
Pour être sûr que je ne perdrais aucune donnée, ce lecteur était le deuxième connecté à la machine. J'ai fait un test simple comme copier un fichier sur le lecteur, le laisser, redémarrer la machine, arrêter la machine, vérifier s'il est là après le démarrage, regarder l'utilisation du fichier disque dans le système d'exploitation hôte. Les résultats sont:
- fichier disque attaché sans options --nonrotational et --discard conserve sa taille (dynamique) même après la suppression des fichiers dans le système d'exploitation invité
- le fichier disque attaché avec les deux options mentionnées ci-dessus libère l'espace après la suppression des données
Voici maintenant mes questions:
- que fait exactement l'option --discard? ce n'est pas décrit dans le manuel VirtualBox ( http://www.virtualbox.org/manual/ch08.html#vboxmanage-storageattach )
- est-ce vraiment en train de passer TRIM vers le système d'exploitation hôte ou est-ce que ça ressemble?
la source
Réponses:
--discard
options spécifie que l'vdi
image sera réduite en réponse à latrim
commande du système d'exploitation invité. Les exigences suivantes doivent être remplies:De toute évidence, le système d'exploitation invité doit être configuré pour émettre une
trim
commande, ce qui signifie généralement que le système d'exploitation invité est conçu pour penser que le disque est un SSD. Ext4 prend en charge l'-o discard
indicateur de montage; OSX nécessite probablement des paramètres supplémentaires car, par défaut, seuls les SSD fournis par Apple reçoivent cette commande . Windows devrait détecter et prendre en charge automatiquement les SSD au moins dans les versions 7 et 8, je ne sais pas si la détection se produit lors de l'installation ou de l'exécution. Le pilote Linux exFAT (gracieuseté de Samsung) prend en charge la commande discard . Il n'est pas clair si l'implémentation Microsoft d'exFAT prend en charge la même chose, même si le système de fichiers a été conçu pour Flash au départ.Il existe également des méthodes ad hoc à émettre
trim
, par exemple lafstrim
commande Linux , une partie duutil-linux
package.Les solutions antérieures exigeaient que l'utilisateur remette à zéro les zones inutilisées, par exemple en utilisant
zerofree
et en compactant explicitement le disque (je suppose que cela n'est possible que lorsque vm est hors ligne).la source
btrfs balance
aide vraiment à créer autant de régions ajustables que possible.Étant donné que c'est le meilleur résultat sur Google, permettez-moi de clarifier un peu les autres réponses, même s'il s'agit d'un ancien message. Il est en fait possible de faire fonctionner TRIM dans le sens où les blocs virtuels inutilisés sur le système de fichiers invité peuvent avoir les blocs physiques de flash correspondants marqués comme inutilisés pour une meilleure utilisation du flash. Les pièces sont même déjà présentes dans les autres réponses et commentaires.
Tout d'abord, l'hôte doit être configuré pour que l'espace libre soit TRIM. Vous pouvez soit monter le système de fichiers avec -o discard, soit exécuter fstrim sur le système de fichiers régulièrement via cron. Je préfère ce dernier, car la première option peut entraîner le verrouillage du système lors de la suppression de nombreux fichiers à la fois.
Le format de disque utilisé doit être de taille dynamique VDI lors de l'écriture de qarma.
Assurez-vous que nonrotational = "true" discard = "true" sont définis dans le fichier .vbox comme décrit sous OP.
Activez ensuite TRIM dans le système d'exploitation invité comme d'habitude. Sous Linux, je recommande à nouveau une tâche cron exécutant fstrim. Ceci est probablement encore plus important ici, car le coût de TRIM sur l'image du disque virtuel est beaucoup plus élevé que sur un SSD physique, car les données sont déplacées afin de rendre l'image plus petite.
Maintenant, puisque l'image disque est régulièrement compactée, elle ne prendra que l'espace réel utilisé, plus une surcharge de taille de bloc de 1 Mo lors de l'écriture de qarma. Cela signifie à nouveau que l'espace libre sera TRIM'ed sur le SSD hôte.
la source
VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --nonrotational on --discard on