从虚拟磁盘和LUN的维度来理解,DDP就是一个虚拟磁盘池,这个池是由很多个按照用户需求来定义生成的4GB大小的D-Stripe组成的。
如图所示,如果一个DDP包含了12块物理硬盘,其中的任意10块物理盘中的D-Piece可以组成一个D-Stripe用于存储数据。这里需要注意的一点是D-Piece和D-Stripe是近似平均分配在12块硬盘上的,但是视实际使用情况和数据存储量来看,有可能会有一些出入。当系统管理员完成了对于DDP的存储的配置之后,就像传统的RAID6配置一样,存储就会创建相应的D-Piece和D-Stripe。这时候在应用侧,就会看见一个虚拟磁盘被创建了。这个虚拟磁盘的容量是由N个D-Stripe所组成,例如我需要一个大小为32GB的空间,那么包含在这个虚拟磁盘中的D-Stripe数量为 N(D-Stripe)= 定义空间大小/4GB。一个DDP磁盘池中,可以包含多个虚拟磁盘,当然在一套存储系统,也允许包含多个DDP磁盘池。对于系统管理员的需求,也可以把传统的RAID磁盘组和DDP磁盘池二者结合来使用。
和传统的RAID组类似,DDP可以通过DCE特性(动态扩容),动态增加硬盘的方式来对存储系统进行扩容,目前可以支持的最大动态扩容量为12块物理硬盘。当DCE功能初始化之后,保存在现有的D-Piece上的数据会有一小部分被迁移到新扩容的磁盘上来。
DDP的另一个优势是区别于传统意义上的RAID原理,它并没有专门指定的热备磁盘,这样当某一块硬盘存在失效风险的时候,它能提供一个所谓的“集成保护能力”这样不仅可以简化存储设备的管理,也能极大地提高重建的性能,节省时间。当DDP中的磁盘有失效的状态发生,类似于RAID6的重建机制是保存在D-Stripe中的,在重建的过程中,它可以保证在任意一块物理磁盘中不会保存同一个D-Stripe上的两个D-Piece。独立的D-Piece机制可以最小化LBA地址范围。如图所示:6号盘失效,随后,之前保留在这块物理硬盘上的D-Piece数据会在其他的可用硬盘上进行重建。因为是由多块盘在进行写入操作,所以实际的重建时间要大大小于传统的RAID重建时间。当有多块盘失效之后,系统会优先重建那些包含丢失了两个D-Piece的D-Stripe所在的硬盘,以减少数据丢失的风险。当关键数据被重建之后,系统会继续将其他失效的数据进行修复,保证数据的持续可用。从控制器的资源分配角度来看,DDP提供了两种用户可以自由定义的重建优先级配置:
1。降级重建,只有失去一个D-Piece数据的物理硬盘会重建,失去两个的会暂时不可用。这个优先级默认为“高”例如,假设我们有一个192块物理硬盘组成的存储系统,当有两块物理硬盘失效之后,在1分钟之内,即可完成关键重建工作,在这1分钟之后,系统都是可以提供容错的工作状态的。从数学角度来看,这样规模的一个存储系统,仅仅有5.2%的概率会发生降级重建,关键重建场景发生的概率仅仅有0.52%,这意味着仅仅有5.2GB的数据会在关键场景下进行重建。
从图中可以看到,对比传统重建方式的持续时间的对比。对比传统的RAID组的工作模式,DDP大大简化了管理工作,从根本上说,对于存储系统的规划,系统管理员仅仅需要做一件事情,就是决定存储系统的硬盘数量。