Como posso usar um "pool de cache LV" do lvmcache para vários LVs de origem?

7

Eu tenho um computador novo e brilhante com um SSD não tão grande (120 GB) e dois HDs de ferrugem gigante (3 TB cada). Quero particioná-lo da seguinte forma:

  • swap (~ 128 GB), sistema operacional (~ 128 GB) e partições de dados (todo o restante) distribuídas pelos HDs
  • pequena partição de inicialização no SSD
  • todo o restante do espaço do SSD é usado para um pool de cache
  • o conjunto de cache deve ser compartilhado entre todas as partições HD, exceto talvez não a troca

Eu tentei fazer isso com o lvmcache e tive os seguintes problemas:

  • Se você acabou de criar um pool de cache de maneira óbvia (como descrito, por exemplo, aqui ) você só pode atribuir isso para armazenar em cache um único LV de origem. Então, eu poderia tê-lo para o sistema operacional ou para os dados, mas não os dois.

  • Eu tentei contornar isso criando um "thin pool" abrangendo todos os HDs, pensando que eu poderia armazenar em cache todo o thin pool, em seguida, atribuir OS e dados LVs a partir disso, mas fui informado de que não é possível armazenar em cache um pool thin. (O lvmthin manpage não faz muito sentido, é possível que eu tenha feito essa parte errada.)

Estou sem ideias. Alguém pode sugerir como fazer isso funcionar? Note que eu não sou casado com lvm, se bcache + plain MD (para o striping) pode fazer isso, ou alguma outra ferramenta que eu não conheço, então seria Just Fine Too.

    
por zwol 07.08.2015 / 00:03

2 respostas

2

Em um kernel principal que usa o mesmo cache para vários dispositivos de origem, NÃO é suportado pelo dm-cache (que é o que o lvmcache usa por baixo) devido às raças que acessam os metadados. Consulte Re: [dm-devel] dm-cache: o mesmo cache pode ser usado com vários dispositivos de origem? para um comentário de 2013 de um desenvolvedor.

No entanto, para ser completo, o desenvolvedor original do dm-cache tem suporte para um repositório de teste abandonado " vários dispositivos de origem no mesmo dispositivo de cache " (consulte link para detalhes), mas este código não está nos kernels da linha principal.

    
por 01.11.2016 / 14:46
0

Você pode criar um volume em cache e convertê-lo em thin-pool.

pool de cache (dados de cache + metadados de cache) - > volume em cache (pool de cache + volume lento grande original) - > piscina fina em cache

Neste exemplo, vg0 é o seu grupo de volumes com volumes físicos / dev / small-fast-disk e / dev / big-slow-disk. Todos os volumes lógicos devem estar no mesmo grupo de volumes.

cria um volume cachepool (dados de cache e metadados de cache em um comando)

lvcreate --type cache-pool --name cachepool --size 128G vg0 /dev/smal-fast-disk

criar volume de cache

lvcreate --type cache --cachepool vg0/cachepool --size 3T --name thincachevol vg0 /dev/big-slow-disk

converte o volume em cache para o volume thin

lvconvert --thinpool vg0/thincachevol
    
por 29.10.2016 / 15:11