Снимок lvcreate создает снимок большего размера, чем размер снимка

Я запускаю

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

, чтобы создать моментальный снимок нашего раздела mongo.

$ snapshot_size составляет 362M

Однако после его создания lsblk дает мне

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

Это проблема для меня, потому что я пытаюсь передать снимок по конвейеру в gzip и передайте это ведру aws, но каждый раз он истекает по таймауту. Я только что узнал, что это происходит из-за того, что он пытается обработать весь диск 221 ГБ, хотя данные на нем и указанный размер моментального снимка составляют всего 362 МБ

Править

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
0
23.08.2017, 11:22
1 ответ

Логические тома кратны размеру )физических экстентов PE (, который по умолчанию равен 4 МБ. 362 нельзя разделить на 4, поэтому LVM округляет размер до 364.

Я не думаю, что можно легко изменить размер PE.

Однако вы можете создать файл размером 362 МБ, поместить в него петлевое устройство и настроить моментальный снимок вручную (dmsetup), указав на него. Но это, вероятно, что-то для опытных пользователей.

Вы читаете больше, чем предполагалось, 362/364 МБ, потому что вы читаете не с того устройства.Устройство моментального снимка является копией исходного устройства, поэтому оно имеет тот же размер. Вы должны читать напрямую с устройства COW.

1
28.01.2020, 02:45

Теги

Похожие вопросы