标签 NAS 下的文章

接上次硬撸ROS失败。平衡需求和成本预算,最终还是决定选择虚拟机方案。

硬件选择

需求:

  1. 设备放置在弱电箱
  2. 作为家庭互联网接入的主要设备,同时兼顾局域网设备通信的核心路由及数据交换服务
  3. 满足宽带双拨的千兆解决方案

通过上述需求分析,进行简单筛选。主流工控方案,N5105和N100进入了我的最终抉择名单中。通过性能对比,N100方案比N5105方案领先那么一丢丢,成本也贵约莫100块。通过和博友往记的讨论,最终敲定了N100方案,主要是基于自身对ROS的特殊使用需求。

具体配置如图:

N100配置

伪开箱

目前首富家开售的N100方案分为两类:一类是小主机;另一类是工控机。观感主要区别在于外扩接口的差异。由于我需求的主要功能是用作软路由,因此选择4网口版本。外观照片走一波:

蓓控N100

蓓控N100_散热器

蓓控N100_前面板

蓓控N100_网口

安装部署

开箱后进行简单硬件测试,没有发现问题,开始装机。

内存测试

厂家预装了iKuai软路由系统,其实一般家用应用需求其实也能满足,但我是个爱折腾的人,目标自然是ROS。由于设备单跑ROS性能相对会比较富余,因此我决定以虚拟机方式部署ROS,作为前瞻部署为日后功能扩展预留空间。母鸡系统使用的是自己比较熟悉的PVE。

轻车上路,很快就安装完了。
PVE

简单配置了ROS,并进行一些基本测试,基本满足日常使用需求。没有出现之前使用WR330撞到硬件性能墙的问题。

ROS

网络测速也能跑满运营商的宽带。
测速

2.5G网口也能聚合到局域网交换机上跑满端口带宽
聚合测速

待机功耗也在预期范围内

功耗

使用感受

经过1个月的使用,基本能满足家里日常使用需求。

在选择前博友往记也曾提醒过我N100发热量比较大,若放在家里的媒体箱可能应付不来。刚开始我还想一个TDP不是只有6W的小盒子,能有多少热量?

结果现实狠狠给我一记大嘴巴。广州今年夏天确实比较热,放媒体箱一天不到就热挂了。一摸散热外壳,这温度能烤鸡蛋牛排。最后硬着头皮给媒体箱加装散热风扇,顺便改造媒体箱风道,机器的外壳温度才终于稳定在50度以内。

总体而言,本次折腾达到预期。


前言

前段时间搬家,对家庭网络进行重新部署。由于目前正在使用丐版mbp,外部存储空间需求显得十分紧迫,所以把部署nas的计划进行提前。品牌nas非常好,除了贵。因此追求性价比的我(垃圾佬)自然选择了DIY方案。

天生好大喜功的性格,让我在硬件选择上容易吃亏。几十块一个CPU,不香吗?查了一下,老伙计E5系列居然还有TDP是45W的低功耗产品勘误: E5-2630LV4 TDP: 55W,但价格是普通版本的几倍,忍了!于是在低价和好奇心驱使下,我上马了x99方案。

CPU

功耗难题

装机

配置清单

万能的海鲜市场,配置很容易拿到。作为资深垃圾佬,这种装机配置自然也没有什么难度,手到拿来。

上机图(又不是二次元,插线那些就不讲究了😀)

插电,开机。

风扇狂转,一摸CPU散热器,能煎牛排了。坏了!功耗肯定不低。于是拿出功率计一测,功率在50-70间不断的跳变。这待机功耗也太吓人了吧,说好的TDP 45W呢?

怀着忐忑的心情把PVE安装上,功耗也是这样。

节能方案

为了不白交冤枉钱,在网上搜索了一下节能方案。有的直接下定论:都服务器CPU了,能耗都不是主要考虑的问题。

这好像也对。

但是家用这机器,裸机(含万兆光口网卡,待机功耗约 8W)就上到50W+就太坑人了,如果多带几个硬盘,轻松到100W,一天2.4度电。这功耗确实夸张了。

后来看到有老哥说可以通过关闭内核降低能耗。目前确实在大部分使用场景下没有刚需使用到10核的情况。于是我测试了一下几个内核方案,全开10核,6核,和4核。发现待机功耗几乎没有变化。回头想想这逻辑不对,牙膏厂虽然挤牙膏多年,但是服务器市场一直是他们重视的大头,肯定是有自动模式弹性配置内核数量以应对功耗问题,而无需人手操作限制的。所以手工关闭内核数量能降低峰值能耗,而无法降低待机能耗。这操作显然和我需求不相关。
6核

10 核

解决方案

前面那些不靠谱的乱设置浪费了一些时间。我整理了一下思路后,专心看主板BIOS的能耗配置选项,发现服务器对这方面还是非常全面的,而且 HP 主板 BIOS 的提示信息也比普通家用主板 BIOS 要详尽很多,基本不用看手册便能完成大部分设置。

bios设置

于是,我按照BIOS里面的选项提示,把能耗设置成最低模式:包括内存限定在1333,关闭内存交错,关闭不需要的PCIe通道等。待机功耗下降到35W左右的合理水平。

后来配合自己的需求设置相应的能耗方案,目前待机能耗在 38W 左右。内核和内存性能上,我没有做出妥协,日后加载硬盘设备后,总体功耗预计在 50W 左右。能耗 1 天约 50W x 24h = 1.2度电,以第三档电费 0.9元/度 算,日电费约1.08 元,月电费约32.4 元,年电费约388.8元。这样算下来也算一笔不小的开销了。

配置后功耗

后话

从能耗方面而言,X99 方案并不适合大部分家庭用户使用。当然在性能和扩展性方面近乎是不可匹敌的,特别是对 PCIe 扩展的需求。最后,回到最基本,需求才是方案选择的核心。普通用户还是建议直接选择品牌 NAS。


家里使用的NAS是DIY的All In One主机,母鸡是PVE(Proxmox Virtual Environment)。

为便于管理和维持良好的独立性,我把主要的Docker服务部署在基于PVE虚拟机的开源NAS系统OMV(openmediavault)上。由于计划赶不上变化,原先给OMV预分配的磁盘空间已经耗尽,以致web管理页面也无法登录,只能通过ssh方式管理。为解决这个问题,在保数据的前提下,从母鸡分配磁盘空间进行扩容已是唯一选择。

原本以为扩容操作可以直接通过PVE的web管理页面便能轻松实现(我部分虚拟机确实是这样)。但是,OMV这个情况和我预想的还是有点偏差,扩容后的空间无法合并到根目录上。具体原因是部署OMV时,我使用安装方式为虚拟机IOS镜像直读模式。从win32开始遗传的电脑使用习惯(安装直接点“下一步”)安装的OMV,自然自带swap分区。由于swap分区的存在,导致pve扩容的空间无法和原来OMV磁盘组成连贯分区,无法实现根目录扩容的目的。网上清一色的教程均为简单的独立分区无损扩容,并没有提及这种带其他分区的磁盘该如何扩容。因此,我写下这个笔记供后续遇到类似需求的朋友作为参考,避免踩坑。

存在swap分区的PVE虚拟机磁盘如何扩容?

母鸡扩容

母鸡扩容的方法很简单,可通过PVE的Web管理系统->目标主机->硬件->选定目标磁盘->操作菜单:磁盘操作->调整大小,给你目标的主机设置需扩容的磁盘空间。

扩容操作

信息确认

通过ssh工具访问OMV,查看磁盘的基本情况。

PS:本例子使用的磁盘均为sda

$sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start      End        Size       Type      File system     Flags
        63s        2047s      1985s                Free Space
 1      2048s      10485759s  10483712s  primary   ext4            boot
        10485760s  10487805s  2046s                Free Space
 2      10487806s  12580863s  2093058s   extended
 5      10487808s  12580863s  2093056s   logical   linux-swap(v1)
        12580864s  14335999s  1755136s             Free Space

如上面shell信息所示,sda1被扩容的空间在磁盘分区的最后,中间隔着一个swap分区,这样扩容的空间是无法直接分配到sda1上。

如果要实现无损扩容必须把swap分区删除,然后把sda1扩容后再重建swap分区。

第一步,关闭swap分区

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           992M         52M        464M        3.2M        475M        784M
Swap:          1.0G          0B        1.0G

通过free命令查看swap是否存在占用,如果没有,直接关掉;如果有,可以尝试重启下该虚拟机。

$sudo swapoff /dev/sda5

第二步,重新配置分区列表

$sudo fdisk /dev/sda

(注意: 假如你的虚拟机磁盘初始扇区是63而不是2048, 你需要在fdisk命令后面增加一个参数 -c=dos)

参考下面的操作步骤删除swap分区和重建分区列表。

PS:本操作虽然是无损扩容,但数据无价建议有条件的一定要先备份数据!!!

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sda: 6.9 GiB, 7340032000 bytes, 14336000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e11c6df

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1  *        2048 10485759 10483712    5G 83 Linux
/dev/sda2       10487806 12580863  2093058 1022M  5 Extended
/dev/sda5       10487808 12580863  2093056 1022M 82 Linux swap / Solaris

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 12242941

Created a new partition 1 of type 'Linux' and of size 5.9 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):

Created a new partition 2 of type 'Linux' and of size 1022 MiB.

Command (m for help): a
Partition number (1,2, default 2): 1

The bootable flag on partition 1 is enabled now.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

这部分有两个地方需要注意的:

1、sda1扩容后的总大小必须是整个磁盘减去swap分区的大小,我上面的例子sda1就是: 14335999-2093058=12242941

2、fdisk分区使用‘a’命令是用来激活主分区,这个一定要重新激活。

第三步,重载分区列表

这里使用到的是partprobe,OMV是基于Debian的,默认应该安装了,如果没有安装请自行搜索安装方法.

$ sudo partprobe

第四步,重新扫描磁盘容量

使用resize2fs命令对sda1进行扩容有重扫描容量。

$ sudo resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.

第五步,重新配置swap分区

因为fdisk对ext4扩展分区支持不足,建议使用cfdisk进行重新配置swap分区。

$ sudo cfdisk
            

选择sda2分区,转换成82 Linux swap / Solaris类型并保存。

第六步,重新激活swap分区

$ mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0

记下上面的UUID。

用命令行重新激活swap分区。

$ swapon /dev/sda2

通过命令把上面的UUID修改到fstab中

$ sudo nano /etc/fstab
# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none            swap    sw              0       0

确保没有问题后,重启虚拟机。

至此,无损扩容工作便全部完成。

祝你好运!


最近家里的网络故障较高,直接原因是由于NAS主机死机导致的。我家网络目前使用软路由管理,也就是俗称的All In One模式。

排查问题

当前网络拓扑结构大致情况(目前尚为千兆模式)可以参考下图:

家居网络拓扑图

实现网络接入的硬件是2020年DIY的一台NAS主机,网络的拨号和路由功能都集中在NAS的虚拟机中完成,这种模式好处是可以统一管理,最大化资源的应用。坏处也很明显,某个环节故障即会导致整个网络瘫痪。

近期NAS频繁死机,检查日志推测应该是主板出现了故障。可能是散热问题导致,也可能是各种奇怪的原因。该主板是从黄鱼上收入的二手产品,估算使用年限也差不多到了。综上原因,我把原来万兆网络的计划重新提上了日程。准备更换当前NAS主要部件,并为万兆局域网布局做最后的准备。

升级配置

升级配件前后对比

主要配件已按照上图进行购置,花费不大。原来的主板只提供一条PCI-E 16X和1个m.2接口,存在比较大的瓶颈,因此更换通道更多的主板。而SSD,由于256G有点不够用,尝试使用UP主“小飞机DIY”实测老化耐久性测试很牛逼的国产SSD进行扩容。配件基本准备齐全,同时我还把原来的家用机箱更换成标准的2U服务器机箱,散热性能应该会好一点。

致钛

存储难题

磁盘故障

这是在威联通TS-212上的一块2T硬盘挂了。这硬盘主要是用于MacOS的时间机器备份用途。在彻底挂前,系统提示过几次磁盘需要扫描,而且也有死机的情况。因此我也对相关数据进行梳理并备份,不过好运气不是时时有的。这个主机上的磁盘是用raid0方式部署的,因此两个硬盘的数据都全部丢失了。

家里存储最多的是视频文件和DSD音乐文件,这些都是磁盘占用大户。目前的电影我基本上都看完后简单研判是否有保存价值后即删除。但是有时候会想着回看一下发现又要重新下载,但不一定有资源。倘若有更大的磁盘空间,有一个缓冲区,可以闲置一阵再去整理文件去留。

因为这个硬盘问题,我把存储扩容的事项正式提上日程了,预计会购置2个18T的企业硬盘作为主要的存储设备,这样就能彻底改善当下遇到的存储困境。不过由于近期支出有点超出预算,可能这个计划项目还会继续延宕一阵子。


本来打算下载一些电影,有时间可以看看。

打开Aria2,导入种子文件,点击下载后,画面一直停留在准备中的状态。

打开共享文件夹,下载共享目录提示“尚未准备好”。

心想:坏了,应该是硬盘挂了。

怀着忐忑的心情打开PVE,用命令行方式检查发现,磁盘无法挂载。掉盘了!除了能识别磁盘名称外,磁盘完全无法读取。

尝试数个方法无果,研判磁盘已彻底死亡。解除磁盘在PVE中的状态,把硬盘拔下来。

pve-hd

这个硬盘是从原来的台式机上卸下的。虽然蓝盘不是很适合用来做下载盘,心想是用来做BT下载中转,数据也不是很重要,就用起来了。

前段时间PVE就每天发两个Email给我,报告磁盘有故障。

细想,一路来挂的盘不是蓝盘就是绿盘。“外地人”这质量真的一般般。

原本计划把这个破硬盘换成4T的紫盘。可是,在它没有挂之前,我还没有换的动力。

去二手东看了一下4T紫盘,已经699了。比我上次购买价格460,贵了200多块。

这么一遭,真是“破屋偏逢连夜雨”。磁盘被Chia挖矿这样炒一下,还真就用不起了。算了,先不买了。于是在NAS上划了1T空间来用于下载,凑合用一段时间。

划空间的时候我顺便看了一下,PVE母机的健康状况。

pve

不查不发现,母机也出现了IO延迟问题。这次真TMD是祸不单行。

pve-ssd

母机的SSD磨损也到66%了。虽然还没有到必须更换的阈值,但是母机下面太多东西。这个需提早部署,要尽快更换。

现在唯一的希望是618,二手东的磁盘优惠折扣能给力一点!