关于Unraid,之前已经写了一篇长文:和我一块搭个Unraid服务器吧,All In One,就是这么easy~

为什么还要再谈它呢?

因为这次换新服务器遇到了极其坑人的情况

发怒滑稽

下面记录下坑人的地方和我想了两天想出来的解决办法

滑稽_喝嘤料

坑人之处

Intel 10代处理器不能进入GUI模式

也不知道是 Unraid 还是 Intel 的锅,10代 Intel 处理器是不能进入 Unraid 的 GUI 模式的,稍微去网上看了一下,无论是贴吧还是 Unraid 的官方论坛都有说这个问题,进入 GUI 会在加载完成后卡在左上角光标闪烁的界面

Unraid ,背锅!

似乎 Unraid 在 UEFI 模式是不能正常进入 GUI 的,拿旧服务器试了下,用 UEFI 启动,果然如此,也是会在加载完成后卡在左上角光标闪烁的界面

Intel ,背锅!

尝试通过 CSM(有的主板叫 Legacy/传统启动方式)启动,结果报 there is no VBIOS support,然后自动切换成 UEFI 了,新服务器现在没接屏幕了,不好拍照,从网上找了张图,大概长这样

no_VBIOS

好家伙,你个 Intel ,偷工减料,懒的做 Legacy 模式的 VBIOS 是吧发怒滑稽

别说了, AMD,yes! AMD,yyds!

早知道不图便宜买 Intel 了,拉跨玩意儿!

不能进 GUI 会有什么问题呢?

因为我们做的是 AIO( All in One ),管理全靠软路由虚拟机启动分配 ip 进行管理,而 Unraid 的虚拟机需要先启动阵列(Array),换盘的时候,软路由停机,无法通过网络管理,只能通过 GUI 界面操作,做软路由的虚拟机的时候, network 淦炸了也需要用 GUI 来救,没有 GUI ,等于没法做 AIO 了!

滑稽_菜醒

没法做 AIO = 只能用 ESXI/PVE

最开始我放弃了希望直接转 ESXI/PVE ,然而!我想到了极其巧妙的解决方法! Unraid 还是能用的!

巧妙解法

这个非常巧妙的解法是从蛤为的配置指南(蛤为 MDU/FTTM(Fiber To The Mobile)设备MA5626)里面启发来的,不得不说,蛤为nb!

这个方法,一言以蔽之,叫:带内管理和带外管理!

滑稽_还有这种操作

带内管理,是啥玩意儿?

什么是带内管理?来康康蛤为怎么说?

带内管理

带内管理2

比较懂的懂哥看了图肯定已经懂辽~

再给似懂非懂的老哥讲讲

这个 MA5626 ,可以简单的理解成大号光猫,没错,就是家里拿来接运营商光纤的那个,只不过个头比较大,我手上有个 MA5698 ,给感兴趣的老哥看下,长这个样子

MA5698

左上角的 0 和 1 就是接运营商入户光纤的地方,然后右下的 4 个 GE 电口和 2 个 GE 光口就是接路由器的

这个带内管理方式就是现在运营商广泛使用的方式,在大家手里的光猫,有个 TR069 协议,如果看了光猫后台,不能发现,除了上网( Internet )外,还有其它业务存在,比如电话( SIP )或者电视( IPTV ),还有就是这个 TR069 业务,TR069 是运营商用来下发业务配置( 就是上网参数,现在的师傅只接光纤,上网参数都是远程下发的 ),还有就是报修宽带时的远程诊断(比如康康是不是光纤没插好,像这样简单的故障用户可以自己解决,没必要让师傅来),即 TR069 主要是管理和维护功能

像这样把类似上面这样,将业务(上网)和管理( TR069 )集成到一根线(入户光纤)上,走相同通道(VLAN不同,但是物理链路相同)的方式,就叫做带内管理,不过我这个机器是通过 telnet 、SNMP等方式管理,光猫是 TR069 协议,但是原理相同

最后来个小白(前提你得会 Unraid 做 AIO )理解,如果对上面这些不熟悉,可以这样简单理解:

带内管理就是 AIO 搭完之后,用 Unraid 里面跑的软路由虚拟机分配给 Unraid 的网址访问 Unraid 并加以管理

带外管理,又是个啥玩意儿?

什么是带外管理?也来康康蛤为怎么说?

带外管理0

带外管理1

带外管理2

如果你看懂了带内管理,这个带外管理也一定能轻松理解

将带内管理通道分离,单独拉一根线来管理,就是带外管理

还是给再给似懂非懂的老哥和小白讲讲

似懂非懂的老哥版:

带外管理就是你家的光猫,运营商给你拉两条光纤,一条拿来上网,另一条用来管理光猫

小白版:

带外管理就是无论任何时候,都能让你访问 Unraid 服务器的法宝,相当于就是 GUI 界面!通过带外管理方式,你相当于有了一个能正常进入 GUI 模式的 Unraid 服务器!能够解决像最上面说的坑爹问题!


那么,下面就来教大家怎么在自己的 Unraid 服务器上建立带内和带外管理通道吧!

建立带内管理

(带内管理其实就是 AIO( AIO:All in One ) 的常规操作,相信各位懂哥肯定是会的,懂哥们可以跳过这部分看带外管理部分)

带内管理硬件使用方案规划

在开始着手建立带内管理之前,咱们首先需要做硬件规划,这里以我的服务器为例,大家还是需要根据自己的情况仔细考虑规划

先来康康我有什么东西,我画了个简单的示意图

带内管理硬件使用方案规划示意图

如图,我的新服务器,主板上带了一个 Realtek 的 2.5G 网卡,型号是 RTL8125 2.5GbE Controller

我插了 3 张 PCI-E 的网卡,从左到右,依次是

Intel 的双电口千兆网卡(82571EB/82571GB Gigabit Ethernet Controller D0/D1 (copper applications))

Intel 的双光口千兆网卡(82571EB Gigabit Ethernet Controller)

从储藏间翻出来的垃圾 Realtek 的单电口百兆网卡,型号是 r8169 ,非常老的东西了

我的两个光猫(移动电信双线)分别是千兆电口和百兆电口,从未来升级的角度考虑,两个都给千兆电口,所以把 Intel 的双电口千兆网卡给光猫,做上网业务

新旧服务器需要一根以上的网线连接,我们选择 Intel 的双光口千兆网卡,但是只用其中的一个口,后面我们说为什么不接两个做链路聚合的原因,这两个口我们都用来做带内管理

最拉跨的 Realtek 的单电口百兆网卡,肯定是拿来做带外管理了,带外管理流量小,没有什么需求,平时不用(甚至可以把线拔了,用的时候接上)

带内管理接线方案规划

然后咱们来说线怎么接,看下面两张图,肯定能看懂

带内管理接线方案规划

带内管理接线方案规划

虚拟机桥接方案规划

虚拟机桥接方案规划示意图


说完了硬的(硬件),咱们来看软的(软件配置)

带内管理配置注意事项

接下来咱们来说网络设置, Unraid 的 Network Settings 做的是极其拉跨,不过倒是方便了小白用户,如果不用 Unraid 做 AIO ,只做 NAS 应用,还是非常好的

先说注意事项:

(下面提到的 ETH0 等的具体分配请参照上面的图)

  • 直通到虚拟机(软路由)的网卡在网络设置一律选“ no ”,即不做绑定,不做桥接,不获取 ip 地址

目的是减少启动时寻找 brx 的时间( x 对应 ETH 几),如果直通的时候网卡在设置里面还做了桥接,开机时会因为找不到桥接设备报类似这样的错(不影响开机,但是会延长启动时间)

device "br3" not found

这样做可以减少开机时间,使服务尽快上线,减少服务不可用时间

  • ETH0 是带内管理主要通道,同时,如果有接线的需求(即想把 ETH0 桥接给软路由做 LAN 口并接其它物理设备,)最好使用 ETH0

使用这种奇葩方法可以在需要网口不多的时候避免交换机的使用,减少交换机的购买和使用成本(电费),比如,我需要用三个LAN口,一个给无线 AP ,一个接旧服务器的同时还需要给自己获取一个 ip 用于带内管理,一个预留给 Docker容器,对 ETH0 和 ETH1 的复用可以避免具体使用方法下面会具体来说

同时需要注意,Unraid 显示的 ip 是 ETH0 的 ipv4 获取到的地址,同时,在默认情况下,Unraid 连接广域网也使用 ETH0

  • ETH1 给其它闲置网口,需要至少留一个用来给 Docker 容器上网(当然,仅使用 Host 或 Bridge 模式就不需要了,我是需要容器单独给 ip 单独跑的,这个看自己的需求)

ETH1 按照我的配置方法也可以用来带内管理,如果你没有 ETH0 接线的需求或者是 Docker 容器单独获得 ip 来跑的需求可以考虑将 ETH0 和 ETH1 合并,只用一个口来实现你需要的功能,方案应该能够自己轻松规划出来,可能能够节省你的一张网卡,降低成本

  • ETH2 给带外管理,我的例子里面就是给 Realtek 的单电口百兆网卡

带外管理需要的流量极少,百兆网卡足以,随便找张网卡就好了

  • 剩下需要直通的网卡排在 ETH2 后面依次排列,但建议按 MAC 地址排列,比较方便

按照 MAC 地址排列,能够将同一网卡的多个网口放在一起,方便管理

小贴士:如何判断网卡对应的是 ETH 几?

方法一:通过 MAC 地址判断,如果知道 MAC 地址,就能找到网卡是那个

优点:简单粗暴,判断迅速无敌手

缺点:有的网卡上没有标 MAC 地址的贴纸,这个方法就不好用了(当然,你可以找台电脑,或者用服务器进 PE 看,但是这就比较麻烦了)

方法二:通过网卡型号判定

优点:可以轻松判断某几个网口是一组的

缺点:不能精准判断具体某个网口的位置,同时,如果多张网卡选择了同一芯片的方案,也没法分出来了

方法三:通过拔插线的方式判断

优点:最通用的方法

缺点:拔插线非常麻烦,而且你可能还需要去路由器后台找刚插线的网口分配的 ip

使用方法三,建议最好先建立带外管理,再通过带外管理方式进入管理界面配置,当然,如果有某一个网口已经确定了它和 ETH 几的对应关系,用它来进入管理界面查看,也是可以的。但是这里推荐先建立带外管理,再通过带外管理方式进入管理界面配置

  • 建立带外管理,需要一个光猫处于拨号上网模式(我的例子),如果你需要让光猫处于桥接模式,你需要找一个路由器(对性能完全没要求,但是最好是无线的,用起来会比较方便)

简而言之:带外管理需要一个路由器

( ps :不想用路由器, Unraid 服务器设置静态地址直连电脑,电脑也设置静态地址当然也是可以的,可以节省一个路由器设备,当然,如果你知道这个方法的话,一定也能自己完成这个设置了,对吧huaji)

带内管理配置实战——判断并整理网卡、网口顺序

判断并整理网卡、网口顺序

首先,我建立了带外管理通道,并通过带外管理通道进行管理(可以先跳到带外管理部分,建立带外管理之后再回来)

带外管理通过10.0.0.11

通过下图(可以在 Settings —— Network Settings 里面找到,MAC 地址已隐去)

INTERFACE

这个图是我完成之后截的,顺序已经整理好了,如果你这里顺序不太对,需要先进行整理:

首先,判断 ETH 几对应具体哪个网口,通过上面注意事项里面的三种方法结合使用应该能够轻松判断

然后,通过箭头这里调整 ETH 的顺序(按照之前规划的方案), Apply 并重启

再次提醒:
用来带内管理的放在最前面
用来带内管理而且需要用来接线的放在 ETH 0
带外管理放在带内管理的后面
直通的放在带外管理的后面

设置网卡前一定先配置好各自的网络设置

比如:ETH 0 取消绑定( bond ),开启桥接( bridge ),设置 DHCP ;ETH 1 开启桥接( bridge ),设置静态 ip ,ETH 2 (带外管理)不开桥接,设置 DHCP

这是按照我的例子来的,自己需要考虑自己的方案做出相应的调整

调整 METRIC

METRIC 用来衡量某个网口到下一跳(路由器)的距离,Unraid 在有多个网口可供访问广域网时,会选择数字最小的出口

小白理解:ETH 0 的 METRIC 设置为1 , ETH 1 的 METRIC 可不设置或设置的比 ETH 0 稍大(如 10 ),ETH 2(带外管理)的 METRIC 设置为几个之中最大的(如 250 )

IFETH0

带内管理配置实战——直通网卡

有两种办法,通过 VFIO-cfg 插件(推荐)和修改启动参数(不推荐)

无论哪种网上教程都非常多,就不重复写了

带内管理配置实战——配置各种虚拟机和 Docker 容器

配置软路由虚拟机(主路由)

参照之前的方案(上面的图),我们需要直通三个网口(两张网卡),桥接两个网口

直通的话也非常简单,网上教程也一堆,但是桥接的两个需要注意:

你选择的路由系统,可能不支持默认模式桥接的网卡

比如我新服务器的 iKuai 就是这样,安装完成之后,如果你不能在软路由里面看到这样的网卡(图里面 eth0 和 eth1 这样的,即 Virtio network device ),说明你的软路由不支持默认模式(Virtio)桥接的网卡

Virtio正常工作

遇到这种情况,你需要在 Unraid 中进入虚拟机设置的 XML 模式(点 FORM VIEW 右边的按钮切换),右上角有切换开关,相信你应该能轻松找到

网卡桥接默认模式

上图是默认模式,可以看到,它的 type 是“ virtio ”

下图是我们需要修改的模式,将 type 由 “ virtio ” 修改成 “ e1000 ”

网卡桥接修改模式

修改之后,就能看到之前看不到的网卡了,这时显示的网卡类型就是 Intel 而不是 Virtio network device 了

e1000正常工作

需要注意的是,一定先尝试使用 “ virtio ” 模式,如果 “ virtio ” 模式能正常工作就不要用 “ e1000 ” 模式,仅在 “ virtio ” 模式不能正常工作时使用 “ e1000 ” 模式, “ virtio ” 模式是全虚拟化,效率高,节省资源,同时速度快

配置旁路网关虚拟机

与上面主路由类似,我使用的是自编译的 OpenWRT ,一般 OpenWRT 都能正确识别 “ virtio ” 模式的网卡,只需要桥接一个网口( br0 )即可,将主路由的 DNS(旁路网关上有 DNS 服务)并将网关设置成旁路网关的 ip 地址,旁路网关关闭 DHCP 服务

配置其它虚拟机

其它虚拟机,桥接选择网卡 br0 即可

配置需要单独分配 ip 的 Docker 容器

需要单独分配 ip 的 Docker 容器,使用 br1 并手动指定 ip 地址

注:br1 对应的网口 ETH 1 最好不要物理接线

建立带外管理

使用光猫的情况(光猫处于拨号模式,且拥有无线功能的推荐)

非常简单,将带外管理网口接入光猫的 LAN 口即可,管理时连接光猫的 WiFi ,使用光猫分配的 ip 即可管理

如果光猫开了设备隔离(AP隔离)需要关一下

使用路由器的情况(光猫需要处于桥接模式的推荐)

有两种方案

小白推荐:找个旧的路由器(性能无所谓,有无线功能就行),将带外管理网口接入路由器的 LAN 口即可,路由器可以不接 WAN 口,管理时连接路由器的 WiFi ,或使用有线连接路由器,使用路由器分配的 ip 即可管理

如果路由器开了设备隔离(AP隔离)需要关一下,通常这个功能没人开,小白应该遇不上

也可以继续使用光猫,如果光猫开了设备隔离(AP隔离)需要关一下,方法与上面基本类似,但是可能需要用超管账户登录光猫修改端口与 SSID 的绑定情况(上面使用光猫的情况可能也会遇到,如果不会改的话还是推荐找个旧路由器)

使用静态 ip 的情况(并不推荐)

给懂哥准备的,和配置网管型交换机方法类似,懂哥们应该已经懂我的意思了

使用带内+带外管理模式相比使用内建 GUI 模式启动管理服务器的好处

  • 不需要接屏幕,省去屏幕和线,降低成本,减少接线麻烦

在维护时使用带外管理,再不需要接屏幕用 GUI 模式了,屏幕省了,视频线也省了

  • 使用代码直通, GUI 启动可能会停止直通

使用代码屏蔽启动方式的从命令行模式切换到 GUI 模式可能会停止直通,带来不必要的麻烦

  • 减少显示器接口占用

不需要用屏幕了,当然也省了显示器接口的占用,把接口拿去接电脑、手机、XBOX、PS5,不比接服务器香?

  • 防止垃圾显卡和服务器板载显卡默认输出低分辨率的问题

有些使用亮机卡的用户,不仅占用了电脑宝贵的 PCI-E 接口,亮机卡可能在 GUI 模式默认输出 800*600 分辨率的内容,看起来非常难受,有些服务器板载显卡也有这个问题,比如我的旧服务器就是,在低分辨率下设置是相当难受,使用带内+带外管理服务器就不会有这个问题啦~