前段时间把家里的 NAS 做了一次改造,将用之前用了一年的架构推翻,换上了黑群晖。

故事还得从一年前说起。最初本着折腾的精神,采取了 Bcache+LVM 的方案,简单架构如下:
NAS 一代目

没有冗余没有备份,对于存储来说是很危险的。当时其实也是纠结了很久,手上有一块 RAID 卡,纠结了半天也没有上 RAID,原因是当时硬盘的配置是 6T*1+4T*3, 如果上了 RAID 就意味着 6T 盘会浪费 2T 空间。

既然如此,干脆一不做二不休,直接上 LVM,然后把重要的数据定时同步出来,正好还有两块 2T 盘,可以拿来做备份使用。结果最后因为太懒,以及 2T 盘没有多余的机器可以让我接入,导致备份的计划迟迟没有落地。

后来考虑到 Bcache 这个东西比较不优雅,这个项目也多年没有人维护更新(主要是存储跑了一年一直没有冗余和备份,比较慌),最终还是考虑换成黑群晖。

换成黑群晖后也多多少少遇到了些问题,这里先记录下来,算是填坑了

存储冗余问题

由于短时间内我还不会把 4T 盘都换成 6T,因此正常的 RAID 阵列还是不考虑了,决定使用 SHR(Synology Hybrid RAID)来实现硬盘的冗余。主要是 SHR 可以合理利用容量大小不一的硬盘,减少硬盘空间的浪费。目前我 6T*1+4T*3 的组合还是有浪费的空间,但是后面会新增两块 6T 盘就完美利用了。计划采购硬盘大小和数量前可以使用群晖的 RAID 计算器 先算一下可用容量以及是否浪费空间。

然而并不是所有群晖的机型都开启了 SHR,对于没有开启 SHR 的机型,我们需要手动配置

vim /etc.defaults/synoinfo.conf
## 注释 supportraidgroup="yes"
## 添加以下内容
support_syno_hybrid_raid="yes"
## 保存重启即可

CPU 型号显示问题

装完黑群晖后,显示的 CPU 型号为群晖的固定版本,有强迫症的话可以使用下面一键脚本进行修复(此处引自:关于群晖优化可以用的一键命令

curl -SLO https://wp.gxnas.com/wp-content/uploads/2019/08/ch_cpuinfo 
chmod 755 ch_cpuinfo
./ch_cpuinfo

网卡驱动问题

群晖上线后用了一天就发现了奇怪的问题,通过 SMB 从群晖读取数据时就会断网,写入正常,为了定位问题,做了以下测试:

  1. 使用 FIO 对群晖的存储进行 IO 测试 - 测试期间网络正常,且 IO 结果符合预期;

  2. 使用 iperf 对群晖网络进行 IO 测试 - 测试期间网络正常,且 IO 结果符合预期;

  3. 修改 SMB 版本和配置进行读写操作 - 读取时依然会断网,写入正常;

  4. 禁用 SMB,使用 NFS 进行测试 - 读取时依然会断网,写入正常;

  5. 在群晖本地进行文件拷贝 - 读取时正常,写入正常;

  6. 上述测试时,群晖上另有一块 X520-DA2 加以佐证,全程光口网络正常,问题出在电口上

Google 了一番,问题可能出在驱动上,我这板载的电口是 Realtek@ 8111E PCIE Gigabit LAN Controller,在论坛里找了一个大神编好的带 r8168 驱动的,更换驱动后果然就原地复活了。

内存限制问题

装完黑群晖后用 free 看到内存总共只有 2.5G,但是我物理上是 8G*2 的配置,Google 一番,需要修改 grub 配置解决

mkdir /tmp/synoboot
## 这里一定要先进 dev 目录再挂载 synoboot1,否则会报错
cd /dev
mount -t vfat /dev/synoboot1 /tmp/synoboot
vim /tmp/synoboot/grub/grub.cfg
## 在 set common_args_3617 中加入 disable_mtrr_trim 配置
## 注意这里 3617 是因为我的黑群晖是 DS 3617xs,其他型号应该不一样
set common_args_3617='disable_mtrr_trim syno_hdd_powerup_seq=0 HddHotplug=0 syno_hw_version=DS3617xs vender_format_version=2 console=ttyS0,115200n8 withefi elevator=elevator quiet syno_port_thaw=1'
## 重启后内存信息就正常了