中国数据存储服务平台

存储极客 | 自动分层存储PK. SSD缓存

  今日,“存储极客”栏目正式上线!在这里,只有一位大咖名叫“存储”,它的粉丝我们称为“存储极客”!

  存储极客

  这是一群存储偏执狂

  为存储而生,跟存储死磕

  各具独家秘笈

  有观点,有碰撞,有干货

  从今日起

  做客存储极客栏目

  与你分享存储里的那点事儿

  本期话题:

  自动分层存储PK. SSD缓存

  有人说Tier和Cache这两种技术,有各自适合的场景,但我更倾向于认为它们解决的是同一类问题。在传统单层磁盘阵列的基础上,添加SSD缓存相对容易实现,而自动分层存储要想把效果做好则是一件不太容易的事情。在本文中,我们将从几个角度全面地比较自动分层存储和SSD缓存,究竟有没有一种相对完美的实现呢?

  从目前看,固态混合阵列的出货量仍远超出新兴的全闪存阵列市场。一方面7200转硬盘的单位容量成本,与SSD相比仍有巨大优势,对于想兼顾高IOPS和大容量存储需求的用户,选择带有自动分层存储或者闪存缓存的阵列还是一个不错的选择。

  对于传统使用高转速(特别是15K)硬盘的企业存储市场,戴尔等厂商已经开始以硬盘的价格为用户提供全闪存配置。当前全闪存阵列市场还处于发展阶段,MLC(或者企业级MLC)闪存逐渐成为主流,尽管它的性价比更好,但一方面写入性能比SLC相差不少,另外仍有人担心MLC的寿命问题。因此,在SLC和MLC闪存之间的智能分层也不失为一个理想的解决方案。

  在混合阵列的优化技术路线上,有些厂商选择支持自动分层存储(Tier),有些厂商则提供SSD缓存(Cache)功能,还有对两种技术都支持的。我们曾遇到过一些用户不知该如何选择,也遇到过在项目采购招标中指定其中一种,从而使部分产品处于有利地位的。

  今天,我们从以下7个维度来比较相关技术,前6项规定满分为5分,由于站在每个特性对整体影响的角度来看,故最低得分设为3。最后一个附加考量项目,允许+2的加分。

  1.只读加速?还是读写加速?

  对于SSD缓存技术而言,大部分只是Read Cache,也就是将热数据的副本放到SSD中,只加速读操作。这样有一个好处,就是不用太担心SSD或者闪存卡故障,最多是性能下降但不会丢数据。当然也有支持SSD写缓存的,这种情况下一定会对闪存盘做RAID保护,因为在数据没有写入硬盘之前,它们在闪存write buffer中是唯一的。开始时,厂商为了减少性能损失选择RAID 1多一些;也有希望容量利用率高的厂商支持了RAID 5。

  存储阵列上的SSD读/写缓存,可以理解为DRAM高速缓存的一个大容量补充

  闪存与传统机械硬盘的一个明显区别,就是它的读性能比写性能好。如果将有限的SSD容量同时用于缓存加速读和写,有时候效果并不是很好。所以,尽管SSD读写缓存某种程度上类似于自动分层存储,但它们之间的区别还是不小的。

  相比之下,在这一点上自动分层存储不怎么纠结,只要是位于SSD高性能分层的数据读写都一样加速。不过我们认为,不同的分层技术对SSD和HDD之间的调度算法还是有许多不同之处。请继续往下看…

  本项评分

  SSD缓存:3.5分

  一般自动分层存储:5分

  戴尔Data Progression:5分

  注:由于特点突出,在本文中我们将戴尔Data Progression与其它自动分层存储分开对比。

  2.只是“傻快”吗?还有数据生命周期管理呢

  SSD缓存无外乎是两种用法:read cache和write buffer,都是用于加速,而且只区分2种性能等级的存储介质——SSD添加到HDD存储池,对于在硬盘上的数据来说,没有进一步的数据管理功能。

  对于自动分层存储技术,有些只能支持2个分层,因为这样的数据迁移规则和算法最简单。当在SSD之外还配置高转速和大容量两种硬盘时,在一个层中混用将无法充分发挥它们的性能。


 

  能够支持3个或以上Tier的自动分层存储一般是中高端产品,戴尔SC(Compellent)阵列的Data Progression便是其中的代表。而且戴尔SC还提供一些独特的功能,可以将快照后的只读数据在同一存储层中由RAID 1转换为RAID 5或6存放,一方面节约了存储空间,同时还能保证读写性能不下降。

  注:得益于底层原生块级虚拟化技术,戴尔SC存储支持将新数据永远写入到高速RAID 1中以保证写性能,对已经迁移到RAID 5/6的数据块也不会原地修改。

  本项评分

  SSD缓存:3分

  一般自动分层存储:4分

  戴尔SC Data Progression:5分

  3.闪存能hold住多大?数据移动精度如何

  对于SSD缓存技术来说,它的容量不会累加到存储池,也就是说实际可用空间还是HDD RAID的容量。自动分层存储的总可用容量,则是来自多个分层,包括SSD RAID和HDD RAID之和。

  SSD Cache只是把数据当做临时空间,最终还是要写进永久存储层的,并不能减少IO,以及优化数据在磁盘上的位置。而自动分层存储是把SSD当做真正数据的家。

  也许有人会说这个影响不大,因为SSD缓存容量平均只有存储池的3-5%。因为,SSD缓存管理的元数据,需要占用阵列控制器的内存资源,缓存页面的粒度比较细,例如有的产品是4KB。因此,带有闪存缓存的阵列能够管理的SSD Cache容量上限,通常为数TB级别。

  自动分层存储对SSD的容量通常没有限制,有些厂商SSD数量的限制通常是人为的,主要是超过这个数量无法得到应有的性能提升。

  自动分层存储可以分为LUN和sub-LUN迁移粒度。其中根据数据访问频率在硬盘和SSD之间迁移整个LUN是早期有的厂商比较初级的做法;目前主流的都是迁移LUN中的数据切片,一般厂商能做到16MB-1GB的水平,而戴尔Data Progression则能达到512KB-4M的迁移粒度。这个粒度影响到对闪存的利用率,而且迁移不必要的数据也会带来额外的I/O。


 

  戴尔SC阵列虚拟页大小有512KB、2MB和4MB三种,即Data Progression自动分层存储的迁移粒度。

  下面这项的评分,是结合这一小节的两点给出。

  本项评分

  SSD缓存:3.5分

  一般自动分层存储:3分

  戴尔SC Data Progression:4分

  4.反应快慢 数据迅移一触即发?

  对于需要高I/O性能的存储访问,我相信每个用户都希望能尽快地被闪存“命中”,这是所有固态混合阵列都要面对的。

  对于SSD读缓存,有的算法是数据块读取一定次数(比如3次)之后被复制到闪存中,Cache使用达到一定比例再淘汰其中的不活跃数据,通常对热数据的响应速度还是比较快的;SSD写缓存则是先放到闪存,再根据一定规则后台刷新到磁盘。

  自动分层则不同了,有不少产品是将数据先写到低性能分层,按照预定或者设定的周期统计它们的活跃度,再把热数据迁移到SSD高速分层。这样实现比较简单,但是只要是写入的数据块还没有被迁移到SSD,那它的性能就无法提升。

  在这种情况下,数据移动的频率就比较重要了。尽管有的产品支持1小时统计周期执行一次,但考虑到白天可能影响到生产存储的性能,还是在每天夜间执行的更多。

  对于另外一些自动分层存储技术,则是将数据先写入SSD高速分层以获得最好的性能,再根据某种策略向“下”迁移,比如戴尔Data Progression。读写分离是戴尔SC(Compellent)的关键,默认每天一次执行Replay(快照)数据迁移不加重控制器的负担,并最大程度减少对生产数据访问的影响。

  针对这种情况,统计周期和分层操作的频率就显得不太重要了,因为绝大多数应用环境都不会在较短时间内就把SSD分层的容量写满。而且戴尔SC阵列还支持在同一分层内,将快照数据由RAID 1转化为RAID 5/6,在保证读/写性能的同时提高闪存利用率。

  本项评分

  SSD缓存:5分

  一般自动分层存储:3分

  戴尔SC Data Progression:4分

  5.区别对待

  最大发挥SLC/MLC/TLC闪存价值

  如果是同时支持读和写加速的SSD缓存,有的是按比例划分容量;也有少数产品建议用SLC做写缓存/MLC做读缓存的,比如ZFS文件系统。但ZFS的写缓存只是当作小容量日志来使用,更多目的是用来做缓存掉电保护。

  绝大多数自动分层存储技术,不会对SLC和MLC闪存做区别对待,所以通常只能使用一种类型的SSD。


 

  而戴尔“闪存优化型”Data Progression分层还有一项“读写分离”技术。有些厂商的全闪存阵列(AFA)只是为了炒作而成的产品线,而戴尔则是真正扎扎实实做闪存优化的厂商,是业界唯一一个做SLC、eMLC分层,现在又第一个把TLC融入到存储介质中。就像我们在前文中介绍的那样,写密集型(SLC)SSD中的数据会定期迁移至读密集型(MLC或TLC)分层,这样SLC专注于写而MLC/TLC专注于读,两种操作都能获得理想的性能,同时提供良好的性价比。

  本项评分

  SSD缓存:3.5分

  一般自动分层存储:3分

  戴尔SC Data Progression:5分

  6.贴近计算

  服务器闪存如何打通?

  至少有几家供应商提供服务器端的SSD缓存类产品。尽管它们中的许多可以搭配SAN阵列使用——而感知不到后端有没有闪存,所以是否在服务器和存储端使用多级闪存是个需要仔细规划的问题。

  要问有没有服务器端SSD缓存软件能跟后端阵列协同的?戴尔Fulid Cache for SAN和SC阵列之间就有一个联动机制,当后端创建快照时会触发服务器闪存中的写缓存数据刷新到阵列,以保证与主机端应用的一致性。需要注意的是,下面的评分并没有将Fulid Cache for SAN与其它闪存缓存软件的比较考虑在内,有兴趣的朋友可以参考《性能与ILM的平衡:服务器闪存缓存的思考》一文延伸阅读。


 

  根据戴尔流动数据的理念,底层是无所谓各种存储介质,确保数据可以无缝流动,不论是SLC、 eMLC、TLC闪存,15K、7200RPM硬盘甚至未来的各种介质,底层完全虚拟化包容。上层还可以通过Live Volume、Fluid Cache实现跨越存储,和跨越存储-网络-服务器的数据流动才是戴尔的真谛。

  本项评分

  SSD缓存:3分

  一般自动分层存储:3分

  戴尔SC Data Progression:4分

  7.智者千虑

  必有一失?

  任何的自动化策略总有不适用的时候。比如每月固定1天结算,某个LUN需要最高的性能。这时,主流厂商的自动分层存储大多提供了手动和计划迁移的支持。

  相比之下,SSD缓存在这方面就无能为力了,用户基本上无法干预。

 加分

  一般自动分层存储:+2分

  戴尔SC Data Progression:+2分

  ?综合上述评分,结果如下:

  SSD缓存:23.5分

  一般自动分层存储:23分

  戴尔SC Data Progression:29分

  看完本文之后,不知我们比较的是否全面,这样的结果与您心目中是否一致?如果您是一名用户,今后再遇到自动分层存储和SSD缓存的选择时,还会再犹豫吗?

未经允许不得转载:存储在线 » 存储极客 | 自动分层存储PK. SSD缓存
分享到: 更多 (0)