前言

笔者在学校的网络布局有许多问题,比如H3C-R365路由器功能十分少且不支持OpenWrt之类的开源系统;笔者用作NAS的树莓派I/O性能较差(可能与系统盘是SD卡有关),在千兆局域网下上传速度最多只有30MB/s,会直接影响大文件写入和 Time Machine 备份的效率。基于以上需求,我打算部署一台All in One主机。

map0.jpg

原先的布局图示


1.底层选择

All in One主机即在物理机运行虚拟机底层,然后创建多个虚拟机诸如OpenWrt,Openmediavault,ubuntu等操作系统实现不同服务,不同于别的分布式部署,这些系统都运行在同一台物理机上。采用All in One的优点有很多,比如能充分发挥一台服务器的性能,能搭建x86架构的Linux以解决M1 Mac的部分兼容性问题,易于管理等。缺点也十分明显:物理机出现故障会影响整个体系(All in Boom)。

mac.jpg

M1芯片的Mac在搭建博客的时候遇到了兼容性问题


当前市面上较为出名的虚拟机底层有Windows提供的HyperV,VMWare提供的ESXi以及开源的Proxmox VE。由于Windows Server系统的稳定性大大不如Linux系列,所以HyperV首先被排除。对比PVE,ESXi拥有操作简便,CPU虚拟化效率高等优点,但是后者硬件兼容性较差,仅原生支持一些服务器级别的硬件,经过多方面的考虑,笔者决定使用ESXi进行部署。

2.硬件准备

十分巧合的是,笔者最近获得了一台其他地方淘汰下来的一台H81-ITX主板的准系统,于是准备用这台机器来部署All in One,配置如下:

主板:SOYO-H81-ITX
CPU:Intel Celeron G1840 @2.8GHz
GPU:CPU集成显卡并预留留一条PCIe x16接口
内存:4GB DDR3
板载网卡:Realtek RTL8102E 100Mbps
电源:机箱内集成120W电源模块并附送60W电源适配器
SSD: Sandisk Z400s 128G

为了能运行更多的虚拟机,笔者直接给机器拓展了一条之前剩余的4G DDR3内存。

要想获得好的虚拟机性能少不了硬件直通,而H81主板所支持的1150针系列处理器中只有Core Gen4的部分处理器以及Xeon E3系列支持Intel VT-d^1,而其中支持超线程的CPU中,Xeon E3-1265L v3的功耗十分低(TDP=45W),查阅天梯图可知该处理器性能与E3-1230v2持平,且带有集成显卡,是个十分不错的选择,相比之下E3-1231 v3(没有集成显卡且功耗大)和i7-4790(功耗大且价格昂贵)就逊色多了,于是笔者从淘宝以380元购入了一颗E3-1265L v3散片,以替换性能羸弱的G1840并获得VT-d支持。

被替换下来的G1840


网卡在All in One里面十分重要,而板载网卡不仅带宽十分感人且第三方驱动仅支持到ESXi6.0,于是笔者从闲鱼以25元购入了一块HP-331FLR服务器网卡,这个网卡搭载了博通BCM5719芯片,拥有ESXi7.0的原生支持,最重要的是,它有4个网口!虽然HP的服务器网卡不能直接插在家用主板的PCIe口上,但是可以通过转接板转成家用的PCIe x8接口,于是又从闲鱼以20元购入了一块转接板。所幸之前选择了带有集成显卡的CPU,否则网卡将因为没有多余的PCIe接口而无法安装。

而给NAS的硬盘则选择了性价比极高的西数HC320 8TB企业盘,而这个硬盘功耗为12V0.9A,是之前西数紫盘的(12V0.45A)2倍,可能需要安装一个标准电源.

从计划的布局来看,网卡的四个网口中有三个会长期占用且数据量有一定的规模,于是给网卡增加一个散热风扇是十分有必要的,正好笔者淘汰了树莓派后多出了一个迷你风扇。而风扇接入的是5v0.2A的直流电,如果从主板散热器供电口(12V)分线给小风扇的话,小风扇噪音极大且容易过载,既然是5v供电,那应该可以从主板多余的USB针脚处借电,查阅USB针脚定义可知应该要把风扇接入到GND和VCC,接入后风扇正常转动,之后使用热熔胶将风扇固定在网卡芯片的导热板上。并且为了加固网卡和PCIe接口以避免插拔网线造成松动,笔者在网卡和PCIe的接口处也封上了热熔胶。

usbf.jpg

USB针脚定义


usb.jpg

将风扇的正负极插在USB针脚上


interface.jpg

改造完成后的网卡全景图


于是,笔者现在获得了一台这样的设备,之后又从电脑城低价购入了一个ITX机箱,装上标准电源及主板硬盘后,组装完成,开始安装系统。

CPU: Intel Xeon E3-1265L v3 @2.5Ghz
GPU: CPU集成
RAM: 2*4GB DDR3
网卡: 4*BCM5719 1000Mbps
主板: SOYO-H81-ITX
HDD: WD-HC320 8T

改造完成后的主机


装入ITX机箱并从旧硬盘拷贝数据


3.系统安装

学校内网就有ESXi6.7 update2的镜像,下载十分方便,下载完成后写入到u盘,在服务器上用usb启动就能进入到ESXi安装页面。值得一提的是,如果平台不支持Intel VT-d,则需要在安装之前和进入系统之前选择命令行,输入noiommu,否则会在加载系统时的初始化IOV阶段卡住。

而梅捷的H81主板BIOS将VT-d选项隐藏起来了,为了确定主板是否能开启VT-d,笔者用aptio提取BIOS镜像,再通过AMIBCP读取BIOS文件,全局搜索VT-d选项,果不其然搜索到了,于是将该选项调整为对用户可见,修改完成后刷入BIOS并进入查看,发现VT-d选项默认开启,在确认使用E3-1265L v3时VT-d Capability 显示为Supported后,放心进入ESXi安装程序。

需要将选项及其父目录设置为USER才能对普通用户可见


后续安装非常顺利,无脑下一步即可。

系统安装完成后,打开设置查看硬件状态,网卡已经是支持直通了,于是将非管理网口的网卡全部设置为直通状态.

将网卡切换为直通

4.应用部署

操作系统的选择

笔者曾经在树莓派上通过docker安装OpenWrt作旁路由,对OpenWrt比较熟悉,故选择Lean编译的OpenWrt x86作为软路由,这个版本集成了许多插件,UI也十分好看。

NAS的系统笔者没有选择大多数人选择的黑群晖,而选择了基于Debian10的openmediavault,这个系统功能简洁且能满足个人需求,且支持较多插件,不失为一个不错的选择。

除了上述两个核心功能,笔者还安装了Ubuntu Server 20.04 LTS,用来挂各种服务以及解决部分M1 Mac的兼容性问题。

网络部署

由于ESXi管理网口不能直通,故只直通了1个网口给OpenWrt做LAN,另外为了防止NAS数据量过大阻塞LAN口,笔者还直通了一个网口给Openmediavault以直接接入下游交换机,多余的一个网口直通给OpenWrt并且与WAN口桥接,必要时可以直接连接这个端口获得学校内网以172开头的IP地址。

新布局图示


总结

经过测试,在仅运行OpenWrt和Openmediavault系统时,整机功耗为40W,而在ubuntu进行一些高占用的任务时,整机功耗会高达60W,使用Apple Watch测量噪音约为39db,处于可接受的水平。从MacBook通过有线连接局域网并使用SMB访问NAS,速度大致接近千兆网络的带宽,可见此时的传输瓶颈为千兆网络而非硬盘,得益于openmediavault,NAS也能通过SMB作为macOS的Time Machine备份主机。至此,All in One主机已经部署完毕。

noice

使用Apple Watch测量噪音


1. VT-d:定向IO虚拟化技术,是硬件直通到虚拟机的必要条件