垃圾佬折腾的家庭服务器(二) updating...

2021/02/06 Prose

续前文,需求是搭一个专门的低功耗文件服务器。

硬件选择

搭机器最重要的就是选择平台了。网上大部分的自组NAS方案都是基于J1900/3455,带T酷睿,或者200GE等。除了J1900、E-350这两个方案外,整机预算都会破1000。

此时我不禁想起了去年年中的惠普一批N3050/N3700的二手板子。N3700的性能接近J1900,N3050则还要弱10~20%,但反正主要只是用来传输文件,挂PT,性能完全不重要。扩展性上,HP N3050有一个PCIE 3.0,一个M2口,千兆口,HDMI+DVI,2个板载USB3.0,几个前置USB2.0针脚。需要注意的是有的商家称这个板子BIOS不支持阵列卡。不知道插个直通的SAS2008可不可以。另外这块板子还有DC输入的版本。
PS:我用的这张扩展卡在其他平台上自检会有信息等入口,但在这个平台上是没有的,BIOS不支持RAID可能就是指这样的

191d77ef1bd983dd.jpg

如果有热拔插、小型化的刚需,可以在机箱的选择上增加预算。如果没有需求,一个普通ATX机箱就可以实现即便宜、又多硬盘位,又好散热,又可以用ATX标准电源。线下10元自提了一个。这样的平台CPU都是被动散热,也没有发热大户,保证硬盘有风扇吹就好,就可以把硬盘温度压制在40度以下。因为光驱位没有风扇位置,于是祭出尖嘴钳强拆爆改,卡了一个12cm扇子进去:

QQ截图20210207032114.jpg

装光驱位风扇后,温度可以直降20度。

电源二手台达电源,NAS不需要这么大功率的电源,纯粹闲置。因为需要长期开机,电源是一个比较关键的部分,建议还是尽量买有PLUS牌子认证的。另外购买了一个MLC的SSD用来做系统盘,如果纯做NAS的话,用U盘做引导系统盘就可以了。

项目 金额(参考*鱼价格)
HP N3050平台 90
2*2G 1333 尔必达 40
台达ATX电源 90
机箱 10
乐扩PCIE SATA扩展4口 75
风扇*2 10
创见64G MLC SSD 65
光驱位转3.5寸盘位*3 20
共计 400

我是沿用了以前的光驱位扩展,一次性到位还是买3光驱位转5盘位这种。这样ATX机箱基本就不用担心硬盘位的问题。

这个价格其实也可以直接收到一个没有改过的4盘位热拔插星际蜗牛D。两者相对的优劣很明显,所以了解自己的需求很重要。

系统

因为是一个低性能平台,选择了OpenMediaVault。OMV本质上就是一个debian的扩展版,增加了一个web界面来对服务、磁盘等状态进行管理。因为对linux比较熟悉,所以没有什么门槛。

官网下载OMV5镜像,整体流程类似在安装debian。需要注意在安装时,除了系统盘和引导盘,不要插入其他磁盘,否则可能会遇到grub安装失败(明显bug,我看社区15年就有讨论过这个问题,但直到OMV5都没有完善解决,真的嗷)。

在文件管理上,因为已经有大到不易迁移的老文件,同时延续不想要raid的策略(why?),Linux就直接挂载上NTFS,新盘可以用exFAT等其他系统也能用的格式。在windows上我管理多盘是使用简单的挂载策略来合并多盘,或者跨区卷。在linux上有个很有意思的工具,mergerFS,在FS层以上提供一个中间层来把对多个FS的访问透明地根据设置的策略制定到不同的FS上。多个FS的目录树合并后,是mergerFS的文件树。由于负载均衡的最小粒度是文件,只有多文件并发场景可以提速(千兆内网做这个其实也没什么意义)。
我为了减少所有硬盘总运行时间,分配策略就是先占满现有的再往后分。但现实很骨感,因为目录树等元数据的访问,事实上一个ls就会叫醒所有盘。
但mergerFS因为实现是在原有FS之上,因此可以做跨不同文件系统的弹性扩容缩容。所以根据占用情况去增添磁盘还是可以实现我说的减低功耗的目的的。

如图所示,两个2T的FS可以组成一个4T的FS。 image.png

使用mergerFS可以在OMV管理界面上通过unionflesystem插件操作。为了安装unionfilesystem,首先需要安装extra这个第三方插件支持。

安装extra插件:

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

然后就可以在web上安装新的插件了。(开源万岁

需要注意这个地方我出现过各种bug…比如装好extra后安装其他插件全部显示failed。

感觉包括OMV在内其实坑挺多的,重装了好几次,遇到了不少问题,文档也并不是很完善。举几个例子

  • /var/log下syslog等无限制飞速增长,直接吃满系统盘,导致所有服务(web console, transimission…)罢工。
  • 做普通文件操作stuck了,和log一起狂吃CPU
  • 各种原因无法登陆web console
  • 很多插件并不能跨版本兼容,OMV5就没有transimission插件可用。
  • 没有前台文件访问的情况下,mergerFS突然一直吃满CPU
  • 无法正常重启,只能强行断电,这个对远程管理挺致命
  • ……

在debian的基础上,装了transimission、chfs做webdav文件服务器迅雷快鸟等支持。这么弱的平台还是不要用docker了,配这些也不难。

感觉如果对linux熟悉的话,用一个普通的发行版,加一个web资源管理器可能是一个更稳定的选择。另外不得不说,做服务器,linux真的有各种先天的优势。PS 请不要在server上装desktop系统。

在远程开机上,因为出现过机器无法正常关机,router找不到这个机器,但机器其实还是上电的的问题。因此增加一个智能插座,来实现上电开机,同时也可以强制关机(有点伤硬盘。。)。

硬解

编码推流则可以通过其他高性能机器上的jellyfin挂载samba来实现。内网就无所谓了。如果非要冲一波,可以参考jellyfin官方文档来做(例子也是debian),VAPPI很好配置,我在N3050上测试1080p x264的普通码率视频,十几秒就会卡顿,720p就没有问题。通过htop和Intel gpu tool查看,CPU和GPU的使用率都不高,不知道瓶颈出现在哪里。。。这个问题应该是来自码率的,不是265的FHD以下视频基本推流无压力,也算满足乞丐需求了。

image.png

喜闻乐见的功耗测试

5个HDD + 1个SSD

类型 功耗(W)
空载(including 一个智能插座) ~1.5
待机 ~15
访问/下载 ~35
满载 ~50
开机瞬间 ~100

看来windows的硬盘休眠策略果然还是配置有问题,15W的功耗也就俩路由器的水平。电费节省一个亿

日志

  • 写了一些service和手动的脚本来管理后台进程,因为不是高可用的VPS,经常得被迫重启…
  • Samba的性能很差,对配置做了一些改动,还是不能跑满速度,于是选择全部换成webdav,权限管理也方便。
  • 谨慎apt upgrade滚所有东西,依赖炸了一次
    • 原来transmission是2.9.*,更新到3后,很多PT站的tracker返回各种错误信息,e.g. banned client,head没有UA等。
    • pam被更新到1.4.0,OMV登陆校验需要它,就各种登录不上。需要手动降级libpam-modules-bin和libpam-modules到1.3.*就可以了。
  • OMV本身经常出现各种问题,包括各种插件在内的操作,经常无法应用,如果出现问题的话,也很难在OMV社区找到一个正确有用的答案。相比直接CLI来控制,实在有很多弊端。于是我转而使用cockpit来代替资源管理器的功能。手写了一些脚本来代替我需要的一些OMV上的功能(谁还不是包装个hdparm呢)。(如此一看,路由器随便都能稳定运行N个月,关键的保证可连接性的网络服务还是得放在路由器上)
  • 购置了乐扩的m2(ngff,A+Ekey)转sata两口,现在一共有8个sata口。如果再出现sata口数量瓶颈,就换成SAS2008,同时供电口数量也得扩充,现在加上大4pinD口转的一共就8个sata供电口(风扇供电都走主板3pin一分多)。
  • 拆除了机箱的前面板,使得原前面板下部可以做进气。增加了两个台达9cm风扇完善风道的进出气,在原来裸露的前进气口加了胶布粘上的防尘网。
  • 机器有时候重启的时候会宕机,无法正常关机,有空翻下log定位下问题。是个kernel panic抛出导致的重启,没找出原因…
  • 21/3/1: OMV安装了extra插件之后,无法做更新和安装新插件。一开始以为是滚出的依赖问题。看了下log,发现是因为openmediavault-plugin-developers.github.io这个github page挂了,可能是维护人员误操作给下线了??直接上线国内的omv镜像源,修改/etc/apt/sources.list.d/omvextras.list源为,再手动安装extra插件就好了。(note:现在bfsu的挂了,直接用thu的吧)
    deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul buster main
    deb [arch=amd64] https://download.docker.com/linux/debian buster stable
    deb http://linux.teamviewer.com/deb stable main
    deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul-testing buster main
    deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul-extras buster main
    
  • OMV的webui有信息监控图表,这个功能是由collected.service管理的,如果不更新了,就说明service可能down了(在arm设备上默认关闭此服务,因为对disk读写密集,可能伤SD卡)。另外如果Disk部分没有监控信息,这是因为在/etc/openmediavault/config.xml中配置了有被拔出或其他错误的文件系统信息,就全部不加载了(bug)。
  • 21/3/6: transmission经常出现问题,比如tracker提示错误(版本回滚不干净导致?),完成后变成99%(jellyfin刮削?也看到有人说是权限或者文件系统的问题)且变成任务停止(crontab每5分钟启动所有任务一次解决了)。
  • 硬盘的电源管理出了问题,功耗降不下去,发现突然只有两个盘显示支持APM,导致无法standby或者idle,功耗也就一直高着。
  • 21/4/29: 前一阵子拆了一部分硬盘到主力机器上,加入CHIA挖矿大军。。farm的任务也没有下放到NAS来做,还是让NAS最单纯地承担文件上传下载的服务。彻底淘汰掉OMV等web控制端,反正工作环境的时候有一整个屏给我放terminal😁
  • 21/5/14:这个文章之前转到了zdm上,有人说往一个扩展性差的低功耗板子上插sata扩展卡性价比不高,我也终于意识到这是个xx操作。于是,把平台升级成了i5 3450+ATX板,另外插了扩展卡。把这个10元的机箱的所有位置都放上了硬盘,一共8盘位满满当当(光驱位其实可以加更多,主要是现在这些扩展涨价太厉害),然后全部加了风扇,系统盘走USB不占盘位(也能做好系统和数据分离)。系统直接重装了ubuntu 20 server,管理直接通过终端,cockpit,scrutiny这辈子都不会再用omv了)。

9月

refactoring…
继续改装机箱,增多这个10元机箱的硬盘位,加了一个3光驱位转5盘位的扩展,对应地增加了供电口。这里参考SATA峰值电流2A,大4D口带4盘的标准。

image.png 机箱的内部线,虽然看起来乱,盖子封装起来就什么都看不见了嘛,低发热也不担心影响风道。系统盘是2.5寸的镁光M4,为了节省SATA口就转连USB了。

image.png 直接把前面板拆了,才能暴露出光驱位

在功耗指标上,因为有的盘比较老,APM支持问题,同时挂了PT,休眠机制效果一般。待机80W上下。

Search

    Table of Contents