“dd”原始驱动器到 lvm 效率低下。有没有更好的办法?

“dd”原始驱动器到 lvm 效率低下。有没有更好的办法?

我有一个 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格式,无需预先分配即可工作。

相关内容