VirtualBox: incohérence de la table des grains

10

La configuration en question est la suivante: hôte Windows 7 64 bits exécutant VirtualBox. La machine invitée exécute Windows XP 32 bits.

Après une panne de courant sur la boîte hôte, la machine invitée ne peut pas démarrer et se plaint que

incohérence entre la table des grains et la table des grains de secours

Toute aide pour démarrer la machine invitée sans la réinstaller est appréciée.

PS: Qu'est-ce qu'une table de céréales de toute façon?

adamo
la source

Réponses:

4

Je ne peux pas vraiment aider, mais j'ai trouvé les tables de grains ici: http://www.vmware.com/support/developer/vddk/VirtualDiskAPIprogramming.pdf (page 16)

Comme le dit l'utilisateur mailq, il semble que votre lecteur virtuel soit cassé. Peut-être vérifiez l'outil vmdkck (sur cette page http://datto.org/projects/vmdk-tools ) pour vérifier qu'il est cassé?

Nikolaos Georgiou
la source
Merci aussi. J'ai accepté votre réponse, car elle fournit des liens pour localiser ce qu'est réellement une table des céréales. On peut demander la spécification du format de disque virtuel ici vmware.com/technical-resources/interfaces/vmdk.html
adamo
12

VMware a un outil appelé vmware-vdiskmanagerlocalisé "/Applications/VMware Fusion.app/Contents/Library/"et lié à /usr/local/binlorsqu'il est installé. Vous pouvez également utiliser cet outil pour réparer les disques VirtualBox VMDK . Cela m'a déjà sauvé plusieurs fois.

Installation

une. Vous pouvez installer vmware-fusion

brew cask install vmware-fusion

b. Ou vous pouvez télécharger l' vmware-vdiskmanagerutilitaire directement depuis la section Pièces jointes en bas de cette page:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023856

Usage

vmware-vdiskmanager -R <your_disk>.vmdk

L'invocation sans paramètres permet d'utiliser l'aide:

Usage: vmware-vdiskmanager OPTIONS <disk-name> | <mount-point>
Offline disk manipulation utility
...
     -R                   : check a sparse virtual disk for consistency and attempt
                            to repair any errors.
...
Pour des hommes
la source
1
Le nom de l'outil contient un av: "vmware-vdiskmanager". J'ai essayé de modifier la réponse, mais elle n'a ajouté que 2 caractères et les modifications doivent être d'au moins 6? :)
Ned Batchelder
Cela a très bien fonctionné, cela m'a juste sauvé après que mon Mac s'est écrasé et a laissé une boîte virtuelle vagabonde dans un état sale. Je vous remercie!
Fred
1
J'obtiens "aucune erreur n'a été trouvée sur le disque virtuel" après avoir exécuté la commande de réparation même si j'ai la même erreur de table de grain. Avez-vous d'autres idées pour résoudre ce problème?
user95227
Super merci! A réussi à réparer le fichier d'appareil corrompu (* .vmdk) après une mise hors tension forcée.
Matt Borja
1
Hier soir, une réponse ServerFault m'a sauvé la vie!
Spencer Williams
2

Votre disque dur virtuel est cassé. Les tables de grains sont des éléments internes des environnements de virtualisation.

La recherche sur le terme exact révèle qu'il n'y a pas beaucoup de possibilités de récupération: https://forums.virtualbox.org/viewtopic.php?f=6&t=40049

mailq
la source
Merci pour la réponse rapide. J'avais googlé avant de demander à SF. J'ai demandé en espérant une réponse à long terme non déjà couverte par les forums VirtualBox.
adamo
2

J'ai utilisé CloneVDI pour résoudre ce problème. J'ai fait un clone et le nouveau fichier fonctionne très bien.

Valguimar
la source
Je peux confirmer ceci. Cela m'a sauvé la vie. Ouf.
Ardee Aram
1

J'ai eu cette erreur après avoir déplacé mon ~/VirtualBox\ VMsLinux vers MacOS. J'ai essayé la solution @mens en utilisantvmware-vdiskmanager , mais cela a échoué pour moi.

Lors de ma migration de Linux vers MacOS, j'ai rajouté tous les *.vboxfichiers dans Virtualbox et ils n'ont pas tous pu démarrer avec la même erreur (en utilisant vagrant):

There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "<UUID 1>", "--type", "headless"]

Stderr: VBoxManage: error: Could not open the medium '/path/to/box-disk1.vmdk'.
VBoxManage: error: VMDK: inconsistency between grain table and backup grain table in '/path/to/box-disk1.vmdk' (VERR_VD_VMDK_INVALID_HEADER).
VBoxManage: error: VD: error VERR_VD_VMDK_INVALID_HEADER opening image file '/path/to/box-disk1.vmdk' (VERR_VD_VMDK_INVALID_HEADER)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MediumWrap, interface IMedium

J'ai vérifié que les données transférées correctement, ont md5 box-disk1.vmdkrenvoyé la même chose pour les deux fichiers.

J'ai réussi à redémarrer une VM en convertissant les vmdkfichiers envdi procédant comme suit. (Requiert qemu, brew install qemu)

# Convert from `.vmdk` to `.bin`
qemu-img convert box-disk1.vmdk box-disk1.bin

# Convert from `.bin` to `.vdi`
VBoxManage convertdd box-disk1.bin box-disk1.vdi

Chemin d'accès au volume mis à jour .vdiet démarré par la machine.

Dans mon cas, le fichier vdi est légèrement plus grand, n'oubliez pas de le supprimer .bincar il est énorme. Oh et il ne parvient pas à s'authentifier lors de la première exécution. Quoi qu'il en soit, si possible, vous devriez peut-être faire tourner un nouveau vm à partir de zéro.

GabLeRoux
la source