桌面系统可用虚拟化技术选择

in 技术 with 0 comment

限制到桌面系统的话,其实问题已经简单很多了。但多达五种选择毕竟还是为选择困难症患者带来了福音,又是一次选择的机会。本文旨在为桌面虚拟化技术的个人选择提供一个明确的思路。

虚拟化术语

此处术语仅为下文讨论方便,与现行技术术语略有出入。

伪虚拟化:叫着虚拟化的名字,但实际上和我们今天谈的虚拟化没有什么关系。当然,说到底这一类技术还是提供了某个方面的虚拟的。例如docker的进程隔离技术,sandboxie的IO重定向技术。

仿真技术:用软件模拟硬件再在这个模拟的硬件上运行软件的技术。

全虚拟化:提供一整套虚拟硬件,但硬件指令通过转译或传递给物理硬件的方式执行,而非直接用软件模拟执行。从另一个角度来说,就是带系统内核一起虚拟化了的技术。

半虚拟化:在全虚拟化的基础上通过虚拟机内外软件的配合把一部分系统调用直接传递给宿主机执行。从另一个角度来说,就是把整个内核或者内核的一部分掏出来直接在宿主机上运行的技术。

一般知识

分平台选择

Mac平台

选择Parallels Desktop。VMware Fusion和Virtualbox虽然可用,但普遍反映性能和功能丰富性不如PD。至于ios的虚拟化,最好用的就是xcode自带的模拟器。

不需要图形界面的也不依赖内核的,可以用docker。

Windows平台

如果只虚拟化Windows而且不需要在本机搭建出复杂的网络拓扑,那么选择Hyper-V。虚拟化Windows用Hyper-V性能是最好的。需要轻度使用Linux的搭配WSL,中度使用Linux又依赖于Windows开发环境的搭配WSL2,重度使用Linux的装双系统或者抛弃Windows。

工作依赖于Linux内核特殊功能或者需要深入调试导致WSL2的定制内核无法满足但是又想保留Windows系统还不想买两台电脑的,使用VirtualBox搭配boot2docker。

需要经常运行安卓模拟器的,必须关闭Hyper-V。如果还有运行其他虚拟机的需求,VirtualBox或者VMware都可以选择。如果需要命令行控制部署的或者不想花钱还不想破解的,用VirtualBox,否则用VMware。

Linux平台

OpenVZ和Xen局限性太强,不适合桌面用户。LXC和LXD美则美矣,就是没有良好的生态,资源下载在国内也是一大问题,部署非常痛苦。最终还是考虑三个,KVM、VirtualBox、VMware Workstation。

KVM和VirtualBox都有良好的命令行接口,如果对此有硬性需求则抛弃VMware。KVM在用户模式下运行对主机资源访问有限制,如果有需求又不能获得root权限则使用VirtualBox。

只虚拟化Linux系统的,选择KVM。作为一个内核虚拟机,其效率和稳定性都不是其余两者可以比拟的。在图像渲染加速上配合spice效果也不错。

有对本地网络拓扑的定制要求的,用VMware,灵活性和性能是最佳的。由于各种原因不愿意或不能使用VMware的使用VirtualBox。

全虚拟技术不是硬性要求时,换docker以取得更优的性能和更小的额外开销。

按需求选择

需要运行不同架构硬件的程序的,选择QEMU,独此一家。想要性能优异的安卓模拟器的,选择Windows平台下的VirtualBox,当然实际上还是下载了一个安卓模拟器而已。凡是docker可以满足需求的就用docker。

赞 (0)
Responses