zoukankan      html  css  js  c++  java
  • SSD阵列卡方案优化:考虑使用RAID 50替代RAID 10

    最近一直在研究RAID 50,因为牺牲一半的容量的RAID 10代价实在太大了,而且它提供的可用性也并不是百分百的,我们首先来看下RAID 10的可用性分析:

    以同等容量的不同RAID方式作为案例分析:

      8盘RAID 10 6盘RAID 50 5盘RAID 5 6盘RAID 6
    第一块盘故障后可用概率 100% 100% 100% 100%
    第二块盘故障后可用概率 6/7 3/5 0% 100%
    第三块盘故障后可用概率 4/6 0% 0% 0%
    第四块盘故障后可用概率 2/5 0% 0% 0%

    RAID 50中:4块盘组成单组RAID 5,然后两组RAID 5再组成RAID 0最后得到8块盘的RAID 50

    案例分析:

    第一块盘的容错概率都是100%,可见磁盘阵列最基本的能力就是容错,然而不同级别的阵列能够提供的数据保护能力也是不同的;

    从第二块盘开始除了RAID 6能够提供100%的可用性以外,其他包括RAID 10在内都不能提供完美的解决方案。同时我们可以发现RAID 5的容错能力是最弱的,但是要达到同样容量所需要的盘数量也是最少的,如果故障运维较为及时的话,RAID 5是一个非常经济的方案,不然在第一块盘故障期间再次发生第二块盘故障就会导致数据丢失,这就是风险所在;

    RAID 6当然是较为可靠的方案,但是它要牺牲两块盘的容量并且性能较差,所以要权衡性能和可用性;

    当然重点还是RAID 10和50,我们发现50在损坏第二块盘时的可用概率和10比较接近,如果RAID 5组的数量更多的话,可用性概率将会更高,我们以9块盘RAID 50为例,要达到相同容量RAID 10需要12块盘:

      12盘RAID 10 9盘RAID 50
    第一块盘故障后可用概率 100% 100%
    第二块盘故障后可用概率 10/11 6/8
    第三块盘故障后可用概率 8/10 3/7
    第四块盘故障后可用概率 6/9 0%

    50已经能够提供第三块盘的容错,只是相比10概率更低些,但是两者都不能达到完全的100%,所以权衡成本和可用性50还是有一定的优势。接下来看看性能。

    SSD成本较高,不少用户为了考虑可用性都会选用RAID 10的方式作阵列,这样无疑又增加了成本,为了能够很好地分析性能,我们沿用了第一组对比方案的作性能分析:

    Intel S3500 800G SSD 8p RAID 10 6p RAID 50 5p RAID 5 6p RAID 6
    块大小 队列深度 IOPs MBPs IOPs MBPs IOPs MBPs IOPs MBPs
    随机读(4KB 8KB 16KB 32KB)
    4K 32 96716 396 100630 412 105939 433 105278 431
    8K 32 96003 786 99199 812 103196 845 103059 844
    16K 32 94725 1551 94827 1553 91758 1503 96595 1582
    32K 32 83115 2723 66786 2188 56637 1855 66391 2175
    随机写(4KB 8KB 16KB 32KB)
    4K 32 20220 82 15658 64 11602 47 10579 43
    8K 32 12306 100 14157 115 11561 94 9413 77
    16K 32 4856 79 8072 132 7426 121 6473 106
    32K 32 1856 60 2642 86 1631 53 1999 65
    4KB混合随机读写(30%写)
    4K 32 46716 191 36758 150 30739 125 28566 117
    顺序读(128KB 256KB 512KB)
    128K 32 20751 2719 20013 2623 18330 2402 20505 2687
    256K 32 10505 2753 9829 2576 8736 2290 9941 2605
    512K 32 5188 2720 4813 2523 4371 2291 4956 2598
    顺序写(128KB 256KB 512KB)
    128K 32 5162 676 4660 610 7630 1000 2460 322
    256K 32 2426 635 1985 520 2208 578 980 256
    512K 32 1169 612 1373 719 2267 1188 1134 594

    随机读分析:

    理论上认为R10性能最好,真实测试数据显示4K、8K数据块下R5、R50、R6的性能都要优于R10;当数据块增大到16K、32K时,R10的多盘优势才被逐渐体现出来。

    随机写分析:

    4K由于R50、R5由于有大量校验计算一定程度上影响了性能,但随着数据块逐渐增大,盘数量的优势也显现出来。当数据块达到和超过8K 时,R50性能全面超越了R10;R10由于存在R1的写同步问题,因此只有4块盘在支撑并发写,随着数据块的增大,R50和R5的多盘性能优势开始发 挥。

    混合随机读写分析:

    得益多盘和无校验计算,混合读写R10领先;R50其次,和R10相差27%,性能也较为接近,R5和R50性能为线性关系,R6性能最差。

    顺序读分析:

    由于不存在校验计算,顺序读性能基本上由盘的数量决定;R50和R10性能也较为接近,同盘数的R6和R50性能相当,而盘数较少的R5性能相对前三者要弱一些,符合预期。至于为何R10性能无法线性增加,主要是因为阵列卡本身的性能限制。

    顺序写分析:

    顺序写R5被优化得最好;R50由于需要同时计算两次校验因此损失了一些性能,和R10性能相当,当数据块达到512K时,多盘优势进一步体现出来了,拉开了与R10的差距;R6由于校验和计算的实现较为复杂,顺序写性能也是最差的。

    然后我们再来看看这些阵列方案的特性:

    参数特性 8p RAID 10 6p RAID 50 5p RAID 5 6p RAID 6
    理论读并发数 8块盘 6块盘 5块盘 6块盘
    理论写并发数 4块盘 6块盘 5块盘 6块盘
    IO延迟来源 RAID 1写同步 2组RAID 5写校验 1组RAID 5写校验 1组RAID 6写校验
             

    测试结论:

    性能测试显示,相同容量的R50和R10性能接近:其中小块文件的随机读R50要全面好于R10,随机写4K虽然R50和R10差距在28%,但是块增大后R50要全面优于R10。顺序读写方面,R50和R10十分接近。

    容错方面,R50接近R10:第二块盘容错率R50十分接近R10,两者相差30%。R10的优势主要是在有一定的概率提供第三、甚至第四 块磁盘的容错率,但是考虑到并非100%容错,因此从容错角度来看R50虽然和R10有一些差距,但也已体现出较好的容错率,至少优于R5。而且R50搭 配灵活,甚至可以指定3组R5以达到最大3块磁盘的容错;

    成本方面,R50有很大优势:按这个配置计算R50只有R10的3/4。

  • 相关阅读:
    UESTC cdoj 619 吴神,人类的希望 (组合数学)
    Codeforces Round #317 (Div. 2) D Minimization (贪心+dp)
    Codeforces Round #317 div2 E div1 C CNF 2 (图论,匹配)
    Codeforces Round #317 (Div. 2) C Lengthening Sticks (组合,数学)
    UVA 1412 Fund Management (预处理+状压dp)
    UVA
    codeforces Gym 100338F Spam Filter 垃圾邮件过滤器(模拟,实现)
    WebSocket 学习教程(二):Spring websocket实现消息推送
    dwr的ScriptSession和HttpSession分析
    WebSocket 学习教程(一):理论
  • 原文地址:https://www.cnblogs.com/interdrp/p/4892140.html
Copyright © 2011-2022 走看看