前言:
对于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"
...........................................................................
|