如何将小型SSD用作较大硬盘的缓存?


58

我想使用(小)SSD磁盘作为大硬盘的缓存。我意识到有一些基于硬件的产品可以执行此操作:HighPoint RocketHybrid HBAIntel SmartResponse等。我只能找到一种只有软件的产品:Diskeeper的ExpressCache

ExpressCache可以智能,自动地结合SSD和HDD的最佳属性,而无需用户付出任何努力或先决条件,从而使用户获得了两全其美的优势;动态性能和可扩展容量。由于可以使用小至4GB的SSD,因此它为制造商提供了难以置信的价格合理的解决方案。

ExpressCache由用户模式和内核模式组件组成,将SSD用作智能缓存并与HDD结合使用,可提高整体系统性能,并大大加快Windows PC启动,应用程序启动和数据访问速度。

但是,此产品仅OEM

我一直在寻找替代方案,但没有成功……我无法理解:这听起来像是个好主意,不需要额外的硬件,并且它确实可以在不花大钱的情况下提高磁盘性能。

因此,我要问是否有人知道有适用于Windows或Linux的软件。或者,如果您认为这是个坏主意,我想知道为什么。

注意:ReadyBoost并非真的适合于此。它是基于以下假设进行的:磁盘写入确实非常昂贵,对具有大量RAM的系统影响很小,并且如果SSD为100GB +,则无法正确扩展。


PrimoCache(对于Windows)可以做到这一点;它专门使用RAM作为缓存,但可以将SSD分区用作L2缓存-我不认为它的大小是有限的,并且说它甚至可以加快启动时间(假设您使用的是SSD,而不仅仅是内存)。
BrainSlugs83 2014年

Answers:


52

有几种方法可以将SSD用作常规硬盘的缓存。这不是一个新主意,已经有几种实现方式。

在Windows中:

最好的实现是通过NVelo:Dataplex-它具有读取缓存和可选的写入缓存。不幸的是,像ExpressCache一样,它仅适用于OEM。最便宜的购买方法是购买OCZ SSD,该产品将PCIE适配器与小型SSD封装在一起,并使用dataplex软件缓存现有硬盘。

但是,也有纯软件实现:FancyCache-它的工作方式就像您可能期望在块层执行读写缓存一样。它最初以内存高速缓存的形式存在,但是最近获得了对第二层SSD高速缓存(有点像ZFS L2ARC)的支持,它可以任意大。

如果您只是想以写入持久性为代价(例如,与UPS完美结合)来最大限度地提高IOPS,则可以选择以下替代方案:SuperCache-仅使用RAM,而不使用SSD。但是,与其他硬件不同的是,在商品硬件上,IOPS会愉快地超过100,000。例如,对于缓存包含数据库索引的块设备非常有用。从本质上讲,它可以为任何大小的卷提供类似RAM-Disk的性能(假设基础设备可以跟上写入卷的速度)。

在Linux中,情况会更好一些:

正如前面提到的那样,您拥有Flashcache-它运作良好,但是其性能随您的工作量而变化很大。在许多情况下,访问本地性很差,它的性能可能不如您期望的那样。不知道为什么会这样,但是对于大多数工作负载来说,这是一个不错的选择。

最佳选择(尽管代码仍未完全“可以投入生产”)是bcache(更多信息,尽管此处有些过时)-它具有我尚未尝试过的所有SSD缓存的最佳性能,并且与其他所有缓存都不一样提到的选项支持在单个缓存中缓存多个块设备。它还支持(尽管我还没有亲自尝试过,但可能还无法正常工作)多个缓存设备,因此您可以使用多个便宜的SSD来最大化IOPS。该代码位于git存储库中:git://evilpiepirate.org/~kent/linux-bcache.git。尽管尚未确定将其合并到下一个内核版本中的讨论。

就我个人而言,我发现性能最好的选项是bcache(我的工作量主要与数据库有关,尽管我也完整地缓存了我的主要笔记本电脑)。以我的经验,HDD的顺序写入吞吐量通常是瓶颈,因为高速缓存会很快填满,而HDD需要写入高速缓存的扇区,因此速度越快越好。当然,这是针对写繁重的工作负载,在更加均衡的读写工作负载中,情况可能会有所不同。

我还应该警告您,您将以最快速度烧毁SSD的写入限制。我目前正在使用我的第三个OCZ Vertex3。SSD虽然非常快,但是却不是很耐用,因此希望每隔几个月更换一次。


2
感谢您的好评!至于“倦怠”率,我认为这是大多数这些产品仅用于OEM的主要原因,例如OCZ Synapse(与Dataplex捆绑在一起的Cache SSD)被
超额配置了

2
@Supercilious为什么不只使用SLC或eMLC SSD?与频繁更换不可靠的MLC闪存相比,这必须更有效(当然也更可靠)。
Miles Erickson,2012年

6
@Supercilious这是你失去我的地方。稍微更长的寿命?SLC和EMLC闪存的寿命是数量级更大,而不是稍微更大。
Miles Erickson,2012年

1
@Firebug我已经在堆栈上处于非活动状态一段时间了,但是我发布的答案仍然有效。尽管较新的SSD提供更高的写入耐久性,但它们仍然会很快失效。在我的机器(主要是HP DL360 G9和某些Lenovo)中,每个机械SAS或SATA驱动器都会烧掉数十个SSD。2017年,我的三星SM863a SSD平均使用寿命为8个月,这是我发现的最好的SSD。这完全可以满足我的工作量,但值得记住的是,持续的写入活动将在一年内杀死所有SSD。
目空一切

1
@Firebug是的,所有繁重的工作都是在我的服务器(主要是HP DL360 Gen9)上完成的,工作负载是30%/ 70%读/写,并且SSD基本上以24/7的速度在300-350MB / s的速度下运行,很少峰值超过500MB / s。所有I / O都是随机的,具有64KB的块大小和整个SSD的偶发批量TRIM。在台式机上使用,杀死这些数据中心固态硬盘需要花费数年的时间,但消费者固态硬盘的180-300TB TBW仍然是IMO较低的水平。
卑鄙的

10

有一个非常有趣的Linux软件,供繁忙的服务器使用:

https://github.com/facebook/flashcache

在SATAII上,在RAID6设置中有8个电磁旋转驱动器,性能得到了显着提升。使用SATAIII闪存缓存SSD设备进行随机读取(540读取,420写入)会使我的SATAII总线饱和到几乎90-95%-我有280MB的读取(在高峰时间),270MB的写入(仅在模拟负载下……在生产中从未达到) 。现在大约持续半年。磁盘驱动器写入速度为... 20-30MB / s-使用备用I / O时间...


5

您的SSD有多大?

通过在SSD上安装整个操作系统和软件,同时在HDD上存储大量数据,可能会达到最佳效果。

如果您的SSD很小,则在其上放置页面文件可能会很有用。我怀疑Windows是否会将大量文件缓存,但是至少,它将允许您将最近使用的应用程序内存和文件缓存在RAM中,同时允许快速切换到不常用的应用程序(驻留在页面文件中,而页面文件又位于SSD上)。


1
我的SSD是120GB。尽管这对于一个工作集缓存来说已经足够了,但绝对不足以托管我的所有系统文件和应用程序。其次,我不想将MSSDK示例代码(很少读取)保存在SSD上,而我自己的代码每天要在磁盘上访问100次。而且,我需要两个SSD来进行RAID —我永远不相信我的数据仅是一个磁盘,无论是磁的还是固态的……
haimg 2012年

2
您可以使用符号链接并将MSSDK / Windows安装程序缓存/等移至硬盘驱动器(同时使符号链接从系统驱动器上的所需路径指向新位置);并将您自己的代码放在SSD(需要快速随机访问的部分)上。与使用RAID相比,使用备份可能是更好的解决方案。
penartur'2

3
此解决方案+1。实际上,使用SSD会产生更好的性能。从另一级缓存中获得的好处不大,而将SSD用作系统分区将不会有什么好处。
Jesse 2012年

1
我将ssd用于系统文件,将hdd用于主文件夹。我注意到硬盘是一个瓶颈,然后您需要从中读取很多文件,fe fire fox首先在启动后启动。
aisbaa

2

FancyFlash完成了这项工作。我在实验室有自己的Hyper-V R2服务器@home,并且有OCZ Revo Hybrid PCIe驱动器。不幸的是,内置缓存驱动程序仅适用于Windows7。没有针对Windows Server 2008 R2的计划。因此,我在Hyper-V主机上安装了FancyFlash驱动程序,并在Revo Hybrid上配置了我的SSD以充当1TB嵌入式磁盘(我的VHD所在)的缓存。塔达!可以有效地加速我的虚拟机!:)

我希望最终版本的价格合理...


3
您是否有此软件的链接?
haimg 2012年

我想知道他的意思是“ FancyCache”(现在称为PrimoCache)吗?-大约在发布此答案(IIRC)的时间处于测试版(最终价格未知)。但是已经两年了,他的得分为21分,所以我怀疑他会再次登录并告诉我们。:-/
BrainSlugs83 2014年

2

eBoostr是一种应用程序,可缓存大量经常使用的应用程序,以加快系统运行速度。通常,它意在使用USB驱动器或未使用的RAM,但没有真正的理由不能使用SSD。

它适用于Windows的所有主要版本,听起来很像您所追求的。

  • eBoostr跟踪系统上应用程序的使用情况,并且可以预缓存最常用的应用程序的数据,从而减少了加载延迟并优化了性能
  • 易于使用的拖放界面使您可以有选择地增强系统上的应用程序,并优先处理由eBoostr增强的应用程序
  • 减少加载时间,减少硬盘访问量,有助于延长使用eBoostr的笔记本电脑和上网本的电池寿命

了解更多:http : //www.eboostr.com/feature


2

虽然可以在单个SSD上加载整个操作系统和应用程序,但您可能不应该这样做。随着时间的流逝,SSD会因连续重写而减慢速度,因此应“刷新”以加快备份速度。最好使用可以找到的最快的硬盘,例如SATA 600 Gbps驱动器,并获得在硬件级别支持SSD缓存的主板或其他控制器。华硕ROG Maximus主板均支持内置此功能。

但是,在构建这个新系统之前,我已经找到了一种从SSD中获得一些好处的方法。我在SSD上建立了一个内存缓存,即使我的主硬盘上有一个缓存,Windows似乎也会自动使用速度更快的SSD。我还将所有Internet Explorer缓存移到了SSD,该SSD至少加快了2到3倍的冲浪和互联网视频速度。

我将使用1150插槽格式的第四代Intel i7处理器在华硕Maximus VI Hero主板上构建新系统。似乎是一种不错的性能水平,而无需花费数千美元才能达到目标。包括新版本的Windows,总成本预计在$ 800-900之间。


2

可以使用ReadyDrive和ReadyBoostWindows I / O技术。由于这些技术可追溯到SSD引入之前,因此关于它们是否可以与SSD一起使用或效果如何的信息很少。

对于ReadyBoost,请参见有关如何将SSD用作ReadyBoost缓存磁盘的一些提示,尽管其他线程对此相反。

ReadyDrive是Windows Vista的一项功能,它使配备有混合驱动器或其他闪存缓存(例如Intel Turbo Memory)的Windows Vista或更高版本的计算机可以更快地启动并在更短的时间内从休眠状态恢复。

也可以将页面文件放在SSD上,尽管如果系统内存足够,则预期的改进有限。

如penartur所述,最好的改进来自在SSD上安装Windows。


1
SSD故障率显着低于传统硬盘驱动器-可能曾经是相反的情况,但在提出这一问题时并非如此。几年前,人们对SSD的写入-擦除周期存有很多担忧,每个人似乎都暂时忘记了HDD极其脆弱且经常出现故障,而且通常没有任何警告。除非您要连续数年每周写入数TB的数据,否则对写入周期的担忧几乎绝不是现代损耗平衡的问题。
thomasrutter

1

下载ExpressCache

您是否在Google上搜索过ExpresCache?我可以看到可以从中下载

  • SanDisk-右侧的链接;仅适用于SanDisk SSD
  • 联想 -指南中的以下链接;可能也有硬件依赖性

尤其是在Lenovo,您可以下载x86或x64版本。Sandisk似乎只提供ExpressCacheSetup.exe,但我不知道它支持哪种架构。也许一个也许两个...


两者都需要来自各自供应商的硬件。除非通过硬件检查,否则软件无法正确安装。
2014年

0

ExpressCache仅是OEM产品。我可以肯定地说,它具有内部控制,可以防止将其用于许可的OEM以外的硬件。

目前看来,FancyCache是​​唯一适用于一般用途/非oems的工具。我可能会误解一些东西,但是我认为SSD上的readyboost之类的东西会很快烧毁其写入周期。对我而言,这里的想法是只用一个驱动器号来覆盖主HDD和SSD,将最常访问的,通常是静态的文件放在SSD上,并将不那么常用和经常修改的文件存储在硬盘上。这将带来SSD的性能优势和HDD的长期生存能力,并且不需要用户必须尝试在SSD和HDD的空间之间取得平衡。至少对于我来说,这种需求如此明显,以至于我对缺乏解决方案感到震惊。


-2

这里没有命名为VeloSSD。我不能给这个软件一个好声誉,因为它经常破坏我的数据方式,但是其他用户报告说它运行良好


2
仅将产品名称添加到产品列表中并不能解决问题,而且这种“不断增长的建议”并不是很有用。再增加一点代表,您可以将其发布为评论。
fixer1234 '16
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.