不同SSD对HDD缓存选项(dm-cache,flashcashe ……)有哪些优缺点?

似乎有各种不同的技术可用于将SSD用作HHD的缓存。 我所知道的:

  • dm-cache(由Redhat提供 – 在3.9内核中,所以它应该在ubuntu 13.10中)
  • Flashcache(由facebook开发和使用)
  • Bcache(由Google开发和使用)
  • EnhanceIO(由STEC提供;基于Flashcache)

各种实现中是否存在任何值得注意的差异? 哪一个最适合普通台式电脑使用 – 提高网络浏览器或游戏等常用程序的性能?

我真的不知道从哪里开始,因为这一切都是很好的信息。 我将从一些关于SSD的信息开始,然后介绍所有不同的缓存方法,并从那里开始。 我希望你

优点缺点

  • 价格:固态硬盘价格昂贵
  • 最大和通用容量:高容量SSD是非常罕见且昂贵的
  • 速度:这是SSD获得优势的地方
  • 耐用性:SSD没有移动部件

最好拥有混合动力系统,以实现两全其美(容量,可靠性,速度等)

Linux 3.9内核(于2013年4月28日发布)引入了SSD缓存。 内核的Device mapper现在包含一个名为dm-cache的缓存目标,可以将SSD或其他存储设备用作硬盘的缓存。 它实质上加速了数据写入和读取,因为它允许更快的SSD首先缓存数据,然后将其传输到较慢的硬盘驱动器。

资料来源: Iwn

Flashcache是​​最初由Facebook(Mohan Srinivasan,Paul Saab和Vadim Tkachenko)于2010年4月编写和发布的模块。它是一个内核模块,允许Writethrough在另一个驱动器上缓存驱动器。 出于性能原因,这通常用于在较小的固态驱动器上缓存旋转驱动器。 这为您提供了SSD的速度以及最近缓存文件的标准旋转驱动器的大小。 FlashCache是​​Linux的通用写回块缓存。

资料来源: ArchLinux

Bcache是​​Linux内核块层缓存。 它允许一个或多个快速磁盘驱动器(如基于闪存的固态驱动器(SSD))充当一个或多个较慢硬盘驱动器的缓存。

硬盘驱动器便宜且大,SSD速度快但体积小且价格昂贵。 如果你能透明地获得两者的优势,那不是很好吗? 有了Bcache,你可以吃蛋糕,也可以吃。

Linux内核的Bcache补丁允许使用SSD来缓存其他块设备。 它类似于ZFS的L2Arc,但Bcache也进行写回缓存(除了只通过缓存写入),并且它与文件系统无关。 它的设计可以轻松打开,无需任何设置配置即可正常工作。 默认情况下,它不会缓存顺序IO,只会缓存SSD擅长的随机读写。 它适用于台式机,服务器,高端存储arrays,甚至可能嵌入式。

设计目标是与SSD和缓存设备一样快(取决于缓存命中与未命中,以及写入与写回写),以便在误差范围内。 它还没有完全存在,主要用于顺序读取。 但是测试已经表明它很有可能,甚至在某些情况下做得更好 – 主要是随机写入。

资料来源: Bcache

Bcache有一个很大的缺点,它会从系统中带走内存来实现缓存。

EnhanceIO是一种在应用层下运行的解决方案,使应用程序能够利用SSD的性能优势,而无需重大IT基础架构更改。 SSD缓存可以实现从HDD切换到SSD的大部分优势,而成本仅为全SSD系统的一小部分。 高速缓存系统通常以比具有类似性能的基于HDD的系统更低的功率运行,并且通过降低冷却要求产生附带益处。

SSD缓存还可以通过增加投资来提高性能以满足不断增长的需求,而不是通过批量升级/替换现有系统,从而延长现有系统的使用寿命。

缓存还可以更快地访问数据,而无需额外的存储管理开销来获取和安装新磁盘架,配置新LUN以及将数据迁移到新LUN。 缓存几乎是透明的,几乎不需要停机。 EnhanceIO基于Flashcache。

资料来源: Stec-Inc

bcache是​​最无价值的,因为它需要特别准备(格式化)的数据分区。 这使得很难(如果可能的话)将缓存附加到具有数据的现有分区,因为需要200%的容量并执行长数据移动以激活/停用缓存。

EnhanceIO的亮点在于它根本不需要中间设备,即使设备已经安装,也可以即时连接到任何块设备。 另一个非常酷的事情是,您可以将EnhanceIO缓存连接到分区,而不是分区块设备,以便一次缓存所有分区。 就像flashcache一样,enchanceio模块是用DKMS构建的,可以用于较旧的内核。

资料来源:Debian

DM缓存优势

DM缓存使用简化的体系结构,使其适应性强且易于定制。 用户可以根据它必须处理的数据量或数据值来调整块大小和缓存容量。 如果特定应用程序需要按顺序存储大量数据,则用户可以为此目的配置缓存。 如果用户想要在缓存中同时记录数据库中的信息,则不会干扰缓存的操作。

DM Cache Dis-Advantages

使用DM缓存的一个缺点是Linux操作系统具有有限的存储元数据的空间。 如果缓存很大,并且包含许多小块,则会为存储的信息添加大量元数据。 要解决此问题,用户必须增加块大小。 另一个可能的问题是,在服务器崩溃之后,缓存元数据可能不再与缓存内容匹配,尽管最终可以恢复正确的配置。

资料来源:弗雷泽谢尔曼的补充

所以从上面的信息可以看出,EnhanceIO是可行的方式,但在我看来,因为它基于Flashcache,我会选择闪存缓存。 但在做出最终决定之前,我一定会尝试这两种方法。

反馈:我在大约一年前在Ubuntu上安装了flashcache标准deb软件包,在回写模式下将缓存/家庭(2TB)安装到SSD上的50GB片上。 它表现出色,没有任何问题。 我有一些X相关的“挂起”(即不能归因于flashcache)并且已经使用“Ctrl-Alt-PrtScr REISUB”几次来恢复,没有任何问题,也没有损坏问题。 我使用flashcache因为a)有deb可用而且b)它不需要备份和恢复/ home。

Interesting Posts