• RAID 2.0


     

    传统的RAID 1.0:

    选几个硬盘—>做成RAID 5—>根据容量创建LUN—>映射给主机

    1.重建时间随单盘容量的增大而迅速增加

    2.性能上,一个LUN的读写只能在一个磁盘组进行,后面加入新的SSD等介质也发挥不了作用


    进击的RAID 1.5:

    选几个硬盘—>做RAID 5—>选多个RAID 5组成一个池—>切分为相等的小块Extend—>选择Extend组成LUN

    1.读写跨越了更多的硬盘,单个LUN可以包含多个RAID,也可以有多种磁盘可以做到自动分层存储。(Automated Tiered Storage management,ATS,是在不同磁盘类型和RAID级别之间迁移数据块的功能,这可满足性能和空间使用之间的适当平衡,并避免所谓的热点)

    2.一个磁盘损坏引起的重建还是只在单一RAID中进行,并没有降低重建时间。


    彪悍的RAID 2.0:

    以下以华为的HVS为例,图文均来自于HVS RAID 2.0+,不同厂家实现RAID 2.0的具体方法和技术参数各有差异,

    1、对于系统内部物理硬盘,按介质的性能不同,组成几类存储池

    2、将系统内部每个硬盘空间切分成64MB大写逻辑块(Chunk)

    3、将来自不同硬盘上的按RAID组成逻辑块组(CKG)

    4、 将逻辑块组(CKG)切分成512KB~64MB(默认4MB,大小可配置)的逻辑块(Extent)

    5、按需将1-N个更细粒度逻辑块(Extent)组成卷(Volume)/文件(File)


    以前基于硬盘来做RAID,现在基于Chuck来做RAID,好处是,

    1.重建时间大大减少了,一个Chuck损坏,大小才64MB,几秒即可完成;一个硬盘损坏,重构的也仅是多个有实际数据的Chuck,参与的目标硬盘也较以往更多。

    2.每个层次的切分越小,迁移和重构的数据量就会越少,重构时间可以进一步减少;但每个层次的切分越小,管理的开销就增大,可管理的磁盘数目就越少。

    当硬盘1损坏,造成CKG0和CKG1的数据损坏,实际有数据的14和16两个Chunk损坏,将随机选择Pool中的空闲Chunk进行重构(黄色方块代表无数据),随机选择的Chunk将保证尽量分布在不同的硬盘上。

    随机选择硬盘6的61号Chunk和硬盘8的81号Chunk,数据将从其他成员盘重构到这两个Chunk。


    减少重构时间的意义在哪里?

    存储系统追求性能和可靠性的平衡,单份校验机制下的存储系统(RAID 6为2份校验,Raid 1+0较特殊),在重构过程中数据没有可靠性保证,如果在重构过程中出现坏盘,数据丢失,不可恢复;所以对于存储系统而言,其可靠性最重要标志为RAID重构时间越小越好。RAID重构时间=数据量/硬盘读写速度,一块2TB,7.2K盘为例,重构写于速度为30M左右,重构时间9小时,业务高峰期时间更长。为了减少重构时间,读写速度不变的情况下,减少写入数据量是重要方法。

     

    至于IBM XIV,他不做RAID,把所有硬盘全部切为1MB大小,利用伪随机算法在不同的节点间保留2个拷贝(有点像RAID 10),因此硬盘故障恢复时间和性能和RAID 2.0是一样的,只是容量利用率最多只有50%

  • 相关阅读:
    使用批处理查找某个文件夹及其子文件夹(递归地)中存在的空文件夹
    pl/sql连接oracle
    JSON对象转换成url参数
    创建maven工程
    线程同步
    java.lang.Object 的 wait 和 notify方法,及关键字 synchronized的作用
    Thread操作
    java.lang.io包的使用
    用程序打印汉字
    java程序员应该熟练掌握的技术
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5634736.html
Copyright © 2020-2023  润新知