每当一种新技术出现时,不禁会问为什么要有这种技术?肯定是传统的技术有一定的缺陷,才会出现新的技术。那传统的RAID有哪些缺陷呢?最大的问题可能就是reconstruct太慢,现在一般都是2TB的SATA盘,如果是几TB的数据重构,可能要好几个小时。这是因为在重构时,所有的盘都要参与校验计算,然后将校验数据写到hot spare盘上,这样所有的lun都会受到影响,Hot spare也会成为热点,因为所有的写操作都集中在它一个人身上。因此我们有了Dynamic disk pool,要理解Disk pool,我们先来看几个定义。1)D-piece  2)D-Chunk(或者叫D-stripe)

 每个加入到Disk pool 的盘都被划分成512MB的d-pieces【如下图一个蓝色方框就是一个D-piece】,每个盘中间的4个d-pieces会被保留给系统使用,并不是每个d-piece都是立刻用来存储数据,有些d-pieces是用作spare capacity。10个d-pieces组成一个d-stripe【或称作d-chunk】,其中两个是用于parity【512MB*(10-2)=4GB,基于RAID6】,因此一个disk pool上的volume可能会占用几个d-stripe【d-chunk】。比如一个200GB的Volume,它就是由50【200GB/4GB】个D-chunk组成。

而每个d-piece是由4096个RAID Stripes组成,因此每个Stripe(D-Segment)大小为 512M/4096=1/8 M=128KB

1个RAID Stripe由10(8+2)个D-Segment组成,因此1个RAID Stripe大小为128KB*8=1MB

这里的segment和stripe就和传统的RAID里面的定义一样,条带深度和条带大小

IBM Dynamic Disk Pool 详解_第1张图片

Tips:

1,DDP可以加盘,最多一次可以加1-12个盘,如果新加盘的容量比原有的大,那么多余的空间是没法使用的,但是不支持减盘

2,目前只支持DS3500(DS3512和DS3524,DCS3700),不支持DS4K系列和DS5K系列

3,没法像traditional RAID那样export/import Array

4,最少11个盘【8+2+spare】

5,GUI中只能选择相同容量的盘加到一个disk pool,而SMcli可以选择不同容量的

6,一个系统最大支持10个Disk pool

7,最大支持的Disk pool volume是64TB(由24个3TB盘组成的Disk pool)

8,目前Disk pool还不支持SSD盘,同一个disk pool中只允许同一类型(SATA or FC)和速度的盘

好,那我们接着看DDP比传统的RAID好在哪里?如下图,当D6这个盘坏掉时,它上面的D-piece会写到其他9个盘上去,那也就是说其他9个盘都充当了一个hot spare盘的角色,但是它们又不是专职热备盘,平时也用来存储数据。所以第一个好处就是无需专用hot spare,节省了磁盘。9个盘充当hot spare,意味着重构数据会写到9个盘上去,和传统的RAID相比,写到一个热点hot spare上去,重构时间是不是会缩短很多,因此第二个好处就是缩短重构时间,减小performance影响。至于性能,大家都知道,RAID组中盘越多,性能肯定越好,但是在实际生产环境中,以RAID5为例,盘越多意味着重构时间越长,同时坏盘率越高,所以一般就用5+1组成RAID5。而使用了DDP,就无需担心重构时间和坏盘率(下面会提到坏盘率)。因此第三个好处就是性能提高!个人觉得有这三个优势就足够了。

IBM Dynamic Disk Pool 详解_第2张图片

Tips:重建的时候会保证不会出现同一个盘有同一个D-Chunk的2个D-pieces

再看下白皮书上DDP Advantage Summary

IBM Dynamic Disk Pool 详解_第3张图片

接下来我们再来讨论坏盘率,因为同一个批次的盘使用的时间都差不多,所以时间越长,同时发生故障的概率也会增大。

如下图,10个红色的d-piece组成了一个红色的volume,10个绿色的d-piece组成了一个绿色的volume,以此类推。。。这个图中以红色的volume为例,最多可以坏几块盘呢?24-10=14,极端情况下坏14个盘,那此时剩余的10个盘的红色d-piece都是optimal的,那这个volume就是optimal的。如果再坏一个,那就是degraded,如果再坏一个盘(剩8个盘是optimal的),那应该还是degraded的,如果再坏一块盘(剩7个盘是optimal的),那么此时红色volume就是failed状态。所以极端情况下,最大容许坏17个盘!

IBM Dynamic Disk Pool 详解_第4张图片

看一个真实的以23个盘组成的disk pool,创建两个lun,再fail掉4个成员盘,可以看到DDP还是显示optimal

IBM Dynamic Disk Pool 详解_第5张图片

========================================================================================

再看一个由12个盘组成的disk pool,可以看到坏了2个盘,volume就变成degraded了。那如果我此时再坏一个盘,volume是否一定会failed,我只能说这个不一定的,看组成这个volume的D-piece是分布在哪些盘上的了。

IBM Dynamic Disk Pool 详解_第6张图片

由此我们知道,在Disk pool中不能简单的下结论说到底坏几块盘Volume会failed,只能说任何情况下,坏任何2个盘不会造成Data loss,但是不能保证坏第3块盘的时候,是否会有data loss,以上两个实验就是很好的例子。

由于Disk pool中存在D-piece,所以恢复Lun的方法会比传统的RAID复杂的多!

-------------------------------------------------------------

以上只是个人的理解,如有错误之处,欢迎指正!