我在 SSD 上安装了 Linux 服务器系统,并在 HDD 上安装了用户数据。由于 SSD 上还有剩余空间,我想将其用作 HDD 的读取缓存。
考察了各种可能性后,我发现:
dm-cache:根据以下数据,在缓存显示性能改进之前需要进行大量读取https://www.redhat.com/en/blog/improving-read-performance-dm-cache。我认为在我的用例中这不是一个好的策略。
lvmcache:基于 dm-cache 构建,我需要将 SSD 和 HDD 放入一个 LV。我希望保持缓存透明,这样我就可以轻松地将 HDD 放入另一个系统,而无需先执行 LVM 魔法。
Bcache:我需要格式化硬盘才能使用 Bcache。这不是我想要的。
Flashcache:听起来就像我想要的(只需打开它),但根据https://github.com/facebookarchive/flashcache。
EnhanceIO:基于Flashcache构建,但自2015年起已停止使用。
有没有类似于 Flashcache 或 EnhanceIO 但仍积极维护的东西?
答案1
这是对 Linux 内核块缓存的一次不错的调查。其中,我只考虑 lvmcache 和 bcache:集成到内核中并由稳定发行版记录。
两者都需要元数据的格式,这并不容易避免。
如果目标系统也支持缓存,那么将磁盘移至其他系统相对容易。支持 LVM 的发行版会扫描卷,如果没有,则使用简单命令自动扫描。bcache 也类似。
无论哪种方式,都可以通过文件系统 UUID 或标签挂载卷,从设备编号中抽象出来。
在计划内和计划外场景中测试删除缓存的过程。例如,在分离直通模式下使用 bcache。一旦您可以恢复没有缓存的备份磁盘,就无需再恢复到原始的预缓存磁盘。
答案2
EnhanceIO 仍由社区维护。由 lanconnected 分支已针对最近的内核和其他几个分支进行了修补,最后一次提交时间大约是同一时间(2019 年 4 月)。我一直在 Arch 上将它与 btrfs 一起使用通过 dkms几年来并没有发现任何重大问题。