将 HDD(dd 映像)虚拟化为较小的 VMware 映像

Virtualize a HDD (dd image) into a Smaller VMware Image

我从我的旧桌面上抢救了硬盘,想将它虚拟化到 VMware Workstation 下的 运行。

问题是,HDD(有多个分区)的大小为 1 TB,当我尝试将其克隆到映像(使用 dd)时,生成的映像也是 1 TB,我会遇到问题维护该大小的 VM。

我知道在创建新的 Workstation VM 时,可以选择不立即分配所有 space。

如何虚拟化 HDD 和 "deflate" HDD 未使用的部分?

通过执行以下操作成功获取 "deflated" VMDK 文件。

  1. 挂载硬盘的各个分区

    例如mount -t ext4 /dev/sda1 /mnt/tmp

  2. 对于每个分区,用零填充空 space。

    例如dd if=/dev/zero of=/mnt/tmp/ZERO.TMP

  3. 删除 zeros 文件。

  4. 克隆整个硬盘的映像

    例如dd if=/dev/sda of=/tmp/image.img

  5. 制作图像文件的稀疏副本。

    例如cp --sparse=always /tmp/image.img /tmp/image_sparse.img

  6. 使用qemu-img从稀疏图像文件制作一个VMDK文件。

    例如qemu-img convert -O vmdk image_sparse.img image_sparse.vmdk