存储缓存 201



原文:http://chucksblog.emc.com/chucks_blog/2013/11/storage-caching-201.htmlhtml

注明:本文内容基于 VMware VSAN beta 版本撰写,请访问http://www.vmware.com/products/virtual-san/得到有关正式版本的更新信息。算法



      三年前,我写过一篇题为存储缓存 101的热门文章。因为某种缘由,该文章在我所写的十佳博文中占据了一席之地。

      但 3 年多的时间可能已经发生了不少改变,所以我认为如今是时候对这篇文章进行更新和改进了,当意识到咱们如今有了大量新服务器端缓存选项时,该想法变得尤其坚决。

      万事都处在快速的变化之中,所以保持最新要费些功夫。我认为在这方面我已经尽力而为了。

      一如以往,若是您认为我遗漏了某些内容,敬请添加评论... 数据库



      内存的速度比磁盘快缓存

      简言之,这是一次关于速度的讨论。

世界上绝大多数的数据都位于旋转磁盘内。经过内存技术(闪存、DRAM 等)而非旋转的锈铁块访问相同的数据,从性能的角度看,您将更胜一筹安全

      CPU 的速度愈来愈快,旋转磁盘的速度提高则相对缓慢 -- 这已成为一个愈来愈重要的议题。服务器

      但内存技术比磁盘技术成本要高得多,所以关于如何以最低的成本得到最佳结果的详细信息才是问题的症结所在。

      将内存技术用于存储缓存与将其用于永久存储并不相同,尽管后者也变得流行起来。全闪存阵列能够将全部相关数据存储在内存设备(而不只仅是工做子集)中,从而最大限度下降对缓存的需求。但在许多使用情形中,采用全闪存还是相对昂贵的选择。

网络

wKiom1NzJrTTsRSSAALXIyTdRt8934.jpg


      在本讨论中,咱们仍旧不得不考虑混合使用永久 SSD 和传统磁盘进行存储的混合阵列。想法很简单:经过以智能方式将正确的数据集放在正确的设备上,将能以更适中的成本(相对于全闪存替代方案)显著提高性能。但要再说一遍的是,细节决定成败。

      在此咱们要验证不一样的存储缓存方法,而不会对全闪存阵列或混合阵列发表过多见解。
架构

      让事情变得更加有趣的是,为了实现最佳的性价比,咱们一般会结合使用这些方法(尤为是存储缓存与混合阵列)。


      让咱们了解一些基础知识
      关于 IO 配置文件,有四个主要方面须要注意:读取(随机和连续)和写入(随机和连续)。大多数应用实例都由这四个元素以不一样的方式组合而成,真实世界中不多有纯配置文件的状况。例如,正常使用期间,数据库可能会展现一个随机配置文件,例外状况包括完成完整备份时(连续读取)或匆忙完成还原时(连续写入)。

从技术上讲,存储缓存可能出如今四个不一样的地方:磁盘驱动器自身上、存储阵列中、存储网络中或服务器内部。分布式

      磁盘驱动器中包含少许用于优化性能的嵌入式缓存;在此咱们不会讨论这些缓存,由于它们的运行方式很大程度上是透明的。可使用存储网络中(尤为是较大的分布式文件环境中)的读取缓存,但尚未确切证据证实此类缓存的普及度足够广。

      存储阵列中的缓存已存在了至关长的一段时间:这很好理解。因为 PCIE 闪存卡和 SSD 的出现,服务器端缓存最近正在经历复兴,但这在架构方面也没什么新意 -- 使用大型服务器进行存储缓存的历史已有几十年。

      最后,咱们不得不将缓存分为永久性缓存和可变缓存两类。ide

      能够安全无忧地使用永久性缓存持续写入重要的数据。此类缓存包含防组件故障(一般出如今镜像过程当中)和电源故障(若是使用 DRAM 或相似存储)保护。能够安全无忧地使用可变缓存读取或写入容易从新建立的瞬态数据(例如交换设备等)。

      特别声明:不能使用可变存储缓存写入但愿往后读回的数据。



      不一样配置文件下的缓存效率

      适用于随机读取的读取缓存效率可能高得惊人,尤为是在 IO 模式展示出访问局部性(简称为 LoR)时。简言之,LoR意味着在数据块被赶去存储任何其余内容以前,您有很好的机会从新读取该数据块。

wKiom1NzJ0SyWVBnAABAAVoEEuU835.jpg

      若是此状况发生,从性能的角度看,您将是胜利者。根据过往经验,大量实际应用程序会展示出很是良好的访问局部性:数据库、电子邮件系统、VDI、软件开发等。所以,一些形式的存储读取缓存有其存在的道理。

     读取缓存越大(所以成本也越高),您看到访问局部性优点的机会越大。纯粹的连续读取流(例如 HDFS)没法从读取缓存中得到太多好处,除非它们足够容下多个读者感兴趣的完整数据集 -- 这可能代价很是高昂。

     写入永久性缓存是一个彻底不一样的状况。大多数写入本质上每每是随机写入,即便少许永久性写入缓存也能吸取大量 IO 并将其转换为相对高效的、连续的取消磁盘暂存。固然,若是写入操做到达缓存的速度比磁盘可以取消暂存的速度快,缓存将被填满,今后刻开始性能将以很快的速度降低 -- 直至写入操做减退。


      阵列缓存与服务器缓存
      位于存储阵列上的任何存储缓存本质上都是共享的合用资源:它为全部链接的主机提供服务。阵列上的几乎全部存储缓存都设计为永久性缓存,这表示它们对读取和写入均适用,而且能够安全地从各类危险中恢复。


      管理这些缓存的算法中包含大量神秘因素。这些算法的功效可能与如下因素相关:即便不一样供应商使用的硬件资源表面上相同,但它们的阵列表现可能相差不少,这很大程度上取决于使用的算法。

      阵列缓存的劣势是读取性能 -- 至少与基于服务器的存储缓存相比处于劣势。要访问基于阵列的缓存,须要调用主机总线适配器、遍历存储网络、与另外一端的控制器通讯并等待回复。

      当使用服务器端缓存时,全部这些都以服务器总线的速度发生。若是与基于阵列的读取缓存相比较,这常常能够致使一些使人瞠目的基准分析结果。

wKiom1NzJ4nRegatAAMTTZ84eIg265.jpg

     这表示服务器端缓存永远都更胜一筹?不,并不是如此。

      对新手而言,做为共享资源管理服务器端缓存的难度可能会比较大:这对在同一主机上运行(与在虚拟化环境中运行相同)或跨多个服务器群集运行的多个应用程序均适用。如今,仍有一些配置须要手动进行,有几种例外状况稍后再讨论。

      更为重要的是,使用服务器端缓存写入外部存储阵列的操做可能致使特别糟糕的状况发生(称为固定写入)。此状况值得更详细地检查。

      假设您有一对服务器,每一个服务器都配备用做存储缓存的闪存卡,为防止组件故障,您在服务器之间镜像写入操做,此过程当中出现了小幅的性能降低。

      一个服务器发生故障在理论容许的范围内,您写入的一个副本将安全地存储在镜像服务器组件上。到目前为止,一切顺利。

但若是存储网络或阵列发生故障,而且该状况发生在闪存卡将其写入操做驱赶到阵列以前,

      那么您就会遇到固定写入的状况:写入操做被认为已经安全地存回应用程序和/或操做系统,但它们还未到达存储阵列。

      在这种状况下,您必须先将服务归还网络或阵列,而后使用字节镊子将每一个已写入数据块手动取消暂存至彻底正确的位置。此状况下数据损坏的可能性接近 100%确实,这种状况可能不常常发生,但一旦发生就会是您的噩梦。

      换句话说,当使用服务器端闪存将缓存持续写入外部存储时,它将变为阵列自己的一部分:整个子系统负责安全地存储写入的数据。若是您愿意:当出现网络和/或阵列故障时,与外部阵列和网络一块儿使用的服务器端缓存能够视为可变缓存。

      这发生在咱们使用快照和远程复制等阵列数据服务时出现问题以前...


      合并服务器端缓存与服务器端永久存储
      您知道还能够从 VMware 的角度解决此问题吗?

wKiom1NzJ9XxwT95AAIbz_iOzW0097.jpg

      我不想让您失望,因此特此说明:VMware VSAN 能够执行高效的服务器端读取、写入缓存,具体方法是使用合用资源模式并避免与外部存储相同的固定写入状况发生。

      我认为它在这方面很是不同凡响。

      基础 VSAN 架构使用多个商用服务器,每一个服务器配备至少一个用于读取/写入缓存的闪存设备,每一个闪存设备后面有多个磁盘。全部缓存和磁盘资源都由 VSAN 做为一个池进行管理,除低延迟网络跃点以外没有任何运行不顺畅的状况。

      在被确认返回应用程序以前,写入操做被写入最少两个节点。若是服务器或组件发生故障,它的群集伙伴会保留该数据。与将服务器缓存与外部存储一块儿使用不一样,您根本无需考虑存储网络或外部阵列可能发生故障的问题,所以不会有固定数据的情形出现。

      具有常见阵列式缓存的全部优点,以及服务器端缓存的性能和经济性。棒极了。


      概要
      闪存的一切都围绕着性能,没有什么的执行速度比闪存或位于服务器内部的其余内存技术速度更快。

      位于服务器内部的闪存是读取操做的理想选择,但它难以高效共享,除非您清楚本身在干什么,不然不该将闪存实际用于与外部阵列一块儿持续写入。

      可是,随着 VSAN 等产品的出现,这种状况可能已经开始改变。

      谁知道将来咱们会看到什么?

      欢迎在微博上关注我,这样在我发布博客文章后您就会收到通知,并可让您了解更多有关 VMware 存储的信息:@VMware中国


--------------------------------------------------------------------------------------------------------------------------------------------------


做者: Chuck Hollis

近日,ChuckHollis 加入了 VMware,担任存储与高可用性部门首席策略专家。在 Chuck Hollis 的领导下,VMware成功发布了一款领先的软件定义的存储解决方案-VSAN。期间,他将其在存储行业和 IT 生态系统方面的真知灼见引入了VMware。加入 VMware 以前,Chuck Hollis 曾经在 EMC 任职 18 年,担任 EMC 全球营销首席技术官。他喜欢与客户和业内人士探讨各种技术话题。固然,也酷爱写博客。Chuck 与妻子和孩子们共同居住在马萨诸塞州的霍利斯顿。

相关文章
相关标签/搜索