Я экспериментирую со снимками 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?