如何使用 SSD 进行缓存,使我的硬盘转速下降?

Jen*_*rat 10 linux cache ssd hard-disk bcache

我有一个文件服务器,其中有一堆磁盘在 BTRFS 池中一起运行,并且想要添加一个 SSD 进行缓存。我主要不是在加快速度之后,而是想捕捉常规的小访问,以便能够在大部分时间关闭硬盘而不是大量使用(不运行它们 24/7 将节省能源,并且应该使磁盘使用寿命更长)。

据我所知,目前在 Linux 中实现了两种 SSD 缓存技术,dm-cache 和 bcache。dm-cache 仍然被告知效率更高,但两者的开发正在进行中,我不需要调整绝对最大效率。

阅读bcache 的文档,我想到了这些选项:

writeback_delay:当脏数据写入缓存并且之前不包含任何内容时,在启动回写之前等待几秒钟。默认为 30。

writeback_percent:如果非零,bcache 会尝试通过限制后台回写和使用 PD 控制器平滑调整速率来保持缓存脏的这个百分比。

writeback_running:如果关闭,则根本不会发生脏数据的写回。脏数据仍然会被添加到缓存中,直到它大部分满为止;仅用于基准测试。默认为开。

writeback_delay为我设置一个足够大的值似乎可以完成这项工作:每小时只回写一次,或者(我认为这会发生)如果缓存已满。

这是一个合理的设置,我是否考虑过其他任何方法来成功降低磁盘转速?如果它满足我的要求,我也可以走完全不同的路线。

@gorkypl 似乎正在寻找针对类似问题的另一种解决方案,但具有不同的要求和环境,并且还没有收到答案。

Nil*_*ils 2

我认为你的方法太复杂了。

读取缓存:此处无需执行任何操作。如果你有足够的内存,这在 Linux 中会自动完成。

写缓存基本上这就是你想要的。但如果写入最终写入磁盘,也会导致唤醒。

因此,您可以将受影响的文件系统直接放到 ram-disk /dev/shm 或 ssd 上。

省电:我不认为频繁降速/升速会省电。相反,磁盘可能会更早失效,因此生产过程会产生额外的能源消耗。而且旋转起来非常耗电。