开始新对话

未解决

此帖子已超过 5 年

16862

2016年2月18日 01:00

专题:极致性能存储DSSD的故事

专题:极致性能存储DSSD的故事


连载索引:


索引
2014-2015,收购DSSD后的两年
2016年2月,DSSD发布会前夕
2016年2月29日,DSSD D5发布会
关键字1:Rack-Scale架构
关键字2:性能100与10
关键字3:硬件架构
关键字4:IO Stack
关键字5:DSSD操作系统Flood
DSSD体系结构概述
DSSD Cubic RAID技术解析
视频:DSSD软硬件协同设计概览

DSSD极致性能的秘密 – NVMe over PCIe

视频:DSSD Cubic RAID技术解析

DSSD极致性能的秘密 – 数据访问流程

DSSD数据结构 – 数据对象、卷与元数据
DSSD Flood结构化对象与数据对象
Flood Direct Memory API
DSSD Flood中的Hadoop应用插件
视频:重新想象性能!EMC DSSD彻底改变您的业务
DSSD软件摘要和术语表
视频:EMC DSSD D5 - 创新改变世界

官方文档:

文档
DSSD Product Positioning Guide
DSSD D5 Data Sheet
DSSD D5 Spec Sheet
DSSD D5 Software Whitepaper
DSSD High Performance Databases/Data Warehouses Solution Brief
DSSD High Performance Hadoop Solution Brief
DSSD and Cloudera Evolve Hadoop Solution Brief
DSSD Custom High Performance Applications Solution Brief

DSSD D5 Provides Native and Flexible Data Access to Mission-Critical Applications

DSSD D5 Rack-Scale Flash Appliance - Game-changing Performance for Current and Future Applications

DSSD D5 Modular Data Architecture Makes Managing Data Volumes a Snap

DSSD Flood API Concepts
DSSD D5 Installation Guide
DSSD Client User Guide
DSSD Management API Guide
DSSD Administrator's Guide
DSSD Release Notes
DSSD Hadoop Plugin Installation Guide
Deploying Hadoop on EMC DSSD D5 - Best Known Methods
Deploying Oracle Database on EMC DSSD D5 - Best Known Methods
EMC DSSD D5 软件白皮书(中文)

EMC DSSD D5 Unleashes Parallel File System Solutions

EMC DSSD D5 规格说明(中文)
ESG White paper: DSSD Oracle performance
ESG Video: DSSD Oracle performance


官方视频:

官方视频

DSSD D5 – The Right Storage for Your High Performance Workloads

EMC and Cloudera Deliver Enterprise Analytics on Hadoop

Performance Reimagined! DSSD Can Change Your Business

DSSD D5 for High Performance Databases and Data Warehouses

DSSD D5 for High Performance Hadoop Workloads

信息图:

信息图
信息图:DSSD – The Future of Flash
信息图:DSSD D5 – A Quantum Leap In Enterprise Flash Storage
信息图:DSSD — 闪存的未来
信息图:DSSD Oracle Performance

信息图:DELL EMC DSSD D5 Accelerates and Simplifies Oracle Databases

Useful How-To KB:


KBs
DSSD: How to Power Off/On D5
DSSD: How To Manage Volumes On The D5
DSSD: How To Securely Erase the D5
DSSD: How To Run a Performance FIO Test on a Single Client
DSSD: How To Remove Volumes and Objects from the D5 and the Client
DSSD: How To Review LED Lights and Status on the D5
DSSD: How To Access the Serial Port on the D5
DSSD: How To Use Auditing Commands on the D5
DSSD: How To Use Flood on a Client Server
DSSD: How To Create a Block Object by Creating a Volume, an Object, and a Filesystem
DSSD: How To Check DSSD Client Software Version And Status
DSSD: How To Determine Port Connections Between Client And D5
DSSD: How To Cable Client Cards to the D5
DSSD: How To Configure NTP
DSSD: How To Set and Enable Syslog On D5
DSSD: [SW] How to review faults on a DSSD D5 Appliance

2.1K 消息

2016年3月1日 17:00

价格有了,请联系当地销售了解

4K 消息

2016年3月1日 17:00

支持!

价格出来了不?

2.1K 消息

2016年3月8日 22:00

DSSD Cubic RAID技术解析


     DSSD的发布会中所提到的Cubic Raid技术,其实是一种在RAID-6和多维RAID-6Multi-Dimensional RAID-6)基础上优化了的RAID技术。 本贴将介绍Cubic RAID的基础知识。在介绍Cubic RAID之前,我们首先简单来看一下RAID-6和多维RAID-6


RAID-6


     RAID-6是企业中最常用的保证数据较高的可用性,它使用两块校验盘,能够通过数据校验恢复在RAID条带中的1-2块盘中的数据。它的实现牺牲一部分空间利用率,虽然随着RAID-6条带中盘数量的增加,这种作为校验位的空间消耗会略有降低,但是RAID-6在单条带磁盘总数上存在限制,几乎不可能有超过20块盘的情况出现,甚至于EMC VMAX这样拥有巨无霸级别的存储阵列也最多支持14+2RAID-6,因为超过一定数量的磁盘的RAID-6会多阵列的控制器与计算资源带来极大的消耗。

DSSD-4-1.png

多维RAID-6


     多维RAID技术早在2000年之前就已经被开发出来,多维RAID-6是以二维的方式排列RAID条带,在这个由数据盘和校验盘组成的矩阵中,由于行和列都有两款校验盘的存在,可以允许整个矩阵中有更多的磁盘损坏的情况下恢复数据。

DSSD-4-2.png

     但是多维RAID有一个缺陷是,因为每个垂直和水平条带的校验都是分别计算的,所以,当某种特定的状况下,如果坏盘所在的行和列种都有个超过2个其他坏盘的时候,数据是不能被恢复的。如下图所示。读到这里,细心的读者可能会问,多维RAID为什么不能先恢复图中只有一个坏盘的列,这样原先三个坏盘的行就变成两个了,就能恢复了。楼主认为,就是由于传统的多维RAID行与列分别校验计算的限制,这种类型的数据就无法实现,但是Cubic RAID就能做到。

DSSD-4-3.png

Cubic RAID

     DSSD的Cubic RAID作为基于RAID-6和多维RAID-6改进的架构,DSSD 中的Cubic RAID使用18*32 FLASH CELLS的网格构建。与多维RAID相似,在每行与每列中都有两个CELL作为校验CELL。

DSSD-4-4.png

     而Cubic RAID相比多维RAID的改进之处是,它又为校验位行与列定义了校验位的校验位(交叉奇偶校验组),这样整个Cubic的网络就以一种数据、校验,交叉奇偶校验组三角的形式相互依赖。相互能通过计算来恢复数据。

DSSD-4-5.png

更重要的是,Cubic RAID可以以一种迭代算法来恢复多维RAID不能恢复的数据。大致的步骤如下:

当出现损坏CELL的行和列中都出现超过2个CELL的情况,首先Cubic RAID会将只有一个损坏CELL的行进行修复。

DSSD-4-6.png

然后,再将有一个损坏的的列恢复,并恢复所有的损坏CELL。

DSSD-4-7.png

同理,Cubic RAID可以将这种算法扩展到更加复杂的情况,下图中的网格中有大量的CELL损坏,那么Cubic RAID可以通过以下几个步骤对数据进行恢复:

DSSD-4-8.png

1. 先将所有小于等于2个损坏CELL的列修复

DSSD-4-9.png

2. 然后将小于等于2个损坏CELL的行修复

DSSD-4-10.png

3. 再修复剩余小于等于2个损坏CELL的列。

DSSD-4-11.png

4. 以此类推修复所有损坏的CELL。

DSSD-4-12.png

楼主总结了下面这张表列出了RAID Cubic和RAID6与多维RAID6的比较,方便大家理解:

RAID-6

多维RAID-6

Cubic RAID

可靠性

恢复1-2块损坏盘上的数据

坏盘所在的行与列的坏盘总数不能都大于2

理论上只要迭代算法可以继续进行,就能恢复数据。

空间率用率

X-2 /XX为条带中的盘总数),最低50%4块盘),最高87% 16块盘)

(X-2)-(Y-2)/X*Y,利用率取决于矩阵中的盘数量(XY)分别为行和列种的磁盘数量

(32-2)-(18-2)/32*18 = 83%

     综合来看,DSSD的Cubic RAID可以以17%非常低的空间消耗率,实现了极高的可靠性。这种可靠性远远超过了传统的RAID-6,甚至比3校验的RAID解决方案也高出许多。虽然Cubic RAID从原理上来看校验方面的计算量很大,但这显然没有影响到DSSD数据处理的性能,至于原因,且看连载中关于Flood操作系统的详细介绍。

4K 消息

2016年3月8日 23:00

DSSD上到处都是逆天的黑科技

2.1K 消息

2016年3月18日 02:00

DSSD极致性能的秘密 – NVMe over PCIe

     已经有读者从之前的连载中了解到,DSSD D5 Rack-Scale存储阵列能提供在百TB数据级别的极致性能(1000万IOPS、100 GB/s、100 us延迟)。而实现这种极致性能的背后原因是一种全新的软硬件协同设计的成果,以及发布的视频( Video Link : 76546)中对DSSD D5的设计理念有了一个概略的介绍。

     在接下来的几篇文章中,楼主会逐个介绍这些实现极致性能的主要设计点。第一个,我们来看一下NVMe over PCIe Gen3

PCIe:

     PCIe读者们应该都非常熟悉了,它是目前主流的计算机系统总线接口,使用了双向序列的点对点的串行技术,PCIe规格已经发展到了第三代,PCIe GEN3的x1的带宽双向达到了2GB/s,最大16x的理论性能可以达到32GB/s。PCIe作为数据通道,在几年前的服务器端闪存加速卡中就已经开始使用了。PCIe有着高性能、高带宽、简化设备间的输入输出、分层架构、简单应用等有点。

     DSSD在设计的时候将原来只存在于计算机主板上PCIe – 系统总线 – 内存 – CPU的架构扩充到了整个机架。DSSD利用PCIe让CPU和主机内存中运行的程序与数据存储实现了最大的数据传输效率。DSSD系统当前使用的是PCIe Gen3 X4,传输带宽为8GB/s,如果将来升级到8x、16x,DSSD还存在进一步提升性能的可能。同时,通过DSSD硬件架构,将总共96个端口和主机端的PCIe板卡的端口组成了独有的PCIe Mesh Fabric。这种架构能够使阵列内任意一个闪存模块中的闪存芯片直接通过PCI的网络接入到主机的系统主线中,提供了极大的数据传输带宽和极低的访问延迟。可以看到, PCIe的使用为DSSD的数据吞吐量提供了巨大的容量和可扩展性。

DSSD_PCIe.png

NVMe:

     NVMe的也叫做NVMHCI全称是Non-Volatile Memory Host Controller Interface Specification。NVMe提供了一种能够让主机软件直接与非易失性内存介质(Non-Volatile Memory),也就是我们通常指的SSD,使用PCIe进行通讯的子系统。作为数据传输协议,NVMe与SATA/SCSI等协议一样的接口标准,但是它应用在闪存上的效率更高。

NVMe协议具有以下优点:

  • NVMe利用了SSD的优势,同时能够并行读写大量的数据,并且为将来的3D NAND以及3DXP提供了技术基础。
  • 针对企业与消费者的SSD进行优化,是专为SSD而生的协议
  • 支持65000个IO队列,可以同时执行达到65000个IO命令
  • CPU负载低

     从NVMe的特点可以看出,它是专门为闪存设计的数据传输协议,而DSSD D5作为业界首个Shared-storage NVMe存储平台,在设计的时候也是充分利用了NVMe的优势:

  • DSSD的IO Module是一种经过特殊设计的,高密度、热插拔、支持多路径NVMe的设备。
  • DSSD客户端面向应用的NVMe接口是经过高度虚拟化的,所有的客户端(主机上通过PCIe板卡访问DSSD数据的应用)都可以识别整个DSSD中由高密度闪存芯片所组成的存储池。
  • DSSD将每个闪存模块中高达18000个NAND Die通过多个NVMe虚拟端口与客户端进行并行的高速通讯。
  • DSSD的客户端软件可以允许应用直接从用户端执行NVMe IO命令,实现最大化并发IO处理性能。

DSSD_NVMe.png

     综合来看,PCIe over NVMe是DSSD实现高性能的主体,然后支持DSSD性能的因素还有很多,后面的文章中我们还会介绍DSSD的高密度闪存颗粒的设计与Flood Client API等等内容。

2.1K 消息

2016年3月25日 00:00

DSSD极致性能的秘密 – 数据访问流程

     Flood是DSSD中软件集合的名称。Flood管理着所有客户端系统到DSSD D5存储阵列的链接,当然也包括核心的数据访问流程控制。本文总我们就来看一下DSSD D5的Flood软件是如何通过这几个简化了的步骤处理客户端数据请求,实现极低延迟数据访问的过程。

DSSD_IO_1.png

首先,先了解一下整个客户端与DSSD数据通讯的过程中会包括的几个组件,分别是:

  • Client Card – 安装在主机上的并且接入系统主线的PCIe板卡,它通过PCIe线路连接到DSSD阵列上。
  • Client Memory – 这个就是应用程序在使用的主机端内存,可以是一台物理机的内存,也可以是一台VM所使用的宿主机映射给她的内存,反正就是应用程序能够最快访问数据的地方。
  • Libflood API – DSSD D5 Flood软件的开放数据接口,只针对由应用来直接访问DSSD中的数据的时候进行的数据管理,控制流设置,IO Teardown等操作。
  • Client DSSD Block Device Driver – 这个是运行在客户端上的驱动程序,虽然DSSD中的数据以对象形式存储的,但是DSSD也能够通过Block Device Driver将数据以Block(块)的形式展现给应用,就像传统的Block Device一样。
  • Control Module(CM) – DSSD的IO控制模块,它在阵列中负责元数据查找,Cubic RAID计算等控制流的计算。
  • I/O Module – DSSD的数据模块,只负责数据流(Data Flow),是一个完整的software-free data path。
  • Flash Module(FM) – DSSD中的数据容器,包含闪存芯片的特制闪存卡。
  • DMA – Direct Memory Access 一种直接让计算机中的硬件子系统不经过CPU访问内存的技术。

当客户端通过libflood API读取DSSD中数据的时候经历了以下几个步骤:

  • 应用发起一个API Call通知CM需要访问的数据
  • CM确定数据所在的FM的位置
  • CM触发一个通过Client card - > DMA - > NVMe over PCIe - > FM读取数据,然后直接将数据写入到Client Memory的数据流过程
  • 这个过程中不任何经过客户端主机的OS Kernel

DSSD_IO_2.png

如果是写入,通过libflood API写入数据到DSSD中的步骤为:

  • 应用发起一个API Write Call
  • Client Card将应用数据生成一个DMA的传输,并同时写入到三个DSSD中的位置,一个到CM、两个FM
  • 写入在DSSD 中的PCIe Mesh Fabric中是以multicast进行的,没有额外的数据拷贝发生
  • 三处写入可以保证数据的高可用性,在任何组件出现问题的时候数据都可用
  • FM中的通过Cubic RAID进行保护

DSSD_IO_3.png

如果客户端系统使用到Block Device driver,那么IO过程是:

  • 应用与block device driver交互触发一个I/O请求
  • 然后Client Card直接从应用程序的内存将数据使用DMA与DSSD D5中的数据进行传输

DSSD_IO_4.png

     根据上述的DSSD I/O数据流的描述可以看出,当应用向DSSD发起数据读写请求的时候,DSSD的客户端与存储阵列间能够以最小的通讯开销,开启客户端内存 – DSSD数据容器之间的DMA传输,这种数据传输最大限度上利用了DSSD 的PCIe over NVMe和Mesh Fabric的高带宽,低延迟的优势,并将原本复杂的IO Stack简化到只有几个步骤,从而极大地提升了数据访问性能。

3.2K 消息

2016年3月25日 04:00

闪存的发烧友

2.1K 消息

2016年3月31日 23:00

DSSD数据结构 – 数据对象、卷与元数据

     从数据存储的角度来看,DSSD是一款以对象(Object)为基础的存储,对象可以是块(Block)、文件(File)、卷(Volume)、目录(Directory)以及键值配对(Key-Value)等各种类型。这些对象在DSSD中存储为对象池(object pool)。每个对象都拥有唯一的不可重用的编号(UDI,从一个2的64次方中获取)。DSSD D5由于目前的容量限制,可以最多存储10亿个对象。

    

     一个对象是由唯一标识符(Unique ID),分段大小(Fragment size)和一个或多个分段数据所组成的。一个数据分段在一次读写的数据传输中,从应用程序内存移动到DSSD的三个目标位置(一个控制模块的DRAM和两个闪存模块的DRAM中)。下图是DSSD D5中以4K-fragment长度的存储。

DSSD-5-1.png

     对象的容器是卷(卷是另外一种对象,但是逻辑上是对象的容器),每个对象只能属于一个卷。而整个系统中的卷的总数不受限制,卷可以被一个或者多个客户端系统访问。不过当一个卷被多个客户端系统的访问的时候,多个客户端系统是以线性的方式访问卷。通过适当的加锁机制保证客户端之间对于对象的访问隔离。下图显示了卷中的对象示例:

DSSD-5-2.png

     在一个卷中,目录(Directory)对象提供了卷中对象的继承管理。对象可以通过ID访问或者通过文件路径进行访问,下图为对象访问的图示:

DSSD-5-3.png

     所有的元数据,比如闪存转换层FTL,都会通过读取对象创建被保存在D5控制模块的主内存中。一个对象有关的所有元数据都会被包含在另外一个对象中,然后在对象需要的时候写入。元数据不会产生无关的I/O,在系统启动的时候,对象会被检测然后创建FTL。而和传统文件系统不一样的是,所有DSSD系统中的I/O都是对象数据管理或者分段数据管理,而不会有任何元数据的管理的I/O。

2.1K 消息

2016年4月5日 20:00

首帖更新一批官方文档!

3.2K 消息

2016年4月6日 17:00

听说 这个存储可以连接HPC机器使用耶,这么神呀~

1.6K 消息

2016年4月6日 19:00

liu同学,有空查收下你阿里云的邮件

3.2K 消息

2016年4月6日 22:00

yes, dear

2.1K 消息

2016年4月7日 23:00

DSSD Flood结构化对象与数据对象

     在前一篇文章中,我们介绍了DSSD中的数据对象、对象的容器 -  卷以及元数据的概念。本篇中我们将从Flood操作数据对象的角度介绍DSSD中的几种数据对象类型。DSSD的对象包括以下几类:块(Block)、文件(File)、卷(Volume)、目录(Directory)以及键值配对(Key-Value)。如果按照数据类型划分,Flood中将对象定义为以下几种:

Flood结构化对象(卷与目录)

     卷(Volume)在DSSD是对象的容器,表示为一组在特定Flood应用情形下对象的集合。Flood会以单个存储池(Pool)展示DSSD系统中所有的卷,而且这种展示是以预先配置在所有可用的物理存储媒体之上的(闪存模块)。Flood中支持创建大量的附加卷(Additional Volume),允许对象在不同卷之间进行隔离,使Flood客户端在不同的情形下可以看到特定卷中的特定对象。用户可以通过管理命令、web应用或者管理API对卷进行管理。

     目录(Directories)DSSD中的目录是一种对象的类型,作用是映射其他Flood的对象类型。目录可以看作一种对目录中对象值和入口操作的接口。但是这种操作只限于同一个卷内的所有对象。Flood中每个卷中有一个特殊的目录,也就是Root。所有卷宗的已命名的对象都在这个目录中被访问。

Flood数据对象(文件、块与键值)

     文件(File)与块(Block):Flood中以字节存储的数据分为两类:文件和块。Flood存储这两类的数据的时候是以一种分散的、只分配实际包含数据空间的结构存储。即使一个对象长度非常长,但只包含了写入的很小一部分字节。它也只会占用很小的空间。Flood对读取对象长度中不包含数据的部分返回的是null值。Flood对数据对象的操作分为四种:读、写、清除(trim)、扩展(crop)。其中,得益于Flood的分散数据存储的结构,清除的效率会比传统的写零操作来得快很多。扩展是改变对象的大小,只支持变大,不支持变小。这些操作对文件和块在DSSD中的

主要区别是:

  • 块对象的数据IO需要与数据分段对齐,而文件数据IO则没有这样的限制。
  • 读取数据超过块对象的末端会出现报错。
  • 读取数据超过文件对象的末端不会报错。
  • 写入文件对象数据的末端会自动触发文件扩展
  • 块对象不能统括crop操作进行扩展

     键值对象(Key-Value):Flood中的键值对象(kv object)提供了一种高效的对键和相应值配对的机制。DSSD中的单个键大小可以达到64kb。值的存储以8KB为分段,最大存储可以达到1MiB。键值的操作可以通过Flood的标准路径进行。基本操作包括:插入、查找(lookup)、删除、迭代(keys)。

2.1K 消息

2016年4月11日 19:00

信息图:DSSD – The Future of Flash

(点击放大或下载附件)

1个附件

2.1K 消息

2016年4月11日 19:00

信息图:DSSD D5 – A Quantum Leap In Enterprise Flash Storage

(点击放大或下载附件)



1个附件

找不到事件!

Top