lvmcache / dm-cache e descarta no kernel Linux 4.7.x

1

Eu tenho um volume LVM de 200 GB que é apoiado por um SSD de 60 GB usando lvmcache(7) , no kernel do Linux versão 4.7.2. Eu tenho experimentado com fstrim , e parece-me que os descartes não estão funcionando como deveriam (ou não):

$ 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         

Eu esperava que, como o espaço realmente em uso fosse menor que o tamanho do cache, usar fstrim permitiria ao lvmcache se livrar de blocos de dados em cache não usados e também TRIM o SSD subjacente. No entanto, isso não parece acontecer.

  1. O que eu estou esperando ainda é suportado na versão do kernel que eu tenho? Ler o código da DM e da camada de bloco não é trivial, então prefiro não descobrir isso da maneira mais difícil, se possível.

  2. Se for suportado, há algo errado com minha configuração do LVM? Eu acredito que o comportamento padrão do LVM w.r.t. descarte é para passá-los para o dispositivo subjacente, mas talvez haja algo que eu estou faltando?

por thkala 27.08.2016 / 20:51

0 respostas