J'ai un fichier disque de 150 Go (.vmdk, non pré-alloué) où ma machine virtuelle est stockée.
Le fichier est actuellement de 20 Go, mais il augmente tous les jours, même si je ne stocke rien de nouveau dans le système de fichiers invité.
Je cherche depuis des heures un moyen de réduire la taille maximale de ce disque , afin qu'il n'atteigne jamais 150 Go (je voudrais fixer la limite à 30 Go et voir ce qui se passe lorsque la machine virtuelle atteint cette taille) .
Ce que j'ai essayé:
- Conversion de l'image disque avec VMware Converter → cela ne fonctionne pas, l'outil permet uniquement de créer une copie complète ou un «clone lié».
- Création d'une nouvelle machine virtuelle vierge de la taille souhaitée afin de copier les 20 Go de données sur le nouveau .vmdk → Je ne peux pas trouver un moyen d'effectuer la copie ou même de connecter le nouveau disque à ma machine virtuelle existante (afin que j'effectue la copie en utilisant l'OS invité).
- Recherche dans le fichier .vmx pour vérifier si la taille maximale n'a pas été définie en texte brut (ce n'est pas le cas).
Bien que cette tâche semble techniquement assez simple (il n'y a pas de rétrécissement délicat, juste un simple changement de limite de taille), je suis vraiment à court d'idées ici ...
Y a-t-il une solution?
virtual-machine
vmware-workstation
Sébastien
la source
la source
Réponses:
La procédure habituelle pour réduire la taille d'un disque .vmdk est la suivante:
Défragmentez le disque via l'invité, en choisissant un mode de défragmentation qui consolide l'espace vide à la fin du disque. Pour un invité Windows, vous devez vider la corbeille et désactiver l'hibernation et la pagination, en les renvoyant une fois la défragmentation terminée.
Mettez à zéro tout l'espace inutilisé sur le disque.
Pour une utilisation de Windows sdelete :
sdelete -c
.Pour Linux:
dd if=/dev/zero of=/mytempfile && rm -f /mytempfile
.Rétrécissez le disque (ce qui peut prendre un certain temps).
VMware Workstation: Menu VM / Gérer / Nettoyer les disques.
Ou utilisez:
vmware-vdiskmanager.exe -k [VMDK PATH]
.pour ESX:
vmkfstools --punchzero [VMDK PATH]
.La conversion du disque de évolutif en préalloué pourrait arrêter sa croissance. Cela peut être fait en utilisant vmware-vdiskmanager avec le
-t
paramètre dont les valeurs sont:La commande suivante convertira le .vmdk de évolutif en préalloué:
Si vous souhaitez modifier la taille du disque, cela doit être fait alors que le disque est toujours au format évolutif (exemples ici ).
Pour plus d'informations, consultez le Guide de l'utilisateur de Virtual Disk Manager .
la source
Parce que le système d'exploitation et ses programmes d'application utilisent temporairement beaucoup d'espace disque pour les fichiers temporaires, les fichiers d'échange, les fichiers d'hibernation et les fichiers de configuration. Une fois qu'ils sont supprimés en fonction de la politique du système d'exploitation, de nouveaux secteurs sur le disque sont utilisés la prochaine fois. La machine virtuelle alloue le stockage pour le disque virtuel à partir du disque réel chaque fois qu'un nouveau secteur est utilisé dans le disque virtuel. Comme le secteur sur le disque virtuel n'est toujours pas réutilisé par le système d'exploitation invité, la machine virtuelle pense que c'est une utilisation du disque et donne de l'espace à partir du disque réel, ce qui entraînera une augmentation de l'image du disque virtuel.
Le titre de votre question est moins susceptible d'être résolu, car l'utilisation d'un tel outil sans inspection de l'image peut entraîner une catastrophe totale. Mais vous pouvez empêcher la croissance de l'image au-delà de 30 Go. Il existe de nombreuses façons d'atteindre l'objectif.
A. Utilisez uniquement 30 Go partitionnés et laissez le reste comme espace libre. Si vous avez déjà partitionné plus d'espace, vous devez le réduire / le supprimer, créer une nouvelle partition, puis la vider avec des zéros et la perforer comme décrit par @harrymc. Comme l'espace dans la zone non partitionnée n'est jamais utilisé, le disque virtuel ne dépassera jamais 30 Go.
B. Créez un instantané et restaurez-le après utilisation. Après avoir créé un instantané de données de stockage VM dans un nouveau fichier image. Si vous y restaurez, sans enregistrer ou créer de nouveaux instantanés, toutes les données modifiées sont supprimées et ainsi l'espace est libéré.
C. Créez un nouveau disque virtuel de 30 Go maximum, ajoutez-le en tant que nouveau disque dans votre machine virtuelle actuelle, déplacez toutes les données vers le nouveau disque virtuel à l'aide d'un outil de sauvegarde. Vous pouvez utiliser un Linux vivant pour le clonage.
L'option recommandée est A
la source
Pourquoi ne pas simplement définir la taille du disque concerné entre 30 Go et 150 Go.
Vous devrez définir la somme de toutes les partitions à moins de 30 Go. Vous devrez réduire la taille des partitions au fur et à mesure. Il y a BEAUCOUP de documentation sur ce site sur la façon de réduire les partitions, donc je ne répéterai pas ici encore.
Pourquoi avez-vous créé une partition mince de 150 Go si vous n'aviez pas suffisamment d'espace pour la prendre en charge à sa taille maximale? On dirait que ça demande juste des ennuis.
la source
vdiskmanager.exe -k [VMDK PATH]
comme suggéré dans une autre réponse ne rétrécit pas le lecteur.Il existe un moyen détourné d'utiliser VMWare Converter pour créer une nouvelle VM et une taille de VMDK plus petite, puis convertir le VMDK d'origine en VMDK nouvellement créé et plus petit.
Étapes détaillées ici .
Notez que toute modification de la taille VMDK nécessitera également une mise à jour correspondante de la table de partition .
la source
Cela fonctionne uniquement pour les VMDK clairsemés (NON pré-alloués) Une défragmentation est requise avant de rétrécir pour garantir que l'espace utilisé est contigu
Depuis la base de connaissances VMWare
la source
La réponse de @harrym est assez bonne, mais elle ne répond pas à la question. L'OP veut réduire la taille maximale . Le problème est que l'hyperviseur ne sait pas quelle partie de la taille présentée (aka taille maximale) est effectivement utilisée par le système d'exploitation. Le compactage (vmware-vdiskmakager -k) s'applique à un vmdk évolutif. Il ne fait rien sur le pré-alloué.
Les étapes pour réduire le disque sont donc:
La première étape implique une procédure à partir de la machine virtuelle et varie selon le système d'exploitation invité. La deuxième étape pourrait être prise en charge par les commandes vmware mais je n'ai pas trouvé de moyen profond de le faire. D'où l'approche hacky.
Voici une solution non si rapide (en raison du grand volume de données impliqué) et sale qui a fait l'affaire. Nous aurons besoin d'un espace disponible égal à la taille maximale de l'appareil .
ATTENTION: N'oubliez pas de sauvegarder les données importantes avant toute opération !!
Trouvez un moyen de redimensionner la partition invitée et de laisser de l'espace non alloué à la fin de l'appareil. Deux exemples:
Depuis l'OS invité: Windows 7
Assurez-vous d'ajouter au moins ce nombre à la taille du disque. Maintenant, nous devons convertir les octets en secteurs en divisant par 512 et en arrondissant vers le haut (plafond). Par exemple 209709448. Notez ce numéro pour l'étape 3.
Via un cd live: SystemResqueCD
Notez le secteur final et ajoutez 1. Par exemple 113455104. Notez ce numéro pour l'étape 3.
Comme le hack fonctionne sur des vmdks pré-alloués (type 2) à fichier unique (nous n'avons pas essayé sur plusieurs types de fichiers), nous convertissons d'abord le fichier évolutif en pré-alloué. Nous aurons temporairement besoin d'une partition avec de l'espace physique comme taille maximale de l'appareil. (par exemple 150 Go).
vmware-vdiskmanager.exe -r sourcevmdk -t 2 destvmdk
Maintenant, la partie délicate, pour le disque préalloué, il devrait y avoir 2 vmdks
disk.vmdk disk-flat.vmdk
le premier ne faisant que KB de long, et le second contenant les données s'étend. Ouvrez le premier (disk.vmdk) lorsque la station de travail VMWare est éteinte , avec un éditeur de texte (Notepad ++ étant ma suggestion). Trouvez la ligne
RW 113455104 FLAT "Windows 7_x64-fl-flat.vmdk" 0
Oui, vous obtenez le point, le deuxième champ est le nombre de secteurs alloués à l'appareil. En tant que validation, multipliez par 512 et trouvez la taille en octets, puis divisez par 1073741824 (1024 ** 3) pour trouver la taille en Go. Cela devrait être la taille de l'appareil précédent.
Remplacez maintenant ce numéro par le numéro noté de la première étape et enregistrez le fichier. AVERTISSEMENT : une erreur ici et vous pourriez finir par rogner les données réelles utilisées sur le système de fichiers. (Mais nous avons redimensionné les fs au début de l'appareil et effectué des calculs corrects et sûrs, non?)
Jusqu'à présent, aucune donnée n'a encore été touchée. Effectuez cette dernière étape pour découper réellement les extensions. Nous utiliserons la fonctionnalité de changement de nom de vmware-vdiskmanager pour recréer le vmdk avec sa taille maintenant ajustée.
vmware-vdiskmanager.exe -n destvmdk sourcevmdk
la source
Pour un système d'exploitation invité vmware linux, exécutez:
sudo vmware-toolbox-cmd disk shrinkonly
la source