convertfromraw 可用于生成动态大小的 VDI 文件。它会处理未分配的磁盘空间吗?
例如,假设 /dev/sda 指向一个 1 TB 硬盘,其中前 10 GB 有分区,其余未分配。运行以下命令,
VBoxManage convertfromraw /dev/sda MyDisk.vdi --format VDI
- 整个 1 TB 磁盘都处理了吗?
- 生成的文件大约是 10 GB 还是 1 TB?
答案1
Convertfromraw 不知道客户操作系统使用或不使用哪些扇区,因此虚拟映像将包含整个源磁盘。事实上,源文件可以是任何东西 - 它甚至不必是磁盘映像。
唯一的空间优化是,填充了零字节的大块(>1MB)将仅被标记为零,而不会写入目标文件。这是一种简单的无损压缩形式,可能类似于简化的游程编码。
如果您进行零填充/删除然后克隆它们,这种机制也会导致 VDI 文件变小。
因此,为了最小化 VDI 文件的大小,您应该在执行 convertfromraw 之前将源磁盘上所有未使用的扇区清零。如果可能的话,将所有使用的扇区碎片整理到磁盘的开头也会有所帮助。