LVM 写入缓存未完全清空

LVM 写入缓存未完全清空

我正在努力解决 LVM 问题。我有一个附加到现有 LV 的写入缓存。我一直在轮询 LV 以及 writecache

lvs -o+writecache_total_blocks,writecache_free_blocks

但无论我等待多久,空闲块永远不会达到总块数,几乎就像缓存在写入后没有完全清空一样。它只达到了总块数的大约一半,然后就坐在那里。

这是预期的行为,还是我的缓存在写入后没有正确刷新?

答案1

如果您使用lvconvert --type writecache(而不是--type cache),则缓存写回在低/高水位线系统中工作:当缓存使用率达到高水位线时回写开始(一些快速谷歌搜索表明这可能是 50%),并在达到高水位线时停止低水位线(默认可能是 45%)。您的体验似乎符合预期的默认行为。

如果您希望缓存在写回时完全变空,您可能需要将低水位线设置为 0%。这将是--cachesettings 'low_watermark=0'创建缓存时的选项。或者您可能想要设置--cachesettings 'cleaner=1'逐渐刷新缓存中的所有数据,就像从 LV 中删除缓存时如何执行lvconvert --splitcache或将执行此操作一样。lvconvert --uncache还有其他可调设置;有关更多详细信息,请参见lvmcache(7)手册页。

如果您没有设置任何--cachesettings选项,写入缓存将使用内核内置默认值工作。任何自定义的缓存设置都可以通过以下方式验证lvs -o +cache_settings:如果缓存使用内核默认值,则该CacheSettings列将为空。

相关内容