混合存储系统中的自动分层和缓存技术
2013-08-07 TechTarget中国 编辑:张瀚文
混合存储系统中,不提供各类自动分层或缓存技术的厂商现在已经凤毛麟角。当前可能还有一些这样的公司,但相信很快就不复存在了。个中缘由在于HDD和SSD之间的性能差异。SSD能够提供较HDD 1000倍的IOPS速率。而系统需要自动分层或缓存技术来充分利用这部分提升的性能。理论上来说,这两种技术所能带来的优势非常类似,但实际上这些技术截然不同,有着不同的功能和应用场景。
自动分层技术
从历史角度来看,我们也许能更准确地理解自动分层技术。其最初设计目的在于充分利用15000、10000、7200和5400转速的HDD的性能和成本差异。
自动分层的基本原理是,数据在创建后随着时间推移价值会逐步降低。数据主要在其创建后的72小时内被访问。在此之后访问量会骤然减少,访问频率越来越低,30天以后数据只会被偶尔访问。在这时,数据就成了“被动数据”或“冷数据”。
随着数据价值的降低,数据应当迁移到低速、低成本的存储层上。如果要手动这样做的话,这种重复操作显然非常乏味,难以满足所需工作量。换句话说,没有人会这么做。自动分层技术会基于诸如数据创建时间、访问频率、最后访问时间或响应时间之类的策略进行数据迁移。
早期的自动分层数据迁移通常是整个卷(LUN)的数据或共享文件。这涉及到海量的数据迁移,可能会导致诸多不同的结果。某单个文件的存取可能会影响许多数据。现在,数据迁移都是基于更小的计算单位,比如子LUN、文件段(各种称为块或片的数据块)、文件、对象,甚至是部分的文件或对象。
随着闪存SSD在存储系统中的日益普及,并具成本效益,但考虑到闪存SSD的高价格,许多人认为自动分层将成为一种理想选择。不过事实并不像想象中的那样。闪存SSD是一种和HDD截然不同的技术。其在读写次数、电子泄露、均衡损耗、错误检测、编码校正等许多方面有不同的问题。
SSD和HDD在性能和成本方面的差异也使得两者在同一系统中应用于两个层级。而这可能会引起数据在两个层级之间频繁地移动以实现这些代价高昂的SSD的最佳利用率。不过这种持续的数据迁移有两个重要的缺陷应加以考虑。
第一,自动分层是一项被动的技术,也就是说其迁移数据的策略是根据历史趋势得出的,而非实时的状态。(当然也有例外,例如XtremIO的自动分层技术可以给予之前记录的应用模式进行实时数据迁移)关键业务或需要高性能的数据使用SSD作为目标存储。随着数据老化,其会被迁移到HDD上。当再次使用时又被调回。这就增加了SSD的磨损,降低了其使用周期。
第二,在两个数据层之间迁移会花费不少处理器资源。在HDD作为主要的性能瓶颈时,这种系统性能的影响并不严重,不过在SSD环境中情况完全不同:存储处理器成为了性能瓶颈。
缓存技术
通常来说有两种缓存技术:写回和直写。写回缓存技术在写操作发生后立刻确认。换句话说,该技术管理整个写操作。数据驻留在缓存或者写回(通常是由于“缓存溢出”)更低性能也更便宜的存储媒介通常基于访问频率、最后访问时间、数据创建时间等。数据同样可以基于类似的策略写回缓存。某些数据也可以不按照策略执行,固定在缓存中。这类固定数据通常是数据库热点文件、索引或是元数据。
直写缓存方式中,数据直接写入HDD。然后通过智能算法跟踪读取或者预先定义的策略将热点数据放置到缓存中。在工作负载呈连续形态时,直写缓存通常能够利用在预读上获取的性能。不过在工作负载高度随机时,比如虚拟服务器或虚拟桌面,预读缓存实际上会降低性能。
直写策略和写回缓存策略有些类似,不过写回方式中决定哪些数据需要从缓存中清除,而直写则是决定在缓存中保留哪些数据。关键的区别在于,直写缓存对原写入的数据不会接受也不会确认。而就像写回缓存策略那样,直写缓存可以识别缓存中的热点数据。
写回缓存较直写缓存而言并不常见,因为大多数写操作直接进入SSD会提升写擦除的周期,缩短SSD的使用周期。而且也需要更多的SSD容量。
两种类型的缓存在容量上通常比自动分层技术更小。而这会产生更多的缓存未命中,因为读操作请求必须回到HDD来获取数据。
自动分层和缓存哪个更好?
自动分层和缓存哪个更好,这完全因人而异。在数据迁移是高度可预估的情况下自动分层的性能最佳。前提是没有许多数据刷新。比如在季末将旧的快照或交易数据从SSD迁移到HDD上。可能会需要额外的SSD容量来减少数据在较低性能层上的迁移频率。这是前期费用,但可以提升SSD的生命周期。
缓存则通常能够为实时变化的工作负载、随机I/O、交易型应用程序以及服务器和桌面虚拟化提供更好的性能。缓存同样应当通过减少写入减少SSD损耗,提升SSD使用期限。
一些混合存储供应商会提供自动分层方式,另一些提供缓存方式。也有两者都提供的。
需要非常注意的是,闪存SSD的使用期限问题:这直到最近才显露出来。有一些关于SLC和eMLC磨损问题的市场报告。不过对于那些部署MLC的客户,这方面的问题会更为突出。
在决定选择的技术之前,要检查你的工作负载,并在实际环境中测试两种技术。以便选择在预算内最能满足业务需求的方式。