可可软件交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 169|回复: 6

拒绝危言耸听的 all-in-boom,让你的 all-in-one 真正超全能

[复制链接]

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-4-19 17:43:22 | 显示全部楼层 |阅读模式
去年写了篇关于超全能主机 ( all-in-one ) 的文章,详述了软硬件的配置过程。
现在,这台超全能主机已经用了半年 ( 2022.10-2023.04,之前时间有误 ) ,我决定再用一篇文章谈谈经验。
在开始之前,非常明确地给出两点结论:
(1) 这种方案是完善的,只要硬件本身没有问题,不会出现死机、卡机、不稳定的情况。


如上图,距上次因升级 PVE 而重启宿主机已过去两个月,24×7 保持 11 台虚拟机开启,其中 2080M 魔改独显、三张 SATA 卡、两块 NVMe SSD 分配给多台虚拟机。在这两个月,无论宿主机还是虚拟机,从未出现问题。
(2) 在稳定运行的前提下,全能主机对生产力的提升是显著的,表现在健壮性和灵活性。
无论独显、SATA 卡还是 NVMe SSD,本质都是 PCI-E 设备,并不影响虚拟机快照功能,而快照就是生产力:① 还原快照,虚拟机随时回到初始状态,其余盘符文件保持不变;② 克隆快照,得到多台相同的虚拟机,省去安装和设置的过程;③ 虽然多个虚拟机脱胎于相同快照,通过保存在 NAS 的批处理,能将系统配置为各自用途。


下面以 Q&A 的格式,分条阐述 all-in-one 的心得。

<hr/>Q:又是独显又是核显,到底该选择直通还是虚拟化?

A:在之前的文章,我说的是独显直通+核显虚拟化的组合,实现了独显画面直出和核显性能共享。但是,如果需要将核显画面也输出至显示器,核显虚拟化的方案要借助 DisplayLink 拓展坞。下表详细比较了几种方案,可以权衡利弊做出选择,个人倾向前两种方案。


<hr/>Q:all-in-one 的木桶短板在哪,如何基于此推荐硬件配置?

A:很多人认为 all-in-one 最重要的是 CPU 核心数量、PCI-E 通道数量等指标,以我的实际体验,如果你的 all-in-one 需要当游戏主机用,尤其是跑网游,最吃紧的往往是内存带宽,其它方面只是锦上添花。
因为,即使常年开启 11 台虚拟机,我这个 QTJ1 CPU 的负荷也就是 3.6 左右,远远没达到满载的程度,但如果有后台虚拟机在全速下载上传、压缩解压缩、加密解密,跑游戏的虚拟机能明显感到掉帧,这才是影响体验的。掉帧主要是带宽不足导致,16M L3 +  双通道 DDR4 3200 的组合不能满足内存敏感场景下的带宽需求。
所以,如果预算充足,建议用大容量缓存+高带宽内存构建 all-in-one 主机,哪怕 IPC 或主频低一些。

  • 中低端推荐 11 代移动魔改平台,有 24M L3 ,搭配标准盘在 DDR4 3600~3733 的内存,即使 IPC 低于 12 代,在 all-in-one 场景仍然有优势。功耗方面,11 代移动是 10nm ,对 10-11 代桌面优势巨大。
  • 中高端考虑 13 代 i7-i9 ES ,有 30+M L3 以及支持 DDR5 ,带宽得到进一步缓解。而且,最新的 PVE 7.4 已支持切换 ( Opt-in ) 至 Linux 6.2 内核,对于大小核架构和核显都有更好的支持。
  • 高端期待 Zen4 3D 的表现,因为此组合相比 Intel 有超大 L3 和能效优势,相比 Zen3 3D 又多了核显,且价格与 Zen4 + B650 相近。待机时 Zen4 3D 相比 12-13 代的功耗劣势,在 all-in-one 环境是无需考虑的,因为 all-in-one 不存在纯粹的待机。不过,Zen4 3D 核显的直通兼容性未知,编解码性能也有待检验,等等看。
话又说回来,我这个 QTJ1 也没过气,毕竟 11-13 代目前还不支持核显虚拟化或直通,暂时只能通过上表方案 3 输出带 3D 加速的核显画面。和 11 代魔改相比,9~10 代魔改虽然性能有差距,但价格还是略低、核显可玩性更强、主板拓展性也较好 ( 前提是淘到合适的 Z 系芯片组主板 ) ,仍然可以按需选择。
除此之外,如果对功耗不那么敏感,还可以考虑无核显的配置,考虑安装多块独显,分配给各自的虚拟机。在这种情况下,32+M L3 的 Zen3 型号是不错的选择,包括那个 Zen3 3D ,CPU 低功耗缓解了独显的功耗劣势。
<hr/>Q:如何组织虚拟机的存储,里面的系统、游戏、软件、文档都放哪?

A:既然是 all-in-one ,根据每台虚拟机的用途,应关注三个关键词:快照性能复用

  • 对于虚拟机的系统盘,快照功能是必要的,因此使用默认的虚拟硬盘,但是建议开启 write-back 缓存,数据会先写入内存再回写,目的是改善延迟。在此方案里,写入系统盘的都是临时文件,无需关注安全性。
  • 对于虚拟机的游戏盘,性能最优先,因此建议直通 NVMe SSD 。只是,并非所有游戏都需要高速 I/O ,为了节约空间,一些游戏可以放到 NAS 共享文件夹,通过 mklink 做目录链接,与其它实体目录并列显示。
  • 对于虚拟机的其它盘,应尽可能实现内容复用,也就是通过 mklink 链接 NAS 共享文件夹,再用 subst 命令将父目录映射为分区,这样最终显示的分区布局和一般物理机是基本相同的,不改变原有的使用习惯。
以上文字,用图片来表示:



注:这里只直通了 256G SSD ,所以容量显得不太够

其中,以 D 盘为例,目录结构如图:



如果不点开属性,看起来和普通 Windows 设备的 D 盘差不多

当然,如果这台虚拟机无游戏用途,可以将 D 盘的实体路径直接设置在 C 盘的文件夹。
另外,subst 命令在重启后失效,建议合并至 autorun.bat 文件,加入开机启动项。
<hr/>Q:没地方放,如何用一套 ( N 套 ) 键鼠控制多台 ( M 台 ) 虚拟机?

A: 这个问题看起来很容易,搞个 USB 切换器不就行了?可是,这几台虚拟机实际是同一台物理机,USB 切换来切换去,识别的不还是原来的键鼠吗?所以,问题比想象中要复杂,关键在如何让 PVE 知道切换的意图。
不过,说复杂也不复杂,技术上没难点,只是要动点脑子。
想想看,USB 切换器的本质是什么?本质是 switch 也就是开关,相当于物理连通某一条线路的 MUX 桥 。
所以,不要把思维局限在开关这里,而是考虑桥的另一端,也就是主板的 USB 端口。
可以通过为虚拟机分配 USB 端口 ( 而不是 USB 设备 ) ,实现 USB 设备对虚拟机的独占与共享。
下图为 4 口 USB 切换器 + 7 口 USB 集线器,以此为栗子说明。


图中,集线器的上行链路 ( 绿框 ) 接到切换器的下行链路 ( 橙框 ) ,而集线器的四个 USB 上行链路 ( 紫框 ) 接到 all-in-one 主机的四个 USB 接口。由此一来,无论按下 A、B、C、D 哪个开关 ( 红框 ) ,集线器以及连接的 USB 设备 ( 蓝框 ) 都会和 all-in-one 建立物理连接。
我们先记下与开关 A、B、C、D 对应的,由 PVE 系统报告的 USB 端口,如 1-11,1-12,1-13 和 1-14 。基于此,为虚拟机 1 分配 USB 子端口 1-13.2 ,为虚拟机 2 分配 1-13.7 。当按钮 C 按下,PVE 识别到 1-13 端口挂载的 FE2.1 USB HUB 主控,以及 1-13.2 和 1-13.7 连接的无线键鼠,从而允许上图中蓝色 2 连接的无线键鼠控制虚拟机 1 ,允许蓝色 7 的无线键鼠控制虚拟机 2 。以上是 2 套键鼠控制 2 台虚拟机的原理,即 N = M 。
继续考虑 2 套键鼠控制 3 台虚拟机。在这种情况下,我们为虚拟机 3 分配 1-14.7 ,同时为虚拟机 1 添加 1-14.2 ,原有的 1-13.2 保留。此时,当按钮 C 按下,实现的功能和上一段描述的相同;而如果切换为按钮 D 按下,虽然虚拟机 1 仍然受蓝色 2 的无线键鼠控制,蓝色 7 的无线键鼠的控制对象却由虚拟机 2 变为 虚拟机 3 。以上实现了虚拟机 2 和 虚拟机 3 受同一套键鼠的切换控制,即所谓的 N < M 。
以此类推,只要 M - N \le S 并且 M \le K ,必然有可行的分配方案。这里的 S 指的是切换器的端口数 ( 开关数 ) , K 指的是集线器的端口数。
进一步地,我们考虑为一台虚拟机分配多个设备,此时先将 K 个端口分组:

  • G_{1}为绑定组,指固定控制对象的 USB 端口集合,和某一虚拟机绑定;
  • G_{2}为共享组,指随开关切换控制对象 ( 即虚拟机 ) 的 USB 端口集合;
  • G_{3}为空闲组,指闲置端口。各端口必须进入 G_{1},G_{2},G_{3} 其中一组。
我们先将需要独占控制的 USB 设备放入 G_{1} ,如下图蓝框。此时,由于子端口 7 同时在四种 USB 端口出现 ( 1.11, 1.12, 1.13, 1.14 ),无论按下哪个按钮,端口 7 的 USB 设备都会被分配至该虚拟机。
然后,我们将共享使用的 USB 设备放入 G_{2} ,如下图绿框。此时,按下按钮 C 会将端口 5, 6, 7 的三个设备分配给该虚拟机;按下按钮 D 则将端口 6, 7 的两个设备分配给该虚拟机,同时端口 5 将释放给其它虚拟机或者闲置;按钮 B 则导致只有端口 7 分配给该虚拟机,端口 5, 6 同时释放或闲置。这就实现了多对多的设备切换。



注:需设置机型版本≥7.1才可以支持最多15个USB设备

<hr/>Q:路由、NAS、媒体服务器… all-in-one 包含哪些功能最恰当?

A: 虽然叫做 all-in-one ,我认为路由功能还是应该独立出来,丢到弱电箱。理由是:

  • 全家断网的代价太大,人在外都没法远程处理;
  • 路由功能占用 all-in-one 网口、PCI-E 和带宽;
  • 路由紧邻光猫方便接线和供电,尤其多线接入。
需指出的是,路由在弱电箱 PPPOE 拨号,不代表 all-in-one 就浪费了。
事实上,all-in-one 可以再创建旁路由虚拟机,或者虚拟机通过 Relay 获得独立 IP 。
(1) 创建 Op**wrt 虚拟机,作为旁路由,提供 ( 不科学 ) 上网服务,灵活性远大于物理机。

  • 当 ( 不科学 ) 上网插件出现问题又没时间处理时,可直接关闭虚拟机,不影响正常网络访问;
  • 需更新 ( 不科学 ) 上网或其它插件时,可以先克隆 Op**wrt 虚拟机,待测试好再替换旧的。
(2) 在弱电箱的路由开启 PPPOE Relay ( 也叫 PPPOE 转发 ) ,便利性大于物理机 Relay 。

  • 某些场景希望虚拟机获得独立公网 IP ,可以通过 Relay 拨号实现 ( 需 ISP 允许多 session ) ;
  • 获得独立公网 IP 的虚拟机仍然可通过远程访问 PVE 管理端而 VNC 连接,无需额外端口转发。
除了用于 PPPOE 拨号的路由,all-in-one 支撑其它功能都是没问题的。
对于 NAS ,因为 all-in-one 的游戏主机和 HTPC 都在本机实现,内网带宽是 10Gb 级,相比普通 NAS 的 1~2.5Gb 有优势;而相比万兆网卡和交换机的 NAS 方案,也有显而易见的成本节约。
对于媒体转码服务,当前 Jellyfin 的第三方修改版 ( CN 特供版 ) 已顺利支持 11-13 代核显 ( Gen12 ) ,而且 PVE 7.4 有官方支持切换 Linux 6.2 内核,以上组合对新硬件的支持已经处在第一梯队了。
这里还想说 AI 服务,因为 AI 服务是 all-in-one 的新兴玩法和优势所在。目前我丢到群里的 chatGPT + newbing 聊天机器人就挂在 all-in-one 的虚拟机上,而且是 Win10 虚拟机,这样我可以通过远程桌面修改配置文件 ( 含 Cookie ) 和查看日志。虽然此方式很不专业,但是前段时间腾讯调整过 QQ 认证,导致有一段时间需要联合用多种 QQ 聊天机器人,分别提供账号登录和不同功能的聊天服务,而且 newbing 也有 Cookie 失效的情况,所以远程桌面 + 图形界面维护起来是简单粗暴的。在这里,可以看到 all-in-one 很好承载了聊天机器人的功能,它相比 VPS 当然是维护方便,相比物理机也有老生常谈的节能降耗和物尽其用。不过,因为我只插了一块独显,对于本地 Stable Diffusion 绘图服务,就只能运行在 Win10 虚拟机上了 ( 这是我玩游戏的主力虚拟机 ) ,如果有第二块独显,便可以直通给另一台虚拟机 —— 你可以想象这种 N 合一的超强拓展性。
<hr/>本文会保持更新,内容将涉及:

  • Q:路由、NAS、媒体服务器… all-in-one 包含哪些功能最恰当?( 20230411 已更新 )
  • Q:怎样才知道 all-in-one 已经稳定,可以正式转入长期运行了?
  • Q:如果硬件存在不稳定就运行,对于 all-in-one 的隐患有哪些?
  • Q:游戏到底该装在直通的 NVMe SSD ,还是 NAS 共享文件夹?
  • Q:如何有效组织 QQ 聊天记录,在多个虚拟机共享用户文件夹?
  • ……
欢迎过些天再来看看,如有其它疑问或意见也欢迎留言,共同完善这个 ( 未来的 ) 豆知识库。
回复

使用道具 举报

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-4-19 17:43:55 | 显示全部楼层
我记得说有些游戏对unc路径支持有问题,所以通常用块设备(iscsi或者虚拟盘文件)来在nas上共享。不知道符号链接或者junction能不能绕过这个问题,或者这根本就是伪问题?
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-4-19 17:44:55 | 显示全部楼层
“现在,这台超全能主机已经用了半年 ( 2023.10-2024.04 )”。请问作者现在在哪个时间线上?[好奇]
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-4-19 17:45:17 | 显示全部楼层
这all in boom都boom出黑洞了[酷]
回复

使用道具 举报

2

主题

5

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-4-19 17:46:14 | 显示全部楼层
“2023.10-2024.04”文章发早了啊
回复

使用道具 举报

1

主题

4

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-4-19 17:46:19 | 显示全部楼层
这个情况确实存在,做了链接之后,问题基本可以解决,包括 Steam / Epic 的软件本体和用户文件 ( AppData ) ,也都能在链接后的 UNC 路径运行。还存在极少的不兼容,主要是一些小众游戏 ( 或游戏平台 ) ,比如兰博玩平台,双击 exe 仍然没反应。因为通常是小游戏,我就直接在本地运行了 [为难]
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-4-19 17:47:10 | 显示全部楼层
[害羞] 下次更新时再修正笔误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|可可软件交流社区

GMT+8, 2025-10-12 04:16 , Processed in 0.238551 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表