基于闪存的存储系统:分层还是缓存?存储与灾备

2015-04-02    来源:TechTarget中国    编辑:Julian
存储专家George Crump比较了基于闪存的存储系统中的两种闪存使用方式:分层和缓存,并解释了两种方式的各自优缺点。

  当基于闪存的存储系统最早成为企业一个高效可行的选项之时,它被作为一个静态层来销售,工作负载必须通过手动方式转移到闪存上。但是,对于高成本的存储资源而言,这实在是一个效率低下的使用方式,因为移动到闪存上的工作负责通常并不是在所有时间都需要闪存的极速。其次,许多数据中心发现很难界定哪些工作负载,或者工作负载的哪些部分需要移到闪存。

  面对这些挑战,一般只有在需要极速性能的时候才采购闪存。扩大闪存的使用范围就意味着厂商需要提供一定程度的自动化,以确保最活跃的数据能够被移入和移出闪存层,从而达到最佳利用。

  厂商通常采取两种方法来解决这个问题——分层和缓存。尽管术语通常可以交换使用,它们实际上意味着两种完全不同的东西。两种模式都采用算法来确定哪些数据应该放置在哪种存储介质上。在某些情况下,这种算法仅仅是简单地按先进先出的方式组织数据,但很多厂商已经基于特定的访问模式,对他们的算法加以改进。

  什么是闪存分层?

  在一个分层模型中,数据被唯一地移动到闪存层,这意味着它绝不会同时存在于闪存和硬盘驱动器上。这对闪存层的高可用性提出了很高的要求,因为这层的任何故障都可能导致数据丢失。考虑到移到该层的数据都是最活跃的数据,故障可能导致非常重要的信息丢失。

  当分层策略最早提出的时候,所有新的或修改的数据在写入时都先送到硬盘层,然后再通过数据读操作,使闪存获得存储该数据的资格。绝大多数算法都需要在很短的时间内进行多个读写访问,才能使数据升级到闪存。尽管将保障数据安全寄希望于一种已知技术(硬盘)这一点很好,但这种方法的问题是,它也意味着写I/O将永远无法充分利用闪存的性能优势。

  随着厂商和用户越来越接受闪存技术,他们逐渐习惯于把所有写I/O先送到闪存层,然后再根据需要降级到硬盘层。这使得写进程也能受益到闪存的极速,而随着各种保护功能逐渐添加到闪存中,这种做法现在也被认为是“安全”的。

  什么是缓存?

  一般来说,缓存相较分层而言,是一种保存数据时间更短暂的方法。在分层系统中数据可以在闪存中保存数月,而缓存通常只是在数据还被需要的时候保存数据。有三种基本类型的缓存:绕写式(write-around),直写式(write-through)和回写式(write-back)。

  绕写式(write-around)缓存意味着所有数据首先被写入到硬盘区,当它成为合格的后,再基于读操作将它复制(注意不是移动)到闪存区。这意味着数据总是驻留在硬盘层,通常由RAID或镜像功能进行数据保护。其结果是,缓存区的闪存并不需要像上述分层模型中所要求的高可靠性。此外,由于所有数据首先被写入硬盘,闪存的使用寿命应该会延长。只有真正值得闪存“缓存”的数据才会被写到闪存。

  需要注意的是,虽然闪存区的故障并不意味着数据丢失,却意味着性能损失,因为所有的后续I/O都必须从硬盘区发起。已经习惯了闪存性能的用户可能会认为性能的下降和宕机一样糟糕。

  绕写式缓存技术也意味着所有数据在升级到闪存区之前都需要确保合格。所以在这个模型中,写操作将会一直缓慢,并直到有足够的I/O访问该数据以证明它确实值得复制到闪存中,这时闪存的高性能才会反映出来。最后,数据复制过程需要数据所在的存储控制器进行处理,以及I/O带宽,这可能会造成一些不可预测的系统问题,因为数据被复制到了闪存。

  直写式高速缓存(write-through)试图解决一些绕写式缓存面对的挑战。在该模型中,所有写操作都被送到闪存和硬盘层。这样做的结果是,数据冗余地存在于两个层次。该技术确保最活跃的数据预先放置到闪存之上,所以就没有必要再审核数据升级资格并进行复制。写操作性能仍然依赖于硬盘区,因为写确认必须出自该层。此外,闪存耐用性会减小,因为现在所有数据都会存到闪存,而不只是那些获得升级资格的。

   回写式高速缓存(write-back)通过在数据写入闪存区后即回复写确认,从而提高了写操作性能。这些数据将会在后来存储I/O不太繁忙的时候再写入到硬盘层。回写式缓存的风险是在数据被写入硬盘之前闪存发生故障。此外,在像VMware那样的集群环境中,在进行虚拟机迁移时,需要格外小心确保闪存区在迁移之前必须清空。

  和分层机制一样,回写式缓存对闪存区高可用性的要求也愈加严格,因为有时候闪存里容纳的是数据的唯一副本。

  何时使用何种技术?

  关于基于闪存的存储早期的担忧主要是其耐用性是否经得起企业级应用,这早已成为了过去。感谢闪存不断下滑的价格,通过RAID或镜像的方式部署冗余闪存的成本问题也渐渐不再是问题。

  如果你正考虑带闪存的系统,假定经过反复检查你已确认需要在存储系统中实施适当的冗余技术的话,你可以放心部署分层系统或者回写式缓存。这将提供最佳的性能,这也是为什么你需要把基于闪存的存储放在投资首位的原因。

  从用户的角度看,如果适当的冗余措施已经就位,那么无论是缓存还是分层并没有太大区别,因此选择基于闪存的存储系统不应该单单只考虑这些功能本身。IT规划人员应该调查其他一些因素,例如在闪存层或缓存区保持某些特定数据集的能力,以及与环境或应用相集成的能力等等。

1
3