经常听到一种讲法,因为单个磁盘的速度是有限的,因此为了提升响应时间 ,一直有种 技技术 流派是说数据 打散到尽可能多的磁盘里面,这样得到更好的性能 。有很多产品一直沿着这个思路做。
 
1 一种思路是对于一些较为新兴的产品,对于每个lun 不再对于固定的磁盘,比如HP的eva,还有现在的3par和ibm 的XIV,这些 存储是纯粹的lun一层虚拟 分散
 
2 另外也有一些历史悠久的存储厂商,由于底层RAID上面已经有了千锤百炼的微码,因此在lun一层上面再做一些文章,比如 EMC 有个meta. lun技术,HDS在ldev一层上面推出了thin provision的HDP技术,其本质是把已经做好的lun再放到一个disk pool里面再做打散,其目的也是为了得到更加好的性能。但是请注意,对于EMC、HDS这样的顶级存储厂商来说,不是说所有的应用都 推荐 采用底层数据打散的RAID机制的,要看应用特点而定。
 
3 当然还有一些其他的方法,比如LVM层面做stripe,或者鼎鼎大名又非常贵的storage foundation,或者现在oracle新推出来的ASM,个人认为ASM已经越练越强大,估计以后用sotrage foundation的会越来越少,所以现在storage foundatin也便宜好多了(赛盟铁壳的兄弟不要扔我砖头哈)
 
从一个古老的故事讲起。说花果山有500只猴子要参加孙大圣晋升齐天大圣的大会,找了裁缝做了500件衣服,临走的时候发现少了500件衣服只有499件是完整的,有一件差了一个袖子,怎么办呢。大家都着急的时候,有一个聪明的猴子(权且叫猴子B吧)就说了,不急不急,让其他猴子的衣服借一个袖子给那个少袖子的猴子(权且叫猴子A吧),那猴子A就说你给我了袖子,那其他猴子的衣服怎么办了,聪明的猴子B说没有关系,我们有那么多衣服,可以那其他的衣服的袖子来补啊。大家觉得是个好主意,有那么多袖子可以补啊,怕什么呢。。。。可惜猴子高兴没有多久,最后发现不管怎么补...最后还是差了一个袖子....
 
罗罗嗦嗦讲了这个故事,想说明的是,其实在底层把数据打散是一个看上去很美的想法,往往却不一定有效果。为什么这么说呢,因为对于一个应用来说,它的数据分散到更多磁盘,性能是好了,但是这个磁盘往往分布了不止一个磁盘的数据,当有多个应用都要同一个磁盘的数据时时往往就会互相影响。因为毕竟磁盘数量是有限的,而且单个磁盘一个时隙是只能响应一个IO再寻道响应其他IO,而且对于sequencial IO来说,打得太散反而不利于sequential IO的预读操作(被其他应用的IO打扰了,去响应其他的IO需求去了)。就像猴子借袖子一样,如果你整个磁盘数量不足以满足应用需求,怎么打散怎么借,总是不够的。
 
当然如果有人说我可以把整个存储器只对应一个应用,不惜浪费空间,那是另外一个话题了,那传统的RAID也可以这样,每个磁盘只使用外圈最快的部分...性能也很好的。
 
结论:不要过于迷信所谓打得越散数据性能就一定很好。对于不同IO特点的数据块,最好是分开。而且不同的关键性的应用最好分在不同的存储池里面。对于同一一个应用,不同数据段比如sequential IO操作的和随机操作的段当然应该分开。混在一起只有互相影响的。当然在一个应用的同一类型的数据段,打散是有好处的。
 
另外而且从数据安全性来讲,万一发生了灾难性故障(假设你背到家了,比如多块磁盘同时坏了),完全虚拟化的存储器往往就是灭顶之灾(数据全丢了),而传统的RAID至少可以确定到底是哪些数据丢了。
 
这就像前阵子流行过一个公司叫PPG,号称全 网络 经营,除了创意和财务等核心部分外,其他所有部分(制造、原料)都外包,当时势头很猛,号称要冲击国内第一品牌雅戈尔几十年的基业,可惜后来问题不断,最后投资人都逃跑了。其实他的模式也是完全虚拟化打散化,完全的虚拟和打散往往就意味着无法控制,如果做大了,在质量控制等方面肯定无法做到和有专卖场、成衣厂的传统厂商比美。商业上如此,存储器设计上同样。在多业务 系统 数据集中环境下完全底层打散虚拟,都不知道数据到底在那一块磁盘去了是有危险的,至少我不推荐。
 
最后谈到一个古老的产品。谈到存储底层lun级别虚拟化,见过不少的厂商的产品,HP EVA、IBM XIV, 3PAR等等,但是其实这些理念个人认为理念上都不算最先进,最先进的反而是2000年初HP生产的一款存储设备叫auto raid,第一个版本是scsi的,后来改成光纤接口更名叫VA,包括VA7100/7400/7110/7410,本来还有更多的比如7600等还没有来得及发布,就随着HP收购compaq,采用原DEC的EVA系列后,把整个VA的产品线都停止了(很可惜哦)。
 
为什么说他的概念是我最为推荐的呢,VA的思路即使是现在看起来(请注意老HP十多年前就有了成熟的上市产品哦)都是相当超前的(比EVA/XIV/3PAR领先不知道多少),原因如下:
 
1 VA底层也是完全虚拟的(这一点现在的产品也是一样)
2 VA里面的数据有两种RAID方式,一种是VRAID 1+0,一种是VRAID 6,(请注意绝大多数VRAID厂商还没有能够推出成熟的VRAID 6的技术,即使有也是刚刚推出)
3 你的数据到底是存VRAID 1+0还是VRAID 6不是用户自己能够控制的,VA会自动根据读写的频率来把你的数据做自动摆放(这点好象没有产品这么做)
4 当年pool里面的空间使用率不到50%时,所有数据都是VRAID 1+0最高性能
5 这么多牛x的思路(还有更多不做叙述了)请注意HP公司在2000年左右就能做出成品,并且还做了几代,牛x把......要知道10年前我可是弄了好久才明白VA的伟大思路,当时给我的震撼那可是“相当的大”(模仿宋丹丹的口气),所以俺看现在所有的所谓虚拟化产品都觉得不过尔尔了
估计有看官要说了,这么牛x的产品为什么HP不继续坚持下去了,反而在收购compaq以后采用EVA呢(实话说EVA口碑、性能也都不见得特别的好),原因是..............................
 
原因就是尽管设计理念出色,但是性能却实在是不怎么地,应该说是实在是太差(这款产品反正已经停产多年了,HP的fans请不要扔砖头哈)。而且问题多多经常还是莫名其妙的问题,我还能回忆起经常有HP的技术人员很狼狈地在用户那边解释道歉,卖的时候讲得天花乱坠,哪能想到这么多问题呢...那么问题出在哪里呢...
 
有几个地方是VA的致命伤:
1 算法实在过于复杂,虚拟得一塌糊涂,搞得磁盘阵列在应用忙和不忙的时候磁盘灯都在乱闪(在不停地打散啊,特别是新加了磁盘后继续打散),我的乖乖
2 VA是一个双控制器的存储,就像现在的EVA/CX/DS4000的设计理念一样是双控制器,双控制而不像HDS USP/EMC Symmetrix那样是多处理器芯片,也就意味着控制器的处理能力是有限的,试想本身要响应主机IO就那么忙了,还要底层RAID保护那么多乱七八糟的活要干,不累才怪呢...
 
因此再次向有伟大设计理念的VA致敬,你辛苦了,确实该好好休息了,或者说永远地休息了...
 
借用股市一句话:底层RAID完全虚拟化有风险,使用请谨慎....