自建 NAS 遇到坑,我重新设计了方案,请教各位的使用经验

2023-09-27 22:43:09 +08:00
 gridsah

目前方案

HPE Microserver Gen10 四核心版 (不是 plus, 不带 iLO),纯 NAS ,使用 pkg 装了 NUT v2.8.0 来和 APC bk650m2-ch 通信。这台 UPS 专门供这一台 NAS 用。不跑存储 (NFSv4 only) 和备份脚本之外的东西。需要折腾的服务都跑在另一台 DELL R220 上。

系统盘是光驱位的 intel s3710 200G ,裸装 FreeBSD 13.2 。

数据存储在 4x8T HC320 ZFS raidz2 上。两个 PCIe 接口插了 3 块 NVME ,一个用转接卡转出两块 16G 傲腾做 raid1 SLOG ,另一块装 256G NVME SSD 做 L2ARC 和 SWAP 。

有额外的 8T (HC320) + 2T (西数金盘) 做冷备。

遇到坑

目前表现是,我的白群晖用 NFSv4 从 raidz2 上读数据到群晖的存储池中可以跑满 FreeBSD 单口的 1G 带宽,持续一段时间之后整个系统就自动重启。PC 使用 NFSv4 从 raidz2 拷数据到本地硬盘也一样。

刚开机之后跑 6G 左右 NFSv4 流量就会重启,开机大约 4 小时之后跑 20G 以上的流量也没事。

刚开机之后用 iperf3 测试,用双端口链路聚合跑满 2G 带宽,打 40G 流量 (双向各测一次共 80G) 也不会自动重启。倒是我还观察到 bge 驱动在 iperf3 测试中的波动特别大 (700M+ ~ 900M+)。

我以为是我自己没事就 freebsd-update fetch install 引入了 bug ,但是由于每次更系统时候都有快照,所以我回滚到了最初版本的系统,问题依旧。所以应该不是系统更新导致了这个问题。

crash log 里面什么都没有,很干净。

还有一点我觉得很重要,应该提一下。我在 FreeBSD 的 bugzilla 找到,FreeBSD 使用的 bge 网卡驱动由于开发者手里没有设备,有些 bug 还无法解决,导致目前还不能用于生产环境。

这问题应该是系统装好就有了,但是由于开机后只需要多等几个小时这个问题就不容易被触发,而我又有 UPS 才导致这个问题就没表现出来。几个月以后,就是最近的一次停电,UPS 没撑到来电导致 NAS 关机,我刚开机没几分钟就开始干活时候,有了大的网络负载,这才发现。

目前无法判断是 bge 的驱动有 bug 还是 NFSv4 有 bug 。但现在问题无法解决,FreeBSD 这个方案肯定是用不成了。

新方案

有冷备,可以瞎折腾,不怕丢数据;利用现有硬件,不加新机器,柜子放不下了。

核心需求是 NFS ,后续可能会加 samba 。需要跑一些备份数据的 python & sh 脚本。

第一个方案:

Linux + ZFS on Linux 。PVE 好像就是这个思路。我只需要把旧存储池导入就行。

我用好多年 PVE ,两个礼拜前刚把 PVE 的存储换成本地的两个 ZFS pool + NFSv4 from HPE Gen10 就遇到了 Gen10 流量一大就自动重启的问题。

Debian 或者 RHEL (开发者授权) 这两个系统我比较熟,要装的话应该在这两个系统里选了。不晓得 ZoL 现在靠谱不靠谱。

我是比较偏向于这个方案,少折腾,也有成熟的应用案例。请教各位 ZoL 在 Linux 上表现怎么样?

第二个方案:

Linux + btrfs 。群晖是这个思路。

我用的话,mdadm (raid5 or raid6) 然后直接格式化成 btrfs 。我看 btrfs status 里的 raid 那几行还没有变成 OK 。

还有就是我在论坛里找到好些 btrfs 丢数据的帖子,ZFS 丢数据的帖子很少。

我感觉这个方案不是很靠谱。但有群晖大规模商用的案例在前,所以也可以考虑迁移到这个方案。各位推荐这个方案吗?

第三个方案:

Linux + mdadm (raid5 or raid6) + lvm (主要用快照) + ext4/xfs 。我第一版 NAS 的方案,也是最通用的方案。

但是我非常需要 COW 文件系统的快照以及 checksum 功能 (纠正 bit rotate)。

所以这个方案的优先级比较靠后。我还是偏向于使用 ZFS/btrfs 这种 '下一代' 文件系统。

第四个方案:

Microserver 也是 server ,所以.....HP 的兼容列表里有 Windows Server 。

但 Windows Server 的技术栈我实在是没精力了解......

所以这个方案的优先级......

另外,就我司 Windows Server DFS 的使用体验来看,Windows 存储方面的坑也少不了。

2446 次点击
所在节点    程序员
22 条回复
gridsah
2023-10-05 15:40:22 +08:00
更新:

系统选好,zpool 配好,导数据速度正常,但是发现了在 zpool iostat 显示没有负载的情况下,sysstat 中的 iostat 显示有负载的问题。
https://www.v2ex.com/t/978894
查很久文档没有结论。

最后决定,去 TMD OpenZFS ,上灵车!
btrfs 文档阅读中......
gridsah
2023-10-05 16:09:06 +08:00
更新:

#21 的问题解决了,问题出在我不会用 iostat 上 😅

目前决定,PVE 保留 ZFS ,NAS 用 btrfs
( 有冷备说话就是硬气 😆

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977732

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX