西瓜哥 发表于:13年08月11日 11:57 [原创] DOIT.com.cn
传统的RAID 1.0如果改良后,变身为RAID 1.5来实现Tier和Thin功能。下面就以我理解的DS8870的RAID 1.5切西瓜原理为例,来帮助大家再次理解我的西瓜刀法,哈哈。
首先,DS8870按照一定的原则选择8块一样的磁盘(由于DS8870后端采用FC-AL,因此选择盘的时候最少要跨两个环路才能保证比较好的性能)组织一个Array site。注意,必须是8块盘。DS8870购买的时候,都是以16块盘为单位进行购买的,SSD支持以8块为单位购买。
这8块盘选择RAID级别后就组成了一个Array。这些RAID级别只能从下面的几种6种类型里面选择:
但是,还有很多的限制。比如SATA盘,只能支持RAID 6,当然,你可以做成RAID 10,但需要向IBM特别申请,RAID 5绝对是不允许的。原因大家都懂的,就是害怕可靠性问题。
大家可以看到,Array是有RAID属性的。每一个RAID Array组成一个Rank,IBM然后拿出从西瓜哥购买的西瓜刀,切成1GB(严格来说,是1GiB)的切片Extent。每个Extent包含数据和元数据区域。然后选择多个Rank组成Extent Pool。
如果你需要做Tier,那么你需要选择不同类型硬盘的Rank来组成Extent Pool。比如,你需要做3层分层存储,你需要选择的Rank必须包含有SSD的Rank,SAS的Rank和NL-SAS的Rank。从上面分析可以看到,DS8870的Tier的粒度是1GB。
最后一步,你从Extent Pool选择你需要的空间来组成LUN,然后分配给主机使用。这些LUN其实都在整个Pool都条带化了(striping),因此,不管Pool是否是Tier的Pool,性能都会提高,克服了传统RAID 1.0只能8块硬盘同时读写的缺陷,一个LUN也可以跨越几十块硬盘了。不过这里再次强调,一个RANK数据丢失了,整个POOL都完了。
但大家都知道,LINUX和UNIX主机的LVM卷管理软件也会做Striping,包括IBM自己的SVC也可以做Striping,因此,有可能存储做了,主机(或者SVC)再做一次Striping。这种现象我们称为双重条带现象。Double Striping可能会造成性能下降,下面这个示意图就是,两次条带,正好相当于不做条带,性能就会出现问题。大家以后在实施的时候要注意。
如果需要支持Thin LUN,本来IBM应该再从西瓜哥购买的一把小刀,把Extent再切成更小的块的。但估计是IBM看不起西瓜哥的小刀吧,干脆不切了。直接按照1GB Extent的粒度来做分配(但好像IBM V7000就切成32K粒度,不知道DS8000以后是否要改?)这个谷粒 粒度,我感觉太大了,哈哈,一顿饭吃一几颗就饱了。这种支持Thin的卷IBM叫ESE(extent space efficient volumes)。
这个1GB的粒度,做Thin的时候虽然有点浪费,但IBM财大气粗,无所谓,每次多分一点空间,省事。但做快照是,这个粒度成问题了。你想象一下,数据库的I/O典型是8K,一个8K的I/O下来,快照你需要分配1GB的空间,空间浪费好办,但COW的原来大家都懂,整个1GB的数据块的数据你都需要COPY到快照资源池里。这个搬运的数据量太大了,对系统的性能影响太大。怎么办?IBM没有办法,只能再找西瓜哥购买一把小刀,把Extent切成64K的Track,这样的卷叫TSE(track space efficient volumes),专门给快照使用。前面我们讲到,TSE不能建立在SATA的RANK上,主要考虑性能问题吧。
好,最后我们再看一下DS8870的逻辑图,大家按照箭头再回顾一下IBM的西瓜刀法。
不过,别忘啦,RAID 1.5虽然解决了Tier和Thin的问题,但Extent Pool里面任何一个RAID Array坏了,这个Pool的数据都没有了。这也容易理解IBM让SATA盘必须用RAID 6的原因了。
好了,希望今天以后,很多人都说,哦,我也清楚什么是RAID 1.5,什么是LUN虚拟化了,我就觉得特别有成就感。
希望大家积极反馈你的意见和建议,微信扫描如下二维码,关注微信公众号“高端存储知识”,与作者微信互动。