我想使用 (小型) SSD 磁盘作为大型硬盘的缓存。我知道有基于硬件的产品可以做到这一点:HighPoint RocketHybrid HBA,英特尔智能响应以及其他。我能找到的纯软件产品只有一种:Diskeeper 的 ExpressCache:
ExpressCache 可以智能地自动结合 SSD 和 HDD 的最佳属性,无需用户付出任何努力或具备任何先决知识,因此用户可以同时获得动态性能和可扩展容量。由于可以使用小至 4GB 的 SSD,因此它为制造商提供了非常实惠的解决方案。
ExpressCache 由用户模式和内核模式组件组成,使用 SSD 作为智能缓存,与 HDD 结合使用,以提高整体系统性能,并大大加快 Windows PC 的启动、应用程序启动和数据访问速度。
然而,这款产品仅限 OEM!
我寻找替代方案,但没有任何成功......我无法理解这一点:这听起来是个好主意,不需要额外的硬件,而且它可以在不花大钱的情况下真正提高磁盘性能。
所以,我想问一下是否有人知道有哪个软件可以做到这一点,无论是适用于 Windows 还是 Linux。或者,如果您认为这是一个坏主意,我想知道为什么。
注意:ReadyBoost 并不真正适合这种情况。它建立在磁盘写入非常昂贵的假设之上,对具有大量 RAM 的系统影响很小,并且如果您的 SSD 为 100GB 以上,则无法正确扩展。
答案1
有多种方法可以将 SSD 用作常规硬盘的缓存。这不是一个新想法,而且已经有多种实现方式。
在 Windows 中:
最好的实现是由 NVelo 实现的:数据复用系统- 它具有读取缓存和可选写入缓存。不幸的是,与 ExpressCache 一样,它仅供 OEM 使用。获得它的最便宜的方法是购买 OCZ SSD,它将 PCIE 适配器与小型 SSD 打包在一起,并使用 dataplex 软件来缓存您现有的硬盘。
但是也有纯软件实现:缓存- 它的工作原理与您可能期望的在块层执行读写缓存一样。它主要作为内存缓存存在,但最近获得了对第二层 SSD 缓存(有点像 ZFS L2ARC)的支持,该缓存可以任意大。
如果你只是希望以写入耐用性为代价来最大化 IOPS(例如与 UPS 结合使用效果很好),那么替代方案可能是这样的:超级缓存- 这将仅使用 RAM,不使用 SSD。但与其他产品不同,它将在商用硬件上轻松超过 100,000 IOPS。例如,对于缓存包含数据库索引的块设备非常有用。基本上为任何大小的卷提供类似 RAM-Disk 的性能(假设底层设备可以跟上写入卷)。
在 Linux 中,情况就好一些:
正如之前的海报所提到的,你有闪存缓存- 它工作得很好,但其性能会随您的工作负载而变化很大。在许多情况下,如果访问局部性较差,它的性能将不如您预期的那样好。不知道为什么会这样,但对于大多数工作负载来说,这是一个很好的选择。
最好的选择(尽管代码还没有完全“准备好投入生产”)是缓存(更多信息这里(尽管其中有些内容已经过时)- 它是我尝试过的所有 SSD 缓存中性能最好的,并且与所有其他提到的选项不同,它支持在单个缓存上缓存多个块设备。它还支持(尽管我个人还没有尝试过,它可能还不起作用)多个缓存设备,因此您可以使用多个更便宜的 SSD 来最大化您的 IOPS。代码位于 git 存储库中:git://evilpiepirate.org/~kent/linux-bcache.git。有传言称会将其合并到下一个内核版本中,但尚未最终确定。
我个人认为性能最好的选项是 bcache(我的工作量主要与数据库有关,尽管我也缓存了整个主笔记本电脑)。根据我的经验,HDD 的连续写入吞吐量通常是瓶颈,因为缓存很快就会填满,而 HDD 需要写入缓存的扇区,因此速度越快越好。当然,这是针对写入繁重的工作负载而言的,在更平衡的读写工作负载中,情况可能会有所不同。
我还应该警告你,全速运行会很快耗尽 SSD 的写入限制。我目前使用的是第三台 OCZ Vertex 3。SSD 虽然速度非常快,但耐用性却不高,所以每隔几个月就要更换一次。
答案2
Linux 上有一款非常有趣的软件,被非常繁忙的服务器使用:
https://github.com/facebook/flashcache
在 SATAII 上,8 个磁性旋转驱动器在 RAID6 设置中,我获得了显著的性能提升。使用 SATAIII 闪存缓存 SSD 设备的随机读取(540 次读取,420 次写入)使我的 SATAII 总线饱和到几乎 90-95% - 我有 280MB 读取(在高峰时间),270MB 写入(仅在模拟负载下......从未在生产中达到)。它持续了大约半年。磁盘驱动器写入速度为... 20-30MB/s - 使用备用 I/O 时间......
答案3
你的 SSD 有多大?
也许最好的效果是将整个操作系统和软件安装在 SSD 上,同时将大量数据存储在 HDD 上。
如果您的 SSD 较小,那么将页面文件放在其中可能会很有用。我怀疑 Windows 是否会将很多文件放入缓存中,但至少,它可以让您将最近使用的应用程序放在内存中,并将文件缓存在 RAM 中,同时允许快速切换到不太最近使用的应用程序(这些应用程序将驻留在页面文件中,而页面文件又位于 SSD 上)。
答案4
埃博斯特是一款可以缓存大量常用应用程序的应用程序,旨在加快系统速度。通常,它应该使用 USB 驱动器或未使用的 RAM,但您完全可以改用 SSD。
它适用于所有主要版本的 Windows,并且听起来很像您所追求的。
- eBoostr 跟踪系统上应用程序的使用情况,并可以预先缓存最常用应用程序的数据,从而减少加载延迟并优化性能
- 易于使用的拖放界面允许您有选择地增强系统上的应用程序,以及优先考虑由 eBoostr 增强的应用程序
- 减少加载时间和减少硬盘访问有助于延长使用 eBoostr 的笔记本电脑和上网本的电池寿命