O instantâneo lvcreate cria um instantâneo maior que o tamanho do instantâneo

0

Estou correndo

lvcreate --size $snapshot_size --snapshot --name mdb-snap-00 /dev/vg0/mongodb

para criar um instantâneo da nossa partição mongo.

$snapshot_size é 362M

No entanto, depois de criá-lo, lsblk me dá

nvme0n1                 259:0    0 442.4G  0 disk 
├─vg0-mongodb-real      252:1    0 221.2G  0 lvm  
│ ├─vg0-mongodb         252:0    0 221.2G  0 lvm  /mnt/data
│ └─vg0-mdb--snap--00   252:3    0 221.2G  0 lvm  
└─vg0-mdb--snap--00-cow 252:2    0   364M  0 lvm  
  └─vg0-mdb--snap--00   252:3    0 221.2G  0 lvm

Este é um problema para mim, porque eu estou tentando colocar o tubo de snapshot no gzip e canalizar isso para um bucket do aws, mas o timeout sempre. Acabei de saber que isso acontece porque ele está tentando fazer o disco 221G inteiro mesmo que os dados nele e o tamanho do instantâneo especificado sejam de apenas 362Mb

Editar

root@ip-10-0-97-77:~# lvs
  LV          VG   Attr       LSize   Pool Origin  Data%  Meta%  Move Log Cpy%Sync Convert
  mdb-snap-00 vg0  swi-a-s--- 364.00m      mongodb 0.48                                   
  mongodb     vg0  owi-aos--- 221.15g
    
por Jonathan 23.08.2017 / 09:51

1 resposta

1

Volumes lógicos são múltiplos do tamanho do PE (extensões físicas), que é por padrão 4 MiB. 362 não pode ser dividido por 4, portanto, o LVM arredonda o tamanho para 364.

Não acho que seja possível alterar facilmente o tamanho do PE.

Você poderia criar um arquivo MiB de 362, no entanto, colocar um dispositivo de loop nele e configurar o instantâneo manualmente ( dmsetup ), fazendo com que ele aponte para lá. Mas isso é provavelmente algo para usuários experientes.

Você está lendo mais do que o pretendido 362/364 MiB porque está lendo o dispositivo errado. O dispositivo de instantâneo é uma cópia do original, portanto, tem o mesmo tamanho. Você tem que ler diretamente do dispositivo COW.

    
por 23.08.2017 / 10:35

Tags