本帖主旨在于分享楼主近期折腾虚拟机,使用 hyperV 的一些体验,我相信还是有很多 v 友跟楼主一样只是普通的开发人员,对于虚拟化的细节也不是门清的,所以分享出来应该还是有一些价值。虽然本帖有安利性质,但楼主本人只是想给没用过的朋友分享一些体验,楼主也并不是微软的迷弟,具体使用请自行斟酌。
=======================================================
起因是楼主最近需要折腾一套 windows 环境下的 linux 服务方案(这个比较蛋疼的需求是一些陈年代码导致的),根据 v 友的建议最后使用 hyperV 得到了完美解决。但是后面事情不止于此,最终还是引出了一些对我以后日常工作也有帮助的经验。
对于绝大多数开发人员而言,应该都是认可在不同使用环境下,windows 和 linux 操作系统各有优势(呃。。这句话有时候可能也需要带上 mac )。认为“不在 linux 下做开发的人都是傻屌”,持这种观点的应该是少数。所以广泛地说,从功能性来讲,对于所有开发人员来说,同时拥有两个操作系统,并且能够无限自由地在他们之间切换,应该属于一种长期以来的终极追求。
我们“普通”的虚拟化,起码对于楼主这种孤陋寡闻的开发人员来说,做互联网开发,总是要经常和虚拟机打交道的。在 windows 系统中开虚拟机以前用过 vmware 和 vbox,而跳出 windows 之外则使用过诸如 exsi 之类的工具、使用互联网服务则是 ovz 、kvm 等等。起码在我司中我已经是接触比较多的人了,但是其实并不是很了解原理,因为确实事实上底层并不重要。
这里话说回 HyperV 。先说 hyperV 是什么,hyperV 是 win10 自带的一个 windows 下的虚拟机管理工具,底层实现方式与 vmware 等工具不同,表层实现目的都是为了在 windows 下开虚拟机。
那么楼主最近在选择虚拟化方案中,按照 v 友的建议选择了 hyperV,做到了些什么呢?简单来说做了以下几点
可能楼主本人是孤陋寡闻的,但是起码对于楼主来说以上这几点中并未完全地在其他某款 windows 虚拟化工具中体验到过,所以才来发这个贴,感觉体验还是相当不错的。
=====================================
以下具体介绍一下上文提到的特性和楼主以前使用的其他虚拟机的不同。
1 、网络层的桥接,相当于在主机和虚拟机之间加一层二级交换机,使用体验上相当于在路由器上再插一台物理机器。实现了(在几乎任何情况下的)功能完整的网络互通,同时进程间通讯又不需要绕道到路由层解决,基本是完美的解决方案了。对比 wmware 默认是桥接==》打平,vbox 默认用 nat 模式==》主机访问虚拟机需要用配置端口映射这种蛋疼的方式,vbox 打输。
2 、文件系统基于 smb 的完全原生级别挂载,意思是你同时跑 windows 和 linux 的服务,基于一个共同的文件夹,方便之处无需赘言(顺带一提 smb 也和 hyperv 一样放到了 windows 可开启功能的设置里,系统原生,无需第三方工具)。对比 vmware 和 vbox 自己实现的文件共享系统(我不知道他们底层基于什么),总归还是稳的。以前用 vmware 配过 smb,如果专门就那次配置而言的话,hyperV 的配置要简单很多。但对比上述两个软件自带的共享来说还是要复杂一些,主要问题是楼主配置的时候这方面没在墙内找到什么技术博客写这方面的资料。
3 、完整的开关机和内存管理,这条相对于上述几款虚拟化工具来说是绝对的加分项。宿主开关机对于虚拟机而言是快照内存且不影响运行状态的==》开机恢复。总和以上几点考量的话,linux 变成了 windows 系统下的一项服务,你可以获得完整的服务级管理体验,一是不用担心他自己崩溃,二是日常使用中如果不需要用到它,那就不必为它费心,三是接近原生级的性能体验,四是内存管理优秀,可以想象一下如果你对于 windows 的网络收发能力意见颇大,此时有人告诉你只需要多花 200M 内存就可以获得原生级的 linux IO ;或者说对于开发人员而言,日常很多时候不需要用到 linux,那他就占用你 200M 内存躺在那里,而你有需要的时候可以一秒钟呼出一个类原生系统,不管怎么说还是相当有吸引力的。
===================================================
hyperV 目前也存在一些问题,虽然本意只是介绍,但既然有安利性质,我还是不得不给不了解的朋友们做一个预警
1 、关于性能下降问题: 一种说法是 windows 的 hv 默认关闭,而一旦开启之后,你的 windows 系统自身就变成一个虚拟机了(意为会引起宿主机性能下降)。我在网上可以同时看到支持和反对这种说法的两方面言论。楼主本人不是底层专精,无法分辨对错。如果 v 友里有懂哥的话欢迎给大家介绍一下。
楼主本人的使用体验是,楼主的 hv 不是最近开的,而是很长时间以前有一次装 docker 的时候 docker 帮我开的,后面一直没有彻底关闭。在这么长时间内,楼主长期运行过包括但不限于 3A 游戏、计算密集型任务、IO 密集型任务(虽说 windows 也没什么可 IO 密集的)等等工作,完全没有感受到任何性能下降,亦无稳定性问题。
2 、关于操作界面的痛点: 楼主本人这次跑的是无 GUI 系统,一种说法是 hv 的 shell 对于图形界面是非常弱的,另一种说法是最近已经改善了,我没有精力去验证。但是有一点确实,宿主机和虚拟机无法共通剪切板(起码楼主大概搜了一下,没有配置成功),这确实是一个痛点,楼主认为可能是开发环境下阻止你使用 hv 的第一痛点。
3 、关于无法共存的问题: hv 开启后无法与传统的 vmware 、以及其他基于虚拟化技术的工具比如 amd master 之类的共存。楼主目前使用的 windows10 LTSC 版本上确实是这样的。但是还有一个新闻是上个月( 4 月)更新的 windows 中已经可以让 hv 与所有这些共存运行了。楼主本人大多数时候是关闭自动更新的,这方面还是有请懂哥做补充。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.