http://blog.csdn.net/u013394982/article/details/18259015

DDP功能,即Dynamic Disk Pool,它是除了现有的RAID0,1,10,5,6这些传统RAID磁盘组以外的,非常有效的存储管理技术。它可以极大地简化对于闲置空间,闲置存储资源的管理,当然对于现有RAID组,它也简化了管理工作。
在讨论DDP功能之前,我们需要理解以下两个基本的概念:
1。D-Piece:D-Piece是在一块物理硬盘上开出的一段连续的,大小为512MB的存储空间。其中,每个D-Piece包含了4096个存储段,通过计算:512MB/4096=128kb,即每个存储段就是128kb大小。在一个虚拟的存储池中,一个存储的volume是由分布在不同的10个物理硬盘上的D-Piece所组成。
2。D-Stripe:它是由10个分布在不同的物理硬盘上的D-Piece所组成的,大小为4GB。在D-Stripe内,存储数据是以类似于RAID6的条带和校验方式存储的,也就是说如果10个D-Piece组成一个Stripe的话,那么Piece的组织方式就是传统的8+2方式,8个Piece(4GB大小)是存储数据的,1个Piece保存校验信息,最后一个Piece保存RAID定义的Q值。

从虚拟磁盘和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。
例如:一个容量为500GB的虚拟磁盘,会包含500GB/4GB个,即125个D-Stripe,对于一个虚拟磁盘,数据的占用空间会从D-Piece的最低的LBA地址开始使用。

一个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数据的物理硬盘会重建,失去两个的会暂时不可用。这个优先级默认为“高”
2。关键重建,重建失去两个D-Piece数据的物理硬盘,这个优先级默认为“最高”对于超大规模的磁盘池,如果有两块物理硬盘失效,这种情况发生的概率会随着磁盘数量的增大而降低,如之前讨论的内容,按照优先级的配置,关键重建仅仅会持续很小的一个时间窗口,使得数据可用,然后会非常快的进行降级重建,也就是说超大规模的磁盘池场景下,DDP可以保证一定的容错性。

例如,假设我们有一个192块物理硬盘组成的存储系统,当有两块物理硬盘失效之后,在1分钟之内,即可完成关键重建工作,在这1分钟之后,系统都是可以提供容错的工作状态的。从数学角度来看,这样规模的一个存储系统,仅仅有5.2%的概率会发生降级重建,关键重建场景发生的概率仅仅有0.52%,这意味着仅仅有5.2GB的数据会在关键场景下进行重建。

从图中可以看到,对比传统重建方式的持续时间的对比。对比传统的RAID组的工作模式,DDP大大简化了管理工作,从根本上说,对于存储系统的规划,系统管理员仅仅需要做一件事情,就是决定存储系统的硬盘数量。
当然,DDP功能也有一些限制,例如:
1。在虚拟磁盘中的数据段大小是128kb,这是固定的,不可以修改。
2。不支持动态的RAID组迁移功能
3。预读的冗余校验功能是不能基于虚拟磁盘来使用的。
4。DDP的最大容量是64TB
5。不支持SSD硬盘

存储设备的DDP功能详解的更多相关文章

  1. MySQL日志功能详解

    MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...

  2. 【转】 /etc/fstab功能详解

    [转] /etc/fstab功能详解 最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义.供大家参考有不正确的地 ...

  3. .NET ORM框架 SqlSuagr4.0 功能详解与实践【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  4. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  5. Linux命令-自动挂载文件/etc/fstab功能详解

    Linux命令-自动挂载文件etcfstab功能详解 一./etc/fstab文件的作用 磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载. 系 ...

  6. python通过socket实现多个连接并实现ssh功能详解

    python通过socket实现多个连接并实现ssh功能详解 一.前言 上一篇中我们已经知道了客户端通过socket来连接服务端,进行了一次数据传输,那如何实现客户端多次发生数据?而服务端接受多个客户 ...

  7. 【转载】Linux命令-自动挂载文件/etc/fstab功能详解[转]

    博客园 首页 新随笔 联系 订阅 管理 随笔 - 322  文章 - 0  评论 - 19 Linux命令-自动挂载文件/etc/fstab功能详解[转]     一./etc/fstab文件的作用 ...

  8. iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

    使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现   2.纯代 ...

  9. SVN功能详解

    SVN功能详解   TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...

随机推荐

  1. 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——201 ...

  2. 玩转TypeScript(5)--环境声明

    环境声明为TypeScript引入了一个作用域,但是对于产生的javaScript程序不会有任何影响.程序员可以使用环境声明来告之TypeScript,一些其他的组将将提供变量的声明.比如,默认情况下 ...

  3. linux平台模拟生成CAN设备

    前言 使用socketCan的过程中有时候没有can接口设备,但是需要测试一下can接口程序是否有问题, 此时需要系统模拟生成can设备,本文介绍linux平台模拟生成CAN设备的方法. 实现步骤 1 ...

  4. Ubuntu 速配指南:开启3D桌面特效

     http://www.lupaworld.com/article-205494-1.html 安装compizconfig-settings-manager(以下简称ccsm) 在终端里输入:sud ...

  5. touch事件(寻找触摸点 e.changedTouches)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  6. POJ 3069:Saruman's Army

    Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13242   Accepted: 6636 D ...

  7. centos7 使用mount 挂载window10 (超简单)

    一直使用vmware tools 挂载,发现好多问题,折腾了大半天放弃了,现在使用mount挂载,发现简单多了 一丶首先添加你需要共享的Windows文件夹,右键 记得要选择 Everyone 和一个 ...

  8. 通过Jersey客户端API调用REST风格的Web服务

    Jersey 客户端 API 基础 要开始使用 Jersey 客户端 API,你首先需要创建一个 com.sun.jersey .api.client.Client 类的实例.下面是最简单的方法: i ...

  9. PipelineDB 1.0.0 发布——使用标准的pg 扩展开发模型

    PipelineDB 1.0.0 发布已经发布了,现在的已经成为一个标准的pg 扩展了,语法也有变动 create continous view 修改为了view,create streaem 修改为 ...

  10. nexus && minio s3 存储私有镜像

    对于新版本的nexus 已经支持s3 存储了(3.12),但是企业内部可能还是需要使用私有部署的 还好我们有minio,具体的介绍就不说了 minio 项目运行 参考项目: https://githu ...