VirtualBox: inconsistência na tabela de grãos

10

A configuração em questão é a seguinte: Host do Windows 7 de 64 bits executando o VirtualBox. A máquina convidada está executando o Windows XP 32bit.

Após uma falha de energia na caixa do host, a máquina convidada não pode inicializar e reclama que

inconsistência entre a tabela de grãos e a tabela de grãos de backup

Qualquer ajuda para inicializar a máquina convidada sem reinstalá-la é apreciada.

PS: O que é uma tabela de grãos, afinal?

adamo
fonte

Respostas:

4

Não posso ajudar muito, mas descobri quais são as tabelas de grãos aqui: http://www.vmware.com/support/developer/vddk/VirtualDiskAPIprogramming.pdf (página 16)

Como o usuário mailq diz, parece que sua unidade virtual está com problemas. Talvez verifique a ferramenta vmdkck (nesta página http://datto.org/projects/vmdk-tools ) para verificar novamente se está quebrada?

Nikolaos Georgiou
fonte
Obrigada tambem Aceitei sua resposta porque fornecia links para localizar o que realmente é uma tabela de grãos. Pode-se solicitar a especificação de formato de disco virtual aqui vmware.com/technical-resources/interfaces/vmdk.html
Adamo
12

O VMware possui uma ferramenta chamada vmware-vdiskmanagerlocalizada "/Applications/VMware Fusion.app/Contents/Library/"e com link simbólico /usr/local/binquando instalada. Você pode usar esta ferramenta para reparar também os discos do VirtualBox VMDK . Isso já me salvou algumas vezes.

Instalação

uma. Você pode instalar o vmware-fusion

brew cask install vmware-fusion

b. Ou você pode baixar o vmware-vdiskmanagerutilitário diretamente da seção Anexos na parte inferior desta página:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023856

Uso

vmware-vdiskmanager -R <your_disk>.vmdk

A chamada sem parâmetros fornece ajuda para o uso:

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.
...
masculino
fonte
1
O nome da ferramenta possui um av: "vmware-vdiskmanager". Tentei editar a resposta, mas ele só adicionou 2 caracteres e as edições devem ter pelo menos 6? :)
Ned Batchelder
Isso funcionou muito bem, só me salvou depois que meu Mac travou e deixou uma caixa virtual vagabunda em um estado sujo. Obrigado!
20915 Fred
1
Estou recebendo "nenhum erro foi encontrado no disco virtual" após executar o comando de reparo, mesmo que eu tenha o mesmo erro na tabela de grãos. Alguma outra idéia para resolver isso?
user95227
Incrível, obrigado! Consertou o arquivo do dispositivo corrompido (* .vmdk) após o desligamento forçado.
Matt Borja
1
Ontem à noite, uma resposta ServerFault salvou minha vida!
Spencer Williams
2

Seu disco rígido virtual está quebrado. As tabelas de grãos são algumas coisas internas dos ambientes de virtualização.

Pesquisando o termo exato, o Google revela que não existem muitas possibilidades de recuperação: https://forums.virtualbox.org/viewtopic.php?f=6&t=40049

mailq
fonte
Obrigado pela resposta rápida. Eu tinha pesquisado no Google antes de perguntar na SF. Eu perguntei, esperando uma resposta de longo prazo ainda não coberta pelos fóruns do VirtualBox.
Adamo 24/10
2

Eu usei o CloneVDI para resolver esse problema. Fiz um clone e o novo arquivo funciona muito bem.

Valguimar
fonte
Eu posso atestar isso. Isso salvou minha vida. Ufa.
Ardee Aram
1

Eu tive esse erro depois de passar ~/VirtualBox\ VMsdo Linux para o MacOS. Eu tentei a solução @mens usandovmware-vdiskmanager , mas falhou para mim.

Durante minha migração do linux para o MacOS, adicionei todos os *.vboxarquivos novamente ao Virtualbox e todos eles falharam ao inicializar com o mesmo erro (usando o 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

Eu verifiquei que os dados foram transferidos corretamente e md5 box-disk1.vmdkretornaram a mesma coisa para os dois arquivos.

Consegui obter uma VM para inicializar novamente, convertendo os vmdkarquivos paravdi o seguinte. (Requer 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

Caminho atualizado para o volume .vdie inicializado pela máquina.

No meu caso, o arquivo vdi é um pouco maior, não se esqueça de excluir .bin, pois é enorme. Ah, e ele não se autentica na primeira execução. De qualquer forma, se possível, talvez você deva criar uma nova vm do zero.

GabLeRoux
fonte