我在为一个LVM问题而挣扎。我有一个附加到现有LV的写缓存。我一直在轮询LV和写缓存
lvs -o+writecache_total_blocks,writecache_free_blocks
但是无论我等待多长时间,空闲块永远不会到达总块,就好像缓存在被写入之后并没有完全清空一样。它只占整个街区数的一半,然后就坐在那里。
这是预期的行为,还是我的缓存在被写入后没有正确地刷新?
发布于 2021-08-31 09:03:57
如果使用lvconvert --type writecache (而不是--type cache),则缓存写回在低/高水印系统中工作:写回在高速缓存使用率达到高水印时启动(一些快速googling表示这可能是50%),并在达到低水印时停止(默认值为45%)。您的经验似乎符合预期的默认行为。
如果希望缓存在写回时完全为空,则可能要将低水印设置为0%。这将是创建缓存时的选项--cachesettings 'low_watermark=0'。或者您可能希望设置--cachesettings 'cleaner=1',这将逐步刷新缓存中的所有数据,就像lvconvert --splitcache或lvconvert --uncache在从LV中删除缓存时所做的那样。还有其他可调的设置;有关详细信息,请参阅lvmcache(7)手册页。
如果您没有设置任何--cachesettings选项,写缓存将使用内核内置默认值工作。任何定制的缓存设置都可以使用lvs -o +cache_settings进行验证:如果缓存使用内核默认值,则CacheSettings列将为空。
https://unix.stackexchange.com/questions/666971
复制相似问题