Flashcache -- 开源混合存储方案(一)

Flashcache是什么?

Flashcache是Facebook技术团队的一个开源项目,最初目的是为加速MySQL的数据库引擎InnoDB,是一个开源的混合存储方案。


Flashcache解决什么问题?

Cache是容量与性能之前取平衡的结果, 以更低的成本,获得更高的收益 ,是系统设计时应该遵循的原则。

传统机械硬盘几十年来,容量不断翻倍的增长,相比较而言,性能的增长就慢的像蜗牛了。对于依赖IO性能的应用,典型的如数据库,一直在等待新的技术来拯救

Flash disk(SSD/FusionIO等)的出现,改变了这一切。Flash disk将硬盘从机械产品变成了电气产品,功耗更小,性能更好,时延更优

image


Flashcache原理概要

Flashcache利用了Linux的device mapping机制,将Flash disk和普通硬盘的块设备做了一层映射,在OS中变现为一块普通的磁盘,使用简单。

通过在文件系统和设备驱动之间新增了一层缓存层,用来实现对热点数据的缓存。
通常用SSD固态硬盘作为缓存,通过将传统硬盘上的热门数据缓存到SSD上,然后利用SSD优秀的读性能,来加速系统。

image


Flashcache的局限性

  • 增加了复杂度
    • Flashcache的加入使得系统的复杂度增加了一层
  • 不适用于数据量少的情况
    • 数据量不大的话,使用内存即可
  • 固态硬盘的部分缺点也无法避免
    • 使用寿命
      • 固态硬盘虽说没有传统硬盘那样的机械结构,不存在磁头老化、磁盘坏道等问题,但由于采用了闪存作为存储介质,其有限的擦写次数是一大硬伤。以32nm工艺的闪存芯片为例,固态硬盘常见的闪存颗粒理论擦写寿命约为5000-10000次。固态硬盘相比机械硬盘还是“脆弱”了些:传统硬盘的将数据记录在磁层上,理论上可以经受无数次的读写操作而不会有磁失效的危险,显然闪存做不到这种程度。

    • 数据丢失不可恢复
      • 如果说机械硬盘坏了还可以做数据恢复的话,固态硬盘就连这个“后悔药”都没得吃了,为什么呢?因为固态硬盘的工作原理与机械硬盘不同。传统硬盘的将数据记录在磁层上,理论上可以经受无数次的读写操作而不会有磁失效的危险,因此即便是硬盘已经损坏,仍可以通过专业工具读取磁层柱面信息来恢复。但是固态硬盘不同,其内部没有任何机械结构,数据被零散地分散在各个闪存之中,要从损坏后的闪存芯片中数据恢复,从目前来讲几乎是不可能的。因为两者存储原理不同,固态硬盘删除文件时不是像机械硬盘那样仅仅删除文件的索引,而是全部删除。

  • 其他问题
    • 经由DM处理过的请求对Flashcache来说是否是最优的?
    • 本身实现时没有考虑到并行性,所有请求全部串行的。
    • Flashcache缓存磁盘数据时没有区分随机或顺序I/O类型,而顺序I/O的性能并不特别占优势。

你可能感兴趣的:(Flashcache -- 开源混合存储方案(一))