我有一个 proxmox 安装。我想将 vmdk 导入到 lvm 中,过程是:
$ qemu-img convert -p -f vmdk "IE11 - Win7-disk1.vmdk" -O raw "IE11 - Win7-disk1.raw"
进而:
$ dd if="IE11 - Win7-disk1.raw" bs=1M|pv| dd of=/dev/mapper/pve-vm--103--disk--1
效果很好。
但 127GB 虚拟驱动器上有 8.8GB 数据:
$ qemu-img info "IE11 - Win7-disk1.raw"
image: IE11 - Win7-disk1.raw
file format: raw
virtual size: 127G (136365211648 bytes)
disk size: 8.8G
当我“dd”原始驱动器时,我看到复制了 127GB,而其中只有 8.8G 很重要。 这非常缓慢。
有没有更好的办法?
答案1
更快的方法是不使用dd
pv < "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
cat
最快的是直接使用
cat "IE11 - Win7-disk1.raw" > /dev/mapper/pve-vm--103--disk--1
您的调用dd
使用的是 512 字节块,这将导致每 KB 读取两次系统调用,或每 MB 读取约 2000 次。有了它cat
,您可能会逃脱每 MB 一个。
答案2
我正在从 XenServer 迁移到 Proxmox,我找到了这个解决方案。
如果您还没有 qcow2 文件,请首先获取它(如果您的源文件不是原始磁盘映像,您可能需要在此处使用不同的命令,重要的是获取 qcow2 文件作为结果)
qemu-img convert rawimage.img -O qcow2 thinimage.qcow2
将 qcow2 图像转换为原始图像稀疏文件:
qemu-img convert -p -f qcow2 -O raw -t none -T none thinimage.qcow2 rawsparce.raw
将稀疏文件写入VM的thin lv:
dd if=rawsparce.raw of=/dev/mapper/pve-vm--100--disk--1 bs=8M conv=sparse status=progress
答案3
RAW 格式仅支持预分配,这就是为什么当您通过qemu-img
.
尝试将vmdk
图像文件转换为qcow2
格式,无需预先分配即可工作。