V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brMu
V2EX  ›  分享发现

最便宜的 zfs raidz 自建阵列, armbian zfs 探讨

  •  
  •   brMu · 2019-10-24 14:09:41 +08:00 · 4729 次点击
    这是一个创建于 1857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想要用 zfs 组一个 raidz 存储,raidz 相比 raid5 的优势就不说了,目前能想到的方案是:
    arm 开发版(支持 usb3.0,安装 armbian)+usb3.0 扩展+3 个易驱线(带电源)+3 块 4T 硬盘

    其实我现在已经在 x86 的 esxi 上实现了 raidz,esxi 上虚拟了个 debian stretch,加 3 块硬盘组的 raidz。

    现在是想把这个存储独立出来,给 x86 节省点性能跑别的,所以考虑再买个 arm 开发版,目前最便宜的开发版好像是贝壳云,有 4 个 usb3.0,但没有现成的 armbian,第三方的 armbian 不知道能否编译成 zfs。另一个方案是 orangepi 3,原生支持 armbian,100 多块钱。

    不知道大佬是否有更好的方案?
    19 条回复    2020-07-13 18:44:38 +08:00
    ScotGu
        1
    ScotGu  
       2019-10-24 14:23:13 +08:00
    是不是我打开帖子的方式不对?
    用 usb 组 raid ? 说完我翻开了《长城贴瓷砖项目方案》
    brMu
        2
    brMu  
    OP
       2019-10-24 15:09:48 +08:00
    @ScotGu 是的,用 usb 组 raidz,可能我描述的不全,再补充下,我的需求是数据尽量安全,性能不用太好,有 100M 就可以了。

    用 usb 组的另一个好处是可以休眠,这个存储我用的很少,90%的时间硬盘都是休眠状态的,所以也算是延长了硬盘的寿命。
    514146235
        3
    514146235  
       2019-10-24 15:53:39 +08:00
    供电不稳对硬盘才是最大的伤害吧。

    看起来应该是冷备,如果要考虑到硬盘物理损坏,那直接把重要数据存两份不就完了么。
    难道每次用都要 3 个硬盘一起通电?

    感觉场景很诡异。
    brMu
        4
    brMu  
    OP
       2019-10-24 16:15:44 +08:00
    @514146235 并非冷备,偶尔要下个电影,备份个视频照片,所以还是要保证实时在线,usb 有独立供电,所以供电应该没问题。
    saluton
        5
    saluton  
       2019-10-24 16:20:56 +08:00
    上个蜗牛星际啥的吧。。3 个易驱线听起来都害怕
    514146235
        6
    514146235  
       2019-10-24 16:54:22 +08:00
    nas ?那就不要休眠。休眠对硬盘没好处。

    我的 nas,20T 的硬盘,没有任何 raid,7*24 小时工作了将近 4 年时间,目前仍然服役中,没有出过任何问题。并且非 nas 硬盘,非企业级硬盘。重要数据是有冷备的,其它数据都是视频之类的。有一点损坏也无所谓。及时更换硬盘即可。

    频繁的休眠对硬盘也是不好的。

    易驱线的独立供电不代表就是稳定的。如果数据对你是重要的,就不要用这种方式组 nas。
    Osk
        7
    Osk  
       2019-10-24 17:07:18 +08:00
    想起了被树莓派 + UASP 硬盘线支配的恐惧, 时不时地来个 usb reset, 搞不好还会遇到 IO Error...
    brMu
        8
    brMu  
    OP
       2019-10-24 17:49:51 +08:00 via Android
    @Osk 所以我用 zfs 组,我测试过掉电、硬拔都没有问题,zpool clear 一下就恢复了
    dxgfalcongbit
        9
    dxgfalcongbit  
       2019-10-24 18:01:40 +08:00
    据说 ZFS 吃内存?
    brMu
        10
    brMu  
    OP
       2019-10-24 19:42:31 +08:00
    @dxgfalcongbit 实测,debian 2G 内存,完全没问题。
    Reficul
        11
    Reficul  
       2019-10-24 21:11:12 +08:00
    zfs 对内存要求很大,linux 上默认永远吃你一半。我 64G 占用 32G。 树莓派跑 zfs 还是算了。
    coreos
        12
    coreos  
       2019-10-27 23:35:56 +08:00
    @brMu ZFS 好像是尽可能的使用内存做数据中转.提高读写速度
    brMu
        13
    brMu  
    OP
       2019-10-28 08:37:09 +08:00
    @Reficul @coreos
    感谢,我看了 zfs 官方文档,建议最小内存 1G,越大越好,所以理论上 1G 就够了,armbian 已经买好,等测试完再来回复。
    Dslayer
        14
    Dslayer  
       2019-10-30 18:00:43 +08:00
    zfs 官方文档没有提到推荐 1GB ram per TB 吗,没有推荐尽量使用 ECC RAM 吗。
    brMu
        15
    brMu  
    OP
       2019-11-04 10:53:39 +08:00
    @Dslayer
    To use ZFS, at least 1 GB of memory is recommended (for all architectures) but more is helpful as ZFS needs *lots* of memory. Depending on your workload, it may be possible to use ZFS on systems with less memory, but it requires careful tuning to avoid panics from memory exhaustion in the kernel.
    ungrown
        16
    ungrown  
       2020-07-13 10:38:30 +08:00
    @coreos #12
    ZFS 默认不开启写缓存,但是在内存中有写缓冲,当然这个写缓冲非常小,现代文件系统基本都有读写缓冲区,这个并不是缓存。
    ZFS 的写缓存叫 ZIL,IL 指 intent log,可以将之理解成数据库的日志。ZFS 用一个额外的块设备(此设备的 4K 写能力应当很强,所以应当选用 SSD 之类)来缓存这些写入操作,可以被理解成一个大容量的写入队列缓冲器。
    ZFS 的读缓存分两级,默认开启的 ARC 在内存中,此外可以额外加一层 L2ARC,L2ARC 和 ARC 承担的任务其实是一样的,而且它们中的数据都不会存活到下次启动之后,哪怕在外部存储器上开启了 L2ARC 。
    总的来讲,ZFS 有高性能高效率的读写缓存机制,但这些并不是对文件系统本身的缓存,而是 ZFS 运行时数据的缓存。

    ZFS 使用尽可能多的内存,作为临时读缓存,提高读取速度;
    ZFS 不对写入进行缓存,即使开启 ZIL,也仅相当于扩大了写入缓冲区;
    ZFS 不提供文件系统本身的缓存功能;
    可以搭配其他缓存系统(比如各种 cache FS )实现额外的中间层文件系统缓存。
    ungrown
        17
    ungrown  
       2020-07-13 10:51:43 +08:00
    @514146235 #6
    请不要这样讲,而且你的叙述中也没有说明为什么休眠对硬盘不好。
    频繁也要看怎么个频繁法。“20min 无 IO 操作则停转”,这样的休眠策略不会带来任何负面效应。
    相反,明明几个小时都不需要进行读写,缺让硬盘无谓地空转,你说这不会导致无谓的损耗,大家不会不信的。
    我自己装的 NAS (虽然从角色来看只能算半个 NAS+杂七杂八的其他角色),单块硬盘,普通家用机械硬盘,按上面的设置运行了快 5 年了。
    最近撤销了这台机器定时睡眠定时唤醒的策略,主要是不知为何这机器 ubuntu 从睡眠中唤醒时有一个很小的几率会死,大概一两个月会遇到一次。考虑到整机功耗,即使不定时睡眠,一个月也就区区 15 度电,我决定还是给自己减轻点维护压力,所以把自己写的系统睡眠的 crontab 给注释掉了。
    但是硬盘停转的策略保持不变,我想不出来这样做怎么会有坏处,怎么不会有好处。
    ungrown
        18
    ungrown  
       2020-07-13 10:55:07 +08:00
    @514146235 #6
    至于供电,这点倒是真的,USB-SATA 转接头的供电一直是个玄学问题,哪怕产品质量过硬,哪怕电源管够,但是这中间夹了一层,就是会大大增加出事的概率——从原来的高枕无忧变成夜长梦多。
    coreos
        19
    coreos  
       2020-07-13 18:44:38 +08:00
    @ungrown 谢谢啦,我没有找到感谢的按键。
    真的很详细 易懂。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:45 · PVG 03:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.