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

При перемещении раздела LVM из Proxmox в VMWare размер сопоставления lvdisplay изменился, почему?

Этот вопрос "отчасти" по поводу виртуальных машин Proxmox, но, вероятно, больше связан с LVM.

Я объясню.

Я создал виртуальную машину на сервере Promox с разделом 20Гб на local-lvm

Когда я делаю lvdisplay Я действительно вижу, что local-lvm на пути / dev / pve / vm-101-диск-1 и вот ключевой факт Отображаемый размер показывает 15%.

Я ожидал этого, потому что это примерно соответствует количеству фактически используемого пространства на этой виртуальной машине.

По разным причинам мне нужно было переместить эту виртуальную машину из Proxmox в VMWare, что я сделал, переместив раздел с помощью команды: -

qemu-img convert -p -O vmdk /dev/pve/vm-101-disk-1 /mnt/vmwks/vm-000-disk-1.vmdk

Счастливые дни…. Затем я работал над своей виртуальной машиной, а затем вернул ее на сервер Proxmox, используя: -

qemu-img convert -p -O raw /mnt/vmwks/vm-000-disk-1.vmdk /dev/pve/vm-101-disk-1

Тем не мение…..

Теперь, когда я делаю lvdisplay сопоставленный размер теперь отображается как 100% а не около 15-16%, как я ожидал.

Я убедился, что файл VMDK представляет собой единый плоский файл (т.е. размером 20 ГБ), но явно qemu-img не показывает разреженное пространство как свободное и, следовательно, показывает уровень как 100%. Конечно, внутри виртуальной машины он сообщает о свободном пространстве как о правильном и показывает 84% свободного места. Но lvdisplay цифры изменены с первоначальных 15% на 100%

Что я сделал не так при использовании QEMU-IMG?

Я пробовал использовать DD (dd if = / mnt / vmwks / vm-000-disk-1-flat.vmdk of = / dev / pve / vm-101-disk-1) и это не имело значения, все равно 100%

Любые идеи??

Раньше LV создавался с использованием тонкого или разреженного тома, который выделял только те блоки, в которые была произведена запись, поэтому том занимает только такое количество места в группе томов. Когда вы записываете образ 20 ГБ обратно в LV, тогда вы записываете 100% блоков (даже блоки, которые все были нулями), поэтому теперь все 20 ГБ должны быть выделены в группе томов.

Я думаю ты можешь использовать dd_rescue -a чтобы поместить файл обратно в логический том без записи полных 20 ГБ. В -флаг предназначен для записи разреженного файла, в котором блоки, содержащие все нули, пропускаются и не записываются на диск. Вы захотите -b флаг размера блока для соответствия "размеру PE", показанному vgdisplay (например -b 4M) так что-то вроде

dd_rescue -a -b 4M vm-000-disk-1-flat.vmdk of=/dev/pve/vm-101-disk-1

GNU ddrescue программа использует -S вместо этого флаг для разреженного режима.