通过 netcat 复制虚拟机文件系统时,dd 会复制两倍的磁盘大小

通过 netcat 复制虚拟机文件系统时,dd 会复制两倍的磁盘大小

我正在尝试将一台服务器上正在运行的无头虚拟盒虚拟机 (VM1) 的磁盘复制到 vCloud 服务器上的新虚拟机 (VM2)。我无法访问 VM2 的主机。操作系统是 Windows Server 2003(32 位)

  1. 我使用实时 Knoppix 映像启动了两个虚拟机。
  2. 我在 VM2 上运行“nc -l | dd of=/dev/sda bs=512”
  3. 我运行'dd if=/dev/sda bs=512 | VM1 上的 nc

我之前用另一个 Windows VM 做过这个,效果很好。

VM1 有一个大小约为 70GB 的磁盘(已通过 fdisk 验证);但是,dd 报告的读取/写入的数据量约为 139GB。

当然,目标机器无法正常工作。我得到了一个 Windows 启动画面,然后是蓝色错误画面,上面显示一般的“系统不工作”信息。

我不知道这是什么原因造成的。有什么想法吗?

答案1

我的猜测是源文件分配稀疏(即物理大小 < 可见大小),数据空间中有“空洞”。如果您使用 dd,它将为文件中当前未分配的块返回零,因此生成的输出将远大于源文件的大小。

相关内容