Eu tenho um LVM e queria usar o bcache para armazenar em cache um de seus LVs. (Sim, eu sei que poderia usar o lvmcache, mas estava tendo problemas para inicializar e desisti de usá-lo.)
Primeiro, useiblocospara converter o LV em um dispositivo de apoio bcache (isso pareceu realmente funcionar!):
blocks to-bcache /dev/my_vg/my_lv
Criei um dispositivo de cache no meu SSD:
make-bcache --block 4k --bucket 2M -C /dev/sdc4
Em seguida, tentei anexar o cache ao dispositivo de apoio:
bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach
Em seguida, reiniciei minha máquina (depois de adicionar /dev/bcache0
) /etc/fstab
e percebi que o cache não estava funcionando.
# cat /sys/block/bcache0/bcache/state
no cache
# bcache-super-show /dev/my_vg/my_lv | grep cache_state
dev.data.cache_state 0 [detached]
Estou esquecendo de algo? Existe outro comando que preciso usar para ativar o cache?
Por que o bcache não gosta do meu dispositivo de cache e não me permite conectá-lo ao meu dispositivo de backup? Usei os valores errados para --block
e --bucket
?
Responder1
Consegui consertar isso recriando o superbloco no /dev/sdc4
. Parece que --block 4k --bucket 2M
estava incorreto e é por isso que o dispositivo de cache não estava conectado.
Limpei o superbloco e executei:
make-bcache -C /dev/sdc4
Agora, quando eu fiz:
echo 'uuid' > /sys/block/bcache0/bcache/attach
funcionou!
Responder2
Eu tive o mesmo problema:
make-bcache --block 4k --bucket 2M -C /dev/nvme0n1p1
causou o erro de gravação: argumento inválido.
Especificamente, foi o --block 4k que causou o problema.
make-bcache --bucket 2M -C /dev/nvme0n1p1
Funcionou perfeitamente.
Responder3
Primeiro, tente alguma limpeza:
echo $cset_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
echo $backing_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
Use bcache-super-show
para obter os uuids.
Em seguida, tente novamente se registrar:
echo $cset_uuid | sudo tee /sys/fs/bcache/register
echo $backing_uuid | sudo tee /sys/fs/bcache/register
O uuid do cache deve existir em /dev/fs/bcache se o dispositivo de cache for registrado com sucesso.
Se o seu dispositivo de backup tiver um cache_state
de invalid
, seus dados de backup estarão à mercê de fsck
.
If bcache-super-show
diz que o dev.data.cache_state
estado de apoio é clean
e cset.uuid
consiste apenas em zeros, o dispositivo bcache está no estado inválido e deve ser recriado. [fonte]
No entanto, se estiver limpo, você pode tentar forçar a inicialização do dispositivo de apoio sem dispositivo de cache:
echo 1 | sudo tee /sys/class/block/$dev/bcache/running