怎样移动virtualbox下创建的vdi文件

来源:互联网 发布:数据交换平台 中软 编辑:程序博客网 时间:2024/05/01 21:17
 VirtualBox可不像VMware那样,直接复制虚拟磁盘文件就可以了事的,只因为VirtualBox识别虚拟磁盘文件VDI采用了uuid识别技术.

由于测试需要搭建局域网环境,需要两台虚拟机同时运行。当我安装完一个虚拟系统时,我将虚拟磁盘文件复制一份重新创建虚拟系统时提示

打开 虚拟硬盘 5.04.vdi 失败.
Cannot register the hard disk '5.04.vdi' with UUID {24eb969f-8c98-470d-b2dd-35318f2b8860} because a hard disk '5.04.vdi' with UUID {24eb969f-8c98-470d-b2dd-35318f2b8860} already exists in the media registry ('C:\Documents and Settings\\.VirtualBox\VirtualBox.xml').

往Google里找寻了一番,原来Virtualbox的Windows版本也是有VBoxManage命令的.于是我决定给复制的vdi文件重新分配uuid.

cd C:\Program Files\Sun\VirtualBox

C:\Program Files\Sun\VirtualBox>VBoxManage internalcommands setvdiuuid 'I:\VBOX\RHEL5.4\5.4.clone.vdi'

接着就可以使用拷贝的vdi文件正常的创建第二台虚拟机了.

当然如果你没有直接复制vdi文件,那么直接用Virtualbox自带的克隆vdi文件命令.

C:\Program Files\Sun\VirtualBox>VBoxManage clonehd 'I:\VBOX\RHEL5.4\5.4.vdi' 'I:\VBOX\RHEL5.4\5.4.clone.vdi'

注:如果路径中存在空格可以在路径的两端添加引号.

Virualbox的快照功能非常不错,可以即时恢复到快照时的状态.做试验就不用重新配环境了.

你可以迅速的将你virtualbox里的一个虚拟机复制出第二个来,但是不是通过简单的复制硬盘镜像文件,而是需要使用virtualbox的"VBoxManage clonehd"命令。这是因为virtualbox分配给每一个硬盘镜像一个唯一的UUID号并保存在硬盘镜像中,如果两个镜像使用相同的UUID的话virtualbox是拒绝工作的。
具体使用方法有两种:


方法一:
VBoxManage clonevdi 原始VDI文件名 新的VDI文件名

直接写VDI文件名即可,不用指明VDI文件所在路径,新的文件会在全局设定中指定的VDI目录下创建。如果VDI文件名里带有空格,应该在两端加上双引 号。VBoxManage命令位于VirtualBox安装目录下。

用这个方法创建了新的VDI文件后,就可以正常注册并在另一个虚拟机中使用了。

不过执行此命令之前需要将硬盘镜像从虚拟介质管理器中将镜像释放 并删除,否则会报类似如下错误:
chao@redcat:/stor/virtualbox/sv1$ VBoxManage clonehd sv1-disk1.vdi ../sv2/sv2-disk1.vdi
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

ERROR: Cannot register the hard disk '/stor/virtualbox/sv1/sv1-disk1.vdi' with UUID {4e7a0d53-2775-438d-b383-79e69c5cf7f4} because a hard disk '/stor/virtualbox/sv1/sv1-disk1.vdi' with UUID {4e7a0d53-2775-438d-b383-79e69c5cf7f4} already exists in the media registry ('/home/chao/.VirtualBox/VirtualBox.xml')
Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "OpenHardDisk(Bstr(szFilenameAbs), AccessMode_ReadWrite, false, Bstr(""), false, Bstr(""), srcDisk.asOutParam())" at line 628 of file VBoxManageDisk.cpp

克隆过程:
chao@redcat:/stor/virtualbox/sv1$ VBoxManage clonehd sv1-disk1.vdi ../sv2/sv2-disk1.vdi
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 74ba3dd6-8a13-4144-8494-2c247d85cf44



方法二:

直接复制磁盘文件,然后手动修改镜像文件的UUID:

#VBoxManage internalcommands sethduuid 镜像文件路径

然后就可以直接使用了。


不过新版本的linux是用UUID来标记、识别硬盘的,系统识别的硬盘UUID是virtualbox决定的,所以当你通过以上方法克隆了装有linux的硬盘镜像的话,肯能会因为无法找到对应uuid的硬盘而导致无法启动,所以你需要修改启动加载脚本(如/boot/grub/menu.lst),不要忘记哦!

对了,查看硬盘UUID的方法:

#VBoxManage showhdinfo 硬盘镜像路径

例如:

chao@redcat:~$ VBoxManage showhdinfo /stor/virtualbox/xp/xp-1.vdi
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

UUID: e7627b28-110c-404a-9b59-7d9179702571
Accessible: yes
Description:
Logical size: 10240 MBytes
Current size on disk: 3218 MBytes
Type: normal (base)
Storage format: VDI
In use by VMs: xp2 (UUID: d7a8d495-32bf-470f-a4c2-8e023ac77d5f)
Location: /stor/virtualbox/xp/xp-1.vdi