DIY unraid 替代品: SnapRAID - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
kice
V2EX    NAS

DIY unraid 替代品: SnapRAID

  •  
  •   kice 2024-03-08 03:18:55 +08:00 5091 次点击
    这是一个创建于 665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里有一些我对于 samba 的一些不满,简单概括就是文件路径太长 samba 不支持,导致文件名可用字符很短。结论下来 SMB 服务器还是得 Windows 。

    Windows 下有存储空间,但是这个东西风评不是很好,文档也不全。隔壁 LTT 也抛弃了使用这东西来组磁盘阵列。

    于是,先大概列出组磁盘阵列要有的功能:

    1. 一定程度内,硬盘故障不会导致数据丢失
    2. 允许添加任意大小的磁盘进行扩容
    3. 冗余级别可以自行选择

    然后就发现了 SnapRAID 。一个跨平台的文件“备份”方案。使用效果和 Unraid 类似,不是传统的 RAID ,但是也能提供一定程度冗余。

    SnapRAID 运行在文件系统之后,而不是组了 RAID 之后再运行文件系统。于是这东西就能跨平台。

    目前打算是这样整:

    PVE -> Windows Server -> SnapRAID -> DrivePool -> SSD Cache -> SMB 

    DrivePool 可以替换成 RClone Union + WinFSP ,但是这样估计太怪了。

    然后就是 SSD 缓冲的设计,可以是只缓冲 SMB 写,也可以是缓存每个硬盘。估计 PrimoCache 可以完成。

    OVM 是有 SnapRAID 插件,配合 MergerFS 就能实现以上功能。但是我不要 Samba ,或者 OVM 开 NFS 然后 Windows 提供 SMB ?

    最后就是 SnapRAID 的配置

    1. 校验数据和 Unraid 一样,校验数据的硬盘必须是最大容量的硬盘。校验数据是普通的文件,于是允许校验盘是多个硬盘组成,但是实际上使用会不会有问题。
    2. SnapRAID 需要手动同步。虽然跑一次影响不大,但也是要手动(或定时,或事件触发)跑一次。
    3. 关于大量小文件的友好程度。

    想听听 dalao 们有什么看法。

    第 1 条附言    2024-03-10 15:37:09 +08:00
    更新:目前碰到需要解决的问题。

    https://v2ex.com/t/1021652#r_14424116
    10 条回复    2024-04-24 19:23:10 +08:00
    sNullp
        1
    sNullp  
       2024-03-08 05:46:02 +08:00
    看着不错,会在下一个服务器里试试。感谢。
    TsubasaHanekaw
        2
    TsubasaHanekaw  
       2024-03-08 08:28:29 +08:00
    DrivePool 现在用在 6x16Tb 硬盘上,不做冗余挺好,就是没法创建硬链接
    anubu
        3
    anubu  
       2024-03-08 09:07:05 +08:00
    homelab 场景的存储设计,个人倾向于优先考虑池化,其次是备份,最后是高可用。个人用户需要保障“硬盘故障不会导致数据丢失”的数据量一般不大,通过备份实现比通过类似 RAID 的高可用实现更合适,复杂度也更低。当然,需要研究各种软硬 RAID 方案的除外。
    totoro625
        4
    totoro625  
       2024-03-08 09:29:22 +08:00
    PVE 里面塞 Windows server 是为了方便使用吗?还是为了原汁原味的 SMB ?

    SnapRAID + DrivePool 的组合,感觉 DrivePool 的均衡器设置 + SSD Cache 会影响 SnapRAID 的数据恢复
    参考:[NAS] 24 盘位 Stablebit DrivePool+SnapRAID NAS 阶段性总结: https://www.chiphell.com/thread-1914792-1-1.html

    我买了正版 unRAID ,但是目前在用 ZFS
    笔记本上用了 SnapRAID ,想通过 scrub 命令防止静默数据损坏,但是我的数据一直在变化,感觉起不到应有的作用
    NSAgold
        5
    NSAgold  
       2024-03-08 10:07:56 +08:00 via Android
    snapraid+mergerfs 对大多数家庭用户来说可能比上 raid 更合适,因为家庭用户照片视频类的冷数据会比较多,对可恢复性需求>可用性,而且扩容方便,只要校验盘≥最大的数据盘就行(严格来说卷也可以 比如 16t 分 4 个 4t 卷可以用一块 4t 盘校验 不过太灵了)。
    但是对于 homelab 玩家来说热数据比较多的话 snapraid 不是很合适,同步会比较耗时。
    kice
        6
    kice  
    OP
       2024-03-08 10:23:09 +08:00   1
    @totoro625

    PVE 塞 Win 是因为直接 Win 的话虚拟机会麻烦,不如直接 Win 虚拟机。

    samba 文件路径长度限制太痛。想过是 NFS 或者 iSCSI 给 windows ,然后再 win 提供 SMB 共享。

    现在用的是 unraid ,但是 unraid 的 NFS 性能有问题,iSCSI 插件可靠性未知。
    TrueNAS NFS 和 iSCSI 都有,但是只支持 ZFS 或者单盘使用。要么扩容太难,要么接受单盘挂了会损失数据。

    ---

    snapraid 适合文件内容不会变化的情况;看上去你这个是数据较少,可能更适合整快照。

    ---

    如果是偏向于冷储存,多盘的均衡可以关掉。
    libook
        7
    libook  
       2024-03-08 14:22:03 +08:00
    我是从 MergerFS+SnapRAID 转到 unRAID 的。

    SnapRAID 是非实时校验,如果你只有一块校验盘的话,那么你最好不要同时对多块盘的同一个位置的数据块进行写入操作,否则这块数据就是不可恢复的,直到下一次同步校验数据。

    也就是说,推荐的使用场景是,在两次同步校验数据之间,你最好只对一块盘进行写入操作;或者在对第二块盘进行写入操作之前,先进行奇偶校验同步。

    当然,不排除确实有人的使用场景是符合这个要求的,比如备份数据等冷归档数据。

    我换 unRAID 的最大原因是 MergerFS 近期崩溃频率较高,跟开发者一起调查了很多次也没有定位到问题,不得已换了 unRAID 。
    MoonLin
        8
    MoonLin  
       2024-03-08 16:17:16 +08:00
    @libook 配合 btrfs 看起来可以解决这个问题: https://github.com/automorphism88/snapraid-btrfs#q-why-use-snapraid-btrfs
    在 sync 时建立快照,即使两个盘同一个位置都写脏了,其中一块盘坏了,fix 的时候可以用好盘的快照配合校验数据就可以恢复数据到上次 sync 的状态。
    kice
        9
    kice  
    OP
       2024-03-10 15:36:35 +08:00
    现在搭建好了环境,在开始 SnapRAID 之前,有几个问题需要解决下:

    1. PVE 的 PCIe 直通和内存动态分配不兼容,所以要么不直通 PCIe ,要么就固定内存给虚拟机。主要关系到 NVME 盘直通。
    2. 我用的 R730XD ,然后 PVE 挂在了 HBA 上。机械盘不能直通给虚拟机,只能通过软件直通( RDM )。
    3. RDM 直通有盘数量限制,一共是 33 个的样子。其次,RDM 直通只能设置硬盘序列号,不能设置硬盘型号,也没有 SMART 信息。
    4. ~~PVE 的虚拟网卡只有 10Gb ,希望未来够用。~~

    5. **DrivePool 平衡策略只能通过界面触发。**
    6. **SSD 缓存 DrivePool 需要手动触发“平衡”才能写到机械硬盘。**
    7. **DrivePool 文件分配策略搞不懂,要同时避免 SnapRAID 同步时不能触发平衡和能合理分配文件。**

    8. PrimoCache 也可能出现 SnapRAID 同步时发生写操作。
    ---

    1 ~ 4 暂时不影响使用,SMART 信息可以通过 SSH 到宿主机或者宿主机用 PY 暴露 HTTP 接口。
    NVME 使用 RDM 直通性能看上去还行(用的 virtio scsi single 和一堆参数)。

    DrivePool 可能并不十分合适 SnapRAID ,但是没有替代品。目前在研究使用 Rclone+WinFSP+Union ,目前看上去性能应该够用。


    关于分区合并,我暂定了以下需求:
    1. 能使用 SSD 作为写缓存。
    2. 写缓存回写可以手动控制。或者在 SnapRAID 同步时,整个机械盘池能变为只读(写入只写到 SSD 上)。
    3. 文件分配磁盘选择能平均一些。
    4. 文件分配后,不能移动到其他硬盘;或者一次只能移动一个磁盘,并且在移动完成能触发 SnapRAID 同步。
    5. 能被 Everything WizTree 索引。


    最坏的情况是写一个 DrivePool 插件,或者直接把 Rclone 的 mount 代码提取出来改改。
    lisaac
        10
    lisaac  
       2024-04-24 19:23:10 +08:00
    就像 @MoonLin 提到一样,snapraid 最佳拍档还是快照,先快照,再同步
    恢复时直接用快照恢复,从而避免文件被修改而导致部分文件无法被恢复的情况

    前几天写了个脚本,用的也是 btrfs ,相比 snapraid-btrfs 增加了对 parity 快照保存,这样恢复的时候就有多种选择
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1222 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:07 PVG 01:07 LAX 09:07 JFK 12:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86