前言

虚拟机下的软路由、NAS玩了几个月了,当初选择虚拟系统真是纠结得很,觉得哪个都好哪个都有问题。试来试去,发现已经把ESXi、PVE、unRaid这三大虚拟系统(unRaid有点冤)都折腾了几遍了。

这里罗列记录一下,也许也可以帮你少纠结一点。

我会粗略描述一些操作步骤,旨在体现操作复杂度等,可能无法当做完整教程。有需要了解详细步骤的同学可以参看其它大神的文章。


提示:以下是本篇文章正文内容,下面案例可供参考

【概述】

ESXi,是VMWare vSphere Hypervisor套件之下重要组件。前身是ESX,依赖Linux源码,后来抛弃Linux源码做成了ESXi。整个产品商用气息浓重,界面清晰易用,但硬件兼容性较差(主要面向服务器),没什么扩展性(毕竟不是linux)。

PVE,全称Proxmox Virtual Environment,是基于Debian的Linux系统,虚拟机内核为KVM。硬件兼容性优秀。界面功能不强,很多操作要靠命令行,但扩展能力几乎是无限的。

unRaid,其实是个NAS系统,是基于Slackware的Linux系统,虚拟机内核也是KVM。磁盘阵列管理非常有特色,灵活性很高。同时还有很不错的插件、Docker和虚拟机支持。

【系统安装】

ESXi

官网获取iso镜像,做成启动盘来安装。
iso引导界面。整个安装过程界面都很简陋。iso引导界面。整个安装过程界面都很简陋。
有磁盘选择和密码设定等简单环节。有磁盘选择和密码设定等简单环节。
安装成功后重启进入系统,会看到管理地址的提示。安装成功后重启进入系统,会看到管理地址的提示。
此时可以按f2进入这个系统设定菜单。主要是用来解决网络设定等问题。此时可以按f2进入这个系统设定菜单。主要是用来解决网络设定等问题。

PVE

同样是官网获取iso镜像,做成启动盘来安装。

iso引导界面iso引导界面
有磁盘、密码、网络等设定过程。有磁盘、密码、网络等设定过程。
同样,安装重启后即可看到管理地址。也可以此时登陆控制台进行高级操作。同样,安装重启后即可看到管理地址。也可以此时登陆控制台进行高级操作。

unRaid

比较特别,需要准备一个U盘,制作启动U盘。可以从官网的下载制作工具(exe)来制作。也可以直接下载系统的zip包,如果要用开(po)心(jie)版,也只能下载zip包。
如果是zip包,需要解压到U盘,修改卷标为UNRAID,执行make_bootable.bat。如果是zip包,需要解压到U盘,修改卷标为UNRAID,执行make_bootable.bat。
插上U盘,设置好引导,启动后直接进入系统。可以看到后台管理地址,也可以登陆控制台。插上U盘,设置好引导,启动后直接进入系统。可以看到后台管理地址,也可以登陆控制台。

【系统资源占用】

以下测试数据来自于我笔记本的Win10下的VMWare虚拟机,仅供参考。

ESXi 7.0b

安装iso大小351M,系统占用130G硬盘,待机内存1.1G,待机CPU约1-6%,系统启动时间61秒。
你没看错,系统占用130G磁盘!如果你是128G的ssd,可用空间直接就没有了!其实罪魁祸首是ESXi 7.0版本安装系统会默认分配120G的虚拟闪存(安装系统启动前,可以用shift+o,加上autoPartitionOSDataSize=…来改变默认大小,单位MB)。另外,ESXi 6.7安装之后默认占用磁盘空间约10G。

PVE 6.2-4

安装iso大小862M,系统占用6G以上硬盘,待机内存900M,待机CPU约1%,系统启动时间20秒。
安装系统时,磁盘空间会动态分配,除了交换分区等,主要两个分区是:系统分区和LVM分区,后者提供给虚拟机磁盘使用。不知道具体什么分配算法,实测得到:
16G硬盘安装PVE,交换分区1.9G、系统3.6G(1.8G已用)、LVM 6G。
128G硬盘安装PVE,交换分区4G、系统31G(1.8G已用)、LVM 74G。

unRaid 6.8.3

zip包213M,系统必须放入U盘(所需空间不足300M),占用23G硬盘空间,待机内存不足200M,待机CPU约1-3%,系统启动时间59秒。
23G硬盘空间中,启动Docker会默认创建20G的镜像文件。不用Docker可以手动删除镜像,也可以自定义镜像大小,还可以采用文件夹的方式而不是固定大小的镜像。

【创建/编辑虚拟机】

ESXi

创建/编辑虚拟机,比较简单易懂
创建按钮,你应该一眼就能找到了。创建按钮,你应该一眼就能找到了。
创建(1/2)前面的指引步骤,降低了新手理解难度。创建(1/2)前面的指引步骤,降低了新手理解难度。
创建(2/2)后面也有详细参数的设定。创建(2/2)后面也有详细参数的设定。
编辑虚拟机跟创建时的详细参数差不多,每一项都比较好理解,多数可以进一步展开。编辑虚拟机跟创建时的详细参数差不多,每一项都比较好理解,多数可以进一步展开。

PVE

创建/编辑虚拟机,功能也比较全

创建按钮,你能想到藏在右上角吗?创建按钮,你能想到藏在右上角吗?
创建也是多步骤指引,但是设计细节还是略不友好(步骤太多、有几个步骤不能默认)。创建也是多步骤指引,但是设计细节还是略不友好(步骤太多、有几个步骤不能默认)。
编辑虚拟机变成了截然不同的界面编辑虚拟机变成了截然不同的界面

unRaid

需要先设定并启用阵列后才能使用虚拟机。(阵列相关后面再讲)
虚拟机放在靠后的菜单里面了(毕竟主要是做NAS的)虚拟机放在靠后的菜单里面了(毕竟主要是做NAS的)
创建的系统选择倒是挺直观的创建的系统选择倒是挺直观的
创建/编辑界面完全一样,可设定参数比较有局限创建/编辑界面完全一样,可设定参数比较有局限
创建/编辑可以切换为xml形式,看起来比较高级,但每次用界面编辑都会导致xml修改丢失。。。创建/编辑可以切换为xml形式,看起来比较高级,但每次用界面编辑都会导致xml修改丢失。。。

【硬盘直通】

三个虚拟系统的虚拟硬盘性能都不怎么样。具体虚拟磁盘的性能问题可以见我另一篇分享(https://zhuanlan.zhihu.com/p/271901267)。如果真的需要高性能磁盘,最好还是做硬盘直通。

ESXi

需要命令行操作找到硬盘并挂载(RDM),然后在界面添加此磁盘。
首先要先开启SSH(最好在完成操作后再关上)首先要先开启SSH(最好在完成操作后再关上)
SSH下找到硬盘并执行命令挂载为vmdk文件SSH下找到硬盘并执行命令挂载为vmdk文件
虚拟机中添加刚才的vmdk磁盘(ESXi 6.7以上理论上可以直接添加裸盘,但有额外要求)虚拟机中添加刚才的vmdk磁盘(ESXi 6.7以上理论上可以直接添加裸盘,但有额外要求)

PVE

只需要命令行操作
SSH下找到硬盘并直接添加给虚拟机SSH下找到硬盘并直接添加给虚拟机

unRaid

先用命令行找到磁盘名,然后界面添加
类似pve,用SSH查到硬盘名类似pve,用SSH查到硬盘名
添加Manual类型硬盘,并指定前面找到的硬盘全路径添加Manual类型硬盘,并指定前面找到的硬盘全路径

【PCI硬件直通】

网卡、声卡、sata控制器等都可以用PCI直通的方式供虚拟机使用(显卡相关后面详述),性能会好过模拟设备。使用硬件直通,需要CPU有Vt-d功能,并在bios中开启,且要求不可以使用动态内存。

还有一种叫SR-IOV直通的,能力更强一些,但要求较高,我还没成功过,就不聊了。

ESXi

直接界面操作
在硬件列表中切换需要直通的设备为活动状态。7.0以后,直通切换无需重启系统。在硬件列表中切换需要直通的设备为活动状态。7.0以后,直通切换无需重启系统。
添加新PCI设备、选择需要的设备。添加新PCI设备、选择需要的设备。

PVE

先修改系统配置打开直通功能,然后就可以直接界面操作了
引导配置加上一段,执行update-grub更新引导配置加上一段,执行update-grub更新
模块配置确保包含这些模块,然后重启模块配置确保包含这些模块,然后重启
此后,就可以随时添加任意一个PCI设备了

unRaid

6.9.2之后可以在系统工具中屏蔽要直通的设备,然后在虚拟机配置中勾选要直通的设备即可。(6.9.1以及之前需要安装VFIO-PCI Config插件)
在Tools/System Devices中选择要直通的硬件,打勾、保存、重启。(有一些情况会失败,甚至无法开机,好在你可以拔掉U盘在另一台电脑上修复一下U盘上的配置文件)在Tools/System Devices中选择要直通的硬件,打勾、保存、重启。(有一些情况会失败,甚至无法开机,好在你可以拔掉U盘在另一台电脑上修复一下U盘上的配置文件)
在虚拟机配置中会出现新的可直通设备,勾选即可直通。在虚拟机配置中会出现新的可直通设备,勾选即可直通。

【显卡直通】

显卡本来也是PCI硬件之一,但是会有诸多原因导致它的直通不会那么容易。

ESXi

基本操作还是PCI硬件直通的操作,但可能遇到了以下诸多的限制:

核显直通后在Win10下驱动错误,代码43(据说其它系统可以直通,但不能显示)
想直通独显,需要在bios屏蔽核显,否则可能无法启动或蓝屏(有的主板没这个限制)
NVIDIA显卡直通需要配置hypervisor.cpuid.v0 = FALSE,否则驱动错误,代码43
ESXi7.0以后切换显卡直通不需要重启,但是已经直通显卡再重启会导致直通失败,手动切换两次可恢复。这个BUG导致直通显卡的虚拟机是无法开机自动启动的。

PVE

除一般PCI硬件直通的步骤外还需要一些配置,具体操作因为pve版本不同、硬件不同等差别很大。几乎没有限制,技术够牛(改bios、改源码……),基本能直通成功。这里只按照我遇到的简单情况说明下(PVE 6.4-4、Q87主板、NVIDIA显卡)。
在/etc/modprobe.d/pve-blacklist.conf添加这些驱动黑名单,随后重启。在/etc/modprobe.d/pve-blacklist.conf添加这些驱动黑名单,随后重启。
虚拟机的硬件配置中,机器(machine)设置为q35。虚拟机的硬件配置中,机器(machine)设置为q35。
添加PCI设备,需要勾选“高级”,随后勾选主GPU、PCI-Express添加PCI设备,需要勾选“高级”,随后勾选主GPU、PCI-Express

unRaid

系统帮忙解决了很多直通问题,仅在虚拟机中设置即可,连硬件的屏蔽都省了。
直接把默认的VNC虚拟显卡改成想要直通的显卡即可。也可以添加多个显卡。声卡一样。直接把默认的VNC虚拟显卡改成想要直通的显卡即可。也可以添加多个显卡。声卡一样。

【虚拟光驱】

虚拟光驱最大的作用是加载iso光盘镜像,用于安装系统。少数人还需要把真的光驱给虚拟机用,用来读取/刻录光盘。
ESXi,支持主机设备和ISO镜像,主机设备还能选具体哪一个设备ESXi,支持主机设备和ISO镜像,主机设备还能选具体哪一个设备
PVE,也支持主机设备和ISO,但是主机设备下面没有具体设备选择PVE,也支持主机设备和ISO,但是主机设备下面没有具体设备选择
unRaid,直接被简化成了安装ISO,不支持主机设备unRaid,直接被简化成了安装ISO,不支持主机设备

【自动开机、关机】

有时候虚拟系统主机会需要重启或是意外断电等情况,此时我们需要某些虚拟机会在系统启动后按顺序自动启动。

ESXi,一次性整体设置自动启动的开关、顺序、延迟时间等。ESXi,一次性整体设置自动启动的开关、顺序、延迟时间等。
PVE,需要在每一个虚拟机里面设置自动启动的开关和顺序。PVE,需要在每一个虚拟机里面设置自动启动的开关和顺序。
unRaid,每个虚拟机可以开关自动启动,启动顺序就是但是不能调整顺序和间隔时间。unRaid,每个虚拟机可以开关自动启动,启动顺序就是但是不能调整顺序和间隔时间。

【网络管理】

ESXi,有众多的网络配置功能,完全可以自己组建各式各样的复杂虚拟网络拓扑结构。不过家用的话,基本用不上,甚至你可能都不需要碰到这个界面。ESXi,有众多的网络配置功能,完全可以自己组建各式各样的复杂虚拟网络拓扑结构。不过家用的话,基本用不上,甚至你可能都不需要碰到这个界面。
PVE,网络管理简单一些,功能也没那么强,但家用足够了。PVE,网络管理简单一些,功能也没那么强,但家用足够了。
unRaid,几乎只有网卡设置,不过一般用途倒是够了。只是每次修改网络配置必须先停掉阵列(所有虚拟机、Docker都要关闭)。unRaid,几乎只有网卡设置,不过一般用途倒是够了。只是每次修改网络配置必须先停掉阵列(所有虚拟机、Docker都要关闭)。

【稳定性】

单说长时间运行的话,三者没发现什么区别,都很稳定。但如果你跟我一样喜欢“瞎折腾”,那就很容易出事了。

所以ESXi是最稳的,界面清晰、扩展性不强,所以也不太会出故障。PVE、unRaid折腾多了都很危险。尤其是unRaid,似乎虚拟机部分还没那么成熟,花样越多坑越多,而且很多设定(比如网络、直通)必须通过重启或关闭磁盘阵列(所有Docker、虚拟机都要关闭)来生效。

【CPU性能】

ESXI使用自己的VMware内核,CPU优化相当好,损耗趋近于0%。

PVE与unRaid接近(都是KVM),损耗大约是4-10%的样子。

详细的对比我就不展示了,受影响因素太多,我也没搞清楚,容易误导大家。总的来说三者差距不会很大,如果你的CPU性能本身有一定过剩,就不用特别纠结这点点损耗了。

【授权】

ESXi

安装即可试用60天。官网可以免费注册,会有功能限制,但个人足够用了。
最便宜的1年期授权大概是1700人民币以上。
网上可以搜注册码。
在这里插入图片描述

PVE

算是免费吧。不注册会每次登陆有个提示框,且不能更新官方稳定源。
最便宜的1年期授权是85欧元。
可以通过修改代码屏蔽提示,还可以添加免费更新源来更新。
在这里插入图片描述

unRaid

针对U盘注册,不注册几乎等于不能用。可以免费注册30天试用版。
6块硬盘的永久授权是59美元,允许一年换一块U盘(毕竟是U盘杀手)。网上有开(po)心(jie)版。
在这里插入图片描述

【Docker】

如果你没玩过Docker,强烈建议你入坑~ 比虚拟机更轻便、灵活。很多好用的Linux软件都会有Docker的版本,很好地解决了兼容性等问题。

ESXi

不支持Docker,估计未来也不会支持,毕竟不是Linux。你只能先装个linux虚拟系统,再用docker。

PVE

本身不直接支持Docker,但是可以自己安装相关软件。

unRaid

可以运行Docker,还有方便的界面支持。但是虚拟缓存有点麻烦(内存不足时才用),算是瑕疵。

【温度显示】

如果不是用过这几个虚拟系统,我还真想象不到温度显示也会是一个需要考虑的问题。

ESXi

需要主板支持IPMI,基本只有服务器才行了。否则,就完全看不到温度。

PVE

需要安装软件和手改界面代码。不同机器情况还不一样,要解决得有点编程基础。

unRaid

默认只显示硬盘温度。需要安装温度显示插件来显示CPU、主板温度。

【特别的磁盘阵列】

这是unRaid独有的,也是它最初的主要卖点。它不同于真正的raid阵列,是一种灵活的文件级磁盘空间组织方式。

使用中体会到的几个优点:

硬盘数量可以随时增加(减少也能,但会麻烦点)。
每一块盘上面都是独立的文件系统(阵列只剩一块盘,也能读出部分数据)。
结合共享目录做设定,可以指定不同目录的不同阵列分配方案。
但这个文件系统的性能不是太好,连续满负荷读写会突然性能下降,即使有ssd缓存也不行。不知道是BUG还是某些机制决定了这样的特性。

【总结特点】

ESXi

注重企业支持,界面简单易用,自身功能较强,对硬件要求较高,扩展性较低。
适合初学者、不想太折腾的、有服务器主板的(例如Gen8这种家用服务器)。迷茫的时候,优选ESXi吧。

PVE

兼容性最好,扩展性好,界面友善度欠佳,需要一定Linux基础。
适合低端机型、懂Linux的、爱折腾的。PVE玩得溜了之后,看其它的系统都像是弟弟。(可惜我玩不溜)

unRaid

Docker、磁盘阵列、显卡直通、虚拟U盘等都是亮点。必须U盘引导有点麻烦(廉价U盘7x24工作,心还是很慌)。特色功能多,出新快,因此问题也多。
适合直接做NAS、玩PT,尤其适合做家庭影视库、HTPC,玩一拖二也是个不错的选择。比较有可玩性,又不会难度特别高。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐