UNRAID折腾记录二:传输速度慢怎么办,虚拟机握手一招170 MB/s
【写作说明】:从2020年春节电脑小白入坑NAS,玩过猫盘、玩客云、蜗牛、DIY群晖到现在的UNRAID All-In-One,一个深刻的感受就是累并快乐的折腾。从ZDM的大佬们那学习到了很多,刚查了下DS NoteStation里,这一年半里自己零零散散得居然记了600多个笔记。接下来,就逐步把折腾的经历整理分享下,不能算是教程,只能算是个自我备忘以及同广大爱折腾的朋友们分享的感悟。欢迎各位大佬指导,也欢迎各位朋友分享并交流折腾感悟。
前言
Unraid是一个非常好的系统,它在虚拟机(比如Win10/群晖Mac)的搭建上非常方便且易于维护。上一篇我介绍了成功搭建的虚拟Win10,用的是企业版LTSC,平常使用的CPU占用率非常低,适合长期挂机。同时在跑的还有群晖虚拟机,也非常稳定地运行了近一年。
但是,Unraid数据传输慢、且CPU占用率极高。大家看上图d 搜索结果,部分玩家都要因此放弃这个系统了。我也为此苦恼了很久,也经历过几乎放弃的阶段。网上查阅了很多资料,解决方案基本是要直通硬盘和直通网卡。玩Unraid的大都是DIY机器,虽然大问题是一致的,但细节上的小问题各不相同,这些步骤我也都照做成功了,但是传输速度的上限仍然只有60MB/s,且CPU暴红,我的配置是i3-8100,分群晖2个核心,且有2个SSD缓存盘,这是非常不正常的(心里很不安的/又有事情好折腾的小期待)。
经过一番折腾,终于解决了传输慢的问题,虚拟群晖向机外客户端传输文件最大速度达170+MB/s,着急的朋友和大佬们可以忽略我的长篇心路历程,直接看解决方案,同时也请大佬们也请轻拍多指点。
解决方案
Unraid搭建虚拟机Win10且直通硬盘,用Windows网络驱动器映射虚拟群晖的直通盘。简而言之,就是让2个Unraid虚拟机各自的直通盘来个文件交流。合理分配好CPU核心,可以达到110-120 MB/s的稳定传输速度。
长篇大论折腾经历
1. 先说一下主机的配置
CPU是i3-8100器用的是i3-8100 CPU和H310m主板,32G内存,有读写缓存SSD,挂载9个硬盘。
2. 折腾心路历程
我查了下虚拟机群晖的配置,发现除了2个直通的硬盘外,还有2个虚拟硬盘(vDisk)是搭建在Unraid系统盘上的(即路径是挂在mnt/user/的一个SSD)。这2个盘一个是群晖初始安装引导盘所需,另一个是用于安装群晖的系统套件,为了方便定期备份和崩溃(折腾坏)时恢复。猜想是不是因为占用了Unraid的系统盘,以至于每次虚拟群晖的数据传输都要经Unraid的系统处理,才导致CPU占用高。
群晖有2个虚拟硬盘(vDisk)是搭建在Unraid系统盘上的
按照上述思路,我先尝试把4thvDisk这个搭建在Unraid系统里的硬盘去除,只剩下直通的和primary vDisk(引导盘,不能去), 速度上限仍然是60 MB/s, CPU 占用率似乎有所下降。仔细分析,是CPU 0-1(未分配给任何虚拟机)2个核心占用率下降了,接近了我之前的推测(虚拟机群晖只用CPU 2-3,且关闭其他虚拟机)。
接下去,就只给虚拟机群晖1个核心(CPU3)。上图可见CPU总占用率下降了,可是,传输速度的上限仍然是60 MB/s,且虚拟群晖CPU一直近100%,看来双核还是必要的。 这时候又有另一个猜测,是群晖的SMB占用太高,CPU资源不足导致传输速度天花板。
于是,作了一把,把CPU1-3的3个核心都分给虚拟群晖了,居然有成效了。见下图,传输速度达104 MB/s,令人满意的速度。
继续作,我把之前用来存放套件的vDisk(搭建在Unraid系统盘)又放回了虚拟群晖里。如图所示,群晖CPU占用率不高(SMB服务只有32.7%),Unraid整机的CPU占用率爆红,但是,传输速度怎么又落回到解放前了。。。。 这是情理之中,证实了我在本文一开始的猜想“虚拟机即使直通硬盘,只要有vDisk搭建在Unraid系统盘了,传输数据就要经Unraid系统处理,导致CPU占用高”。
3. 向成功靠近的折腾
接下去的折腾思路,就是基于上述验证的猜想。在尽量避免占用Unraid系统盘的前提下,构建虚拟机的传输环境。
(1)尝试一:直通一个硬盘给Win10虚拟机,然后用Win10网络驱动器映射虚拟群晖的直通盘。简而言之,就是让2个Unraid虚拟机各自的直通盘来个文件交流。看下图,成效显著,147 MB/s已经达到千兆网络中机械硬盘的传输极限了。再看Unraid的CPU,也是爆红爆红的。这也可能是因为CPU分配的问题,因为Win10用了CPU 0-1, 群晖用了CPU1-3,核心重叠了1个且没有单独的CPU供给Unraid使用了。
2个Unraid虚拟机各自的直通盘文件传输达147 MB/s
(2)尝试二:调整CPU分配。把群晖CPU核心减少1个,这样2个虚拟机各占2个不共用的核心。群晖自己CPU的占用率69%,正常。传输速率最高能到170+ MB/s,但是极不稳定(经常出现速度为0)。
(3)尝试三:只给群晖1个CPU核心,这样Unraid也有一个独占的核心。速度在110-120 MB/s,相对稳定。这个方案或许是当前比较合理、可推荐的。
群晖1核、Win10 2核、Unraid1核,速度在110-120 MB/s,相对稳定
总结
折腾了一晚上,肩颈脖子僵了,右手肱三头肌也酸了,幸好传输速度瓶颈的问题终于解决了,可以带着满意的笑容去睡了。 本次折腾过程中,在网络中也搜索到了很多类似的问题,各路大佬也提出了各种解决方案,比如配置、直通。。。但是,每个玩家DIY的情况不同,公认的、一致可行的解决方案似乎都没有。晚上瞎折腾,采用了虚拟连虚拟的方法,尽然一招就搞定了。
根据上述折腾过程可以推断,Unraid这个系统里的虚拟机,即使直通了硬盘和网络,数据运行还是要经过Unraid系统的,再加上其本身IO的设计缺陷,就会造成总机CPU占有率过高,从而降速。I3-8100性能已经不低了,但装AIO的话,线程还是少了点。下图也可以看到,CPU对传输速度的影响还是蛮大的,由于一直是爆红,速率也在波动。
Unraid的优势胜在搭建和维护虚拟机简单和方便,但是CPU高占用率且有传输瓶颈是个短板,也难怪企业和规模化应用上鲜见。家用可以尝试,毕竟60和110 MB/s也就多等一倍的时间,这些等待或许给予了我们更多机会关注电脑之外的精彩世界。
rhww
校验提示文案
灵KOYB
校验提示文案
无形之刃
校验提示文案
鸭蛋炒番茄
校验提示文案
俊客
校验提示文案
zlylong
校验提示文案
不辣的啤特
校验提示文案
鸭蛋炒番茄
校验提示文案
kaaye
校验提示文案
ayong_sss
校验提示文案
zlylong
校验提示文案
金万来
校验提示文案
雷雷leo1
校验提示文案
吃饭超人
校验提示文案
折腾这快乐着折腾
我是用虚拟群晖向unraid里unassigned硬盘传输文件,速度上不去。而电脑直接读取虚拟群晖的速度是千兆达标的。
才有了这篇文件的折腾。
校验提示文案
yz50505
校验提示文案
IamGeekman
校验提示文案
土匪妈妈
校验提示文案
别比比了我知道我很帅
校验提示文案
南宫飞逸
校验提示文案
吃饭超人
校验提示文案
雷雷leo1
校验提示文案
南宫飞逸
校验提示文案
别比比了我知道我很帅
校验提示文案
土匪妈妈
校验提示文案
IamGeekman
校验提示文案
不辣的啤特
校验提示文案
yz50505
校验提示文案
金万来
校验提示文案
zlylong
校验提示文案
ayong_sss
校验提示文案
折腾这快乐着折腾
我是用虚拟群晖向unraid里unassigned硬盘传输文件,速度上不去。而电脑直接读取虚拟群晖的速度是千兆达标的。
才有了这篇文件的折腾。
校验提示文案
zlylong
校验提示文案
俊客
校验提示文案
kaaye
校验提示文案
鸭蛋炒番茄
校验提示文案
鸭蛋炒番茄
校验提示文案
无形之刃
校验提示文案
灵KOYB
校验提示文案
rhww
校验提示文案