将 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 文件。
挂载硬盘的各个分区
例如mount -t ext4 /dev/sda1 /mnt/tmp
对于每个分区,用零填充空 space。
例如dd if=/dev/zero of=/mnt/tmp/ZERO.TMP
删除 zeros 文件。
克隆整个硬盘的映像
例如dd if=/dev/sda of=/tmp/image.img
制作图像文件的稀疏副本。
例如cp --sparse=always /tmp/image.img /tmp/image_sparse.img
使用qemu-img
从稀疏图像文件制作一个VMDK文件。
例如qemu-img convert -O vmdk image_sparse.img image_sparse.vmdk
我从我的旧桌面上抢救了硬盘,想将它虚拟化到 VMware Workstation 下的 运行。
问题是,HDD(有多个分区)的大小为 1 TB,当我尝试将其克隆到映像(使用 dd)时,生成的映像也是 1 TB,我会遇到问题维护该大小的 VM。
我知道在创建新的 Workstation VM 时,可以选择不立即分配所有 space。
如何虚拟化 HDD 和 "deflate" HDD 未使用的部分?
通过执行以下操作成功获取 "deflated" VMDK 文件。
挂载硬盘的各个分区
例如
mount -t ext4 /dev/sda1 /mnt/tmp
对于每个分区,用零填充空 space。
例如
dd if=/dev/zero of=/mnt/tmp/ZERO.TMP
删除 zeros 文件。
克隆整个硬盘的映像
例如
dd if=/dev/sda of=/tmp/image.img
制作图像文件的稀疏副本。
例如
cp --sparse=always /tmp/image.img /tmp/image_sparse.img
使用
qemu-img
从稀疏图像文件制作一个VMDK文件。例如
qemu-img convert -O vmdk image_sparse.img image_sparse.vmdk