背景:
我一直使用vmware workstation(17.0)中的虚拟机作为自己的开发机,因为虚拟机的快照功能非常适合折腾各种软件配置,一旦出现误操作,可以及时还原回去。
最近一年,我都在折腾hyper-v,发现hyper-v的性能(使用感觉,无进行具体的量化测试)相当的好,而vmware上的开发机总感觉比较卡(虽然我的虚拟机配置也不低,e5-2666v3分了10核,16G内存,nvme虚拟磁盘),遂今天将该开发机转为hyper-v虚拟机。
促使我将vmware更换为hyper-v不仅仅上面提到的速度慢的原因,另一个重要原因是:vmware的虚拟机并不能原生地支持虚拟机随宿主系统启动而自动启动,关闭而自动关闭(需要自己通过命令来hack),而这样的功能在hyper-v只要配置一下【自动启动操作】即可。这样的缺点导致:
(1). 当我通过笔记本远程到开发机进行开发时,我在启动宿主机后,需要先远程桌面到宿主机,再在vmware下启动开发机,然后再远程到开发机,比较麻烦。如果用hyper-v的话,在启动宿主机后,开发机会自动启动,之后直接连到开发机即可。
(2) 当我直接在宿主机上使用开发机了,经常直接关闭宿主机,而这样可能会导致开发机非正常关闭,在下次启动时出现锁定或磁盘出像问题。而在hyper-v上并不存在这样的问题,宿主机关闭会自动按正常流程关闭所有的虚拟机。
虚拟机转换流程:
(1)在vmware中导出虚拟机镜像:右键点击相应的虚拟机 -> 【管理】->【克隆】,之后再选【创建完整克隆】即可。
(2)使用StarWind V2V Converter将vmware的*.vmdk文件转换为hyper-v的*.vhdx文件
(3)在Hyper-V管理器中创建一个新的虚拟机,在【连接虚拟磁盘】选项卡中选中【使用现在虚拟磁盘】,然后选择前面转换好的vhdx文件。
(4)在虚拟机设置中将上一步的虚拟磁盘设为第一启动顺序。
(5)开机即可正常运行。
后记,关于Hyper-V快照的一些不足:
快照功能(hyper-v中叫检查点)无法像vmware那样可以灵活,例如每隔几个小时自动快照一次,每次关机时自动产生新的快照。
注意:转换的镜像路径不要包含中文,否则会报错,如下图所示(参考:V2V convert to VMDK 'unrecoverable error' on win11)