60GB SSDでサポートされる200GB LVMボリュームがあります。lvmcache(7)
、Linuxカーネルバージョン4.7.2。私はこれを試みており、fstrim
廃棄が正しく機能しないか、まったく機能しないようです。
$ df /dev/mapper/vg0-test
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-test 199G 46G 143G 25% /media/test
# lsblk -D /dev/mapper/vg0-test
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
vg0-test 0 16M 16G 0
# fstrim -v /media/test
/media/test: 132.4 GiB (142170128384 bytes) trimmed
# lvs -o+devices,cache_total_blocks,cache_used_blocks,cache_dirty_blocks,cache_read_hits,cache_read_misses,cache_write_hits,cache_write_misses,segtype,discards
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices CacheTotalBlocks CacheUsedBlocks CacheDirtyBlocks CacheReadHits CacheReadMisses CacheWriteHits CacheWriteMisses Type Discards
test vg0 Cwc-aoC--- 200.00g [test-cache] 100.00 23.83 0.00 test_corig(0) 983040 983040 39 44554204 5209836 79687783 2798870 cache
fstrim
使用される物理スペースはキャッシュサイズより小さいため、lvmcacheを使用すると、未使用のキャッシュブロックを削除してデフォルトのSSDをクリーンアップできることを願っています。しかし、そのようなことは起こらないようです。
私が持っているカーネルバージョンは私が期待する機能をサポートしていますか? DMとブロックレイヤーコードを読むのは簡単なことではないので、可能であればこの問題を難しい方法で解決しないことをお勧めします。
サポートされている場合は、LVMの設定に問題がありますか?私は廃棄する基本的なLVMの動作が基本的なデバイスに渡すと思いますが、何かが欠けている可能性があります。