问题中的设置如下:运行 VirtualBox 的 Windows 7 64 位主机。客户机运行的是 Windows XP 32 位。
主机断电后,客户机无法启动并抱怨
粮食表和备份粮食表不一致
任何无需重新安装即可启动客户机的帮助都将不胜感激。
PS:Grain Table 到底是什么?
答案1
真的帮不上什么忙,但是我发现这里的谷物表是这样的: http://www.vmware.com/support/developer/vddk/VirtualDiskAPIprogramming.pdf(第 16 页)
就像用户 mailq 说的,看起来你的虚拟驱动器坏了。也许可以检查一下 vmdkck 工具(在本页http://datto.org/projects/vmdk-tools)来仔细检查它是否坏了?
答案2
VMware 有一个名为“vmware-vdiskmanager
位于”的工具,安装时"/Applications/VMware Fusion.app/Contents/Library/"
会将其符号链接到该工具。/usr/local/bin
您也可以使用此工具修复 VirtualBox VMDK 磁盘。它已经救了我好几次了。
安装
a.您可以安装VMware 融合(需要 macOS Catalina;用于vmware-fusion10
旧版 macOS)
brew install vmware-fusion
b. 或者您可以vmware-vdiskmanager
直接从以下网址下载该实用程序附件本页底部的部分:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023856
用法
vmware-vdiskmanager -R <your_disk>.vmdk
不带参数的调用可提供帮助用法:
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.
...
答案3
你的虚拟硬盘坏了。Grain 表是虚拟化环境的一些内部内容。
通过谷歌搜索确切的术语,可以发现恢复的可能性并不多: https://forums.virtualbox.org/viewtopic.php?f=6&t=40049
答案4
我~/VirtualBox\ VMs
从 Linux 移到 MacOS 后遇到了这个错误。我尝试@mens 解决方案使用vmware-vdiskmanager
,但对我来说却失败了。
在我从 Linux 迁移到 MacOS 期间,我将所有*.vbox
文件重新添加到 Virtualbox 中,但它们都因相同的错误而无法启动(使用 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
我验证了数据是否正确传输,md5 box-disk1.vmdk
两个文件都返回了相同的内容。
我设法让虚拟机重新启动将文件转换vmdk
为vdi
执行以下操作。(需要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
已更新卷的路径.vdi
和已启动的机器。
就我而言,vdi 文件稍大一些,不要忘记删除,.bin
因为它太大了。哦,第一次运行时验证失败。无论如何,如果可能的话,也许你应该从头开始启动一个新的虚拟机。