我在 HDD 前面有一个 SSD 回写缓存,通过 lvmcache 设置(所以是 dm-cache)。当缓存 LV 未满时( < 100.00%Data%
中的列lvs
),写入会转到缓存设备(通过 监控dstat
)。但是,当缓存 LV 已满时 (Data%
= 100.00%),写入直接进入 HDD,本质上成为直写缓存。即使经过一段时间,块也不会从 SSD 缓存中被逐出,并且性能下降。当我尝试从缓存的 LV 中读取最近读取的数据时,读取来自 SSD,因此我假设整个 SSD 现在已成为读取缓存。这是 dm-cache 的写缓存的预期行为,即使在写回模式下?没有预留空间写吗?这似乎是一个非常糟糕的设计,因为在缓存成为直写缓存之前,用户只能写入一个缓存 LV 的数据。
我的理解是 dm-cache 使用mq eviction algorithm,但这仅适用于读取缓存,因此与我观察到的写入缓存问题无关。
有没有办法为写缓存保留空间,或者同时使用 dm-writecache (我理解它不会做任何读缓存)和 dm-cache ?