似乎有多种不同的技术可用于将 SSD 用作 HHD 的缓存。我所知道的技术有:
- dm-cache(由 Redhat 提供 - 在 3.9 内核中,因此它应该在 ubuntu 13.10 中)
- Flashcache(由 Facebook 开发并使用)
- Bcache(由 Google 开发并使用)
- EnhanceIO(由 STEC 开发;基于 Flashcache)
各种实现方式是否存在值得注意的差异?哪一种最适合常规台式电脑使用 - 以提高网页浏览器或游戏等常用程序的性能?
答案1
我真的不知道从哪里开始,因为这些都是非常好的信息。我将从一些有关 SSD 的信息开始,然后描述所有不同的缓存方法,然后从那里开始。我希望你
优点缺点
- 价格:SSD 价格昂贵
- 最大容量和常见容量:高容量 SSD 非常稀有且昂贵
- 速度:这是 SSD 的优势所在
- 耐用性:SSD 没有移动部件
最好采用混合系统,以便兼具两全其美的优势(容量、可靠性、速度等)
Linux 3.9 内核(于 2013 年 4 月 28 日发布)引入了 SSD 缓存。内核的设备映射器现在包含一个名为 dm-cache 的缓存目标,它允许 SSD 或其他存储设备用作硬盘的缓存。它实质上加快了数据写入和读取速度,因为它允许较快的 SSD 首先缓存数据,然后将其传输到较慢的硬盘。
来源:伊文
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有一个很大的缺点,就是它要占用系统的内存来实现缓存。
EnhanceIO 是一种在应用程序层下运行的解决方案,它使应用程序能够利用 SSD 的性能优势,而无需进行重大的 IT 基础设施变更。SSD 缓存可以实现从 HDD 切换到 SSD 的大部分优势,而成本仅为全 SSD 系统的一小部分。缓存系统通常比性能相似的 HDD 系统耗电量更少,而且通过降低冷却要求,还带来了额外的好处。
SSD 缓存还可以通过增量投资来提高性能以满足不断增长的需求,而不是通过对现有系统进行全面升级/更换,从而延长现有系统的使用寿命。
缓存还可以加快数据访问速度,而无需额外的存储管理开销来获取和安装新磁盘架、配置新 LUN 并将数据迁移到新 LUN。缓存几乎是透明的,几乎不需要停机时间。EnhanceIO 基于 Flashcache。
来源:Stec 公司
bcache 是最没用的,因为它需要专门准备(格式化)的数据分区。这使得将缓存附加到包含数据的现有分区变得困难(如果可能的话),因为需要 200% 的容量并执行长时间的数据移动才能激活/停用缓存。
EnhanceIO 的妙处在于它根本不需要中间设备,即使设备已经安装,也可以即时连接到任何块设备。另一个超酷的事情是,您不仅可以将 EnhanceIO 缓存连接到分区,还可以连接到分区块设备,以便一次缓存其所有分区。就像 flashcache 一样,enchanceio 模块是使用 DKMS 构建的,可以与较旧的内核一起使用。
来源:Debian
DM Cache 的优势
DM 缓存使用简化的架构,使其具有适应性且易于定制。用户可以根据需要处理的数据量或数据值调整块大小和缓存容量。如果特定应用程序需要按顺序存储大量数据,用户可以为此目的配置缓存。如果用户希望同时将信息记录在数据库中和缓存中,这不会干扰缓存的操作。
DM 缓存的缺点
使用 DM 缓存的一个缺点是 Linux 操作系统用于存储元数据的空间有限。如果缓存很大,并且包含许多小块,那么存储的信息就会加起来很多元数据。要解决这个问题,用户必须增加块大小。另一个可能的问题是,在服务器崩溃后,缓存元数据可能不再与缓存内容匹配,尽管最终可以恢复正确的配置。
资料来源:Fraser Sherman 补充
因此,从以上信息可以看出,EnhanceIO 是最佳选择,但我认为,由于它基于 Flashcache,因此我会选择闪存缓存。但在做出最终决定之前,我肯定会尝试这两种方法。
答案2
反馈:大约一年前,我在 Ubuntu 上以写回模式安装了 flashcache 标准 deb 软件包,以将 /home (2TB) 缓存到 SSD 上的 50GB 切片中。它表现非常出色,没有任何问题。我遇到过几次与 X 相关的“挂起”(即不是由 flashcache 引起的),并使用过几次“Ctrl-Alt-PrtScr REISUB”来恢复,没有任何问题,也没有损坏问题。我使用 flashcache 是因为 a) 有可用的 deb 并且 b) 它不需要备份和恢复 /home。