我有一个文件服务器,其中有一堆磁盘在BTRFS池中一起运行,并且想要添加一个SSD用于缓存.我主要不是在加快速度,而是想抓住常规的小型访问,以便能够在大量使用时关闭硬盘(不全天候运行它们将节省能源并且应该使磁盘持续时间更长).
据我所知,目前在Linux,dm-cache和bcache中实现了两种SSD缓存技术. dm-cache仍被告知效率更高,但两者都在进行开发,我不需要调整绝对最大效率.
阅读bcache’s documentation,我遇到了这些选择:
writeback_delay: When dirty data is written to the cache and it
previously did not contain any, waits some number of seconds before
initiating writeback. Defaults to
30.writeback_percent: If nonzero, bcache tries to keep around this
percentage of the cache dirty by throttling background writeback and
using a PD controller to smoothly adjust the rate.writeback_running: If off, writeback of dirty data will not take
place at all. Dirty data will still be added to the cache until it
is mostly full; only meant for benchmarking. Defaults to on.
为writeback_delay设置足够大的值似乎可以为我完成这项工作:每小时只写回一次,或者(如果缓存运行完全,我认为会发生这种情况).
这是一个合理的设置,我是否还考虑了其他任何可以成功旋转磁盘的东西?如果满足我的要求,我也可以选择完全不同的路线.
似乎@gorkypl是looking for another solution on a similar problem,但是有不同的要求和环境,但也没有得到答案.
解决方法:
我认为你的方法太复杂了.
读取缓存:这里没什么可做的.如果你有足够的内存,这将在linux中自动完成.
写缓存基本上这就是你想要的.但是如果最后写入磁盘也会导致唤醒.
因此,您可以将受影响的文件系统直接放在ram-disk / dev / shm或ssd上.
省电:我不认为频繁的降速/升频会节省电力.相反,磁盘可能会提前死亡,因此生产过程会产生额外的能耗.旋转也非常耗电.