如何将硬盘直接克隆到VDI映像


37

我想用硬盘制作一个VirtualBox .vdi映像。

我发现如何在线描述如何做到这一点,方法是首先使用ind DD创建.raw图像,然后使用VBoxManage将.raw转换为.vdi。因此,如果我的HD为1 TB,则此过程(临时)需要2 TB的空间来存储.raw和.vdi。

我只有1TB以上的可用空间。有没有一种方法可以创建硬盘驱动器的.vdi映像,而无需首先创建.raw映像?


这是有风险的,但是如果您有要P2V的硬盘驱动器,则可以使用大约1TB的可用空间在备用驱动器上创建映像。然后格式化原始驱动器,并将RAW文件复制到原始驱动器。然后将RAW转换为VDI,再回到主驱动器上。但是,如果搞砸了(可能会发生),那么您将陷入RAW图像而没有原始图像的情况。
kobaltz

@kolbatz我考虑了这一点,但我认为它很有可能失败。当我对硬盘驱动器进行映像时,生成的.raw文件就是硬盘驱动器的大小。但是在将文件复制回原始驱动器之前,我需要为驱动器提供一个文件系统。这涉及将一些元数据写入驱动器,而没有足够的空间来容纳驱动器大小的文件。
SuperElectric

Answers:


53

您可以使用直接创建图像VBoxManage convertfromraw。首先卸载设备,然后:

VBoxManage convertfromraw /dev/sda MyImage.vdi --format VDI

/dev/sda要克隆的任何磁盘或分区替换。

您可能需要以root用户身份执行此操作,才能访问设备。如果是这样,那么您应该更改完成图像的所有权。


2
安装VirtualBox后,在OSX上开箱即用,效果很好。感谢您指出此解决方案
JosFabre

8

我尝试了接受的解决方案,但对我而言失败了:

# VBoxManage convertfromraw /dev/sdg /path/to/file.vdi --format VDI
Converting from raw image file="/dev/sdg" to file="/path/to/file.vdi"...
Creating dynamic image with size 0 bytes (0MB)...
VBoxManage: error: Cannot create the disk image "/path/to/file.vdi": VERR_INVALID_PARAMETER

也许由于磁盘是通过USB连接而无法检测到大小的?

所以我得到了磁盘的大小 fdisk -l

Disk /dev/sdg: 160.0 GB, 160041885696 bytes

然后,我使用了convertfromraw的stdin形式

# dd if=/dev/sdg | VBoxManage convertfromraw stdin /path/to/file.vdi 160041885696 --format VDI
Converting from raw image file="stdin" to file="/path/to/file.vdi"...
Creating dynamic image with size 160041885696 bytes (152628MB)...

2

还有其他更安全的方法来创建Virtualbox可以使用的当前系统的文件。Vdi是特定于virtualbox的文件,通常仅由VB从全新的虚拟硬盘安装中生成。

您还有许多其他选择。

我最近使用disk2vhd创建了Virtualbox精美导入的.VHD(Microsoft虚拟硬盘)。(尽管它是一个XP系统)我认为它不能与其他OS一起很好地工作。

另外,还有Vmwares转换工具,可以将您的系统导出为virtualbox以及其他平台可以使用的多种格式。对于这种事情有开放标准。

http://www.vmware.com/products/converter/features.html


2
为什么您认为这些方法“更安全”?
andcoz '17

disk2vhd使用卷快照,这意味着它可以在运行时用于克隆系统。
mwfearnley

“我认为它不能与其他OS很好地配合使用”->实际上,它确实很好,只是成功地热镜像了带有disk2vhd的Windows 10,可以正常工作!
Henrique de Sousa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.