Этот вопрос "отчасти" по поводу виртуальных машин 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
вместо этого флаг для разреженного режима.