É possível estender o dispositivo de dados de um pool Thin Provision configurado pelo mapeador de dispositivos?

1

TL; DR:

Como posso estender o Thin-Pool se não estiver usando o LVM, mas o próprio Device Mapper diretamente?

Versão detalhada:

Até onde eu sei, quando criamos um pool thin por dmsetup , podemos definir um low_water_mark;

assim que a marca d'água for alcançada, um dmevent será enviado e o daemon de proteção poderá estender o pool imediatamente.

No entanto, não consegui encontrar o caminho para realizar tal tarefa de maneira trivial; e eu não tenho ideia de como isso poderia ser alcançado.

Além disso, Eu cavo em dm-thin.c e descubro que há uma função chamada maybe_resize_data_dev ,  que aumentará o dispositivo de dados em r = dm_pool_resize_data_dev(pool->pmd, data_size) se o espaço restante não for suficiente.

No entanto, enquanto isso, o próprio Device Mapper impede que você faça isso verificando o status do dispositivo de dados:

if (le32_to_cpu(disk_super->data_block_size) != pmd->data_block_size) { /* Verify the data block size hasn't changed */ if (le32_to_cpu(disk_super->data_block_size) != pmd->data_block_size) { DMERR("changing the data block size (from %u to %llu) is not supported", le32_to_cpu(disk_super->data_block_size), (unsigned long long)pmd->data_block_size); r = -EINVAL; goto bad_unlock_sblock; }

que é corrigido no commit 9aec862, intitulado dm thin metadata: do not allow the data block size to change .

Os códigos são citados de drivers/md/dm-thin.c (ref-1) e drivers/md/dm-thin-metadata.c (ref-2)

E o que mais me confunde é que eu sabia que isso poderia ser feito se o pool fosse criado por utilitários LVM; isto é %código% (do Guia publicado pela Red Hat), que torna Eu me pergunto como isso é conseguido.

ref-1: drivers / md / dm-thin.c # L3246-L3292

ref-2: drivers / md / dm-thin-metadata.c # L617-L621

Desculpe, não posso postar mais de dois links porque estou muito noob.

    
por Ruinland 01.03.2016 / 15:35

0 respostas