在 qemu-img convert 上使用动态而不是固定分配
Use dynamic instead of fixed allocation on qemu-img convert
为了将 Hyper-V VM 迁移到 KVM,我使用 qemu-img convert
实用程序将 vhdx 磁盘转换为兼容格式,如 qcow (OS) 和 raw(数据分区)。最初的 Hyper-V 磁盘使用动态分配。转换后,这似乎改为固定分配。
一个例子:
-rw-r--r-- 1 root root 300G May 6 20:30 IIS-Daten.raw
-rw-r--r-- 1 root root 3.5G May 6 18:17 IIS-Daten.vhdx
IIS-Daten.vhdx
为原盘。它的动态分配限制为 300GB。实际上,已经使用了 3.5/300GB。如您所见,转换后的原始文件的大小固定为 300GB。
同OS磁盘
-rw-r--r-- 1 root root 24G May 6 20:53 IIS.qcow2
-rw-r--r-- 1 libvirt-qemu kvm 36G May 6 19:16 IIS.vhdx
如何将类型更改为动态?根据文档,似乎没有可用的开关来控制这种行为。
更新
使用 df -h
我检查了我的驱动器,发现只使用了 89GB/1.8TB。由于两个虚拟 HDD 都在这些驱动器上,linux 似乎在愚弄我:根据 ls -lh
至少 324GB 用于 qcow2/raw 磁盘。再加上大约 40GB 的旧 vhdx 文件。
我想 ls -lh
显示硬盘的最大容量,而不是当前硬盘。我以前从没见过这个。为什么会发生这种情况,我如何才能看到这些文件的实际使用大小?
IIS-Daten.raw是一个稀疏文件,并非所有块都实际分配在磁盘上。当您读取未分配的块时,您将返回零,当您写入它们时,内核将分配块来存储您写入的内容。这是几十年来的标准 unix 行为。您可以使用 "du $file" 查看文件在磁盘上的实际使用量。
如果你想要动态磁盘,qcow2 格式通常效果更好,它支持动态文件分配而不依赖于稀疏文件。
为了将 Hyper-V VM 迁移到 KVM,我使用 qemu-img convert
实用程序将 vhdx 磁盘转换为兼容格式,如 qcow (OS) 和 raw(数据分区)。最初的 Hyper-V 磁盘使用动态分配。转换后,这似乎改为固定分配。
一个例子:
-rw-r--r-- 1 root root 300G May 6 20:30 IIS-Daten.raw
-rw-r--r-- 1 root root 3.5G May 6 18:17 IIS-Daten.vhdx
IIS-Daten.vhdx
为原盘。它的动态分配限制为 300GB。实际上,已经使用了 3.5/300GB。如您所见,转换后的原始文件的大小固定为 300GB。
同OS磁盘
-rw-r--r-- 1 root root 24G May 6 20:53 IIS.qcow2
-rw-r--r-- 1 libvirt-qemu kvm 36G May 6 19:16 IIS.vhdx
如何将类型更改为动态?根据文档,似乎没有可用的开关来控制这种行为。
更新
使用 df -h
我检查了我的驱动器,发现只使用了 89GB/1.8TB。由于两个虚拟 HDD 都在这些驱动器上,linux 似乎在愚弄我:根据 ls -lh
至少 324GB 用于 qcow2/raw 磁盘。再加上大约 40GB 的旧 vhdx 文件。
我想 ls -lh
显示硬盘的最大容量,而不是当前硬盘。我以前从没见过这个。为什么会发生这种情况,我如何才能看到这些文件的实际使用大小?
IIS-Daten.raw是一个稀疏文件,并非所有块都实际分配在磁盘上。当您读取未分配的块时,您将返回零,当您写入它们时,内核将分配块来存储您写入的内容。这是几十年来的标准 unix 行为。您可以使用 "du $file" 查看文件在磁盘上的实际使用量。
如果你想要动态磁盘,qcow2 格式通常效果更好,它支持动态文件分配而不依赖于稀疏文件。