如何使用 SSD 进行缓存,以便我的硬盘可以降速?

如何使用 SSD 进行缓存,以便我的硬盘可以降速?

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

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

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

写回延迟:当脏数据写入缓存并且之前不包含任何脏数据时,在启动回写之前等待一定秒数。默认为 30。

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

写回运行:如果关闭,则根本不会进行脏数据的写回。脏数据仍会添加到缓存中,直到缓存基本满为止;仅用于基准测试。默认为打开。

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

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

看来@gorkypl 是寻找类似问题的另一个解决方案,但有不同的要求和环境,也没有收到答复。

答案1

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

读取缓存: 在这儿无事可做。如果你有足够的内存,这在 Linux 中会自动完成。

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

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

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

相关内容