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


23

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

  • dm-cache(由Redhat-在3.9内核中,因此它应该在ubuntu 13.10中)
  • Flashcache(由Facebook开发和使用)
  • Bcache(由Google开发和使用)
  • EnhanceIO(由STEC;基于Flashcache)

各种实现之间有什么值得注意的区别吗?哪一种最适合常规台式PC使用-提高常规程序(如Web浏览器或游戏)的性能?


为了提高性能,我发现64位ubuntu的安装效果很好,我的机器比以前更快!另外,关于缓存,您应该将此包使用ram压缩缓存zram-config,它将优先使用交换。并且,将游戏存储在SDD上并进行测试。有些游戏不能更快地运行,而其他游戏则可以很好地运行!由于它的写限制,我宁愿不使用SDD作为缓存,但是SDD变得越来越便宜,所以不再那么担心了:)
Aquarius Power

Answers:


14

我真的不知道从哪里开始,因为所有这些都是极好的信息。我将从有关SSD的一些信息开始,然后对所有不同的缓存方法进行描述,然后从那里开始。我希望你

优点缺点

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

最好拥有混合动力系统,兼具两全其美的能力(容量,可靠性,速度等)

Linux 3.9内核(2013年4月28日上市)引入了SSD缓存。内核的设备映射器现在包括一个称为dm-cache的缓存目标,该目标使SSD或其他存储设备可用作硬盘驱动器的缓存。从本质上讲,它可以加快数据的写入和读取速度,因为它允许更快的SSD首先缓存数据,然后将其传输到速度较慢的硬盘中。

资料来源:Iwn

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

资料来源:ArchLinux

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

硬盘既便宜又大,SSD既快又小又昂贵。如果您可以透明地获得两者的优势,那不是很好吗?有了Bcache,您就可以吃蛋糕了。

Linux内核的Bcache补丁允许人们使用SSD来缓存其他块设备。它类似于ZFS的L2Arc,但是Bcache也做回写缓存(仅通过缓存进行写操作),并且与文件系统无关。它旨在以最小的努力开启,并且无需任何设置即可正常工作。默认情况下,它不会缓存顺序IO,而只是对SSD擅长的随机读写进行缓存。它适用于台式机,服务器,高端存储阵列,甚至是嵌入式。

设计目标是与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缓存缺点

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

资料来源:弗雷泽·谢尔曼(Fraser Sherman)的补编

因此,从以上信息中可以明显看出,EnhancedIO是必经之路,但我认为,由于它基于Flashcache,因此我将使用Flash cache。但是,在做出最终决定之前,我一定会尝试两者。


EnhanceIO:基于EhanceIO SSD缓存软件的驱动程序,该驱动程序源自Facebook的开源Flashcache项目,对于将SSD用作传统HDD的缓存设备非常有用。webupd8.org/2013/05/get-better-linux-desktop-performance.html
Qasim

感谢您的回答!希望EnhanceIO将进入3.10内核,并在下一个Ubuntu版本中可用。
乌里(Uli)

1
写得很好,但我必须强调DM缓存是完全安全的,如果遇到崩溃,那么您当然不会丢失任何数据。实际上,在重新生成元数据之前,高速缓存在一段时间内可能效率较低。
lzap

3
关于bcache内存使用的注释不正确,关于转换的(引用)注释也是如此。
加百利

@Gabriel随时可以进行修改,但要包括源代码。:)
Mitch

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.