VMware虚拟机配置文件(.vmx)损坏修复

时间:2022-12-24 15:14:53
前言:
对于VMware虚拟机配置文件(.vmx)损坏
大家发生问题的原因可能跟我不一样,但是解决方法应该是一样的.
但是本方法仅适用.vmx文件损坏而其他文件完好无损的情况。

问题发生:
最近一直在研究hadoop,今天刚搭建完HBase,用的时候就感觉速度很慢,结果在执行HBase shell的时候,卡住不动了。然后就报错了错误信息...忘记了内容了...然后虚拟机就崩溃了,然后这个虚拟机再也打不开了,提示我的.vmx文件已损坏。

VMware虚拟机中使用.vmx文件保存虚拟机的所有软硬件配置,如果意外损坏的话将会出现不能正常打开虚拟机的故障.

我的情况:
vmware版本是10,
虚拟机是linux系统:CentOS release 6.4
.vmx文件名为:CentOS.vmx

查看日志文件:
打开虚拟机目录下的vmware.log文件
我在log日志最后部分,发现了下面这两句话。
....................................................................................................................................
2014-11-01T21:51:09.100+08:00| vmx| W110: Minidump failed:  There is not enough space on the disk

2014-11-01T21:51:09.137+08:00| vmx| I120: CoreDump error: Write, page 0x113 (0xffffffff)  No space left on device
....................................................................................................................................
显而易见,是磁盘空间不足,导致写数据的时候出错了。最终导致配置CentOS.vmx出错。

解决思路:
1.将.vmx文件删除(别删错了!!!),然后新建一个同样名字的.vmx文件,我的是CentOS.vmx;
2.找到“ DICT --- CONFIGURATION”(前面是日期和时间的信息);
3.找到“ DICT --- USER DEFAULTS”(前面是日期和时间的信息);
4.将这两行的之间的数据复制出来(上面提到的两行不需要复制);
5.黏贴到.vmx文件(我的是CentOS.vmx)中;
6.删除CentOS.vmx文件中所有行的前边的日期时间标志,仅保留后面的信息,例如:
2014-11-01T20:50:32.963+08:00| vmx| I120: DICT            config.version = "8"
将“2014-11-01T20:50:32.963+08:00| vmx| I120: DICT”部分删除,只保留config.version = "8";
ps:如果你自己不知道简单的删除列的方法,我推荐使用NotePad++,按出Alt,就可以选择列,然后将表示时间的标志的列全部删除。然后全选,Tab+Shift可以将所有内容左移,最后让前面的空格全部去除,达到日志信息左对齐的效果。
7.照上边格式全部修改,然后给所有行的等号后的字符加上英文双引号(注意不要使用中文输入法的双引号)
       例如:config.version = 8 改为config.version = "8"
如果你跟我一样,已经有英文双引号,就不需要添加了;
8.保存.vmx文件(CentOS.vmx);
9.重新打开.vmx文件(CentOS.vmx);
10.OK,启动虚拟机。

最后附上,修改过的CentOS.vmx文件的部分内容(首+尾,中间省略了):
...........................................................................
config.version = "8"
virtualHW.version = "8"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "256"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "CentOS-000010.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.startConnected = "FALSE"
.
.
.
checkpoint.vmState.readOnly = "FALSE"
gui.lastPoweredViewMode = "fullscreen"
ide0:0.present = "FALSE"
usb:0.present = "TRUE"
usb:0.deviceType = "hid"
usb:0.port = "0"
usb:0.parent = "-1"
...........................................................................