
Usando dm thin, entendo que agora é possível armazenar os metadados separadamente do próprio instantâneo.
Alguém sabe se seria possível criar instantâneos apenas de metadados que não incorressem na mesma sobrecarga de E/S? Estou interessado em saber quais blocos foram alterados, mas não no conteúdo do bloco antigo.
Minha principal motivação para esta pergunta é que me pergunto se uma solução de backup usando algo como lvmsync (https://github.com/mpalmer/lvmsync) - mas não incorrendo em nenhuma sobrecarga significativa.
A documentação é um pouco leve em informações sobre como conseguir isso, meus pensamentos eram sobre a criação de um pool fino baseado em /dev/null ou similar que descarta silenciosamente quando gravado.
Responder1
O equivalente do mapeador de dispositivo /dev/null
é o alvo zero ( dmsetup create --table '0 <nsectors> zero' myzeroes
). Acho que você poderá usar isso como um dispositivo de dados para seu thin pool; e, em seguida, faça um snapshot do seu volume original (como uma origem externa) para rastrear quais alterações são feitas nele. Tudo isso é feito fora do LVM; você precisa de toda a flexibilidade do DM, enquanto o LVM atende a casos de uso comuns de maneira mais conveniente e segura.
Com ajuda dethin-provisioning.txt:
dmsetup create --table "0 $nsectors zero" myzeroes
dmsetup create pool \
--table "0 $nsectors thin-pool $metadata_dev /dev/mapper/myzeroes \
$data_block_size $low_water_mark"
thinnum=0
dmsetup message /dev/mapper/pool 0 "create_thin $thinnum"
origsectors=$(blockdev --getsz /dev/myorigin)
dmsetup create snap \
--table "0 $origsectors thin /dev/mapper/pool $thinnum /dev/myorigin"