Linux 作为 NAS,数据在独立的 ZFS 文件系统上,系统盘需要做成 Root on ZFS 吗

2023-09-28 14:27:09 +08:00
 gridsah

FreeBSD 作为 NAS 遇到了硬件兼容性问题,所以准备转到 Linux + OpenZFS 的方案,详见这篇帖子

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

系统盘是 SATA3 Intel S3710 200G ,企业级固态,质量很好。

lvm + ext4 是一开始的方案,但是我读 OpenZFS 文档的安装教程的时候看到了 Root on ZFS 这样的操作。

很纠结到底是 lvm + ext4 的方案,还是 Root on ZFS 。

我考虑 Root on ZFS 的出发点是,防止 bit rotate 以及比 lvm 灵活得多的快照。

各位推荐什么方案?又或者有其他方案?

2496 次点击
所在节点    程序员
18 条回复
totoro625
2023-09-28 15:18:00 +08:00
首先声明我是小白,计划国庆组一套 PVE
在我学习 ZFS 相关知识的时候,就看到很多起系统盘使用 ZFS 导致 PVE 启动失败的例子,例如 /t/944268
甚至在 LVM vs ZFS 的帖子里,大部分人包括 OP 都不支持 Root on ZFS , /t/819674
我在咨询 ZFS 相关问题的帖子内,也有热心网友建议不要在根目录使用 ZFS , /t/972903

我的想法是,用一块较小容量的 SSD 运行 PVE ,不在该硬盘上放置任何 swap 、vm ,也不用于备份,仅仅用于 PVE 系统启动
ZFS(Mirror)用作 VM 的系统盘,ZFS(RAID-Z2)用作 VM 的数据盘,单独一块 NVME SSD 做 L2ARC 和 SWAP
gridsah
2023-09-28 15:39:06 +08:00
@totoro625

/t/819674 的 12 楼我看到了我自己的回复,也是不推荐使用 Root on ZFS hhhhhhh
cnbatch
2023-09-28 16:24:28 +08:00
还有其它选择,比如 XFS 和 BTRFS
不过 BTRFS 没 ZFS 那么稳定就是了,也许只剩 XFS 可选
gridsah
2023-09-28 16:53:48 +08:00
@totoro625 我看了看你咨询 PVE+ZFS 的帖子,也分享了一下我的使用经验。

@cnbatch btrfs 肯定是不考虑了,如果没啥意外 lvm + ext4 就是我的最终方案。

xfs ,下次一定,下次一定

当然我依旧希望能修好我的 FreeBSD.
sky96111
2023-09-28 17:24:11 +08:00
当前的方案是 Linux+KVM LUN 直通给 NAS 虚拟机,单盘使用 XFS 。
近期买了 4 块 6T SAS 盘,准备改成 LUN 直通给 TrueNAS Scale ,使用 OpenZFS 。优点初始化快,缺点内存需求高
可选替代方案 LUN 直通给 OMV ,使用 RAID5+XFS 。优点轻量省资源,缺点第一次初始化时间极长
mantouboji
2023-09-28 19:09:31 +08:00
你选什么狗屁 FreeBSD 和 ZFS 本来就是自寻烦恼. Linux 核心的软 RAID5 我从 1998 年用到现在了,好得很。Btrfs 和 XFS 我都在用,反正装 Fedora 的时候缺省的,没你担心的那么多乱七八糟。

再说了,你总该知道不管是 FreeBSD 还是 Linux ,各个目录挂不同类型的文件系统是常规操作。ZFS 那种垃圾别弄到/上给自己加戏,给个/home 足够了。
gridsah
2023-09-28 21:48:22 +08:00
@mantouboji 嚯,98 年,那会还是流行 redhat 的时候,老哥你的使用经验很丰富啊。

你们是怎么处理机械硬盘上的静默错误的?就是 bit rotate ?

mdadm 这种软 raid 没有办法处理的吧。xfs 也没有针对静默错误的方案。

btrfs 倒是带校验,但是我不相信你高强度用了 /滑稽
gridsah
2023-09-28 21:49:23 +08:00
@sky96111 KVM 怎么管理的? libvirt ?手搓参数一两次还好,搓多了太累了.....
sky96111
2023-09-28 22:04:29 +08:00
@gridsah cockpit-libvirt 和 virt-manager ssh 远程连接
cnbatch
2023-09-28 22:33:58 +08:00
FreeBSD 的驱动问题应该能修好的,就看 FreeBSD 开发组什么时候能够拿到硬件实物做测试

我自己的 NAS 同样是基于 FreeBSD 的(衍生版,附带 WebUI ,为了方便出门在外时用手机远程检查状态),机箱内所有硬盘都是 ZFS ,系统盘也不例外

同样为了防止 bit rotate ,不但有 ECC 内存(这才是关键),并且不使用 SLOG 和 L2ARC 。慢就慢吧,不管再怎么慢,顺序读取都有三四百 MB/s 。
只要机械硬盘是 raidz 组的一部份,那就基本不用怕翻转错误,raidz 可以纠错的。独立单硬盘的出错才麻烦。专门给二级缓存再加 SSD raid1 有点奢侈,我小机箱放不下那么多╮(╯-╰)╭
gridsah
2023-09-28 23:32:17 +08:00
@cnbatch 这 bug 修了我也很难从 Linux 转回去了。这种基础组件定下了几乎就只升级,不更改了 hhhhh

tb 有卖 ASM1182E 芯片的 PCIEx1 转双 nvme 的转接板。我用的就是这个,也确定不是它的问题。因为转接卡上放的是 SLOG , 而这 bug 是读数据时候触发的。
mantouboji
2023-09-29 02:38:01 +08:00
@gridsah 你要说 1998 年那会儿没啥特别办法,这都二十几年了,mdadm 这种前端工具都给做好 systemd 的 timer 了,定期后台遍历整个阵列做校验,你只需要 systemctl enable 即可。
gridsah
2023-09-29 09:24:30 +08:00
@mantouboji 我查了 RHEL 7-9 的文档,都没说 mdadm 可以防止静默错误。我问了华为存储设备的售后,他们只是说,他们的盘阵有定期巡检来修复静默错误,但不是 mdadm 。

倒是这篇文章提 mdadm 和静默错误了,但它只是加了个检测静默错误的中间层,无法自动修复。检测到静默错误整个文件系统直接 read only 了。
https://www.redhat.com/en/blog/what-bit-rot-and-how-can-i-detect-it-rhel

mdadm 那个校验阵列的 timer 叫啥?我去看看它配置文件咋写的
MeteorCat
2023-09-29 10:12:05 +08:00
强烈推荐还是 ext4 最安全,家里断电你就知道难受了
benjaminliangcom
2023-09-29 11:47:48 +08:00
直接用 TrueNAS scale
gridsah
2023-09-30 07:47:34 +08:00
@MeteorCat 不存在什么突然断电,所有机器都接了 ups
bugprogrammer
2023-09-30 13:54:04 +08:00
说一下我的 homelab 方案吧。PVE+ZFS 做宿主机+NAS(PVE 直接做 nas ,不直通),然后安装各种虚拟机。win ,debian(挂载 nas 用 docker 实现功能需求。nfs 挂载 nas 媒体目录,iscsi 挂载 docker 配置文件目录,否则有些数据库文件会 lock),homeassistant 等(老方案,现在 ha 在另一台 j4125 机器上)。虚拟机磁盘直接指向 zfs 的 zvol ,每个虚拟机一个 zvol ,定期做快照,还原虚拟机就还原快照即可,不需要用 pve 的备份还原。
dilidilid
133 天前
MDADM 没有能力处理 bit rot ,他在瞎说。。。

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

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

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

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

© 2021 V2EX