Назад | Перейти на главную страницу

Снимок LVM: после слияния и перезагрузки логический том корневой файловой системы имеет неправильный размер (если не перезагружаться во второй раз)

Я экспериментирую со снимками LVM для корневой файловой системы. Создание моментального снимка и его слияние с файловой системой работает правильно для всех файлов, но размер LV не установлен правильно на тот же размер, что и до создания моментального снимка, а скорее на сумму его размера до моментального снимка + размер файла снимок. Если я не перезагружусь во второй раз, после чего размер будет правильным.

ОС Linux:

Linux ubuntuserver 5.4.0-29-generic #33-Ubuntu SMP Wed Apr 29 14:32:27 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

VG и LV:

root@ubuntuserver:/# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  79
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <110.79 GiB
  PE Size               4.00 MiB
  Total PE              28361
  Alloc PE / Size       20480 / 80.00 GiB
  Free  PE / Size       7881 / <30.79 GiB
  VG UUID               25hw1f-QOtS-4Wci-Qk36-gK8M-1lNw-qYkpPX

root@ubuntuserver:/# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                Ukzt9k-glM0-GUkx-t0Y2-WsXf-nosn-fXM0W4
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2020-05-16 17:15:22 +0000
  LV Status              available
  # open                 1
  LV Size                80.00 GiB
  Current LE             20480
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Создание снимка:

root@ubuntuserver:/# lvcreate -l100%FREE -s -n lv_snap /dev/ubuntu-vg/ubuntu-lv
  Logical volume "lv_snap" created.

Что-то меняю:

root@ubuntuserver:/# ls -l /home/steff/
total 0
root@ubuntuserver:/# touch /home/steff/foo
root@ubuntuserver:/# ls /home/steff/
foo

Возврат файловой системы путем слияния снимка

root@ubuntuserver:/# lvconvert --merge /dev/ubuntu-vg/lv_snap
  Delaying merge since origin is open.
  Merging of snapshot ubuntu-vg/lv_snap will occur on next activation of ubuntu-vg/ubuntu-lv.
root@ubuntuserver:/# reboot now

После перезагрузки убедитесь, что файл 'foo' исчез:

root@ubuntuserver:/home/steff# ls -l /home/steff/
total 0

Теперь по файлам это работает, как ожидалось, однако размер LV не установлен на 80 ГБ, как до создания снимка, а на 110 ГБ (что является размером исходного LV + размер снимка), как вы можете видеть на Free PE / Size 0 / 0 из следующих:

root@ubuntuserver:/home/steff# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  87
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <110.79 GiB
  PE Size               4.00 MiB
  Total PE              28361
  Alloc PE / Size       28361 / <110.79 GiB
  Free  PE / Size       0 / 0   
  VG UUID               25hw1f-QOtS-4Wci-Qk36-gK8M-1lNw-qYkpPX

Если я перезапущусь снова, размер будет установлен правильно:

root@ubuntuserver:/home/steff# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  84
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <110.79 GiB
  PE Size               4.00 MiB
  Total PE              28361
  Alloc PE / Size       20480 / 80.00 GiB
  Free  PE / Size       7881 / <30.79 GiB
  VG UUID               25hw1f-QOtS-4Wci-Qk36-gK8M-1lNw-qYkpPX

Таким образом, команды слияния полностью объединяют два LV - как при создании нового LV с размером двух вместе, это правильно?

Кто-нибудь знает, как это исправить, чтобы после слияния и только после одной перезагрузки восстановился исходный размер LV?