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

RAID5 的数据重建真的很糟糕么?

  •  
  •   7DLNU56W · 2020-07-03 08:48:44 +08:00 · 12421 次点击
    这是一个创建于 1640 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近准备组一个家用的小型 RAID5,在网上查了一些与 RAID5 相关的内容,总体感觉就是 RAID5 重建数据非常慢,甚至有一篇文章说重建了一周才完成 17%,但这些内容都是很早发布的了,不知道现在还有没有参考价值,用过 RAID5 的朋友们,RAID5 的数据重建真的有这么糟糕么?

    还有一个问题,有的文章说 RAID5 坏掉一个盘很快就有另一个盘坏掉,这个大家有遇到过么?

    38 条回复    2024-12-06 18:23:21 +08:00
    ohao
        1
    ohao  
       2020-07-03 09:09:03 +08:00   ❤️ 1
    取决于
    1. 你是 HW(硬件阵列卡)还是 SW(软,比如板载卡也是软的)
    2. 你的使用 , 是大量读,还是写

    Rebuild 的过程本身不影响使用,你不需要管,自动处理的
    如果是 SW,系统会卡顿,因为大量写数据导致的
    如果是 HW,带缓存的不用考虑,损耗不大

    另外 Rebuild 速度取决于你的配置 文件系统 块大小 文件数量
    3 块 2T 的硬盘和 3 块 10T 的硬盘 3 块 SSD 硬盘 速度可能一样吗?

    什么有的文章这种就不用看了,没什么意义
    (就像玄学一样,100 个人 100 个结果,99 个没问题的没发布过使用正常的内容,而坏的那 1 个发文吐槽坏了,容易坏)

    你不要浅显的看 Raid5 就是 3 块可以坏 1 块不丢数据,你要看的是 Raid 的结构,Raid5 数据镜像的流程
    知其然而知其然
    0987363
        2
    0987363  
       2020-07-03 09:12:23 +08:00 via Android
    没那么严重。。zfs raidz1 重建过好多次了,没问题
    Srar
        3
    Srar  
       2020-07-03 09:15:53 +08:00 via iPhone
    靠谱阵列卡+有热备盘恢复的时候都是从坏盘拷数据到热备盘 某几个扇区拷不出来才走重建的 而且重建也只重建拷不出来部分

    所以有个好阵列卡+有热备盘非常关键
    Srar
        4
    Srar  
       2020-07-03 09:21:33 +08:00 via iPhone
    顺便据说群晖 DSM7.0 也要上这个功能
    @Srar
    zmj1316
        5
    zmj1316  
       2020-07-03 09:32:16 +08:00 via Android
    盘一起坏是因为买了同一批次的,所以寿命都接近要坏一起坏了,这种阵列盘一般都要混着买的
    kop1989
        6
    kop1989  
       2020-07-03 09:40:30 +08:00
    我看网上主要是说这种 raid,坏了一个盘之后,会对其他盘进行大量读。如果是同时买的盘,一块坏了其他盘也就快坏了。在这种读写压力下就很容易再坏一块。而对于 raid5,同时坏两块就是 GG
    ryd994
        7
    ryd994  
       2020-07-03 09:55:40 +08:00 via Android   ❤️ 1
    不至于那么慢,但也快不到哪去。你说的例子可能是 CPU 或者内存不够。那别说重建了,正常读写都费劲。

    就算是 2TB 单盘,100MB/s 读写,那也要 5.5 小时才能重建完成
    4T 单盘翻倍,8T 单盘又翻倍,就是 22 小时了
    你所有硬盘要满负荷工作 22 小时,坏一块的可能性太大了
    更恶劣的是硬盘都有 ure,一般盘的 ure 也就 10^-15 。这么多数据,还没有任何冗余度,重建过程中有错误数据很正常

    用不用 raid5 取决于你对数据损坏的容忍度以及单盘大小。所以组 raid 单盘太大不是好事。单盘太小主要是性能问题。

    zfs 会稍微好一点。首先 zfs 有校验,遇到 ure 能查出来,你可以死个明白。
    其次 zfs,和大多数软 raid 和各种高级硬件 raid 一样,可以只重建已用的部分。但是 zfs 因为是文件系统自带,可以更细致一点。
    hakono
        8
    hakono  
       2020-07-03 10:01:06 +08:00
    花了一周时间那个,还有一个坑是使用的是 SMR 硬盘

    正常 PMR 硬盘重建大致在几个到十几个小时之间,而 SMR 硬盘的话重建会以月为单位
    chinesestudio
        9
    chinesestudio  
       2020-07-03 10:04:01 +08:00 via Android
    6 盘位 raidz2 妥妥的 家用基本不会丢数据 重要数据 duplicati 网络再加密备份一下
    charce
        10
    charce  
       2020-07-03 10:07:12 +08:00
    这个东西都不能一概而论的,都是概率问题。
    RAID5 因为只有一个硬盘容错,重建的时候,另外两个硬盘里任何一个坏掉都会出问题,两个硬盘加起来损坏的概率就提高了。
    RAID5 重建确实慢,但是它的好处也很明显啊,经济性比较高啊,三个硬盘得到两个硬盘的容量,又有一个容错硬盘。在盘符紧张的时候就特别受用。
    tomczhen
        11
    tomczhen  
       2020-07-03 10:23:30 +08:00 via Android   ❤️ 1
    不用纠结这个,记住 raid 不能替代备份就行。raid 是提高可靠性,不是用来备份文件的,采用哪种 raid 类型只需要衡量可靠性和成本需求,至于备份,另外考量。
    GM
        12
    GM  
       2020-07-03 10:34:06 +08:00
    @0987363 人家说的是 RAID5,你举个 Raidz1,离题啦。
    libook
        13
    libook  
       2020-07-03 11:03:47 +08:00   ❤️ 3
    重建速度和硬盘大小、读写速度、阵列程序处理速度都有关系,比如 1T 的机械硬盘重建数据应该也用不了多少时间,但是如果是 12T 的硬盘,可能就得需要几天的时间。

    我自己组了 NAS,做了一些 RAID 的调研,RAID5 是一块以上硬盘损坏就丢失数据,翻车主要在于:
    1. 同一生产批次的硬盘寿命往往非常相近,坏的时间点也可能非常相近,1 块盘坏了换新盘重建完成之前另一块盘坏的概率较高。
    2. 一旦有一块盘坏了,就处于没有任何保障如履薄冰的状态,重建时间长的情况下(比如大容量重建好几天),其他盘有可能在重建过程中达到寿命极限坏掉,特别和第一条配合效果极佳。
    3. (待证实)在冷数据长期不读写又没有闲时校验机制的情况下,可能有些数据已经损坏了,只不过没有读到这里没有发现,一旦发现有数据损坏的时候,其实已经有了多处损坏,这些损坏的地方会在重建的时候暴露出来。

    所以如果数据真的很重要的话,建议上 RAID6,或 RAIDZ2 。当然多组几套小容量的阵列也是可以考虑的,大幅缩短重建时间可以让翻车概率大幅减低,而且每套阵列之间互相故障隔离。
    如果数据重要性一般,但不希望坏了多块盘上的数据就难以恢复,可以参考一些快照方案,比如 SnapRAID 。
    如果以读速度为主要需求的话,就无所谓了。

    我自己是 4 块盘采用 SnapRAID,3 块数据 1 块校验(可以自定义的),由于数据还是按照正常使用 3 块硬盘的方式存储的,所以 1 个文件只会在 1 块硬盘上,数据损坏也只是损坏相连的几个文件,其他文件可以正常读取,1 块校验盘的配置允许像 RAID5 一样 4 块里任何一块被替换成新盘可以直接重建。缺点是校验数据是非实时生成的,需要手动或用定时脚本触发校验数据的更新(这时候有个好处就是如果在更新校验数据之前误删了数据,SnapRAID 支持单文件恢复可以很方便还原回来),且因为像直接用 3 块硬盘一样,所以没有读写速度上的提升。不过我个人就是存一些照片、家庭录像、电影的数据,读写频率可以接受一天一更新校验数据,机械硬盘的读写速率对我来说也能满足需求。
    为了找文件不用频繁在 3 块硬盘里切换,我用了 MergerFS,可以用软件的形式把 3 块硬盘的目录树重叠在一起,虚拟成 1 块硬盘,和 LVM 的区别在于其层级位于文件系统之上,3 块硬盘依然可以独立挂载、独立访问且与虚拟出来的 1 块磁盘的访问兼容。

    最后有一些建议:
    1. 组阵列最好不要用同一批次的盘,可以隔一段时间买一块,或者买同一批次的盘,提前间隔较长时间买新盘替换下来,避免一起坏。
    2. 定期做全套的 S.M.A.R.T.检查,以便及时发现问题。
    3. 注意叠瓦盘和非叠瓦盘可能不能混在一起用于实时 RAID 方案。
    reus
        14
    reus  
       2020-07-03 11:42:37 +08:00
    用 zfs,定期 scrub 保平安
    594duck
        15
    594duck  
       2020-07-03 13:17:55 +08:00
    RAID10 比 RAID5 好,可是贵。RAID5 当重建的时候可能拉死另一块硬盘的情况。我们生产环境遇到过。所以 12 年之后我们都用 RAID10 不用 RAID5
    7DLNU56W
        16
    7DLNU56W  
    OP
       2020-07-03 14:03:43 +08:00   ❤️ 2
    感谢大家的帮助,我结合大家说的以及我找的一下不十分权威的资料,简单总结一下:
    1.RAID5 既不是想网上好多文章说的那么危险,也不是想象中的那么安全,如果有非常重要的数据,建议用 RAID10 或另外再备份一份;
    2.尽量用硬件阵列而不是软件阵列;
    3.数据重建速度与单块硬盘容量,硬盘读写速度等很多因素有关,建议用多块较小容量的硬盘代替少块大容量的硬盘;
    3.数据重建的过程较长时间的工作中有一定概率再损坏一块硬盘,建议尽量不要用同一批次的硬盘并定期检查硬盘;
    4.尽量使用非叠瓦式硬盘。

    还有很多内容,由于我对有的概念还在逐渐学习中,就先不总结了。
    wsy2220
        17
    wsy2220  
       2020-07-03 14:08:00 +08:00
    RAID 不能替代备份
    goldenalex
        18
    goldenalex  
       2020-07-03 14:23:12 +08:00
    我有个问题。。。借地方问一下。。。

    我现在弄了个 raid5 做备份,除了常规的冷备份以外,还要注意点啥?

    我用的是群晖 918+,这个设备是属于 hw 还是 sw 啊?
    Citrus
        19
    Citrus  
       2020-07-03 14:32:38 +08:00
    真实数据,4T * 4 RAID 5 QNAP NAS Rebuild 耗时平均在 10 小时左右浮动,速度在 140M/s 左右。原硬盘为 4T 红盘 SMR,新硬盘为希捷酷狼 CMR 。
    Nadao
        20
    Nadao  
       2020-07-03 14:37:01 +08:00
    @594duck

    Raid10 应该没 Raid5 快。
    7DLNU56W
        21
    7DLNU56W  
    OP
       2020-07-03 14:47:16 +08:00
    @goldenalex 个人觉得

    这个设备独立没有计算能力必须依靠另一台主机的计算资源就是 sw,它自己也能计算在不连接电脑时同样能正常重建数据就属于 hw
    k9982874
        22
    k9982874  
       2020-07-03 14:49:25 +08:00
    R5 最怕创建的时候再坏一块,所有数据灰飞烟灭。
    loading
        23
    loading  
       2020-07-03 14:50:08 +08:00 via Android
    单盘大容量,raid5 火葬场。
    goldenalex
        24
    goldenalex  
       2020-07-03 14:55:23 +08:00
    @7DLNU56W 那这样看群晖的机器就算是 hw 了吧?重建貌似是不用连其他电脑的。。。
    manzhiyong
        25
    manzhiyong  
       2020-07-03 15:02:06 +08:00
    raid5 用于快速恢复,提高安全性要靠备份,是两码事,一定分开处理
    ryd994
        26
    ryd994  
       2020-07-03 17:59:28 +08:00 via Android
    @594duck raid10 的优点是性能而不是安全性。如果你有 4 盘,那 raid6 比 raid10 更安全,因为 raid6 可以容许任意 2 盘,而 raid10 有 1/3 的概率损毁。
    如果你有 6 盘,raid10 不仅用盘多一块,安全性还比不上 raid6 。因为随机挂两块的情况下,raid10 依然有 1/5 的概率损毁。
    但 raid10 不计算 parity,所以非常适合高随机写入的 SSD 阵列。因为随机写入意味着每个写入都要重新计算 parity 。如果只写 1byte,raid10 会影响 2 个盘,raid6 会写 3 个盘以及读剩下的所有盘。


    @7DLNU56W
    @goldenalex
    群晖大部分是软件阵列。很多甚至没有 hba 。软阵列指的是单盘暴露给主机,CPU 管理阵列的写入。硬阵列指的是单盘隐藏(或者只可以通过特定维护 API 访问,不走工作负载) CPU 不参与阵列的写入与维护。操作系统只能看到虚拟单盘。
    群晖虽然不需要外部主机管理,但它自己也是有 CPU 的,数据是在 CPU 是完成阵列操作的。
    硬 raid 基本只有 raid 卡一种(少数情况是 USB 硬盘柜支持硬 raid )
    核心区分是操作系统能看到和管理单盘。

    @libook 3 是 by design 。因为 raid 的设计目标是可用性而不是数据安全。raid 虽然有 parity 但并不要求校验。而且 raid5 的情况下如果校验失败也只能报错,因为发现 1bit 的错误需要额外 1bit,纠正需要额外 2bit 。实际上一般读的时候跳过 parity 。这也是为什么 raid5 的性能比 raid4 要好。
    zfs 有校验,scrub 可以检测并(在有额外冗余度时)修复冷错误。
    ryd994
        27
    ryd994  
       2020-07-03 18:01:43 +08:00 via Android
    **如果你有 6 盘 raid10,那它用盘比 5 盘 raid6 多一块,可用容量一样
    hjc4869
        28
    hjc4869  
       2020-07-03 18:24:50 +08:00 via Android
    最好是用 3-way mirror
    7DLNU56W
        29
    7DLNU56W  
    OP
       2020-07-03 19:40:07 +08:00
    @ryd994 @goldenalex 哦,那可能是我之前的理解有点小问题,应该是,主机认为插入的就是“一块硬盘”数据在机器中再通过机器的运算分散存储在各个硬盘中就可以认为是 hw,如果主机认为插入的是多块硬盘,并由主机按照 raid 规则向每个硬盘里读写就算 sw 。


    @ryd994 你说 RAID6 比 RAID10 更安全我很赞同,但好像支持 raid6 的设备会很贵。RAID5 的话,我目前觉得就是比 RAID0 多了一点点容错能力吧(虽然可能效果不是特别理想),不过这种出错的概率会很大么,会不会像 @ohao 说的那样,大多数用的都是好的,只有极少数出了问题,而用着好的都没有发文章,只有那少数几个发了文章?

    另外,朋友们说的那个几个注意事项我都记下了,感谢大家的帮助,不过现在还有一个不解的疑问,为什么叠瓦式硬盘在重建数据的时候经常要数个月的时间呢? 4TB 左右的硬盘好像大多数都是叠瓦式的。
    xpsair
        30
    xpsair  
       2020-07-03 19:54:04 +08:00
    @7DLNU56W 重建过程中应该会有覆盖写,而覆盖原有数据的写对叠瓦式硬盘的性能来说差不多是降维打击
    zxz1007
        31
    zxz1007  
       2020-07-03 19:57:27 +08:00
    只要使用的得当,R5 还是可以的,不过 R5R6,Z1Z2 都有个问题,需要同样容量的磁盘,家用的时候无法做到低成本平滑扩容,需要一换换一批。
    所以我 Z1 用了几年换 Drobo 然后最终换了群晖,Drobo 和群晖的 SHR1,2 都能使用不同容量的磁盘,而且群晖的性能会比 Drobo 好很多。
    十来年的实际使用来说,重建并不可怕,同样是挂了一块盘,RAID 花点时间重建数据就回来了,单盘的时候丢过 2T 数据,这就是差别。
    ryd994
        32
    ryd994  
       2020-07-03 19:58:05 +08:00 via Android
    @7DLNU56W raid6 不也就是 raid5 多了一点点容错? raid 本来就是这样的技术
    raid6 软件 raid 不贵,而且只要 CPU 不差,性能都很不错
    支持 raid5/6 同时性能好的硬件 raid 都很贵。不贵的都是凑合实现的,性能好不了

    raid5 的重建成功率可以计算的,网上有各种计算器。你可以查查你用的盘的 Datasheet,找到相关参数带入计算即可。实际情况肯定比理论计算更复杂。硬盘实际可靠性取决于使用环境,所以一般取 Datasheet 数值再减一两个数量级。同时阵列的可靠性还取决于你有没有及时更换硬盘,以及硬盘是否不同品牌不同批次

    建议你了解一下叠瓦技术。简单来说,叠瓦盘写入一个磁道会影响隔壁磁道。所以必须先读出隔壁磁道再一起写入两个磁道。硬盘厂有各种优化,但还是会有坑的。
    nifanle7
        33
    nifanle7  
       2020-07-03 20:47:57 +08:00
    服务器做 raid5,dell 厂家推荐单块硬盘不要超过 2T 。
    freelancher
        34
    freelancher  
       2020-07-03 23:50:52 +08:00
    ?????我不知道说啥了。我们机房运维用的方案完全不一样。这样折腾。早晚会在家里折腾出一个数据中心来的。我都有点冲动在家里装个机柜了。。。
    mxT52CRuqR6o5
        35
    mxT52CRuqR6o5  
       2020-07-04 00:28:34 +08:00 via Android
    Raid 扩展性比 zfs 好(zfs 扩容只能一组一组的往上加),但重建这块没 zfs 好,zfs 重建过程出问题不会直接失败,性能也更好
    要体验 raid 的扩展特性又或是降低 raid 重建失败可能性得买最好的那种硬盘
    ryd994
        36
    ryd994  
       2020-07-04 03:06:06 +08:00
    @mxT52CRuqR6o5 那就不是 RAID 了啊
    RAID 是什么的缩写? Redundant Array of Inexpensive Disks
    Inexpensive 才是重点。你用好的,贵的盘,那就违背了 RAID 的设计理念了。
    你可以叫它 RAED:Redundant Array of Expensive Disks
    0987363
        37
    0987363  
       2020-07-08 09:32:35 +08:00 via Android
    @GM raidz1 不就是 raid5 么,虽然是软的😝
    dobycody
        38
    dobycody  
       22 天前
    @ryd994 这个改写秒啊,我说哪个不对劲,原来是 Redundant Array of Independent Disks 的缩写
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2575 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:59 · PVG 13:59 · LAX 21:59 · JFK 00:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.