カーネルメモリの枯渇問題が発生した後、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コマンドによって自動的に決定されます。キャッシュは連続書き込みモードで生成されます。その後、書き込み保存に変更してブロックが昇格しましたが、キャッシュをフラッシュしようとすると、ダーティブロックをディスクに書き込むことができませんでした。
キャッシュを安全に分割できないため、LV全体を破壊する必要があります。 --chunksize=512k を使用してキャッシュプールを再生成すると、キャッシュリフレッシュが機能します。まだLVMキャッシュを使用していますか?現在のキャッシュブロックサイズはいくらですか?