使用虚拟机运行Linux图形桌面时,经常因为一个网页或者编译某个程序就导致虚拟机卡死,甚至影响主机使用。明明主机内存有8G,分配给虚拟机的内存也不少,为什么就这么卡顿。打开主机上的任务管理器查看发现磁盘占用百分百,原来是磁盘读写的锅。但是我就觉得特别好奇,为什么在虚拟机中打开一个网页会导致长时间的磁盘操作占有百分百,甚至把主机都卡死。
在查了许多资料后,有建议换成SSD的,有建议装双系统的,有建议用远程桌面的等等,尝试过几乎所有解决方案(除了换SSD和双系统),这些方案几乎都没有什么效果。最后综合了各方面的资料我发现导致磁盘I/O操作的主要原因有以下几点:
1.VMware会在使用的时候统计内存中的数据的使用情况,然后将不常用的一些内存数据存入本地磁盘从而释放出空间节省内存的使用。这个对于内存较小的机子可能有一些帮助,但是内存交换也会带来大量的I/O操作从而导致性能下降
2.VMware从10版本开始,在运行每个虚拟机的时候回默认在硬盘上为相应的虚拟机生成一个内存实时镜像文件用于存储虚拟机内存的改变,这就导致了虚拟机在使用的时候不断的在对硬盘发生I/O操作,这个是及其耗费时间,从而使得虚拟机小小的操作却导致了长时间的卡机甚至是死机的情况的发生。对于使用SSD的电脑还好,对于大多数在机械硬盘上进行这些操作的用户来说简直是灾难。不过幸好解决的办法也比较简单。
解决办法
针对第一点可以点击 虚拟机/设置/选项/高级 将“禁用内存页面修整”勾选起来禁止这一部分的内存交换
针对第二种情况,将实时内存镜像读写默认关闭,打开C:\ProgramData\VMware\VMware Workstation下的settings.ini文件,在文件中加入下面这一条命令:
mainMem.useNamedFile = "FALSE"
建议大家在修改前先保存一份原先的设定,然后再进行修改。如果遇到权限问题可以右键点击‘属性’,然后选择‘安全’一栏
选择Everyone一栏,然后点击下面的编辑
将‘允许’那一列中的完全控制权限赋予每个用户,然后保存修改后退出即可,修改完settings.ini文件后再将其修改回原先的设置即可。这下磁盘占用过大的问题就可以得到解决了。