VRAID坏盘重构时间剖析Word文档下载推荐.docx
《VRAID坏盘重构时间剖析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VRAID坏盘重构时间剖析Word文档下载推荐.docx(5页珍藏版)》请在冰豆网上搜索。
虚拟RAID,就是指先把物理硬盘逻辑的划分出许多小块,把小块视为逻辑硬盘,再利用小块组成raid,再把这种mini的raid聚合成一个较大的逻辑空间,最后可用于划分LUN/卷的过程。
D
DATADISK
数据盘
P
parity
校验盘。
指RAID5中的校验盘,或指RAID6中的横向校验盘
Q
指RAID6中的纵向校验盘
H
hotspare
热备盘
LUN
logicalunitnumber
指SAN存储系统的LUN
卷
VOL:
volume
指NAS存储系统中的卷
池
Pool
RAIDs的集合,可以直接划分LUN/卷
C
Chunk,磁盘块
磁盘分块;
就是把磁盘逻辑划分成多个固定大小的区域
1.背景
RAID是用n块数据盘+m块校验盘+x块热备盘组成(n为正整数;
m,x非负整数),尤其是RAID5/6,应用面比较广。
原本数据盘(D)、校验盘(P)、热备盘(H)指的是一个个独立的磁盘。
例如,在RAID5(假设8D+1P)当前段发送一个IO读写数据的时候,存储控制器只能调动8个D盘,1个校验盘工作。
如果这9块盘都在1个盘柜,那么这次IO将全部发生在一个磁盘通道上。
存储控制器后面往往连接了很多的磁盘通道,每个磁盘通道又连接了几个盘柜,每台盘柜里面有几十块磁盘。
众所周知,数据存储过程中最大的时延、木桶原理中最短的一片,就是硬盘寻道,于是存储设计者们思考:
如何尽可能的让更多的硬盘,超多RAID组数据盘数量的硬盘,来共同响应一次主机端IO。
于是有些厂商提出了VRAID(VirtualRAID)技术。
据说最早提出的应该是HP,3PAR也充分利用了这一技术,现在EMC也将此技术融入到其VPLEX产品中,2013年来,HUAWEI推出RAID2.0+技术,更是将此技术推动到一个小高潮。
2.VRAID原理
在一套存储系统中,控制器后端连接多个盘柜,盘柜里面有很多磁盘。
VRAID首先利用一个“池”的虚拟概念,所有的LUN/卷,都是在池上划分的,而池是由RAIDs组成的,RAID是由n个D+m个P+x个H构成的,每个D\P\H是一个固定且相同大小的磁盘分块。
再反过来描述一遍:
先把磁盘(尤其是硬盘)切割成很多个块,选取一些块,组成一个RAID;
再选取若干个RAID,组成一个RAIDs;
用一个或多个RAIDs,组成一个池。
最后在池上划分出LUN/卷。
再用数学式写一遍,能看懂的给提提意见,看不懂的算:
pool=x1·
(RAIDs1)+x2·
(RAIDs2)+…
=x1·
(n1D1+m1P1+a1Q1+b1H1)+x2·
(n2D2+m2P2+a2Q2+b2H2)+…
(n1+m1+a1+b1)·
C1+x2·
(n2+m2+a2+b2)·
C2+…
=y·
LUN+z·
VOL
D=s1·
C1+s2·
C2+…
其中,a,b,n,m,s,x,y,z均为非负整数。
我们再给VRAID的技术添加一条非常重要的因素:
任意一个VRAID都尽可能选取了来自不同磁盘通道下的不同盘柜中的不同磁盘,VRAIDs尽可能覆盖了全部的硬盘。
这条因素也是VRAID能够实用化、能够成名的关键因素,也是最有别于普通RAID的特点。
这样,由VRAID做成的池及池中的LUN能够尽可能多地调动磁盘通道和磁盘。
任何一次来自主机端的IO读写,都被存储控制器发送到多条磁盘通道、多个盘柜中的多块磁盘。
说白点儿就是,家用电脑一次读写占用一颗硬盘。
RAID存储阵列一次读写占用几块硬盘。
VRAID的池一次读写几乎能调动全部的硬盘。
因为一块硬盘由于被划分了多个虚拟块,每一块均被分配到某个VRAID中,所以一块硬盘跨越了非常多的raid,是多个raid的个体。
这有别于传统方式:
每颗硬盘仅仅是一个raid的个体。
按理来说,VRAID这种方法通过调度多硬盘并发来优化存储过程中的最短木片:
硬盘时延,从而有可能大幅度的提高存储读写带宽。
3.VRAID定义
根据上文,下一个不够专业的定义:
VRAID指,在一个或多个磁盘上划分出相等大小的若干个磁盘块,将每个磁盘块视为一个虚拟出来的磁盘。
通过选取一定数量的磁盘块,组成一个RAID,这个RAID就叫VRAID。
4.VRAID坏盘数据重构分析
VRAID最直观的表现就是降低了RAID的大小,单个RAID的数据重构非常快。
然而,在存储系统中,往往是一块硬盘即便只损害几个块,整块硬盘就得报废。
这样依然是要整个硬盘替换,对替换盘进行数据重构。
此时VRAID还能快速重构数据吗?
我们用一个案例来说明:
假设存储系统中一块7200转的2TBSAS硬盘损坏,需要用同等硬盘更换。
硬盘上原有b容量的数据,那么,新盘需要多少时间重构完成呢?
t=b÷
w,其中,w取(硬盘最大写入速度与RAID校验速度)两者的最小值。
如果RAID类型为1或者10,w基本上可以取硬盘自身的最大写入速度。
而RAID2/3/4/5/6等则需要进行数据校验工作,实测环境下的校验速度一般较低,raid5大约仅30MB/s。
所以w就不能取硬盘的最大写速度,而应该取数据的校验速度。
这种情况下,坏盘重构的瓶颈实际上是raid的校验速度。
那么VRAID在更换一块2TB坏盘后怎么处理呢?
4.1.校验压力分析
由于这块坏盘跨越n个vraid,那么重构时必然会有n个vraid同时向处理器发送数据进行校验,如果存储系统采用CPU处理,想会100%负荷。
恐怕更加噩梦的是:
万一n个vraid里有RAID1、RAID10、RAID5、RAID6,估计RAID1和RAID10会抢占IO,而RAID5/6本来校验速度就很低。
试问:
上层应用还能正常响应吗?
恐怕整个存储系统都有宕机风险。
但是如果存储系统设计了大规模的FPGA芯片来处理XOR校验,将有可能突破校验瓶颈,大大提升数据重构速度。
4.2.硬盘性能瓶颈限制
接下来,CPU校验好的数据需要向新盘写入,新盘的总的写入带宽一般在100~200MB/s(截至2014年),如果按照200MB/s的速度,一块2TB硬盘在写满1TB的速度下,最快需要5000秒,约1个半小时。
4.3.重构数据量的理解
一些厂家宣称其数据重构速度是2TB/Hr,经查证,这些厂家是按照重构数据量来理解的。
如果是这样的理解,那么这个宣传存在误导。
因为传统RAID通过多个raid池化,在一个LUN里面也能添加很多个RAID,是不是也能实现甚至超过每小时2TB的数据重构量?
4.4.有热备盘下的对比
基于本节开头的例子,如果在传统RAID中和VRAID的中都采用热备盘,那么当一块硬盘损坏时候,传统RAID和VRAID均开始重构数据,并将数据写入到热备盘上,此时的VRAID过程如4.1~4.1所分析。
然后我们将新盘更换坏盘,数据将从热备盘向新盘拷贝(可能有的厂家采用新盘自动声明为热备盘的方式,无需数据拷贝,那么本段的分析可以无视):
传统RAID是热备盘立即对新盘开始拷贝,并且最大拷贝速度能够接近于新盘的最大写入速度。
而VRAID则需要先对新盘进行块划分,初始化,这个过程的时间不会瞬间化。
然后,来自n个vraid的热备盘(磁盘块)开始同时向新盘发出传输数据的请求,我不知道大家有没有这个经验:
多块硬盘对一块硬盘的直拷速度之和,往往小于单块硬盘对一块硬盘的直拷速度。
由此推断,VRAID从热备盘向新盘拷数据的过程很有可能会拖慢拷贝速度,低于新盘的最大写入速度。
5.总结
通过本篇分析,坏盘重构实际上最理想的速度也就是新盘写速度。
VRAID在数据重构上的优势需要结合大规模优良设计的FPGA芯片才能发挥出来,最快能够接近于新盘写速度。
在下一篇,我们将分析一下VRAID在随机、顺序读写环境下的性能表现。