【IT168 评测】本篇评测编译自InfoWorld网站:一直以来,闪存存储的超高性能都与其高昂的售价成正比。但是,随着戴尔采用分层存储的Compellent闪存阵列的出现,这一规律或将面临打破之时。戴尔推出的Compellent存储中心6.4内置了超高存储密度的3.5英寸SAS,以及对阵列管理和主机集成软件的更新。值得注意的是,全新6.4版本还支持写操作优化SLC(单层单元)固态硬盘和读操作优化MLC(多层单元)固态硬盘之间的闪存自动分层技术。
在此前的版本中,Compellent存储系统就已经能实现昂贵的低容量SLC固态硬盘与普通硬盘之间的自动化分层。如今,随着SLC和MLC这两种主流固态硬盘技术的融合,戴尔“以硬盘的价格提供全闪存解决方案”的愿景终得以成为现实。从融合前后的价格比较来看,之前可用于购买72个146GB 15,000转/分钟的SAS硬盘(总价约为19.7万美元)的预算,现在已经可以购买一个具有六个400GB写操作优化的SLC固态硬盘和六个1.6TB读操作优化的MLC固态硬盘(约为18.2万美元)的存储阵列。
另外,与传统基于硬盘的同类产品相比,纯固态硬盘配置的运行性能提高了三倍(使用TPC-C测试基准得到的测试数据)、减少了85%的延迟、提升了15%的容量,降低了50%的能耗,同时也减少了对机架空间的要求。换而言之,如果用户能够很好的平衡性能需求和容量需求之间的关系,从而高效地使用它,那么这一创新产品有可能为其节省大笔预算,并提供更高的性能表现。
戴尔新一代分层存储技术固然很吸引人眼球,不过,如想真正了解这一新技术以及它对业界的潜在影响,需要我们对固态硬盘具有较深的认识,那么下面就让我们先一起了解一下固态硬盘的相关基础知识。
固态硬盘知识速成宝典
固态硬盘并不是使用传统的机械式旋转盘片通过磁介质来存储数据,而是使用固体闪存来实现存储数据的目标的。虽然闪存存储器被广泛地应用于各种设备,从iPod到USB记忆棒,但是在企业级存储设备中所使用的闪存存储器通常是单级单元固态硬盘或多级单元固态硬盘。这两者之间的差异主要存在于性能、容量以及成本等方面。
一般而言,固态硬盘存储设备有两个瓶颈问题。第一个就是我们通常所说的“写操作次数”,即固态硬盘内的每个单元在不能准确存储数据之前所能承受的所谓编程-擦写循环的具体次数。写操作次数这个参数通常体现在“每天设备写操作”上——这是一个向用户介绍设备完整生命周期概念的一个指标。
固态存储设备的第二个瓶颈就是一种被称为“write cliff”的现象,它是指每个单元在可以被写入前必须经过一个(相对)耗时的擦除过程。如果擦除未分配单元的后台进程无法满足设备所期望的写操作负载,那么该设备将使用完预先擦除的单元,从而导致写操作性能的骤降。
为了应对这两个难题,两种固态硬盘(SLC和MLC)通常都会配备比他们广告宣传更多的原始容量。这就使得设备将在大量存储单元上执行写操作,从而提高了整个设备的耐用性,同时应确保存储设备中有较多的空单元以便于更高效地执行写操作工作负载。这种松弛的容量和内置在固态硬盘控制器中执行管理功能的智能程序就是消费型固态硬盘和企业级存储设备中所使用的固态硬盘的区别所在。(当你在这两个市场进行采购时,他们还会向你解释这种容量上的区别。)
此外,SLC和MLC设备存在根本性区别,即SLC设备每个单元只存储一位数据,而MLC设备在每个单元中会存储两位或更多位的数据。这就意味着,SLC比MLC在每个单位上使用了更少的晶体管,但更多的晶体管中存储了相同数量的数据。因此,SLC能够承受更大的写操作工作负载(通常每天25至30次完整的写操作,而MLC每天只有三次),同时它的写操作速度也要快上三至五倍,它的体积也会更小,同样它的成本也要比MLC更昂贵。但是,SLC和MLC固态硬盘在读操作的性能表现上是几乎一致的(也许MLC要慢上2-3个百分点),这也是要了解戴尔公司闪存分层方法的关键。
DP分层软件:Compellent的秘密武器
早在2011年被戴尔收购之前,Compellent系统公司就已因Data Progression (DP)分层软件而名声在外。DP的主要工作内容就是通过把数据移至速度更慢成本更经济的存储层而留出速度更快成本更昂贵的存储层资源。
▲戴尔Compellent 存储中心6.4评测结果
举例来说,如果Compellent存储阵列是由快速且昂贵的15000转/分钟 SAS硬盘的顶层和容量更大、速度更慢以及成本更低的7200转/分钟 NL-SAS硬盘的底层所构成。除非用户特意进行设置,否则存储阵列都会自动将输入的数据分割成页,并在顶层把这些数据写入硬盘。这是因为Compelent存储阵列在页面级使用了RAID,所以你的存储阵列能够根据每页数据的具体情况选择使用哪一级的RAID。由于以RAID 10进行写操作的速度要比使用RAID5或RAID6更快(假设只需执行两个写操作,且无需计算奇偶校验位),所以它会使用RAID 10。
但是,顶层硬盘的容量一般都是有限的,而且其存储成本也是相当昂贵的。除非有一个很好的理由,否则存储阵列是不会希望让存储设备长时间空置不用的。这也就是Data Progression的用武之地。在每天的某些时刻(如晚上七点是默认值),DP将在存储阵列中作为后台进程运行,把数据移至不同的层并根据数据被使用的频繁程度以及你所采取的存储策略修改RAID等级。DP甚至会区分速度更快的外层NL-SAS硬盘和速度更慢的内轨道,而在一个层内创建一种内部层级(戴尔把这种授权功能称为FastTrack)。
如果你所写的数据块已被写入过一次而没有再次读取,那么DP就可把数据移至底层存储并使用RAID5。如果数据块是被频繁地读取,那么就可把它放在速度更快的顶层存储中,但还是使用RAID5,因为从读操作的角度来看,其速度与RAID 10相当,而且占用的空间要小的多。在两种情况下,这些变化都是由一个阵列不在高峰需求时由你事先配置运行的低优先级进程来实现的。
总而言之,DP的工作就是根据数据所需的存储层性能表现来为你提供顶层硬盘的读写性能,同时允许你针对不常使用的数据充分利用较低层硬盘的经济性。在存储阵列容量规模合适的情况下,DP将能够非常胜任这项工作。
▲Compellent企业级管理器保留着你所使用的两个闪存层的标签——写操作密集型的SLC固态硬盘和读操作密集型的MLC固态硬盘。
快照机制: 让SLC与MLC闪存各司其职
在两层固态硬盘之间进行分层的时候,让DP完成任务并不是一件很容易的事。尽管DP在传统硬盘配置中每天只运行一次,而在多层闪存存储配置中它会持续运行。在闪存存储分层应用的情况下,DP也极大地与存储阵列的快照机制相关。
如同众多完全虚拟化的存储阵列一样,Compellent存储阵列将在页面级执行快照功能(即Compellent中的“replays”)。当你在向存储卷写入数据时,该数据会被分割成不同页面并被写入硬盘。如果你创建了一个快照,那么那些页面以及在它们之前写好的任何页面都会作为那个快照的一部分而被标记在数据库中,但是除此之外就没有执行什么实质性的操作了,即没有数据被立即移至任何地方。之后,如果需要将新数据写入存储设备,那么将被写入的数据就会被分割并被分别写入硬盘的不同页面;原始页面仍然存在,而且如果需要快照的话,原始页面已做好准备被引用。一旦快照被删除,那么包含快照的页面资源就会被其他数据覆盖而释放出来。
在传统旋转硬盘配置中,DP对待作为快照一部分的页面的方式不同于它对待动态数据的方式。因为它知道快照数据在被活动卷标中的新数据取代之前也不太可能被读取,所以它通常会在它的下一次晚7点运行时把这些页面移至更经济的存储层。
但是在分层闪存配置中,DP是不会等到晚上7点来确定是否执行分层操作。与之相反,一旦创建了快照,DP就会把快照数据从昂贵的、针对写操作进行过优化的SLC固态硬盘中移出,并将其写入成本低廉、针对读操作进行过优化的MLC固态硬盘中。
这一过程的目的有三:
1. 始终如一地为主机提供SLC固态硬盘的写操作性能。
2. 将MLC固态硬盘与执行写操作的SLC固态硬盘进行屏蔽。
3. 充分利用MLC固态硬盘所提供更大容量的优势,以便于让用户能够在成本上负担得起整个系统。
因此,戴尔公司的闪存分层方法成功地利用了SLC和MLC设备的各自优势,同时也避免了“混合使用SLC”(SLC具有较少的损耗均衡能力)和“eMLC”(MLC配备附加的损耗均衡能力)单层部署所带来的妥协。换而言之,它更像是一个分层式的15K SAS/7.2K NL-SAS 旋转式硬盘阵列与一个单层式10 SAS 旋转式硬盘阵列的区别,前者能够为你同时提供两种存储介质的优点,而后者只能为你提供某些中庸之物。
凡事终有缺憾
凡事必有缺憾,这句话放在任一IT产品的评测上也同样成立。在评测过程中,当创建对分层式闪存模式至关重要的快照时,Compellent 6.4出现了一些问题。如果数据是在快照创建时从写操作优化的SLC层被移至读操作优化MLC层的,那么这么做的成本是显而易见的。随着数据从SLC层被读出并被写入MLC层,SLC层所承担的负载是增加的,这样的做法除了对SLC层的性能造成不利影响并让主机I/O迫使这些固态硬盘一直处于运行极限之外就没有其他作用了。更糟糕的是,在执行数据迁移操作过程中,从一层迁移至下一层的页面将不得不被锁定,从而造成超高I/O情况下的资源竞争使数据在MLC层写操作任务中比在SLC层读操作多花三到五倍的时间。
为了测试这方面的影响,我在实验室中创建了一个最坏情况的应用场景。我建立了一系列的存储卷,并在其中开始执行一个负载非常高的读写操作任务。在我的这个应用中,这是一个随机的4K I/O流,其中读写操作比为7:3(这是非常粗略地近似于一个OLTP工作负载的)。这个工作负载被分离到存储阵列中的一个相当小的区域中(总共约80GB)。
首先,入门级的“6+6”(SLC+MLC)配置能够在SLC层中完全地处理这个工作负载,并确保以5毫秒的延迟达到七万次IOPS以上的处理能力——真正令人印象深刻的是,相同价位的旋转硬盘存储阵列将很难达到上述IOPS指标的三分之一,更不要说其延迟要增至前者的三倍了。但是,当我创建了一个同时影响我运行测试任务的所有存储卷的快照时,糟糕的情况却急转直下。I/O流来了个急刹车——运行速度立即下降至3,500 IOPS,并在几分钟的时间内才缓慢爬升回到之前的速度。
任何存储系统管理员看到这一情形,他们都会明白在生产应用场景中这将是如何严重的一种状况。由于创建了快照而造成你的存储设备吞吐速度突然降至95%以下,同时你的存储系统需要花数分钟之久才能恢复之前的I/O速度,可见这是多么糟糕的了(可以想见这个时候技术支持部门的每台服务电话都会响起)。但是,经验丰富的存储管理员也都知道,在绝大多数的现实世界应用场景中,这一状况是几乎绝不可能发生的。
这一领域的生产负载一般都是在秒数量级内的突发状况。也就是说,如果你要以10毫秒米或20毫米秒的分辨率绘制出在一个典型企业的主存储阵列的一个占空比曲线图,那么你就会发现曲线是波动的。这个存储阵列还是相当繁忙的,但是它还是存在有很多没有执行交易操作的闲置空间。这是因为,Compellent的DP软件已经按需完成了这部分的工作任务,同时它可以正常运行而又不对主机I/O造成任何程度的严重影响。
但是,在评测实验室的测试中,这个存储阵列被迫达到了其运行性能的极限——高效地创建了一个100%的占空比。这就根本没有为DP完成其工作留下任何的空间,同时也在主机写操作和SLC至MLC耗时的数据迁移之间引起了资源竞争,从而降低了整体系统的性能。
实际上,如果你有一个要求SLC闪存存储全天候完整性能的繁重写操作工作负载,那么你可能根本就不希望使用Compellent的DP软件。相反,你会部署足够的SLC容量以便于容纳所有你希望找到的数据,并配置存储策略以防止DP软件把数据从SCL闪存中移出。这就巧妙地回避了这整个问题,同时仍然使同一存储阵列上的存储卷免于遭受高负荷任务的冲击以便于充分利用SLC/MLC分层技术所带来的经济性优势。
如果你的工作负载典型地只在一天中的某个特定时间内更具任务突发性或高工作负载(如大型企业的工作负载),那么你可能永远不会注意到快照迁移所造成的影响。或者说,如果你感到受到了影响,那么你就可能会通过安排快照,让迁移任务的执行不要过于频繁,来避免这种影响。
当然,分层式闪存存储并不是Compellent存储中心6.4版本的全部。在戴尔的定位中,Compellent产品系列是一个拥有多功能、具有成本意识的中端存储产品系列。
根据戴尔R720业界标准服务器,双主动-主动 SC8000 控制器配备了4Gbps、8Gbps以及16Gbpsd光纤通道;1Gbps和10Gbps的以太网iSCSI;以及10Gbps的FCoE主机连接,以及多达10个的冗余后端6Gbps SAS链的硬盘机架连接性。硬盘机架有三种形状和尺寸,24插槽的2.5英寸 SC220, 12插槽的3.5英寸 SC200,以及全新的84插槽3.5英寸SC280。(最后的一款仅限于NL-SAS硬盘,并明确用于高密度应用。)在过去,硬盘一般都是以单个硬盘的形式进行销售的,但是戴尔公司开始以包括特定数量硬盘的形式捆绑销售硬盘组。例如,SC280针对各种容量可提供若干半填充和全填充的配置。
软件许可附件可提供诸如FastTrack、Remote Instant Replay(远程复制)以及Live Volume(存储阵列内卷迁移)等功能。在涵盖16个活动硬盘的基本许可以及许可附加的附加包中,这些功能都是提供的。不难看出,这是一个分层式闪存存储配置(与15K配置相比,这个配置采用了更少的硬盘)能够显示出明显节省的区域。
存储阵列管理功能是由存储中心软件、在每个控制器上的驻留程序以及企业控制器所共同提供的,后者为协调多个存储阵列的运行提供了单一且必需的控制界面。从严格意义上来说,虽然你没有企业管理器也行(企业管理器是一个独立的、基于Windows的、SQL驱动的报告与管理应用程序),但是它能够完成一些简单的任务,如配置一个存储卷以便于更简单地在不同存储阵列之间进行数据复制。如果你打算整合使用第三方软件(如微软公司的虚拟机管理器或VMware公司的网站恢复管理器),那么你还是需要企业管理器的。
如果你已经拥有了一个Compellent存储阵列并对新的闪存存储分层技术感兴趣,那么你不得不再等一等。虽然你可以购买一个新的三层存储阵列(其中包括了写操作密集型SLC固态硬盘、读操作密集型MLC固态硬盘以及7200转/分钟的NL-SAS),但你还是无法把分层固态硬盘接入一个现存的存储阵列。戴尔公司计划在下一版存储中心中增加这一功能,所以尽请关注来自前线的相关报道。[注:戴尔在11月21日发布的SC6.4.2版固件可升级至分层固态硬盘]
戴尔Compellent 6.4评测总结
总的来说,在6.4这个新版本发布之前笔者就很喜欢Compellent的产品线,6.4的出现也让该系列更具潜力。诸如DP和远程即时重放的软件功能与相对低廉、高性能、符合行业标准的硬件相结合,就能够为用户提供一个功能丰富且相对廉价的主存储器选项。增加的闪存分层技术和更高密度的NL-SAS能够进一步地拓宽Compellent的更广泛受众面。
但是,目前市场上的企业级存储设备都不是完美无缺的。在较高的I/O工作负载下,Compellent分层式闪存配置在进行快照创建期间会产生I/O拥堵现象,这一问题还真是令人担忧。这并不是因为确实存在着这个问题,而是因为管理软件在问题发生时并没有公开所发生的问题。
当然,戴尔可以通过很多种手段来消除这个问题(如通过调整它的I/O队列以便于进一步降低层迁移对于主机I/O的优先级),这些措施都会受到用户的欢迎。但是我认为,公司花一点功夫让企业管理器和存储中心的用户界面报告DP正在执行任务的更多信息将是实际上更为重要的。当那是一个每天运行一次的后台工作时,让幕布挡住魔术师的身影也许还不是那么糟糕的事情,但是当这是一项一直在执行的任务时,那么时刻确保系统的可视性,让用户(管理员)了解黑匣子中正在发生些什么将变得更为重要。