传统的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% |