除了 VirtualBox 和 VMware,还有么有更好更优秀的虚拟机软件?
时间:2024-01-11 18:12:02 | 来源:网站运营
时间:2024-01-11 18:12:02 来源:网站运营
除了 VirtualBox 和 VMware,还有么有更好更优秀的虚拟机软件?:目前我所了解的最常见的虚拟机就是vmware vbox hyper-v qemu/kvm 等,简单介绍下吧,
1.vmware
这个没什么可说的,目前用的最多的虚拟化软件就是vmware了,对于一般人来说,vmware workstation就是最好的选择。除此之外vmware还有其他版本,例如适用于mac的vmware fusion(现已支持M1芯片),以及用于企业的vmware esxi等。优点就是对于硬件虚拟的支持很好(例如可完美支持3D加速),缺点也很明显,vmware是商业化软件,workstation pro是需要购买许可证的(当然也可以使用免费版本workstation player.但是功能上也有很大限制;另外pro版的密钥其实很好找,基本上找到了就能激活)
2.vbox
全名Oracle VM Virtualbox,是由Sun Microsystem推出的一款虚拟机软件,后来Sun公司被Oracle收购之后Vbox也被归至Oracle旗下。这是一款开源软件,功能上也很齐全。但是其在硬件虚拟上不如vmware(例如legacy bios没有vmware那么齐全的菜单,当然有些设置并不需要bios菜单,直接在虚拟机设置中配置就可以了)
3.hyper-v
这是微软推出的一款虚拟机软件,是Windows系统自带的虚拟机软件。优点就是可以打开即用,无需下载,只需要在控制面板>程序与功能>启用或删除Windows功能,勾选"hyper-v"单击确定按提示重启即可。缺点也很明显:
1)Hyper-V仅支持Windows 专业版或更高版本,而家庭版,核心版等则不支持。一些电脑出厂就是家庭版的系统,需要升级到专业版等版本才能启用hyper-v;其他操作系统不支持用Hyper-V.
2)Hyper-V在某些方面也不如vmware,甚至不如其他虚拟机(例如显示方面,分辨率调整就有点困难,需要借助特殊手段才能调整(例如Linux发行版需要在grub中配置分辨率),当然通过显卡直通的方式倒是可以解决这个问题,具体方法就不介绍了)
3)Hyper-V容易和其他虚拟化程序出现不兼容的情况,例如vmware和hyper-v就存在不兼容的问题(当然最新版的vmware新增了hyper-v模式,可以解决上述问题,但是这样的话嵌套虚拟化就无法打开,如果想要开启嵌套虚拟化特性,则需要同时关闭"Hyper-V"和"虚拟机平台"功能。)
4.qemu/kvm(不包括user模式)
这是一款跨平台且开源的虚拟机软件,前面几种虚拟机均只支持少数架构的模拟(大多都支持x86,少数支持arm),而qemu则支持多达30多种处理器架构的模拟(当然,只有同架构模拟才能支持硬件虚拟化),功能上也比较强大,目前很多云服务器厂商都用qemu-kvm作为虚拟化引擎进行部署。缺点也很明显,那就是对新手比较不友好,因为qemu/kvm虚拟机需要通过命令行进行配置(当然也可以用其他前端,普通用户可以用aqemu(基于qt编写的qemu图形界面前端),批量化部署可以用libvirt作为接口);另外kvm需要一些Linux内核特性的支持,因此只有Linux上使用是最好的(当然也可以用其他虚拟化引擎,例如xen,hax等).
除此之外,对于一些特定场合,这里也列举出一些特殊的虚拟化方式:
1.容器
如果想在Linux上再运行一个Linux,那么容器是最好的方式。容器实际上就是将一个指定的本地目录虚拟成一个新的根文件系统,然后再加上一些特性以便于在其中运行一个应用或者Linux发行版。容器并不涉及到硬件虚拟化,因此即使未在bios开启虚拟化特性也可以用,性能上与真机无异,并且可以与宿主机共用一个Linux内核。常用的容器引擎有LXC docker podman(已被Linux官方认可)等.缺点也很明显,首先是容器会有一些限制,例如fuse特性不支持会导致你无法在容器内挂载存储;而且容器不支持套娃,在容器内不能再开容器,即使能开也可能在功能上是个残废;另外除了LXC之外,很少有容器支持systemd(docker其实也支持,但是需要额外配置);最后容器只能Linux运行Linux,运行其他系统(Win Mac)是不好使的(那些所谓的Win Mac容器,实际上就是在容器中跑了个虚拟机,通常都需要硬件虚拟化)
2.wsl
WSL,全名Windows Subsystem for Linux,从这个名称就可以看出这是微软在Windows内置的一个Linux子系统,同样是可以通过控制面板>程序或功能>启用或关闭功能进行启用。需要说明的是,WSL是分WSL1和WSL2的。前者的性质更像是容器,很多功能是受限制的;后者是基于hyper-v虚拟化运行,功能上也有限制,只不过比WSL1略微好一些(还有一个WSLg,本质上就是在WSL2的基础上增加了图形化功能).如果有硬件虚拟化支持的话,建议切换到WSL2,能获得更好的支持,方法见
https://learn.microsoft.com/zh-cn/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2另外根据我最新得到的消息,新版本的WSL已经提供了对systemd的支持,也就是说可以用systemctl等命令管理服务等一系列配置。当然,systemd支持则需要手动启用,由于时间及篇幅的关系,就不展开讲了。