这个问题“有点”是关于 Proxmox VM 的,但可能更多地与 LVM 有关
我来解释一下。
我在 Promox 服务器上创建了一个虚拟机,在 local-lvm 上有一个 20Gb 的分区
当我做lv显示器我确实看到路径上的 local-lvm/dev/pve/vm-101-磁盘-1这是关键事实映射大小显示 15%。
我预料到了这一点,因为这大致与该虚拟机上实际使用的空间量相匹配。
由于各种原因,我需要将该 VM 从 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
然而…..
现在当我做一个lv显示器映射的大小现在显示为100%而不是我预期的 15-16%。
我确保 VMDK 文件是一个平面的单个文件(即完整的 20Gb 大小),但显然qemu-img没有将稀疏空间显示为可用,因此将 lv 显示为 100%。当然,在虚拟机内部,它会将可用空间报告为正确,并显示 84% 可用。但lv显示器数字由原来的15%变为100%
使用 QEMU-IMG 时我做错了什么?
我尝试使用 DD(dd if = /mnt/vmwks/vm-000-disk-1-flat.vmdk of = /dev/pve/vm-101-disk-1)并没有什么区别,仍然是 100%
有任何想法吗??
答案1
以前,LV 是使用精简卷或稀疏卷创建的,它仅分配已写入的块,因此卷仅占用卷组中的那么多空间。当您将 20 GB 映像写回到 LV 时,您已经写入了 100% 的块(甚至包括全为零的块),因此现在必须在卷组中分配整个 20GB。
我认为你可以dd_rescue -a
将文件放回到逻辑卷中,而无需写入完整的 20GB。-一只旗用于写入稀疏文件,其中全为零的块将被跳过,而不会写入磁盘。您需要-b
块大小标志与显示的“PE 大小”相匹配vgdisplay
(例如-b 4M
),因此类似于
dd_rescue -a -b 4M vm-000-disk-1-flat.vmdk of=/dev/pve/vm-101-disk-1
GNUddrescue
程序使用该-S
标志来代替稀疏模式。