Vmware 一些小问题的解决办法
1、配置文件只读,无法修改。因为想把物理磁盘挂接的虚拟机中,就在配置文件中添加硬盘选择物理磁盘。结果启动时提示物理磁盘正在使用,造成虚拟机无法启动。糟糕的是,虚拟机的配置界面也无法编辑了,后挂接的物理磁盘也删不掉了。怎么办呢,启动不了,数据就丢失了。
添加 移除的按钮都是灰的。
经过一番查找研究,发现是配置文件的访问权限的问题。解决办法:
在 配置文件如 xp.vmx的属性的安全选项中把完全的权限赋给users用户组。然后就可以编辑了。
2、父盘 子盘 内容ID不一致
因为无法启动,我就想把虚拟机的磁盘文件挂接到别的虚拟机上把数据读出来,但是这个虚拟机有父盘子盘链,我没注意,不小心把父盘挂接到别的虚拟机上了,结果数据是以前的数据,并没有我想要的最近的数据。然后我就退出重新挂最后的子盘。结果无法挂接,显示:父盘 子盘 内容ID不一致 “父虚拟磁盘已被修改。父虚拟磁盘的内容 ID 与子虚拟磁盘中相应的父内容 ID 不匹配”怎么办,数据还是读不出来。
经过查找研究,原来vmware的磁盘是以父子盘链的形式存在的,子盘内容是父盘的内容+数据的变化量。在父子盘的配置文件中对这个关系是有明确的标识的:
如图:
...Cl1.vmdk 是父盘的配置文件,...cl1-000001.vmdk是第一个子盘的配置文件。
...cl1.000002.vmdk 是 第二个子盘的配置文件,是...cl1.000001.vmdk的子盘,实际是cl1.vmdk的孙子盘。
分别打开这三个配置文件,可以看到各自的CID和parent CID,如图:
那么,如果第2个文件的parentcid和第一个文件的cid不一致的话,就会出现前面提到的“父虚拟磁盘已被修改。父虚拟磁盘的内容 ID 与子虚拟磁盘中相应的父内容 ID 不匹配”,但实际我们知道,内容是一致的,我们并没有修改过。所以只要把它们改成一致就行了,用记事本或notepad++都行。我是把父盘的cid改成跟子盘的parentcid一致。改完后可以挂接了,数据也读出来了。
3 配置文件损坏怎么办
因为配置文件内容无法在配置界面上修改,我就想自己在配置文件中直接修改。结果改完更不好用。后来在网上搜到用日志文件恢复的办法:
在虚拟机目录下,有如下文件,如图:
实际是配置文件的日志文件,后缀名隐藏了。
Vmware*的文件中保存了每次配置修改之前的数据。我在vmware-2.log中找到了最早的好用的配置文件。
本方法仅适用.vmk文件损坏而其他文件完好无损的情况。
举例说明:虚拟机名为XP,虚拟机目录为E:\XP\,配置文件名即为XP.vmk(除目录名为自己创建为,其余文件名为VM虚拟机自动创建)
1,删除XP.vmk(注意不要删除错了,系统默认是不显示扩展名的,显示扩展名的方法自己百度一下吧)
2,用记事本打开E:\XP\vmware.log
3,找到“Jan 24 23:13:15.438: vmx| DICT --- CONFIGURATION”段(前面是日期和时间,不要对号入座)
4,从下边一行开始复制到“Jan 24 23:13:15.440: vmx| DICT --- USER DEFAULTS”上边一行结束(不用复制 ‘---CONFIG„„’和‘ ---USER DEFA„.’两行)
5,新建记事本,粘贴
6,删除前边的日期时间标志
例如:“Jan 24 23:13:15.438: vmx| DICT config.version = 8”
删除前边标志后仅留
config.version = “8”
全部照此更改,改完后复制到虚拟机根目录下。如果提示配置文件只读之类的,把这个完全访问的权限赋给users用户组。