虚拟机下的软路由、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和虚拟机支持。
官网获取iso镜像,做成启动盘来安装。
iso引导界面。整个安装过程界面都很简陋。
有磁盘选择和密码设定等简单环节。
安装成功后重启进入系统,会看到管理地址的提示。
此时可以按f2进入这个系统设定菜单。主要是用来解决网络设定等问题。
同样是官网获取iso镜像,做成启动盘来安装。
iso引导界面
有磁盘、密码、网络等设定过程。
同样,安装重启后即可看到管理地址。也可以此时登陆控制台进行高级操作。
比较特别,需要准备一个U盘,制作启动U盘。可以从官网的下载制作工具(exe)来制作。也可以直接下载系统的zip包,如果要用开(po)心(jie)版,也只能下载zip包。
如果是zip包,需要解压到U盘,修改卷标为UNRAID,执行make_bootable.bat。
插上U盘,设置好引导,启动后直接进入系统。可以看到后台管理地址,也可以登陆控制台。
以下测试数据来自于我笔记本的Win10下的VMWare虚拟机,仅供参考。
安装iso大小351M,系统占用130G硬盘,待机内存1.1G,待机CPU约1-6%,系统启动时间61秒。
你没看错,系统占用130G磁盘!如果你是128G的ssd,可用空间直接就没有了!其实罪魁祸首是ESXi 7.0版本安装系统会默认分配120G的虚拟闪存(安装系统启动前,可以用shift+o,加上autoPartitionOSDataSize=…来改变默认大小,单位MB)。另外,ESXi 6.7安装之后默认占用磁盘空间约10G。
安装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。
zip包213M,系统必须放入U盘(所需空间不足300M),占用23G硬盘空间,待机内存不足200M,待机CPU约1-3%,系统启动时间59秒。
23G硬盘空间中,启动Docker会默认创建20G的镜像文件。不用Docker可以手动删除镜像,也可以自定义镜像大小,还可以采用文件夹的方式而不是固定大小的镜像。
创建/编辑虚拟机,比较简单易懂
创建按钮,你应该一眼就能找到了。
创建(1/2)前面的指引步骤,降低了新手理解难度。
创建(2/2)后面也有详细参数的设定。
编辑虚拟机跟创建时的详细参数差不多,每一项都比较好理解,多数可以进一步展开。
创建/编辑虚拟机,功能也比较全
创建按钮,你能想到藏在右上角吗?
创建也是多步骤指引,但是设计细节还是略不友好(步骤太多、有几个步骤不能默认)。
编辑虚拟机变成了截然不同的界面
需要先设定并启用阵列后才能使用虚拟机。(阵列相关后面再讲)
虚拟机放在靠后的菜单里面了(毕竟主要是做NAS的)
创建的系统选择倒是挺直观的
创建/编辑界面完全一样,可设定参数比较有局限
创建/编辑可以切换为xml形式,看起来比较高级,但每次用界面编辑都会导致xml修改丢失。。。
三个虚拟系统的虚拟硬盘性能都不怎么样。具体虚拟磁盘的性能问题可以见我另一篇分享(https://zhuanlan.zhihu.com/p/271901267)。如果真的需要高性能磁盘,最好还是做硬盘直通。
需要命令行操作找到硬盘并挂载(RDM),然后在界面添加此磁盘。
首先要先开启SSH(最好在完成操作后再关上)
SSH下找到硬盘并执行命令挂载为vmdk文件
虚拟机中添加刚才的vmdk磁盘(ESXi 6.7以上理论上可以直接添加裸盘,但有额外要求)
先用命令行找到磁盘名,然后界面添加
类似pve,用SSH查到硬盘名
添加Manual类型硬盘,并指定前面找到的硬盘全路径
网卡、声卡、sata控制器等都可以用PCI直通的方式供虚拟机使用(显卡相关后面详述),性能会好过模拟设备。使用硬件直通,需要CPU有Vt-d功能,并在bios中开启,且要求不可以使用动态内存。
还有一种叫SR-IOV直通的,能力更强一些,但要求较高,我还没成功过,就不聊了。
直接界面操作
在硬件列表中切换需要直通的设备为活动状态。7.0以后,直通切换无需重启系统。
添加新PCI设备、选择需要的设备。
先修改系统配置打开直通功能,然后就可以直接界面操作了
引导配置加上一段,执行update-grub更新
模块配置确保包含这些模块,然后重启
6.9.2之后可以在系统工具中屏蔽要直通的设备,然后在虚拟机配置中勾选要直通的设备即可。(6.9.1以及之前需要安装VFIO-PCI Config插件)
在Tools/System Devices中选择要直通的硬件,打勾、保存、重启。(有一些情况会失败,甚至无法开机,好在你可以拔掉U盘在另一台电脑上修复一下U盘上的配置文件)
在虚拟机配置中会出现新的可直通设备,勾选即可直通。
显卡本来也是PCI硬件之一,但是会有诸多原因导致它的直通不会那么容易。
基本操作还是PCI硬件直通的操作,但可能遇到了以下诸多的限制:
核显直通后在Win10下驱动错误,代码43(据说其它系统可以直通,但不能显示)
想直通独显,需要在bios屏蔽核显,否则可能无法启动或蓝屏(有的主板没这个限制)
NVIDIA显卡直通需要配置hypervisor.cpuid.v0 = FALSE,否则驱动错误,代码43
ESXi7.0以后切换显卡直通不需要重启,但是已经直通显卡再重启会导致直通失败,手动切换两次可恢复。这个BUG导致直通显卡的虚拟机是无法开机自动启动的。
除一般PCI硬件直通的步骤外还需要一些配置,具体操作因为pve版本不同、硬件不同等差别很大。几乎没有限制,技术够牛(改bios、改源码……),基本能直通成功。这里只按照我遇到的简单情况说明下(PVE 6.4-4、Q87主板、NVIDIA显卡)。
在/etc/modprobe.d/pve-blacklist.conf添加这些驱动黑名单,随后重启。
虚拟机的硬件配置中,机器(machine)设置为q35。
添加PCI设备,需要勾选“高级”,随后勾选主GPU、PCI-Express
系统帮忙解决了很多直通问题,仅在虚拟机中设置即可,连硬件的屏蔽都省了。
直接把默认的VNC虚拟显卡改成想要直通的显卡即可。也可以添加多个显卡。声卡一样。
虚拟光驱最大的作用是加载iso光盘镜像,用于安装系统。少数人还需要把真的光驱给虚拟机用,用来读取/刻录光盘。
ESXi,支持主机设备和ISO镜像,主机设备还能选具体哪一个设备
PVE,也支持主机设备和ISO,但是主机设备下面没有具体设备选择
unRaid,直接被简化成了安装ISO,不支持主机设备
有时候虚拟系统主机会需要重启或是意外断电等情况,此时我们需要某些虚拟机会在系统启动后按顺序自动启动。
ESXi,一次性整体设置自动启动的开关、顺序、延迟时间等。
PVE,需要在每一个虚拟机里面设置自动启动的开关和顺序。
unRaid,每个虚拟机可以开关自动启动,启动顺序就是但是不能调整顺序和间隔时间。
ESXi,有众多的网络配置功能,完全可以自己组建各式各样的复杂虚拟网络拓扑结构。不过家用的话,基本用不上,甚至你可能都不需要碰到这个界面。
PVE,网络管理简单一些,功能也没那么强,但家用足够了。
unRaid,几乎只有网卡设置,不过一般用途倒是够了。只是每次修改网络配置必须先停掉阵列(所有虚拟机、Docker都要关闭)。
单说长时间运行的话,三者没发现什么区别,都很稳定。但如果你跟我一样喜欢“瞎折腾”,那就很容易出事了。
所以ESXi是最稳的,界面清晰、扩展性不强,所以也不太会出故障。PVE、unRaid折腾多了都很危险。尤其是unRaid,似乎虚拟机部分还没那么成熟,花样越多坑越多,而且很多设定(比如网络、直通)必须通过重启或关闭磁盘阵列(所有Docker、虚拟机都要关闭)来生效。
ESXI使用自己的VMware内核,CPU优化相当好,损耗趋近于0%。
PVE与unRaid接近(都是KVM),损耗大约是4-10%的样子。
详细的对比我就不展示了,受影响因素太多,我也没搞清楚,容易误导大家。总的来说三者差距不会很大,如果你的CPU性能本身有一定过剩,就不用特别纠结这点点损耗了。
安装即可试用60天。官网可以免费注册,会有功能限制,但个人足够用了。
最便宜的1年期授权大概是1700人民币以上。
网上可以搜注册码。
算是免费吧。不注册会每次登陆有个提示框,且不能更新官方稳定源。
最便宜的1年期授权是85欧元。
可以通过修改代码屏蔽提示,还可以添加免费更新源来更新。
针对U盘注册,不注册几乎等于不能用。可以免费注册30天试用版。
6块硬盘的永久授权是59美元,允许一年换一块U盘(毕竟是U盘杀手)。网上有开(po)心(jie)版。
如果你没玩过Docker,强烈建议你入坑~ 比虚拟机更轻便、灵活。很多好用的Linux软件都会有Docker的版本,很好地解决了兼容性等问题。
不支持Docker,估计未来也不会支持,毕竟不是Linux。你只能先装个linux虚拟系统,再用docker。
本身不直接支持Docker,但是可以自己安装相关软件。
可以运行Docker,还有方便的界面支持。但是虚拟缓存有点麻烦(内存不足时才用),算是瑕疵。
如果不是用过这几个虚拟系统,我还真想象不到温度显示也会是一个需要考虑的问题。
需要主板支持IPMI,基本只有服务器才行了。否则,就完全看不到温度。
需要安装软件和手改界面代码。不同机器情况还不一样,要解决得有点编程基础。
默认只显示硬盘温度。需要安装温度显示插件来显示CPU、主板温度。
这是unRaid独有的,也是它最初的主要卖点。它不同于真正的raid阵列,是一种灵活的文件级磁盘空间组织方式。
使用中体会到的几个优点:
硬盘数量可以随时增加(减少也能,但会麻烦点)。
每一块盘上面都是独立的文件系统(阵列只剩一块盘,也能读出部分数据)。
结合共享目录做设定,可以指定不同目录的不同阵列分配方案。
但这个文件系统的性能不是太好,连续满负荷读写会突然性能下降,即使有ssd缓存也不行。不知道是BUG还是某些机制决定了这样的特性。
注重企业支持,界面简单易用,自身功能较强,对硬件要求较高,扩展性较低。
适合初学者、不想太折腾的、有服务器主板的(例如Gen8这种家用服务器)。迷茫的时候,优选ESXi吧。
兼容性最好,扩展性好,界面友善度欠佳,需要一定Linux基础。
适合低端机型、懂Linux的、爱折腾的。PVE玩得溜了之后,看其它的系统都像是弟弟。(可惜我玩不溜)
Docker、磁盘阵列、显卡直通、虚拟U盘等都是亮点。必须U盘引导有点麻烦(廉价U盘7x24工作,心还是很慌)。特色功能多,出新快,因此问题也多。
适合直接做NAS、玩PT,尤其适合做家庭影视库、HTPC,玩一拖二也是个不错的选择。比较有可玩性,又不会难度特别高。