wsgzao.github.io icon indicating copy to clipboard operation
wsgzao.github.io copied to clipboard

http://wsgzao.github.io/post/raid/ 有错误和不妥的地方

Open Dieken opened this issue 8 years ago • 6 comments

JBOD 描述给人感觉是不推荐的用法,其实在分布式存储中往往推荐用 JBOD,因为软件层面考虑了镜像、校验、条带化的事情。

“相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力。” 这句话说反了,RAID 0 坏一块盘就整个RAID 0阵列坏了,所以 RAID01 坏一块盘相当于一半存储失效,风险大并且性能差。RAID 10 坏一块盘,只是某个 strip 少了一个副本,影响的面很小,性能基本没影响。这就是为什么大家都用 RAID 10 而不用 RAID 01,mdadm 这个工具直接提供 raid10 但没有直接提供 raid01 可以印证这点,http://linux.die.net/man/8/mdadm,注意 Linux 实现的 raid 10 是一体的,而且 raid 1, raid 10 的 copies 可以大于 2。

现在磁盘单片容量很大,RAID 5 坏了一块盘时 rebuild 遇到第二个坏盘的风险很高,已经是业界不推荐的 raid level 了,RAID 50 是一样的风险,也不推荐使用。RAID 60 又慢又复杂又浪费磁盘,也没人用。

参数调优那段,系统盘没必要 raid 1,单盘即可,系统盘不应该大量写入,其需要用的数据基本被缓存到内存里了,所以不怎么损磁盘,而且哪怕坏了,重做系统很快(别告诉我没用 pxe boot、puppet、chef 之类的玩意,需要手动安装……),数据盘用 RAID 0 (如果求最大容量最大速度不求可靠性完全拼人品或者靠分布式存储软件层面做冗余),RAID 6 (预算不足,不求高性能,求最保险,最大容量--空间利用率 (n-2)/n, n 越多越划算),RAID 10(预算充足,求高性能高保险,不求最大容量——空间利用率 <= 50%)。

冗余的两种手段:镜像和校验,一般热数据由于比较小又追求高性能高可靠以及快速恢复时间,会用镜像冗余,而冷数据量特别大追求很高的磁盘利用率以及可靠性,不求性能和快速恢复,会用校验冗余,比如最近突然被重新火起来的 erasure code。

“使用机械盘的话,尽可能选择高转速的,例如选用15KRPM,而不是7.2KRPM的盘,不差几个钱的;” 15K rpm 以下的都是消费级硬盘,更别提 7.2K rpm 的了……

SSD 评测数据那个,盘数不一样比个啥啊……比如测试出来顺序读 RAID 6 比 RAID 5 快,这是误导啊,两个的数据和校验都是分布的,所以你在拿六块盘的叠加速度比五块盘的叠加速度,不公平啊,本来应该同等配置下 RAID 5 比 RAID 6 快,这下被你说的 RAID 5 一钱不值了,哈哈

同样的,RAID 10 和 RAID 50 的比较也不公平,不过无所谓了,总之,别沾 RAID 5 了,除非你单盘在 200 GB 以下——这年头有几个人用如此小的硬盘……

还有测试没有提 RAID chunk size 呢……

最后的总结坑爹啊,还推荐人用 RAID 50 而非 RAID 10……

Dieken avatar Mar 11 '16 15:03 Dieken

Liu Yubao,你好 感谢如此认真的评论,这也是坚持写Blog原因,可以看到更多的盲区和学习的地方,我根据自己的理解做下回复,如果有不对的地方希望见谅哈

  1. JBOD观点认同,之前做Big Data就是采用JBOD用于分布式存储
  2. RAID10观点认同,文章中的描述可能理解上存在差异,我再看下WikipediA的内容,目前主流服务器BIOS均为RAID10
  3. RAID1其实就是2块盘,因为系统通常读写不会特别高,当然为了节约成本一般RAID5或者RAID10都是主流的选择
  4. RAID5的风险在于短时间内坏第2块盘,这里有2点可以保障,1是实时的监控和维保响应,2是有Hot Spare热备盘存在
  5. RAID10目前应该是最主流的选择但牺牲一般的容量不是所有企业都愿意接受
  6. RAID6和RAID DP在EMC和NetApp存储中有特定技术保障,但了解下来热备盘数量也是根据比例搭配的
  7. 小米运维团队的SSD总结是直接引用,观点是否符合业务场景也要实测才行,可以尝试反馈给他们
  8. 本地存储开始逐步向分布式和软件定义存储转型,这一块也会持续关注
  9. 文章会根据反馈进行修改,如果有更好的参考文章欢迎一并推荐哈,先谢谢啦

wsgzao avatar Mar 11 '16 15:03 wsgzao

  1. 通常raid 1是两块盘,只是linux md 驱动做了扩展,允许多余两块盘,也就是允许多余一份副本。raid 10也如此。这个有点矫情,一般没人这么用,也不是标准。
  2. 你说的两个手段对于raid 5没有帮助,做定期data scrubbing才有所帮助。基于检验的raid恢复起来非常慢的,时间在十几个小时二十几个小时,而且是所有盘全盘读取,有一个扇区读不出来就崩了。这个问题在wikipedia raid 条目有重点黑raid 5,现在是行业内人人喊打的配置,因为现在单盘容量之大已然变态了,raid 5风险大大增高。

不管是raid几,spare disk的好处是探测问题后立马恢复,而不是报警等人手动去插盘,方便而且减少再次出问题风险,当然,放个备盘需要花钱。。。

文章前面图文部分很好(除了raid 10那个错误),刚推荐给组里同学传阅,发现后半部分有点问题……

这篇推荐看看,老外写的,国人翻译过来的,https://linux.cn/article-6085-1.html

Dieken avatar Mar 11 '16 16:03 Dieken

注意raid 5 rebuild坏第二块盘不是说在rebuild的二十小时里 才 坏,而是之前早坏了,由于磁盘容量大,很多区域长时间不读写,坏了也不知道(这就是为啥要定期data scrubbing的原因),然后rebuild才暴露出来。

Raid是设备级别,没写有效数据的地方也需要recover,现在直接支持raid的文件系统比如zfs, btrfs就没这个问题。

Dieken avatar Mar 11 '16 16:03 Dieken

谢谢推荐,因为我在金融行业,RAID配置基线标准也有统一的设定,我周一再和同事确认下目前交易系统和最新的灾备中心具体是如何定义和考虑的,然后再答复您。

wsgzao avatar Mar 12 '16 02:03 wsgzao

@Dieken 您好,我早上认真和老大交流了一下,目前生产系统只用2块盘做RAID1,数据都是存放于EMC存储,除了老交易系统跑在hpux和aix小机,新的数据中心已经替换为x86,而业务类需求全部部署在vSphere中,VDI也是基于VMware Horizon。如果Local Disk有4块盘也会直接考虑RAID10,而测试中心则简单一些选择RAID5,不做HotSpare。下一个阶段会通过研究超融合架构和OpenStack带动分布式存储的探索,大致情况就是这样,如果有更好的建议欢迎继续交流哈。

wsgzao avatar Mar 14 '16 02:03 wsgzao

配置很合理:-)

有 vSphere 用就别折腾 OpenStack 了,玩分布式存储别信超融合架构,坑爹的大忽悠。 不缺银子就用 EMC 之类大厂的存储设备,自己研发其实花钱并不少,风险还大。

Dieken avatar Mar 14 '16 14:03 Dieken