-1

我有两个磁盘作为.vmdk文件,四个作为.vdi文件。我可以使用 Sun xMV VirtualBox 在它们上启动虚拟机,它们运行良好。但是,我想将它们安装在我的本地计算机上,这样我就可以在不启动虚拟机的情况下从中读取一些文件。我下载了该vmware-mount实用程序,但出现此错误:

Unable to mount the virtual disk. The disk may be in use by a virtual
machine, may not have enough volumes or mounted under another drive
letter. If not, verify that the file is a valid virtual disk file.

认为这是实用程序的问题,我下载了 SDK 并用 C 编写了自己的简单程序来尝试挂载磁盘。它只是初始化 API,连接到它,然后尝试打开磁盘。我收到此错误,再次声称它不是虚拟磁盘:

**LOG: DISKLIB-DSCPTR: descriptor above max size: I64u
**LOG: DISKLIB-LINK  : "f:\programming\VMs\windowstrash.vdi" : failed to open (The file specified is not a virtual disk).
**LOG: DISKLIB-CHAIN : "f:\programming\VMs\windowstrash.vdi" : failed to open (The file specified is not a virtual disk).
**LOG: DISKLIB-LIB   : Failed to open 'f:\programming\VMs\windowstrash.vdi' with flags 0x1e (The file specified is not a virtual disk).
** FAILURE ** : The file specified is not a virtual disk

不过,这些文件显然是虚拟磁盘,因为我实际上可以在虚拟机上挂载和使用它们。我尝试将它们与任何 VM 分离并再次尝试,但得到了相同的结果。

有任何想法吗?也许“最大尺寸以上的描述符”是一个提示?

4

2 回答 2

1

.vdi是 VirtualBox 支持的格式,但不受 VMWare 支持。

这些.vmdk文件是 VMWare 映像 - 您应该能够使用 vmware 工具很好地加载它们(VirtualBox 也支持这些,但反之则不然)。

于 2010-02-27T06:36:04.607 回答
0

但是,如果您只是尝试以某种方式挂载 VDI 映像......

试试这个博客

http://bethesignal.org/blog/2011/01/05/how-to-mount-virtualbox-vdi-image/

如果您想在几秒钟内完成此操作,这正是您应该注意的。

我只发布了这个,因为访问此页面的其他人会发现它更容易。

谢谢。

如果将来删除此博客,请在此处简要发布内容会有所帮助。所以我会提取内容并将其发布在这里。

成为超级用户

sudo su

加载 nbd 内核模块。- 网络块设备模块

modprobe nbd

运行 qemu-nbd,它是用于 QEMU 支持的磁盘映像的用户空间环回块设备服务器。基本上,它知道所有奇怪的磁盘映像格式,并通过 nbd 将它们呈现给内核,最终呈现给系统的其余部分,就像它们是普通磁盘一样。

qemu-nbd -c /dev/nbd0 <vdi-file>

该命令会将整个映像公开为名为 /dev/nbd0 的块设备,并将其中的分区公开为子设备。例如,映像中的第一个分区将显示为 /dev/nbd0p1。

例如,现在您可以在块设备上运行 cfdisk,但您很可能希望挂载一个单独的分区。

mount /dev/nbd0p1 /mnt

完成后,卸载文件系统并关闭 qemu-nbd 服务。

umount /mnt
qemu-nbd -d /dev/nbd0
于 2014-02-28T14:52:02.390 回答