自动挡跑车:Easy Tier解放SSD
本文作者:admin
点击:
2011-04-26 00:00
前言:
扬长避短:好钢用在刀刃上
在过去的一年中,苹果公司的iPad和新一代MacBook Air相继推出,在消费类产品中掀起了新一波的SSD(Solid State Drive,固态驱动器,俗称“固态盘”)热潮。不同之处在于,在以iPad和iPad 2为代表的平板电脑市场,SSD已经成为事实上的标准存储配置;而在笔记本电脑市场,目前还只有MacBook Air这样的高端产品,才能做到标配SSD。
一种技术能够被某个市场接受到什么样的水平,很大程度上取决于其相对优势与客户需求的契合度。听起来有些拗口,正好以SSD为例来说明一下。
2008年,某知名企业存储厂商对SSD与HDD价格走势的预计,笔者当时就认为过于乐观了。现在回过头来看,不要说2010年年底SLC NAND SSD成本低于15K RPM HDD的“乐观估计”没有实现,2014年SSD成本追平硬盘驱动器的“保守估计”也很不保守
众所周知,与硬盘驱动器(HDD)相比,SSD的优势有很多,包括更好的性能、更短的响应时间、更低的能耗、绝佳的抗震性,提高的幅度从几倍到几个数量级不等,还有几乎不受尺寸限制,可以做到很小的外形,具有很好的灵活性;劣势主要是容量不足,价格偏高。
就平板电脑而言,上面提到的SSD的优势,都是非常必要的,劣势则处于可接受的范围——容量至少够用,而价格在整体成本中所占比例也不算大。比较之下,SSD对硬盘驱动器占尽上风,所以是……必须的!
2.5英寸笔记本电脑硬盘驱动器与SSD价格对比表(2011年4月,单位:美元)
表中所列驱动器接口均为SATA 3Gb/s
硬盘驱动器都是希捷官方网站零售价;
Intel SSD 320则是千块批发价(零售应该只高不低);
Intel X-25E来自Intel官网上列出的零售商最低价。
关键有两点需要注意:
在同一系列中,随着容量的提升,硬盘驱动器的单位成本呈明显下降趋势,SSD则变化不大。这是由两者结构的不同所决定的,此处不展开论述。要点是结论——容量越大,硬盘驱动器的成本优势就越明显。如果要获得最大的容量,SSD的价格是HDD的十倍以上;
由于仍采用过时的50nm工艺,X-25E的容量很小,报价也有一定的水分。但是从中可以看出,基于SLC NAND的SSD,成本又比基于MLC NAND的SSD高一个级别。
这些优势在笔记本电脑中也适用,但有半数左右不是很迫切的需求,譬如抗震性、小尺寸,至于省下的那点能耗,在动辄数十瓦的CPU面前,简直是浮云。劣势则被放大——百十GB不够用,数百GB价格又太高,而且用来保存不常访问还占用很大空间的视频等内容也不划算。因此,硬盘驱动器仍有很大的市场空间。
企业级SSD的道理与消费类SSD是相通的,说来说去,就四个字:扬长避短。
上溯起来,企业级存储领域开始接纳SSD的时间,并不比消费类产品晚。早在三年多以前,也就是2008年1月,已经有存储大厂宣布在高端存储系统中支持采用SLC NAND闪存的SSD。这么迫切是有道理的:在消费类应用中顺序访问所占比例较大,SSD在这方面的带宽性能,也就是硬盘驱动器的几倍而已;而在高端存储环境最看重的随机访问性能上,SSD的IOPS(I/O per second,每秒I/O数)是硬盘驱动器的30倍以上!
企业级SSD领先厂商STEC以其旗舰产品ZeusIOPS SSD与企业级硬盘驱动器(eHDD,10K/15K RPM,反正在SSD面前都差不多)进行的对比,左侧是IOPS性能, SSD在读取时78倍于eHDD,写入时不到10倍;右侧则显示在同样达到135K IOPS的情况下,SSD的能耗比eHDD低了近两个数量级。数据有一定夸大成分,仅供参考
并且,考虑到SSD的能耗通常是15K RPM硬盘驱动器的几分之一,达到同样的IOPS性能,全换成SSD,能耗可能只有硬盘驱动器的百分之一左右。这样大幅度的节省,对于会有成百上千个驱动器的存储系统来说,绝不是个小数目。
不过,IOPS性能可不是衡量存储系统的唯一指标,至少,还有容量需求也必须满足。虽然IBM是首个在中高端存储系统中采用STEC MLC企业级SSD的厂商,成本比SLC有所降低,但仍在15K RPM硬盘驱动器的10倍以上。与平板电脑、PC乃至服务器不同的是,由于数目众多,驱动器在存储系统成本中所占的比例可是相当的大,如果都换成SSD,是绝大多数企业所无法接受的。
好在,也正是因为多驱动器应用的特性,使得存储系统不会像平板电脑和大多数笔记本电脑那样,只能在SSD与硬盘驱动器之间选择一个。因此,SSD和硬盘驱动器可以共存,把需要高IOPS性能、访问频度高(往往也是高价值)的数据放在SSD上,而用硬盘驱动器存储更大量不经常访问的数据,各取所长。
看到这里,或许有人会说:这不就是分层存储吗?有什么新鲜的,前些年热炒ILM(Information Lifecycle Management,信息生命周期管理)时就知道的概念了。
这话只对了一半,因为ILM促进了分层存储概念的普及,却没能真正解决如何分层存储的问题。
分层存储:无子卷,不自动
ILM,或者更早的HSM(Hierarchical Storage Management,分级存储管理)的概念太过宽泛,我们还是从SSD和硬盘驱动器的角度来探讨存储系统的分层存储。
分层存储旨在通过SSD与硬盘驱动器的配合,兼顾性能和容量的需求。SSD负责IOPS,硬盘驱动器保证容量,常见的模型是与全15K RPM硬盘驱动器的方案相比,SSD + HDD的组合能够以更低的成本提供同样的IOPS,或者以同样的成本获得更高的IOPS,而容量维持不变。
这种模型由于在成本上加了限制,引入容量小且价格高的SSD之后,硬盘驱动器的数量必然减少,因此要换用10K RPM或更低转速的大容量硬盘驱动器。低转速的硬盘驱动器IOPS性能稍差,但是有至少数十倍于15K PRM硬盘驱动器的SSD压阵,这点儿损失很容易弥补回来。
以SSD与7200/5400 RPM NL-SAS/SATA硬盘驱动器的组合,替换纯15K RPM FC/SAS硬盘驱动器,在提供同样容量和IOPS的同时,获得成本与能耗的节省
当然理论归理论,实际应用中SSD与HDD的搭配肯定不受限制,SSD与15K RPM硬盘驱动器齐上阵的产品也不是没有。有些分层技术支持的存储层较多,SSD、15K RPM、10K RPM乃至7200RPM硬盘驱动器都有,性能与单位容量成本都逐级降低;如果只支持两个存储层,SSD与7200RPM(甚至5400RPM)硬盘驱动器则组合会比较好,前者包办IOPS性能,后者则把单位容量成本降至最低,而且都比15K RPM硬盘驱动器节能。
究竟分几层好,业内没有一个统一的说法,支持较多存储层的厂商当然说4层比2层好——至少没有谁说层数多了不好,为何?从管理的角度来说,层数越多,规划和迁移工作就越复杂:2层的时候很简单,需要高IOPS的放在SSD上,其他都放7200RPM硬盘驱动器上;4层的时候就要考虑,把性能要求次高的放在15K RPM硬盘驱动器上,随着访问频度的降低再转移到10K RPM硬盘驱动器上……如果都是人工规划和手动迁移的话,增加中间的存储层简直就是自找麻烦。
公认的存储层划分,SSD是新加入的第0层(数值越大层级越低)
不过这种情况并没有发生。原因很简单:采用被称为“自动分层存储”(Automated Tiered Storage,ATS)的技术,存储系统利用软件算法,自动将“热点”数据迁移到SSD上,而把不常访问的数据向较低的存储层移动。理论上来说,只要存储系统能处理过来,增加存储层并不会给用户的管理带来额外的开销。
相比之下,自动分层存储的粒度更需要关心。第一代自动分层存储技术是卷(Volume)级的,现在已普遍进化到第二代的子卷(Sub-Volume)级。CBSi企业解决方案中心认为,子卷级是实现真正意义上“自动”分层存储的必要前提。
所谓“自动化”,其宗旨应该是尽可能地减少对人的需要,降低管理员的工作量,否则便失去了应有的意义。也就是说,不仅要避免手动迁移,也要避免人工规划。最高度的自动化应当是把数据往存储池里一扔,存储系统便自动调整到最优化状态,尘归尘,土归土,不同类型和需求的数据各安其位。当然,如果能够给用户设置策略的权限,让他们能够按照自己的想法进行适度的干预,也是不错的附加值,但不应成为必须的步骤。
我们不妨拿汽车打个比方。同款车型,自动挡比手动挡价格要高一些,因为自动变速箱就相当于具备了一定的智能,可以选择认为合适的时机换挡(套用咱们的术语,叫“最佳实践”),解放了驾驶员的一只手。有些驾驶经验丰富的司机,用手动挡可以掌握比自动变速箱更好的换挡时机,可能会更省油,但要达到这个境界需要长期的积累,毕竟不是每个人都想当司机。
所以,手动挡主要在较为低端的车型配备(省去了自动变速箱,相当于省去了购买软件的License费用),而车型级别越高,自动挡比例越大。仍然迷恋手动挡的操控感受?没问题,高档变速箱可以“手自一体”,需要时切换到手动模式即可……
回到正题。卷级自动分层存储的问题在于,只有一个卷上写满数据且都被频繁访问(热点)的时候,才最有效率,而这几乎是不可能的。举例来说,某个卷上一半的空间有数据,发现其中的热点之后,把整个卷迁移到SSD上,性能是上去了,可就这个卷对应的存储空间而言,SSD的利用率至多为50%(另一半是空的,没有保存数据)。
当然,这个问题可以通过自动精简配置(Thin Provisioning)来解决——没有数据就不真正分配存储空间。不过,就以有数据的空间来说,也不是一个卷上所有的数据区域都是热点,譬如上百GB的数据库,可能只有几十GB的日志访问最为活跃,符合热点的标准,结果一下把整个卷都迁到SSD上了,结果仍然是浪费。
如果要避免把卷上的非热点区域一并迁移的浪费现象,就需要做细致的规划,把可能成为热点的数据分离出来,放到特定卷的上。这需要用户很熟悉应用,如果再考虑到热点数据的周期性……总之不能一劳永逸。如果一项技术,不仅需要前期规划,运作期间还得不断的调整,依赖人力若此,才能发挥所宣称的功效,那实在对不起“自动”二字。
子卷级自动分层存储以数据块为迁移单位,这是访问频率逐渐降低(变“冷”)的数据块从较高的存储层向较低的存储层迁移的示例——如果是较低存储层“热点”区域的数据块,迁移方向会相反
顾名思义,子卷级的自动分层存储技术,迁移的最小单元就不是整个卷,而是构成卷的次一级数据块,大小通常在几十MB到几个GB之间,它们的集合可以小于卷,即所谓“子卷”——现在卷的尺寸都以10GB为量级了。也就是说,子卷级自动分层存储只迁移热点数据所在的数据块,没有热点数据的数据块则不受影响。
理论上,从卷级到子卷级,更细的粒度避免了迁移非热点数据导致的存储资源浪费,用户完全可以把数据直接放在较低的存储层(硬盘驱动器构成)上,让子卷级自动分层存储功能搜集访问频度等信息,决定将哪些数据上移到SSD层(或者下移),无需人工规划和手动调整,实现真正的自动化。
实际情况如何呢?让我们通过IBM Storwize V7000中端存储系统这个具体的例子,来看看子卷级自动分层存储功能是怎么运作的吧。
Easy Tier:存储层与子卷
IBM Storwize V7000所采用的自动分层存储技术名叫Easy Tier,源自IBM高端的System Storage DS8700。两者的Easy Tier原理和算法应该是一样的,但具体的代码实现会因系统软件平台的不同而有所区别。
IBM在2009年10月推出DS8700时,宣布将提供Smart Data Placement(智能数据部署)技术,实现自动分层存储。以Smart开头很符合IBM的“智慧”理念,一度有消息称,IBM的自动分层存储技术将被命名为Smart Tier(智能分层)。
2011年4月中,IBM宣布(在新版本的系统软件中)为DS8700增加Easy Tier子卷级自动分层存储功能。或许,在IBM看来,实现同等功能的前提下,Easy大于Smart,因为智能不一定易用,而易用则一定有智能在里面,譬如苹果以i开头的一系列产品……
Easy Tier处理流程是全自动的,无需用户干预。大体分为以下几个步骤:
②:当某个应用频繁使用同一区域或卷上的数据块(Extent,本页下面有介绍),就在HDD层上生成了“热点”(③);
④:IOM(I/O Monitor,I/O监视器)捕捉访问特性并生成使用状态,发送给DPA(Data Placement Advisor,数据放置顾问);
⑤:DPA标识热点并输出潜在的数据迁移到DMP(Data Migration Planner,数据迁移计划员);
⑥:DMP执行分析后根据物理存储特性(不同的存储层)向DM(Data Migrator,数据迁移器)提交推荐的数据迁移计划;
⑦:DM基于数据迁移计划确认并安排数据迁移活动,使用SVC的存储虚拟化功能无缝地重定向数据到更高的存储层(如SSD层,⑧),而无需中断任何应用的运行(⑨)。
上一页我们提到,描述自动分层存储技术的维度主要有两个——层数和粒度。Easy Tier只支持两个存储层:SSD一层,硬盘驱动器一层。IBM的逻辑是,在IOPS超强的SSD面前,哪怕是15K RPM与7200RPM硬盘驱动器间的性能差距也可以忽略不计。因此,Easy Tier会自动将各种类型的硬盘驱动器都划为较低的那一层。
在2U机架的空间内,Storwize V7000的控制柜和扩展柜可容纳12个大容量3.5英寸驱动器,或24个高性能2.5英寸驱动器
在这种两个存储层的体系中,分工很明确:SSD管IOPS,硬盘驱动器管容量。所以,硬盘驱动器阵营里IOPS最好而容量经济性最差的15K RPM,自然没有存在的必要。
Storwize V7000支持两种规格的2U盘柜:24个2.5英寸驱动器的控制柜2076-124和扩展柜2076-224,12个3.5英寸驱动器的控制柜2076-112和扩展柜2076-212。前者以IOPS为主要诉求,因此除了SSD,还有容量与IOPS都适中的10K RPM硬盘驱动器;后者专注于容量,只提供7200RPM硬盘驱动器。每种盘柜里的硬盘驱动器转速都相同,好处是不用考虑不同转速硬盘驱动器间的旋转震动干扰。
Storwize V7000支持的驱动器类型
SSD不产生旋转震动,与10K RPM硬盘驱动器混合使用自然没问题;
3.5英寸15K RPM硬盘驱动器已停止发展,估计以后也不会再提供;
3.5英寸7200RPM硬盘驱动器主要存储较少访问的数据,即所谓的近线(Near-Line,NL)存储,同样采用SAS接口,称为NL SAS
Easy Tier的宗旨是高度的自动化,尽可能地减少人工干预。不过,由于它不支持存储系统内部不同转速硬盘驱动器之间的分层,当Storwize V7000同时接有2.5英寸和3.5英寸的盘柜时,还是要做适度的规划,尽量把2.5英寸10K RPM硬盘驱动器与7200RPM硬盘驱动器放在不同的存储池中。因为Easy Tier的效力仅限于存储池内部,不会跨越存储池进行分层操作。
在自动分层存储的粒度方面,Storwize V7000沿用了SVC的Extent(扩展数据块)体系。每个卷由最多131072(即128K,K=1024)个Extent组成,这个Extent就是分层迁移的最小单元——显然,一定数量的Extent可以构成规模小于卷的的数据块集,即我们所说的“子卷”。Extent的尺寸范围在16MB至8GB之间,在管理员创建存储池时选定,之后不能更改。
Storwize V7000最大卷容量和集群最大存储容量与Extent尺寸的关系
Extent的尺寸决定了卷和集群的最大容量。从上表中可以看出,当Extent设定为最大值8GB时,Storwize V7000的卷容量可达1PB,集群(可管理4百万——4×1024×1024个Extent)更高达32PB。IBM认为,很多集群的容量有1PB就够了,因此建议Extent尺寸设为256MB,此时卷的最大容量为32TB。事实上,在Storwize V7000的GUI(图形管理界面)中,创建存储池时默认的Extent尺寸即为256MB。
Storwize V7000:SSD与RAID
Storwize V7000是业内首批采用STEC MLC固态盘的存储系统之一,与基于SLC NAND闪存的SSD相比,据称成本减少了25%~30%。尽管如此,STEC毕竟是企业级SSD(驱动器形式)中的顶级品牌,同样是2.5英寸300GB,Storwize V7000的企业级MLC(E-MLC)SSD价格大约15倍于10K RPM硬盘驱动器。
Storwize V7000的SSD与HDD,均为2.5英寸300GB,6Gb/s SAS接口,左边的STEC MLC SSD价格约9万多元,右边的希捷10K RPM硬盘驱动器(Savvio 10K.3)约6千多元。SSD只有300GB一个容量点,2.5英寸10RPM HDD还有450GB和600GB的Savvio 10K.4,价差应该会有缩小
近水楼台先得月,在Storwize V7000的发源地,ZDNet英国对一台配置了24个300GB驱动器的Storwize V7000(控制柜2076-124)进行了初步的体验,包括22个2.5英寸10K RPM硬盘驱动器和2个SSD。大约同期,ZDNet中国旗下的CBSi企业解决方案中心也在北京测试了一台配置了半数驱动器的2076-124,其中有10个300GB 10K RPM硬盘驱动器,以及2个300GB SSD。
Storwize V7000使用的STEC SSD,其型号Z16IZF2D-300UCH-IBM含义:虽然采用MLC NAND闪存,仍属于STEC高端ZeusIOPS家族中的一员,16通道(作为对比,Intel基于SLC NAND闪存的X-25E为10通道)保证高性能,6Gb/s SAS接口,2.5英寸,第三代,300GB容量,专为IBM提供
两个测试方案配置中,硬盘驱动器与SSD之比分别为11:1和5:1,也就是说,SSD提供的容量不到10%和20%。看似偶然的搭配,却有值得分析之处。
CBSi企业解决方案中心测试的IBM Storwize V7000中端存储系统,左半边配置了12个300GB的2.5英寸驱动器,10个10K RPM硬盘驱动器,2个SSD
Storwize V7000支持RAID 0, 1, 5, 6, 10,都是常见的RAID级别。除了最为简单的0和1,RAID 5, 6, 10都是高端的System Storage DS8000系列支持的RAID级别,与Storwize V7000的RAID代码来自DS8000的渊源相符。
在Web管理界面查看系统状态,可以直观地看到安装了一半的驱动器及准确位置。右边的2个是300GB的SSD,下方红色方框中是光标停留在左侧的10个300GB 10K RPM硬盘驱动器之一时显示的信息,作为对比
不过,Storwize V7000主要还是SVC的血脉。作为一款纯粹的存储虚拟化设备,SVC没有内部存储,也就不存在RAID的概念。SVC管理的是来自外部存储阵列的逻辑卷,称之为managed disk(受管理的磁盘),即MDisk。Storwize V7000内部的SAS驱动器组成的RAID组,从管理的角度来说是一样的,也属于MDisk。
Storwize V7000支持的主要RAID类型
由于不支持可以创建较大RAID组的RAID 50和60,V7000内部驱动器构成的MDisk最多可以有12个驱动器和1个热备盘(Hot Spare),级别是RAID 6,而RAID 0, 5, 10最多是8个驱动器(热备盘另算)。除了上述RAID级别,还有一个“SSD Easy Tier”的设置,其实就是2个SSD组成RAID 1(所谓RAID 10),再加1个SSD作为热备。
Storwize V7000的向导式对话框,根据预设类型配置RAID,只需两步和几次点击即可完成。SSD Easy Tier需要2个SSD组成RAID 10(其实就是RAID 1),这个最小要求必须得到满足,选“优化性能”还是“优化容量”结果是一样的。如果能再提供1个SSD,可以配置为热备件
SSD Easy Tier一共占用3个SSD,可用的存储容量相当于1个SSD,如果和8个硬盘驱动器的RAID 5共同构成存储池,表面看来SDD与HDD之比为1:3(3:9),但RAID 5可用的存储容量相当于7个HDD,所以SSD和HDD的可用存储容量之比为1:7(都是300GB)或1:14(使用600GB硬盘驱动器)……考虑到存储池中可能有不止一个HDD的MDisk,SSD贡献的存储容量不足10%是很有可能的,这多少也体现出Easy Tier“SSD贵精不贵多”的思路。
10个驱动器要配置成“基本RAID-5”(Basic RAID-5),1个作为热备件(Hot Spare),另外9个在“优化性能”的模式下,只能用上8个,剩余1个;如果改用“优化容量”的模式,则配置为两个MDisk——分别由4个和5个驱动器组成的RAID 5
从安全性的角度来讲,一个RAID组中的驱动器过多,其中发生单驱动器故障、导致性能降级(甚至数据丢失)的可能性也就随之增大,因此Storwize V7000在“优化性能”的模式下限制RAID 0, 5, 10的驱动器数量不能超过8个(RAID 6能承受双驱动器失效,所以上限放宽到12个)是有道理的。那么,如果要一次性将超过8个或12个驱动器设置为RAID呢?V7000还提供了“优化容量”的模式,把它们尽可能平均地分配给多个MDisk,每个MDisk包括的驱动器数量都不超过对应RAID类型的上限。
MDisk加入存储池时,分割成被称为Extent的数据块(默认大小256MB);在此存储池中创建的卷(Volume)默认跨所有MDisk分配空间,单位就是Extent,可以发挥存储池中(同一存储层上)所有可用驱动器的性能。所以,即使因驱动器数量较多而按照“优化容量”的模式分割成多个MDisk,卷的性能也不致有明显的损失
Storwize V7000每个系统可以创建128个存储池,每个存储池可以容纳128个MDisk。
摸底测验:SSD确非万金油
在检验Easy Tier的成效之前,我们首先对Storwize V7000环境中SSD和硬盘驱动器的性能进行了一个摸底测试,既可以作为之后参考的标尺,也能帮助大家认识何种类型的应用能够从自动分层存储中获益。
测试使用的IBM刀片配置2个英特尔至强X5355四核处理器,4GB内存,Windows Server 2003 SP2,稍显过时,但足以配合12个驱动器的的Storwize V7000
在测试软件上,我们选择了两种较为常用的评估工具:IOmeter 2006.07.27和Orion 10.2。Orion是Oracle I/O Numbers的简写,模拟Oracle数据库的I/O操作,可以评估存储系统运行数据库应用的性能,作为IOmeter的补充。
8个硬盘驱动器构成的存储池(SASR5-7D1P),和2个SSD构成的存储池(SSD),两个默认的图标很形象,但也可以更换。因为都是单存储层,所以两个存储池的Easy Tier功能处于不活动状态
我们首先建立两个单层的存储池,分别包含一个由硬盘驱动器组成的MDisk,和一个由SSD组成的MDisk。前者是8个300GB 10K RPM硬盘驱动器构成的RAID 5(“优化性能”模式的最大值,外加1个热备盘),可用存储空间约1.9TB;后者是2个300GB SSD构成的RAID 10,相当于SSD Easy Tier,只是没有热备盘,可用存储空间约280GB。两个存储池的可用空间之比约为6:1,我们各划出一个200GB的卷,运行IOmeter和Orion测试。
小数据块随机读,2个SSD的IOPS,约20倍于8个10K RPM HDD
IOmeter随机读:2个SSD的RAID 1(IBM称为RAID 10,应该是指其在读操作时从两个驱动器中获取数据,从而得到两倍于单驱动器的性能),性能大约是8个10K RPM硬盘驱动器的20倍(最低也有17倍)。换算过来,单个SSD的性能是10K RPM硬盘驱动器的80倍。
在数据块较小时,2个SSD的顺序读性能与8个10K RPM HDD基本相当,128KB以上后者逐渐胜出,并在2MB时有一个大幅度的跃升;因为RAID 5的缘故,8个10K RPM HDD的顺序写性能较低,同样在2MB时大幅跃升,估计是Storwize V7000的RAID代码的特性
IOmeter顺序读:大多数情况下,这2个SSD的顺序读性能与8个10K RPM HDD相当,较大数据块时,后者能达到前者的2倍左右。换算过来,单个SSD的顺序读性能是10K RPM HDD的2至4倍,与随机读相比,优势很不明显。考虑到带宽密集型应用往往也需要很大的容量,以及SSD高昂的价格,硬盘驱动器是更为合适的选择。
由于Storwize V7000控制器的写策略和项目时间等因素,我们没有考察SSD的写性能,但能感觉到比读性能有不小的降低。SSD在写性能上的衰减也是很多人关心的话题,不过本文的主题不是与硬盘驱动器比较,所以不再展开。无论如何,SSD在IOPS性能上的优势已是公认的事实,不然也就没有必要讨论自动分层存储了。
SSD与硬盘驱动器的Orion性能对比
Orion:在代表数据库性能的Orion测试中,2个SSD在IOPS性能上的优势没有IOmeter里那么夸张,“只有”8个10K RPM硬盘驱动器的10倍出头,换算成单挑的理想状况,大约是46倍。带宽性能(MBps)的优势倒是比IOmeter时大,达到2.5倍;延迟则只有十分之一,证明SSD的响应时间很短,反应非常迅速。
小结:SSD的性能优势主要体现在需要很高IOPS的小数据块随机访问,符合条件的典型应用如数据库,甚至Orion的输出MBps亦有明显提升。不过数据库日常操作的MBps更多还是来自随机访问和突发传输,总体数据量不会很大。那些需要大数据量传输的高清视频等应用,一则重复使用某些数据的几率不高(难有热点),二则数据量非常大,不符合自动分层存储的精神。正如本文开篇所言,那些以频繁访问较少量数据为特征的应用,才是自动分层存储技术大展身手的理想场合。
待机而发:Easy缘于全自动
如果用Easy Tier实现分层存储真的很简单,关键在哪里?是高度的自动化,几乎不需要用户干预,如果不是某些应用的性能突然提升,很难感知到它的存在。
Easy Tier不仅是不需要用户干预,事实上用户也很少有机会干预。因为Easy Tier基本没有用户可控的选项,而是在每个存储池(Storage Pool)内部,自动地运作。当存储池内只有一个存储层(可以是一或多个MDisk,包括来自外部存储阵列的逻辑卷)时,不管是SSD层,还是HDD层(Easy Tier只支持这两个存储层),Easy Tier都处于不活动状态——没有活动的理由。
只有一种情况,用户需要面对与Easy Tier有关的选项,即告诉Easy Tier加入存储池的来自外部存储阵列的MDisk属于哪个层,因为Storwize V7000通过存储虚拟化功能只能看到逻辑卷,无法知道其底层的硬件构成——如果是个外部的固态盘阵列呢?
当另一个存储层加入进来,Easy Tier便转为活动状态,为在层间迁移数据搜集信息并加以分析。如果新加入的MDisk由SSD组成,Easy Tier会在监测一段时间后,把热点数据从已有HDD组成的MDisk(们)上迁移过去;反之,则逐渐把SSD组成的MDisk上较少访问的数据,向HDD组成的MDisk迁移。
向只有硬盘驱动器的存储池中加入SSD组成的MDisk(红色方框中),在扩展存储池容量的同时,也开启了Easy Tier的功能
Easy Tier转入活动状态多久之后,就可以在层间迁移数据了呢?按照IBM的说法,这段时间太短了不行,过于频繁的迁移反而影响性能;太长了又不能对“热点”的变化作出及时的响应,所以设定为24小时。这个时间用户不能更改,但不意味着不可调节——IBM工程师们能够利用内部版本的固件,只经过1小时的数据采集分析便开始迁移,以免向用户演示功能的时候等待太长时间。
加入SSD(mdisk1)变为两个存储层之后,存储池的Easy Tier转为活动状态。存储池的名称和图标可以手动修改,不过信息栏中没有列出构成mdisk的驱动器类型,显得不够直观
不过,我们在测试中发现了一个有趣的事情:在建立了含有1.9TB HDD层(8个300GB 10K RPM做RAID 5)和约300GB SSD层(2个300GB做RAID 1)的存储池,随即对上面的特定区域不间断访问(制造热点)之后,不到23小时,这些区域所对应的数据块(Extent)就开始从HDD层向SSD层迁移了!
在有两个存储层的情况下,新创建的卷会先由较低的HDD层分配存储空间,其后由Easy Tier视访问频度决定把哪些数据块迁移到较高的SSD层上
具体些说,这个2.2TB的(HDD和SSD)混合存储池建成之后,我们在上面创建了两个卷,100GB的运行IOmeter,检验子卷级自动分层存储;110GB的运行Orion,观察整卷迁移的状况,作为辅助。
用IOmeter在100GB的卷上创建一个50GB的文件,检验Easy Tier的子卷级自动分层存储功能
原本IOmeter与Orion一样,通常是在一个卷的范围内进行访问操作,这样的话整个卷都可能会是热点区域,不适合用来测试子卷级自动分层存储功能。不过,在已经建立文件系统的卷上,IOmeter会先创建一个名为iobw.tst的文件,然后在这个文件里面模拟卷访问操作。如此一来,热点区域就被限制在这个文件的范围内,Easy Tier应该只迁移所对应的数据块,而卷上其他区域的数据块不受影响,从而证明其子卷级自动分层存储能力。
存储池中的Extent(扩展数据块)们正在从HDD层(mdisk0)向SSD层(mdisk1)迁移
两个卷上的测试同时进行,持续约18小时的随机访问,然后停止第二个卷上的Orion测试,此时两个卷还都在HDD层的mdisk0上。因为要等到24小时,我们在第一个卷上零星运行IOmeter,但是存储池建成还不到23小时,IOmeter的测试成绩突然大幅度提升!立即查看卷的详细信息,发现已经有一些Extent迁移到SSD层的mdisk1上了。
iobw.tst文件所对应的Extent迁移完成,可见卷只有一部分迁移到了SSD层,其余非热点区域仍保存在HDD层,成功验证“子卷级自动分层存储”
正如之前根据子卷级自动分层存储的定义所推断的,100GB的卷只有保存iobw.tst文件内容的数据块被迁移到SSD层上。数据块(即Extent)的粒度为256MB,所以这个“子卷”的总容量会比iobw.tst文件略大,约为51GB。
“子卷”迁移完成,HDD层(mdisk0)上保留的与迁移到SSD层(mdisk1)上的Extent(扩展数据块)数统计
小结:由于数据块的颗粒度限制,子卷级自动分层存储所迁移的数据多少会超出实际需要,但总比迁移整个卷要好得多。以我们这个例子来说,多迁移的数据不会超过256MB(默认的Extent尺寸),而若是卷级自动分层存储,多迁移的数据将超过48GB,相差近200倍。而在实际应用中,子卷级多迁移的数据可以更多或更少(譬如粒度更大或更小,Storwize V7000的Extent尺寸就有一个变动范围),卷级多迁移的数据与实际需要之间的比例则很有可能更大(本例约为1:1)。
iobw.tst文件所对应的Extent迁移完成,可见卷只有一部分迁移到了SSD层,其余非热点区域仍保存在HDD层,成功验证“子卷级自动分层存储”
正如之前根据子卷级自动分层存储的定义所推断的,100GB的卷只有保存iobw.tst文件内容的数据块被迁移到SSD层上。数据块(即Extent)的粒度为256MB,所以这个“子卷”的总容量会比iobw.tst文件略大,约为51GB。
小结:由于数据块的颗粒度限制,子卷级自动分层存储所迁移的数据多少会超出实际需要,但总比迁移整个卷要好得多。以我们这个例子来说,多迁移的数据不会超过256MB,而若是卷级自动分层存储,多迁移的数据将超过48GB,相差近200倍。而在实际应用中,子卷级多迁移的数据可以更多或更少(譬如粒度更大或更小),卷级多迁移的数据与实际需要之间的比例则很有可能更大(本例约为1:1)
简化管理:子卷与整卷随意分层
第一个卷(100GB)上因IOmeter测试而成为热点区域的约50GB“子卷”迁移完之后,Easy Tier继续从HDD层迁移相邻的卷。由于运行Orion的缘故,这个110GB的卷上热点遍布,整体都被迁移到SSD层。
运行Orion的110GB卷开始从HDD层向SSD层迁移
随着时间的推移,从HDD层(mdisk0)迁移到SSD层(mdisk1)的扩展数据块(Extent)越来越多
这个110GB的卷在迁移时并没有应用在运行,大约每分钟能迁移4GB左右的数据(16个256MB的Extent)。之前约50GB的“子卷”迁移时大概也是这个速度,虽然上面还在运行IOmeter,但似乎还不足以构成影响。
整个卷的110GB都已迁移到SSD层
迁移完毕,构成卷的扩展数据块(Extent)全部转移到了SSD层(mdisk1)
在层间迁移前后,我们也进行了IOmeter和Orion的对比测试。
IOmeter随机读:与之前在200GB的卷上进行的“摸底测试”相比,这一次是在50GB左右的iobw.tst文件上运行IOmeter。从硬盘驱动器的角度来讲,这50GB的空间缩小了访问的范围,也更靠近盘片的外圈,相当于“短击”(short-stroke)的效果,因此在Easy Tier动手迁移之前(仍在HDD层),随机读IOPS比原先200GB硬盘驱动器MDisk上时高出约10%。好在Easy Tier把这50GB迁移到SSD层之后,IOPS也比原来有同等幅度的提升……所以迁移后(SSD)与迁移前(HDD)的性能之比仍然在20倍左右,验证了子卷级自动分层存储的效果。
50GB的“子卷”迁移到SSD层之后,性能提升幅度与第5页SSD与HDD对照测试的比值基本相符
IOmeter顺序读:以顺序读写为主的应用不是自动分层存储技术优化的对象,我们依然进行了相应的测试,主要还是作为迁移成功的辅助判别依据。同样是在iobw.tst文件(而非真正的卷)上测试的缘故,迁移前后的性能都比原来在HDD和SSD上的对应测试略高,但是同样条件下的相对比值基本保持不变。
Easy Tier迁移之后(SSD层)与Easy Tier迁移之前(HDD层)的相对值,和第5页的同一测试表现一致
Orion:由于前几段提到的“短击”因素,Easy Tier迁移前(HDD层)的IOPS比200GB HDD MDisk时高出约10%(相应地,延迟有较明显缩短),不过迁移后(SSD层)也有小幅提升,所以两者之比(SSD vs. HDD)仍维持在11倍左右;MBps方面,迁移后亦比200GB SSD MDisk时高出约10%,迁移前则有所下降,所以两者之比拉大到3倍。显然,卷级自动分层存储的效果同样得到了验证。
卷从HDD层迁移到SSD层之后,Orion性能提升同样显著
总结:卷的概念大于子卷,能在子卷级实现自动分层存储,当然也可以对整卷进行自动分层操作。在具有多个存储层的存储池,新建的卷会先从分配给较低的存储层(如HDD层)分配存储空间,如果访问频度达到了“热点”的标准,自动分层存储软件会将相应的数据块迁移到较高的存储层(如SSD层)上来,以改善IOPS性能和响应时间(降低延迟)。反之亦然,在访问频度降下来(变“冷”)以后,自动分层存储软件也会将相应的数据块迁移到较低的存储层上,节约宝贵的SSD资源。
在设计合理的子卷级自动分层存储软件的帮助下,管理员只需要给应用分配所需的存储空间,而不用考虑它们对存储介质的性能要求,大幅度减少人工规划和手动调整的工作量,从而达到简化管理的目标——如同那自动挡的豪华跑车,驾驶员把握好方向即可,升档还是降档无须操心,要享受急速狂飙的乐趣时,狠狠踩下油门就好了……