增加 LVM 缓存中的块大小后,文件不再提升到缓存

增加 LVM 缓存中的块大小后,文件不再提升到缓存

在遇到内核内存耗尽的问题后,我将 lvmcache 的块大小从默认值(我认为是 64k)增加到更高的 8M。

进行此更改后,尽管不断使用读取和写入,但块似乎并未提升到缓存。然而,元缓存正在被使用(与块大小更改之前的速率大致相似)。缓存是在回写模式下创建的。

media-media: 0 46883430400 cache 8 277/2621440 16384 0/56320 0 2903157 0 1259187 0 0 0 1 writeback 2 migration_threshold 2048 smq 0 rw -

有没有办法调查为什么区块没有被推广?我知道在一般情况下,这么大的块大小可能会降低效率,但肯定应该提升一些块?

答案1

这是一个错误,至少在 RedHat 上,现已修复从 RHEL 7.7 开始。migration_threshold当块大小超过 1MB 时,会出现块大小低于块大小的问题。块以 的倍数提升migration_threshold

LVM2 现在确保 8 个块始终具有最小值。

看:

答案2

LVM 缓存似乎在缓存块大小大于 1M 时出现问题。 (https://marc.info/?l=linux-lvm&m=152948734523317&w=2

在我的例子中,块大小为 1.06M,这是由 lvcreate 命令自动确定的。缓存是在直写模式下创建的。然后我改成writeback,块提升;但是当我尝试刷新缓存时,脏块无法写入磁盘。

我必须销毁整个 LV,因为缓存无法安全分割。使用 --chunksize=512k 重新创建缓存池,并且缓存刷新工作。你还在使用LVM缓存吗?您当前的缓存块大小是多少?

相关内容