互联网服务数据分层

存储系统的高级功能“数据分层”是否会带来性能问题

本来是存储系统提供的高级性能优化的功能“数据分层”,细细想想,是否会存储这样的问题,数据分层的关键是对数据的读写频率进行实时监控,根据数据迁移的粒度进行冷热迁移,满足高性能的需求,如果碰到一段数据中的部分数据某一段时间内是热点数据,迁移到SSD内,其余的部分数据任然在...显示全部

本来是存储系统提供的高级性能优化的功能“数据分层”,细细想想,是否会存储这样的问题,数据分层的关键是对数据的读写频率进行实时监控,根据数据迁移的粒度进行冷热迁移,满足高性能的需求,如果碰到一段数据中的部分数据某一段时间内是热点数据,迁移到SSD内,其余的部分数据任然在低性能盘内,这样一旦需要全部读出的时候,就会出现,本来数据的连续的,这样一迁移,发现数据被分成好几个地方,维护逻辑数据和物理地址的位图表也在不断的更新,反倒会出现性能问题了,

收起
参与13

查看其它 2 个回答Eric雪飞的回答

Eric雪飞Eric雪飞存储专委 副主任上海市计算机学会

有一个相关的概念叫分级存储技术,最早是出现在设备之间,根据数据的生命周期,访问的频率,重要性,保存的时间等因素,在不同设备间,例如本地磁盘,FC磁盘阵列,磁带库/光盘塔之间,按照一定的策略实现数据的迁移轮转,这样的使用情况下,一般还分成在线/近线/离线的存储方式。

而现在的分层存储技术(Tiered Storage)很多时候是在一个设备的内部,由于新存储介质出现(主要指flash),单一存储设备内部也会有多种存储介质混用。如果仅仅是不同的存储介质,各自做成不同的RAID组到逻辑卷,走不同的数据路径,并不一定涉及到分层存储技术。
微信截图_20170705205341.jpg

微信截图_20170705205341.jpg

例如虚拟桌面的应用中,常常会把系统盘放在SSD的卷,数据盘放在机械盘的卷,但并没有分层存储。

如果使用方式上是直接的南北向的层级关系,例如常见利用SSD做二级缓存的方式,也不是分层存储。
微信截图_20170705205917.jpg

微信截图_20170705205917.jpg

分层存储实际是把两种存储介质形成的PV(物理卷),在VG(卷组)这一层捏合在一起,再划分出多个LV(逻辑卷)向外提供存储服务。
微信截图_20170705215124.jpg

微信截图_20170705215124.jpg

虽然两种介质形成的物理卷在层级上是处于平行的位置,但是在南北纵向上,上层有VG 卷组把两者“拼接”在一起,向外提供服务,上层的数据路径是共用的。

数据到达物理卷这一层时,SSD的“快卷”和机械盘的“慢卷”都是可以提供存储服务的。但是服务的质量(性能,响应)是完全不同的。分层存储技术的核心就是数据的自动迁移。系统会自动把访问频次比较多,比较热的数据通常放在“快卷”上(SSD),以提供更好的性能和响应速度(这个思想和操作系统里面的热点数据常驻内存是一样的)。当数据访问的频度下降,没这么热的时候,系统会按照一定的策略把它迁移到“慢卷”(基于机械磁盘的RAID组)上,为后面出现的热数据腾出空间。虽然各家产品判定触发的机制和迁移的具体策略有所不同,但原理都是类似的。

这里面的关键点在于对应用访问地址的预测,数据冷热的认定机制, 数据迁移的速率控制和调度策略等。

数据迁移一旦开始,这就意味着在正常IO之外,有另外一种内部IO出现,它势必对服务于前端的正常IO有所影响。两种IO叠加情况下,落盘的IO必将变得更加随机,从而导致存储的整体性能会变差,而两种IO各自的性能也会不同程度变差(类似于RAID组重建时,正常IO和重建IO的关系)。这势必有一些策略来保证正常IO,抑制迁移IO。
我们都知道,对于机械盘来说,顺序读写的能力是很强的,影响性能最大的因素是随机访问的比率,越多随机IO性能越差。但是SSD随机的性能其实很好,所以整体的IO变得更随机,对于SSD来说影响不大。当大多数热点数据都能放到SSD快卷上时,实际上是快卷支撑起了整个存储的负载,这种情况下,可以通过一些技术上的努力,细节的微调,得到一个近似于SSD性能的表现,可以说这样的结果是相当理想的(以色列的某初创公司用的就是类似的技术,以较低成本提供非常好的性能)。

然而,以上说的情况都还有一个前提条件,那就是热点数据的总量不能大于快卷容量。
当数据量不超过范围时,一切尽在掌握,分层存储的机制可以正常的工作。如果热点数据的总量大于快件的容量,意味着一定有部份的热数据来不及放在快卷中,只能放在机械盘。而通常应用要等待所有的数据获取才能进行计算,那这样IO的瓶颈就落在机械盘上,并且还是一堆承担了很多随机IO,性能变的很差的机械盘。这时候的性能几乎可以用惨不忍睹来形容(可以参考一个正在坏盘重建的RAID组上的卷)。

所以这种情况下分层存储技术是不太适合的,想要有更好的表现,必须在里面做非常多的优化和调整,并且最终呈现的效果还很难讲。

公平的说,如果选对了适用场景,分层存储技术对性能还是会有正面的影响,这还要看你对比的基准,如果你的原来的存储是基于一堆机械盘的,你的应用产生的IO模型里有很多随机读写,采用分层存储技术后性能肯定会有大幅提升,最好的情况性能可以接近全闪存,并且预算投入应该比全闪存阵列要低。但如果你原来已经上了全闪存阵列了,性能已经是很高的值,使用分层存储技术就不太会有帮助,反而会降低。

硬件生产 · 2017-07-05
浏览2208

回答者

Eric雪飞
存储专委 副主任上海市计算机学会
擅长领域: 存储灾备分布式架构

Eric雪飞 最近回答过的问题

回答状态

  • 发布时间:2017-07-05
  • 关注会员:4 人
  • 回答浏览:2208
  • X社区推广