工作中,需要拷贝虚拟机。有时候拷贝虚拟机完成后,在开启的时候会出现虚拟磁盘不能识别的问题,具体的错误信息如下:
“the file specified is not a virtual disk“
我们在虚拟机文件目录下,可以看到很多的.vmdk文件,这个就是虚拟磁盘。例如:virtual-Ubuntu-s001.vmdk, virtual-Ubuntu-s002.vmdk等等。我们在虚拟机的设置中明明选择了virtual-Ubuntu-s001.vmdk,但是还是会报以上的错误。
这是因为这些只是虚拟磁盘的片,并不是一个完整的虚拟磁盘。真正的虚拟磁盘名称为”virtual-Ubuntu.vmdk“,我们姑且叫父虚拟磁盘。
我们在对虚拟机配置的时候,需要保证为他提供的是一个完整的虚拟磁盘。
为了解决这个问题,需要对.vmx文件做修改,该文件为虚拟机的配置文件。为了保险起见,修改之前,对该文件做个备份。
查找开头为以下内容的行:
scsi0:0.fileName =
或者可能为:
ide0:0.fileName =
该对象等号后面有用引号括起来的文件名。确保虚拟磁盘文件是虚拟磁盘或快照磁盘,而不是片。
如果它指向片,请通过删除对片的引用截断文件名,以使文件名只指示父虚拟磁盘。
例如:
将“Windows XP Professional-000001-s007.vmdk”更改为“Windows XP Professional-000001.vmdk”
将“Windows Vista-s021.vmdk”更改为“Windows Vista.vmdk”
然后保存退出,重新添加虚拟机,重置配置文件。
这个时候有些情况下会提示,无法找到指定的父虚拟磁盘。
我在.vmx中又修改了scsi0:0.present项,该项原本为TRUE,我改成了FALSE,然后保存退出。虚拟机就不会报虚拟磁盘无法找到了。
这一项到底是啥意思,也没搞太懂,不过确实能生效。